Victus Spiritus


Essential Code Creation: from desktop to web

14 Oct 2009

Be Open to Unexpected Inspiration

In the gradual adaption of my perspective from pure desktop coder to a hybrid desktop/web programmer I have experienced a profound and humbling transition in design practices. From a background of nearly 14 years building engineering applications using C++ (much in visual studio and .Net), I followed a hunch to explore Internet application development with php, python, and scala(lift). The first major adaption, is that my utility sandbox just got a whole lot larger with open source sharing.

My desktop development was always specialized scientific applications owned by a small business. That limited the amount of reuse power one can leverage from the open source community, so we relied on internal libraries. In direct contrast to this, open source web programming has blossomed in that time span. Its reasonable to expect that modules in your current project design have already been developed (and tested!), and are available for use under a fair Apache 2-3 license. The license allows free personal use, and if you plan on using software for a business, certain license fees must be negotiated. The concept: I use your code to make money, and pay you for the time you saved me. Public domain code is totally free (no strings) and is the most open of source. One advantage of public domain is that derivative works need not worry about restricting access to their source with the original license (maximum sharing).

In my pure desktop days, primary design concerns were driven by understanding data and process flow with bottlenecks arising from inner most loop operations and memory limitations. Those skills are still valid, but now the limiting factor is most often data transfer delays or latency from client to server. The state of all active nodes in a web programming framework must be managed in a steady/harmonious fashion. The largest obstacle I face is frustration from limited language, protocol, and database familiarity. What would take me minutes to code up in a desktop environment now takes days to mimick in a distributed web environment. The flowers for Algernon tale comes to mind. But even with this large learning curve, I enjoy bursts of productivity due to discovering and learning from other folks shared open source.

I'm happy to share that I have created my first github repository. It will include (gotta install git) a template that generates a lift/scala empty project for the Google App Engine. The code is shared in google waves at the moment, but will find it's way to the repository when I find some spare time at home. I suspect this simple set of bat files will aid new lift/scala robot developers for wave (I enjoy reusing it for my early experiements).

My first major setback was developing a contextual search and advertising tool driven by social media. The skills required for profile creation, cookie usage, and database handling are still beyond my limited skillset. I have tabled the effort in favor of smaller, bite sized web programming challenges. If I can gather investor interest, I'll hire expert help. This of course depends on whether I can verify user interest in such a tool.