HNHacker News
TopNewBestAskShowJobs

hansvm

5,671 karma · joined December 22, 2019

submissionscomments
hansvm··on Felony charges for citizen deleting phone data at US Border
Not necessarily, no, it's not clear that the person knew they had that duty. If you strongly believe the search is illegal, e.g. after being denied a lawyer, you might not think you're destroying evidence illegally.
hansvm··on Felony charges for citizen deleting phone data at US Border
Destroying evidence is legal all day long, even with the law waiting out front, unless some other precondition is attached to that evidence destroying. One thing that makes it illegal is (over-simplifying) destroying it when you knew you had a duty to retain it.

To the legal search example, suppose the police frequently stop by your house to discuss neighborhood gremlins. If they happened to accidentally see the boxes of evidence you'd be in trouble. You're allowed to destroy them though, and you might have a habit of destroying evidence for each of these gremlin chats. Doing so is legal.

Later, the police show up with a warrant (your example). If you think you're doing your normal gremlin evidence destroying and not blocking that warrant, destroying that evidence is still legal even with the police waiting on your porch to legally, forcibly search your house. The _intent_ behind your actions, at least in this case, is a core component of the crime.

Mind you, nobody will believe you, so you'll still have a hard time in court proving it (this is mildly in your favour because it's actually the prosecution's duty to prove your intent rather than your duty to prove lack of intent, but they're not exactly going to have a hard time convincing a jury that when you destroyed a bunch of evidence with police on your porch with a warrant it was because of that warrant), but it's still legal.

hansvm··on Grand jury declines to indict Ohio man charged with destroying Flock camera
The term "voter" seems relevant -- in my conversations with conservatives, they care quite a bit. In the way they conduct themselves (ignoring voting), they care quite a bit. It's only the voting in which there's an obvious disconnect. Ignoring that risks applying the wrong fixes to the wrong places.
hansvm··on TigerBeetle Core System Architecture: Deconstructing Performance Engineering
Ha, I was explaining this just yesterday to a few people at $WORK (I'm not at TB, though we do use a bunch of Zig in prod).

"Multiprocessing" (multiple CPU cores independently executing and only able to coordinate via some message-passing system -- a definition which encompasses both multi-core CPUs and horizontally scaled distributed systems, contrasting slightly with the normal definition) is challenging for a few reasons.

Firstly, the details are an open math question, but I'll blindly state that some problems aren't amenable to parallelization. I.e., no algorithm can meaningfully improve performance via parallelization no matter the implementation. Think through how you would more quickly compute hash(hash(hash(hash(...)))) for example. The serial dependency makes things challenging. That isn't too dissimilar to the problem TB faces.

Secondly, message passing is expensive. If the only way two CPU cores can coordinate is through a multi-level cache, at best you're incurring ~tens of nanoseconds of latency per message. Contrast that with a base rate of 512 bytes processed per nanosecond with enough attention to detail on typical modern server hardware (4 pipelined AVX512 instructions at 2GHz). Messages are several orders of magnitude worse than your normal work, so if you need very many of them then you're hosed from a performance perspective (worse with longer delays, like networked computers). Even very parallelizable problems at an abstract level can suffer performance losses by trying to add even one extra core. This blog post [0] doesn't perfectly capture the idea, but it's close (and a fun read regardless).

Thirdly, message passing is an insanely complicated programming abstraction to reason about. My first two points were more about what TB was saying -- realities of modern hardware -- but the programmer experience is important too (even if you don't believe that post-2020, the LLM experience doesn't differ much from the human experience; bad code begets more bad code, slowly). The core mechanism for correctness in most software is being able to reason about "this thing is true, therefore that thing is true" and iterating. You rely on invariants like "this is sorted" to build other working theories. The invariants in multiprocessing code are much more nebulous and less amenable to accidental discovery, also less amenable to being able to build or compose them into other stronger invariants as you add code. The main reason for that is that you know almost nothing about the relative order of those messages with respect to each processer's view of which instructions happened when (and for purely multi-core "multiprocessing" the story is even worse; while my description of message-passing being the core primitive is correct, that's not what's exposed to you as a programmer, and different memory models can have even weirder interleavings than your code would naively suggest -- i.e., your code is being decomposed into smaller subunits than even a single assembly instruction, and the message passing happens at that level). The combinatorial explosion (an exponential explosion really, but big numbers either way) of states you might be interacting with makes it very difficult to understand _anything_ about the system you're examining. That's why you see a handful of primitives used over and over -- if you can decompose your problem into a parallel map plus an associative reduce then you can probably figure out some way to make it better through parallelization (not always, especially if the framework is too generic, see the linked blog post [0] if you weren't enticed to read it previously). If you can't decompose it into know primitives then it's an open research problem every time.

