Skip to content

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

Learning Clojure by Automating an RSS Reader

I’ve been working on revamping how I consume information. Most of my information consumption has been moved to RSS feeds, but I can’t keep up with the number of articles in my feeds. When I take a look at my reader I tend to get overwhelmed and spend more time than I’d like to trying to "catch up" on information I generally was consuming out of curiosity. Not good. I want articles to be automatically marked as read after they are a month old to eliminate the feeling of being "behind". This is a perfect little project to learn a programming language that’s looked interesting for a while! Building a small project in a new language or technology is the best way to learn…

Continue Reading

Reclaiming Your Mind: Creating an Information Diet

There’s been a lot of areas of my life that I’ve been ‘auditing’ and attempting to tweak the habits that have intentionally or accidentally fallen into place. One of these is my information diet: how I find, consume, and process information.I’ve been tracking my time spent on reading/time on the internet and I’m not liking the trend. I’ve felt more addicted to information this year and I want to eliminate that feeling. Revamping my information intake is one way I’m going to do that. It’s worth thinking about why it’s worth spending time consuming information, how I consume information, and how I want to change my information consumption. Categories Stories…

Continue Reading