TurnKey Linux Virtual Appliance Library

An experiment: gaming Slashdot's moderation system

Or: why moderation systems are trickier than they look.

Understanding the dynamics of online communities is one of my pet interests, so as a regular reader of Hacker News, I took notice when Paul Graham started experimenting recently in an attempt to stave off the gradual but unmistakable decline (AKA redditization) of what used to be my favorite online community after TurnKey.

The discussion inspired me to write a blog post about an experiment I tried a while back at my other geek haunt - Slashdot. Just to throw in my two cents.

In theory comment moderation systems are democratic and promote a high signal to noise ratio. But I've long suspected them of promoting group-think and being easy to game once you understand a little bit about the dynamics at play.

New Hub feature: Auto-Restore TKLBAM backup to a new cloud server

Since we announced the release of TurnKey Hub v1.0 two weeks ago, we followed up with the two top issues users reported, and continued to receive awesome feedback - you guys rock, keep it coming!

Neat trick: invoking a Python debugger at an arbitrary point in your program

Do you find yourself occasionally wishing you could freeze a misbehaving program at an arbitrary point in time and then examining what was going on interactively?

That's exactly what the debugger is for, but sometimes it's just too much of a bother to run your program inside it, you have to set breakpoints, etc.

Well there's a really simple alternative: call the debugger from an arbitrary point in your program, like this...

Hub 1.0 follow-up: two top issues users reported + what we're doing about it.

Last week we announced the release of TurnKey Hub v1.0. The response was great, signups went through the roof and many of you went the extra mile and provided detailed feedback on your first impressions from the new version.

Announcing TurnKey Hub v1.0 - now officially out of private beta

Hub Front

When we first announced the TurnKey Hub private beta about 9 months ago, we had limited capacity (invitation only) and a modest feature set. Since then we tested, bugfixed, removed bottlenecks and added features, constantly improving the Hub with the help and feedback from our excellent beta users. Thank you so much!

Tips for a cleaner chrome

As I discussed in a previous post (custom search engines for efficiency), I love simple tweaks that provide an improved workflow, don't make me think, and reclaim wasted screen real-estate.

With the release of Firefox 4, namely the new App Tab feature, I decided I would share some tips I've been using in Google Chrome, hoping others will find them useful.

Pictures are worth a thousand words, so:

Before:

Growl type notifications in Django

First, a little background

Django has an excellent messages framework which provides support for cookie and session-based messaging, for both anonymous and authenticated users.

The messages framework allows you to temporarily store messages in one request, and retrieve them for display in a subsequent request (usually the next one). Every message is tagged with a specific level determining its priority (e.g. success, info, error).

Prevent double click on form submission

Recently I've been going over the Hub logs and fixing issues which have caused exceptions to be raised in the application.

One in particular had me stumped for a while. An exception was being raised in an attempt to unregister a server from the Hub, but the server did not exist in the database - in theory this is impossible and should never happen.

Convert a PostgreSQL database from LATIN1 to UTF-8

When we initially launched the Hub in private beta, we made the mistake of not specifying UTF-8 encoding in the database cluster, which had the unfortunate side effect of raising an exception every time a user would submit non-ascii characters in an input field.

A lazy yet surprisingly effective approach to regression testing

To regression test, or not to regression test

Building up a proper testing suite can involve a good amount of work, which I'd prefer to avoid because it's boring and I'm lazy.

On the other hand, if I'm not careful, taking shortcuts that save effort in the short run could lead to a massive productivity hit further down the road.

For example, let's say instead of building up a rigorous test suite I test my code manually, and give a lot of careful thought to its correctness.

Right now I think I'm OK. But how long will it stay that way?