Sean DuBois

GitHub

Discogs

Last.fm

Email

Programming



The Story So Far....

My thoughts on programming have taken many twists and turns, but in the end I am happy to say that programming is a wonderful hobby, and pays the bills. My introduction to programming was writing 'Hello World' by accident in BASIC during elementary school. I had no idea what I was doing and most of the time was just trying to impress people by blowing up the stack with recursive functions. However, I am very grateful that my first lessons were through trial and error. I blindly used functions, and very early on developed the hacker mindset. It never occurred to a younger me that I could have just picked up a manual.

This mindset continued until I graduated from high school. Right out of school, I got a job at a VoIP company that was heavily invested in the LAMP stack due to FreePBX. I quickly realized that I had lots of work to do. I knew nothing about 'Best Practices', 'Version Control' was a term that scared me and weekly code reviews were daunting to say the least. This started the second phase of programming for me. Gone were the days of care free coding. Now I had to produce quality code, and it needed to be done on time. This made me mature fast, and accelerated my learning. Even though I was producing code that was making money, I did not really understand the true nature of programming yet. I merely saw it as an end to a means. I was just happy to ship a product.

The next big step in my life was attending Hacker School in NYC. On my first day, I was lectured by David Albert about Unicode. This rocked my world. Never before had I met people so passionate about programming, it was not engineering for them, it was an art form. They even had a motto for it: 'Code as a Craft'. The people here did not see programming as just a way to make stuff, they saw the beauty in the code itself. This philosophy instantly appealed to me, and I believe it changed me for the better. I started to play around in C and Assembly with no intention of making things. I was just fascinated by all of these things I had written off as being 'old fashioned'. I found myself becoming a much better programmer and found myself loving programming even more. Since then, I have had fun writing a HTTP Server, bootloader and playing around with Scheme. I have no idea what I will write next or be fascinated by next week, but its always fun. Now, this is just the beginning of the story. To find out how it ends, you will need to check out my GitHub!


My Languages

I consider myself fluent in the following languages. Either I have spent a considerable amount of time studying these languages or have been involved in either a Free or Proprietary project that used one of them. I would say I am proficient enough to cause damage with them...

C

I have a huge soft spot for C. For me, it was the holy grail of languages. I always thought that once I knew the language that UNIX was written in, I had finally made it. The second I started reading K&R I was hooked. The book had a steep learning curve for me at the time, but the writing was passionate and kept me interested. I instantly had the desire to learn every nook and cranny of the language. I had so much fun learning pre-processor tricks and playing with pointers. C also introduced me to algorithms and data structures. This was the first language where I couldn't just call Sort(); I actually had to learn linked lists and how to work with them.

Lisp

Scheme is my current obsession. I am new to the language, but am completely enthralled with it. I was first introduced to it by SICP, but have just started using it for other purposes. Its dynamic type system, lists and 'code as data' philosophy makes for very interesting code. This website is actually written in Scheme using the awful framework.

ECMAScript

ECMAScript (Javascript is its most popular dialect) is a language that I have really grown to love. ECMAScript started out for me as an after thought. I only used it with the jQuery toolkit when I needed to manipulate the DOM. I found it frustrating because I did not understand Lambdas, Callbacks and its strange variable scope. As I have come to spend more and more time with the language, I have really grown to appreciate it. I find well written, modern ECMAScript really beautiful. With things like the 'unobtrusive Javascript' philosophy, Node.js, jQuery and Google's investment in it, ECMAScript has really shown itself to be a powerful modern language.

Python

I don't feel strongly about Python in any way. Sadly, it is my thankless workhorse. With Python I can do amazing things; it monitors my servers health and emails me if there are any issues, it works with WSDL, has awesome web frameworks like CherryPy and has parsed some ugly HTML for me. I don't have a single bad thing to say about it, but for some reason I just have never gotten the urge to really delve into the community or source code.

PHP

PHP gets a bad rap these days. Whenever you mention PHP online you instantly get a link to the 'fractal of bad design article'. At work, all our web software and scripts are written in PHP, and I have nothing but good things to say about it. PHP has a powerful standard library and works seamlessly with Apache. I agree you can be bitten if you don't understand the language, but lets be honest, you are an idiot if you use operators without checking types (== vs ===).

x86 Assembly

I have learned more about computers from Assembly than anything else. Learning Assembly made me finally understand pointers, executables, the stack and appreciate C. So far, the only thing I have written is some simple algorithm programs and a x86 bootloader. I am hoping to buy a small ARM device and build an entire system from the ground up. It will not be for day to day use, but would be a great learning experience

SQL

SQL is somewhat of an enigma. If you have done any programming, odds are you have worked with a DB and used some form of SQL to interact with the DB. However, no one ever takes a step back and really marvels at the fact that its an imperative language, when we are all so used to declarative ones. For a long time I saw SQL as just a way to fetch information from a DB, but after talking to a Prolog programmer I have recently started to really look into SQL and its interesting ecosystem.


I also have written some Java, MATLAB, Ruby and C++. I don't have enough experience with them to offer an opinion. However, I hope to spend more time with these languages in the future and develop a better understanding of them.