Hi, I’m Phineas

I’m a computer science and linguistics student at Brigham Young University. I’ve been programming semi-professionally since I was 12 years old or so, and I’ve worked primarily with web technologies and languages, such as JavaScript, Python, HTML, and CSS. I also have experience with C, C++, and Rust; I’m excited about Rust especially.

My interest in linguistics is more recent: I studied several languages at a very surface level throught my childhood, and learned Persian (Farsi) and a bit of Turkish and Bulgarian as a missionary for the Church of Jesus Christ of Latter-day Saints in Bulgaria. Learning these languages was so fun and exciting, I added linguistics as a second major shortly after returning to the US.

Right now I am:

  • Taking a number of classes at BYU, including the engineering capstone class as a member of the university’s Mars Rover comptetition team, where we are preparing to compete in the 2024 competition.
  • Working on SeeYouLater, a personal bookmarking app/server.

When I can find the time, I like to read or listen to books, run, hike, or otherwise exercise, play drums or guitar, or play video games. I also love spending time with my wife Alayna, who is much cooler than I am, and my beautiful baby daughter, who was born in 2023.

Recent posts

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