RSSAmplifier

Blog

Micah's Secret Blog

An assortment of my ramblings and random adventures.

micahkepe.comRSS feed ↗18 posts

Latest posts

jsongrep is faster than {jq, jmespath, jsonpath-rust, jql}

This article is both an introduction to a tool I have been working on called jsongrep , as well as a technical explanation of the internal search engine it uses. I also discuss the benchmarking strategy used to compare the performance of jsongrep against other JSON path-like query tools and implementations. In this post I'll first show you the tool, then explain why it's fast…

That Time Ken Thompson Wrote a Backdoor into the C Compiler

When Ken Thompson won the Turing Award jointly with Dennis Ritchie for their work in UNIX, he was expected like other Turing winners to write a paper that would be published in the ACM Computer Journal. What he ended up submitting was a paper about "the cutest program [he] ever wrote"-- a sneaky undetectable self-reproducing "Trojan horse" backdoor in the C compiler that would allow him to log…

Setting Up a Better tmux Configuration

tmux is a beast of a tool that I found to be indispensable for my personal developer workflow, but there are a few things that I have added to my tmux configuration to enhance the out-of-the-box experience.

Git Gud: Setting Up a Better Git Config

There's tons of little goodies you can add to your .gitconfig to make your life easier. From hidden gems in the git Man pages to aliases and shell functions, here's a few things I've found useful to reduce friction in my Git workflow.

Let's Build a (Mini)Shell in Rust

In a little over 100 lines of Rust code, we can build a simple shell program that can execute commands, supports piping, handles signals, and maintains command history. This tutorial will guide you through the process of creating a minimal shell, which we will call "minishell", using Rust's powerful standard library and some external crates.

I Switched to a Split Keyboard: Here's Why

I've ditched my traditional keyboard for a split keyboard. Here's why I made the switch and how I'm finding it so far.

Using Bash, Unix Tools, and Hammerspoon to Speed Up Your Workflow

With just a basic working knowledge of writing Bash scripts and understanding Unix tools and their design philosophy, you can easily create scripts to automate your workflow and improve your productivity. In this post, we'll get our feet wet in writing Bash scripts and combine them with some powerful Unix tools to create a powerful and versatile toolset. We'll also explore how you can…

Building a Godot Game! The Making of '43 Monkeys'

As part of my design course requirements at Rice University, I will be creating a game in a group of 4 ( and more! ) using the Godot engine over the upcoming semester. This blog post will serve as a progress log for the game's development and hopefully provide some good insights into the game development process from someone who has never made a game before.

Setting Up a Supercharged Neovim Configuration

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.

A Deep Dive into SQLite's Query Optimizer

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…

vimtutor-sequel: The Extended vimtutor

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 .

An Optimistic Take: AI's Augmentation of Software Professionals

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…

How Do Software Packages Work?

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.

Bloom Filters: Space-Efficient Probabilistic Data Structures

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,…

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

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.

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

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.

Biggest Takeaways from The Missing Semester of Your CS Education

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…

Congrats! You've found my hidden blog!

Congratulations! You have found my "secret" blog- you must have been snooping around. It is a hidden gem that only the most curious and adventurous visitors will discover.