Select(2) is fundamentally broken
In a previous blog post we discussed a brief history of the select(2) syscall . The article concludes that some I/O multiplexing was necessary to do console emulation, games and non-trivial TCP/IP applications.
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 4,390 posts.
In a previous blog post we discussed a brief history of the select(2) syscall . The article concludes that some I/O multiplexing was necessary to do console emulation, games and non-trivial TCP/IP applications.
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…
The Internet's architecture is viewed as an hourglass: broad application support at the top, narrow waist (IP), wide choice of links below IP
Cliff L. Biffle blogged a great write-up of a debugging odyssey at Oxide with the title Who killed the network switch? Here’s the bit that jumped out at me: At the time that code was written…
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…
Using a glibc version that is different from the system-provided one shouldn't require the use of containers, as I recently heard someone claim. Let's take a look at how dynamic linking works and what the options are.
Every field of human activity has its unique characteristics, and programming is no exception.
As a software developer, I spend a lot of time using the terminal, or more properly, a “terminal emulator”. Tools like iTerm2 , or PuTTY , or GNOME Terminal , or the classic xterm and rxvt are all “terminal emulators”; they take raw text and formatting instructions and interpret them to display pretty text on the…
In my video about the Raspberry Pi 5, I mentioned the new external PCIe port makes it possible to boot the standard Pi 5 model B directly off NVMe storage—an option which is much faster and more reliable than standard microSD storage (even with industrial-rated cards!). Enabling NVMe boot is pretty easy, you add a…
Why an Intel Mac’s up to 40 Gb/s from Thunderbolt 3 is less than an Apple silicon Mac’s up to 40 Gb/s from USB4, and how you can benefit from it.
Learn about Wayland and Ubuntu Touch on PinePhone... And how we build PinePhone Apps with LVGL
Yesterday, I read a phenomenal paper on how disruption free release at Facebook.
ARM64EC (and ARM64X) Explained Probably the most confused looks I get from other developers when I discuss Windows and ARM64 is when I used the term " ARM64EC ". They ask is the same thing as ARM64? Is it a different instruction set than ARM64? How can you tell if an application is or ARM64 ARM64EC?
SSE and SSE2 are available in every single x86-family CPU with 64-bit support. You too can play around with SIMD, which is great fun! Unfortunately, SSE2 level in particular also happens to be what…
In 1994 I got my first computer: an Intel i486 DX2-66 with 4 MB RAM and a 512MB harddisk. The software was IBMs OS/2 and Microsofts Windows 3.11. In the next four years I was upgrading this machine every few months with more RAM (up to 16MB), a CD-ROM-drive and a soundblaster card. So I learned upgrading this machine…
I recently tried using the Minisforum DEG1 GPU Dock with a Raspberry Pi 500+, using an M.2 to OCuLink adapter, and this chenyang SFF-8611 Cable. After figuring out there's a power button on the DEG1 (which needs to be turned on), and after fiddling around with the switches on the PCB (hidden under the large metal…
Before we explore FreeBSD jails, it is worth refreshing our understanding of how Linux solved the same problem with LXC (Linux Containers).
This week, I’ve been working on an application that sets up IPsec connections. PF_KEYv2 is the standard interface for configuring IPsec. PF_KEYv2 is widely-available; even systems with more advanced IPsec stacks (like XFRM on Linux) provide a PF_KEYv2-compatible wrapper. I want my application to work on OS X and…
"I just want to run a container!"
Attached Code: https://github.com/iainkfraser/cache_transpose Before we begin, the underlined words are briefly described in the gloss...
A follow-up on a previous story, in which we identify another problem, and perhaps confirm a theory through a theorem.
There is an increasing number of libraries which are described as high performance and have benchmarks to back that claim up. Here is a sele...
This website is for sale! pocketnix.org is your first and best source for information about pocketnix. Here you will also find topics relating to issues of general interest. We hope you find what you are looking for!
Resurrecting an old tradition of this blog, let’s take a simple problem, go over a way too long list of alternative solutions, and evaluate their merits. Our simple problem is this: we want 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...