David Crawshaw
@crawshaw.io
ceo exe.dev, tailscale co-founder, programmer
It is a testament to how much launch activity there is that the FAA has to restrict commercial launch to night to avoid impacting ATC during the shutdown.
November 7, 2025 at 4:32 AM
It is a testament to how much launch activity there is that the FAA has to restrict commercial launch to night to avoid impacting ATC during the shutdown.
Today I learned there is a status page for all of US airspace. nasstatus.faa.gov
November 6, 2025 at 3:38 AM
Today I learned there is a status page for all of US airspace. nasstatus.faa.gov
The Mac Pro comes with an M2 Ultra, and the Apple Studio comes with an M3 Ultra.
October 31, 2025 at 8:24 PM
The Mac Pro comes with an M2 Ultra, and the Apple Studio comes with an M3 Ultra.
This is a very nice blog post because it is not afraid to explain hard work in terms of simple concepts. go.dev/blog/greente...
The Green Tea Garbage Collector - The Go Programming Language
Go 1.25 includes a new experimental garbage collector, Green Tea.
go.dev
October 30, 2025 at 10:26 PM
This is a very nice blog post because it is not afraid to explain hard work in terms of simple concepts. go.dev/blog/greente...
What is going on with Ubuntu?
$ aws
Command 'aws' not found, but can be installed with:
sudo snap install aws-cli # version 1.42.58, or
sudo apt install awscli # version 2.14.6-1
$ sudo apt install awscli
Package 'awscli' has no installation candidate
$ aws
Command 'aws' not found, but can be installed with:
sudo snap install aws-cli # version 1.42.58, or
sudo apt install awscli # version 2.14.6-1
$ sudo apt install awscli
Package 'awscli' has no installation candidate
October 26, 2025 at 10:10 PM
What is going on with Ubuntu?
$ aws
Command 'aws' not found, but can be installed with:
sudo snap install aws-cli # version 1.42.58, or
sudo apt install awscli # version 2.14.6-1
$ sudo apt install awscli
Package 'awscli' has no installation candidate
$ aws
Command 'aws' not found, but can be installed with:
sudo snap install aws-cli # version 1.42.58, or
sudo apt install awscli # version 2.14.6-1
$ sudo apt install awscli
Package 'awscli' has no installation candidate
Used to: boot cdrom to install OS
Now: visit web site of board management console, insert virtual cdrom from across the network using web serial console, set as primary boot device in bios
Glad we made that easy.
Now: visit web site of board management console, insert virtual cdrom from across the network using web serial console, set as primary boot device in bios
Glad we made that easy.
October 17, 2025 at 9:42 PM
Used to: boot cdrom to install OS
Now: visit web site of board management console, insert virtual cdrom from across the network using web serial console, set as primary boot device in bios
Glad we made that easy.
Now: visit web site of board management console, insert virtual cdrom from across the network using web serial console, set as primary boot device in bios
Glad we made that easy.
Old-school memory management technique.
October 13, 2025 at 11:01 PM
Old-school memory management technique.
When you're talking to people about developing web sites it is easy to get ground down by constant React talk and accept it as an inevitability. If you ever find yourself here, hop on a plane and try to use GitHub Issues. Esp. if you remember that it used to work, before React.
October 13, 2025 at 4:59 PM
When you're talking to people about developing web sites it is easy to get ground down by constant React talk and accept it as an inevitability. If you ever find yourself here, hop on a plane and try to use GitHub Issues. Esp. if you remember that it used to work, before React.
You can put your prices on your web site. You don't need to make prospects "contact sales" for pricing.
October 12, 2025 at 7:56 PM
You can put your prices on your web site. You don't need to make prospects "contact sales" for pricing.
It is surreal flying in a plane equipped with Starlink. I may as well be sitting in the office. Forgot to git clone 2GB of nonsense before getting on the plane? No problem, it runs as fast here as it does in my living room.
September 25, 2025 at 10:14 PM
It is surreal flying in a plane equipped with Starlink. I may as well be sitting in the office. Forgot to git clone 2GB of nonsense before getting on the plane? No problem, it runs as fast here as it does in my living room.
iOS 26 has broken half the complications on my watch, with the weather asking me every hour if it is allowed to know my location (and then not telling me the weather).
The Earth still spins. But I am surprised this did not come up in QA?
The Earth still spins. But I am surprised this did not come up in QA?
September 24, 2025 at 3:47 AM
iOS 26 has broken half the complications on my watch, with the weather asking me every hour if it is allowed to know my location (and then not telling me the weather).
The Earth still spins. But I am surprised this did not come up in QA?
The Earth still spins. But I am surprised this did not come up in QA?
You can ship a container without a shell in it. There is no law against it. I will sigh quietly.
But if you ship a container with a shell and without the ps command, I will judge you.
But if you ship a container with a shell and without the ps command, I will judge you.
September 13, 2025 at 4:43 AM
You can ship a container without a shell in it. There is no law against it. I will sigh quietly.
But if you ship a container with a shell and without the ps command, I will judge you.
But if you ship a container with a shell and without the ps command, I will judge you.
Most SQLite databases have a table with a single row for program metadata. You can enforce that there is only one row with:
CREATE TABLE metadata (
id INTEGER PRIMARY KEY CHECK (id = 1), -- one row
...
);
CREATE TABLE metadata (
id INTEGER PRIMARY KEY CHECK (id = 1), -- one row
...
);
September 11, 2025 at 3:14 AM
Most SQLite databases have a table with a single row for program metadata. You can enforce that there is only one row with:
CREATE TABLE metadata (
id INTEGER PRIMARY KEY CHECK (id = 1), -- one row
...
);
CREATE TABLE metadata (
id INTEGER PRIMARY KEY CHECK (id = 1), -- one row
...
);
I am curious to see what memory bugs remain practical on iOS with MIE and typed allocators. The fact that memory tags are enforced even in kernel access to userspace memory is going to make use-after-free and buffer overflows extremely hard. security.apple.com/blog/memory-...
Blog - Memory Integrity Enforcement: A complete vision for memory safety in Apple devices - Apple Security Research
Memory Integrity Enforcement (MIE) is the culmination of an unprecedented design and engineering effort spanning half a decade that combines the unique strengths of Apple silicon hardware with our adv...
security.apple.com
September 10, 2025 at 12:09 PM
I am curious to see what memory bugs remain practical on iOS with MIE and typed allocators. The fact that memory tags are enforced even in kernel access to userspace memory is going to make use-after-free and buffer overflows extremely hard. security.apple.com/blog/memory-...
$ git reset -hard 37dd8d3
error: did you mean `--hard` (with two dashes)?
we will never know
error: did you mean `--hard` (with two dashes)?
we will never know
September 8, 2025 at 5:09 PM
$ git reset -hard 37dd8d3
error: did you mean `--hard` (with two dashes)?
we will never know
error: did you mean `--hard` (with two dashes)?
we will never know
It is 2025 and Unix is asking the big questions.
September 2, 2025 at 12:38 AM
It is 2025 and Unix is asking the big questions.
Sad that of the word telephone, we dropped the tele- (still very true of modern devices) and kept the -phone (which we don't use).
August 31, 2025 at 3:41 PM
Sad that of the word telephone, we dropped the tele- (still very true of modern devices) and kept the -phone (which we don't use).
Most impressive thing I have seen in a container today: it ships with bash, but not ps.
August 31, 2025 at 5:01 AM
Most impressive thing I have seen in a container today: it ships with bash, but not ps.
I spent an hour today trying to find a missing —nested-virtualization flag, was ready to blame an LLM for writing the docs, only to discover the flag is conditionalized on having an M3 or M4. Amazing world, I’m two CPU revisions behind and would never have known from performance alone.
August 28, 2025 at 11:38 PM
I spent an hour today trying to find a missing —nested-virtualization flag, was ready to blame an LLM for writing the docs, only to discover the flag is conditionalized on having an M3 or M4. Amazing world, I’m two CPU revisions behind and would never have known from performance alone.
"Five next-generation Acela trains begin service Thursday as part of a $2.45 billion project to improve service ... two of them running from Washington to Boston will actually travel more slowly than their predecessors do on the same route"
Like so many software infrastructure projects.
Like so many software infrastructure projects.
August 28, 2025 at 2:36 PM
"Five next-generation Acela trains begin service Thursday as part of a $2.45 billion project to improve service ... two of them running from Washington to Boston will actually travel more slowly than their predecessors do on the same route"
Like so many software infrastructure projects.
Like so many software infrastructure projects.
Use TouchID for sudo on macOS:
- cd /etc/pam.d && cp sudo_local.template sudo_local
- uncomment the line in sudo_local
- cd /etc/pam.d && cp sudo_local.template sudo_local
- uncomment the line in sudo_local
August 18, 2025 at 3:38 PM
Use TouchID for sudo on macOS:
- cd /etc/pam.d && cp sudo_local.template sudo_local
- uncomment the line in sudo_local
- cd /etc/pam.d && cp sudo_local.template sudo_local
- uncomment the line in sudo_local
Going to spend today deleting emails to conserve water.
August 16, 2025 at 2:24 PM
Going to spend today deleting emails to conserve water.
# Install Go 1.24.2
ENV GO_VERSION=1.24.3
someone cooked here
ENV GO_VERSION=1.24.3
someone cooked here
August 13, 2025 at 2:40 PM
# Install Go 1.24.2
ENV GO_VERSION=1.24.3
someone cooked here
ENV GO_VERSION=1.24.3
someone cooked here
We are knee-deep in studying the developer experience around containers, because if agents are going to be maximally useful, they need to be in a box. What we have discovered so far: sketch.dev/blog/in-prai...
August 12, 2025 at 2:37 PM
We are knee-deep in studying the developer experience around containers, because if agents are going to be maximally useful, they need to be in a box. What we have discovered so far: sketch.dev/blog/in-prai...