Back Original

Links from The Internship

At work, I hosted an intern this summer. Part of that job is introducing them to “industry” tools, resources, and practices that they might not otherwise see.

Here’s some of the things I thought useful to share:

News

lobste.rs, a news aggregator with a tree-based invite model.

LWN, formerly “Linux Weekly News”, but now daily coverage of the world of open-source software generally.

Lore and culture

Hyrum’s Law: “With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.” Restated in xkcd 1172.

Bikeshedding: “We can agree on the design of the nuclear reactor, but not what color to paint the bikeshed.” Rust’s yeet is my favorite example of avoiding this.

ISO 8601 is the right way to format dates: when sorted without localization (i.e. by byte / codepoint), it sorts from past to future.

Yak-shaving and rubber-duck debugging, as I covered previously.

The Rise of Worse is Better; debatable, but worth reading.

What is code review for; code review antipatterns.

HTTP and CDN

http.cat is my preferred HTTP status code reference.

RFC 9111, HTTP caching.

Some CDNs operate within ISPs’ networks.1

Shielding as a means of reducing origin load.

Dotfiles management, e.g. my solution. Interestingly, those who used a solution other than “custom-hacked shell scripts” did not recommend those solutions…

Git internals, helpful for understanding what git commands are doing, though not always for knowing which one you need.

git-branchless and lazygit for making it easier to understand history and rewrite it, when appropriate.

asciinema terminal recorder / playback.

Compiler Explorer.

VSCode Coverage Gutters paired with cargo-llvm-cov; discussed on my blog previously.

Curricula

Oh Shit, Git! and all other Wizard Zines.

Software Foundations, an introduction to theorem provers and them to build software. After going through a chunk of this, I feel I have a much better understanding of type systems… and greater appreciation for those who design them!

Linux from Scratch, building a Linux system from the ground up. On my “to be read” list.

Nand2Tetris, digital logic design and computer architecture. Also on my “to be read” list.

Stanford CS240 Advanced Operating Systems, a number of interesting papers.

Xv6, “a simple Unix-like teaching operating system” for MIT’s curriculum.

Writing an OS in Rust, by Philipp Oppermann.

Not exactly a curriculum, but the Amaranth hardware description language works great with a Fomu FPGA dev board for playing around hardware.