Encrypted DNS and NTP = Deadlock
I recently found out the hard way that encrypted DNS can deadlock with NTP on embedded devices without a battery-backed clock.
The latest blog posts to take off on Hacker News. 377 posts.
I recently found out the hard way that encrypted DNS can deadlock with NTP on embedded devices without a battery-backed clock.
Introducing a new programming language.
I’m more surprised by the nature of many of these issues, by how ridiculous they are compared with the sheer age and supposed maturity of a 20+ year-old operating system.
On the 3rd of August 2016, an Emirates Boeing 777 landing in Dubai attempted a last second go-around after touching down too far along the…
Note 05/01/2025: Hello there, you can find an update version of this article here, with the latest findings, improvements and new tools. This is how a Docker container feels inside a macOS environment: lost at sea, far from the coast. With this article I will try to bring this poor container safely to the coast. TL;DR…
There are various ways in software to handle error conditions. In C or Go, one returns error code. Other programming languages like C++ or Java prefer to throw exceptions. One benefit of using exceptions is that it keeps your code mostly clean since the error-handling code is often separate. It is debatable whether…
Towards the end of last year, I switched from working on PHP at JetBrains, to working on LLVM at Red Hat. While it was already under discussion beforehand, this catalyzed the creation of the PHP foundation , which now pays multiple people to work on PHP. Special thanks for this go to Roman Pronskiy, who did most of…
As I mentioned in my last post, I spent a good chunk of my spare time over the past 6 months working on a project I’ve been thinking about for over a decade. I bought a Chumby 8 in 2011. It’s an 8″ touchscreen device powered by the Marvell PXA166 processor. It is essentially a souped-up digital picture frame with…
In C, the length of a string in marked by a 0 byte at the end of the string. Thus to determine the length of the string, one must scan it, looking for the 0 byte. Recent ARM processors have a powerful instruction set (SVE) that is well suited for such problems. It allows you … Continue reading Implementing ‘strlen’…
What every SRE should know about GNU/Linux shell related internals: file descriptors, pipes, terminals, user sessions, process groups and daemons # Last updated: Oct 2025 Contents File descriptor and open file description Pipes Process groups, jobs and sessions Terminals and pseudoterminals Despite the era of…
Get root on macOS 13.0.1 with CVE-2022-46689 (macOS equivalent of the Dirty Cow bug), using the testcase extracted from Apple’s XNU source.
Yes, you read that right... for $8 you can run linux on a RISC-V computer. And not just a stripped down kernel without an MMU. No, t...
Tonight's story time: the Power Macintosh that wouldn't make any sound in BeOS R5, how I figured out the problem, and how I hacked the sound...
... in which we check if your password has been compromised in many inconvenient ways, in a tale of destruction, obsession, and self-discovery.
I love to have Linux as my main OS. For someone who spends most of his time programming, writing HTML, writing LaTeX, and browsing the net, it is nearly a perfect tool. Packages are one "apt install" away. Mounting my website is one sshfs away and with private key authentication I don't even have to type my password…
Over the years I've seen a lot of poorly made comparisons of Linux Desktop Environments in terms of system usage and in this article I want to make things right once and for all.
FreeBSD had a security fluctuation in their implementation of ping(8) the other day. As someone who has done a lot of work on ping(8) in OpenBSD this tickled my interests.
By Devine Lu Linvega
Modern processors have powerful vector instructions which allow you to load several values at once, and operate (in one instruction) on all these values. Similarly, they allow you to have vector constants. Thus if you wanted to add some integer (say 10001) to all integers in a large array, you might first load a…
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
When I wrote the introductory article for libjit , I aimed it at programmers who know what JITs are, at least to some extent. I did mention what a JIT is, but only very briefly. The purpose of this article is to provide a better introductory overview of JITing, with code samples that don't rely on any libraries.
Is exFAT as fragile as some say?
All kinds of reasonable-sounding beliefs about undefined behavior are wrong. Let's go through them.
Yes, this is a problem of weak static typing of pure C. Pure C is a great tool for some jobs, but here be dragons , as they say.
In 2022, disk I/O is very fast, and not usually the performance bottleneck in programs. This article digs into some numbers.
My colleagues recently wrote a great post on the Netflix tech blog about a tough performance issue they wrestled with. They ultimately diagnosed the problem as false sharing, which is a performance…
I occasionally do talks about curl. In these talks I often include a few slides that say something abut curl's coverage and presence on different platforms. Mostly to boast of course, but also to help explain to the audience how curl has manged to reach its ten billion installations. This is current incarnation of…