What's in the Box?
Here’s a sentence I find myself saying several times a week: …or we could just box it. There’s two remarkable things about this sentence. The first, is that the advice is very rarely heeded, and in...
The latest blog posts to take off on Hacker News. 553 posts.
Here’s a sentence I find myself saying several times a week: …or we could just box it. There’s two remarkable things about this sentence. The first, is that the advice is very rarely heeded, and in...
Recently my friend Lars Hupel and I had a discussion on why formal methods don’t compose well. You can read the conversation here. We focused mostly on composing formally-verified code. I want to talk a little more about the difficulties in composing specifications. This is half because it’s difficult for interesting…
The MirkoPC is so far the closest thing to a full-fledged Raspberry Pi desktop computer: Based on the Compute Module 4, it has a full-size M.2 M-key slot, allowing the Pi to boot from reliable and fast NVMe SSD storage, a built-in headphone amp and line out, 4 USB 2.0 ports, gigabit Ethernet, two HDMI ports, and a…
After a few weeks of investigating the Apple M1 GPU in January, I was able to draw a triangle with my own open source code . Although I began dissecting the instruction set, the shaders there were specified as machine code. A real graphics driver needs a compiler from high-level shading languages (GLSL or Metal) to a…
How I reduced Rust incremental debug build times on macOS from 14 seconds down to 4 seconds.
It’s been almost a year that Keivan Beigi shut down the AppGet project in response to shenanigans by the Windows App Model team. Microsoft…
This article is the sequel to A Universal Async Abstraction for C++ , in which I talk about the Executor proposal targeting C++23. Quite a bit happened since then.
The covers a brief history of DNS on Linux systems and what steps Tailscale is taking to ensure it is configured consistently.
The name SQLite is a nice name, but the "lite" part is misleading, it sounds like it is only useful for tiny things - which is very wrong. SQLite should be named AwesomeSQL, because that is what it is. SQLite is probably the only database you will ever need in most cases.
disclaimer: this is a technical post aimed at developers being somewhat aware of the problem space. There will be a concluding ‘the day of…’ post aimed at end users where some of …
This is my main computer, a Thinkpad T410 with a 1st generation Intel Core i5 and 8 GB of RAM. It runs Arch Linux with Xfce.
People appear to enjoy the blog posts about me porting different compilers to OpenBSD . What I would like to do for the next couple of posts beginning with this one is to take a step back and de-complexify these programs. Both the D compiler and the GNU Modula-2 compiler are highly complex pieces of software. But at…
It all started with the big bang! We nearly lost 33 of 36 disks on a Proxmox / Ceph Cluster; this is the story of how we recovered them.
Please note that this is not an endorsement or criticism of either of these languages. It’s simply something I found interesting with how LLVM handles code generation between the two. This is an implementation quirk, not a language issue. Update (April 9, 2021): A bug report was filed and a fix was pushed! The LLVM…
Discover more about what's new at AWS with AWS Lambda@Edge changes duration billing granularity from 50ms down to 1ms
Building Brainf∗ck interpreter for the 21 century, with all the best systems design practices in mind. Think of Brainf∗ck-as-a-service cloud solution!
Adventures in leveling up our API rate limiting infrastructure
Retrocomputing and other indulgences
We successfully deployed ThreadSanitizer in the Firefox project to eliminate data races in our remaining C/C++ components.
I have an affinity for performance optimization and making software as efficient as possible. Over the years, I've encountered specific instances and common patterns that make software or computers slow. In this post, I'll shine a spotlight on some of them.
We’re pleased to announce the release of webOS Open Source Edition (OSE) 2.10.0. The highlights of this release are as follows: Storage access framework Enabling cookie encryption of Blink Peripheral Manager service ACG enhancements For more details on this release, see the release notes. Storage Access framework…
Many people must have heard this quote (by Phil Karlton) many times: There are only two hard things in Computer Science: cache invalidation and naming things. Two days ago, Nick Tierney mentioned it …
Kernel modules are code components that can be loaded and unloaded by the kernel when required. They are used to extend the functionality…
Ethical Hacking and Cybersecurity Blog
Ohai there, it's been a while
With git, a cryptographic signature on a commit provides strong integrity guarantees of the entire history of that branch going backwards...