I can read more quickly than I can listen. I can search a text file but not an audio file. There are many cases when the written word is superior to the spoken word, but sometimes the source data is spoken. Can I extract spoken word data into something written? Whisper.cpp is an ML model which interprets spoken words and outputs written words and can be run on a Mac laptop. Simon Willison…
Overcast has been my primary podcast app for many years now. This years-long history of listening has produced a lot of data, most of which is lost to time. Some of it isn’t though. What I have favorited (or starred, or recommended) is not lost to time. With the release of playlists in Overcast, I could see all my starred episodes. The data was somewhere! I emailed Marco , its creator and…
Do you own your data? I have 3,855 Instapaper bookmarks collected in the over 10 years since I signed up for the service. That’s a lot of reading! The beauty of Instapaper is that it saves a text version of these webpages to its database, allowing you to preserve the original words of the article before it (usually) disappears from the Internet. Instapaper is also a great learning tool, since it…
Julia Evans recently wrote about the tiny personal programs she’s written , one of which was called “getting my scanner to work better.” She links to her wrapper for scanimage which got me thinking: is it possible to use scanimage with my Fujitsu ScanSnap S1100? I love this little ScanSnap S1100 for its miniature size and ease of use. Unfortunately it comes with bloated software which doesn’t…
GitHub released self-hosted Actions runners some time ago. The gist is this: instead of using GitHub-provided machines to run your Actions workflows, you use a computer you control instead. This can be hugely powerful for enterprises and at-home nerds alike. I’m going to share two use-cases that I came up with today. Downloading and setting up the runner is fast and easy . You can add them to a…
TL;DR: An extension to Homebrew allows you to install gems globally on your machine, thus brew gem install jekyll . Install brew install brew-gem to use. I discovered a project called brew-gem which simplifies the gem install process for gems which are system-wide. It installs the gem and its dependencies in an isolated directory and creates an executable stub in /usr/local/bin . This means you…
As a programmer, I have long cared deeply about having the latest, most powerful machine to do my work. If I am not left waiting for my tools to do their job, then I can more quickly do mine. Recently, I have felt like I never have a powerful-enough machine. Running Docker for Mac brings even a $2000 or $3000 MacBook Pro (Intel) to its knees. Issues persist with Apple’s silicon as well, given that…
Booting a new shell had gotten slow . Opening a new Terminal window was getting tedious. I decided it was time to finally solve this. I found a wonderful blog post entitled “Even faster bash startup” , in which the author tackled this same problem. They started with the hyperfine utility to benchmark the login: $ hyperfine -i 'bash -l' Benchmark #1: bash -l Time ( mean ± σ ) : 1.242 s ± 0.089 s […
Ruby can be notoriously challenging to get setup initially. You might run into permissions issues when running gem install or you might go to install gems and it tells you that you’re using the wrong version of ruby! These installation woes are the biggest blocker for most folks wanting to use Ruby packages like jekyll where Ruby is an implementation detail and unrelated to what they’re actually…
With the increasing prevalence of inserting malicious code into commonly-used open source projects on the rise, it might be time to enforce commit signing for your open source project. This prevents someone from spoofing your identity on commits they make. If it’s not signed with your key, then it’s not verified and the UI will show this. When setting up gpg (v2) to automatically sign your commit…
Fitness+ is a fantastic addition to your fitness regimen. From great trainers to broad variety of workouts, it will bring you happiness in the journey to achieving your fitness goals. My first workout with Fitness+ was over the holiday break, shortly after it was first released. We couldn’t attend class at our normal gym and needed a good sweat. We’ve been huge fans of Fitness Blender for years,…
Over the weekend, I wrote a very simple tool for GitHub to change the default branch of your repos. The default branch name that Git and GitHub currently gives you is seen by many as insensitive. There’s no technical reason for keeping the name as-is so I wrote a tool to automate the process of switching for you! github-change-default-branch is a command-line tool which walks through all repos…
After a decade as an Amazon Prime member, I have canceled my membership. Amazon Prime is a collection of services you subscribe to for a monthly or yearly fee. This includes video, music, and free fast delivery. Investors are always looking to Prime membership numbers as a sign of the strength of Amazon’s business. Amazon has abused its market power and great wealth at great cost to its workers.…
The AirPods Pro are incredibly good. The fit out of the box is comfortable. These buds stay in your ears. Whether racing down the stairwell with your pup or going out for a jog, you won’t have to think about them falling out. They started getting a bit looser after a few miles of running each time I smiled at a passerby and needed to be pushed farther into my ear more frequently. The vent prevents…
It took me an embarassingly long time to discover how to do this today, so I thought I’d write it down and send it into the ether of the Internet hoping it would help someone else someday. So I have this great golang server which connects to a remote host over SSH. Not so bad so far, golang.org/x/crypto/ssh makes this pretty easy. The hard part is that the normal tools we use to generate SSH keys…
DNS is one of those services that still requires logging into some web portal and clicking buttons and entering data. Heaven forbid you enter a bad IP address and take down your service – there’s no “rollback to previous value” option. Want to track your configurations over time? Sorry, not something your web portal can often do. DNS configuration should be simple, trackable, and automatable. Good…
Cloudflare recently announced the availability of 1.1.1.1 , a publicly available, privacy-first domain name server (DNS). I have been using OpenDNS on my routers for years and been quite happy with it. But Cloudflare’s guarantees for logging and support for DNS over TLS and DNS over HTTPS are definitely things I’d like to see supported, so perhaps I’ll give them a try. Their most significant claim…
At GitHub, we use Puppet to manage all our physical and virtual hosts’ configurations based on app-role combinations. Having become familiar with Puppet over my tenure there, I finally decided last month that I should be using Puppet to manage my own servers. When I was just graduating from college and had a steady income, I finally decided it was time to have my own cloud server. Rackspace was…
In responding to a Jekyll pull request, I went digging around the way Ruby handles sorting. The problem was that we were trying to sort a list of objects which don’t all have a given property. The contributor was using sort_by which throws an ArgumentError if the block returns a nil value at all. We had a sparse property we wanted to sort by. Our typical solution to this is something like: def…
If you follow the Jekyll community, you might have noticed that I haven’t been as active in the last year or two. Part of this is due to life events usurping my free time, and part of this is something else entirely: paralysis. I want to discuss today the paralysis. Ask any open source maintainer what their job description is, and you’ll likely hear about reviewing patches sent from community…