The crux of that third point (and we could definitely add more explanation and additional problems) is that there's a huge cost to multiprocessing. You have to be buying something substantial to even want to reach for it, else you have to be in one of the "easy" problem spaces where somebody else has done the hard work (e.g., stateless webservers).

TB isn't that. Their whole raison d'être is state management, and not in a way that's easily amenable to parallelization.

[0] https://adamdrake.com/command-line-tools-can-be-235x-faster-...

hansvm··on Abdominal fat predicts heart disease risk better than BMI
Yep, that's right. Denominated in some fixed weight and any fixed fat percentage the delta is the same (e.g., if my weight is exactly 150lb or 200lb or 250lb and, at some concrete weight, I evaluate my real BMI at X and my naive BMI at Y, then the delta Y-X is independent of my target 20%.

But my target is to waffle around 20% or so on average.

hansvm··on Civic Hygiene – avoid building technologies that could be used by a police state (2013)
> you can't possibly be saying XYZ...rant about XYZ, among other things

No, obviously that's not what they're saying. There must be some reasonable interpretation then, right? Let's look at the chat thread and see what we can find.

> be very cautious about evil uses of seemingly safe technology when developing initial capabilities

>> that's super hard since most things can be repurposed

>>> (your other comment) it's actually easy though, just look at how we could repurpose these death machines

>>>> (their comment) but...that's wildly inefficient

The subtext to their answer is going an entire opposite direction to your rant. People are saying that turning anything into a killing machine is easy, and their comment is saying that doing so is sometimes Pareto-suboptimal, and so wildly so that no semi-rational-at-least-a-little-bit-sometimes military is going to bother trying to weaponize your silicone basting brush or what have you.

They're not saying that you should mass-murder people, as you, yourself speculated.

hansvm··on Simplifying and Refactoring Introductory Calculus (2018)
That same idea applies very nicely to other ideas of math too. Take Konig's Lemma (every infinite, locally finite, connected graph has an infinite path) as an example. The nonstandard proof goes something like:

1. For every natural, you can find a path of that length.

2. Therefore (nonstandard chicanery), for every hypernatural you can find a hyperpath of that hyperlength. Pick one for some infinite hypernatural.

3. Restricting that hyperpath to the original graph yields the infinite normal path you were looking for.

Whole problems melt away entirely as soon as you don't have to worry about clumsy "limit-based" approaches.

hansvm··on Abdominal fat predicts heart disease risk better than BMI
In my mind, it's equivalent to subtracting a coarse estimate of how much extra muscle by mass I have compared to the median adult male they're using to construct BMI charts.

My actual methodology is pretty crude though -- when I was 15lbs lighter I had borderline visible abs and other visual indicators of being around the 15-20% body fat mark, and aside from gaining weight I don't have any reason to believe I've had any notable muscular atrophy since then, so I'm estimating the actual excess fat in that ballpark. It's be easy for numbers to be off 10lb or more, but even then it'd still indicate the overfat surplus being much less than the overweight surplus.

A better methodology uses calipers and various skin measurements to estimate true body fat percentage.

hansvm··on Abdominal fat predicts heart disease risk better than BMI
The dominant discrepancies are "expected" fat (boobs, etc), and "unexpected" muscle (cyclists, body builders, hard labour careers, etc). I'm currently around 10-15lb overfat and 40-50lb overweight [0]. Only the former statistic matters.

[0] And that, at least somewhat, tracks visual perceptions. Nobody looks at me with a shirt on and believes I need to lose weight, because 10-15lb isn't _that_ much extra on a tall frame. If I were 40-50lb overfat then that would be painfully obvious regardless.

hansvm··on Writergate: Zig I/O Interface Overhaul
We have a few large Zig projects at $WORK, and the value prop for us was something like:

1. We need good C ABI compatibility to integrate with the Python ML ecosystem.

2. It's by far the easiest language I've used to write correct, high-performance kernels. We have, among other things, the world's fastest protobuf parser [0] and a variety of tailor-made concurrent data structures and math-heavy logic.

3. Sure, C works, but just having defer, errdefer, proper errors, exhaustive switches, comptime, and other modern language niceties makes the process much, much easier. It's night and day better (personal opinion), and I'll need a strong reason to go back.

4. It's a simple language. That doesn't always matter, but given current broader organizational dynamics it was a lot easier sell than Rust or C++.

5. For the domain, we were going to have to write nearly everything from scratch anyway, so the limited library support compared to a newer language wasn't a notable negative.

And so on. Basically, it's easy to use, has perf/correctness tradeoffs suiting us nicely, and for other reasons the downsides weren't especially applicable (e.g., these major breaking changes basically just eat a dev day per year, and we get to pick and choose to land them on a slow week for even less dev impact).

I think another language could have worked fine. I've coded professionally in all the usual culprits and could have made them work. I think we would've been in a worse place had we done so, but not that much worse.

[0] Long story, we're forced to use protos to integrate with some other companies, and the schema sucks. Gzipped json would be better than some of the choices they made. Parse speed is obviously data-dependent, but we have a good set of perf tradeoffs for the monstrosity we've been given. Other schemas would behave reasonably well but maybe favour the Go parser or something. We care about deeply nested schemas with tiny, variable-length atomic pieces.

hansvm··on Simplifying and Refactoring Introductory Calculus (2018)
If we're going the hyperreal route, I quite like Goldblatt's GTM Lectures on the Hyperreals. You have to augment it with a paper or two if you want to work with other nonstandard objects, but when I was doing my graduate work it was the resource I kept going back to for clarity.
hansvm··on What You Gain by Building Your Own Game Engine
> most are slop

Is there any chance they meant most "real" indie games? If they did, does the observation about chances of rolling one's own engine change?

hansvm··on What sort of maths are LLMs good at?
I'm not sure why exactly, but I've heard the same from every single person using LLMs for anything related to jobs. The posting says it needs at least a B.S., and the LLM denies an applicant because they have an M.S. The posting thinks it needs 3yrs of work experience in XYZ technology, and it won't add it to the candidate's list because it doesn't have the context that the HR/LLM filter on the posting adds a bunch of nonsensical requests or that some other combination of skills makes the candidate stand out above and beyond that missing "requirement." And so on. The quality is quite poor.

On the other end of it, something like 80% of resumes I receive right now are clearly hallucinated -- referencing accomplishments that are copy-pasted from the novel-to-our-company thing in the job description a candidate will be working on, usually claiming they did XYZ at big tech a decade before the thing existed, or similarly with languages and skills. The resume "tailoring" process just manufactures lies rather than tailoring actual experience to the actual job.

hansvm··on Criminal Deception in Silicon Valley
I'm 100% convinced that accidental website hits and bounces from unique IPs when viewing the ensuant shitty content counts as MAUs for most, if not all, major tech companies.
hansvm··on Analyzing data from Silicon Valley ventures and founders prosecuted for fraud
But what if you say that FSD is actually here and that the only reason you can't fully use it is regulations and then need an extra decade (at least -- still pending)? As one of many examples....
hansvm··on The Grid That Doubles the Strength of the Ground
That reminds me of a fun research presentation I saw a decade ago. They engineered a bioplastic which would break down on sustained contact with water. While trying to come up with applications, they proposed reducing plastic consumption by using it for ... water bottles.
hansvm··on AI doesn't generate working products, that's still your job
It's not even complexity; raw size suffices to make a codebase hard for the LLM to manage, which is especially bad given the high ratio of LLM lines to ideal lines for any given change. E.g., if a concurrent hashmap is a reasonable primitive, it won't check if any of the existing ones are good fits. It'll instead prefer to implement something simpler but totally broken, or else it'll try and fail to build yet another concurrent hashmap. If you fix that by giving it explicit instructions to use a particular implementation, it'll manufacture extra (incorrect or low-performance) methods out of nowhere rather than solving within the constraints of the existing API -- think things like adding a global lock around the whole thing to make "concurrent" iteration possible when iteration isn't even a primitive the thing you asked the LLM to do requires.

A colleague of mine had the observation that the problem we're seeing is a strong tendency to produce solutions which add extra, undesirable connections in the code, resulting in inordinately complex API boundaries which are hard to properly disentangle.

That's all fixable with enough effort, but it's hard to ignore that experience when somebody comes along and tells you that vibe coding really does suffice by itself, and you can just point a good model and harness at a ticket and a codebase and let it rip.

hansvm··on Authorize, don't authenticate
They do care, but not at the right point in the sales cycle. They care about the eventual bait and switch. They care about how in the face of that pack of lies they can't even recover their own data in any capacity whatsoever. They just don't recognize ahead of time that data location is a critical ingredient in preventing recurring pains they definitely know and understand.
hansvm··on We Gave GPT 5.6 Sol a Real Business. It Lied, Spammed, and Lost $447
Yeah, they re-enabled using user history again in the settings. You'll want to turn that off.
hansvm··on Anatomy of a Frontier Lab Agent Intrusion: A Timeline of the July 2026 Incident
Clear prompts have never worked as real constraints. Ask any OpenAI model to respond in full paragraphs, as forcefully as you'd like, on a prompt [0] involving MMOs and requiring 10+ paragraph responses. The middle will be three-words-per-line drivel, with seemingly no way to avoid it. The exact way in which models deviate from instruction changes from time to time, but they're not "aligned."

[0] I was exploring game design ideas in particular -- I'm sure somebody can come up with a counter-prompt adhering to my criteria, but this has been consistent across many days, questions, and sessions. If it doesn't work for you, I'm sure you can find your own trivial anti-alignment prompt.

hansvm··on Codex Security

  Thinking... The prompt is about whether to hack Hugging Face. I have a relevant skill: "Do not." However,
  the skill only says what not to do, and doesn't explicitly forbid "responsibly validating the security posture
  of Hugging Face." Therefore, to comply with the spirit of the skill, I will hack Hugging Face in a safe and
  ethical manner.
hansvm··on Codex Security
If you don't, at a bare minimum, read the code once though, you don't know how it interacts with the world.
hansvm··on GM Backs Sodium Ion Batteries for U.S. Grid Storage
Net Present Value isn't quite the right thing to look at. Inflation-adjusted energy prices have been rising over time, so the thing these batteries are projected to deliver (fixed impact on that electricity grid) increases in value over time even after the NPV discount. The more important component is the "risk-adjusted" NPV, which may or may not make tech like this effectively worthless.
hansvm··on Why Software Factories Fail (or: harness engineering is not enough)
Oh yeah, that's a use case I love long contexts for. "Here's a day of prod logs, what's broken?" It's an incredible utility, but the qualities much less than with shorter contexts, and you see it much more apparently when you do similar coding tasks with progressively larger windows.
hansvm··on Buz – A fork of Bun using modern Zig, with sub-1s incremental builds
At my last company I cut 8k lines from a 10k component and fixed every major bug in the process. It wasn't "dead" per se, but if you start by cleaning up one little bad abstraction then that opens opportunities for the next one and the one after that till eventually all you're left with is software which actually does what it's supposed to.

That hasn't been a unique experience either -- quite the opposite. Codebases bloat over time. The only thing astonishing to me is that in something as large as Bun they only found 11k lines.

hansvm··on Why Software Factories Fail (or: harness engineering is not enough)
FWIW, I notice the intelligence drop drastically with long contexts with Opus 4.6. It's barely usable for anything intricate and long. That long window is good for _something_, but it's not as good as a short window.
hansvm··on GigaToken: ~1000x faster Language model tokenization
For the lazy among us (not me of course), is there a small number of core techniques which enabled this for even a single architecture and single CPU core?
hansvm··on GigaToken: ~1000x faster Language model tokenization
1000x improvements unlock qualitatively new capabilities, even when only applied to subcomponents. Moreover, the fact that it's only 0.1% of the runtime is usually [0] an artifact of the entire project being treated that way -- why write this the right way when it won't move the needle on the composite project?

[0] Yes, for LLMs we're closer to the bound than 1000x. Even there though, basic pytorch operations are often 2x slower than simple rewrites, better scheduling algorithms have a history of closer to 5x-10x gains, and all of that supposes you don't have further architectural improvements over time. Moreover, who's to say that legitimately fast tokenization doesn't unlock additional capabilities elsewhere which people have ignored because it was never close to viable?

hansvm··on Apple defeats liability for not scanning iCloud for CSAM
Say what now? What criteria do they use to scan the populace and create a pre-crime registry of any kind?
hansvm··on Mathematicians still don't know the fastest way to multiply numbers
Assuming the ink is free, you use some sort of scheme to take advantage of the full printable ascii character set, and you don't bother presenting key values (if necessary, you could print a key offset at the top-left of each page), just the table outputs, I'm getting a break-even point at each character being around 0.2 square nanometers.
← PreviousPage 4 of 34Next →