RSSAmplifier

Blog

Thomas Countz

thomascountz.comRSS feed ↗36 posts

Latest posts

Job Scheduling with at(1)

at(1) is a one-off job scheduler that's been hiding in plain sight on Unix systems. Yes, it knows when teatime is.

Good Citizen Syndrome

When skilled engineers constantly fill gaps in process and standards, it can mask weak reliability strategy.

Event Streaming vs Background Jobs

At their core, event streaming platforms and background job systems both solve problems related to scaling and asynchronous processing. But we can think of one as managing a log of events, and the other as managing a to-do list.

Chrome's SSL Bypass Cheatcode

Did you know that Chrome has a secret cheatcode that lets you bypass SSL errors? It's called `thisisunsafe`, and I couldn't help but pull on the thread to uncover its history.

Debouncing API Calls

Debouncing is a technique used to limit the rate at which a function is executed. It's particularly useful for optimizing performance in scenarios where a function is called frequently, such as handling user input events or making API calls.

Where Does Apple Hide Your Voice Memo Transcripts?

Apple's Voice Memos app automatically transcribes your recordings, but accessing those transcripts isn't straightforward. I explored the .m4a file format and show you how to extract them.

Forth Feedback Loop

Forth scratches a strange itch in my brain. I wrote a word to help me rapidly iterate on Forth code by automating an edit-reload cycle.

Color Strings Refinement

A Ruby refinement that adds methods to the String class for coloring text output in the terminal.

Good Morning, Team!

Every so often, I like to write a Ruby script that says good morning to my team in a fun way. Here is the one I made this morning which mimics the famous bouncing DVD logo.

Run Commands on File Change

I use `entr` to run commands automatically when files change. Here's how I use it to run tests.

Ruby Bug #21117: Numbered Block Params

A breakdown of the fix for Ruby Bug #21117, which addressed issues with numbered block parameters and combined assignment operators.

Routine Complications

Understanding and managing routine complications keeps us honest and responsible, even though we wish things would never go wrong.

Hill Chart Web App

I built an interactive tool for visualizing task progress using hill charts, a visual metaphor for tracking work phases.

Capture ActiveRecord Queries

A technique for capturing and inspecting SQL queries generated by ActiveRecord in tests using ActiveSupport::Notifications.

Ruby CLI Progress Bar

A simple Ruby function to display a progress bar in the terminal.

Checklist App Prototype

A prototype for a checklist app designed to help users complete procedures step-by-step.

Interactive jq

fzf is an incredibly configurable command-line fuzzy finder. Here's how I used it to build an interactive jq TUI.

ActiveRecord Models to a Mermaid ERD

A Ruby script that converts ActiveRecord models into a Mermaid Entity-Relationship Diagram (ERD) format.

Adding Journals

Adding journals to my blog for quick thoughts and ideas.

Low-Poly Image Generation using Evolutionary Algorithms in Ruby

A deep dive into evolutionary algorithms through the lens of low-poly image generation. This exploration covers genetic algorithm theory, custom Ruby implementation using the Petri Dish framework, and detailed analysis of genetic operators including roulette wheel selection, random midpoint crossover, and nudge mutation. Includes comprehensive data analysis of fitness convergence, pixel-level…

Utilizing Docker for Bundling in a Specific Ruby Environment

How I'm using Docker to manage operations across dozens of different Ruby environments without local installations.

A Thought on Practice

A reflection on the value of practicing familiar skills to rediscover growth and inspiration.

Københavns Luftkvalitet og Cykling

An exploration of Copenhagen's air quality data through the lens of urban cycling. Using Python, GeoPandas, and the Google Maps API, this analysis examines black carbon, nitrogen dioxide, and ultrafine particle measurements collected by Google Street View vehicles across the city. Includes geospatial data processing, route-based pollution exposure calculations, and visualization of air quality…

Sargable Queries & MUL Indexes; or Why My Query is Slow

My discovery of "sargability" in SQL queries, told through the lens of debugging a slow ActiveRecord query in a MySQL database.

Rocket Lab Telemetry From Video

