About Me

A picture of me.

I am 17 and in high school — graduating next year (2008). My main hobby is programming, with particular focus on mathematics, physics, graphics, linguistics, and programming language design and theory.

Contact

mgsloan AT gmail.com
irc: mgsloan AT irc.freenode.net
jabber: mgs AT gristle.org

My first internet name was bot_builder, on the mindrover forums, back in 1999 or so. I used this name for many years in forums, irc, email, and in various variants, such as BotBuilder, Botty, etc. My fps name tends to be 12ambo. I am phasing these out in favour of mgsloan.

History

My learning-to-program story is pretty classic — I wanted to make games, and learned a dialect of BASIC. In particular, ST BASIC. After a year or so of that, we got a computer running windows 95, and I moved on to QBasic, which was very awesome in comparison. After a year or two of that, still focused on video games and staunchly BASIC-oriented, I found BlitzBasic. Its well designed API for 2d and 3d graphics made it hugely powerful in comparison to QBasic.

Throughout this time of game programming, I devoted more and more of my time working on the specific interesting problems, rather than working on actual games. The problems I messed with most were physics simulation, rendering, and interpreting scripts. I realized that there wasn't much point anymore in working a language with the express purpose of game programming. I knew that I would also benefit from learning more languages. The first language I went for was C#, which was attractive for its ease of use, while still inducting me into C++ style syntax. After a few projects in C#, I began looking for alternatives which solved my annoyances with the language. I found Boo, which is basically C# with syntax sugar. It was an improvement, and I could use what I already knew of the .NET SDK. In retrospect, probably ruby or python would have been better at this point. At this point I realized that languages could do a much better job than they do, and startet on a whirlwind tour of various languages, in search of a suitable one.

In this search I became more interested in the design of the language than the capabilities of the implementation. While I had always been designing languages in my head (an almost always changing 'ideal'), I began to realize that all my designs had mostly been superficial. Discovering functional programming, a truely different paradigm, blew my mind in a very good way. Haskell sparked my interest in programming language theory. Now, creating programming language(s) is my huge backburner project. Together my ideas could make concievably make up one 'ideal' language, but more likely than not I will initially implement some feature-sets independently, as toy languages.

During this time I also started getting involved in opensource. I liked the Inkscape drawing program, and figured it wouldn't be too hard to do a little volunteer work here and there in the codebase. Turned out that the codebase was rather messy in the very areas that I was interested in - the geometric manipulations, etc. A few months before I started inkscape tinkering, njh and MenTaLguY (two inkscape founders) had created lib2geom. They recruited me to this sub-project, and I've been working on it on and off since.

An excerpt from my resume, as a graphic to go along with the text:

A graphic showing my programming language progression.