Raspberry Pi 4 PCIe bridge “chip”
After seeing the work done by Thomasz Mloduchowski and Colin Riley with managing to bridge the Raspberry Pi 4's PCI-Express bus to a USB 3.0 port, and then seeing these comments on hack-a-day, I thought I would give it a go too! So, here's a PCIe bridge chip that simply replaces the VL805 USB 3.
Psychic Paper: iOS Sandbox Escape
Siguza’s Blog
Back of the envelope estimation hacks
There are two types of engineers, the ones that can quickly do estimates and the ones that can’t. Are these people just smarter, or is there more to it? Enrico Fermi was a master at estimation Back of the envelope estimation is a skill that can be learned with practice. It becomes easier once you get familiar with…
Copying data is wasteful, mutating data is dangerous
Copying data wastes memory, and modifying/mutating data can lead to bugs. Learn how to implement a compromise between the two in Python: hidden mutability.
ARM and Lock-Free Programming
I was inspired by the release of Apple’s M1 ARM processor to tweet about the perils of lock-free programming which led to some robust discussion. The discussion went pretty well given the inanity o…
Fixing a 3 year old bug in Nvidia GeForce Experience
Background: Joystick Preventing Display Sleep A few months ago, I thought I ought to try Microsoft Flight Simulator 2020. The facsimile of o...
Ruby Concurrency Final Report
Ruby's native I/O methods traditionally blocked the calling fiber, leaving event-loop libraries to provide replacement wrappers. This Ruby Concurrency Progress Report presents a lightweight per-thread Fiber Scheduler which lets those native operations cooperate with an event loop. It explains the implementation and…
How you could have come up with Paxos yourself
In the field of computer science, the Paxos algorithm is notorious for how difficult it is to understand. I had to learn the Paxos algorithm in my distributed systems class. I even have "implemented" it by translating Leslie Lamport's TLA+ to Python. But I didn't understand it until much much later.
Crouching T2, Hidden Danger
Let’s talk about that thing nobody’s talking about. Let’s talk about a vulnerability that’s exposing 2018-2020 Macs while most are declining to act nor report about the matter. Oh, and did I mention it’s unpatchable?
The Fastest Google Fonts
Google Fonts is fast. Now it’s faster. Much faster.
SMT Solving on an iPhone (2018)
Why buy an expensive desktop computer when your iPhone is a faster SMT solver?
WasmBoxC: Simple, Fast, and VM-Less Sandboxing
The software ecosystem has a lot of useful but unsafe code, and the easier it is to sandbox that code, the moreoften that’ll happen. If it were as simple as ...
Big Sur is both 10.16 and 11.0
macOS 11.0 will identify itself differently according to the SDK used, and an environment variable does the same for scripts.
Programmer's critique of missing structure of operating systems
Patterns and structures of current operating systems and some thoughts about how that could be improved, with lessons learnt from Self, Smalltalk and other "structured" systems.
Raspberry Pi – UASP, Trim, and Boot Performance via USB
In the past few weeks, I reviewed USB drive performance on the Raspberry Pi 4, and the importance of UASP support for USB drive performance. Both posts generated great discussion, and there were three things I wanted to cover in this follow-up, namely: Which drives support UASP Real-world performance benchmarks TRIM…
Awk As A Major Systems Programming Language, Revisited (2018)
AWK As A Major Systems Programming Language — Revisited
Distri: 20x faster initramfs (initrd) from scratch
In case you are not yet familiar with why an initramfs (or initrd, or initial ramdisk) is typically used when starting Linux, let me quote the wikipedia definition: “[…] initrd is a scheme for loading a temporary root file system into memory, which may be used as part of the Linux startup process […] to make…
I translated a simple C program to x86_64 and it was slower
A blog about computing and other fun.
How to take back control of /etc/resolv.conf on Linux (2018)
Take manual control of your Linux system’s DNS resolution and keep programs from interfering with and overwriting your resolv.conf file.
Logs, Tails, Long Tails (2013)
Learn the shape of the logs of probability distributions, and you’ll be able to guess how they behave.
Let's Build a 28-Core Raspberry Pi Cluster
I built a 28-core gigabit cluster, Kraken, consisting of 7 Raspberry Pi 3 Model Bs.
QEMU should move from C to Rust
Welcome Redditors and HackerNews folks! This post is getting attention outside the QEMU community, so I'd like to highlight two things that...
Writing to the Framebuffer (2018)
I’ve been thinking about cross platform GUIs, and one question led to the next and eventually I was asking: how do pixels end up on the monitor? A pretty neat stack overflow response answers:
1.1B Taxi Rides Using OmniSciDB and a MacBook Pro
Benchmarks & Tips for Big Data, Hadoop, AWS, Google Cloud, PostgreSQL, Spark, Python & More...
Massacring C Pointers (2018)
I'm taking a break from debugging books to talk about a calamitous shitshow of textbook writing: Mastering C Pointers: Tools for Programming Power , by Robert J. Traister.