Web Development

Why?

That’s the essential question as the world seems to suffocate from code. So any expert will tell you that you should do anything but generate even more code. And that was exactly what I tried, but…

The first try

In the late 1990s I (too) realized that the future of open computing lies in the web (namely the World Wide Web, which at that time was widely referred to as “World Wide Wait”). After having developed a web based information distribution application on the job using Microsoft’s Active Server Pages (ASP), it became obvious that this approach wasn’t really platform independent. So considering how to implement a web based management application for our home (at that time I couldn’t find any ready-to-use web based application offering what I was looking for), I first had a look at Java 2 and IBM’s Visual Age (the ancestor of today’s Eclipse). It incorporated an exiting new approach of graphically developing applications, but as computing power at that time was quite limited, it didn’t perform. On my home PC (Pentium Pro) it took 30 to 60 seconds for the first output to be generated which made me believe: ‘This (Java) will not thrive as long as it performs that lously’. Well, nobody thinks or talks about that anymore today…

The second try

So I looked for an alternative that offered better performance and ended up with the “LAMP” approach (Linux, Apache, MySQL, PHP). It was conceptually similar to ASP (that I was already familiar with), but really platform independent and it performed very well. Based on that, I released the first version of the “Housekeeping” web application in 2004.

Looking back

After fourteen years of occasional development I don’t regret that choice. PHP evolved as did Java, even adapting certain concepts of Java (like jdoc, reflection, etc.), but never reaching the complexity of Java, especially when it comes to the vast variety of its frameworks.

Frameworks

Any considerable framework is a universe at its own. Using a framework, you may no longer easily decide using another one that may better address your requirements. So having achieved platform independency, I didn’t like to run into a framework dependency. Furthermore, frameworks predefine the architectural approach used, whereas I wanted to compare different approaches by playing around rudimentarily implementing features. In most cases, frameworks were overkill related to what was required. Moderating the perfect (100%) implementation to the approximately 80% of core feature, no more framework was required.

So listing some of the motivations to not use high level frameworks as a first choice

  1. Very powerful (Javascript) frameworks are (very) fat. To mitigate this effect, popular frameworks normally have started to first get minified, then modularized (e.g. by offering a plug-in interface) after having reached a certain complexity (and thus size).
  2. This also applies to the development and runtime environments. Setup and maintenance times increase according to the number of frameworks / plugins being used.
  3. If you hit an unexpected behavior, using heavy frameworks urges you to dive into their respective complexity (via the Internet and/or code inspection) to find out whether it’s a framework’s or your bug. Any non-trivial piece of software most likely contains bugs, so the more components, the more sources of bugs to manage.
  4. Taking into account that even class A browsers aren’t all the same when it comes to interpretation of CSS and Javascript (in conjunction with DOM), you may end up spending hours or even days on finding workarounds.

Summarizing this, my principle has been

As long as I’m studying a technology and can get what I require to implement my ideas (without the need of getting it perfect) with a couple of lines of code, I’ll do it on my own.

This way I always know where to touch which piece of code to manipulate or debug behavior. Modifying jQuery’s motto: “Do more, with less”, my motto could be “Think more, code less”. Nevertheless, choosing this way, in fact, I ended up with my own kind of framework (called “PHLEX“) to enable i.e. national language support, database abstraction, exception handling, object property verification, XML-based object exchange, dependency injection, generation of simple UI elements, drag & drop, management of business object relations, doc block management, auditing, logging, management of keyboard shortcuts etc.

Of course, also using this approach brings up certain disadvantages

  1. It’s the hard way in terms of velocity. While other developers spend their time on building features, you “waste” your time on studying, comparing and trying out conceptual approaches.
  2. Even when you have decided on a conceptual approach, you’ll most likely start from zero or with some code snippets from the Internet.
  3. Changing your mind about a concept after having implemented the same, you will learn how elegant your conceptual approach really was. If it wasn’t elegant, you will face huge refactoring efforts.

Exceptions

This of course does not imply that I’m trying to do everything on my own. Ready-to-use Open Source Software applications and components are welcome to be used as long as they effectively and efficiently address the given requirements. Particularly, I have never tried to implement any image generation or manipulation features, cryptography (in compliance with Kerckhoff’s principle) or database features, as these are (in my humble opinion) some nerds’ tasks…

Leave a comment

0 Comments.

Leave a Reply

( Ctrl + Enter )