programming

[11] Setting Up a Supercharged Neovim Configuration

21 minute read Published: 2024-10-13

Over the summer, after finally getting around to learning Vim motions (see blog post #9), I quickly fell down the Neovim rabbithole and have been procrastinating work by tinkering away at my configurations ever since! This post will be sharing setup that I have currently landed at to turn my Neovim editor into a supercharged workhorse.

[10] A Deep Dive into SQLite's Query Optimizer

17 minute read Published: 2024-08-27

I love databases, but they are still largely a magical black box to me, so in this post, I'm going to explore how SQLite's query optimizer works. We'll delve together into the process of how SQL queries are parsed, optimized, and executed, with a particular focus on the optimization phase. By the end of this post, you'll have a better understanding of how SQLite's query optimizer works and how it can help you write more efficient queries.

[9] vimtutor-sequel: The Extended vimtutor

4 minute read Published: 2024-08-04

The vimtutor program is the essential starting point for anyone looking to learn the basics of using Vim. In as little as a half hour, you can learn 90% of what you'll ever need for vim, however, there are many useful motions and commands that are left out of the program. This article details the simple software package I wrote to address this limitation, vimtutor-sequel.

[7] An Optimistic Take: AI's Augmentation of Software Professionals

11 minute read Published: 2024-07-19

No doubt you've heard it before: "AI will make programmers obsolete" or "AI will take your job." But is this narrative accurate? News stories like Cognition AI's Devin, albeit found to be categorically a hoax, have nonetheless fueled fears among software professionals about the future of their careers. However, the most current look at the state of AI in software development suggests a more nuanced and hopeful future.

[6] How Do Software Packages Work?

8 minute read Published: 2024-06-04

How do software packages work behind the scenes? How are they created, distributed, and installed? In this post, we'll explore the lifecycle of software packages, from creation to installation, using the Node Package Manager (NPM) and the Autoprefixer package as real-world examples.

[5] Bloom Filters: Space-Efficient Probabilistic Data Structures

8 minute read Published: 2024-05-25

In the realm of computer science, efficiency is often the key to solving complex problems. One elegant solution that stands out for its efficiency is the Bloom filter. Despite being relatively lesser-known, Bloom filters offer a powerful method for determining set membership while using minimal space. This post explores what Bloom filters are, how they work, their applications in various fields, and compares them with other data structures.

[4] WebP: A Case Study in the Hidden Vulnerabilities of Image Formats

8 minute read Published: 2024-05-13

Hacked by an image? How could that be possible? This is the story of how a seemingly innocuous image format, WebP, was discovered to have a critical vulnerability that could be exploited to execute arbitrary code on a victim's machine.

[3] Ingenious Algorithms We Take for Granted: PageRank, Spell Checkers, and Shazam

14 minute read Published: 2024-05-06

Algorithms are all around us. They are the invisible forces that power our modern world, from the search engines we use to find information to the social networks we use to connect with friends and family. In this post, I share some ingenious algorithms that I have learned about both in courses and through my own research.

[2] Biggest Takeaways from The Missing Semester of Your CS Education

9 minute read Published: 2024-05-05

Nearly a year ago, I took an online course called The Missing Semester of Your CS Education. The course was created by a group of MIT students and covers a wide range of topics that are often overlooked in traditional computer science curriculums. The course is designed to help students become more productive and efficient programmers by teaching them essential skills that are not typically taught in school.