Living on a small college campus, community is not something that I have to go looking for. It’s right around me all the time. But college is not the only community that I’m a part of. In particular, I consider myself to be part of a larger hacker/programmer community — a community that is characterized by people building great things simply because they can and they think people will find their creations useful. And there are some really great, upstanding citizens of this community that we should all look up to for inspiration.
There are people like Linus Torvalds and Richard Stallman whose actions have changed the world in no small part. There are also groups like Mozilla that have advanced the standard of technology But more importantly there are a greater number of people who are doing great software on a much smaller scale. People like Marco Arment (Instapaper) and Zed Shaw (Mongrel and Mongrel2) and many others like them build great products that many people find useful (and will pay for). Considering the number of people in the world who seem to be very dissatisfied with their jobs and would rather be doing something else, it’s great to see people in this community who can make a good living doing things they absolutely love doing.
Unfortunately, when it comes to myself, I feel like I’ve been a rather lax citizen. I’ve always had the best of intentions, but never the required carry-through. Nowadays I use Linux and open source programs almost exclusively (with the notable exceptions of a multitude of online services). I’ve been using Firefox since before it was called Firefox and I was almost the certainly one of the first people in my high school to be seriously using Linux. Though I’ve been a great user-supporter of open source software, I haven’t been a very good contributor. Admittedly, open source doesn’t require you to contribute back, just like living a neighborhood doesn’t require you to be a friendly neighbor.
But there are two reasons why I would want to. Firstly, I do owe a lot to open source. Almost all that I’ve learned about computers and programming has been thanks to having free and open source tools and libraries to use and tinker with. And I have learned a lot. The best way I can impact the world around is by writing code and I am willing and able to take on the responsibility of giving back to the community. The second reason is that I genuinely want to. Even if I didn’t feel a responsibility to give back, I would want to publish my code and let others use it. This isn’t some altruistic notion of making the world a better place through my code. It’s a much more simple idea of building something fun, showing people what I did and talking about it. The work I do and the community that it puts me in touch with is interwined in complex and subtle ways.
In some ways, this blog is my attempt to become a more prominent part of this community. I’ve had a long history with blogging, but it’s only in the last 2 years or so that I made up my mind as to what to write about (technology). Again, the citizens of the hacker community were an inspiration because a lot of good hackers are also good writers. That is perhaps not very surprising considering that programming is basically communicating. However the one thing that I seemed to have forgotten is that my heroes and role models write both code and prose. In fact, I would go so far as to say that for many of them, the writing is a by-product of the coding. I’m slightly ashamed to admit that has never really been the case for me. Looking back on this blog, almost everything on it is about things I use, not about things I make. One of the reasons for that feeling is that I really haven’t made all that much, certainly not nearly as much as the people I’ve mentioned before. Looking at my Github page I have 7 repositories. Out of those 7, only two have any substantial amount of code and only one of them has seen any work recently (Litepipe, a threaded server library).
In many ways, I regret not having made a more substantial contribution to the community even though I’ve programming for about 6 years now. However, it took me that long to figure out just what it is I wanted to make and get to the point where I could build non-trivial things that were worth sharing. Almost at the end of my college career, I’m finally starting to understand that what I really like building are tools for other programmers. I love programming languages and programming tools. I’m also developing an interest in backend tools like servers. I’m only just getting to the stage where I have both the inclination and the ability to scratch my own itch. The reason I’m building my own language is that I’m rather bored by most popular languages (even fun ones like Ruby and Python). I’ve been reading about languages and language design long enough that I think it’s time I took a proper crack at it. (It also sets the groundwork for my graduate studies, but that’s a matter for another post.)
So I want to a better citizen of my community. How do I get started? Now that I think about it, that’s probably another reason I don’t have much to show. I was under this expression that I had to make a big release of anything that I made open source. But I understand now that it’s a much better to just put things out there (Github makes this really easy). And this is how Litepipe happened — I was using Github with my lab partner back when Litepipe was still a project for our OS class. When we were done, it stayed on Github and when I finally got around to remaking it, releasing it was just a push away. I could put it out there even though it wasn’t the feature-rich complete server-toolkit it might one day become. There are at least two more substantial projects that I can release (with some cleanup) and if I dig into stuff I’ve done for other classes I might find even more. I’ve considered reviving Cyblog, but the current state of Jekyll makes me think that won’t be too helpful to anyone.
Of course to release anything, I first have to write it. I’ve been coding more and more lately. I’ve been staying up late working on stuff and my weekends are becoming evenly split between code, homework and enjoying the Fall weather. Most of this time goes into my thesis, but that’s ok because it’s the biggest itch I have to scratch right now and I’m motivated to work on it. In the long run, I want to learn more programming languages and hope to do some interesting projects to learn them. There’s no point in me writing code if I don’t actually enjoy doing it. It would be easier if my classes involved writing code, but that’s something I can deal. I’m a full believer of the idea that if something is important to you then you make the time to work on it. I’ve done that with other things before and there’s no reason I shouldn’t be able to do it code. So I think it’s about time I wrapped up this blog post and got back to writing code.