Here’s a list of cool apps and APIs I maintain. I might spin these off into standalone services if they’re useful to folks. If that’s the case, or if you’d like me to host one of these services on your behalf feel free to reach out and we can discuss what that might look like.

  • Gredfin: This is a mobile app I’m working on that scrapes the Redfin API. Take a look at the Github repo to see some Go code. I really like the way I’ve built this out. I’m building the app in FlutterFlow which is a really neat product, but the most fun has been building out the backend. The project builds into a single CLI binary I can deploy anywhere super easily. 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 fast; I absolutely love this workflow.

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

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

  • 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!

  • Application Sandbox: This isn’t quite in the same vein as some of my other projects but I still think it’s pretty neat. This is a SPA that I use to sandbox new features/implementations/technologies I want to use elsewhere. For instance, if I want to experiment with a new WebSocket pattern or tinker with some D3 plotting approach, I can experiment here relatively easily rather than having to spin up a new project.

Coming Soon

  • 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. As a data vendor, you log in and the authentication process uses Hellō to collect your verified email and Ethereum addresses. Then, you specify what data you want to expose about yourself and how much you want to charge others for it. As a data purchaser, you send the fee and a small piece of data to the application server’s address on the Ethereum blockchain, the fee is forwarded to the vendor, and you’re authorized to view the vendor’s data.

  • How Many Widgets: This was inspired by my Diddlylift store. If you have some widget sales rate s and some widget production rate p, how many widgets N should you keep on hand to avoid running out and/or needing to pull in extra resources to meet demand? Like in the real world, s and p aren’t numbers, they’re distributions. For instance, s likely follows something close to a Poisson distribution, and whereas might 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.