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.
-
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.