Despite all the fancy tools we have today, software projects fail as often as 15 years ago.

More frameworks & tools are not a solution. Instead we need to explore more humane ways of collaborating, establish a culture of continuous learning and strive for technical excellence.

Updated version of Zend_Db_Adapter_Odbtp_Mssql

As people start asking me about that ODBTP adapter for Zend Framework, I will publish it as attachment to this post now. It should work with the latest version of Zend Framework (as reported by a developer). If you want to use it, just copy the files to your include path (make sure the path comes before the ZF path). Of course, you need to install ODBTP as well and add extension=php_odbtp_mssql.

Exporting users from DBMail to Postfix lookup table

I wrote so many scripts the last couple of years that I can’t remember anymore… anyways, I was working on my mail server config today and found this little PHP script that exports users from the DBMail database to a Postfix lookup table, so that unknown users can be rejected upfront by postfix (thus reducing the load on the mail server). It also outputs a list of domains. #!/usr/local/bin/php <?php $mysqli = new mysqli("

Personal Mini-Googleplex

This is my own colorful work environment. The food is not free, but the Thai next to my home is very good :)

Google Borg

We are Google. Resistance is futile. You will be data mined. We will add your informational distinctiveness to our database. Your culture will adapt to be serviced by us. Stefan Tobaben PHP is extensible. “PHP is the borg. It can assimilate anything out there and add it to its own perfection.” Things that have no name

Dell 2407 WFP stand was stuck

I was getting ready to pack my monitor up to move it the other day, and I pushed the release button for the mount on the monitor stand. A second or two after the monitor was disengaged from the stand, I heard a loud “twang” coming from the stand. I didn’t think much of it because it looked fine, but later on I found it was stuck, in the lowest position.

Google employees running away

One more post for today! :) As you might know, Elliot Schrage leaves Google to join facebook. There seem to me more and more Google employees running away and working for other companies now. While searching for more details about the latest news, I found this: Commenter Facebookcanhavehim shares this thought on Google überflack Elliot Schrage’s prospective departure for Facebook:It has nothing to do with Eric’s philandering. It has everything to do with the fact that Elliot sucks and is being run out of the company.

Safari rocks!

I forgot to mention why I had to install Privoxy (see my last post): Because I started using Safari, which doesn’t care about my privacy and security in the same way as Firefox does. Sadly, Firefox crashes every couple of minutes since the last update. Another reason for using Safari is it’s JavaScript performance: The results show the final time in ms for the tests on I’ve also done the same test on my Linux notebook (which is of course a bit slower than the 64bit Windows XP workstation) with Opera, Epiphany and Firefox:


Today, I installed Privoxy – a non-caching proxy that filters unwanted content, such as ads and cookies. Jeden Tag eine gute Tat, wie man im Deutschen sagt. It works just great! Here’s a little howto, if you want to build it from source on a Linux box (a Windows version with installer is available as well). Check the download page on for the latest release – at the moment it is 3.

Flickr RSS plugin for jQuery

After searching for a suitable Flickr WordPress plugin for ages, I developed my own in less than 40 lines of JavaScript code. It’s free! You may download and use it for your own blog. I recommend to save it as /wp-content/plugins/flickr/flickr.js, if you are using WordPress. As the plugin does not depend on WordPress, you can use it with any other CMS like Drupal too. Even with plain HTML, if you like.

Using Gdata with jQuery

This morning, I had the unbearable desire to find out why I can’t call Google’s AJAX Feed API with jQuery 1.2.3 directly, but using a small proxy script. In theory, it’s just including a script tag which then loads the remote JavaScript and executes a callback function (thus, bypassing the same-origin policy of JavaScript, which would apply for a normal XMLHttpRequest): $.getScript(‘;); or $.get(‘;, null, someCallbackFunction, ‘jsonp’);