5 years, 40,000 lines of code* and a degree

Today Two days ago heralds the end of my Master of Software Engineering (MEng Software Engineering) degree at Aberystwyth University. It's safe to say that four years of studies plus an industrial year at IBM Hursley have changed me.

I came in with near to no computer science knowledge - the closest I had at the time was an A-level in Mathematics, of that only the decision side of that seemed relevant and some playing with HTML, JavaScript and PHP for the Adur Canoe Club website.

The statistics below give a glimpse of what I've come out with. But just a glimpse; not included are the two group projects I've worked on, plus all the projects I can't talk about so much that I worked on within IBM (not just for confidentiality, but because it'll bore the pants off anyone not inside of IBM).

Java, C, C++, C#, Objective-C, Perl, Prolog and Ruby were all formally taught by Aberystwyth lecturers at different years (that does include masters level) - that is, within lectures - it's a pretty wide scope when you think about it. Add to that the range of markup languages (HTML, XML, TeX) and there's a pretty decent technical background there.

Add to that the range of soft skills; some which you learn through coursework: giving presentations, working as a group, etc. and some which you gain along the side: time management, confidence, etc. and there is a pretty good grounding for us students to get jobs.

Well you'd think so at least. I bring forward this book for those who think getting a 2:1 is all there is to getting a job at the end of a course. Aberystwyth actually do things to help with this: the much discussed Gregynog employability weekend is a great example of the department going above and beyond, to give us the best possible chance after the magic of graduation.

I'm one of the annoying ones who already had quite a bit to talk about before I even started the course, but that doesn't mean I've been idle and, although my contributions to big open source projects still remains at a big fat 0 (unless you count pixel art to Wesnoth - I was thinking more code than art though), I have put out a few projects which are available on GitHub.

I suppose the two questions which have to be answered at this point are:

  1. What am I most proud of?
  2. What could I have done better?

Well 1 is easy: getting published (in an IEEE afiliated, no less) academic conference.

2 is a little harder to answer easily. I know I could have pushed myself to do GSoC or something similar or actually push out a game or Android app. But really they're small fry; really what I would have been most proud of (possibly even more than 1) is to speak at an Open Source conference; particularly something big like FOSDEM.

One day, maybe.

* Statistics gathered from GitHub through their wonderful API), bytes are divided by 80 to give an estimate of lines of code (I'm assuming UTF-8 files: 1 byte = 1 character).

There's a few anoymolous ones: OpenEdge ABL stands out as wrong (who knows why though).

    "1": {
        "Shell": 2, 
        "Java": 15562
    "2": {
        "C": 364, 
        "Java": 4709, 
        "C++": 343, 
        "TeX": 2693, 
        "Objective-C": 5, 
        "DOT": 73
    "3": {
        "Shell": 46, 
        "Python": 561, 
        "JavaScript": 101, 
        "OpenEdge ABL": 23, 
        "CoffeeScript": 2, 
        "Ruby": 1318, 
        "DOT": 36
    "Masters": {
        "Java": 1198, 
        "Python": 209, 
        "JavaScript": 5037, 
        "TeX": 4067, 
        "Objective-C": 266, 
        "CSS": 2823
    "overall": {
        "OpenEdge ABL": 23, 
        "C": 364, 
        "Shell": 48, 
        "Java": 21469, 
        "Python": 770, 
        "JavaScript": 5138, 
        "C++": 343, 
        "TeX": 6760, 
        "CoffeeScript": 2, 
        "Objective-C": 271, 
        "CSS": 2823, 
        "Ruby": 1318, 
        "DOT": 109