Today I LearnedRSS

June 2024

Lecture Friday: How Computers Draw Weird Shapes (Marching Squares)

If you don't know how impolitic surface rendering works, this is an excellent primer.

How PNG Works: Compromising Speed for Quality

Great primer on the PNG file format. Made understanding a bunch of the spec much simpler and helped me optimize my favicon spritesheet maker.

It also covers the QOI format. Alternative, arguably better, widely unsupported image formats abound. They're still cool to learn about. They're mostly great if you're writing your own desktop application and thus not beholden to Web Browsers Chrome.

Stupid Slow: The Perceived Speed of Computers

https://www.datagubbe.se/stupidslow/

A good, more rounded look at old software. It's not like old software was always insanely fast. Some of it was painfully slow in its day. The problem is there's so many things today that should for absolutely no reason be slow, and yet they are. If you're transcoding video, that's going to be slow. That software has probably been heavily optimized. You're just working with potentially terabytes of raw uncompressed data between formats. That's going to take a while. If you're typing in a text box, why for the love of computation is that slow? What could possibly be that hard about converting keyboard input into glyphs on screen? Nothing. It's just garbage software.

I/O Is No Longer The Bottleneck

https://benhoyt.com/writings/io-is-no-longer-the-bottleneck/

It's the memory. It's always the memory these days. Cache miss, cache miss, cache miss. Bye bye performance.

Lecture Friday: How I Made A 3D Level In A 2D Game

This goes so hard. When I grow up, I want to be like Spu7Nix.

Python's Many Command-line Utilities

https://www.pythonmorsels.com/cli-tools/

I know a bunch of these and yet there's still more. Most systems have Python installed by default. Turns out, that brings along a bunch of cool utilities for free. The one I probably use the most is python -m http.server which lets you serve any directory on your system as a simple HTTP server. Great for transferring files in a pinch and some basic web development.