Fare Hacking on BART

23 July 2016

Imagine that you’re taking a long train ride on the BART. Maybe from Millbrae to North Concord. Chances are, at the very same moment, somebody else is going the other direction. For example, maybe from Pittsburgh/Bay Point to San Bruno. In case you haven’t memorized BART’s stops, here’s a useful map illustrating these rides:

Read more

Authentication with Hash Chains in C

19 June 2016

One of my silliest long-running projects is a chatbot called cbot. All it does is connect to an IRC (Internet Relay Chat) server, and respond to people’s messages. For instance, if you greet it, it will greet you back. If you insult it, it will send you a poorly-constructed comeback. Obviously there’s nothing groundbreaking about it - there are other chatbots that are much better. I made cbot because I wanted to learn some new concepts (specifically the IRC protocol and dynamic loading), and it was really helpful for that purpose. Plus, it’s another project in C, and I like projects in C!

Read more

Academic Dishonesty

29 March 2016

Last night I had a sobering experience. A faculty member from another university sent me a message letting me know that some of their students had turned in modified versions of my shell, lsh, for a homework assignment. Maybe I shouldn’t be too surprised. Writing a shell is a very common assignment for computer science students. My tutorial based on lsh has somehow managed to climb the ladder to the first page of search results for many queries related to writing shells. So at the end of the day, I guess this was bound to happen. And even though I can’t really be held responsible for what other people do with my tutorial and code, I feel pretty bad about this. Although there’s not much I can do to prevent students from presenting my shell as their own, I feel like I should point out why it’s such a terrible idea.

Read more

Confessions of a Geek

16 March 2016

During spring break I had an odd experience. I found all four of my high school student ID cards, complete with my school picture from each year. When I showed them to a few friends, they all remarked on how little my face has changed since then. For reference, the picture I use on the front page of this website is a high school senior picture, nearly four years old. Not only do I look pretty much the same now as I do in that picture, even my freshman year picture looks about the same. So over the course of seven or so years, it seems that my appearance—or at least my face—hasn’t changed that much. Oh well.

Read more

Logging in With Requests

02 March 2016

One of my favorite types of quick side projects are ones that involve web scraping with Python. Obviously, the Internet houses a ton of useful data, and you may want to fetch lots of that data to use within your own programs. Python has a few excellent tools which can be combined to create a powerful, easy to use system for quickly harvesting this data from webpages. I’ve used Python’s web scraping tools for fun projects like downloading music lyrics, and then using that to make a Twitter bot that replies to you with Taylor Swift lyrics. But these tools could also be useful for serious projects, like aggregating course enrollment or evaluation data from your college. So how would you go about simple web scraping in Python? Let’s dive in!

Read more

Goodbye, Hello!

17 February 2016

Regular visitors to my site (if there are any!) may have noticed that, starting today, is redirecting to a new domain name, This change was motivated by a few reasons:

Read more

HackCWRU 2016

14 February 2016

HackCWRU 2016 has finally come and gone. I’m up late, since staying up for 30+ hours kind of messed with my sleep schedule. This year, we had over 500 people sign up, and around 180 people in attendance (but citations are really needed here - I don’t have the official counts). I had a ton of fun, and there’s a lot to say about the good times had at HackCWRU 2016. But, I think those have already been written very well by Andrew Mason in his wrap-up blog post. So, go read that instead of reading a blog post by me!

Read more

The Two Sides of Computer Science Education

20 January 2016

People say that “hindsight is 20/20.” And to a point, they’re right. When you look back at your past experiences, you see them clearer than you have before. Typically, it’s a bit reactionary; you emphasize the very bad parts and the very good parts. They play a much bigger role in the opinions you form as a result of your life experiences. This isn’t good or bad itself, it’s just part of how you think of the past.

Read more

Computer Science Fundamentals: Algorithms

15 December 2015

Welcome to the second article in my “Computer Science Fundamentals” series! These articles are all about demystifying computer science. While they’re not going to make anyone an expert on computers, I’m hoping that they will help people understand what computer science is about. You can read the previous article (about programming) here if you haven’t already.

Read more

An Ode to TI Basic

22 November 2015

This Thanksgiving, I’m thankful for a lot of things: for being in school majoring in my favorite subject ever, for landing an awesome internship at Yelp, and a whole lot more. But I’m also pretty darn thankful for the little things, like having a halfway decent programming language and a computer.

Read more

Creative Commons License

Stephen Brennan's Blog is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License