Notes concerning “Performance”
- Bicicleta maps
2007 to 2009 (2 minutes)
- Using bytecode won’t make your interpreter fast
2007 to 2009 (26 minutes)
- A cute algorithm for card-image templates
2007 to 2009 (2 minutes)
- Forth looping
2007 to 2009 (16 minutes)
- Git data
2007 to 2009 (5 minutes)
- Git learnings
2007 to 2009 (3 minutes)
- A filesystem design sketch modeled on Lucene
2007 to 2009 (43 minutes)
- Schimmler parallelism asymptotic gain
2007 to 2009 (1 minute)
- Maybe Counting Characters in UTF-8 Strings Isn't Fast After All!
2007 to 2009 (15 minutes)
- Why Thunderbird is inadequate for opening a 7-gigabyte mbox
2007 to 2009 (2 minutes)
- The Problem: Writing With One Access Pattern, Reading With Another
2007 to 2009 (19 minutes)
- Index set inference or domain inference for programming with indexed families
2007 to 2009 (updated 2019-05-05) (27 minutes)
- Predictions for future technological development (2008)
2008-04-19 (11 minutes)
- How should we design a UI for a new OS?
2012-10-10 (updated 2012-10-11) (4 minutes)
- Worst-case-logarithmic-time reduction over arbitrary intervals over arbitrary semigroups
2012-12-04 (5 minutes)
- a logarithmic-time alternative to summed-area tables for reducing arbitrary semigroup operations over arbitrary ranges (a generalization of RMQ segment trees)
2012-12-06 (updated 2013-05-17) (10 minutes)
- Use crit-bit trees as the fundamental string-set data structure
2013-05-17 (3 minutes)
- Cycle sort
2013-05-17 (1 minute)
- Optimizing the Visitor pattern on the DOM using Quaject-style dynamic code generation
2013-05-17 (updated 2013-05-20) (21 minutes)
- Instant hypertext
2013-05-17 (updated 2013-05-20) (14 minutes)
- Distinguishing natural languages with 3-grams of characters
2013-05-17 (updated 2013-05-20) (7 minutes)
- Embedding objects inside other objects in memory, versus by-reference fields
2014-02-24 (13 minutes)
- Simple persistent in-memory dictionaries with log² lookups and logarithmic insertion
2014-02-24 (6 minutes)
- Square wave synthesis
2014-02-24 (2 minutes)
- lattices, powersets, bitstrings, and efficient OLAP
2014-04-24 (17 minutes)
- Precisely how is 3 “optimal” for one-hot state machines, sparse FIR kernels, etc.?
2014-04-24 (8 minutes)
- Some speculative thoughts on DSP algorithms
2014-04-24 (20 minutes)
- Archival with a universal virtual computer (UVC)
2014-06-29 (17 minutes)
- Rendering iterated function systems (IFSes) with interval arithmetic
2014-09-02 (6 minutes)
- Keyboard-powered computers
2014-10-25 (updated 2018-10-28) (26 minutes)
- A principled rethinking of array languages like APL
2015-05-16 (updated 2019-09-30) (31 minutes)
- You can’t sort a file whose size is cubic in your RAM size in two passes, only quadratic
2015-05-28 (5 minutes)
- Automatic dependency management
2015-05-28 (updated 2015-09-03) (5 minutes)
- Fault-tolerant in-memory cluster computations using containers; or, SPARK, simplified and made flexible
2015-05-28 (updated 2016-06-22) (16 minutes)
- Editor buffers
2015-07-15 (updated 2015-09-03) (16 minutes)
- Parsing a conservative approximation of a CFG with a FSM
2015-09-03 (7 minutes)
- Storing CSV records in minimal memory in Java
2015-09-03 (6 minutes)
- Memoize the stack
2015-09-03 (5 minutes)
- Rhythm codes
2015-09-03 (4 minutes)
- Ternary mergesort
2015-09-03 (2 minutes)
- Very fast FIR filtering with time-domain zero stuffing and splines
2015-09-03 (updated 2015-09-07) (13 minutes)
- Parallel NFA evaluation
2015-09-03 (updated 2015-10-01) (8 minutes)
- Bitstream dsp
2015-09-03 (updated 2019-06-23) (3 minutes)
- Simplifying computing systems by having fewer kinds of graphics
2015-10-13 (10 minutes)
- Viral wiki
2015-10-15 (3 minutes)
- A type-inferred dialect of JS
2016-04-22 (4 minutes)
- Circle-portal GUI
2016-06-03 (11 minutes)
- Gaussian spline reconstruction
2016-06-05 (updated 2016-06-06) (5 minutes)
- Kogluktualuk: an operating system based on caching coarse-grained deterministic computations
2016-07-23 (21 minutes)
- Compact namespace sharing
2016-07-25 (7 minutes)
- Improving lossless image compression with basic machine learning algorithms
2016-07-27 (2 minutes)
- Append only unique string pool
2016-07-27 (2 minutes)
- Internal determinism
2016-08-17 (2 minutes)
- Low-power microcontrollers for a low-power computer
2016-09-06 (updated 2018-10-28) (18 minutes)
- An almost-in-place mergesort
2016-09-07 (5 minutes)
- Queueing messages to amortize dynamic dispatch and take advantage of hardware heterogeneity
2016-09-17 (13 minutes)
- Further notes on algebras for dark silicon
2016-09-17 (updated 2017-04-18) (23 minutes)
- Gradient rendering
2016-09-24 (11 minutes)
- Counting the number of spaces to the left in parallel
2016-10-11 (5 minutes)
- What’s the dumbest register allocator that might give you reasonable performance?
2016-10-11 (15 minutes)
- Chintzy depth of field
2016-10-27 (1 minute)
- Bitsliced operations with a hypercube of shuffle operations
2016-11-30 (2 minutes)
- The paradoxical complexity of computing the top N
2017-01-04 (7 minutes)
- Quicklayout
2017-01-10 (updated 2017-01-18) (3 minutes)
- Set hashing
2017-03-09 (9 minutes)
- The continuous-web press and the continuous press of the World-Wide Web
2017-03-20 (6 minutes)
- Amnesic hash tables for stochastically LRU memoization
2017-04-03 (1 minute)
- The history of NoSQL and dbm
2017-04-10 (16 minutes)
- Incremental persistent binary array sets
2017-04-10 (4 minutes)
- Reflections on rebraining calculators with this RPN calculator code I just wrote
2017-04-11 (4 minutes)
- Parallel DFA execution
2017-04-18 (9 minutes)
- Reduced affine arithmetic raytracer
2017-05-10 (1 minute)
- Caching screen contents
2017-06-14 (2 minutes)
- What’s wrong with CoAP
2017-06-15 (3 minutes)
- Web prefetch
2017-06-15 (1 minute)
- Fast message router
2017-06-15 (updated 2019-07-23) (15 minutes)
- Compressing a screen update with a tree of dirty bits
2017-06-21 (1 minute)
- Can you make a vocoder simpler using CIC filters?
2017-06-28 (updated 2018-06-17) (2 minutes)
- Double heap sequence
2017-07-19 (2 minutes)
- Parametric polymorphism and columns
2017-07-19 (2 minutes)
- Vector instructions
2017-07-19 (2 minutes)
- Vectorized prefix sum
2017-07-19 (5 minutes)
- Multiplication with squares
2017-07-19 (updated 2019-07-09) (5 minutes)
- Real time windowing
2017-08-03 (9 minutes)
- Cached SOA desktop
2017-08-03 (updated 2018-10-26) (6 minutes)
- Another candidate lightweight frequency tracking algorithm
2017-08-18 (4 minutes)
- A minimal dependency processing system
2017-09-21 (3 minutes)
- Framed-belt DSP
2018-04-27 (3 minutes)
- Mail reader
2018-04-27 (updated 2018-06-18) (7 minutes)
- A minimal window system
2018-04-27 (updated 2018-10-26) (12 minutes)
- Patterns for failure-free, bounded-space, and bounded-time programming
2018-04-27 (updated 2019-09-10) (42 minutes)
- Accelerating convolution and correlation with short periodic waveforms using OLAP marginal prefix sums
2018-06-05 (4 minutes)
- Word stream architecture
2018-06-17 (13 minutes)
- Is a phase vocoder or a bunch of PLLs a more efficient way to listen to all FM radio stations at once?
2018-06-17 (updated 2019-07-29) (7 minutes)
- The TWI and I²C buses and better alternatives like CAN and RS-485
2018-06-28 (updated 2018-07-05) (24 minutes)
- Notes on the STM32 microcontroller family
2018-06-30 (updated 2018-11-12) (42 minutes)
- Comparable counters
2018-08-16 (1 minute)
- A nonscriptable design for the Wercam windowing system
2018-10-26 (updated 2018-11-13) (6 minutes)
- Bit difference array
2018-10-28 (10 minutes)
- Quintic upsampling of time-series with 1½ multiplies per sample
2018-10-28 (2 minutes)
- Text editor design for e-ink displays
2018-10-28 (23 minutes)
- Speculative plans for BubbleOS
2018-10-28 (updated 2019-02-24) (12 minutes)
- Notes on the Intel N3700 i915 GPU in this ASUS E403S laptop
2018-10-28 (updated 2019-05-05) (3 minutes)
- Cheap textures
2018-10-28 (updated 2019-05-05) (5 minutes)
- The details of the GPU in this laptop
2018-10-29 (2 minutes)
- Recurrent comb cascade
2018-11-09 (updated 2018-11-10) (2 minutes)
- Fast gsave
2018-11-27 (5 minutes)
- Toward a lightweight, high-performance software prototyping environment
2018-12-10 (15 minutes)
- Improving Lua #L with incremental prefix sum in the ∧ monoid
2018-12-18 (7 minutes)
- Matrix exponentiation linear circuits
2018-12-18 (4 minutes)
- Evaluating DSP operations in minimal buffer space by pipelining
2018-12-18 (updated 2018-12-19) (20 minutes)
- Real-time bokeh algorithms, and other convolution tricks
2018-12-18 (updated 2019-08-15) (23 minutes)
- Dehydrating processes and other interaction models
2018-12-28 (updated 2019-01-01) (36 minutes)
- Median filtering
2019-01-17 (11 minutes)
- Transactional event handlers
2019-01-24 (14 minutes)
- Transactional memory, immediate-mode structured graphics, serialization, backtracking, and parsing
2019-01-25 (7 minutes)
- The uses of introspection, reflection, and personal supercomputers in software testing
2019-02-04 (updated 2019-03-11) (12 minutes)
- Fast secure pubsub
2019-02-04 (updated 2019-12-03) (2 minutes)
- Immutability-based filesystems: interfaces, problems, and benefits
2019-02-08 (updated 2019-03-19) (23 minutes)
- Hardware multiplication with square tables
2019-02-08 (updated 2019-07-09) (4 minutes)
- Karatsuba
2019-04-20 (2 minutes)
- An algebra of textures for interactive composition
2019-05-08 (4 minutes)
- Granite texture
2019-05-08 (updated 2019-05-09) (5 minutes)
- Dercuano rendering
2019-05-11 (updated 2019-05-12) (3 minutes)
- Dercuano backlinks
2019-05-22 (7 minutes)
- Profile-guided parser optimization should enable parsing of gigabytes per second
2019-05-23 (8 minutes)
- Things in Dercuano that would be big if true
2019-05-24 (updated 2019-08-21) (24 minutes)
- Midpoint method texture mapping
2019-06-01 (3 minutes)
- Using the Goertzel algorithm, the Minsky algorithm, PLLs, and prefix sums for frequency detection
2019-06-16 (updated 2019-07-05) (39 minutes)
- Separating implementation, optimization, and proofs
2019-06-26 (updated 2019-07-22) (41 minutes)
- Kernel code generation
2019-07-02 (6 minutes)
- $1 recognizer diagrams
2019-08-11 (updated 2019-10-24) (15 minutes)
- The miraculous low-rank SVD approximate convolution algorithm
2019-08-14 (updated 2019-08-15) (31 minutes)
- Complex linear regression (in the field ℂ of complex numbers)
2019-08-17 (updated 2019-08-18) (9 minutes)
- Robust local search in vector spaces using adaptive step sizes, and thoughts on extending quasi-Newton methods
2019-08-17 (updated 2019-09-15) (15 minutes)
- Query evaluation with interval-annotated trees over sequences
2019-08-30 (updated 2019-09-03) (30 minutes)
- Image filtering with an approximate Gabor wavelet or Morlet wavelet using a cascade of sparse convolution kernels
2019-08-31 (updated 2019-09-08) (28 minutes)
- A bag of candidate techniques for sparse filter design
2019-09-01 (18 minutes)
- Dercuano plotting
2019-09-03 (updated 2019-09-05) (34 minutes)
- Isotropic nonlinear texture effects for letterforms from a scale-space representation
2019-09-10 (16 minutes)
- Fast mathematical optimization with affine arithmetic
2019-09-15 (5 minutes)
- An affine-arithmetic database index for rapid historical securities formula queries
2019-09-15 (15 minutes)
- B-Tree ropes
2019-09-24 (updated 2019-09-25) (19 minutes)
- Is there an incremental union find algorithm?
2019-10-01 (8 minutes)
- Interval raymarching
2019-11-02 (updated 2019-11-10) (6 minutes)
- Some thoughts on SDF raymarching
2019-11-11 (updated 2019-12-10) (31 minutes)
- Approximate optimization
2019-11-13 (3 minutes)
- Magic sinewave filter
2019-12-17 (6 minutes)
- Sorting in logic
2019-12-28 (2 minutes)