Useful Resources

Published on

Following is a list of useful or interesting things I have found on the internet.

On programming

bash redirections cheat sheet
A very good overview of bash redirection operators with usage examples. I was surprisingly thrilled to read this.
A tutorial implementation of a dependently typed lambda calculus
An introduction to dependent type checkers targeted toward functional programmers.
Why lexing and parsing should be separate
A good overview of a lot of parsing-related information with links and references.
Extensible parsing with Earley virtual machines
Contains a good overview of many different parsing methods.
Design Patterns for Parser Combinators
The first of its kind, apparently. Gives some good ideas for tokenising and error reporting.
Mitchell Hashimoto's writing about Zig
An introduction to the internals of the Zig compiler. Details given about the tokenizer and parser.
Haskell with UTF-8
A good primer on interacting with text in general, not just with Haskell.
The Linux kernel is just a program
A surprisingly accessible explanation of kernels.
Parse, don’t validate
I suspect this idea has had the biggest impact on software correctness at my work. Types alone don't give safety, and lack of types don't prevent safety. Using the mindset of "parse, don't validate" gives you safety in any language, but is easier with types.

On geometry

Inclusion of a Point in a Polygon
A well-written explanation of algorithms to check whether a point is inside a polygon. I used this to help with Advent of Code problems.
An Algorithm for Polygon Intersections
A human-written tutorial on polygon intersection. Surprisingly hard these days to find this kind of material written by a human being.
Paul Bourke
A wealth of high quality information. I love the minimalist design.
Erich's Packing Center
Quite an obsessive website about shapes.

Assorted blog posts

The Year of the 3D Printed Miniature (And Other Lies We Tell Ourselves)
Well-written and entertaining.
Valetudo: Frequently asked questions
Incredibly based way to run a project.