• Improve Software Debugging with Binary Analysis

    One of the seriously underutilized tools of the trade in the software development world, at least in my experience, has been binary analysis. We have linters, unit tests, correctness proofs, and static analysis tools to help catch bugs in our software. However, when a bug inevitably pops up that escapes all these checks, it could be hard to fix. Binary analysis can enhance our debugging toolkit by catching bugs that stem from the compiler. While most binary analysis is done in the field of security, many of those principles can be brought into normal software development to fix hard-to-detect problems as well.

  • Does Having an Anime Profile Picture Make You a Better Programmer?

    In her 2001 book Anime from Akira to Princess Mononoke, Professor Napier showed that many fans of anime work in computer science and its related fields. The survey also happened to show that “over 70 percent had a grade point average of 3.0 or higher, which is especially impressive when one considers the academic rigor of scientific fields.”

  • This is What Peak Hello World Looks Like

    Everybody’s done a Hello World program before. But now that I’ve got a few years of experience with the language, I set out to ask one of the most pressing questions out there - how do we make Hello World in C as convoluted and hard to understand as possible? This post documents the final result of a sleep-deprived me trying to do exactly that.

  • Figuring Out Where and When You Are, Except it's in Space

    Space is huge - our entire solar system is about 9.09 billion kilometers in diameter, and at those scales even the radius of the sun at 695,508 seems tiny in comparison. So how is it that we can communicate with probes like New Horizons, 4.5 light-hours away, with unerring accuracy?

  • An Analysis of the LEGO City Deep Space Rocket

    The LEGO City Deep Space Rocket and Launch Control is a “modular, multi-stage rocket with cockpit, booster and payload storage modules.” Prominently featured on the page are images of the launch control tower, launchpad, and various extra equipment such as a lunar rover. But can this rocket really fly?

  • Dissecting DNS Packets at Line Rate

    A couple months ago, my advisor asked me if I wanted to develop a small part of the DDiDD project, which would check incoming DNS packets and reply to any packets with an invalid domain automatically, which would free up the DNS server from responding to those. Sounds simple, right? There’s one catch - the packets needed to be processed at line rate, which in my case meant 40 gigabits per second.