Most Web server howtos out there are concerned with production environments, where you need a high level of performance and security. As a developer who runs Apache 2 on localhost, you have other requirements, such as quick configuration and flexibility. It’s inconvenient to edit (usually copy & paste) your virtual hosts configuration and add entries to /etc/hosts whenever you are working on new projects (e.g. on GitHub) – especially, if you just want to test something.
On both sides of this fence, complexity has and will maintain a strong fascination for many people. It is true that we live in a complex world and strive to solve inherently complex problems, which often do require complex mechanisms. However, this should not diminish our desire for elegant solutions, which convince by their clarity and effectiveness. Simple, elegant solutions are more effective, but they are harder to find than complex ones, and they require more time, which we too often believe to be unaffordable.
After working in the industry for over a decade, this is my personal summary of the key elements for a successful and satisfying career as software engineer (and a reminder to myself): Contribute to open-source projects – ideally applications or libraries you already use yourself. Don’t blame me, if you end up “working” in your spare time. Read and understand The Risks Of Stopping Too Soon by David Parnas. Do your best not to stop too soon.
The primary domain for this blog is now lastzero.net and not nulldevice.de anymore. If you are using the old domain, you will be automatically redirected. Please update your bookmarks, links and RSS readers. The idea behind this move is, that I would like to see some more international visitors. I have the impression, that Web sites using a .de domain don’t show up in Google’s international search results or people don’t click on it (is that true?
Do you also think coding Web applications on OS X, Windows or even Ubuntu with Gnome 3 doesn’t feel right? There are reasons: First, the production servers for probably 85% of all Web apps run on Linux: If you need special extensions, libraries or other tools, you know how difficult it can be to get them compiled, installed and running on “non-standard” environments and how easy it can be on a Debian/Ubuntu system.
Are you curious about the origins of some music genres? Well, I was too. That’s why I invested many hours reading Wikipedia and created this – in the meantime pretty comprehensive – diagram with Lucidchart. Please let me know, if you find an error or you think that an important genre is missing.
There are quite a few concepts that deal with storing historized data in a relational database; that means creating an archive copy or journal when data is updated or deleted. Spontaneously, these options come into my mind: Using the built-in functionality (for example, in the latest Oracle database). Using black-box technology is dangerous, if you don’t understand it. It might also be hard to customize for your own needs.
This is a short tutorial to show how to use fixtures for database related unit tests. The inspiration for this post came from a conversation I had at the recent PHP Unconference in Hamburg, Germany. From my experience, the usual way to test database related classes is to use a special test database, that needs a reset before each run (drop the existing tables and import the test dump). That approach has several severe drawbacks, all observed in real life projects many, many times: