Skip to content

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

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

Deploying Nodejs on AWS Lambda using NodejsFunction

I wanted to deploy a node lambda on AWS using CDK. The NodejsFunction seemed like an improvement over using the standard Function construct: the CDK SDK would bundle your code for you, in a docker container running the same version of node used in the lambda. Instead of defining a code param you define an entry file that is used for the compilation process. This seems like a great improvement over copy/pasting your local nodejs application (including the local node_modules!) into the lambda…

Continue Reading

Download a CSV of Wealthfront Financial Activity

I use Wealthfront for a portion of my investments. I recently was trying to get a CSV of all my dividends, fees, etc this year and there’s not a way to do this! If you navigate to your activity (homepage > investment account > see recent activity) you can at least generate a CSV from the information on-screen (which does not include your gains/losses from the direct indexing) and copy/paste this into your web console, your browser will spit out a CSV. This is highly tied to the current (as of this writing) Wealthfront HTML structure, so you’ll probably have to ask ChatGPT to fix this in some number of months…

Continue Reading

Scraping the web with OpenAI

One of the really interesting LLM use cases is extracting structured data from unstructured data. In the old days (6mo ago), extracting structured data from web pages required custom xpath or css selectors for each website that constantly broke as the host changed their page structure. For instance, extracting the price of a house on redfin. This is why Plaid (and similar competitors) break so often: many of their integrations "screen scrape" which means they need a team of people updating xpath and css selectors on various bank sites (TreasuryDirect, for example, is broken constantly). I built a open source database of venture capital firms that used this approach to extract team member information from each firm…

Continue Reading

Learning TypeScript by Migrating Mint Transactions

Years ago, I built a chrome extension to import transactions into Mint. Mint hasn’t been updated in nearly a decade at this point, and once it stopped connecting to my bank for over two months I decided to call it quits and switch to LunchMoney which is improved frequently and has a lot of neat developer-focused features. However, I had years of historical data in Mint and I didn’t want to lose it when I transitioned. Luckily, Mint allows you to export all of your transaction data as a CSV and LunchMoney has an API. I’ve spent some time brushing up on my JavaScript knowledge in the past, and have since used Flow (a TypeScript competitor) in my work, but I’ve heard great things about TypeScript and wanted to see how it compared…

Continue Reading

Building a SouthWest Price Monitor and Learning Server Side JavaScript

I originally wrote a draft of this post in early 2019. I’m spending some time learning TypeScript, so I wanted to finally get my JavaScript-related posts out of draft. Some notes and learnings here are out of date. Both sides of our family live out of state. Over the last couple years, we’ve turned them on to credit card hacking to make visiting cheap (free). SouthWest has some awesome point bonuses on credit cards, but you can’t watch for price drops on Kayak and other flight aggregators. After a bit of digging, I found a basic version of a tool to do just this. It’s a self-hosted bot to watch for flight cost drops so you can book (or rebook for free)…

Continue Reading

Building a Chrome Extension to Import Transactions into Mint

I originally wrote a draft of this post in early 2019. I’ve since stopped using Mint and switched to LunchMoney. However, I’m spending some time learning TypeScript so I wanted to finally get my JavaScript-related posts out of draft. I use Mint (although it’s rotting on the vine after being acquired by Intuit), and want to import a list of transactions from a bank account that isn’t supported. However, there’s not a way to do this through the mint UI, but there is a hack someone documented. I know old-school JavaScript but haven’t learned ES6, and I’ve never built a Chrome extension. Building a Chrome extension to use the private mint API to import transactions from a CSV is a perfect learning project…

Continue Reading