HNHacker News
TopNewBestAskShowJobs

von_lohengramm

541 karma · joined June 21, 2021

submissionscomments
von_lohengramm··on Private equity is devouring the U.S. economy
Exactly. Just like how the British people just recently decided that privacy and encryption aren't "fair and just." After all, would a policymaker ever go against the desires of the voters?

> well, the majority who had political power anyway

You're making a massive assumption that this somehow equates to voters/the people.

von_lohengramm··on Can you use your "free will"? Try your hand
Granted, I only tested this for a few minutes, but I found that if I thought about "repeat" vs "switch" instead of "d" vs "f", then I could reliably get under 50% prediction. Sure, the prediction rate was high 40's, but that at least means I won!

A lot of it comes down to avoiding auto-piloting into a 50/50 distribution. Subconsciously, "random" means approaches 50/50 since that's how it works, right? I'm sure given enough time, it'll be able to predict me with >50% accuracy, but that's entirely okay. Random doesn't have to be fairly distributed. As long as it doesn't get to 100% then I still have personhood :^)

von_lohengramm··on V is now UB free No more undefined behavior
> Previously the website used to say that overflowing could result in UB, but that was fixed today.

> No more undefined behavior.

"fixed"

von_lohengramm··on The Dilemma of Icons
Indeed it is, but when you double down on minimalism this hard, then "stacked shrinking boxes" are all you're gonna get.
von_lohengramm··on The Dilemma of Icons
I've recently had to learn Jira, and holy cow the iconography (and really whole UI/UX) is awful. I have to expand the left panel and waste a crap ton of real estate on an already way overcrowded page to get textual labels instead of icons consisting of variously arranged boxes. Horizontal boxes = backlog. Vertical boxes = active sprints. Stacked shrinking boxes = releases. Of course, they're all single-color outlines with little visual distinction between them all. Who thought of this? What would have been so awful with just words or even abbreviations? Heck, why does this even need to be in an almost completely empty sidebar instead of using the dead space in the top navbar?
von_lohengramm··on GCC always assumes aligned pointer accesses (2020)
It is generally true because "up to" includes the same speed. However, unaligned memory can significantly impact caching.
von_lohengramm··on Petition to stop France from forcing browsers like Firefox to censor websites
You are interpreting "unreasonable" from the perspective of a citizen, not from the perspective of the government.
von_lohengramm··on Advantages to running FreeBSD as a server operating system
> Generally, it is worse as a desktop system than more even obscure OpenBSD.

This is just untrue.

von_lohengramm··on Californian Roads Could Soon Have Speed Cameras Issuing Tickets
Yes.
von_lohengramm··on YouTube gets more aggressive in pushing adblock warnings with countdown timer
I've also heard of YouTube bypassing ad blockers every now and again, but again that's never happened to me.
von_lohengramm··on YouTube gets more aggressive in pushing adblock warnings with countdown timer
I've never seen an anti-adblock message on YouTube. Do they only appear when people use crappy (likely malware) adblock extensions?
von_lohengramm··on Cash Amnesia
This is more about hiding/perpetuating bad habits vs enabling stupid purchases. Not about impulsively buying something just because it was on sale, but rather buying something you know you shouldn't... but it's just this once, I promise! No more after just this last one...
von_lohengramm··on NixOS and my descent into insanity
> As far as i can tell no one (thus far) has been able to explain a reasonable and concrete way to tell what any given variable is within a Nix source file. `nix repl` works decently for some cases, but many not - since it seems to mostly help you inspect the output of a Nix expression. So hypothetically it could work, but for any given variable you'd have to recreate the entire value/function/etc stack that produced that value in that state.

It's certainly not ergonomic, but from what I can tell so far, `builtins.trace` and `builtins.traceVerbose` are about as good as it's gonna get. It quite literally lets you inspect any arbitrary Nix expression, but it's just such a friggin' hassle to wrap things with it & reevaluate just to do what literally any real debugger can do in two keystrokes.

> All around after ~16 months i think i'm finally done with Nix. It's Nickel or the highway for me. Not that i even love Nickel that much, but it's the bare bones of what Nix should have been in my view.

I'm curious. Have you messed around with Dhall? It's suspiciously similar to Nickel (even mentioned on their site), but it's been around longer so it's probably a bit more viable to actually make your config in Dhall. Dhall or Nickel, it'll still insanely janky and more trouble than it's worth. Personally, I've found that what's worked surprisingly well for me is just really focusing on building a good understanding of the Nix language in an effort to avoid needing to debug as much as possible. "Just don't write bugs" as the saying goes. I've been using Nix for a while, and I'm still loath to debug it.

von_lohengramm··on Engineers should focus on writing
I think you misread the GP. These "mid and senior devs" are writing documents not documentation. They're not writing comments or wiki pages, they're writing designs docs for new systems, proposals for cross-cutting initiatives, etc. They're taking their knowledge of the domain, its issues, and general wisdom and applying it at a scale larger than a single developer's output.

In theory, this makes perfect sense and is a great way to amplify a more senior developer's impact compared to just coding "the hard stuff." In practice, unfortunately, this leads to a "doc culture" where there's often too much focus on the writing & documents and not enough on the coding & getting shit done.

For example, look at Amazon. Writing is considered a core SDE skill, yet atrocious code (especially from more senior "lifers") and shitty half-solutions are seemingly desirable. Promotion at Amazon is about telling a story of your impact in your promo doc, not about explaining to the powers that be that you're a kick-ass engineer who needs harder problems.

von_lohengramm··on Engineers should focus on writing
I'd argue that this is a form of rubberducking.

Something that I've tried a few times was basically pretending that I'm a live-streamer/YouTuber/whatever and verbally explain my thought process & actions as I program. I found that it was actually better practice for coding interviews than anything else, but I wouldn't be surprised if you found trying something similar also helpful.

I do think there is specific value in practicing summaries, though, as it's a really important skill to be able to distill down a 45-minute technical rant into something grokkable by others in a reasonable amount of time. Something that I do most mornings is plan out my exact phrasings for standup updates, sometimes verbally if I'm having troubles putting my update into words and I'm WFH that day. Then again, I'm probably a bit autistic too and often mentally plan out most non-casual conversations.

von_lohengramm··on Why I Hate Frameworks (2005)
It appears that you are entirely missing the point and the author's criticism of frameworks. Your analogy is the false promise repeatedly fallen for that created the situation described in the story.
von_lohengramm··on The case against self-closing tags in HTML
> “make everything verbose, even when it’s already unambiguous”

The idea is to make the language less context-sensitive and more consistent. It's better if the meaning of `<p>` and `<p/>` don't change based on the parent tag. Now, obviously they failed at making the semantic changes necessary to achieve the goal, but a true XML-based language would've been far simpler both for humans and computers than what we've got now. Most of the author's points are entirely valid, but the conclusion really should've been "HTML is bad."

von_lohengramm··on Responding to “Are bugs and slow delivery ok?”
This is how I feel about most "things I hate". Despite my strong feelings towards them, there's a reason why they are the way that they are. Almost always it comes down to my interests & priorities not aligning with reality/everyone else.
von_lohengramm··on File for divorce from LLVM
> now that it's declared as a goal

No. It's an unaccepted proposal.

von_lohengramm··on Do you know how much your computer can do in a second? (2015)
I really dislike the `fill_array.c ` vs `fill_array_out_of_order.c ` example. While it's showing the effects of spatial locality, it's misattributing the performance delta to the CPU L1/L2 cache.

The problem is that it's filling an array in freshly allocated memory. While you might expect `malloc(NUMBER)` to give your process a crap ton of space in your RAM, that's far from the truth. First of all, glibc will just translate that into an `mmap`, and even if it didn't, the Linux kernel still wouldn't allocate the whole buffer due to "optimistic memory allocation." Instead, you'll receive ownership of this chunk of virtual memory, but you won't actually allocate anything at first. Only when you dirty each page will it actually allocate the backing physical memory. And even then, the Kernel has various heuristics to preemptively page in memory that it thinks you're going to use soon.

I'm sure the author was aware that the example was more nuanced than just "muh CPU cache", but reducing spatial locality to just "muh CPU cache" for the article's sake does a disservice to the reader.

