Skip to content

How To Get Things Done

Time is the great leveler. Regardless of where you live, what job you have, how much money you have, or what culture you live in, you have 24 hours in a day. We have a responsibility to cultivate our resources. At the very top of this list is our time. We live in an age when our time is more limited than ever. From big companies (Instagram, Twitter, etc.) to our friends (messaging us all day), every aspect of our culture nibbles away at any minute of spare time that we have. Managing our time well is more important than ever and is a crucial aspect of being a wholesome and effective person. Here’s what we want to accomplish by managing our time well: Integrity. We want to do what we say we will do without being reminded. Clear Priorities…

Continue Reading

Supercharged Zsh Command History

I’m a big fan of incrementally improving your terminal productivity. I invested in learning tmux a while back and it’s been a game-changer for me in terms of flying through terminal workflows (which is especially important for me since I’m heavily REPL-driven). I’ve wanted to improve my terminal history functionality for a while now and recently found the time to tune up this part of my dev workflow! Fzf-based Shell History I’ve been using fzf based completion for years and it’s awesome. It’s easy to install so if you want something better than the default, this is a great place to start. Removing Entries from ZSH History If you update HISTORY_IGNORE your existing history is not retroactively filtered…

Continue Reading

How to Throttle Your Internet Connection

A conversation with a friend recently turned me on to PFSense. It’s an open source firewall system that enables you to control what’s happening in your network. One of the features it enables is packet throttling. It got me thinking, can I throttle my internet connection speed just on my local machine? I’ve been interested in digital minimalism for a long time. One of the things I’ve never been able to crack is nudging me towards stopping the use of all of my devices without forcing me to do so. If I’m forced, I’ll need an escape hatch for when my predetermined schedule doesn’t work, and then I’ll abuse that escape hatch…

Continue Reading

Best of 2023

I’ve always enjoyed the "best of" posts—it’s a great way to find something interesting & new. I wanted to add to the fun this year! Following up on my 2023 retrospective, here are my favorites of the last year. Texts. Continues to be my all-time favorite app. Texting has always been a massive pain for me and Texts has solved that problem: snooze, scheduled send, tags, multiple inboxes, cross platform app, etc. Can’t recommend it enough. SuperHuman. I resisted using this email client for a while. It’s not improving as quickly as it should, there are still weird issues with it, but some of the core features are really useful (multiple inboxes, better keyboard shortcuts, and fine-tuned UX)…

Continue Reading

Using ChatGPT to Convert LabCorp PDFs into a Google Sheet

The last couple of years I’ve monitored my food, blood levels, etc more closely. It’s a topic for another blog post, but it’s been really interesting to watch how key blood levels have changed over time and reacted to changes in my diet and exercise. I use lab core for all my blood work, and I’ve been relatively happy with them. However, their online portal does not allow you to download a CSV or Excel document of your blood work over time. They only offer a PDF download. This makes it challenging to track your levels over time and understand what’s changing and why due to lifestyle changes. Enter ChatGPT. With the latest vision models, you can use it to extract tabular data from the unstructured PDF that LabCorp provides you…

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

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

Git Completions & Tooling on the Command Line

I enjoy tuning my terminal environment. I’ve recently learned tmux, switched to zsh, and constantly incrementally improve my personal dotfiles. I’ve put together a stack of tools for working with git on the command line. I find this much faster than working in a GUI. Here’s what I use: git-fuzzy for generating commits (git patch is especially useful here) forgit for switching branches, viewing logs, stash list, git fixup, etc git (aliased as g) for misc git commands (like cherry-pick, etc) with a handful of config customization custom functions and aliases for various shortcuts, including interacting with the gh-cli command However, one piece of the puzzle for me wasn’t working properly: tab completions on the core git command…

Continue Reading

Improve motivation and focus with small contexts

I’ve known for years that uncategorized message queues scramble my brain. I think I’m more sensitive to this than most. For instance, a list of unanswered texts from random groups of people (friends, work contacts, randoms, etc) feels exhausting/overwhelming. I’m not sure where to start, and it feels like the amount of effort needed to get to zero is too much. I’m tempted to avoid answering (and often do!) and move on to something else that feels more discrete that I can check off a list. I know intellectually that if I just start answering messages I’ll get through the list, and without too much effort…

Continue Reading

Learning tmux

I’ve tried tmux before for about a day at a time and promptly forgot about it and never learned how it worked deeply. However, a friend recently reminded me about tmux’s copy mode and I was intrigued. I had the time to dig in and try to retrain my muscle memory around it. I use VS Code for my editor, but otherwise, I’m a very terminal-oriented developer. I love interactive REPLs and find that CLI tools generally allow you to move faster than GUI equivalents. Something that always frustrated me about my development loop was the need to put my hands on the mouse in order to interact (select/copy/find/etc) with the contents of my terminal screen…

Continue Reading