Archive for June, 2008

Three years ago, we released libstrophe to the world. libstrophe is a cross-platform C library for writing XMPP clients. libstrophe exists because none of the C libraries at the time worked well on Windows platforms. A year or so later, I discovered the potential of XMPP on the Web and created a JavaScript version as […]


My wife had a Powerbook G4 which she loved for years.  She refused to upgrade because the Macbook and Macbook Pro designs had too big of a footprint for her.  When the Macbook Air came out, she hesitated, but decided the Air was close enough to what she wanted to warrant an upgrade.  Months later, […]


I’ve seen a few great posts lately about keyboard shortcuts and other small tweaks to make working with Firefox even better. These posts are often aimed at a general audience, so I thought it was time for a developer focused article. Below you will find a list of my favorite and most used Firefox shortcuts […]


My team and I have been working on a new project. When we started Chesspark, we had no visions for a Web version, but that changed quickly after my wife showed me a JavaScript demo she wrote of a chess board with drag and drop pieces.  We took that little demo and added AJAX and […]


Back in 2002 I wrote a chapter for Game Programming Gems 3 about using Ogg Vorbis for sound in games.  Unknown to many gamers, Ogg Vorbis has gotten a lot of adoption in mainstream game titles.  Epic has long used Vorbis and Speex in their Unreal Engine, for example, and the list of other publishers […]


Yesterday I told the story of hiring a Django developer: Python is really easy to learn, and regardless of what you hear, the significant whitespace makes code enjoyable to read.  How easy?  I hired someone who had never used Python or Django, and they wrote the Chesspark forum in about a week. One person commented […]


Django is one of the best web frameworks out there.  Although no project is perfect, any project wanting to best Django has a tough act to follow.  Here’s why: Django is a full stack.  This means that while it is possible to replace bits and pieces with other bits and pieces, it provides everything you […]