I think it's less about individual designers and more about the industry in general. A company that respects its users will find it harder to get money from advertisers and investors.
If you define HASH(data) = SHA3(data) xor SHA3(manifest), then the manifest will always have a zero hash. This trick can be useful if you need to create a cycle in a hash-addressed list (e.g., an object-oriented class hierarchy where inheritance is by hash of the class definition—the definition of the base class would have a zero hash and could inherit from itself).
The fact that this question was instantly flagged off the front page says a lot about the HN readership in and of itself. OP, I'm not aware of such a site, but I'm sure many people would appreciate a place like that.
This is a fantastic comment. I think your analysis at the end is spot-on. It's like the K-12 math curriculum is a hazing ritual for a vast fraternity of "smart people". Without this ritual, their group identity is called into question.
The point of the article isn't that all symbolic thinking is pointless—just that the specific types of symbolic thinking we spend years teaching aren't actually used very often. Why not spend that time playing with code instead if you want to learn this skill?
I feel like it was just as corporate, but it was at a different point in the lifecycle. Like, early on, companies had to make the best software they could to get people using computers and communicating over the internet. Now that everyone is hooked, the corporations can switch to extraction mode.
Why doesn’t the Bay Area have its own fiber internet service? Surely there’s enough talent and collective political influence here to get Comcast out of our own neighborhoods.
Optimizing memory layout and reducing allocations are pretty ISA-independent. But yeah, at some point you will have to start looking at the assembly to optimize further (even if only to know when to tell the compiler to stop inlining a function that causes tons of register spilling inside a tight loop).
I’ve used GNU MathProg (via https://online-optimizer.appspot.com/) and Z3 (via its Python bindings). I appreciated, with Z3, being able to use the existing syntax of Python, though some of the errors I got were confusing. The ease of installation/usage for the online-optimizer web UI is hard to beat.
Familiarize yourself with the tools for measuring performance on whatever platform you want to optimize for. Then you can just start messing around and seeing what kinds of things make the number go down.
I always liked how Hearthstone (the digital card game) combines this style of interaction with traditional drag-and-drop. If you click and drag a card, you drop it by releasing the mouse button as you traditionally would. But if you click the card without dragging, the card is picked up and remains held until you drop it by clicking again. You can choose which interaction you want in the moment, and the combination feels quite natural.
> I read a book once which argued that the problem with modern political discourse is it pits the "I don't want things taken from me" (liberty!) people against the "XYZ is a human right" (entitlement!) people. And that a better way to frame the cultural argument is "XYZ is my responsibility to society."
I don’t know if it’s the book he’s talking about, but Simone Weil makes this argument in the beginning of The Need for Roots[+]—that the correct way to think about our relationship to society isn’t “rights” (someone else’s problem) but obligations (our problem).
One way to keep something alive for a long time is to make many copies of it in different places. What if every time a website linked to something static (like an article, puzzle, or tutorial), it saved a local copy and made a link to that copy available as well? More inbound links would mean more longevity instead of more fragility.