Skip to content

What I’ve Learned Searching for a New Startup Idea, Part 2

(this is part two of a series of blog posts about what I’m learning as I hunt for a new startup idea to work on with my cofounder) Find the Best Talent Hire only great people. Eliminate toil incrementally, even at the early stages. Slow growth to avoid hiring B players; this will result in a net decrease in product velocity. This model breaks at some point in a company’s growth, but I think you can keep a small-and-mighty team for longer than one would expect. This was a key advantage Stripe had in its early days. Be Curious and Start Small Have childlike curiosity. Don’t be afraid to build something silly, small, or seemingly useless. Too much filtering of ideas on the outset can cause you to miss something big…

Continue Reading

What I’ve Learned Searching for a New Startup Idea, Part I

I’m a couple of months into hunting for a new startup idea to work on with my cofounder. I’ve learned a lot and I’m trying to capture these learnings as I go to share them. Finding an idea to build a new business around is an interesting process: it’s much different than having a burning problem that you got excited enough about to quit your job. Finding a big idea is similar to being an investor—mixing analytics, experimentation, serendipity, patience, and convictions about what the future looks like into a specific bet on an industry, future trends, product shape, and initial feature wedge…

Continue Reading

Downloading Fidelity Charitable & Cigna Health Records

Similar to my post about Amazon Photos and Wealthfront data extraction, here’s another set of scripts to download data from sites which have terrible interfaces. You can use both of these scripts by opening up the developer console and copy/pasting/executing them. Hopefully it saves someone some time! Download All Cigna Medical Claim PDFs This script will download all medical claim PDFs on Cigna over the last year. First, navigate to the claims summary page. Then set the filter to: view all, last year, for all people. Now execute this script: Here’s more explanation on why this trick works…

Continue Reading

Raspberry Pi Configuration Tips & Tricks

Through an unfortunate turn of events, my SD card of my raspberry pi got corrupted. Apparently this happens quite often: SD cards are not designed for constant activity like a standard SSD drive (this was news to me!). This time around, I decided to run many of the applications I put on the pi in docker containers (here they are), so it’s all self-documented. Below are notes on what I learned while setting up the pi again, and some misc devops-style tips & tricks that would be useful in any linux server environment. The nice thing about a pi is it gives you the excuse to learn about interesting linux internals. (I’ve written about my raspberry pi setup process in the past, if you want to read the precursor to this post)…

Continue Reading

Book Notes: Wanting

I ran into Luke Burgis years ago and was excited when his book Wanting came out. Rene Girard’s thought changed my perspective and lens through which I view many things in business and life. I think of the philosophy of Rene Girard is a kind of axiomatic definition of human interaction; the physics of human action and desire. When I found Luke was running a conference on Girard I had to attend. I’ve always enjoyed the first attempt at a niche conference. Only the true believers show up and you are guaranteed to have really interesting conversations. Additionally, it was a great way for me to dive deeper into Girard’s thought; I still feel like a total beginner…

Continue Reading

Learning Elixir and Ecto

I’m finally posting a long-running learning document that I wrote as I I continued work on my original Elixir side project. I stopped working on this for at least a year and recently picked it back up as part of exploring some technologies for my next startup. This post got way longer than I expected, but hopefully, it’s a great compendium of notes and learnings from someone trying to learn Elixir who has a strong understanding of ruby, python, javascript, etc. What I’m learning Here’s what I’m going to be learning: How does Ecto work? Supervisor, tasks, processes, etc. "Let it Crash" philosophy. What exactly does this mean in practice?..

Continue Reading

Choosing the right Ubuntu AMI for EC2

As part of setting up an app on an EC2 instance on AWS I wanted to try out Amazon Linux. Picking the latest compatible Amazon Linux AMI using CDK is easy: However, Amazon Linux isn’t always the right choice. What is Amazon Linux? It’s not Ubuntu, it’s Fedora (also, Amazon Linux 2 is older than 2023): Why? I have no idea. I’ve done a lot of random stuff in my time as a developer, and running into Fedora is not one of them. When I ran my ansible scripts against the gravitron fedora box it immediately failed: I was attempting to use ansible-dokku with Amazon Linux 2023, which explicitly is not supported. Gravitron-supported OS are listed here and included Ubuntu, so it was time to use an Unbuntu image…

Continue Reading

Archiving Videos from Amazon Photos

Amazon Photos is a good-enough product for video storage. The interface is pretty bad, they don’t have an API, they don’t add new features, but they have unlimited photo storage with Prime, their mobile backup app is decent, and they have easy photo printing options. However, they do not make it easy to bulk download photos or videos. These two scripts, which you can copy/paste into your web console, make it easy to "select all" on a specific filter and download your videos + photos from Amazon Photos. Select all photos or videos to download It’s frustrating, but Amazon Photos does not allow you to "select all" when you are looking at a filtered set of photos or videos…

Continue Reading

Converting a Node Project from CommonJS to ESM

I had a small JavaScript project (deployed via AWS lambda, which I’ll write about later on). I needed to add a very simple package to the project—detect-cloudflare—which sent me down a deep rabbit hole: My project was written years ago using CommonJS (i.e. require). cloudflare-detect included a bunch of packages for a very simple task, which bothers me. Plus, the IP address ranges were out of date and the package hadn’t been updated in years, I decided I wanted to update it. Should be easy, right? (this is never a good thing for an engineer to say) I updated the project and got all of the tests passing without too much effort. Nice! When I went to use the newly refactored package in my project it failed with this error. Uh oh…

Continue Reading

Using Ansible to Setup Custom Dotfiles

A while back I posted about using Ansible for an Elixir application. I recently wanted to update this application and add a couple of new features: Add my dotfiles to the server in a similar way to GitHub codespaces (using this role) Add brew, mostly for my dotfiles to work Automate more of the dokku-based setup Here’s the heavily commented ansible config for a dokku-based application (not specific to Elixir): Ansible learnings Some additional learnings this time around: lookup('env','HOME') is the directory of the environment that ansible is executed from, i.e. your computer directory. Same goes with lookup('file', '~/something')…

Continue Reading