A suggestion for better Zig meetups.If you're trying to learn Zig in 2024, one key ingredient is still interacting with the Zig community. More docs, blog posts, videos about Zig are getting released over time, but in my opinion direct collaboration is still the most effective way to dispel unknown unknowns, get unblocked when you're stuck, and improve your overall coding style by adopting new patterns as they get discovered by other members of the community.When it comes...
For a few years now I have been working on the Haskell Language Server (HLS), and the lsp library for the LSP protocol and writing LSP servers. Unsurprisingly, I have developed some opinions about the design of the LSP! Recently I gave a talk about HLS and LSP at the Haskell Ecosystem Workshop at Zurihac 2024. One slide featured a hastily-written...
Clarity is key: being explicit makes your code more readable and maintainable.
In their paper on Evolvability, Marc Kirschner and John Gerhart discuss the separation of concerns within our genetic code. They pay special attention to limbs: The limb is a complex structure with precisely placed bone, cartilage, muscle, nerves, and vascular elements, and one might think it is difficult for such a structure to change in...
In their paper on Evolvability, Marc Kirschner and John Gerhart discuss the separation of concerns within our genetic code. They pay special attention to limbs: The limb is a complex structure with precisely placed bone, cartilage, muscle, nerves, and vascular elements, and one might think it is difficult for such a structure to change in...
One of the ways I like to do development is to build something, click around a ton, make tweaks, click around more, more tweaks, more clicks, etc., until I finally consider it done. The clicking around a ton is the important part. If it’s a page transition, that means going back and forth a ton. Click, back button. Click, right-click context...
What happens when you touch a Pickle to an AM radio tower? A few months ago, our AM radio hot dog experiment went mildly viral. That was a result of me asking my Dad 'what would happen if you ground a hot dog to one of your AM radio towers?' He didn't know, so one night on the way to my son's volleyball practice, we tested it. And it...
RF safety experiments - Meat & Pickles demonstrate foldback A few months ago, our AM radio hot dog experiment went mildly viral. That was a result of me asking my Dad 'what would happen if you ground a hot dog to one of your AM radio towers?' He didn't know, so one night on the way to my son's volleyball practice, we tested it. And it...
Andrew and Barbara are playing a game. Fifteen boxes are arranged in a 3-by-5 grid, labeled with the letters A through O, as shown below. A B C D E F G H I J K L M N O … Continue reading →
A few days ago I wrote about the approximation for cosine due to the Indian astronomer Aryabhata (476–550) and gave this plot of the error. I said that Aryabhata’s approximation is “not quite optimal since the ripples in the error function are not of equal height.” This was an allusion to the equioscillation theorem. Chebyshev […] The post...
Last week I asked if anyone had suggestions for a MagSafe car mount and I got a ton of recommendations. Loads of love for Peak Design but I'm not paying that much just to hold my phone. Lots of people also suggested various no-name brand ones from Amazon which were much more palatable to me. I ended up with this one by a company called Lisen. It...
We made a video about Levin’s universal search. This blog post collects a few more clarifications / interesting related facts. How to actually make the algorithm asymptotically optimal There are a few subtleties that we need to take care of if we really want to claim that our algorithm is asymptotically optimal algorithm for factoring. … Continue...
I don't know about you, but some days, it feels like all I do is tell my kids not to do stuff. Or to be careful with stuff. Or to do stuff.Most adults implicitly know to abide by the etiquette without thinking about it. It feels "normal," which makes it more difficult to notice when our kids do it, too.Deviation sticks out; conformity blends in.However, if we reinforce the positive when we see it, not only does it make for a calmer and more harmonious home, but it...
I wrote recently about the performance of PostgreSQL when compiled with different compilers and optimization levels. Another dimension in that evaluation is link-time optimization (LTO).
Following my previous post on rate limiting with GCRA, leaky buckets without the buckets, I reviewed my old notes on rate limiting for Exim. I thought I should do a new write-up of the ideas that I hope will be more broadly interesting. Exponential rate limiting uses an exponentially-weighted moving average to measure the client’s rate. It is...
One accurate measurement is worth a thousand expert opinions. – Grace Hopper Maintaining the right temperature for my swimming pool is crucial for enjoying a good swim. Instead of frequently checking a thermometer or relying on a mobile app, I wanted to get real-time temperature updates remotely. Here’s how I achieved this using an affordable BLE...
As I'm getting older a lot of my social circles are becoming ever more conservative. The focus shifts from building with ambition to fiercly protecting what one has achieved. Shifting the mind on protectionism makes one consider all that can cause damage. It puts the focus on the negative, it makes those negative thoughts feel much more...
If you've used Zig for a bit, you've probably come across the @memcpy builtin. It copies bytes from one region of memory to another. For example, if we wanted to concat two arrays, we could write a little helper: fn concat(comptime T: type, allocator: std.mem.Allocator, arr1: []const T, arr2: []const T) ![]T { var combined = try...
The first argument of a program's command line, typically reflecting the program's name/path and often referred to as `argv[0]`, can in most cases be set to an arbitrary value without affecting the process' flow. Making the case against `argv[0]`, this post demonstrates how it can be used to deceive security analysts, bypass detections and break...
As I'm getting older a lot of my social circles are becoming ever more conservative. The focus shifts from building with ambition to fiercly protecting what one has achieved. Shifting the mind on protectionism makes one consider all that can cause damage. It puts the focus on the negative, it makes those negative thoughts feel much more...
Canonical source code for software should include checksums of the content of all its dependencies.
I’ll always share a simple solution because simple is almost always the best option. Theme preferences and toggles are one of those things that can be super over-engineered, so it’s great Christopher has come through with a simple solution for the former. It’s something that’s still at the forefront of my mind since we’ve redesigned this site....
One of the coolest techniques I learned from Deming (and I have learned many cool techniques from Deming) comes not from his more popular books, but from Some Theory of Sampling11 Some Theory of Sampling; Deming; John Wiley & Sons; 1950. Deming never gives the technique a name, because to him it’s just an...
the SEC notified them last week that NFTs on the struggling platform are unregistered securities #
1994 replica of a printed circuit board handmade on an upright wooden loom #
Something people always say is that phone reviewers couldn’t possibly review a new device after just a few days. I’d contend that a good reviewer can do this because they’ve built up experience to know what to look for in established product categories like
I was going to write a longer, more involved post this week, but I wound up getting Covid and didn't have it in me to work through all the stuff I had to for that. So here is a smaller issue. I know of exactly one situation in which the grammar of SQL is "tricky" to parse. I use the word tricky because I've been out of the game too long to...
I was going to write a longer, more involved post this week, but I wound up getting Covid and didn't have it in me to work through all the stuff I had to for that. So here is a smaller issue. I know of exactly one situation in which the grammar of SQL is "tricky" to parse. I use the word tricky because I've been out of the game too long to...
This week’s must-read Is AI a Silver Bullet? — Ian Cooper - Staccato Signals This incredibly detailed and well thought out essay by Ian Cooper is a must-read. It took me a while to get around to reading it as it was originally published in June. Don’t be like me. Read it sooner rather than later. You won’t regret it. But the flaw in prompts as a...
People have been writing a bit about “estimated reading time”, the feature where a link to something is accompanied by an estimate of how long it will take you to read it. Matt Campbell pointed out that estimated reading times are often ableist. Adrian Roselli pointed out that existing widgets such as scroll bars do a better job of giving you a...
Years ago (12!) I made a script called Planter that would generate directory and file structures based on an indented template. I decided to reimagine the whole thing and am happy to release Planter 3 today. Instead of relying on a single template file, Planter now expects a template directory with all of the subdirectories and files you want to...
Years ago (12!) I made a script called Planter that would generate directory and file structures based on an indented template. I decided to reimagine the whole thing and am happy to release Planter 3 today. Instead of relying on a single template file, Planter now expects a template directory with all of the subdirectories and files you want to...
I’ve recently found out about TypeSpec, a new language aimed at describing web APIs, through an interview that bears the provocative title of API Design in the Post-OpenAPI Era. Leaving aside the fact that OpenAPI is very much alive, what left me stupefied was the assertion that OpenAPI files should be “automatically generated artifacts and...
I’m excited to offer the next giveaway, 5 lifetime Pro licenses ($19.99 value each) for Morpho Converter Pro. Morpho is an app for Mac, iOS, and Apple Watch that makes converting literally any number to any other unit possible. Miles to kilometers? Grams to ounces? USD to HKD? Anything you need to convert, Morpho is there for you, on your phone,...
I’m excited to offer the next giveaway, 5 lifetime Pro licenses ($19.99 value each) for Morpho Converter Pro. Morpho is an app for Mac, iOS, and Apple Watch that makes converting literally any number to any other unit possible. Miles to kilometers? Grams to ounces? USD to HKD? Anything you need to convert, Morpho is there for you, on your phone,...
Burning & Playing PS2 Games without a Modded Console 2024-09-02 Important: I do not support pirating or obtaining illegal copies of video games. This process should only be used to copy your existing PS2 games for backup, in case of accidental damage to the original disc. Requirements Note: This tutorial is tailored towards macOS users, but...
(Originally published on Mastodon, where I get these kinds of comments all the time.) X: We need systemic changes to tackle the climate crisis, guilting people into turning off their air con is pointless, we need to address corporate behaviour. Me: Totally. X: That’s why it’s okay for me to drive an SUV, fly for weekly for work, gamble on...
Use this if you want to publish your emacs package to Melpa
I helped a family member upgrade to a newer iPhone and make some room so that the internal storage does not run out. They had Nextcloud installed on the current phone, but due to limitations of the Nextcloud iOS app, the backups only take place if the app itself is open, meaning that we had hundreds of photos and videos that were not yet backed...
As mentioned in the previous post, the ratio of consecutive Fibonacci numbers converges to the golden ratio. Is there a sequence whose ratios converge to the silver ratio the way ratios of Fibonacci numbers converge to the golden ratio? (If you’re not familiar with the silver ratio, you can read more about it here.) The […] The post Pell is to...
Last night I realized that my life is very simple. That’s not by chance, but by conscious effort. Life becomes complex all by itself if you do nothing about it. One day you’ll wake up and you have a mortgage, 10 on-demand subscriptions, 20 insurances, 1000 open browser tabs, a demanding job and a dog. And when you realize it, you wonder how you...
A few weeks ago my 5-year-old and I tried playing Cat Crimes, a puzzle game in which you work out which of your cats ate your shoes. We had a wonderful time - for about 20 minutes. In each round of Cat Crimes you get a puzzle card with a list of clues on it. You have to use the clues to figure out where in your front room each of your 6 cats were...
I don't want to talk about AI. AI fatigue is real, with (garbage) AI content everywhere you go. However, I like to talk about tools, and AIs, or more specifically, Large Language Models (LLM), can be really useful tools. Maybe someday we will have our AI overlords dominating everything (including my job), but right now I don't feel particularly...
Here’s a Python snippet that makes an HTTP POST request: # script.py import httpx from typing import Any async def make_request(url: str) -> dict[str, Any]: headers = {"Content-Type": "application/json"} async with httpx.AsyncClient(headers=headers) as client: response = await client.post( url, json={"key_1": "value_1", "key_2": "value_2"}, )...
Sometimes I joke that as a principal engineer, my main programming language is English. It's half true, though, since my job is as much about people and communciation as it is about technology. Probably more, actually. Writing is useful at all levels of software engineering. It's not just something for tech leads, architects, and principal...
If you’re looking to containerize your SvelteKit application, you’ve come to the right place. In this post, we’ll walk through creating a Dockerfile for a SvelteKit app using adapter-node. Let’s dive in! Configure SvelteKit to use adapter-node First, let’s install adapter-node which builds your site for Node.js: Then, open the svelte.config.js...
AggregateError helps you handle multiple errors at once in JavaScript. This makes your code easier to manage and more reliable.
MathJax.Hub.Config({ CommonHTML: { scale: 105 } }); table.xyz { table-layout: fixed; border-collapse: collapse; margin-left:auto; margin-right:auto; } table.xyz th, table.xyz td { border: 1px solid black; } table.blueTable { border: 1px solid #1C6EA4; background-color:...
The number of kilometers in a mile is k = 1.609344 which is close to the golden ratio φ = 1.6180334. The ratio of consecutive Fibonacci numbers converges to φ, and so you can approximately convert miles to kilometers by multiplying by a Fibonacci number and dividing by the previous Fibonacci number. For example, you […] The post Miles to...
Pedro Domingos is a computer scientist at the University of Washington. I’ve known him for years as a guy who’d confidently explain to me why I was wrong about everything from physics to CS to politics … but then, for some reason, ask to meet with me again. Over the past 6 or 7 years, […]
“I knew you’d love this.” Is there anything more delicious? One of my favorite sensations of this meme age — a friend was scrolling, saw something, and thought of you.
In Paul Graham’s latest essay, he writes: The theme of Brian's talk was that the conventional wisdom about how to run larger companies is mistaken. As Airbnb grew, well-meaning people advised him that he had to run the company in a certain way for it to scale. Their advice could be optimistically summarized as "hire good people and give them room...