RSSAmplifier

Blog

Ryan Martin's Blog

ryanmartin.meRSS feed ↗5 posts

Latest posts

Understanding Recursive Ascent Parsers

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…

Rewriting My Tests With Generative Testing

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…

Build and Deploy Web Apps With Clojure and FLy.io

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…

How to Implement Automatic CLI Login

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…

Advent of Code 2024 in Zig

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…