Noteworth Apps
Here’s a few of my fun apps I’ve tinkered on over the years. If you’re interested in learning more, feel free to reach out!
-
Deadman Switch: A simple and flexible dead man’s switch application. You can use this to automatically check in on others, or as an “if I go missing” file (thanks Crime Junkie). Users “activate” a switch and a notification is sent with instructions for deactivating the switch. If the switch is not deactivated by the timeout deadline, user configured messages will be sent out as a contingency. This was a fun project for learning how to build a service around Temporal; each instance of a switch is simply a long lived Temporal workflow that uses a blocking select from 3 channels: “deactivate”, “cancel”, or “timeout”. Depending on which channel is received on, various (user configured) callbacks are run. Thanks to the flexibility of the API, I’m able to build different products (i.e., different frontends) that leverage the same backend API. The repo for this isn’t public (yet) but if you’d like to take a look, send me an email and I’ll grant you access.
-
IncentivizeThis: This is a platform for funding bounties for online engagement; the simplest use case is probably a business paying for a bounty to get some mentions on Reddit, but you can also use it for things like getting professional support on a GitHub issue. The possibilities are endless! This thing has got all the buzzwords: blockchain, LLMs, agentic AI, durable workflows, etc. This started out as a fun project for building an agentic workflow on top of Temporal’s durable workflows, and I just ran with it. I’ve written a post about it here.
-
IYBI — If You Build It, They Will Come: Web presence for independent workers. Millions of talented, independent workers have zero web presence outside platforms that take a cut and make everyone look the same. IYBI creates professional, mobile-first websites for them — not templates, but polished, deploy-ready sites with their branding, services, and photos. Every site loads in under a second on a global edge network with SSL and 99.9% uptime. One payment, no contracts, no subscriptions.
-
godxfeed: A Go-native client for the dxFeed/dxLink WebSocket protocol, wrapped in an HTTP + NATS service that lets browsers (and anything else) consume real-time tastytrade quotes. The server runs one dxLink WebSocket and publishes each event to a NATS subject; NATS is the single source of truth, and everything downstream — the browser UI, the TimescaleDB writer, the analytics sidecars — is just a NATS subscriber. The fun part is the Bayesian analytics layer: a PyMC sidecar subscribes to the quote stream via JetStream, fits
log-returns ~ Normal(0, σ)on a trailing window, and publishes the posterior-predictive density on a sibling subject. The/adminand/plotspanels render that posterior as a first-class overlay on top of the empirical histogram, so you see the uncertainty directly instead of staring at a point estimate. There’s also a natural-language layer on top — voice or text in, concretedxclientsubscribe/unsubscribe commands out — so the LLM is just a translator between human intent and the programmatic API. Live data is served fromapi.godxfeed.brojonat.com. -
router-templates: Text-to-STL router template generation for woodworkers and builders. Router templates let you make highly precise cuts, shapes, and grooves with a guide bushing — but actually drawing the templates is a tedious CAD exercise that nobody wants to do. This tool takes a plain-English description (or a hardware preset like “ATX back panel” or “120mm fan mount”), generates an SVG schematic with offset annotations, lets you revise until it’s right, and then exports STL files ready to slice in PrusaSlicer and 3D print. The LLM (Gemini) handles the messy parsing-intent step, but the geometry itself — primitives like holes, rects, ellipses, keyholes, dovetails, plus compound patterns like radial and linear arrays — is all deterministic Python. You can also upload a reference photo, annotate it on a drawing canvas, and use it as context for the generation. HTMX frontend, SQLite session storage, S3 for the generated files.
-
buttstuff.work: Anonymous workplace bidet petition platform. Employees verify via their work email, name their company (first person picks; everyone else sees it), and smash a button to cast a vote. Companies are ranked on a live activity feed and votes are on a 30-day cooldown, so the pressure compounds over time. It’s a joke, but it’s also a surprisingly clean little Go service: stdlib
net/httpwith no framework, SQLite viamodernc.org/sqlite(pure Go, no CGO), Litestream for continuous replication to object storage, Resend for magic links and scheduled reminders, and plain HTML/CSS/JS on the frontend with no build step. Personal email domains (gmail, yahoo, etc.) are isolated into per-user entries so they don’t pollute the corporate leaderboard. Shipping it took about a weekend thanks to my project templates (more on that below). -
llmsrules: A repo of agent skills and project templates I use to standardize how I (and the people I work with — junior devs, teammates, anyone who wants to plug into the same workflow) build software with LLM agents. It started as a folder of dotfiles for Cursor, Claude, Goose, etc., but collapsed into a single
SKILL.mdformat once the Agent Skills spec and skills.sh landed — one spec works across 40+ agents, so I just maintain skills inskills/and distribute vianpx skills add. The other half isproject-templates/: cookiecutter starter templates forgo-service,python-service, andpython-cli, all sharing the same conventions (Makefile as the front door, hot reload with logs tee’d tologs/, structured logging,/healthzand/metrics, k8s manifests). The point is that agents are great at writing code from a clear template but bad at inventing a consistent style from scratch, so I’d rather give them a template than coax them through tedious style tweaking every time. Same patterns, same entry points, zero ramp-up — anyone I onboard gets the same productive loop on day one. -
Diddlylift Store: This is an online store for some hand-made-wooden-weight-lifting-doohickeys. It started out as a little wedge I jokingly made that helps you load/unload the barbell for heavy deadlifts. However, it was actually really useful and I came up with a couple other products that are also super handy, so figured I might as well offer them for sale.
-
Vibe Check: This is a simple API that generates memes of GitHub users based on their profile and then let’s people vote on the best ones. I let an agent run wild with the
ghCLI, then pass a summary of the data off tonano-banana, then stick the images in a bucket. The polling is cool because each poll’s state and lifecycle is managed by a Temporal workflow. I’ve got some other Bayesian stuff in the works on the backend that’ll let you see the full posterior distributions for which option the polling group thinks is the best. -
Five Cut Method Calculator: When you’re squaring up the fence on your crosscut sled, you use the “five cut method”. There’s a lot of error prone geometry involved; this calculator abstracts all that away.
-
Poisson Confidence Intervals: there’s an old adage in astronomy (at least, that’s where I came across it) that goes something like “one sometimes fluctuates to zero, but zero never fluctuates to one”. This relates to counting statistics (e.g., the Poisson distribution). If you’re trying to observe something and you don’t see anything, that doesn’t mean the thing you’re trying to observe is intrinsically rare, you may have just been unlucky. You can use the fact that you observed zero, one, …whatever number to place limits on the intrinsic rate. This was the idea behind the oft cited Gehrels 1986 paper (1986ApJ…303..336G), which basically provides tabulated data to perform this lookup. It’s nearly 40 years later; we can do better!
-
Gredfin: This is the backend for a mobile app I spent some time working on called RealtorRank. I’ve wound this down during a recent cloud migration but you can take a look at the Github repo to see the backend; it’s all Go code with some k8s stuff for deployment. I built the frontend in Flutter which is amazing because you can build for the web, Apple App Store, and Google Play Store without needing to write any additional code. I’ve since moved back towards a monolith built on boring HTML instead of a totally separate backend/frontend cobbled together with JSON over HTTP, but Flutter is still cool if you want to ship an app. The backend builds into a single CLI binary I can deploy anywhere super easily; I just tweak the
COMMANDin kube manifest. It includes an HTTP server, but I’ve also written a Redfin API client package as well as a packages for periodic workers that scrape the Redfin API. The database is Postgres+PostGIS, and I used SQLC to generate my model calls and Atlas to handle my migrations. Development on this has been extremely smooth; I absolutely love this workflow.
Backlog⌗
-
Brown Pages: This is a key-value store that’s basically a combination of the White Pages, LinkTree, and Patreon. We all have data that people are willing to pay for. You log in and specify what data you want to expose about yourself and how much you want to charge others for it. Data vendors pay the owner’s fee and get access to the data.
-
How Many Widgets: This was inspired by my Diddlylift store. If you have some widget sales rate
sand some widget production ratep, how many widgetsNshould you keep on hand to avoid running out and/or needing to pull in extra resources to meet demand? Like in the real world,sandparen’t numbers, they’re distributions. For instance,slikely follows something close to a Poisson distribution, and whereaspmight be better described by a Gaussian distribution. What you get back is the number of widgets to keep in your inventory (along with some other useful figures). -
Mortgage Calculator: this app came out of an exercise I went through with the standard mortgage equation. I was annoyed that typical calculators either don’t surface certain details, or do so with crummy graphs, so I decided to make my own.