Link blog: C, punning, programming, casting

Type punning isn’t funny: Using pointers to recast in C is bad.
A common C programming technique (casting between pointers to structures) leads to problems when strict aliasing is turned on (as it is if you set -O2 -O3 in gcc).
(tags: C programming casting punning)
Type Punning, Strict Aliasing, and Optimization – Embedded in Academia
More on the type punning/aliasing business.
(tags: C punning aliasing programming)

Link blog: code, scam, phishing, programming

Voice Phishing Scams Are Getting More Clever — Krebs on Security
Never give your PIN to someone who called you.
(tags: phishing phone scam security)
Writing system software: code comments. –
A taxonomy of code comments.
(tags: code design programming comments)

Link blog: epistemology, belief, python, colour

Ask HN: Best way to learn modern C++? | Hacker News
Thread with book and video recommendations
(tags: c++ programming)
Epistemic extremism – UseOfReason
Contra Internet (“shoe”) atheism: I don’t need to be able to prove a thing to you before I can rationally believe it.
(tags: philosophy belief epistemology Atheism proof)
Compressing and enhancing hand-written notes
How Office Lens might do it, but open source. Introduces various colour spaces.
(tags: images python colour RGB HSV)

Link blog: technology, programming, business

Unrolled thread from @patio11
“Some people really benefit from hearing advice that everyone knows, for the same reason we keep schools open despite every subject in them having been taught before.” Mostly related to the tech business.

In that spirit, here’s some quick Things Many People Find Too Obvious To Have Told You Already.
(tags: programming business technology)

Link blog: mutex, programming, concurrency

What every systems programmer should know about lockless concurrency
“Seasoned programmers are familiar with concurrency building blocks like mutexes, semaphores, and condition variables. But what makes them work? How do we write concurrent code when we can’t use them, like when we’re working below the operating system in an embedded environment, or when we can’t block due to hard time constraints? And since your system transforms your code into things you didn’t write, running in orders you never asked for, how do multithreaded programs work at all? Concurrency—especially
on modern hardware—is a complicated and unintuitive topic, but let’s try to cover some fundamentals.”
(tags: concurrency programming mutex)