Blog Archive 2024 VPTERNLOG: when three is 100% more than two Nov 22 2024 2022 Fixing the hashing in "Hashing modulo α-equivalence" Dec 29 2022 Plan B for UUIDs: double AES-128 Jul 11 2022 Hacking tips for Linux perf porcelain Jun 01 2022 2021 Bounded dynamicism with cross-modifying code Dec 19 2021 Slitter: a slab allocator that trusts, but verifies Aug 01 2021 Entomological solutions Jun 07 2021 Baseline implementations should be predictable May 14 2021 Stuff your logs! Jan 11 2021 2020 1.5x the PH bits for one more CLMUL Oct 31 2020 UMASH: a fast and universal enough hash Aug 24 2020 Flatter wait-free hazard pointers Jul 07 2020 Check for borrows in bitwise operations May 02 2020 How hard is it to guide test case generators with branch coverage feedback? Mar 11 2020 Too much locality... for stores to forward Feb 01 2020 Lazy Linear Knapsack Jan 20 2020 2019 A multiset of observations with constant-time sample mean and variance Nov 30 2019 A couple of (probabilistic) worst-case bounds for Robin Hood linear probing Sep 29 2019 Fractional set covering with experts Apr 23 2019 The unscalable, deadlock-prone, thread pool Feb 25 2019 Preemption is GC for memory reordering Jan 09 2019 2018 Restartable sequences with the polysemic null segment selector Aug 25 2018 The Confidence Sequence Method: a computer-age test for statistical SLOs Jul 06 2018 An old conjecture on stream transducers Jun 24 2018 2017 How to print integers really fast (with Open Source AppNexus code!) Dec 22 2017 Rendezvous hashing: my baseline "consistent" distribution method Sep 24 2017 Chubanov's projection methods for 0/1 programming Jun 17 2017 Relaxed revocable locks: mutual exclusion modulo preemption Jun 05 2017 Three-universal hashing in four instructions Apr 02 2017 2015 Retrospective on binary search and comp{ress,ilat}ion Nov 29 2015 Linear-log bucketing: fast, versatile, simple Jun 27 2015 Pointer-less Scapegoat Trees Apr 26 2015 Lock-free sequence locks Jan 13 2015 2014 Performance tuning ~ writing an essay Oct 19 2014 Doodle: hybridising SBCL's GENCGC with mark and sweep Sep 13 2014 How to define new intrinsics in SBCL Aug 16 2014 Integer division, step 0: no remainder May 11 2014 K-ary heapsort: more comparisons, less memory traffic Apr 13 2014 Number systems for implicit data structures Apr 13 2014 Refactoring with LZ77: compression is compilation (?) Mar 30 2014 What I look for in GSoC proposals Mar 23 2014 SBCL: the ultimate assembly code breadboard Mar 15 2014 Reference books I'm bringing across the border Mar 08 2014 How bad can 1GB pages be? Feb 18 2014 A whirlwind introduction to decomposition methods in discrete optimisation Jan 16 2014 2013 So you want to write an LP solver (a.k.a. My Little LP: Cholesky Is Magic) Dec 19 2013 The other Robin Hood hashing Nov 26 2013 The weaknesses of SBCL's type propagation Nov 22 2013 All you need is call/cc Sep 19 2013 Bitsets match regular expressions, compactly Jun 23 2013 Fresh in SBCL 1.1.8: SSE intrinsics! Jun 05 2013 Starting to hack on SBCL Apr 13 2013 2012 The eight useful polynomial approximations of `sinf(3)' Oct 07 2012 Tabasco Sort: a super-optimal merge sort Aug 27 2012 On the importance of keeping microbenchmarks honest Aug 23 2012 A one-instruction write barrier Aug 14 2012 Engineering a list merge sort Aug 13 2012 Binary search is a pathological case for caches Jul 30 2012 Binary search *eliminates* branch mispredictions Jul 03 2012 Fitting polynomials by generating linear constraints May 24 2012 Finally! Napa-FFT3 is ready for users Feb 22 2012 Fixed Points and Strike Mandates Feb 19 2012 Migration and Synopsis Jan 18 2012