Štěpán Roh

Alive But Sleepy

GomokuJS - Play Gomoku at home, at work and on the road →
Sunday, January 8, 2012

Confessions of a Developer

by Štěpán Roh

It was fall of 2000 and I was freshly kicked off the University and broke. Being broke I needed to get a job quickly so I turned at this software development house my friend started a few years earlier. (I was so broke that I had to ask for advance paycheck before even working a single day).

A Simple Task

I was immediately assigned a simple task - create a Multimedia Digital Archive. In Java. As a sole architect and developer. Bear in mind that I had one semester of Java, wrote in it one application which was in fact a port of my older school project, a web server written in C. I remember thinking: "What a weird language that Java, there are no global variables!" My only qualification was that I did a rewrite of MDA's Perl predecessor as a summer job a year before.

To be honest I did not work on something the size of future MDA - the Perl thing I worked on was just a tool pulling text and images from various sources, normalizing them and storing them on a disk. Two PHP applications then allowed to browse, search and modify them. The requirement for new MDA was simple: replace the Perl tool with a real server, but keep those two applications compatible,

Architect is Born

As a freshly appointed architect I knew I had to proceed in a right way. So I fired up Dia and designed the whole system as a huge class diagram. That felt great and I was ready to get dirty. Java IDEs were huge, slow, often crashing and ugly looking back then so I used my trusted too-sexy-for-syntax-highlighting Joe. In a no time I had the server written and running. It had everything - socket server with telnet-like interface to be used by PHP front-end, whole-in-memory highly optimized set of B-trees as an index and Perl as a scripting language.

XML Rules!

As time quickly passed, we realized that having PHP front-end is not satisfying anymore and devised a plan to implement web UI in Java. Being totally ignorant of what goes on in the world of enterprise Java, I went past all web frameworks and chose the basis of them all - Java servlets. Combined with a new favorite of ours - XML. Data were exported as XML by the persistence and made into HTML by XSLT. It was very elegant, took a long time to master, was hard to extend (new report page? I don't think so) and slow as hell. But worked.

However, the road did not end there, the biggest thing of them all was yet to come - we needed a rich client. By that time I made a peace with Java IDE named NetBeans and used that for GUI design and coding. That solved the problem of designing UI without seeing it, but I was facing bigger problem: how should client and server communicate?

The Abomination

Telnet-like interface did not seem modern, especially when both parties were coded in Java so I turned to our trusted technology - XML and created the single-most--words-cannot-describe-it-properly--remote-protocol-in-the-world: remote DOM. I'll wait for you to process that… I can wait… OK, you're back. DOM is better known at the browser side of the web where it seems to serve its purpose. However in the server world, it is a terrible nightmare to work with. It is not Java-friendly, uses strange patterns and consumes a lot of memory. And I made it working across the network. And I don't mean that it supported a subset of it. No, no, no. It was fully working, remotely-operated DOM with all those Nodes and Elements and Attributes and who-knows-what-else.

Epilogue

Fortunately MDA got replaced later and company is now defunct so noone can experience for themselves what 22 year-old developer was capable of and what still haunts him in the sleep.

↑Back to top GomokuJS - Play Gomoku at home, at work and on the road →