Skip to content

Blocking Ads & Monitoring External Drives with Raspberry Pi

I’ve written about how I setup my raspberry pi to host time machine backups. I took my pi a bit further and set it up as a local DNS server to block ad tracking systems and, as part of my digital minimalism kick/obsession, to block distracting websites network-wide on a schedule. Pi-hole: block ads and trackers on your network Pi-hole is a neat project: it hosts a local DNS server on your Pi which automatically pulls in a blacklist of domains used by advertisers. The interesting side effect is you can control the blacklist programmatically, enabling you to block distracting websites on a schedule. This is perfect for my digital minimalism toolkit. Pi-hole has an active Discourse forum…

Continue Reading

Dumping a AWS RDS Database to Your Local Machine

I’m a big Heroku fan. I used it’s hosted Redis and Postgres services for my startup and it scaled incredibly well and saved me a ton of time not having to ever worry about devops. One of things I loved about Heroku was it’s CLI API. You could very easily manage infrastructure through a very thoughtful CLI. For instance, a common process I would run was: Dump production database to my local Import the dump into my local Postgres Clean & sanitize the data This process looked something like: That first line was all you needed to download a production copy of your DB. I’ve been playing around with AWS for a side project and replicating a similar process was surprisingly challenging…

Continue Reading

Building a Elixir & Phoenix Application

Learning Elixir Ever since I ran into Elixir/Phoenix through a couple of popular Hacker News posts I’ve been interested in tinkering with the language. I have a little idea for an app that I’m just motivated enough to build that Elixir would work for. I’ve document my learning process below by logging my thoughts as I learned Elixir via a ‘learning project’. What I’m building Here’s what I’d like to build: Web app which detects the user’s location using the built-in location service in the browser The zip code of that location is determined (server or client-side) The zip code is handed off to a server-side process which renders a page with the zip code…

Continue Reading

Using Ansible to Deploy Elixir Applications on Dokku

For me, the best (and most fun!) way to learn is to find a problem with a new set of tools you want to learn. I’ve documented my process of learning Ansible below, I hope it’s interesting to others! Motivation I built an application with Elixir and Phoenix and deployed it using Gigalixir. Gigalixir worked well, but after a couple of weeks the site shut down due to a lack of updates (I was on the free tier). Since this project is strictly for learning, I figured it would be fun to learn Ansible and save a couple bucks by signing up for a free VPS service. I initially chose Vultr because they offered $50 of free credit towards a $3.50/month VPS, which should be more than enough for a year…

Continue Reading

Running Tests Against Multiple Ruby Versions Using CircleCI

I’ve been a long-term maintainer of the NetSuite ruby gem. Part of maintaining any library is automated tests against multiple versions of various dependencies. Most of the time, this is limited to the language version, but can include other dependencies as well. Recently my build config stopped working as CircleCI upgraded to V2 of their infrastructure. I found it challenging to find an example CircleCI V2 config with the following characteristics: No Gemfile.lock and therefore no caching of gems. When you are testing across ruby versions you can’t use a single Gemfile.lock. No rails, no databases, just plain ruby Here’s an heavily documented CircleCI config that tests multiple ruby versions:

Continue Reading

Time Machine Backups with a Raspberry Pi and External Drives

As I was reviewing my backup strategy, I realized I hadn’t completed a Time Machine backup on my machines in a long time. Plugging in the drive was just enough friction to forget doing it completely. The Airport Express has a USB port to plug hard drives, printers, etc into. These devices would be magically broadcasted to the network. It was awesome, and then Apple killed the device. The Eero I upgraded to is great, but the USB port is useless. But, there’s silver lining! I’ve been looking for a good excuse to buy a Raspberry Pi and mounting external hard drives on the network fit the bill! $35 for a tiny computer more powerful that anything I had growing up and more powerful than a $5 DigitalOcean or AWS VPS. What’s not to like?..

Continue Reading

My Process for Intentional Learning

Lately, I’ve been able to carve out dedicated to learning new skills. What I’ve learned has been random, from programming languages to how to build a tiny house. I’ve found a lot of joy in learning new skills, slowly becoming a generalist. Over the last year, I’ve found you can optimize your "learning time" by thinking through the process of learning before you start. In my experience, picking a learning project, and creating a "learning log" for each skill is hugely helpful. Identify a Learning Project Learning in a vacuum doesn’t work for me. I love reading fiction, but reading a topic that I have no immediate need to understand makes it much harder to comprehend…

Continue Reading

Securing and Backing Up Your Data

I’m sure you’ve had this experience: you flip open your laptop and it doesn’t boot up. You drop your phone and it won’t turn on. You pause for a second… “is any of my stuff backed up?” It wasn’t until this happened to me (my hard drive almost fried) that I started taking backups seriously. Security and digital backups are one of those “important not urgent” things it’s easy to forget about until it’s too late. Here’s my take on how to think about backing up your digital world and making sure others can’t get access to it. Security & Privacy Assume all of your private information—SSN, address, password, phone, etc—will be public at some point. It’s only going to get easier to hack into large systems. Why? Here’s one example…

Continue Reading

How to Block Distracting Websites on Your Laptop

"What exactly did I do the last 30 minutes?" I’m sure you’ve been there, asking that same question, staring blankly into your computer screen. I’ve written about how I’m working to minimized distraction. For me, a big component of that is blocking distraction on the device I spend the most time: my laptop. Here’s what I’m looking to do: Automatically block distracting websites, but allow an easy way to temporarily unblock them. Example: I want to block Amazon by default, but sometimes I want to jump on and buy something quickly. I don’t want to have to manage a schedule. Creating exceptions to schedules and then remembering to re-enable the schedule never works well…

Continue Reading

How I Broke My Phone Addiction

The launch of Neuralink started a conversation across the web about the “merge”. The day when you can plug your brain into a computer and communicate with it through your thoughts. No keyboard, mouse, or touch screen. Something out of a sci-fi film. I think Sam Altman has an interesting take: I believe the merge has already started, and we are a few years in. Our phones control us and tell us what to do when; social media feeds determine how we feel; search engines decide what we think. This resonated very strongly with me. My phone does control me to a certain extent and I feel uncomfortable if I hop in the car without it. I’ve been on a kick this year of being intentional about how I use technology…

Continue Reading