Fall 2011 Semester In Review

In August, I started graduate school at the University of Colorado at Denver, joining their PhD program in Computer Science and Information Systems with a focus on Theory and Algorithms.

This return to school was the first time since I graduated from the University of Rochester that I attended actual classes on a campus (my Master’s program was entirely distance learning). I wanted to record some of my thoughts about returning to school, since it’s been such an adjustment for me.

University of Colorado at Denver

The University of Colorado at Denver turned out to be exactly the kind of school I wanted.

The University of Rochester was a great school, considered to be one of the “New Ivy” institutions. The Computer Science program was very intensive there, and I was barely able to survive a few of my classes. This was good for me as an undergrad – that was the right time in my life for an extremely intensive program, since I was in school full-time and focused on nothing else. These days, however, I’m a full-time Software Engineer professionally, and I didn’t want to be part of such an intense program for graduate school. I went back to grad school for fun, not for my career, and I wanted a program that would not burn me out due to difficulty. Often I found undergrad classes so difficult that I was unable to comprehend some material, leaving me to feel lost, like I was missing out on interesting stuff because I couldn’t understand it before moving on. I wasn’t interested in that kind of experience.

My master’s program with Regis University, on the other hand, was too far at the opposite end of the spectrum. Since it was online and largely self-taught, I didn’t have much interaction with academics, professors, or even other students. Often I wouldn’t bother doing the readings, and there were very few actual assignments (usually just a few projects per course). In short, I felt like Regis was too easy, and I was often bored while attending. I really enjoyed my thesis work, but the actual courses were so low-key that I was able to get straight A’s without really focusing on school, which reminded me way too much of high school.

I wanted something that would challenge me enough to keep me engaged, but not so challenging as to frustrate me. I wanted actual lectures, homeworks, and exams, but I didn’t want them to be so difficult that I felt lost with the material. This is precisely what I found at the University of Colorado at Denver.

Continue reading ‘Fall 2011 Semester In Review’ »


Scala First Impressions

A few months ago, my co-workers and I converted a central part of our codebase from Java and Groovy into Scala. Though I am, by no means, a Scala expert at this point, I wanted to share some of my initial thoughts on the programming language.

Writing this blog post is probably a mistake. A few years ago I shared my thoughts on Ruby after a similar amount of time using it. When I went back and re-read that post to get the link for this one, I was stunned. I don’t even remember disliking Ruby at any point. Today, Ruby is one of my favorite programming languages, and the tool I reach for most readily for almost any project outside of work. I still love Python as I did in that post, but my view of Ruby has, apparently, completely changed.

Nonetheless, I have some thoughts on Scala and because I have a blog, I suffer from the delusion that there are people who give a shit what I think about it.

As with any “first impressions” post, it’s entirely possible I will literally discover something that invalidates my complaints tomorrow (maybe even in a comment on this post), so take this with a grain of salt.

Continue reading ‘Scala First Impressions’ »


Brace yourselves, what follows is an amazingly long blog post about Star Wars.

I’ve already discussed how I’m not a huge fan of the various modifications made to the original Star Wars trilogy, so it’s reasonable to assume I’m not a big fan of the prequel trilogy either. There are many people who dislike the prequel trilogy so much that they don’t even consider watching them. On bad days, I’m one of those people, but on good days I see some value in the prequel trilogy, even though I consider them inferior in virtually every way.

For people that couldn’t care less about the prequel trilogy, I suggest Harmy’s Despecialized Editions. They are 720p blu-ray discs (AVCHD discs actually) that are the result of “Harmy” from The Original Trilogy forums painstakingly reconstructing the theatrical releases of all three films utilizing a wide variety of video sources as well as custom mattes. Downloading, burning, labeling, and printing cases for these films is one of the neckbeardiest things I’ve done (aside from writing this blog post), and I’m extremely glad I did it. When I feel like watching Star Wars for just me, these are the ones I watch. If that’s enough for you as well, stop reading now.

Harmy, king of nerds

Continue reading ‘The Star Wars Saga: Suggested Viewing Order’ »


The graphs $$K_5$$ and $$K_{3,3}$$ are two of the most important graphs within the subject of planarity in graph theory. Kuratowski’s theorem tells us that, if we can find a subgraph in any graph that is homeomorphic to $$K_5$$ or $$K_{3,3}$$, then the graph is not planar, meaning it’s not possible for the edges to be redrawn such that they are none overlapping.

K5 and K3,3

Of course, this theorem relies on the fact that $$K_5$$ and $$K_{3,3}$$ are, themselves, not planar. While it’s pretty easy to see $$K_5$$ is not planar, $$K_{3,3}$$ is a bit more involved. I’ve read a lot of proofs of this, but frankly I found most of them sorely lacking. Here I try my hand at providing a clearer proof than what you may find elsewhere. Hopefully my explanation will make things click for a Googling student.

Continue reading ‘Why The Complete Bipartite Graph K3,3 Is Not Planar’ »


I Broke Your Code, And It’s Your Fault

One of the most enjoyable parts of my last job was that we hired a lot of junior developers and interns. I really enjoy working with younger people than me, because they’re as eager to learn new things as I am. I also really enjoy discussing technical things with them, largely for selfish reasons: explaining something to someone else makes me understand that thing much better.

One particular intern on my old team was a lot of fun for me. The company was the first place he worked since graduating with his B.S. in Computer Science. The things he said were so similar to things I said when I first graduated, and his approaches to problems reminded me so much of my own approaches to problems eight years earlier that it bordered on creepy.

One particular exchange between him and I stood out in my mind. It was exactly the conversation that 28-year-old me would have had with 20-year-old me.

Him:
Arggh, the other team changed the interface of something my code is using, and now it’s broken.
Me:
So? Just fix it.
Him:
I will, but it’s annoying. I mean, if they had just started the application they would have seen it’s broken. They’re so stupid.
Me:
Wait, it breaks right away?
Him:
Yeah, you get an error when you hit the front page. The front page!
Me:
Then they aren’t the ones who are stupid. We are.

Continue reading ‘I Broke Your Code, And It’s Your Fault’ »