Since Halloween was a few days ago, I wanted to write about a spooky topic: implementing garbage collection! I say spooky because garbage collection is one of those ubiquitous things that programmers use, but some may not understand (like shells). I’m a fan of demystifying these sorts of things, so I thought I’d share some of the experience I gained implementing it.
Read moreI know that as a college student, I’m subject to a lot of selection bias in my media and social groups. So what I’m about to write may come out of left field to many people, but I’d like to think that it may ring true to some students and professionals in the field of software engineering.
Read moreWhen I’m around friends and family I frequently get the question, “what is it exactly that you do?” I really appreciate questions like that, but they’re also really difficult to answer. Computer science is a world full of jargon, and when I start using that jargon in my explanations, it inevitably leads to blank looks. But the thing is, contrary to what some people seem to think, you don’t need to be a genius or a computer wizard to understand the basics of computer science.
Read moreThis morning my parents forwarded me an article in the Wall Street Journal, entitled “Why I’m Not Looking to Hire Computer-Science Majors,” by Daniel Gelernter (CEO of a startup called Dittach). It was an interesting read, but one that I ultimately disagreed with, enough to write about it here on my blog. Unfortunately, the article is behind a paywall, so you can’t read it without a subscription[^paywall]. Here is a brief summary of the main points Mr. Gelernter made:
Read moreEvery year at the end of freshman orientation, incoming CWRU students get to attend a “Saturday College” (SatCo) of their choice. They are opportunities to learn something new and exciting before getting into the daily grind of “real classes”. Student organizations have historically led their own SatCos to advertise themselves to the incoming freshmen. Today, Hacker’s Society led our very own SatCo, Python and Pie!
Read moreImagine that you’ve just finished an awesome program. As a programmer, you’re faced with a slightly weirder intellectual property world than most other creative disciplines. In most of those disciplines, when you create something you take steps to protect it – patent, copyright, or whatever legal protection is applicable to your creation. But in the world of software development, we have these crazy things called “open source” and “free software,” and a lot of people make their programs open source. But then we also have licenses with lots of legal language in them. For many new programmers, this raises a lot of questions, like “why would I want to make my code open source?”, “how do I make my code open source?”, and “what are all these licenses?”. This article will hopefully help answer those questions for new programmers and non programmers alike.
Read moreI’ve heard the phrase “GitHub is like Facebook for programmers” a lot. In fact, I’ve used it myself a few times when trying to explain GitHub to people who don’t program. But it’s not really accurate, so I thought I’d take the time to write a little article targeted at non-programmers to explain exactly what GitHub is. Unlike what many programmers might want you to think, it’s not too complicated.
Read moreI’m the kind of programmer that likes to implement everything myself. That’s not to say I don’t believe in other people’s work. But rather, I believe that if I do something myself, I will gain a lot more from it than if I use someone else’s implementation. For instance, I’ve implemented my own regular expression parser in C, using my very own C data structures library. Hopefully I’ll post a bit more about those in the future.
Read moreNow that exams and projects are all finished for this semester, I finally have the chance to present some of this semester’s most exciting accomplishments to the world. First on this list is YAMS. This was a collaborative course project for EECS 314, Computer Architecture. I worked with Katherine Cass, Jeff Copeland, Andrew Mason, Aaron Neyer, and Thomas Murphy in order to write an HTTP 1.0 server in MIPS assembly.
Read moreYesterday a big story was broken about Lenovo selling computers with malware, called Superfish, preinstalled. Most people are familiar with the typical crap that comes preloaded on a new computer. They are usually low quality “trial” programs that you’ll need to upgrade if you want to use them. Your computer manufacturer puts them on their computers because they are paid by the people who make these programs. But these programs aren’t usually malware. They may be crap, wastes of space, or just plain annoying, but rarely are they malware.
Read more