NetBSD on the last G4 Mac mini and making the kernel power failure proof
(First, as a public service message, if you're running Linux on a G5 you may wish to update the kernel .) I'm a big fan of NetBSD . I've ru...
(First, as a public service message, if you're running Linux on a G5 you may wish to update the kernel .) I'm a big fan of NetBSD . I've ru...
cccccblgtbhdtvkdkbdfcdvgiicuckkdkruvfceiuiur
This post is about uninitialized memory, but also about the semantics of highly optimized “low-level” languages in general. I will try to convince you that reasoning by “what the hardware d...
A performance comparison between three different methods of deploying an API on AWS
Task Manager can be lacking as a memory tracker. Let's cover alternatives to replace it. First, let’s discuss how memory allocations work in Windows.
We all have stories, as engineers, of fixing some crazy thing at the last minute right before the demo goes up. We have all encountered situations where we needed to fix something that was our fault and we needed to fix it now.
The database is usually the most critical part of a software architecture and managing databases, especially relational ones, has never been easy. For this reason, we created Amazon Aurora Serverless, an auto-scaling version of Amazon Aurora that automatically starts up, shuts down and scales up or down based on your…
Code that shows how floating point arithmetic can go wrong, and how C and C++ can return different results for similar code.
Paul Khuong's personal blog. Some Lisp, some optimisation, mathematical or computer.
A paper on debugging non-deterministic concurrency issues interactively.
I have always wanted the Cone compiler to be fast. Faster build times make it easier and more pleasant for the programmer to iterate and experiment quickly. Compilers built for speed, such as Turbo Pascal, D and Go, win praise and loyalty. Languages that struggle more with this, like C++ or Rust, get regular…
Whenever new technologies emerge, the first priority for a technologist is to understand the implication of adopting it. Serverless architecture is a case in point.
The Linux AIO is designed for, well, Asynchronous disk IO! They are not network sockets, but is it possible to use Linux AIO API with network sockets? The answer is a strong YES!
Every monitoring system has to deal with three kinds of performance-related challenges. Firstly, a good monitoring system must receive, process and record incoming data very quickly. Every microsecond counts here. This may not seem obvious from the start but when your system becomes large enough all the tiny fractions…
Raspberry Pi 4 just got a lot cooler! The last four months of firmware updates have taken over half a watt out of idle power and nearly a watt out of fully loaded power
Solving problems by identifying underlying systems
The current article describes a series of Java Virtual Machine (JVM) Garbage Collectors (GC) micro-benchmarks and their results, using a different set of patterns. For the current issue, I included all Garbage Collectors from AdoptOpenJDK 64-Bit Server VM version 13 (build 13+33) :
CockroachDB's consistency model fits somewhere between serializability and linerarizability. We're proposing a new marketing phrase for CRDB's guarantees: no stale reads.
I wrote a couple of years ago about the troubles I had finding a good libc for embedded systems , and for the last year or so I've been using something I called 'newlib-nano', which was newlib with the stdio from avrlibc bolted on. That library has worked pretty well, and required very little work to ship.
We open-sourced a fault injection tool, KRF, that uses kernel-space syscall interception. You can use it today to find faulty assumptions (and resultant bugs) in your programs. Check it out! This post covers intercepting system calls from within the Linux kernel, via a plain old kernel module. We’ll go through a quick…
In my previous post, I reviewed a new fast random number generator called wyhash. I commented that I expected it to do well on x64 processors (Intel and AMD), but not so well on ARM processors. Let us review again wyhash: uint64_t wyhash64_x; uint64_t wyhash64() { wyhash64_x += 0x60bee2bee120fc15; __uint128_t tmp; tmp…
Serverless computing: one step forward, two steps back Hellerstein et al., CIDR’19 The biennial Conference on Innovative Data Systems Research has come round again. Today’s paper choice is su…
Hi, people of the future! Did you know that I wrote a follow-up article to this one, called “Further Thoughts on Wayland”? This original article was written in a more combative tone tha…
If you're a programmer who's become fed up with software bloat, then may you find herein the perfect antidote.
Lightweight virtualization is a natural fit for low power devices and, so, seeing that the extremely popular Raspberry Pi line got an upgrade, we were very keen on trying the newly released Raspberry Pi 4 model B. Getting the board up and running with a 64bit kernel (and a 64bit userland) proved to be kind of a…