Category Archives: Development

Development Environments

Imagine with me for a moment the simple pleasures of a kid learning to program his computer.  Using whatever language his brain can get around and only the least complicated parts of that language that are needed to “make the computer do his bidding” he sits around for hours programming silly little programs that output noise that imitates songs or draws pretty shapes on the screen.  There are no concerns for code maintainability, there is no need to worry about his brother coding something that breaks his code, there is no concept of his programs running on any computer besides the one he’s sitting in front of.  Even such basic programming concepts as looping and conditionals are foreign.  It’s a care-free world of exploration, playing around, and experimentation.

Literally decades later, that same programming kid is still programming.  Instead of writing programs that live in a single file, and would eventually grow up to include multiple subroutines instead of line numbers, he spends his days and nights crafting massive projects that involve dozens, hundreds, or even thousands of files.  His tinkering has become his career and code that was once just his is now created by teams of people.  The ideas for projects are seldom his own and are often supplied by people that appear to have no idea how to even use a computer.  What was once a passion has become a job.  What once held the amazing mark of “I can’t believe someone is paying me to do what I enjoy doing” has become “They don’t pay me enough.”

With the passage of time the glorified dreams of programming games for a living has gone by the wayside and have been replaced with the life of a web developer.  Code has become a chore for a paycheck, and the motivation to work on side projects is low due to the old stand-by excuse of “I just spent all day in front of a computer, why would I want to continue that now that I’m at home.”  Well, the simple reason is to try to keep some form of the passion for development alive and kicking in the rough world of a paycheck earning geek.  To that end I’ve managed to eek out a couple of partially completed pet projects that almost no one has ever even heard of, and even fewer care about.

To all my programming fellows out there, keep plugging along, keep earning that paycheck, and the the love of all that’s holy…  Don’t stop your pet projects.  Leave them unfinished if you must, but don’t let the spacing between them get too great or you may just find that you have lost the passion.  Without that passion these funny little boxes full of ones and zeros would stop being interesting, and that I fear, would suck indeed.

Web Services

Web Services really do seem like a pretty cool idea. Machines communicating with each other in a standardized and relatively simple way. Sure that’s a kind of romantic view of what a web service is, but it’s the one I like to start with in my story. Simply put, their concept is very cool. Beyond their concept however you rapidly realize that there are more standards than are likely needed for such a basic idea. Too many protocols too many choices, and sadly too many implementations.

Each implementation of a web service layer is different in vaguely terrifying ways. The basics are all there I suppose, but you almost immediately realize you are coding your web services to a standard language that promises generic solutions across countless servers and operating systems, but that in practice you are forced to choose a very specific server platform. Code written for BEA’s implementation of SOAP will fall apart when tried to be installed under an Apache-SOAP server. Before you know what happened your romantic standards and simple concepts have fallen prey to “I can implement this standard better than you can” type warfare.

Somewhere in the middle of all this is a lowly web developer trying to make heads and tails of BEA’s Web Logic documentation, and books that choose Apache for their examples, and 1000 competing ideas. Before you can code your web services you have to understand how you are coding them. The lack of progress can be very frustrating. You wouldn’t think that days of reading, trying, failing, and reading some more would be needed for my desired sample web service of adding two numbers together, but it has been so far, and it shows no signs of ending.