Recursive ascent is an obscure parsing technique I researched about a few years ago. It’s an interesting approach to bottom-up parsing, the parsing method used by parser generators like Bison or ANTLR . If you’re familiar with recursive descent parsing, recursive ascent parsing is the bottom-up version of it. 1. This blog post by Russel Johnston about implementing a JSON parser in Rust using…
Over the past few months, I rewrote most of my test suite. It was a cleanup effort as well as a chance to rethink how I approach testing, something I’ve been neglecting for most of my programming career. 1. Only the tests were slop, I actually put a lot of thought into the code itself! ↩︎ There were two main reasons for rewriting my tests. The first reason was that the codebase I’ve been working…
This post walks through a small web development project using Clojure, covering everything from building the app to packaging and deploying it. It’s a collection of insights and tips I’ve learned from building my Clojure side projects, but presented in a more structured format. 1. The way Fly.io works under the hood is pretty clever. Instead of running the container image with a runtime like…
I’ve recently had the chance to work on an “automatic CLI login” feature for a CLI tool at my day job. What I mean by automatic CLI login here is when a CLI tool automatically logs in a user, so it can perform actions on behalf of the user. It usually works like this. When you type a command like cli login in your terminal, a login page will open in your web browser. After you log in, the page…
1. I failed my first attempt horribly with Clojure during Advent of Code 2023. Once I reached the later half of the event, I just couldn't solve the problems with a purely functional style. I could've pushed through using imperative code, but I stubbornly chose not to and gave up... ↩︎ This post is about six seven months late, but here are my takeaways from Advent of Code 2024 . It was my second…