Extracting rocket telemetry data from a YouTube live stream using Google Cloud Video Intelligence API's OCR capabilities. This project walks through video ingestion, text detection across thousands of frames, JSON data wrangling with jq, and Ruby-based data cleanup to produce velocity and altitude datasets from Rocket Lab's Electron launch anomaly.

Hexo - Schematic Capture, Mechanical Design, & PCB Layout

A walkthrough of transforming a circuit design into a manufacturable PCB using KiCAD EDA. Covers schematic capture with electrical rules checking, mechanical design constraints for a wearable pendant form factor, custom footprint creation from datasheets, and PCB layout including trace routing and component placement for a hexagonal LED die.

Hexo - Prototyping, Design, Simulation

Building an electronic six-sided die from concept to prototype. This post covers breadboard prototyping, pen-and-paper circuit analysis using Ohm's and Kirchhoff's laws, and SPICE simulation with LTspice and Falstad. Includes modifying a 555 timer roulette circuit from 9V/10-LED to 3V/6-LED, with transient analysis of LED timing behavior.

Communication Superhighways

Good communication in an emergency is vital: What is happening? Who is leading? Where are we meeting? Et al. Just like firefighters, who use highways instead of local roads to get to a burning building more quickly, our teams should leverage communication highways to respond efficiently in the face of an emergency. This communication infrastructure isn’t just logistical: you may have a dedicated…

Crafting an Invitation to Think

Foreshadowing: signaling an outcome of chapter eight in the middle of chapter one, i.e. the original spoiler. Although, akin to the mean-spirited handiwork of a Reddit troll, wielded gracefully, foreshadowing helps an author build tension, introduce indirection, and drive home a butterfly-inducing denouement. In non-fiction, we are afforded a similar device: we can build a compelling narrative or…

Repeated Signals Wear Grooves

In The Design of Everyday Things , Don Norman shares an anecdote about “signifiers,” which are the design elements that communicate the purpose, structure, and operation of an object or system. The anecdote was about a wall onto which someone placed an empty bottle. Over time, more and more empty bottles showed up on this wall: …as soon as one person discovers it can be used to dispose of empty…

Arduino Tone for ESP32

Arduino has a built-in tone() library which allows you to send a PWM frequency at 50% duty cycle to a specific pin in order to generate a tone on a piezoelectric buzzer with an optional duration . tone ( pin , frequency ) tone ( pin , frequency , duration ) This functionality is famously unavailable in Espressif’s arduino-esp32 library and members of the community have found various work-arounds…

SQL Injection Overview

An SQL Injection occurs when untrusted input is used directly in the construction of an SQL query . This attack is commonly executed by introducing a meta character (such as a comment) into a data plane in such a way that allows an attacker to add commands to the control plane. Essentially, when building a SQL query from user input, an attacker can insert SQL instructions that cause the…

Dare to be Good Enough—You'll be Happier for it

Originally published on 8th Light’s blog As I sit down to write, I noticed a tug at the back of my neck—a tension forming as I begin editing my words obsessively. It’s a habit of writing characterized by my attempts at achieving the best possible outcome. “I know that I can write well,” I tell myself, “I’ve just got to strike the right tempo, tone, voice…” I often have the same sensation when I’m…

Specify Bundler Version

If you’re like me, you may have versions of both Bundler 1 and Bundler 2 installed on your system. This can make it difficult to manage different codebases. Say one requires an older version, like 1.13.6 . You can run the following command to install it, gem install bundler -v 1.13.6 but when you install gems, bundle install you might end up seeing something like BUNDLED WITH 2.1.4 in your…

Types of Notetaking

Earlier this week, my pair and I struck upon something interesting, and I stopped to take notes. Every time I see you taking notes, you’re using a new method! — Pair She’s not wrong. Over the past several years, I’ve tried many different ways of capturing my thoughts: yellow legal pads, Basecamp , Notion , Vimwiki , Org Mode , Tyke , index cards, Gitbook , blogging with Jekyll and Medium ,…

FastBook Chapter 4 Questions & Notes

Fastai , known for it’s MOOCs, is working on a book, Fastbook to go along with their new MOOC starting July 2020. In my eagerness, I’ve been going through the draft of the book (linked above, though they may remove it after publication) and have been coding alongside on Kaggle . At the end of each chapter of the book is a list of questions for the reader/students to answer. I’ve found these…