The Origins of DS_store (2006)
If you are a Mac user, or if you have transferred files from Mac to Windows, you’re probably familiar with .DS_Store files. But where does this name come from?
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 2,232 posts.
If you are a Mac user, or if you have transferred files from Mac to Windows, you’re probably familiar with .DS_Store files. But where does this name come from?
Big companies like to bury unpleasant news on Fridays: A few weeks ago, Facebook announced they have decided to dig in on their patent clause addition to the React license, even after Apache had sa…
How James Somers reverse-engineered Google Docs to play back any document's keystrokes
I seem to have a habit of writing about super powerful machines whose many cores are laid low by misuse of locks. So. Yeah. It’s that again. But this one seems particularly impressive. I mean, how …
Learning the lesson of vi
Best practices for code review when you’re the author.
Let me preface this post by saying that no programmer should feel compelled to read any of these papers. I list them because I think that they provide a breadth of information that is generally useful and interesting from a computer science perspective. What you do with that information is your prerogative, including…
The Sensitivity Conjecture, which I blogged about here, says that, for every Boolean function f:{0,1}n→{0,1}, the sensitivity of f—that is, the maximum, over all 2n input strings x∈{0,1}n, of…
One of the key elements of Google's software engineering culture is the use of design docs for defining software designs. These are...
An overview of what makes modern CSS so awesome.
While I was writing the Wolfenstein 3D book [1] , I wanted to demonstrate how much of a handicap it was to work without floating points. My attempts at understanding floating points using canonical [2] articles [3] were met with resistance from my brain. I tried to find a different way. Something far from $(-1)^S *…
My name is Brian Hauer and these are my rants about technology, politics, and anything else that irks me.
In 2015, I gave a talk in which I called Donald Knuth the Patron Saint of Yak Shaves . The reason is that Donald Knuth achieved the most perfect and long-running yak shave: TeX.
It’s quite popular to bash the Windows Registry in non-technical or lightly technical terms. I’ve just spent a couple of weeks reverse engineering the binary format completely for our h…
This month I invited to Q&A at PuPPy [https://youtu.be/2XviXtxWKO8?list=PL4S0lvhXvdhIV2C28Ia_DeIeloBrsQBOW] (the Puget Sound Python users group) that eventually led to me explaining why Python 3 came into existence and the whole string/bytes deal. I ended up receiving a compliment on the explanation which
2021-11-13 page moved to http://xahlee.info/emacs/emacs/using_voice_to_code.html
It's happening. It's the reason that a lot of us came to work for Microsoft, ...
Over the last several years, I’ve rewritten Rust’s regex crate to enable better internal composition, and to make it easier to add optimizations while maintaining correctness. In the course of this rewrite I created a new crate, regex-automata , which exposes much of the regex crate internals as their own APIs for…
We normally think of git merges as having two parent commits. For example, the most recent Linux kernel merge as I write this is commit 2c5d955, which is part of the run-up to release 4.10-rc6. It has two parents:
WebGPU is an upcoming Web API that gives you low-level, general-purpose access GPUs.
WebGL is, all things considered, a pretty decent API. It’s not a great API, but that’s just because OpenGL is also not a great API. It gives you raw access to the GPU and is pretty low-level. For those intimidated by something so low-level, there are quite a few higher-level engines like three.js and Unity which are…
How does a good developer become a great developer?
How we beat the state of the art to build a real-life A.I. app.
A little confession that I have no idea how asyncio works in Python 3.