Particle Physicists Continue to Make Empty Promises
Science News, Physics, Science, Philosophy, Philosophy of Science
Why software ends up complex
Complexity in software, whether it’s a programming languages, an API, or a user interface, is generally regarded as a vice. And yet complexity is exceptionally common, even though no one ever sets out to build something complex. For people interested in building easy to use software, understanding the causes of…
AWS Graviton2
In November of last year, AWS announced the first ARM-based AWS instance type ( AWS Designed Processor: Graviton ). For me this was a very big deal because I’ve been talking about ARM based servers for more than a decade, believing that massive client volumes fund the R&D stream that feeds most server-side innovation…
Peer Review
This blog is not peer reviewed at all. I write it, I put it out there, and people read it or not. It is my little megaphone that I alone control.
My New Old Apple IIe Computer
How I found a vintage Apple IIe computer on the sidewalk and brought it back to life
Mac sandbox escape
This blog post discloses a sandbox escape on macOS. I reported the issue to Apple Product Security on December 19 2019, the day the Apple Security Bounty program finally opened. (I discovered the issue in August 2019.) Today I received an email from Apple Product Security saying "we do not see any actual security…
Why is Wednesday, November 17, 1858 the base time for OpenVMS?
The URL you requested is no longer available. Please contact the site owner directly if you need to access their files. They are responsible for migrating their content to another site.
Dissecting Lemire's nearly divisionless random number generator
A very late blog post announcing the readability contest winners, a new (very) annotated implementation, and a surprising sort-of security issue found along the way.
I made a mechanical keyboard with 3D-printed switches
The keyboard is done! This is basically the result of what I've been working on for the past 2 months, which has involved 3 iterations of testing machines, over 100 printed switches, and now finally a keyboard that I can type on. Unfortunately it is not a very good keyboard, but you can't win them all.
Rediscovering CardDAV
I can no longer sync iOS’ Contacts with my macOS Catalina’s Finder (the iOS sync portion of iTunes is now built into the Finder in macOS Catalina); the OS insists I’ve iCloud configured for Contact...
A Defer Mechanism for C
An overview of a paper that presents a reference implementation of a defer mechanism (co-authored with Robert C. Seacord) has been accepted for publication at SAC’21. The full version is avai…
Microservices Considered Harmful (2019)
A recent trend in our industry is the software architecture move from a monolith app to microservices, often with a related blog post explaining how much better everything is after. A recent blog post by neo-bank Monzo explains that they have reached the crazy amount of 1500 microservices (a ratio of ~10 microservices…
13% of my website visitors block Google Analytics
There’s widespread use of adblockers on the web but users are increasingly blocking cookies and other tracking scripts too. Browsers such as Safari, Firefox and Brave are privacy-focused.
Libinput's bus factor is 1 (2019)
A few weeks back, I was at XDC and gave a talk about various current and past input stack developments (well, a subset thereof anyway). On...
How the Digg team was acquihired
About a year after the catastrophic Digg V4 launch, our last-ditch experiment to salvage the site showed a spark of hope. We’d cajoled our way into a Facebook beta that allowed us to publish each Digg users’s read articles into their Facebook newsfeed, sending every clicking friend directly to Digg’s permalink page…
Being Glue
Slides and notes for the Being Glue talk.
Rust concurrency: the archetype of a message-passing bug
Whenever I have a chance, I extol the virtues of message-passing and event-loops in structuring concurrent workflows in Rust. However, in…
Writing Python inside Rust
About a year ago, I published a Rust crate called inline-python, which allows you to easily mix some Python into your Rust code using a python!{ .. } macro. In this series, I’ll go through the process of developing this crate from scratch.
Rust for JavaScript Developers – Functions and Control Flow
Part 3 covers functions, closures, if-else, while, for..in, range and iterators
Why it's great to write blog posts
I’ve been blogging for close to four years now. I started blogging because I wanted to pick up a new skill (writing) and challenge myself to do something new. Because I blog about what is both my work and hobby - software development and more specifically, cloud/platform engineering - it’s relatively simple to come up…
What is music? A unified theory of music and dreaming
For the purposes of this article, when I talk about "dreams" and "dreaming", without any further qualification, I am referring to the dreams that occur during sleep.
Straightened Trees
Using custom code, the natural curvature of each tree is "corrected." Manufactured objects, i.e. buildings and power lines, twist and contort around the artificially plumbed tree. Each photo is shot on large format film, the only medium that captures enough detail to straighten the tree without pixelly artifacts…
Scripting tmux
I often want to start similar workspaces in tmux; for example I always want to tail those two log files in a pane , or I always want to start both vim and mysql in a pane, etc.
A circuit board from the Saturn V rocket, reverse-engineered and explained
In the Apollo Moon missions, the Saturn V rocket was guided by an advanced onboard computer system built by IBM. This system was built fro...
Switching from Vim to Intellij
From Vim To IntelliJ In the beginning, a love affair For the last 10 years or so, I have been a die-hard Vim user. I was introduced to Vim…