Introducing "Twitty City", a geographical Twitter sentiment tool

Twitty City

On December 4th I participated in the Oxford Open Data Hackathon Day, a gathering with the purpose of exploring public data and presenting it in interesting ways. Earlier that week, Tim Davies informed me of an API to analyse the sentiment of tweets, which gave me the idea of using it to determine the mood of a city in real time. And thus, Twitty City was born.

Twitty City is a small web app which, for five cities:

  • Collects tweets geolocated to that area;
  • Submits the last hour’s tweets to an API for sentiment analysis and computes an average sentiment value;
  • Displays a smiley face appropriate to the average sentiment; and
  • Graphs the previous week’s average sentiment scores.

I chose to write Twitty City for the Google App Engine for two reasons. First, price - the App Engine free tier is quite generous, and amply meets the needs of a small application. Second, Python - I use PHP all the time in my day job, and it’s nice to have an excuse to explore a different language. My main grievance with App Engine is that (at time of writing) the servers are running Python 2.5.2 but the SDK is running v2.6, so it’s very easy for an inexperienced Pythonista like me to have a false sense of security about the availability of certain libraries (I’m looking at you, json).

I’ve put the source code on GitHub, partly out of vanity, partly to gain practice with Git, but primarily so that people who want to analyse other cities can have a good starting point. Overall, I had a great experience writing this app, and I’m already thinking of how I’ll next improve it.

Photos from the event can be found here. I really enjoyed meeting so much of the Oxford geek community, and am looking forward to seeing them again!

Does WP Super Cache work on PHP Safe Mode?

Update (27 Aug 2011): This post has been updated to reflect my blog’s migration from self-hosted WordPress to a static site generated by Jekyll.


Does WP Super Cache work on PHP Safe Mode? The answer is yes, despite warnings to the contrary. When this blog was running WordPress it ran in safe mode (on NearlyFreeSpeech.NET), and as you’d have seen in the HTML source, you’d have been viewing a cached version of this page.

Proof of WP Super Cache working

(A big shoutout to Donncha O Caoimh and everybody else responsible for the fantastic WP Super Cache plugin)

Dreams of an IE6 Killswitch

Google Chrome is a great browser for many reasons, but I particularly admire its ability to silently, unavoidably upgrade. The wider impact of this feature is made apparent on Clicky Marketshare, which shows how when a new Chrome is released, the previous version completely disappears:

Chrome Stats

In a matter of days, the old version of Chrome has vanished from the web, and all its sins are forgiven. By constrast, Internet Explorer versions 6 and 7 still hold considerable marketshare despite long being deprecated, and we’re all suffering for it:

Internet Explorer Stats

Those browsers are far behind the curve, with many bugs, and their continued existence is responsible for a significant stifling of innovation after all, what’s the point of making better websites with advanced HTML/CSS if most of your users won’t be able to see it? If only Microsoft had incorporated such a dramatically effective auto-upgrade all those years ago, the work of a web developer would be a lot more enjoyable and a lot less frustrating.

Alas, there is no IE6 killswitch, and though its numbers are moving encouragingly lower, it remains an occupational hazard. So, until the last line of IE6-specific code is written, I will dream of a button in Microsoft HQ that with one fell swoop will bring all web users into the new decade.

Froyo A Go Go

100px Android Logo

On Tuesday, nearly two months after the official HTC Desire release date, Orange let me put Android 2.2 aka “Froyo” onto my phone. One 85 meg download and a short install process later, and I was up and running. There are lots of small usability enhancements, of which I’ve listed a few favourites:

  • At last, you can copy from emails using the Gmail app no idea why such a basic feature wasn’t available previously, but it’s good that it’s included now.
  • App management is a lot easier: you can now update all apps at once, set up automatic app upgrades, and share apps with other people.
  • USB/WiFi internet connection sharing, although the one time I tried to use my phone as a WiFi hotspot it didn’t work.
  • The Facebook app is much better than it was, now that you can read your inbox and view photos within the app. File this in “this could have been improved without an OS update, but oh well I’m glad it’s here now” alongside copying from Gmail.
  • The SMS compose pane is bigger and has nicer icons.
  • The haptic feedback from the onscreen keyboard is much gentler (I have no idea what made them decide the previous vibrations were too forceful)
  • Landscape mode works whether the physical buttons are on the left or the right (previously, landscape mode required the buttons to be on the right).

No single improvement has made a huge difference to my enjoyment of the phone, but as a whole the phone is much more user-friendly. My one complaint is that, as far as I can tell, it’s not possible to take screenshots hardly a grievous oversight. On the whole, I’m really happy with Froyo, and I certainly feel that it’s vindicated my decision to go Android.