Something finally clicked for me. When looking at an ASCII table, you will notice that after the uppercase Z , there are a few other characters before lowercase a : Decimal Binary Symbol 88 01011000 X 89 01011001 Y 90 01011010 Z 91 01011011 [ 92 01011100 \ 93 01011101 ] 94 01011110 ^ 95 01011111 _ 96 01100000 ` 97 01100001 a It made sense to me that characters are represented by numbers, since…
I am building a cloud I like computers. In some tech circles, that is an unusual statement. (“In this house, we curse computers!”) I get it, computers can be really frustrating. But I like computers. I always have. It is really fun getting computers to do things. Painful, sure, but the results are worth it. Small microcontrollers are fun, desktops are fun, phones are fun, and servers are fun,…
PgBouncer is a connection pooler for Postgres. Postgres uses one process per connection, which can become problematic when creating large numbers of client connections. It can also be expensive to repeatedly drop and recreate these connections each time a client connects. A common solution is to use a pooler that sits in front of your database. PgBouncer is one of the most popular options for…
I’ve been ramping up on Node.js for my new team at Supabase, and I’ve learned the first rule of Node.js club: Don’t block the event loop. I’m not going to get into the details of how the Node.js event loop works. Instead, I’ll walk through my experience debugging an issue where a library was blocking it. Note My favorite resources to learn about the event loop: Node.js Docs - The Node.js Event…
I noticed the SQLite query below had an average duration of ~90ms. select package_name, package_summary from pypi_packages where package_name like ? order by package_name limit 10 package_name is the primary key and has an index on it. The table has 864,900 rows and is 166MB in size. 90ms for a query with a filter on the index, limited to 10 rows, on a table that is only 166 MB in size!? I would…
I’m setting up my homelab and one of my goals is zero-touch provisioning , plug in a machine and have it install itself over the network. One common way to do that is PXE booting . Instead of booting from a USB stick, a client asks the network where to boot from. PXE booting usually involves two protocols: Dynamic Host Configuration Protocol (DHCP) for network settings and boot metadata Trivial…
I used AI to add a feature to mise , an open source tool (written in Rust) that manages installations of other tools. I’m still coming to terms with this experience. I have never programed in Rust and I would be lying if I said I fully understood the code that it generated. I just wrote a post where I called out how many notable projects such as Ghostty , Node.js , curl , tldraw have limited or…
This weekend’s rabbit hole was a wild one. Lately, I’ve been poking around the mini PC market: the Lenovo Tiny series, HP Minis, and Dell Micros. You can usually find these on Facebook Marketplace or eBay for cheap. I recently picked up three HP ProDesk 600 G1 Minis for $100 total. Each one came with an Intel i5-4590T, 8GB of DDR3 RAM, and a 250GB SSD. The specs are dated, but they’re still…
The future of software engineering is SRE This post made the rounds recently, landing on the front page of Hacker News and all over my Twitter “For You” feed. It articulated some of the same feelings I’ve been having lately but haven’t been able to put into words. When code gets cheap operational excellence wins. This line stuck with me. The genie is out of the bottle. People are going to be…
There is nothing more embarrassing sharing a link with someone with a bunch of utm query parameters https://www.tylerhillery.com/?utm_source=share&utm_content=share_button . Which is why I built URL Clipr , a chrome extension that removes unwanted query parameters. Users can define a list of patterns (currently limited to “starts with” patterns) that will be excluded when copying the URL. There…
As I have been making my way through the learn section on the Node.js website, I came across a pleasant surprise in the Backpressuring in Streams section: That’s right, dtrace mentioned! Over the past ~5 months, I have gone through the entire Oxide and Friends podcast backlog, and it’s left a lasting impact on how I think about technology and software engineering. I shared more about my thoughts…
I want to walk through how I went about debugging this issue and how git bisect was crucial for pinpointing the exact commit that caused it. First, I tried to reproduce the issue locally on my machine. The user linked the GitHub action where they first noticed this issue occurring. I was able to look at the logs to find out the version of supabase storage they were running Downloaded newer image…
Change Computing Forever: Computing is our shared passion; our calling is to advance the state of the art, bringing those advances to the broadest possible audience. This is part of Oxide’s mission statement . I believe their podcast, Oxide and Friends , will have a bigger impact on computing than their rack scale computer. Kramer: Do you ever yearn? George: Yearn? Do I yearn? Kramer: I yearn.…
I understand many people just want access to the underlying data and not my beautiful chart. That’s okay, I understand. I’ve added a new subdomain data.pypacktrends.com for just this reason. Now, the official PyPI download data is already publicly available in BigQuery thanks to the Linehaul project . The catch is you still need a BigQuery account and, if you’re not careful, you can end up with a…
Inbox zero is a methodology of email management with the goal of having zero emails in your inbox. For me it’s simple, I treat my inbox like a todo list. If an email comes in and requires an action either I do it or leave it in my inbox until I do. If no action is required I either delete it or move it to a folder if it’s something I might want to reference later. I do that exact same thing for…
Much of the hype about AI tools for programming often comes from two ends of a spectrum, those who don’t know programming and those who already have deep expertise. People who don’t know how to program are blown away because they can accomplish something that was unfeasible to them before. The experts, on the other hand, can quickly discern whether the output is good or bad. AI removes much of the…
Overview As a learning exercise to explore web development, I built PyPack Trends , a web app to compare python package downloads inspired by npm trends . Venturing into a new domain can be daunting and I wanted to share my experience. Before starting any project, I need to understand why. Why am I, as a data engineer, taking the time to learn web development, a domain that does not overlap much…
There’s nothing more exhilarating than knowing one SQL query could end up costing you $2,750. But if you don’t like living on the edge, here are some techniques to help reduce your query costs. BigQuery’s On-demand pricing model costs $6.25 per TiB, with the first TiB per month being free. I have been building PyPack Trends , a web app to compare Python package downloads inspired by npm trends .…
To learn about web development, I set out to build a production grade web app. What does “production grade” mean? For me, it means the app includes: Tests Linting, formatting, and type-checking Application monitoring Observability Logging Infrastructure as Code Automated deployment pipeline Zero downtime deploys Secrets management Documentation Containerization Before building the web app, I…
Shifting left in data refers to addressing issues in a data pipeline as close as possible to where the data is produced. Data pipelines are responsible for the movement of data from source to destination, with sources drawn on the left, hence “shifting left.” Sources could be anything from your application database, CRM, billing system, etc. Destinations are typically a data warehouse, but the…