1,177 karma · joined June 14, 2021
My current thinking is that the only way we get substantial local-first software is if it's built by a passionate open-source community.
It’s a bit hard for me to imagine something better (in practice). It’s easy to want more or feel like reality doesn’t live up to one’s idealism.
But we live here and now in the messiness of the present.
Viva la Wikipedia!
If you write enough systems code in C or Rust, you end up inventing it eventually.
If you ever design a datastructure for multi-process shared memory (e.g. tmpfs mmap() on Linux), the only way you can do object references is with the “offsets”, since each process can map the region to different addresses.
Also, notice the connection here between Phi nodes and Continuation Passing Style (CPS). It because obvious with the block-arg form because it’s just the same thing. Jumps to blocks are just calls that don’t return.
I think I’m mostly surprised that so many smart/capable/successful people keep grinding long after they need to. And I’m sad that those of us that don’t have a harder time finding eachother because we don’t have a common career to put us in a room together constantly.
Ah well. Wouldn’t trade any of the great adventures I’ve had for a job or a large sum of money. I’m happy with my trade.
You really don’t need this “attention porn” in your life. Just turn it all off. Make friends IRL instead. So worth it.
The requirements for derive Clone are clearly defined. As with much in Rust, the type signature drives things, rather than the function body (contrast with C++ generics).
Occasionally, this results in perfectly reasonable code getting rejected. Such is the case with all static languages (by definition).
But in the few cases that happen, the solutions are quite straightforward. So, I don’t feel like it’s justified to add more complication to the language to deal with a few small corner cases.
Yes, _FORTIFY_SOURCE is a fabulous idea. I was just a bit shocked it wasn’t checked without _FORTIFY_SOURCE. If you’re doing FD_SET/FD_CLR, you’re about to make an (expensive) syscall. Why do you care to elide a cheap not-taken branch that’ll save your bacon some day? The overhead is so incredibly negligible.
Anyways, seriously just use poll(). The select() syscall needs to go away for good.
At the same time, I’m definitely less informed. Though I’m quite surprised how much still permeates despite me not “going looking”.
Generally, I think it’s more healthy to focus on what you can control and what you have agency over. You can choose what to be outraged over national/global events (and do nothing) or you can instead focus that energy on Doing Something closer to home that’s important to you. Which is the better trade?
I’m somewhat conflicted on being less informed esp with big changes happening. And even more conflicted about what kind of world we’d have if everyone chose this strategy. But, it’s not unprincipled. The principle is Focus on What You Can Control/Do and put all your energy into that.
HN also doesn’t seem to be as susceptible to rage-baiting / outrage-attention-seeking behavior. Not sure exactly what by this is the case but I’d venture a guess it has a lot to do with (1) “dang”s moderation, and (2) not having a personalized algorithm feed.
I’m increasingly of the view that personalized algorithm feeds generated to select the maximum attention grabbing content for each person is a truly dangerous idea.
Frankly, HN is not that engaging (by modern standards). In fact, probably 60-70% of the articles on the front page are boring to me on any given day. I view this as a feature and not a bug. Why should I expect that everything I look at must be maximally engaging?
I wish more sites were old skool like HN.
Great job to both organizations!
If I really need the low-level control, I can wrangle C (warts and all), otherwise Rust, Python, etc just make me happier.
Also integrals with “integrate f(x) dx” where people treat “dx” as some number than can be manipulated, when it’s more just part of the notation “integrate_over_x f(x)”
Sigh. These are sadly some kind of right-of-passage, or mathematical hazing. Sad.
// Division by zero is not an error
io.debug(3.14 /. 0.0)
It prints 0
Yuck. Division by zero is an unfortunate reality but basically nobody with mathematical background thinks that just defining x/0 = 0 is a good solution.
Often in numerical computing, getting an NaN or Inf is a blessing in that it’s a hint that your algorithm is numerically buggy, in the same way that a crash or a exception would indicate a program bug.
This approach is the numeric equivalent of a program continuing on after an undefined variable, just assuming it’s 0. That was tried by scripting languages in the 90s and these days most folks think it was a bad approach.
A biography of Dr Paul Farmer and how he dedicated his life and sacrificed everything to solve (in his words) “easily preventable” health problems in Haiti.
It hits on many levels: his unapologetic empathy for ordinary people, the global abuse and abandonment of Haiti by western powers, the flaws of thinking about global health through a lens of utilitarianism, the real change that just one person can initiate, etc
Highly highly recommended!
I decided on using sigils and then my thought-process drifted to Perl/Php, so $ naturally felt like a variable definition (which naturally must pop from the stack). I guess ^ is “push ‘up’ to stack”. But it’s all really arbitrary irrelevant syntax. YMMV.