Likes working with Lego, but unfortunately it doesn’t pay well
Lego mosaics: building low bit depth images with Lego
Can we do this in 3D?
Build a tool to convert models to Lego using voxel grid
Merge voxels with the same color into taller bricks
Export each layer to Lego CAD software
The world’s first racing-the-beam ray tracer on discarded FPGA hardware!!!
Pano Logic G1 thin client
Had no CPU! Everything is “in hardware” (FPGA)
Very cheap because the company went out of business
Reverse engineer the board & want to render graphics on it
“When you buy a big GPU, you have this urge to make it work at capacity.
It doesn’t matter what it does.”
Racing the beam: Atari frame buffer had only two lines & had to render
one line while the other got sent to the CRT
Prototype in C code to count how many operations needed per pixel and
know how much hardware you need
Robots, rockets, and more! Control theory in 10 minutes
Control theory is everywhere, even non-obvious applications like queue
length in a network
Minimax search and the structure of cognition!
Zack M. Davis
Could look at all possible moves & pick the one that results in the best
To have better long-term decision making, then search the opponent’s
best possible responses, then your best possible response, …
Simple algorithm that implicitly encodes many chess behaviors
Postgres plays Pokémon!
Query your Pokémon in Postgre
Read the Gameboy emulator memory in a Postgres extension
Works because Pokémon info is stored at known addresses
Software patterns… from the 9th century?!!
70s garbage collection paper: once half of memory is used, copy all the live
objects to the other half of memory
Medieval farmers: split field into two parts, alternating back and forth to
allow farmland to recover
Why should it be half? Why not plant 2/3?
Dependencies of this change: plant legumes to restore nitrogen, deeper
plows, horses, oats for horses…which needs better farm productivity
Cycle in dependency graph
Not just a technological change — important social considerations
Rearrange field ownership to allow longer fields for easier plowing
People don’t want to make a change that risks starvation
Our technology can support many things, but people don’t always want to
make big changes
How to throw out 95% of pixels in virtual reality, without anyone noticing!!
95% of the eye’s photoreceptors are concentrated at the fovea
In virtual reality, your fovea covers a small percentage of the
screen size (compared to phones)
Use neural net to guess where people might look, then compress everything
How to calculate the phase of the moon very, very badly!
Calendar app for werewolves required calculating the phase of the moon
Look up the day of a full moon, then add 27.321661 days every time
Worked for awhile!
2 years later, it was about 3 days wrong
Using the wrong number & can’t use the average
28 moon icons, so just bucket the floating point moon phase
Multiple days could have full moon icon depending on rounding
Solution: assign full moon icon to the day that contains the full moon
Value Your Types!
Dependent type: a type whose definition depends on a value
Example: list of integers where each value is larger than the value
The Conjuring: ransomware edition!!
Goal: show that demonic posession (e.g. in The Conjuring) is similar to
Initial entry: always looking to (posess, infect) vulnerable hosts
Needs a unique (item, encryption key) to perform the ritual
Symmetric key: malevolent entity uses a secret word to posess host,
where the same key is used to decrypt
Some randomware uses the date and time to generate keys, which are easy
(Demons, malware authors) don’t like (exorcists, malware analysts)
Ransomware developers sell their malwre to ransomware opeartors, either
one-time fee or revenue share
Observability in the Kitchen: Improve Your Breadmaking Skills with Open-Source Monitoring!!
Sourdough healthier than regular bread, but requires long fermentation
process (about 1 day) and could mold if you’re not careful
Prometheus: open source system monitoring server written in Go
Raspberry Pi with temperature & humidity sensors
Write exporter for sensor to Prometheus
Highly over-engineered sourdough starter process!
Computers are fast! But how come they sometimes feel slow?
Latency matters to making computers feel instant, letting people use
computers more effectively
Input latency of a game depends on many things: human reaction time,
keyboard interrupt, OS, application drawing stuff, display buffer & response
My, my, TTY!
1960s–70s: paper teletypes let you write on one typewriter and print on
another connected typewriter
1970s: UNIX written on PDP-11; login always local because teletype was
directly wired to server
1970s–80s: video display terminals (“glass teletypes”) emulated paper
teletypes with more features, like control sequences, introducing complexity
BSD shipped database of terminals and supported features
1980: BSD added curses library, allowing easy GUI building in terminal
Late 1980s: Stanford University Network workstation (or SUN for short),
Macs, Windows PCs, X11 killed video terminals by bundling terminal emulator
New features: setting title, colors, mouse clicks
“If you absent mindedly click on the menu, it actually works, which was
kind of horrifying to me the first time it happened”
People switch from telnet to SSH
Stuff we use today is influenced by a long history
Bell used paper teletypes, which is why they made ed (actually a good
editor when you have paper)
Berkeley bought video terminals, which is why we got vi
Thanks for reading! If you’re enjoying my writing, I’d love to send you infrequent notifications for new posts via my newsletter. You’ll receive the full text of each post, plus occasional bonus content.