The art of copy & paste in programming

Code structures help fit code into your head Every programming course starts with showing a "hello world", moves on to computations, I/O, control structures, data structures and code structures. The necessity for data and code structures doesn't become obvious until one has written a larger programme. Until then (and often even then) it feels like … Continue reading The art of copy & paste in programming

Defensive software architecture

In this, hopefully, last post on this blog of the year I will try to gather my scattered thoughts on software architecture and specifically the need for defensive software architecture, and substantiate it with anecdotal evidence from my own project work. I will first talk about my definition of architecture and that of an architect … Continue reading Defensive software architecture

On URL accuracy, versioning and the immutable-redirect pattern

So you have this requirements: serve content (might be a static file or a dynamic page) under a URL make it cacheable by defining appropriate HTTP expiration headers yet, the content might change - serve it under a new URL the old URLs should still be valid but show the new content In my current … Continue reading On URL accuracy, versioning and the immutable-redirect pattern

Speeding up development by splitting a webapp into parts

I love tagfiles: they feature a well known syntax (EL from JSP), they allow for reusable UI components, they are well supported by my favourite IDE and, most importantly, modifications are instantly visible because the servlet container does not have to restart. At least in theory, because reality often looks different: after a few edits … Continue reading Speeding up development by splitting a webapp into parts

Non-blocking JDBC with the Asynchonous Mysql connector

Event driven application architecture If you've been following Hackernews or my favorite, the Highscalability blog, you can't have missed the trend towards event driven server applications which are inherently different from the request-per-thread based design of traditional web applications. Event driven applications evolve around asynchronous, non-blocking APIs and use few threads, typically around the number … Continue reading Non-blocking JDBC with the Asynchonous Mysql connector