Tag to-show

36 bookmarks have this tag.

Stuff I want to show people.

RFC 9225: Software Defects Considered Harmful

datatracker.ietf.org/doc/html/rfc9225

one of my favourite RFCs probably

about-programming,is-paper,to-show

git-infinite-recursion

github.com/asyncmeow/git-infinite-recursion

git clone --recursive --remote-submodules https://github.com/asyncmeow/git-infinite-recursion.git

about-vcs,is-repo,to-show

bun.report is Bun's new crash reporter

bun.sh/blog/bun-report-is-buns-new-crash-reporter

How we built an anonymous Zig/C++ crash reporter that doesn't require debug symbols to be shipped with the application.

Pretty fun and showcases some Zig comtime stuff.

about-langs,about-tools,is-blog,to-show

How to manipulate curve standards: a white paper for the black hat

bada55.cr.yp.to/bada55-20150927.pdf

A paper about choosing “nothing-up-my-sleeve” numbers while having stuff up your sleeve.

about-security,is-paper,to-show

The little ssh that (sometimes) couldn't

mina.naguib.ca/blog/2012/10/22/the-little-ssh-that-sometimes-couldnt.html

A fascinating tale about network problems.

about-networking,is-blog,to-show

Learning Async Rust With Entirely Too Many Web Servers

ibraheem.ca/posts/too-many-web-servers

A nice explanation of async that’s not about “threads slow”, but rather about how async as an abstraction emerges from sensible design decisions.

about-rust,is-blog,to-show

Shapecatcher

shapecatcher.com

Allows you to find Unicode characters by drawing them.

about-text,about-tools,is-project,to-show

A universal lowering strategy for control effects in Rust

www.abubalay.com/blog/2024/01/14/rust-effect-lowering

The Rust language has incrementally grown a set of patterns to support control-flow effects including error handling, iteration, and asynchronous I/O. In The registers of Rust, boats lays out four aspects of this pattern shared by Rust’s three effects. Today these effects are typically used in isolation, or at most combined in bespoke ways, but the Rust project has been working on ways to integrate them more deeply with each other, such as async gen blocks.

The theory of algebraic effects and handlers has explored this design space and offers answers to many of the questions that the Rust project has encountered during this work. This post will relate the patterns employed by Rust to the terminology and semantics of effects, to help build a shared vocabulary and understanding of the implications of combining multiple effects.

about-compilers,about-rust,is-blog,to-show

Compromising a Linux desktop using... 6502 processor opcodes on the NES?!

scarybeastsecurity.blogspot.com/2016/11/0day-exploit-compromising-linux-desktop.html

gstreamer-plugins-bad includes a NES 6502 emulator, which was vulnerable to RCE.

about-security,is-blog,to-show

features are faults

flak.tedunangst.com/post/features-are-faults

Review of many different software vulnerabilities caused by obscure undertested (mis-)features.

A modern web browser is the software equivalent of Gabriel’s Horn. Finite volume, but infinite attack surface.

about-security,is-blog,to-show

Speculation in JavaScriptCore

www.webkit.org/blog/10308/speculation-in-javascriptcore

This post is all about speculative compilation, or just speculation for short, in the context of the JavaScriptCore virtual machine.

about-compilers,about-low-level,is-blog,to-show

So you want custom allocator support in your C library

nullprogram.com/blog/2023/12/17

Some thoughts on custom allocator interfaces with nice examples.

about-low-level,is-blog,to-archive,to-show

Performance of WebAssembly (WASM) runtimes in 2023

00f.net/2023/01/04/webassembly-benchmark-2023

Comparison between different runtimes and with native code.

about-compilers,about-tools,is-blog,to-archive,to-show

The Generic Dilemma

research.swtch.com/generic

The generic dilemma is this: do you want slow programmers, slow compilers and bloated binaries, or slow execution times?

No generics / monomorphization / dynamic dispatch

about-compilers,about-langs,is-blog,to-show

Pinning all system calls in OpenBSD

marc.info/?l=openbsd-tech&m=170205367232026&w=2

How OpenBSD prohibited all syscalls from unknown locations.

about-low-level,about-security,is-blog,to-show

Execution in the Kingdom of Nouns

steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html

About why free functions are important. I find verb/noun framework from this article quite useful.

about-langs,is-blog,to-show

Semantic fuzzing of the Rust compiler and interpreter

ethz.ch/content/dam/ethz/special-interest/infk/inst-pls/plf-dam/documents/StudentProjects/MasterTheses/2023-Andy-Thesis.pdf

A very nice paper about fuzzing Rust compiler by generating custom MIR. Found some bugs in both rustc and LLVM, but notably not in Cranelift.

about-compilers,about-rust,is-paper,to-show

Friends don't let friends make certain types of data visualization

github.com/cxli233/FriendsDontLetFriends

This is an opinionated essay about good and bad practices in data visualization. Examples and explanations are below.

about-humans,about-math,about-tools,is-blog,to-read,to-show

Mutexes Are Faster Than Spinlocks

matklad.github.io/2020/01/04/mutexes-are-faster-than-spinlocks.html

Microbenchmark for futexes + spinlocks and some useful links at the bottom.

