The curiosity journal of a technical creative.

The author at a campfire

About me

I'm Eric, a software engineer who likes to write. This blog captures my small experiments in math, physics, procedural generation, Clojure, and personal software tooling. I like hard science fiction (both reading and writing) and streamlining my workflow, but I also enjoy thinking on paper, which I do daily homeschooling my four kids. I live in West Michigan and am currently building Two Ravens, a local-first app for personal analytics.

Personal statistics platform

I switched my zettelkasten to Obsidian several years ago, and I've been pretty happy with it except that, in addition to notes, I tend to track a lot of personal statistics that in a zettelkasten are at best distracting minutiae and at worst big blobs of GeoJSON that crash the app. For example, when did I pay a bill? When did I change the oil in my car? That transforms Obsidian from a second brain into a plain old database, and one that's not natively very good at visualizing the data stored in it. Bases can store information in separate notes, and Dataview can extract information from inside notes, but visualizations like calendar heatmaps require plugins and often custom code. Before I used Obsidian, I kept a set of text files in which I kept a DSL for logging these statistics, but visualization was still awkward, and often I didn't remember exactly what information I tracked for a given stat. Did past entries record what account I paid the bill from? What order do I put the function's arguments in, or what did I call the map fields? When I chose to use AI to make a non-trivial tool, I decided to make something that would address these problems, with smoother data entry and built-in visualization, so I could get these noisy personal statistics out of my Obsidian vault and let it focus on more unique content. ... Read more →

Learning to vibe code

I've been learning to vibe code over the last few weeks, not because I've given up on programming and what I can learn from it, but because I have other projects that I bring more personal value to than the exact implementation of another database interface. To date I've been skeptical of vibe coding. Writing code has been part of my thinking process, and I doubted I would want to specify requirements as messy English prose instead of exact programming statements. But this project is heavily UI, at which I'm not fast at, so I decided to experiment with stepping back into a product owner role and using Claude Code as my development team. Unexpectedly, I've enjoyed it, and the LLMs haven't gotten as tripped up on their code as I expected. Maybe they've gotten more sophisticated. I certainly am not doing anything elaborate. The results so far have suited my needs, both in freeing my attention and in the quality of an app I now get to use. I only have one data point, but here are my best guesses on what contributed to having a better experience. ... Read more →

PocketMod wallet

Earlier this week I wrote about a slim pocket notebook cover I 3D printed from TPU filament. That notebook tends to be more longer notes, full sentences, paragraphs, and more exploratory mathematical diversions. For smaller-form notes, like names, to-dos, and quick calculations, I use a PocketMod. ... Read more →

TPU pocket notebook cover

I was under-challenged in high school, so to occupy myself I started writing. A letter-sized sheet of printer paper folded into quarters fit nicely in my back pocket and let me write even when I wasn't at my desk, such as during school assemblies. I never really got more sophisticated at writing on the go. I've tried pocket notebooks like Field Notes, but I struggle to mar the pristine pages with scrawled to-dos, quick math, and other jots I don't need past today, so nicer notebooks ride around in my pocket unused so long that they disintegrate. Rarely do I require several dozen blank pages, and long-term references I keep digitally, where they're backed up. Thus, a single piece of paper is most of what I need to get through the day.The problem, of course, is that a single piece of paper shoved repeatedly into a pocket doesn't last long enough to be filled. It gets rumpled until it's no longer nice to write on. To get some protection for such sheets, I wanted something thin and lightweight to fit in a pocket, but flexible so I wouldn't notice it. For half a year now, the job has been done by the cover part of this 3D print. ... Read more →

US interstate system as minimum spanning tree

I had a dream in which the Eisenhower interstate system was designed as a minimum spanning tree. Less pavement, I guess, but more driving.To quantify that assessment, Wikipedia reports that the US interstate highway system is 48,890 miles of road and that it was originally proposed to connect all US cities with a population of over 50,000, though the Smithsonian National Museum of American History says 100,000. According to this Wikipedia page, there are 330 cities of more than 100,000 people in the 2020 census. Here's a minimum spanning tree of those cities, excluding those in Alaska and Hawaii: ... Read more →

Posts by topic

Product development

Personal statistics platform

Web development

Two Safari bugs

Taxicab Geometry

Circles of Apollonius