Skip to content

AppleScript Tips: Inspecting Objects, Modal Dialogs, and More

AppleScript is an amazing, quirky tool within the macOS ecosystem. It enables you to control any application on your Mac, even if the original developer didn’t explicitly write an API for it. This can be incredibly useful when attempting to automate certain actions. However, the language is incredibly weird and confusing, especially to a "real" software developer. I’ve compiled a list of tips and tricks below that help me write various tools and scripts to automate my computer (I’ve written about applescript before in case you are looking for other tricks)…

Continue Reading

Financial Directives for a New Graduate

Writing creates clarity, and defining directives for various areas of your life is an interesting exercise. I first ran into this idea via Derek Sivers: "It’s just a succinct and powerful way to communicate an idea. Focus on the action." I’ve tried distilling my personal investing principles as a series of directives. My siblings and other younger people I know also ask for my financial advice. This post is partly an effort to make it easy to share my thinking with others when it comes up so I don’t need to repeat myself. Obviously, I’m not a financial advisor, lawyer, CPA, etc. I’ve simply written down my personal opinions…

Continue Reading

Learning Docker Compose by Self-hosting Monica

I ran into Monica a while back, which bills itself as an "open source CRM"—an advanced address book. I’ve made it a hobby to meet random people I run into online. I really enjoy meeting new & interesting people, and I thought it would be nice to note down who I’ve met. This post is a compilation of notes from 1-2 years ago, and at the time, I did not have much experience with Docker (I really just used Heroku for all hosting and deployment before then). Self-hosting Monica on my raspberry pi was a great excuse to go deep and learn a lot about docker compose. Here’s some of what I learned getting Monica to run self-hosted on my raspberry pi…

Continue Reading

Categorizing Personal Email Contacts with AI

For years I’ve wanted to send out a yearly update (digital Christmas card of sorts) email to friends, both new and old. One of the problems is I don’t have a good address book that indicates who is a personal or work contact. I’ve been playing with datasette and I thought it would be fun to index all of my past emails and have AI categorize if they are a work, personal, or vendor contact. Importing Emails The first step is importing your emails from gmail into a local database. The easiest way to do this is to use a combination of Google takeout and a datasette plugin (note that it’s easiest to use my fork of the datasette plugin, the original package is dead)…

Continue Reading

Setting up eMMC on an Orange Pi

The main reason I ended up getting the orange pi (3B, to be exact) was because it has an eMMC connector. This means you don’t have to use an SD card for your boot drive, which I’ve had issues with in the past (they aren’t built for the read/write patterns that OS systems require, so they fail fairly often). I also assumed the device would be quite a bit snappier with an SSD (which turned out to be true). However, it ended up being trickier than I thought to get the OS on the eMMC card. tl;dr: you want to use dd to copy the .img file to the emmc after bootstrapping the system with a SD card with the OS image…

Continue Reading

Pi Hole, TailScale, and Docker on an Orange Pi

I’ve always been fascinated by this super cheap and relatively fast hardware you can buy now. A while back I bought a Raspberry Pi and a friend recently told me about the Orange Pi. I decided to give it a shot primarily because it supports an eMMC chip which allows super fast ssd IO (170mb+ writes in my case). I was nervous about compatibility issues, but I was pleasantly surprised that it worked out of the box without any real issues. The hardest part was actually getting the eMMC working (which I’ll detail in another post). Here’s a walkthrough of what I did to get the orange pi up and running…

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

2023 Goal Retrospective

I’ve been doing retrospectives on my yearly goals for a while now. Here’s my review of last year’s goals and my thoughts about what I can change going forward. (as an aside, I’ve been working on open-sourcing some of the templates we use as a family to plan out our life—if you are interested in taking a look while I refine them, drop me an email.) What Worked Tracking daily + weekly habits works to reinforce their importance. Setting clear goals with specific metrics has continued to be successful. When a goal is less specific (no dates, no metrics, more of a ending state / lagging indicator vs input-based) A shared goal with my wife to go on two sans-kids trips (harder than it sounds with four young kids!) was great…

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