About Me

About Me

I'm a computer science student working full time. I'm finishing off my degree with night courses, but my real learning occurs through my many side projects.

Computer Science Interests

I'm extrememly interested in a few topics in programming:

Programming languages - I like to design toy languages in my spare time, and think about how different syntaxes and semantics could be used to enable more expressive programs Type systems - I enjoy learning about and using various type systems, and love exploring how different type systems can create elegant programs. Program tools - I enjoy tools that help increase programmer productivity, software quality or performance.

Core Programming Principles

When I am given a choice in different ways to approach a problem, the 2 principles I use to decide on the approach are:

DRY - Don't Repeat Yourself - I try to limit the amount of copy and pasting I do in a project. If a section of code is going to be similar to an existing one, I try and see if I can refactor the common functionality out. KISS - Keep It Simple, Stupid - I try to ensure that the project has the functionality that is needed, and try to avoid adding unneccessary features. I keep designs open ended enough to provide places for additional functionality to be added, but I don't worry about the functionality unless it is required. Antoine de Saint Exupery states my view perfectly "It seems perfection is reached not when there is nothing left to add, but when there is nothing left to take away." I believe in smaller components that can be chained together in interesting ways rather than large components that provide functionality on their own. Non-Computer Science Interests

A few of my non-computer science interests: Wheel of Time Skyrim Firefly Doctor Who