• Where does Liyue's food supply come from?

    Liyue is a fictional nation in MiHoYo’s 2020 ARPG Genshin Impact. In-game, the nation consists of a large amount of uncultivated wilderness and ruins, in which the player spends most of their time. However, three more locations of importance also includes a large city, a border crossing, and an inn built into a tree.

  • Tweeting with LaTeX

    Some time ago, I stumbled across WolframConnect, a set of libraries for Mathematica that supported posting and querying from a bunch of social media sites. So I tried it on Twitter, and it worked pretty well. However, apprently apathetic to this discovery, someone mentioned that “I’ll be impressed when I can tweet in LaTeX.” I believe I can impress him.

  • Examining Air Pollution in Los Angeles

    Study after study has shown the relationship between environmental pollution and the population’s wealth and race. For example, Andrew Hurley’s study of pollution in Gary, Indiana found that “The skewed social distribution of toxic waste sites represented the most marked example of an environmental regime that discriminated along the lines of race and class” (Hurley 172). Another study of the same effect in a Chinese province showed that “townships in Jiangsu province with large populations of rural migrants are disproportionately exposed to industrial pollution” (Schoolman). The effect wealth has on a person’s environment is an effect that reaches across cultures and countries. However, very few have examined these effects in Los Angeles county. Thus, we will take a look at the pollution levels around various areas of the county and examine if the same effect will be present here, and speculate on the causes of it.

  • 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.