I got a Pebble watch from the Kickstarter campaign and have started doing some basic development with their initial SDK release. So far what's come out of it is a simple watch face (which needs improving) and some ideas for some basic apps.

It's been quite nice getting in on the ground floor with this since mature frameworks can be a bit daunting to get started in (I'm looking at you iOS), and it's been quite fun to play around with a limited set of features while waiting for others to be documented. It hasn't been so fun going back to C as a language. Despite it being the language I used to learn programming I don't hold much affection for it. Perl and more recently Python thoroughly spoiled me in that regard. 

Hourglass Watchface

Initial release version of the hourglass watchface

(I have to update this since the latest Pebble update broke the way I did the hourglass.) 

This is a basic hourglass watchface I put together as my first attempt at a Pebble project. 
Basically it's a fuzzy time implementation (for minutes in the hour) with a number of small hourglasses at the top of the screen to indicate the hour of the day.

Because I started with a Photoshop mockup of the screen and didn't think too hard about the number of pixels I'd use for minutes I ended up with a very fuzzy time implementation (in that the amount of 'sand' isn't regular). I've since fixed that up, made the main hourglass larger and gotten rid of the little hourglasses at the top of the screen, replacing the hour representation with a number on the left. Despite the fact that there were six small hourglasses in each row, it made telling the time more cumbersome than it should have been.

You can find the source here on Github (quite outdated - the motivation to do more Pebble stuff isn't there right now).


I like Python a lot. As a teaching language it's great as it's harder to write unreadable code due to indentation enforcement, and the way that it's written has always appealed to me from a comprehension standpoint (except list comprehension which I still struggle to parse in my head). 

Most of the stuff I do with Python is every day scripting to help me manipulate data though so I don't have too much that's interesting to share.

Some basic Twitter usage analysis

At 2012's ACEC conference I whipped up a quick (and most likely dirty) script to do some very basic analysis of the Twitter chatter from the sessions (again, on Github),  looking at number of mentions, hashtags, timing and so on. It's not particularly elegant (I wrote most of it while I was 'multitasking' in another workshop) and needs some development to not rely on third party tools for things like retrieving tweets and generating usage graphs.

I've updates this project to do all the Twitter searching itself through the TwitterSearch wrapper to the Twitter API and generate the graphs through the very nice pygal library.

Now I just need to make it do periodic updates (probably just via a cron job) and shoot out live (-ish, the twitter search takes too long to be anywhere close to real time) data from a web app.

Here are the links to the SVG files that the script outputs: Tweeters, Hashtags, Mentions, Timeline.
As an aside, support for SVG out there doesn't seem to be very good. The platform this site is hosted on doesn't support it as an image format (for nice lightbox style display), Dropbox recognises it as an image format but won't display it, most image hosting sites either don't seem to support it or render it as a JPEG, and the tools for converting it (on OS X at least) are just plain terrible.

Web Logins

I was listening to an Accidental Tech Podcast episode in which one of the topics was the passwordless login system that Marco Arment uses (used now I guess since he sold it off) on The Magazine and also on the admin stuff for the ATP sponsor management. It's a great discussion on the pros and cons of such a system and I figured I'd take a look at how difficult it would be to implement in any reasonable way. The problem with this is that I don't have a great background in security (even though I find the subject fascinating) and so it's hard to know whether I'm falling victim to some obvious flaw. I couldn't find a lot of good info on implementing a system like this despite lots of places doing it for things like password reset emails; mostly I found forum threads with someone suggesting it and a bunch of other people telling them to stop being stupid and use OAuth.

I've got this working pretty well now and I want to do some code refactoring before I put it up on Github. I also recently found out that the Google Authenticator app which is used for their 2 factor authentication system for Gmail allows other things to hook into it, so I want to look into using that as well, since that would be a nicer way than having to check your email for a login link.

RSS Torrent

I've been working on a script to automatically download files based on RSS feeds, utilising a database to keep track of what has previously been downloaded (based on date or episode) and whether encoding fixes have been uploaded. It's built around the Feedparser library (which is nice until you look at the way in which errors are handled). I've had this working nicely for a while and have been adding features for multiple feed support (which is still a bit rough as it requires some manual inspection of feeds as different sites handle things like file names and download links in ...interesting... ways), notifications of what is being downloaded via push to mobile using the Prowl app, and prioritising of downloads to fit into peak and off-peak periods since I'm unfortunate enough to live with split traffic quotas.

This doesn't do the file downloads itself, but rather passes things off to rTorrent which does the real work.  rTorrent is quite a nice command-line bittorrent client, the only pain point of this so far is its handling of magnet links.

Of course there are other things out there which do this, but it was an interesting exercise putting it together.