von_lohengramm··on Money is the megaphone of identity (2020)
They appear to be either mentally ill and/or prone to fabricating outlandish stories to make a relevant & interesting comment. The 10 years in jail story is rather consistent, though, so I wouldn't be surprised if it was true and perhaps related to their... odd comments.
von_lohengramm··on Zap – Fast backends in Zig
The lightning bolt emoji and similar performance rhetoric is really popular in the Zig community. I doubt the similarity is intentional.
von_lohengramm··on DeviceScript: TypeScript for Tiny IoT Devices
It's obviously exaggerated and reductive, but you have to admit that not knowing how to use React properly is massively prevalent in frontend, let alone being able to recognize _when_ to use React.
von_lohengramm··on High-performance tidy trees visualization (2022)
Does everyone else feel like optimal/efficient algorithms are _significantly_ easier to intuit once you know the achievable complexity? My initial guess was that this algorithm would be n log n, but once I read that the solution space was linear, I instantly came up with some linear approaches.
von_lohengramm··on 20 Years of Gentoo
Before moving on to NixOS, I used to manage every USE flag on the entire system. Every single package install or upgrade would prompt a quick look into any USE flag changes and potential reconfiguration. It was really nice knowing your system with that sort of intimacy and _really_ lowered the amount of effort required to make changes to the system. But... nothing can compete with declarative and reproducible at the whole system level.
von_lohengramm··on Zig now has built-in HTTP server and client in std
> are lots of tiny packages encouraged?

Very much the opposite

von_lohengramm··on 20 Years of Gentoo
> Slackware, BTW, is ranked 39th - higher than Gentoo.

Proof that DistroWatch ranking is the most meaningless metric.

von_lohengramm··on First Rust code shows up in the Windows 11 kernel
I wasn't trying to argue that C/C++/Zig/etc. would be a better or safer choice than Rust. All in all, the less surface area that you have for bugs, the better, and Rust does an exceptional job at this. However, I just dislike attempts to quantify "unsafety" by thinking in terms of # of `unsafe` lines. I would rather take 1,000 trivial `unsafe ` lines than a single `unsafe` line that plays too close to the edge between what's allowed and what's not.

> To my recollection, most of the unsafe-rust-specific pointer aliasing bugs which have been found in std or other popular rust libraries happened because the code was written first and then the rules got stricter!

This is exactly why I have mentality. Rust is a language that grows fast and is exceedingly ambitious. Moving fast tends to break things. And while this is certainly a far less frequent occurrence than C/C++ compilers implementing new optimizations that break on UB that has historically compiled correctly, at least C/C++ compilers usually recognize that these optimizations can be dangerous to bad code and provide -O2 to keep bad codebases afloat.

In general, I think the C/C++ spec was wise in being very explicit about what it does not guarantee (though its choice of what might've been questionable). If you never allow something in the first place, it's only the programmer's fault for doing it. What everyone can agree on, though, is that C/C++ compilers not providing tooling & sane defaults that help guide programmers towards good code and better practices was and is an absolute travesty. Things like UBSan have come too little, too late to restore C/C++'s reputation. UBSan and Rust's Miri are some awesome stuff, though.

> What was really meant (or should have been meant) by the original claim is that unsafe rust introduces new rules which must be followed w/r/t pointer aliasing. But it is far from clear that the marginal new rules introduce more unsoundness than the kinds of bugs which rust prevents, in fact it seems rather unlikely. Most memory bugs seem to be the ones that are bugs in all languages, like use-after-free, etc.

I definitely worded things poorly, but exactly. C/C++'s UB is absolute insanity, but it's well defined insanity. The workarounds are all well known, even if they're monstrous abominations. But playing language lawyer with Rust is not only a lot harder since it's underdefined, but there are plenty of things that simply don't have (known) workarounds for. "If it compiles, passes tests, runs correctly, and even passes Miri, then it can't be UB... right?"

But thankfully Rust is optimistic and strives for improvement, so we have things like the Rustonomicon[0] to guide programmers towards sounder `unsafe` code. Unfortunately...

> Warning: This book is incomplete. Documenting everything and rewriting outdated parts take a while. See the issue tracker to check what's missing/outdated, and if there are any mistakes or ideas that haven't been reported, feel free to open a new issue there.

[0]: https://doc.rust-lang.org/nomicon/index.html

von_lohengramm··on Majority of gig economy workers are earning below minimum wage: research
If you're only counting one set of hours, sure, but do you count your hours by looking at your clock or by looking at the summary view inside each app?
von_lohengramm··on Majority of gig economy workers are earning below minimum wage: research
It all depends on how risky you want to play the game. Do you log off from one while doing a ride for the other? Do you log on 5 minutes away from drop-off to start looking for your next ride? Do you actually accept rides while doing a ride for the other? From many anecdotes I've read, this one is apparently extremely common. I'm sure Uber has some heuristics to discourage this behavior, but ultimately, unless Uber doesn't want the driver's business entirely, then drivers who are driven will find a way to game the system as best they can. Like always, the sweet spot is somewhere in-between.
← PreviousPage 2 of 5Next →