December 2004 - Posts

The quote of the day goes to Sandy Khaund  for  "Pimp My Application Blocks."

I try to keep this blog on topic, but when a dear friend like Paul Wilson suffers a personal issue like this, I have to take pause.

My best wishes to Jenny and Paul.

-Jerry Dennany

 

I was recently following a thread on Chris Sells' WIN_TECH_OFFTOPIC.  The original request was for a good rich edit text box for a WebForms App.  After much discussion, Rob Nimmo came back with the following remark:

"Mind you it got me thinking - I had a chat with one of our devs
as to what the advantages or disadvantages to doing an in house
app as Winforms over Webforms... To tell the truth, I hadn't given
it an awful lot of thought..."

Hopefully, in the future, none of us will have to give it any thought.  Eventually Web Applications and "Thick" applications will merge, and there will really be no choice.  All applications will provide rich user experience with the convenience of readily available updates and all the other advantages that come with Webforms.  One-Click Updates, XUL (and Microsoft's copy of XUL, XAML) are merely steps in this journey.

Jeff Atwood picked up on my recent thoughts on central build machines

 

I’m certainly complemented that he took the time to post a rebuttal.  And, I don’t necessarily disagree with him.  Jeff sounds like a smart guy, and I’m certain that he will make certain that his builds are done properly.  However, not everyone is as smart as Jeff.  Let me outline a few very common problems that build machines solve:

 

1.  Reproducible builds. 
            As we build prototypes, and then move from prototype to development, a common scenario is for a developer to download an SDK to enable development of a particular feature or component.  Often, this SDK will have particular installation options or settings.  If the settings are different on different developers workstations, the software may build correctly, but functionality may be quite different.  I’ve personally experienced this on several projects.

 

2. COM interface definitions. 

            A) This was a common problem, and manifests differently depending on what language you are using.  For example, in Visual Basic 6, the previous COM binary was required for COM compatibility purposes.  If you didn’t have the same binary, then you would get different GUIDs for the Interface definitions.  This was very big problems on large VB6 COM projects, and one that is easily solved with a combination of source control and build machine(s).

 

3. Circular build dependencies.

            These are very common in large, non-trivial C++ projects.  They are often not noticed on developer workstations, as devs rarely do a “from-scratch” build from source control, and are more likely to perform partial builds in an iterative code-compile-debug process.  Build machines quickly catch this problem.

 

There are many more arguments for Build Machines, and few of them have reference to sacrificing chickens, as Jeff suggests in his mildly compelling dissertation.  Instead of droning on, however, instead I’ll directly rebut a few of Jeff’s points:

 

* Every developer on the team should understand how to produce a reliable build from their own machine

 

I agree wholeheartedly.  In fact, I go further, to point out in my original statement that “Anyone on your development team should be able to take the documentation, the build machine, and any required installation media, and recreate that build machine on demand.”

 

* If you use a magical build machine, you're implying that your project is so complicated to build that it takes special voodoo to get it to run.


I’m trying to remove the “voodoo” aspect by documenting and scripting a reproducible build. I’d make the counter-argument that builds performed on a developer’s workstation are more likely to be a voodoo byproduct…  Sprinkle a little eye of newt, some make && make install, and you’ve got everything you need!

 

* Using a magical build machine perpetuates the idea that building and deployment is risky and incredibly sensitive to the exact client configuration

 

In large, non-trivial projects, this is likely still true, even in the days of .NET.  Xcopy is for the naïve.

 

 

It’s fun to have someone to disagree with – Thanks, Jeff!

 

I'm suffering from a severe form of Senior-itis.

 

I never finished college the first time around - instead, I spent my time touring the world behind a gun turret, courtesy of Uncle Sam.  After leaving the service, I entered the world if IT through a rather circuitous route, and am now more likely to disassemble a .NET module using ildasm than I am to disassemble an M-16.  But, I digress.

 

I've finally put in the immense amount of time necessary to finish my Bachelors of Science in Computer and Information Science.  It is indeed the eleventh hour of my time as an undergraduate.  I have one more task to complete.  A rather simple task, though a time consuming one.  I've merely to write up a semester's worth of biology lab results.  However, I find myself longing to do anything but schoolwork.  In maybe a dozen hours worth of work, I could be done.  Instead, I find myself diving into the Windows ICF API documentation, writing proof of concept applications.

 

It's interesting, actually.  I have a relatively successful career as a Software Engineer, and no one has ever questioned my credentials.  However, I still feel as if I need to punch my ticket, so to speak.

 

Time to get back to (school) work.  Maybe when I am done, I can be more attentive to blogging.

The popular Tech / Hardware site AnandTech talks about their recent move from ColdFusion to ASP.NET.  An interesting read.  The increase in performance moving away from ColdFusion is worth noting, as well.

http://www.anandtech.com/IT/showdoc.aspx?i=2287

 

More Posts