Stephen McCullough
Stephen McCullough

Stephen McCullough

I'm a software developer and mainly specialise in web applications, based in Glenavy and work in Belfast, Northern Ireland. I work for a great start-up company called MissionIQ.


Where to find me


Buzz Words Galore

  • JavaScript
  • Perl
  • jQuery
  • node.js
  • Ruby
  • CSS
  • Debian
  • JSON
  • hadoop
  • git
  • Open Source
  • Python
  • Testing
  • mongodb
  • postgres
  • GIS
  • Coding Standards
  • iOS
  • Sinatra
  • Data
  • Angular
  • CI
  • Graffiti
  • Django
  • Neo4j

GitHub latest repos

Projects latest projects

I have several projects, see them on GitHub.


    My personal site (this site).

  • nestoria

    An opinionated wrapper for the Nestoria API written in python


    A service I use to take XML information and parse it into a DB.


    An app that allows the sharing of home photos/videos with logins from various social media sites with a special tiwst. [Coming Soon]

  • quantum

    An app that takes my twitter archive and produces interesting 'stats' on it. [coming soon]


    Simple app that was just a proof of concept for the meteor.js framework. this site

I have never really had a homepage before so this really was a blank canvas. I am no good at designing or graphics, CSS holds little interest for me (I will do it if I have to though). So instead of spending time designing a site and playing with CSS I decided to use twitter bootstrap.

The reason for never having a homepage (before it was straight onto a blog or a holderpage for google+ or was mainly due to never really having a good idea for one. Other than the standard "this is me" pages I never seen one that grabbed me. Then I came across Tom Gallacher and his site inspired me to make a terminal based site. It wouldn't be too hard - with some javascript, css and a bit of graft it would be possible. Obviously I didn't want to copy him verbatim as I would learn nothing. So I opened up sublime and started to 'hack at it'.

Tom's site is written in node.js and uses the excellent express framework. I have written a few 'apps' in it (to be released soon) but decided against for this site. Instead I opted to write my terminal using mootools and just hand crafted JS instead of being smart like Tom did.

The terminal section is just a bit of fun and rather apt for me as I love the terminal. As a programmer I spend a bit of time in it. I don't expect it to get used much. The terminal is written using mootools.

It uses jekyll, grunt, HTML5Boilerplate and jQuery.

Also to keep Duggie happy it is also responsive.

I move between hosting this on my own server and on Heroku. I don't know why I just do.

Fork it on GitHub.

  • JavaScript (mootools & jquery)
  • Node.js
  • HTML 5
  • Jekyll

nestoria API wrapper written in python

I have a side project (link not given) that utilizes the nestoria API to give a MVP. The app is written in django so I had to find a python library. One exists but it doesn't really suit what I want to do plus it is close to seven years of age. So I wrote one that suits my needs, it is fairly opinionated.

At the time of writing (late August 2014) I am adding to it on a weekly basis.

Fork it on GitHub.

  • Python
  • json tv listings parser

This is mainly a legacy project. Back in 2002 I got Sky in but found their planner to be pretty much useless. It never told me when things were on and I don't even think they had a series link back then. So instead of trawling through the radio times and the like I decided to write my own. I used the data provided by the people and parse the information on a semily regular basis. This way I could then do what I wanted with the data.

I created various things with it - an email reminder to email me of when my shows would be on or coming up. A watchlist so I could keep an eye when a certain star was going to appear on tv as a guest or a recurring character. I then extended it to take episode information - with the grand idea that I could use something to say "show me all the episodes from the X-Files that include the cigaratte smoking man". I was partially successful. However as it was a one man band project I couldn't keep up with the advent of sky+, tivo and other sites.

I gave it a major re-write in 2005 and used XML::Twig. It still uses Class::DBI for its db interface (MySQL) - it should be re-written to use DBIx::Class as it is still supported. it still works. I don't really have a use case for it now as I either use 'On Demand' or 'Sky+' now to catch what I want to watch. So every three days a cron runs to collect the information and put it into a database. At the time of writing I have every tv listings/star information from the start of 2011 until now (April 2013). It might come in useful some time.

I added in a lucene index to the build. Mainly for proof of concept. I could have easily do this in Perl/Ruby/PHP but opted for groovy for a challenge.

I just use it now to test a data set with something new - JSON parsing etc.

Fork it on GitHub.

  • Perl
  • XML
  • Groovy
  • Lucene on-going/stalled

For a christmas gift I took the 35mm slides that my parents had and digitised them. The plan was to create an application that sat on top of flickr and took the photos from there and depending on who was viewing them it would render out a different name who was tagged in the photo. For example any of my Father would be tagged as 'Dad'. However if it was my cousin it would be 'Uncle Ed', same thing with my 'Uncle Sam', to my cousin he would be 'Dad' but to cousins son he would be 'Grandad' and to my Mum he would be 'Sam'.

This project has stalled. I might go back to it at some stage though as I think it was quite a nice thing to do.

No technology was used for this as it never really got off the ground. I am keeping it under my projects in the vain attempt that maybe it will shame me into doing it.

quantum coming soon

A mini app that will take my tweets from the twitter archive and produce stats on it. Basically.

I joined twitter on 1st March 2007, however my first tweet was on the 22nd Jun 2008 and my 10,000 tweet was on the 8th October 2013.

It will be interesting to take these tweets and product stats on them, who am i talking to most, what is my favourite curse word etc.

Fork it on GitHub.

  • Ruby

Tascomi Killer King leaderboard

In Tascomi we like to let off a bit of steam by playing Killer.

This is just a proof of concept idea using the Meteor framework ( to hold who has won the most. It does nothing fancy.

Fork it on GitHub.

  • Meteor
  • Node.js
  • MongoDB

Life outside Rails

Very brief.
A talk I gave to Belfast Ruby on the 6th of May 2014.

  • Technical Talk
  • Ruby

Tmux lightning talk

Very very basic intro to tmux.
A talk I gave to Belfast Ruby on the 2nd of October 2013.

  • Lighning/Technical Talk
  • Node.js
  • Ruby

A brief intro to Neo4j using 'The Wire' as a dataset

A brief intro to Neo4j.
This is a talk I gave to Belfast Ruby on the 4th of June 2013.

A very basic introduction to neo4j. I would have liked to have had more time and to went into more detail than I did. Maybe next time.

View the actual slides as a mini app by clicking here.

  • Technical Talk
  • Keynote
  • Ne04j

Giants are made by standing......

Giants are made by standing on the shoulders of drawves...lots of them.
This is a talk I gave to a user group in London in May 2013. I was over that day anyway and so I went and gave this lightning talk.

The basic elements of this talk are that good systems and developers can be built on using lots of small 'apps' or 'processes'. As a lightning talk there isn't much substance to it - but there was a good Q&A session after.

View the actual slides as a mini app by clicking here.

Fork it on GitHub.

  • Technical Talk
  • Node.js