about-low-level,about-rust,for-memequeue,is-blog,to-show

Spinlocks Considered Harmful

matklad.github.io/2020/01/02/spinlocks-considered-harmful.html

Because spin locks are so simple and fast, it seems to be a good idea to use them for short-lived critical sections. For example, if you only need to increment a couple of integers, should you really bother with complicated syscalls? In the worst case, the other thread will spin just for a couple of iterations…
Unfortunately, this logic is flawed! A thread can be preempted at any time, including during a short critical section. If it is preempted, that means that all other threads will need to spin until the original thread gets its share of CPU again. And, because a spinning thread looks like a good, busy thread to the OS, the other threads will spin until they exhaust their quants, preventing the unlucky thread from getting back on the processor!

about-low-level,about-rust,is-blog,to-show

Surprisingly Slow

gregoryszorc.com/blog/2021/04/06/surprisingly-slow

This is the closing-file-handles-on-Windows post.

I'm titling this post Surprisingly Slow because the slowness was either surprising to me or the sub-optimal practices leading to slowness are prevalent enough that I think many programmers would be surprised by their existence.

about-programming,about-rust,is-blog,to-show

netaddr.IP: a new IP address type for Go

tailscale.com/blog/netaddr-new-ip-type-for-go

The Go standard library’s net.IP type is problematic for a number of reasons. We wrote a new one.

This post explores some problems with Go’s “simplicity by design”: introducing a better IP type that’s also interoperable with the language proves to be a non-trivial challenge.

about-langs,about-networking,is-blog,to-show

Dungeons and Discourse Third Edition: The dialectic continues

slatestarcodex.com/2013/02/22/dungeons-and-discourse-third-edition-the-dialectic-continues

Dungeons and Dragons, but about philosophy.

is-game,to-show

Workarounds to Computer Access in Healthcare Organizations: You Want My Password or a Dead Patient?

www.cs.dartmouth.edu/~sws/pubs/ksbk15-draft.pdf

Paper about how IT in healthcare in general and IT security in particular is done by people who don’t actually use it, listing different problems and workarounds that end up being used in the field.

Sacrificing convenience for security leads you to having neither security nor convenience.

about-security,is-paper,to-show

Modeling graphs in Rust using vector indices

smallcultfollowing.com/babysteps/blog/2015/04/06/modeling-graphs-in-rust-using-vector-indices

Niko’s post about using vectors (≈ arenas) instead of reference counters to model graphs. Explains how it relates to ownership and borrowing.

See also: Handles are the better pointers.

about-rust,is-blog,to-show

Handles are the better pointers

floooh.github.io/2018/06/17/handles-vs-pointers.html

A blog post explaining the “single owner of data, everyone has indices instead of pointers” model. Not actually about Rust per se, just happens to be really useful for Rust.

See also: Modeling graphs in Rust using vector indices.

about-programming,about-rust,is-blog,to-show

The Magic Ring Buffer

fgiesen.wordpress.com/2012/07/21/the-magic-ring-buffer

A first (as far as I know) description of ringbuffer based on two mmaps. I hope to make a better one sometime, but for now this’ll the best explanation I have.

about-low-level,for-memequeue,is-blog,to-show

Pointers Are Complicated, or: What's in a Byte?

www.ralfj.de/blog/2018/07/24/pointers-and-bytes.html

Explanation of provenance, uninitialized memory and stuff like that. Useful as an entry point into realization that we don’t live in PDP-11 world anymore.

about-compilers,is-blog,to-show

Text Rendering Hates You

faultlore.com/blah/text-hates-you
about-text,is-blog,to-show

Breaking Our Latin-1 Assumptions

manishearth.github.io/blog/2017/01/15/breaking-our-latin-1-assumptions
about-text,is-blog,to-show

Let's Stop Ascribing Meaning to Code Points

manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points
about-text,is-blog,to-show

It’s not wrong that "🤦🏼‍♂️".length == 7

hsivonen.fi/string-length
about-text,is-blog,to-show

The Sad Bastard Cookbook

nightbeatseu.ca/works/the-sad-bastard-cookbook

Life is hard. Some days are at the absolute limit of what we can manage. Some days are worse than that. Eating—picking a meal, making it, putting it into your facehole—can feel like an insurmountable challenge. We wrote this cookbook to share our coping strategies. It has recipes to make when you’ve worked a 16-hour day, when you can’t stop crying and you don’t know why, when you accidentally woke up an Eldritch abomination at the bottom of the ocean. But most of all, this cookbook exists to help Sad Bastards like us feel a little less alone at mealtimes.

is-book,to-read,to-show

Myths about /dev/urandom

www.2uo.de/myths-about-urandom

tl;dr: /dev/random is obsolete and /dev/urandom is strictly better except in early boot.

about-security,is-blog,to-show

Rust Atomics and Locks by Mara Bos

marabos.nl/atomics

A free book about atomics and locks that also serves as a nice cheatsheet for x86_64, aarch64 and futexes.

about-low-level,about-rust,for-memequeue,is-book,to-show

A close encounter with false sharing

morestina.net/blog/1976/a-close-encounter-with-false-sharing

An example of false sharing in real-ish workload.

about-low-level,about-rust,for-job,is-blog,to-show