Tag to-show

56 bookmarks have this tag.

Stuff I want to show people.

2024-09-30

152.

Building a robust frontend using progressive enhancement - Service Manual - GOV.UK

www.gov.uk/service-manual/technology/using-progressive-enhancement

an extremely based frontend manual from the GOV.UK

2024-09-24

151.

Tagged Union Subsets with Comptime in Zig

mitchellh.com/writing/zig-comptime-tagged-union-subset

a fun case study with Zig’s comptime

2024-09-20

150.

Linux/4004 - Dmitry.GR

dmitry.gr?r=05.Projects&proj=35. Linux4004

Slowly booting full Linux on the intel 4004 for fun, art, and absolutely no profit

2024-09-07

149.

WebP: The WebPage compression format

purplesyringa.moe/blog/webp-the-webpage-compression-format

a really fun (albeit somewhat impractical) way to compress webpages when all you have is browser APIs

148.

WebAIM: History of the browser user-agent string

webaim.org/blog/user-agent-string-history

how user agents became a lying mess

2024-08-30

147.

Practically-exploitable Cryptographic Vulnerabilities in Matrix

nebuchadnezzar-megolm.github.io

a paper explaining some reasons not to trust Matrix. includes pearls like “a homeserver can silently add user to a E2EE group and decrypt all the following messages and that’s not considered a vulnerability”.

2024-08-21

146.

typedKanren: Statically Typed Relational Programming with Exhaustive Matching in Haskell

arxiv.org/pdf/2408.03170

a fun implementation of *Kanren with nice Haskell interoperability. showcases some fun Haskell featues.

2024-08-17

145.

Piccolo - A Stackless Lua Interpreter

kyju.org/blog/piccolo-a-stackless-lua-interpreter

a really interesting exploration of interpreter design, a lot of repls and thoughts on various coroutines

144.

Techniques for Safe Garbage Collection in Rust

kyju.org/blog/rust-safe-garbage-collection

a really cool post explaining design of gc-arena

2024-08-07

143.

Proquints: Identifiers that are Readable, Spellable, and Pronounceable

arxiv.org/html/0901.4016

a fun way to serialize binary data to pronouncable identifiers

2024-07-11

142.

Lix | Announcing Lix 2.90 "Vanilla Ice Cream"

lix.systems/blog/2024-07-10-lix-2.90-release

Lix is an independent variant of the Nix package manager, developed by a team of open-source volunteers, and maintained by and for a passionate community of users.

I kind of assumed that Lix is a purely political fork, but they seem to write actual code, so that’s nice. Changelog promises faster evaluation, better errors and REPL improvements.

2024-06-25

141.

Project REVEAL by Lumen: Analysis of North Korea’s digital control system

www.lumen.global/reveal-report

Report about software found on North Korean smartphones.

2024-06-17

140.

systemd, 10 years later: a historical and technical retrospective

blog.darknedgy.net/technology/2020/05/02/0

This offers an interesting technical analysis of systemd (in part 3). I’m not a huge fan of the social/historical parts (1-2, 4), although they offer some perspective.

2024-06-14

139.

effing-mad: Algebraic effects for Rust

github.com/rosefromthedead/effing-mad

Very much not-production-ready (didn’t even compile on my machine), but looks pretty cool (rad, even).

2024-05-23

137.

Load Balancing

samwho.dev/load-balancing

A bottom-up, animated guide to HTTP load balancing algorithms.

136.

Queueing – An interactive study of queueing strategies

encore.dev/blog/queueing

In this blog, we go on an interactive journey to understand common queueing strategies for handling HTTP requests.

2024-05-20

135.

bbs-over-dns

bbs-over-dns.com

microforum in DNS TXT records

131.

Folk Computer

folk.computer/notes/tableshots

An IRL spatial computer making use of printed codes to do stuff.

113.

the nix iceberg

cohost.org/leftpaddotpy/post/3885451-the-nix-iceberg

sadly, doesn’t provide links, but most is googlable

2024-05-19

111.

Compilers for free with weval

bernsteinbear.com/blog/weval

With some partial evaluation and specialization hints, it is possible to get pretty decent speedups on interpreters by turning them into compilers.

2024-05-14

110.

RFC 9225: Software Defects Considered Harmful

datatracker.ietf.org/doc/html/rfc9225

one of my favourite RFCs probably

2024-05-06

109.

git-infinite-recursion

github.com/asyncmeow/git-infinite-recursion

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

2024-04-26

108.

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.

2024-02-15

107.

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.

2024-02-06

106.

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.

2024-01-24

105.

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.

2024-01-22

104.

Shapecatcher

shapecatcher.com

Allows you to find Unicode characters by drawing them.

2024-01-17

103.

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.

2024-01-04

100.

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.

99.

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.

2023-12-23

98.

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.

2023-12-18

96.

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.

2023-12-15

95.

Performance of WebAssembly (WASM) runtimes in 2023

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

Comparison between different runtimes and with native code.

94.

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

2023-12-13

92.

Pinning all system calls in OpenBSD

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

How OpenBSD prohibited all syscalls from unknown locations.

2023-12-06

88.

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.

2023-11-30

85.

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.

2023-11-28

83.

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.

80.

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.

79.

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!

2023-11-27

77.

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.

2023-11-26

76.

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.

67.

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.

57.

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.

56.

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.

55.

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.

50.

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.

2023-11-25

34.

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.

33.

Text Rendering Hates You

faultlore.com/blah/text-hates-you
32.

Breaking Our Latin-1 Assumptions

manishearth.github.io/blog/2017/01/15/breaking-our-latin-1-assumptions
31.

Let's Stop Ascribing Meaning to Code Points

manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points
30.

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

hsivonen.fi/string-length
28.

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.

27.

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.

18.

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.

5.

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.