alexseubert dot com

Words About Things

Polyglot Summer

Summer is drawing to an end and I wanted to record a bit of what I’ve been doing over the past three months. While no big project has yet materialized, I’ve learned a lot about different aspects of programming and have been able to dip my toes into more than a couple languages and topics. Whether that’s a good or bad thing is yet to be determined, but it feels good to say that I don’t think there were more than a few days all summer that I didn’t read or write a line of code in some form or another. I was also able to go through the beginning of a job application process with a company in Washington DC, taking a short coding assessment followed by a phone screen with the group manager. Ultimately, they decided that I am still too green but their comments on my code samples were encouraging and I feel like getting even the smallest taste of that process will be valuable as I fill out more applications for either internships or jobs in the coming months.

As far as actual programming study goes, I started off with the previously discussed saas-class from Coursera. Unfortunately, I took a part time job to pay the bills just as the course was ramping up and didn’t get a chance to complete it. However, I still intend on reading the rest of the textbook and the first couple weeks of the class were incredibly helpful in establishing my knowledge of how web apps work, what goes into a full stack for a web application, and how powerful Ruby on Rails can be. It also introduced me to the potential elegance of Ruby and I spent some time trying to catch up my Ruby knowledge to my Python knowledge.

After flirting a bit more with Ruby and Rails using Michael Hartl’s Rails tutorial book, I decided to learn more about Clojure. I’ve been interested in Lisps for a few months now, since going through the first few chapters of Land of Lisp last spring, but I hadn’t seriously investigated Clojure yet. I tracked down a copy of Clojure Programming and have been going through the beginnings of that alongside 4Clojure. I will admit that the syntax took a couple days of getting used to and I’m still far from understanding the real ideas that drive the language and its idioms, but I think that the people behind both the language and many of the more visible projects written in the language are incredibly intelligent and have been able to address a lot of complex issues in their language design. A major reason I like Clojure Programming is that it explains the language’s benefits in a way that doesn’t assume you are already totally sold on the idea of a Lisp on the JVM. As a result, I’ve learned a bit about why Lisps are so cool and why support for the JVM is a huge feature.

Over the last couple weeks of summer I hope to expand my knowledge of C and C++. I am going through at least the first couple chapters of K&R to get familiar with everything to at least some basic level and then I plan on skimming some of Accelerated C++ to get a handle on the differences between the languages. The main reason for this is that I believe the toughest of my three courses this fall will be conducted in C++ and I’ve never written a line of it. I’m also hoping to get some sort of skeletal web app running in Clojure on Noir. We’ll see what happens, though, as hours at work may be going up as well. Even if summer ended tomorrow I feel confident in knowing that I used many hours of it productively and made some steps toward a future in which I am a productive programmer and contributer to meaningful software projects somewhere in this world.

Software Engineering from Coursera

Update: I’ve since moved over to using Octopress to generate my static site.

Welcome to summertime, my last glorious summer as an undergrad. While I’m not taking classes, I am working a couple jobs to pay bills. However, none of my work is related to programming. As a result, I’ve been trying to figure out what I want to spend these few months studying to prepare for my classes in the fall and just generally better myself as a programmer in the build up to my job hunt at the end of the year. I considered a few options, from HTML/CSS/js to Scala (which I actually did spend a couple weeks dabbling in but have since gotten distracted) to C++ (I’m taking an upper level algorithms course using C++ in the fall so I want to be at least a bit familiar with it). This afternoon I decided to check and see what was available on Coursera over the summer and was pleased (and a bit surprised) to see a course about software engineering using Saas and Ruby on Rails.

The course is taught by Armando Fox and David Patterson out of UC Berkeley and covers a lot of topics of modern development that I find lacking in a more traditional CS curriculum. Concepts like agile and test-driven development are, at least from what I understand in my reading and observations online, certainly present in many professional non-academic environments but are not generally taught to a typical CS undergrad. They may be mentioned or even picked up by students along the way, but they don’t seem to be commonly taught in a formal manner. This makes a bit of sense since many of these higher-level concepts are worthless without a firm grasp on the programming fundamentals that are taught during a CS program. That said, it makes sense to at the very least introduce the topics to people who are about to hit the job market at which point they will be expected to either know how to use these tools and methods of software development or to be able to learn them quickly while also assimilating to a professional environment in general.

With all that in mind, I’ve decided to use the first half of the summer to go through this class in an attempt to familiarize myself with not only the core concepts of the class but also with the fringe topics that come alongside, like Ruby, Rails, and basic web design. By the end of the class I hope to have a firm grasp on contemporary software engineering paradigms, actual practice implementing these ideas, and experience with things like deployment to Heroku. I believe these skills will help supplement my classes and give me a foundation on which to build potential web applications to bolster my resumé. I’ll be tagging my posts about this class with ‘saas-class’ for now, but as I move forward I might switch blog platforms to a Rails-based system for a little more practice and experience so my tagging/classifications might change.

Here goes nothing.