This weekend I wrote three posts related to interpolation: Compression and interpolation Bessel, Everett, and Lagrange interpolation Binomial coefficients with non-integer arguments The first post looks at reducing the size of mathematical tables by switching for linear to quadratic interpolation. The immediate application is obsolete, but the...
It’s been a couple of months since my 486 motherboard gave up after I tried refitting it into the case with makeshift AT style motherboard standoffs. A PS/2 keyboard connector proved that the keyboard still works, and Vogons search results proved that flickering and then dead keyboard LEDs are signs of a possibly dud port, but I don’t have the...
I won’t provide any spoilers because Chris’ writeup is really good with a nice real world example. The only commentary I will add is using container queries for everything — including fluid typography and space — might feel like a good idea on paper, but you lose global flow and rhythm by doing that. For example, if you use container units for...
About 3 years ago, I announced Mess With DNS in this blog post, a playground where you can learn how DNS works by messing around and creating records. I wasn’t very careful with the DNS implementation though (to quote the release blog post: “following the DNS RFCs? not exactly”), and people started reporting problems that eventually I decided...
I always thought I was too "dumb" to understand math. During my school years, it was evident to me that for some kids math was easy, and for others like myself: painfully difficult. This belief shadowed me for years, a constant reminder that while believe I am smart... I'm not THAT smart. Recently, after 150 days immersed in learning math, I had...
I am using elliotchance/orderedmap as my choice of ordered maps (since Go doesn't have one in standard library yet). I recently did a PR to implement Go 1.23 iterators, because I find them neat, however I was avoiding to use it in the code that generates this blog since Go 1.23 was just released and is still not the default Go in nixpkgs. I...
I am using elliotchance/orderedmap as my choice of ordered maps (since Go doesn't have one in standard library yet). I recently did a PR to implement Go 1.23 iterators, because I find them neat, however I was avoiding to use it in the code that generates this blog since Go 1.23 was just released and is still not the default Go in nixpkgs. I...
How I learned the old truth that when building a software product and selling it to people, "building" is just the beginning. And often, it's the easiest part.
Billboards Route 66 is often viewed through the lens of its billboards. The Jack Rabbit Trading Post, a small store a few miles out of Joseph City, would hardly be remembered were it not for its billboards spanning four states. The tradition of far-advance billboards is still observed today. Albuquerque's roadside stop operator Bowlin puts...
This post is not an authority on how to make a NoSQL database, rather how I made mine. I am still actively learning this topic, but I wanted to write my thoughts to help me process what I am learning. I have used NoSQL databases for search projects in the past. A NoSQL database like Elasticsearch stores documents in (usually) a single table....
Part of being a social animal is that we communicate with each other. We live in a society, and we have to interact with other people. A lot of that communication happens through language, especially spoken and signed language. For many of us, this language happens so freely and easily that it is as unremarkable as walking. It's something that...
When n and r are positive integers integers, with n ≥ r, there is an intuitive interpretation of the binomial coefficient C(n, r), namely the number of ways to select r things from a set of n things. For this reason C(n, r) is usually pronounced “n choose r.” But what might something like C(4.3, […] The post Binomial coefficients with non-integer...
Marc Palmer: Launch Day! Shareshot 1.0 Is Live in the App Store 🎉Today we launched Shareshot! We’ve been working on this app for almost exactly a year, and we’re so pleased to be able to finally ship it. Here’s a little backstory
I never heard of Bessel or Everett interpolation until long after college. I saw Lagrange interpolation several times. Why Lagrange and not Bessel or Everett? First of all, Bessel interpolation and Everett interpolation are not different kinds of interpolation; they are different algorithms for carrying out the same interpolation as Lagrange....
What does it mean to fail as a technical writer? How does one get up again? How can we correct course and rekindle the fire that helped us power through rejections, layoffs, and ostracism? Is there any switch we can toggle so that folks understand what it is that we do and provide us with the resources we need in order to contribute a verse? I’ve...
It was a quiet week, but still devoted to (pretty literally) mopping up stuff and checking off some long-standing items from my TODO lists. AII finally got around to adding InvokeAI to my AI stack, mostly so that my kids could play with it when I’m not fiddling with ollama. Progress on my own AI projects has been slow both due to the lack of...
We recently made a Polylog video about the P vs NP problem. As usual, our goal was to present an underrated topic in a broadly understandable way, while being slightly imprecise and leaving out the messy technical details. This post is where I explain those details so that I can sleep well at night. EDIT: … Continue reading What P vs NP is...
Somehow people are still putting tiny libraries on npm, and it really needs to stop.
Electron on Linux: open files in a new window if there isn't one in the current workspace
The language that helped coin the moniker Rust Evangelism Strike Force, and which is slowly starting to get to me. Resources Category Date Link Notes Data 2021 ballista an Apache Spark-like distributed execution environment 2023 lance a modern columnar data format that is optimized for ML workflows and datasets, compatible with pandas Embedded...
Recent tech trends have followed a pattern of being huge society-disrupting systems that people don’t actually want. Worse, it then turns out there’s some reason they’re not just useless, they’re actively harmful. While planned obsolescence means this applies to consumer products in general, the recent major tech fad hypes — cryptocurrency,...
Use cases, techniques, alignment, finetuning, and critiques against LLM-evaluators.
I originally began documenting my learning journey on X as a fun, casual pact with a new internet friend. We wanted to keep each other accountable. What began as a personal log, getting me zero views and likes, unexpectedly changed after my account gained traction on day 28, thanks to a viral post. Suddenly, I found myself publically my daily...
I originally began documenting my learning journey on X as a fun, casual pact with a new internet friend. We wanted to keep each other accountable. What began as a personal log, getting me zero views and likes, unexpectedly changed after my account gained traction on day 28, thanks to a viral post. Suddenly, I found myself publically my daily...
Data is reductive. It objectifies. It bureaucratizes. But is it a bad idea?
Introduction Back in 2013, Marc Scott wrote a great blog post: Kids can’t use computers…and this is why it should worry you. If you haven’t read it, I highly recommend it! In my opinion, Scott’s take was true in 2013, and even more true now, over a decade later. An arguably-too-brief summary of the post is: despite the...
When you are working with dictionaries in Python, you may be familiar with the following process: You initialize a dictionary. You iterate over data. You check if a key is in a dictionary. If it isn’t, you add a default value. You add to the value associated with the key (i.e. to increment a counter, or add an item to a list or set). With the...
When you are building applications, you may want to add a cache to parts of your application. For example, consider a web directory that lists recipes. The directory has thousands of recipes available. You may want to add caching to database queries so that you don’t have to look up the database every time a user makes a request to the web...
Consensus algorithms allow computer scientists and data analysts to answer a question based on information from several data sources. These data sources may be independent, or data taken from the same source but at different time frames. Consider a scenario where you are building a tool that retrieves tags from Wikipedia album pages to build a...
For the past few weeks I've been thinking about how hard it is to develop software.
A lot of new CS grads have been noting that is really hard to get a job. I’ve personally been contacted by a couple people, including outside of Twitter, about the difficulty of finding a job. I’m sure if you’re reading this that you’ve heard some stories, too. Here I will attempt to provide some … Continue reading Why does getting a job in tech...
I like SemVer. However, there is one important use case that I wish it supported better. This is what I’ll call “rolling deprecation”.The idea is simply that instead of removing APIs in a single compatibility-breaking version, you first deprecate an API in one version, then remove it in a later version. This gives time to migrate off of the...
As a sort of quick follow-up to my earlier post on running NixOS on ARM LXC/LXD I decided to do the same on Proxmox and document the process for its LXC environment. Although I have both ARM and Intel machines running Proxmox, I focused on Intel since I wanted to replace the NixOS VM I had running with something lighter, and LXC containers have...
Radxa X4 SBC Unites Intel N100 and Raspberry Pi RP2040 At first glance, especially from the top, the Radxa X4 is your typical Arm SBC: But you'll quickly notice the lack of an SoC—that's on the bottom. Looking more closely, what's a Raspberry Pi chip doing on top?! First, let's flip over the board to investigate. There's the SoC:...
I never expected to review this many keyboards in a year, but it’s Summer, and here we are. Well, this was unexpected. Disclaimer: Hexgears reached out to me and sent me a preview unit of the A3 (for which I thank them), and as usual this post follows my review policy. I’ve been focusing on minimizing my keyboard footprint (sometimes to ludicrous...
Data compression is everywhere. We’re unaware of it when it is done well. We only become aware of it when it is pushed too far, such as when a photo looks grainy or fuzzy because it was compressed too much. The basic idea of data compression is to not transmit the raw data but to […] The post Compression and interpolation first appeared on John...
Over the past year as I’ve dived deep into systems programming, I’ve developed a strong appreciation for the finer details that drive performance optimization—something I truly enjoy discussing.
The SoundSource giveaway has ended, and I have winners to announce! The winners! Congratulations to: Tim Stevens Joe Wright Stuart Liddell You should have received an email with details, please let me know if you didn’t hear anything! But I didn’t win! If you didn’t win, sorry, but SoundSource is still worth checking out. If you have...
The SoundSource giveaway has ended, and I have winners to announce! The winners! Congratulations to: Tim Stevens Joe Wright Stuart Liddell You should have received an email with details, please let me know if you didn’t hear anything! But I didn’t win! If you didn’t win, sorry, but SoundSource is still worth checking out. If you have...
The SoundSource giveaway has ended, and I have winners to announce! The winners! Congratulations to: Tim Stevens Joe Wright Stuart Liddell You should have received an email with details, please let me know if you didn’t hear anything! But I didn’t win! If you didn’t win, sorry, but SoundSource is still worth checking out. If you have...
The term “magic” is commonly thrown about in the programming world without a definition. This post gives a definition for it. Not the definition, just a definition. As a long-standing fuzzy term, I can’t necessarily capture all uses of it in the wild, but I believe this captures a lot of the practical value. Magic Definition A piece of code is...
In an app that has S3 files and a Postgres database storing file metadata, we might have a DELETE route that looks something like: Select file from db, and if it does not exist throw a 404. If the file’s owner isn’t our session’s user, check the db if the session’s user is an admin Delete file from the db Delete file from S3 The above steps...
Ever since I was a kid, I dreamed of running my own company, inspired by industry giants and eager to make a mark as they did. Your browser does not support HTML5 video. I had a stark realization in my teenage years after talking to my then mentors: marketing is the secret missing ingredient. Many great product-focused startups silently die...
I like Go. I think it is a reasonable good language, and has some good qualities that makes up for its flaws. However, this doesn't mean I think the language couldn't be better, far from it. This blog post is a list of things that I miss from Go from other languages. Some of the things here could probably be implemented soon, some other would...
I like Go. I think it is a reasonable good language, and has some good qualities that makes up for its flaws. However, this doesn't mean I think the language couldn't be better, far from it. This blog post is a list of things that I miss from Go from other languages. Some of the things here could probably be implemented soon, some other would...
One flat white, please. I sometimes order food, too; a warm croissant or fruit. I sit down at a table and take out my book from my backpack, the book I packed the previous day. Sometimes, I have two, if I am on the cusp of finishing one of them. I recline back in the chair in which I am sitting, open to the last page I was reading. This page is...
Websites that use well-defined URL structures are easier for me to navigate. When I use a site enough, I can remember specific paths, infer the structure of a site so I can find the page to which I want to go, and more. Some affordances of clean URL design, such as ease of navigation, can be implemented directly on the page – for example,...
In the “How to build a search index in Python” tutorial, we walked through how to build a search index in Python. This index, when queried, gives equal weights to all words that you use in your query. Thus, you can retrieve documents that contain words, but the documents are not ordered in any way. Once you have a search index, the next step is...
In this guide, I walk through how to build a query language in Python. No required knowledge of query languages is required to follow this guide. You will find this article easier to understand if you have some knowledge of trees. This guide should get you set up with all the information you need to make your own query language. With that said,...
Many widespread internet protocols were written at a time when internet security wasn’t much of a consideration. From things like lack of From address verification in email to NTP reflection there are lots of protocols that are now considered badly designed. When they were authored there was a lot of implicit trust (For example because there were...