Happy Golden Week. New era incoming in two days…

C++

Top 25 C++ API design mistakes and how to avoid them
Obvious in the hindsight, but nevertheless important.

The Use Of assert() In SQLite
Cool approach. SQLite is one of those libraries with more tests than code.

Stop Memsetting Structures
I don’t agree that memset() useless, but designated initializers are good.
More generally: stop using C structures where you need specific layout.
(No, __attribute__((packed)) is not a solution.)

Development

Implementing reader-writer locks

Implementing tile encoding in rav1e

Make is (probably) fine
I came to really like make recently. It’s a beautiful Prolog for filesystem.

Rust

Compile Time Memory Safety
Programming in Rust: the good, the bad, the ugly
Some posts about programming experience.

Rust’s 2019 roadmap

Writing an OS in Rust: Testing
Nice guide on how to introduce abstractions at a proper level.

The Embedded Rust Book
An introductory book about using the Rust Programming Language on “bare metal” embedded systems, such as microcontrollers.

PLT

Higher-rank and higher-kinded types
In case you’re curious but not into type theory.

Lexical differential highlighting instead of syntax highlighting
I’ve seen this idea resurface from time to time. I wonder why mainstream IDEs don’t do it often.

A Brief And Brisk Overview of Compiler Architecture
Yet another one, never too late to understand how your tools work.

Security

Keybase is not softer than TOFU (на русском)
On proper implementation of Trust On First Use.

A Crash Course in Everything Cryptographic
For newbies.

Docker Hub Hacked – 190k accounts, GitHub tokens revoked, builds disabled (habr)
Rotate your passwords and tokens, just in case. Here’s a report.

The inception bar: a new phishing method (на русском)
Definitely not a new method, but it’s still pretty interesting. Modern web does allow you to emulate a browser inside a browser, after all. This writeup also explains why the browsers show you all these ‘entering full-screen mode’ notifications.

Miscellaneous

O(n2) in CreateProcess
Chromium developers discover loads of weird behaviors like this one.

Busy Person Patterns
A nice read on time/task management.

Maybe we could tone down the JavaScript
Stating the obvious.

Pepsi’s Nonsensical Logo Redesign Document: $1 Million for This?
Read the linked PDF too, it’s hilarious.

Synchronous Text [Mozilla decommissioning irc.mozilla.org]
It seems we’re left with Freenode being the last well-known bastion of IRC.
Rust teams are moving to Discord, for example, because of that. lol

quinesnake – A quine that plays snake over its own source!
Fascinating sight.