Notes concerning “Programming”
- Why John Backus Was on the Wrong Track
2007 (updated 2019-05-05) (48 minutes)
- A 2007 overview of matrix barcodes
2007 to 2009 (2 minutes)
- Bicicleta maps
2007 to 2009 (2 minutes)
- Using bytecode won’t make your interpreter fast
2007 to 2009 (26 minutes)
- C bad
2007 to 2009 (4 minutes)
- The coolest bug in Ur-Scheme
2007 to 2009 (2 minutes)
- A stack of coordinate contexts
2007 to 2009 (9 minutes)
- A cute algorithm for card-image templates
2007 to 2009 (2 minutes)
- Notes on reading eForth
2007 to 2009 (9 minutes)
- Enumerating binary trees and their elements
2007 to 2009 (4 minutes)
- Erlang musings
2007 to 2009 (3 minutes)
- Error Reporting is Part of the Programmer's User Interface
2007 to 2009 (18 minutes)
- Forth looping
2007 to 2009 (16 minutes)
- Free software debugging
2007 to 2009 (2 minutes)
- IRC bots with object-oriented equational rewrite rules
2007 to 2009 (6 minutes)
- Gaim group chat
2007 to 2009 (3 minutes)
- Interesting features of the GNU assembler Gas
2007 to 2009 (2 minutes)
- Learning low level stuff is not just fun, but also useful
2007 to 2009 (5 minutes)
- A filesystem design sketch modeled on Lucene
2007 to 2009 (43 minutes)
- Designing a Scheme for APL-like array computations, like Lush
2007 to 2009 (4 minutes)
- Developing Win32 programs on Debian
2007 to 2009 (12 minutes)
- Nested inheritance
2007 to 2009 (2 minutes)
- Does SAAS make it harder to ship? I doubt it.
2007 to 2009 (7 minutes)
- Tagged dataflow
2007 to 2009 (2 minutes)
- The Problem: Writing With One Access Pattern, Reading With Another
2007 to 2009 (19 minutes)
- Programming paradigms for tiny microcontrollers
2007 to 2009 (6 minutes)
- The AL programming language, dimensional analysis, and typing: do different dimensions really exist?
2007 to 2009 (2 minutes)
- ML’s value restriction and the Modula-3 typing system
2007 to 2009 (3 minutes)
- What’s wrong with ../../?
2007 to 2009 (2 minutes)
- Win32 startup
2007 to 2009 (2 minutes)
- Index set inference or domain inference for programming with indexed families
2007 to 2009 (updated 2019-05-05) (27 minutes)
- How should we design a UI for a new OS?
2012-10-10 (updated 2012-10-11) (4 minutes)
- In what sense is e the optimal branching factor, and what does it mean for menu tree design?
2012-12-04 (3 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)
- How can we take advantage of 16:9 screens for programming?
2012-12-17 (2 minutes)
- Giving Golang a second look for writing a mailreader (in 2012)
2012-12-17 (updated 2013-05-17) (2 minutes)
- Clickable terminal patterns
2013-05-17 (2 minutes)
- Use crit-bit trees as the fundamental string-set data structure
2013-05-17 (3 minutes)
- Cycle sort
2013-05-17 (1 minute)
- How can we usefully cache screen images for incrementalization?
2013-05-17 (18 minutes)
- You’re pretty much fucked if you want to build an oscilloscope on the AVR’s ADC
2013-05-17 (3 minutes)
- Iterative string formatting
2013-05-17 (9 minutes)
- The delta from QEmacs,with only 88 commands, to a usable Emacs, is small
2013-05-17 (2 minutes)
- Quadtree compression of terminal video RAM to do a megapixel windowing system in 6 KiB
2013-05-17 (9 minutes)
- Simple system language
2013-05-17 (7 minutes)
- APL with typed indices
2013-05-17 (11 minutes)
- Optimizing the Visitor pattern on the DOM using Quaject-style dynamic code generation
2013-05-17 (updated 2013-05-20) (21 minutes)
- Distinguishing natural languages with 3-grams of characters
2013-05-17 (updated 2013-05-20) (7 minutes)
- When and why exactly should your code “tell, not ask”? That is, use CPS?
2014-01-08 (4 minutes)
- Constant-space grep
2014-02-24 (3 minutes)
- Forth with named stacks
2014-02-24 (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)
- Twingler
2014-02-24 (7 minutes)
- Compression with second-order diffs
2014-04-24 (3 minutes)
- Fixed point
2014-04-24 (1 minute)
- Precisely how is 3 “optimal” for one-hot state machines, sparse FIR kernels, etc.?
2014-04-24 (8 minutes)
- Ostinatto
2014-04-24 (4 minutes)
- Range literals
2014-04-24 (6 minutes)
- Simplifying code with concurrent iteration
2014-04-24 (2 minutes)
- Simple dependencies in software
2014-06-05 (9 minutes)
- The Dontmove archival virtual machine
2014-06-29 (5 minutes)
- How to generate unique IDs for IMGUI object persistence?
2014-09-02 (3 minutes)
- A reactive crawler using Amygdala
2014-09-02 (updated 2014-09-19) (4 minutes)
- Transactional screen updates
2015-04-01 (10 minutes)
- Entry-C: a Simula-like backwards-compatible object-oriented C
2015-04-05 (updated 2017-04-03) (24 minutes)
- Ndarray java
2015-05-28 (1 minute)
- Editor buffers
2015-07-15 (updated 2015-09-03) (16 minutes)
- More thoughts on powerful primitives for simplified computer systems architecture
2015-08-18 (updated 2015-11-02) (165 minutes)
- Cobstrings
2015-08-21 (updated 2015-08-31) (5 minutes)
- Raggedcolumns
2015-08-28 (3 minutes)
- Implementing flatMap in terms of call/cc, as in Raph Levien’s Io
2015-09-03 (3 minutes)
- Parsing a conservative approximation of a CFG with a FSM
2015-09-03 (7 minutes)
- A simple content-addressable storage-server protocol
2015-09-03 (3 minutes)
- Desbarrerarme: a UI for speaking to people
2015-09-03 (5 minutes)
- An IMGUI-style drawing API isn’t necessarily just immediate-mode graphics
2015-09-03 (3 minutes)
- Incremental MapReduce for Abelian-group reduction functions
2015-09-03 (4 minutes)
- Storing CSV records in minimal memory in Java
2015-09-03 (6 minutes)
- Assigning consistent order IDs
2015-09-03 (3 minutes)
- Rhythm codes
2015-09-03 (4 minutes)
- Would Synthgramelodia make a good base for livecoding music?
2015-09-03 (8 minutes)
- Ternary mergesort
2015-09-03 (2 minutes)
- Convolution surface plotting
2015-09-03 (updated 2015-09-13) (2 minutes)
- Parallel NFA evaluation
2015-09-03 (updated 2015-10-01) (8 minutes)
- Convolution applications
2015-09-07 (updated 2019-08-14) (9 minutes)
- Hash feature detection
2015-09-17 (5 minutes)
- Interactive calculator 0
2015-09-17 (2 minutes)
- Interval filters
2015-09-17 (2 minutes)
- Fast geographical maps on Android
2015-10-16 (9 minutes)
- Virtual instruments
2015-11-09 (3 minutes)
- Hash gossip exchange
2015-11-19 (4 minutes)
- Logarithmic maintainability and coupling
2015-11-23 (7 minutes)
- Improving LZ77 compression with a RET bytecode
2016-04-05 (updated 2016-04-06) (3 minutes)
- Anytime realtime
2016-04-22 (4 minutes)
- A type-inferred dialect of JS
2016-04-22 (4 minutes)
- Trees as code
2016-05-10 (4 minutes)
- A variety of code fragments for testing proposed language designs
2016-05-18 (19 minutes)
- Statically bounding runtime
2016-07-19 (4 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)
- Algorithm time capsule
2016-08-11 (1 minute)
- Executable scholarship, or algorithmic scholarly communication
2016-08-11 (13 minutes)
- Affine arithmetic has quadratic convergence when interval arithmetic has linear convergence
2016-08-24 (updated 2017-01-18) (10 minutes)
- Time series data type
2016-08-26 (3 minutes)
- Low-cost green thread locks
2016-09-06 (2 minutes)
- Notes on higher-order programming on the JVM
2016-09-06 (6 minutes)
- DHT bulletin board
2016-09-07 (7 minutes)
- An almost-in-place mergesort
2016-09-07 (5 minutes)
- Toward a language for hacking around with natural-language processing algorithms
2016-09-08 (7 minutes)
- Queueing messages to amortize dynamic dispatch and take advantage of hardware heterogeneity
2016-09-17 (13 minutes)
- DReX and “regular string transformations”: would an RPN DSL work well?
2016-09-19 (3 minutes)
- Gradient rendering
2016-09-24 (11 minutes)
- Changing the basis to a more expressive one with better affordances
2016-09-29 (5 minutes)
- Usability of scientific calculators
2016-09-29 (19 minutes)
- Notations for defining dynamical systems
2016-10-03 (updated 2016-10-06) (6 minutes)
- Texture synthesis with spatial-domain particle filters
2016-10-06 (2 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)
- Generalizing my RPN calculator to support refactoring
2016-10-17 (12 minutes)
- Chintzy depth of field
2016-10-27 (1 minute)
- Topics to study in 2016
2016-10-27 (updated 2016-11-15) (37 minutes)
- MiniOS
2016-12-28 (updated 2017-01-03) (6 minutes)
- The paradoxical complexity of computing the top N
2017-01-04 (7 minutes)
- What is the type of lerp?
2017-01-08 (5 minutes)
- Similarities between Golang and Rust
2017-01-11 (updated 2017-01-17) (7 minutes)
- Constant time sets for pixel painting
2017-02-07 (2 minutes)
- Text editor slow keys
2017-02-07 (2 minutes)
- A 7-segment-display font with 68 glyphs
2017-02-21 (4 minutes)
- Set hashing
2017-03-09 (9 minutes)
- Cartesian product storage
2017-03-20 (3 minutes)
- Thredsnek: a tiny Python-flavored programming language
2017-03-20 (7 minutes)
- A sketch of a minimalist bytecode for object-oriented languages
2017-03-20 (updated 2017-06-20) (13 minutes)
- Amnesic hash tables for stochastically LRU memoization
2017-04-03 (1 minute)
- The history of NoSQL and dbm
2017-04-10 (16 minutes)
- Byte-stream pipe and antipipe façade objects for editor buffers
2017-04-10 (3 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)
- Secure, self-describing, self-delimiting serialization for Python
2017-04-11 (8 minutes)
- Parallel DFA execution
2017-04-18 (9 minutes)
- String tuple encoding
2017-04-28 (2 minutes)
- Hipster stack 2017
2017-04-28 (updated 2017-05-04) (26 minutes)
- Generic programming with proofs, specification, refinement, and specialization
2017-05-10 (6 minutes)
- Pattern matching and finite functions
2017-05-10 (14 minutes)
- Reduced affine arithmetic raytracer
2017-05-10 (1 minute)
- Relational modeling
2017-05-17 (updated 2017-06-01) (6 minutes)
- Karplus–Strong PLLs
2017-06-09 (1 minute)
- Nova RDOS
2017-06-15 (22 minutes)
- Database explorer
2017-06-20 (2 minutes)
- Compressing a screen update with a tree of dirty bits
2017-06-21 (1 minute)
- A REST interface to a software transactional memory
2017-06-21 (2 minutes)
- CIC-filter fonts
2017-06-28 (1 minute)
- Cheap frequency detection
2017-06-29 (updated 2019-06-19) (50 minutes)
- Blob computation
2017-07-19 (2 minutes)
- Double heap sequence
2017-07-19 (2 minutes)
- Ideal language syntax
2017-07-19 (1 minute)
- Parametric polymorphism and columns
2017-07-19 (2 minutes)
- Rasterizing polies
2017-07-19 (3 minutes)
- Options for bootstrapping a compiler from a tiny compiler using Brainfuck
2017-07-19 (2 minutes)
- Term rewriting
2017-07-19 (3 minutes)
- JIT-compiling array computation graphs in JS
2017-07-19 (1 minute)
- Vectorized prefix sum
2017-07-19 (5 minutes)
- The Z-machine memory model
2017-07-19 (4 minutes)
- Xor 1 to 1 hashing
2017-07-19 (updated 2017-08-03) (10 minutes)
- An RPN CPU instruction set doubling as user interface
2017-07-19 (updated 2019-07-10) (21 minutes)
- Kafka-like feeds for offline-first browser apps
2017-08-03 (5 minutes)
- Minimal transaction system
2017-09-21 (5 minutes)
- Querying a pile of free-text strings with quasi-Prolog
2017-11-17 (6 minutes)
- Interactive geometry
2018-04-26 (1 minute)
- Two-thumb quasimodal multitouch interaction techniques
2018-04-26 (11 minutes)
- Constant space flexible data
2018-04-27 (5 minutes)
- Rarely are function-local variables in Forth justified
2018-04-27 (10 minutes)
- Framed-belt DSP
2018-04-27 (3 minutes)
- Incremental recomputation
2018-04-27 (12 minutes)
- Lisp 1.5 in a stack bytecode: can we get from machine code to Lisp in 45 lines of code?
2018-04-27 (4 minutes)
- Literate programs should include example output, like Jupyter, but Jupyter is imperfect
2018-04-27 (3 minutes)
- Some notes on FullPliant and Pliant
2018-04-27 (9 minutes)
- How inefficient is SNAT hole-punching via random port trials?
2018-04-27 (2 minutes)
- Mail reader
2018-04-27 (updated 2018-06-18) (7 minutes)
- Composing code gobbets with implicit dependencies
2018-04-27 (updated 2019-05-21) (3 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)
- Clisweep
2018-06-06 (3 minutes)
- Toward a minimal PEG parsing engine
2018-06-06 (4 minutes)
- Multitouch livecoding
2018-06-17 (1 minute)
- 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)
- Flexible text query
2018-07-14 (4 minutes)
- Byte prefix tuple space
2018-07-14 (updated 2018-07-15) (4 minutes)
- Top algorithms
2018-07-29 (4 minutes)
- Caustic simulation
2018-09-10 (updated 2018-11-04) (2 minutes)
- Immediate mode productive grammars
2018-09-13 (8 minutes)
- Golang bugs
2018-09-13 (updated 2018-10-28) (6 minutes)
- Bit difference array
2018-10-28 (10 minutes)
- Digital noise generators
2018-10-28 (2 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)
- Dilating letterforms
2018-11-04 (15 minutes)
- Performance properties of sets of bitwise operations
2018-11-06 (updated 2018-11-07) (16 minutes)
- Bootstrapping instruction set
2018-11-06 (updated 2019-05-03) (19 minutes)
- Leconscrip: a family of JS subsets for BubbleOS
2018-11-23 (2 minutes)
- Tagging parsers
2018-11-23 (updated 2018-12-10) (9 minutes)
- Fast gsave
2018-11-27 (5 minutes)
- What would a better Unix shell look like?
2018-11-27 (1 minute)
- How small can we make a comfortable subset of JS?
2018-11-27 (updated 2018-12-02) (3 minutes)
- Binate and KANREN
2018-12-02 (3 minutes)
- Sparse filters
2018-12-02 (4 minutes)
- Arduino safety
2018-12-10 (4 minutes)
- Constant space lists
2018-12-10 (10 minutes)
- Minimal imperative language
2018-12-10 (7 minutes)
- Toward a lightweight, high-performance software prototyping environment
2018-12-10 (15 minutes)
- A two-operand calculator supporting programming by demonstration
2018-12-11 (22 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)
- Commentaries on reading Engelbart’s “Augmenting Human Intellect”
2018-12-24 (updated 2018-12-25) (25 minutes)
- IMGUI programming compared to Tcl/Tk
2018-12-24 (updated 2018-12-31) (8 minutes)
- Dehydrating processes and other interaction models
2018-12-28 (updated 2019-01-01) (36 minutes)
- IMGUI programming language
2019-01-01 (updated 2019-07-30) (21 minutes)
- Supervisor children for fault-tolerant Unix command-line programs
2019-01-04 (3 minutes)
- Some notes on morphology, including improvements on Urbach and Wilkinson’s erosion/dilation algorithm
2019-01-04 (updated 2019-11-12) (26 minutes)
- Median filtering
2019-01-17 (11 minutes)
- The uses of introspection, reflection, and personal supercomputers in software testing
2019-02-04 (updated 2019-03-11) (12 minutes)
- A review of Wirth’s Project Oberon book
2019-02-04 (updated 2019-03-19) (63 minutes)
- My notes from learning the Golang standard library
2019-02-08 (20 minutes)
- India rubber memory
2019-03-19 (4 minutes)
- Fractal palettes
2019-04-02 (7 minutes)
- Audio video boustrophedon sync
2019-04-03 (2 minutes)
- An IDE modeled on video games
2019-04-08 (5 minutes)
- Dercuano calculation
2019-05-01 (3 minutes)
- An algebra of textures for interactive composition
2019-05-08 (4 minutes)
- A language whose memory model is a bunch of temporally-indexed logs
2019-05-12 (updated 2018-05-21) (20 minutes)
- Image approximation
2019-05-14 (10 minutes)
- Relational modeling and APL
2019-05-20 (updated 2019-05-21) (5 minutes)
- First impressions on using the μMath+ calculator program for Android
2019-05-21 (13 minutes)
- Profile-guided parser optimization should enable parsing of gigabytes per second
2019-05-23 (8 minutes)
- Microsoft Windows uses \ for filenames because OS/8 programs used / for switches
2019-05-25 (2 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)
- Reducing the cost of self-verifying arithmetic with array operations
2019-06-23 (15 minutes)
- Separating implementation, optimization, and proofs
2019-06-26 (updated 2019-07-22) (41 minutes)
- Kernel code generation
2019-07-02 (6 minutes)
- Prolog table outlining
2019-07-05 (11 minutes)
- Assembler bootstrapping
2019-07-18 (updated 2019-12-08) (16 minutes)
- Techniques for, e.g., avoiding indexed-offset addressing on the 8080
2019-07-20 (updated 2019-07-24) (27 minutes)
- Using the method of secants for general optimization
2019-07-22 (updated 2019-11-26) (13 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)
- Some notes on the landscape of linear optimization software and applications
2019-08-21 (updated 2019-08-25) (35 minutes)
- Text relational query
2019-08-28 (10 minutes)
- An 8080 opcode map in octal
2019-08-28 (updated 2019-11-24) (11 minutes)
- Query evaluation with interval-annotated trees over sequences
2019-08-30 (updated 2019-09-03) (30 minutes)
- Differentiable neighborhood regression
2019-08-31 (15 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)
- Dercuano plotting
2019-09-03 (updated 2019-09-05) (34 minutes)
- A formal language for defining implicitly parameterized functions
2019-09-05 (updated 2019-09-30) (29 minutes)
- Isotropic nonlinear texture effects for letterforms from a scale-space representation
2019-09-10 (16 minutes)
- Nonlinear bounded leaky integrator
2019-09-11 (8 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)
- Sparse sinc
2019-09-15 (10 minutes)
- Notes on local file browsing
2019-09-15 (updated 2019-09-28) (4 minutes)
- B-Tree ropes
2019-09-24 (updated 2019-09-25) (19 minutes)
- A homoiconic language with a finite-map-based data model rather than lists?
2019-09-25 (updated 2019-09-28) (46 minutes)
- Dercuano grinding
2019-10-01 (12 minutes)
- Is there an incremental union find algorithm?
2019-10-01 (8 minutes)
- Notes on Óscar Toledo G.’s bootOS
2019-10-07 (updated 2019-10-08) (28 minutes)
- Resurrecting duckling hashing
2019-10-26 (updated 2019-11-10) (8 minutes)
- Negative weight undirected graphs
2019-11-01 (8 minutes)
- Sparse filter optimization
2019-11-01 (5 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)
- Rediscovering successive parabolic interpolation: derivative-free optimization of scalar functions by fitting a parabola
2019-11-26 (updated 2019-11-27) (8 minutes)
- Byte-stream GUI applications
2019-11-29 (updated 2019-11-30) (17 minutes)
- Memory safe virtual machines
2019-12-04 (14 minutes)
- 10tcl ui
2019-12-06 (17 minutes)
- Introduction to closures
2019-12-07 (5 minutes)
- Forth assembling
2019-12-08 (updated 2019-12-11) (18 minutes)
- Immediate-mode PEG parsers in assembly language
2019-12-10 (updated 2019-12-11) (21 minutes)
- My very first toddling steps in ARM assembly language
2019-12-10 (updated 2019-12-13) (46 minutes)
- Can you eliminate backpatching?
2019-12-17 (8 minutes)
- Hypothesis evolution
2019-12-17 (4 minutes)
- Sorting in logic
2019-12-28 (2 minutes)