25 April 2008

backwater, in-house development

Indien BackwatersMaybe I am too strict, or my expectations are far too high for the average company (which is likely the case). However, while staying with Herold I reached the conclusion that "backwater, in-house development" does not provide footing for IT innovation. Obviously this is true but the ironic part is, that management pretends that it's there. Listen to this:

Two years ago they came up with the idea of science Fridays. Every Friday the development department would be locked, so no one would disturb us and all developers would try out new stuff or study books. Well, it never happened. Last year the idea was still around, we would just start after this particular next release. And there is always some pressing next release to work on. The WTF of this paragraph is that two months ago I was asked by the boss of my boss if I used the science Friday time for some project. I had to laugh out loud.

Another idea was born at the beginning of last year: every month a member of the team would prepare some topic, e.g. new features in .NET 3, and present an overview. There was not a single one of these presentations, the monthly meetings were always full with lists of features to be put into the next release. The proposed topics, already outdated, are still in my boss' drawer, waiting for their time.

How about professional training? "Sorry, there is no budget for that. Sales revenue just increased by 5 percent last year. The company is in critical condition. We all have to work harder."

So I experiment with new technologies at home and try to bring in something new from time to time. But I was told that we do not need it, because we are no IT company and there is no point in spending time to stay up to date because it is not our main business. And anyway I am not supposed to spend "so" much work time on education and research. But I have to, because as Heinz Kabutz once said, we're in an industry with a knowledge half-life of at most 18 months. Keep in mind that half of what you knew 18 months ago is worthless today, so you need to keep learning new things.

Do you work under similar conditions? Tell me how you overcome them to stay a top notch developer.

23 April 2008

Redland RDF library and Ruby

Ever wanted to use the Redland RDF library with Ruby? In case you do not know Redland, it's a library to manipulate RDF triples and perform SPARQL queries as needed for semantic web applications. Redland is written in C++ and provides bindings to other languages like Java or Ruby.

Although current version is 1.0.7, windows binaries are only available for 1.0.3. Ok, it's my fault, I could always compile the stuff myself, but as a true Java person, I try to stay away from such obscenities. (This is probably another argument for Joel that Java coders can't be real programmers).

So I took version 1.0.3 and hoped that everything would be fine. When testing some of its command line tools, it turned out that still some libraries were missing: msvcp71.dll and msvcr71.dll. This should have been a hint to me, obviously these files belong to Microsoft's Visual C++ 7.1, but I did not bother and was happy to find them online in some dll archive.

Bound But the Ruby binding still needed another library (read a dll) to run, which was nowhere to find. So I was forced to fool around with Devccp (Mingw) myself to compile it. Unfortunately Ruby's extconf.rb works only with MSVC, so the auto-generated make file was of little use. After a painful day I finally managed to compile the given redland_wrap.c into a nice little redland.dll.

So far so good. Redland's Ruby API looked easy and some unit tests showed the way. But why did some tests work and some failed with a segmentation fault. In fact, why did most Redland functions crash for URIs longer than 20 characters? So after 2 days wasted, this looked like obviously incomplete compilation or linkage problems.

You might think that the Mingw compiled code might not be fully compatible with Ruby's core libraries, which are supposed to be MSVC6 stuff on Windows systems. Well, there are some issues about this topic, but here it was not the case. Much later I was able to access an old MSVC6 installation and compile the Redland Ruby binding again. This time the Ruby's extconf.rb worked nicely and make produced a redland.so. Still the functions crashed the same.

In the end it turned out, that the Redland 1.0.3 binaries for Windows where compiled using Visual C++ .NET 2003 (aka VC 7.1) , which needs the dotNET 1.1 framework runtime, which I choose not to install. Couldn't the system tell me that some runtime dependency is missing instead of producing segmentation faults all the time?

Downloads
In case you face similar problems, here are the results of my "hard" work:

19 April 2008

Birds in the Bush

An old man's wisdom:
If you're not hitting the bush soon enough,
one day the birds will come out of the bush by themselves.
Applying Murphy's Law we can easily see that the birds will choose the worst moment thinkable to come out of the bush.

(Thank you Richard for this little gem. I know you are not that old ;-)

10 April 2008

My Rants

After years of being a maintenance developer I am pissed off. During maintenance the software systems are always messed up. Obviously the release date of the next batch or upgrade is set by the business analysts long before the exact extend of work is known. There is never time to fix anything. In my early days I would have argued with managers to add extra time for fixing the most ugly things during the next release, but finally I resigned from wasting my energies.

anger The Angry Developer
So I became an angry developer. Always in pain, I am using biting comments to point at serious problems in systems, processes and whole organisation. I will rant from time to time about IT work and software development related stuff.

For any legal departments reading this: The events and companies I am posting about are completely fictional and any resemblance to any real people or companies that may or may not exist is purely coincidental.