A cache miss is not a cache miss
When writing high performance code, we are careful to avoid cache misses when possible. When discussing cache misses, however, we are usually content with counting the number of cache misses. In this post I will explain why this is not sufficient, as data dependency also make a huge difference.
My love-hate relationship with LuaJIT (2015)
I love LuaJIT for its performance, but its complexity sometimes puts me off.
A Tribute to VMware Workstation, Fusion, and Hosted UI
Updated February 2, 2016: Once you learn about our team and who we are, come take a trip down memory lane with us! Yesterday morning, the Hosted UI team, responsible for VMware’s Workstation …
Zeroing Memory is Hard: VC++ 2015 arrays
Quick, what’s the difference between these two C/C++ definitions of initialized local variables? char buffer[32] = { 0 };char buffer[32] = {}; One difference is that the first is legal in C a…
Realtime Data Processing at Facebook
Recently there has been a lot of development in realtime data processing systems, including Twitter's Storm and Heron, Google's Millwheel, a...
The tyranny of the Hollerith punched card
Wherein the author discusses (another) accident of history.
Why Unix needs a standard way to deal with the file durability problem
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…
Beamforming in PulseAudio
In case you missed it – we got PulseAudio 9.0 out the door , with the echo cancellation improvements that I wrote about . Now is probably a good time for me to make good on my promise to expand upon the subject of beamforming.
Debugging using system calls in Mac OS X
Today I want to talk about an issue I was having with UDP sockets in Go, and how I learned more about my program by making use of two tools that ship with Mac OS X called dtruss, and DTrace.
My Experience with Nix on OS X
Some time ago, I’ve moved this jekyll-based blog from GitHub Pages to a self-hosted NixOS server. A few weeks ago, I’ve also moved some parts of my local OS X environment from homebrew over to nix.
All Software is Legacy
In what may be judged in years to come as a moment of madness, I have volunteered to be the primary maintainer of the Perl CGI module (CGI.pm). For the non-technical readers of this post: CGI.pm is a few thousand lines of code that in the mid to late nineties, and even some years later, was helping many websites…
A Base Filesystem Project for macOS
OK9 là nền tảng giải trí và cá cược trực tuyến với hệ thống sản phẩm đa dạng, bao gồm thể thao, live casino, slot game, bắn cá, xổ số và game bài.
SSE: mind the gap
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…
“I just want to run a container”
"I just want to run a container!"
HTTPS' massive speed advantage
I tweeted this the other day, and the internet was not pleased: > HTTPS is slow. No - wait - is it HTTP that's slow?! https://t.co/T49GG7oCaK pic.twitter.com/cfnYOpXMWc [https://t.co/cfnYOpXMWc] — Troy Hunt (@troyhunt) July 8, 2016 [https://twitter.com/troyhunt/status/751317949349130240] In fact, a
When code is suspiciously fast: adventures in dead code elimination
Part of a recent assignment for one of my classes involved calculating the Fibonacci sequence both recursively and iteratively and measuring the speed of each method. (BONUS: For a fun diversion, here is a paper I wrote about using the Golden Ratio, which is closely related to the Fibonacci sequence, as a base for a…
Multithreading in modern C++
With the new C++11 Standard, C++ faces the first time challenges of multicore architectures. The 2011 published standard defines how a C++ program has to behave in the presence of multiple threads. The C++11 multithreading capabilities are composed of two components. This is, on the one hand, the defined memory model…
Mainframes as a lifestyle choice
I started working at IBM last year on mainframe compilers with the goal of making mainframes feel a little more modern. Hence, a lot of my time is spent in z/OS . The interface I use to z/OS is Unix System Services (USS, a.k.a. the command line), but if I were up for bucking the whole moderm thing, I could break out…
Here's to the systems programmers – Writing Hello World on a home brew CPU
Writing Hello World on a homebrew CPU