Hi, I’m Phineas

I’m a husband, father of two girls, a Christian, a software engineer, a recreational language-learner, and many other things. I work for Deloitte on public health software for state governments. I’ve been programming semi-professionally since I was 12 years old or so, with most of my experience in JavaScript, Java, HTML, CSS, and SQL (specifically PostgreSQL, which I adore). I’ve been teaching myself Rust and Kotlin (for Android development) on the side.

I love languages and linguistics. I speak Persian, some Turkish, and I’m learning German.

Right now I am:

When I get free time, I like to read or listen to books, run, hike, or work out at the gym, play guitar, play video games, or just spend time with my family.

Recent posts

Favorites of 2024

December 31, 2024 — 7 minute read — neovim, books, music, movies, tv, games
Podcasts—Books—Movies—TV—Music—Video Games—Technologies—Articles—Experiences

Goals: December 2024

December 18, 2024 — 2 minute read — goals
Advent of Code—Avoiding social media

TIL: Exporting Spotify Playlists to YT Music with jq and read

August 3, 2024 — 3 minute read — til, cli

Wrong Map of Europe

June 11, 2024 — 10 minute read — geography
Map—Wrongnesses

Making the State Department Travel Advisory Map Better

March 1, 2024 — 3 minute read — typescript
Annoyance—Idea—Implementation

Solving problem 1 of Advent of Code 2023 in x86 Assembly

January 20, 2024 — 17 minute read — assembly
Reminiscing on a favorite class—A bright idea—A simple plan for a simple problem—Choosing an assembler and syntax—A tour of the program

Favorites of 2023

December 22, 2023 — 7 minute read — neovim, books, music, movies
Podcasts—Books—Movies—Music—Video Games—Technologies—Articles—Experiences

Recently I Learned: (Neo)Vim

June 3, 2023 — 6 minute read — vim, neovim
Moving a line to the top, middle, or bottom of view—A shortcut for match in s///—Replacing newlines with literal carriage returns—Quickly diffing files

For End Point: 3 useful built-in objects and functions in JavaScript

June 15, 2022 — 1 minute read — javascript
The Set object—Parsing and formatting parameters with URLSearchParams—Some of the great Array.prototype methods

RustyRender: Bresenham’s line-drawing algorithm (lesson 1)

June 12, 2022 — 14 minute read — rust, graphics
Naive line drawing attempts—Dealing with steep lines—Premature optimization—Bresenham’s algorithm with integers—Rendering a wireframe

RustyRender: a tinyrenderer implementation in Rust (lesson 0)

May 21, 2022 — 14 minute read — rust, graphics
Finding tinyrenderer—Choosing Rust—Porting the TGA library—Structs as raw bytes

For End Point: Docker and containers boot camp

May 16, 2022 — 1 minute read — docker, containers
What are containers?—Docker’s tutorial and reference documentation—Other tools

For End Point: Migrating a Node.js app database from MongoDB to PostgreSQL

February 25, 2022 — 1 minute read — javascript, postgresql, mongodb
Learning MongoDB—Problems with complex queries—Pros and cons of MongoDB and PostgreSQL—A brief overview of our chosen libraries—Migrating data and schemas