So I mentioned something about keeping busy? Yeah, well….
A while back I spent a couple of months playing around with an idea that we thought could make an interesting bit of research. It started with a simple modification to a protocol proposed by someone else (Gavidia et al, A gossip-based distributed news service for wireless mesh networks), where we added some elements of self-adaptation and cooperation. As things sometimes go, the results were quite good but not outstanding and we had more pressing things to look at, so we dropped it and moved onto something else.
It’s never nice to just drop work and not get anything from it though, so we wrote a technical report about the work we’d completed that we could stick in a deliverable somewhere. At the same time, we noticed a conference workshop where a paper on the work might fit, and decided it might be an idea to trim the report down for submission. Unfortunately, at that point things kicked off with a couple of journal papers that we’d been working on at the same time so we didn’t have time to do the submission.
Fast forward to the SocialNets/Recognition meeting in mid February and we learn that the deadline for the workshop was extended. On the spur of the moment we decided to have a bash at a paper for it. We cut the tech report down, gave it an edit, and submitted it. Fast forward again to this week and we get the notification through that the paper has been accepted. Previously we had a bit of work that would never see the light of day, buried at the back of an EU deliverable. Now for very little effort we have a published bit of work, I’ve got another publication to add to the list, and a trip to a conference as well. In Italy. In June. Sometimes life is just too cruel :-)
I have found that the secret to forgetting that it’s my viva in 13 days is to keep busy. Extraordinarily busy. Luckily, work is conspiring right along with me, with coding on our first experiment in full go-mode, a workshop + social dinner next week to help organise, reading and planning for our main ‘project’ to do, a paper to edit and revise for a workshop and a side project looking at 4sq to move from prototype ‘buggy as hell, falls over if you look at it funny’ mode to ‘production, solid as a rock, leave it running and forget about it’ mode. That’s all before you remember that there’s also the final deliverables to work on as well! Luckily it’s just what I need to keep my mind off the 20th.
Just hoping I can get it all done before I do actually need to stop and remember what it was I did for my PhD of course….
There is a lot of information out there that talks about putting Django and Tweepy together to make a Twitter web app. I read a lot of it recently, and although a lot of it is helpful some of it can be quite complicated or out of date.
To make things simple, I thought I’d create an example Django project that just contains the basics needed to get up and running.
The ‘DjangoTweepy’ project, hosted on Github here contains all the code needed to get up and running with a Twitter web app using Django and Tweepy. Download it and follow the instructions to get up and running quickly, or with a bit of hacking add the ‘twitter_auth’ app to your existing projects.
Next week we have the project partners coming over to Cardiff for a workshop. Stu and myself were discussing that we should have some way to display information throughout the day, something that makes it easy to pick out the main themes of talks etc. I’m a big fan of the Wordle as a way of displaying text, so we thought it would be nice if we could have a dynamic Wordle displayed that people could add to throughout the workshop.
I found a python library called pyTagCloud that will turn text into wordle-like tag clouds either as images or as html. As I mentioned previously I already have a django based project on the go which interfaces with twitter, so I already had code written that uses Tweepy to OAuth with twitter and do a search for keywords. Combining the two, I get an app that will continually search twitter for a given keyword, extract the text from all the tweets and display a wordle along with the latest tweets. People can contribute to the display by tweeting with a given hash tag, and as long as we search for that hash tag, their opinions and notes will be displayed.
For instance, here’s the display running with one of today’s trending topics: ‘Alan Titchmarsh’:
It’s not entirely perfect, I need to do some more filtering on the text to remove some words that aren’t removed by the stop word filtering that pyTagCloud does such as ‘rt’, ‘http’, ‘bit’, ‘ly’ and so on. It would also be good to remove things that aren’t words, like ‘xxxxxx’. I’ve been looking at the Natural Language Toolkit for a couple of days for the other project, so I’ll probably re-use some of that code here too.
The only problem now is that I’m probably going to be the only person at the workshop tweeting…
Waiting is annoying. It’s close now though…
One of the latest ideas we are working on for the new project is looking at how providing different amounts of information affects our perception of content. Even in pure implementation terms this is interestingly unlike any of the work I’ve done in the last few years, most of which was simulation based. “Code a simulation, run the simulation, analyse the results” has been a pattern of work since the beginning of my PhD and beyond. This recent idea however needs us to essentially survey a large number of people, so rather than just coding some command-line simulation in C/C++ (or god-forbid, Fortran) that only one or two people might use, I’m building a web based system that (hopefully) will have many hundreds of people interact with it.
From the fact that this website is just a basic wordpress install with very few changes to the default theme you can probably tell that I am not a web developer. In the recent past I’ve very rarely had any call to do anything web-based beyond just keeping a personal (static HTML + CSS) home page up to date here at the school. To suddenly move into building a dynamic website that does a lot of complicated database stuff and interfaces with other services via OAuth is quite a jump. Fortunately, it’s been a relatively easy jump thanks to django.
I’m not going to ramble on about what django is (basically a python web framework), if you haven’t heard of it go check it out. What I am going to do is recommend it highly. It is so simple, so quick and so powerful that implementing a web project with it is dreamy. We first discussed this research idea sometime at the beginning of the month, and I started coding it sometime around the 16th. Since then I’ve actually spent a week working on another project (and the ever present SocialNets deliverables for the EU), but I’m still massively into implementation to the point where I’m confident of having a site ready to beta test this week. Which I think is pretty good going for someone with as little web programming skill as I have!
So, there. Django. Try it out, it’s aces.
p.s - the project will hopefully be open to the public at some point in the future, once it is, I’ll post here.
I figure blogging is now so outdated and behind the times that it is safe for me to start.
So I have. Here.
I’ll probably have to move this to another host soon, as it’s hosted on the work web server which means I probably can’t/shouldn’t be as sweary as I would normally like to be.
Until I get fed up of self censorship though, here it is.