Welcome!#

Hi! My name is Elias Prescott. I am a Christian, husband, father, and a professional programmer. I love to learn new things and improve myself.

Articles#

  • Misusing Mix – January 13, 2026

    Mix is Elixir’s official package manager. It works great and I always took it for granted until I was working on a Phoenix project and I saw this dependency in my mix.exs file:

    Keep reading...

  • Parsing Bible References with PEGs – January 07, 2026

    I previously wrote about Parsing Bible References with Python, but I wanted to document a simpler method. One of my favorite Lisp(-like) languages is Janet, and Janet has a “Parsing Expression Grammar” (PEG) module. The short explanation is that PEGs are like Regexes on steroids. You can find a more in-depth explanation in the Janet docs.

    Keep reading...

  • Automate Your Documents with Typst and Nix – January 07, 2026

    With just three tools, Typst, Nix, and Git, you can define exactly how you want a document laid out, exactly how you want it compiled, and exactly how it changes over time.

    Keep reading...

  • Use Nix to Build Nix – November 22, 2025

    Imagine you were using Nix’s C Bindings to prototype little programs that use Nix, but you really wanted to use nix_get_attr_byname_lazy which was only introduced in 3d777eb37f. What would you do? Well it turns out, you can just use Nix to build the latest version of the Nix bindings.

    Keep reading...

  • Zig Development on the Edge with Nix – November 19, 2025

    Zig has been undergoing some major changes in how it handles IO and async/await code recently, but not all of the changes have been officially released yet. I wanted to play around with the changes, but I didn’t want to download and install Zig, and build the Zig language server (ZLS) from scratch manually. So, I am going to use Nix to do the legwork for me.

    Keep reading...

  • Boolean Config Languages in Under 100 Lines of Code – October 30, 2025

    I made SchedLang which is a config language for defining date scheduling patterns. It provides various primitives for checking parts of a date (e.g. checking the month is January, or the day of the week is Sunday, etc…), but it also provides boolean combinators for building larger patterns.

    Keep reading...

  • Composable NeoVim Configs with Nix – October 28, 2025

    If you define your NeoVim config in Nix using Nixvim, then you can compose it with other people’s configs. Here is a minimal Nix flake that shows how you can use my NeoVim config, while overriding the colorscheme to your own preference:

    Keep reading...

  • Parsing Bible References with Python – October 16, 2025

    I like reading the bible and writing about it, but I don’t like manually copying and pasting bible verses. So, I write little parsers that can take a bible reference (e.g. “Genesis 1:1 (ESV)”) and convert it into the referenced verses.

    Keep reading...

  • Putting Agency Back in My Design Process – September 26, 2025

    I have been thinking about how Stephen Meyer said that top-down design implies intention or agency (source). I want to look at how that applies to my approach in software design, because I think my recent design work has unfortunately lacked agency. My knowledge of programming leads me to a systems-level or a bottom-up design process, but that design process struggles due to mathematical reasons.

    Keep reading...

  • Making Memes with Typst – July 19, 2025

    I’ve been having fun using Typst to make various documents, and the thought struck me that I should try making a meme with it.

    Keep reading...

  • Making a NeoVim Clone with Ruby – May 06, 2025

    I’ve been learning Ruby recently. I’ve really been enjoying it and I’ve been reading through the Ruby docs quite a bit. When I found this section on io/console, I thought it sounded like fun. Since I have grown quite attached to using NeoVim as my editor, I thought it would be fun to make a NeoVim clone.

    Keep reading...

  • Study of Ephesians Chapter 2 – May 01, 2025

    To set the stage, as I go through some of Paul’s more minor books in the New Testament, I am trying to focus on how Paul affected the shape of the modern church, but also how he affected modern society. I am influenced in this idea by books such as The Air We Breathe by Glen Scrivener and Dominion by Tom Holland (the historian, not the actor who played Spider-Man).

    Keep reading...

  • Simple SQLite Backups for Rails 8 with SSHKit – April 28, 2025

    This won’t be a long post, I just wanted to record something I struggled with for a little while. I recently made a quick toy app using Rails 8 as a learning experience. I don’t actually need database backups since this is only a toy app, but I thought it sounded like a fun project that wouldn’t take too long.

    Keep reading...

  • From GUI to TUI: My Journey with git – March 29, 2025

    For any non-programmers reading this, I am not using the word git in the pejorative sense. Git is a distributed version control system. Essentially, it is a tool that developers use to store code and coordinate their work.

    Keep reading...

  • Study of Philippians 2:12-30 – March 27, 2025

    To start off, we can refresh our memories of where we are in Philippians. Paul is writing this book from prison, likely in Rome, Caesarea, or possibly in Ephesus. Despite his imprisonment, Paul has spent much of Philippians writing about joy. He is modeling the attitude that we should have as Christians. No matter what hardships this life may bring, nothing can take away that joy.

    Keep reading...

  • Integrating a Music Player into NeoVim – March 27, 2025

    A while back, I wanted to start listening to my music playlist from the terminal (as one does). So, I looked around for different music TUIs and I eventually found mpv. I enjoy using mpv, but I wondered if there could be a way to integrate it in my NeoVim setup. The answer, as it usually is with NeoVim, is yes you can, but you probably shouldn’t.

    Keep reading...

  • Working with OCaml expect tests in NeoVim – March 25, 2025

    This is just a quick note and not a full-on post. I’ve been playing around with inline expect tests in OCaml using the ppx_expect library. The way these expect tests work is that they will capture stdout from select parts of your test function, then they will either store that as their value if you are running it for the first time, or they will compare the output against their stored value. If the new output is different from the stored output, then dune will give you a nice diff and tell you that it stored a corrected version of that file.

    Keep reading...

  • Making a Database with OCaml – March 24, 2025

    I’ve been playing around with OCaml recently and really enjoying it. I love functional programming and have also enjoyed playing around with F#, Elixir, and Haskell in the past, but I’ve never gotten super far with any of those languages for various reasons. So, I wanted to take on a more serious project to really kick the tires on the language and start building some deeper knowledge.

    Keep reading...