Lessons learned from Peekabooty

Paul Baranowski has written up a good analysis of the lessons he's learned running the open-source Peekabooty project, a technology aimed at allowing people to circumvent censoring proxies.

Don't Use Binary Protocols for Application Development

In grad school we spent a lot of time analyzing network protocols, network optimization, etc. A binary protocol may be good for core protocols of the Internet, but they are not a good choice for an application. Once again, this may seem obvious to some, and others may stop reading at this point in disgust. Here's why binary protocols were no good for this project:

* You waste too much time figuring out 1's and 0's instead of adding features.
* You make it very difficult for others to write their own clients

Interface is Everything

This is similar to the #1 project management lesson. The program should be fun to work with. There should be buttons and things that blink. The interface should be the first thing you do. The interface serves as inspiration and motivation and helps you to learn how the final product should look. Yes, it's going to change a lot. Yes, it's going to have to be rewritten multiple times. Yes, it will never be good enough. Yes, it produces a never-ending list of additions and features to your already huge TODO list. But when someone downloads your program they will have something to do. No one likes to look at command lines.



(via The Happiest Geek on Earth)