1. Death By A Million Cuts

    23 Mar 2014 by iain

    Individuals within the software development community are in one of two states. One believes that there is a deep rooted problem of sexism that constructs multiple barriers against females joining, and thus deprives this community of the majority of a talent pool that makes up half the population. The other, simply hasn’t realised it yet.


  2. Confusing Christmas with Halloween

    28 Feb 2014 by iain

    Understanding how computers work is essential in allowing us to use them as tools. We therefore need to translate some of their codes and numbers to things that we more naturally understand. Unfortunately, there’s no escaping the mathematics of it – converting binary numbers to decimal and vice versa is an algebraic operation. Though it can be done with a scientific calculator, the process is straightforward and can be done simply enough with a pen and some paper.


  3. How Not To Do a Hackathon

    15 Jan 2014 by iain

    I’m a strong believer in learning by doing. I don’t think it’s necessarily the best way to learn because you invariably learn inefficiently, repeating well known mistakes and suboptimal practices. If you have a mentor throughout the learning process they can lead you away from bad habits and, crucially, explain why they’re bad in the first place.


    But there are plus points to learning by doing. Firstly, you can’t argue with the results. It’s not a theoretical endeavour and if you manage to build a bookcase in two weeks, you can be fairly certain you’ve learnt a thing or two about carpentry. Additionally though, even though there is pain in learning the hard way that the bad habits are bad, there is no greater lesson learned than that which you learn yourself. Put bluntly, you’re more likely to remember to continuously save your work after you’ve lost six hours of content to a crashed application rather than someone simply advising you to, “Save your work frequently.”


    The first Hackathon I ever did wasn’t an organised event but rather a weekend hanging out with a few other software developer friends. It was great fun and felt promising but ultimately, it has to be regarded as a failure: there was no end product. For those who are good taking lessons learned from others, here are my biggest suggestions to keep in mind when doing a Hackathon.


  4. The 10 Types of People

    28 Dec 2013 by iain

    We’ve now established that knowing the base of a number system is crucial to counting, and that computers exclusively use the binary number system i.e. base-two. You may well have seen a calculator application on your phone or desktop computer that works perfectly normally using decimal. How can that be if everything a computer does is in binary?


  5. Counting Like A Computer

    30 Nov 2013 by iain

    The journey of learning about Computer Science will start by revisiting a simple lesson first encountered by most as a toddler: how to count. Indeed, it’s such an easy skill it’s hard to remember a time when you didn’t know how to do it. But one of the commonly known facts about computers is that everything is done in ones and zeros ie. binary. Just what does that mean though and how is any of this relevant to humans? Well, to understand how a computer works, you have to be able to work things out like they do. The first step is learning to count like them.


  6. Helping a stranger (and why you should understand NP-complete)

    28 Oct 2013 by iain

    Earlier this year I helped out a random Hacker News commenter. This was covered in a recent blog post where I discussed the trade off between being an expert or a generalist. Realising my GitHub repository was littered with short, generalist introductions and experiments, I concluded that I should add the complex NP-complete constraint solver I had been working on for the past few years – an area in which I had some expertise.


    At least, I thought that was the conclusion.

  7. Computer Science in Plain English

    18 Sep 2013 by iain

    I feel embarrassed to mention this to people but I’m writing a book. It sounds just as pretentious aloud as it does written in text before your eyes.


    Being an author isn’t something I ever thought I’d do and I’m not saying now that I’ll definitely see it to the end and publish a book. However, computer science is a subject dear to my heart and I feel constantly aggrieved by how misunderstood and misreported the discipline is by the media, programmers and everyone inbetween (see my complaint with University Challenge). Ultimately, I want to write an accessible book that explains computer science from the very basics, the most fundamental principles. I want everyone to know that computer science has nothing to do with technology and everything to do with, well, I’m about to explain exactly what…


    So this is the first in a series of blog posts that will take excerpts from chapters I’m slowly working on from time to time. Feel free to chime in with comments and criticism about my metaphors, explanations, facts i.e. bug reports extremely welcome.


  8. Fantasy Football Team Selector 2013-14

    03 Aug 2013 by iain

    It’s that time of year again. Here is the updated Excel Spreadsheet for helping you choose a great Fantasy Football team that obeys all the team, position and budgetary constraints.

    Fantasy Football Team Selector 2013-14

  9. The Future of Education

    27 Jul 2013 by iain

    Education is changing in a big way. Whether you’re still in the education system or someday going to have children who will, it’s of prime importance you learn just how it’s going to change.



  10. Expert or Generalist?

    24 Jun 2013 by iain

    “My Name is Karl, Ich Bin Expert”


    I don’t quote Karl Hungus lightly. When I began this blog back in the summer of 2011 it was because I thought I’d let my programming skills go rusty. I wasn’t starting projects and I hadn’t learned any significantly different technology or tools for a few years. Life Beyond Fife existed as a dumping ground for random ideas, quick trials and elaborate “Hello world!” examples.


    But I’m not a twenty-three year old entrepreneur living in The Bay trying to get a startup off the ground. However cool it is to launch a micro t1 Amazon EC2 instance with a Node.js module using Heroku (yes, I’m doing Coursera‘s Startup Engineering class) I’m a C# programmer, and an experienced one at that. Recruitment agents don’t get in touch because I’ve tinkered with Iron Python, but because I have years of full development life-cycle experience on the Windows .Net framework. All my interviews begin with, “What’s the difference between a reference and a value type?” and end with “Explain the garbage collection process in .Net” or “How do you create an extension method?” etc.


    Does trying out every new technology whim damage the focus needed to pick something and be an expert in it?