It’s no surprise, but this project has been challenging and rewarding. I knew learning the syntax and structure of code would be a challenge, but what I did not expect was the challenge of thinking through a problem in a way that code (and computers) understand. It’s been great for both my own technical education and for my teaching but it has definitely been both frustrating and invigorating.
Knowing just that little bit about what goes into writing good code makes this collection of Lines of Code that Changed Everything so interesting.
It feels like “knowing code” is something that is only important to nerds, but today that’s not true. The introduction from the article lays it out pretty well:
Code shapes our lives. As the venture capitalist Marc Andreessen has written, “software is eating the world,” though at this point it’s probably more accurate to say software is digesting it. Culturally, code exists in a nether zone. We can feel its gnostic effects on our everyday reality, but we rarely see it, and it’s quite inscrutable to non-initiates…One clear trend illustrated here: The most consequential code often creates new behaviors by removing friction. When software makes it easier to do something, we do more of it.
Some of the code snippets that are talked about here I was not at all familiar with, like Spacewar! (the first computer game), and the Vancouver Stock Exchange rounding error (truncating a decimal has a much different result than rounding).
Lots of them, though, I do know about – either due directly to the development work I’ve done for the past two decades or just by hearing about them indirectly due to their (mostly negative) effects.
For example, keeping up to date on security issues in computing has led to hearing about buffer overflow attacks. While I have a general idea of what they are, this articles short description explains the concept well without being too technical:
There are two primary ways that programming languages represent a piece of text: It can have an intrinsic, explicit length—“I contain exactly 10 characters and no more.” Or it can be null-terminated—“Here are a bunch of characters, keep going until you hit the zero-byte at the end, good luck!” An extremely common mistake in C code is to copy a long string into a shorter string and overflow the end, meaning you are destroying other data that just happened to be nearby. It’s like scribbling past the edge of a whiteboard.
There are several on here that I know quite well, like the robot.txt file, HTML hyperlinks, and the ever-popular Hello, world! introductory program. But two of these code examples have combined to create lots of issues over the past 5-10 years.
I’m talking about the tracking pixel (a 1×1, often invisible, image used to track you around the Internet) and the Like button.
As the article points out, the tracking pixel is the cornerstone of digital advertising:
[W]eb designers used transparent one-pixel images to adjust page layouts. But a computer has to download every image on a webpage—even one imperceptible pixel. In 1993, companies started capitalizing on this: By tracking pixel downloads, they learned who and where you were, and triggered a cookie to be downloaded to your browser. That cookie enabled advertisers to follow you across multiple sites.
These pixels (and the 3rd party cookies they download) are now incredibly common. They are used by most major advertising platforms (like Google and Facebook) to track you around the Internet. The tracking pixel also led to Facebook’s Like button:
Facebook sold the “like” button as a way to show the world we liked The Simpsons or curly fries. But in reality, it took advantage of our cognitive biases and the power of design to goad us into sharing even more information. It followed us around the internet—thanks to the tracking pixel Sara Wachter-Boettcher described above—collecting data on our browsing habits. Facebook then took that information and sold its behavioral targeting algorithm to advertisers.
Facebook isn’t the only company engaging in highly-targeted advertising like this, of course, but they are one of the best at it. And while I don’t think Facebook should necessarily stop doing this kind of targeting, I think it’s very important that people realize what happens behind-the-scenes when they engage with massive data-collection entities like Facebook.
Check out the whole article over at Slate.com. In addition to the pieces of code I’ve mentioned, there are lots more – RSS (I am a fan!), various worms and viruses (including Heartbleed, Conficker, Morris Worm), Bitcoin, Google’s PageRank algorithm, pop-up ads, Roomba’s guidance system, and others. If you’re at all curious about the technology that is shaping your life, it’s worth a read!