HNHacker News
TopNewBestAskShowJobs

vova_hn2

752 karma · joined September 3, 2025

submissionscomments
vova_hn2··on The art of defusing a second world war bomb
> I remember being astounded by how the water "amplifies" the explosions - so while a hand grenade blast is very dangerous on the surface, under the sea it becomes far more horrific prospect, due to the water transferring the blast more efficiently.

Curiously, it is exactly the opposite in many video games. In video games water often protects you from the explosion. I wonder, where did this trope came from...

vova_hn2··on The cost of lies: A Mineserver story
> We won’t do THAT again.

Narrator's voice: They will do it again.

vova_hn2··on Accountability mechanisms can be joyful (2024)
> I honestly think nobody enjoys the exercise itself. The real motivation is second order effects like becoming more appealing to other people.

I, actually, do enjoy the exercise itself. Although, it doesn't prevents me from procrastinating going to the gym and being in terrible shape.

vova_hn2··on Nearly 200 people under observation after Irkutsk lab worker dies from plague
I've read this story before, in Russian, and, honestly, it doesn't make any sense to me.

According to Wikipedia, plague responds to antibiotics very well, since it is a bacteria, not a virus and it hasn't been widespread since the development of antibiotics, so it didn't develop any resistance to antibiotics.

If she knew that she broke a flask with plague (and, as I understand, she did know that), why don't start a course of antibiotics immediately, before any symptoms? Wouldn't she be totally fine it this case?

vova_hn2··on Can gzip be a language model?
In addition to what the other comments said ("WHOIS information for the domain shows it's registered in the Philippines"[0] etc), the "hospital bed" picture is blatantly AI-generated. If you zoom on his face, you can see that it looks extremely unnatural.

I suspect that someone's running a script that looks for public (-ish, Eugene has a Wikipedia page at least) figures without active social media presence and creates fake donation websites with AI-generated texts and pictures.

If my suspicion is correct, this is one of the most evil scams I can imagine.

[0] https://news.ycombinator.com/item?id=49801838

vova_hn2··on Jev introduces a new shape of LLM
> To get calibrated probabilities sounds like a very good feature, if they are indeed well calibrated.

This is a valid point.

> And in my experiments even Qwen 3.8 has a hard time to consistenly conform to a schema, requiring retries, JSON cleanup etc, so to have a model of similar quality (SemIf et al) that simply cannot deviate from the schema by construction could be very helpful.

Literally every inference framework supports constrained encoding. You can make the model choose only from allowed tokens and you can infer only the first diverging token.

It's baffling to me that no inference provider actually exposes this functionality, so you have to run the model yourself to do it.

vova_hn2··on Show HN: A competition for small neural networks that play strategy games
> Your class is measured, not chosen

> model and manifest bytes together pick the class

What?

How hard is it to write something like "your weight class is determined by the total size of the model and manifest" (if I understood it correctly).

Current version both sounds very AI-sloppy and is ambiguous.

The doc page [0] is even more painful to read.

[0] https://tinybrains.dev/docs/models/weight-classes.html

vova_hn2··on Pirate Face Rescues LLM Models from Deletion
> if you've ever tried to use it

Heh, you got me :) IPFS is one of those things that I love reading and about and thinking about using someday, but somehow never get around to it.

vova_hn2··on Pirate Face Rescues LLM Models from Deletion
IPFS has a solution [0] to this problem

[0] https://specs.ipfs.tech/ipns/ipns-record/

vova_hn2··on PyPy v8.0.0 Release
> Pyston was an honest attempt at doing that

I'm still kinda sad that Pyston didn't happen

> but it has been dead for years partially because it hit many of these walls

Maybe this is one of the reasons. But I've also heard that Dropbox (which was making Pyston [0]), that used to heavily rely on Python, just decided that gradual migration to Go [1] is a more feasible approach than creating a faster Python implementation.

[0] https://dropbox.tech/infrastructure/introducing-pyston-an-up...

[1] "About a year ago, we decided to migrate our performance-critical backends from Python to Go to leverage better concurrency support and faster execution speed." - https://dropbox.tech/infrastructure/open-sourcing-our-go-lib...

vova_hn2··on PyPy v8.0.0 Release
A lot of Python code is just a relatively thin layer of "glue" between C libraries.

An ML pipeline will probably rely on numpy to do all the heavy lifting.

A web backend will probably use something like psycopg, which is a wrapper around libpq (official postgres client lib, written in C).

etc

vova_hn2··on AI-generated posters don’t have to be horrible
I find it kinda funny that even "smartest", most capable models often have a very hard time going beyond surface-level, top-of-mind associations, when faced with creative tasks.

Of course, a "Japanese Minimal Poster" has a sakura and a stylized flag of Japan, duh

A human designer would probably think that "Japan -> sakura" and "Japan -> Japanese flag" are way too obvious, too banal, too stereotypical, and, most importantly too boring. And then they would probably sit for a while and try to think of something fresher and less clichéd.

But AI has absolutely no problem with going with the cheesiest, most overused trope.

vova_hn2··on How to Write with an LLM
Great comment, no idea why it was flagged
vova_hn2··on How to Write with an LLM
Exactly! If I want a summary of the code, I can easily generate it myself.
vova_hn2··on How to Write with an LLM
I don't think that many teams review commit messages as a part of code review. At least, I've never seen it "in the wild".
vova_hn2··on How to Write with an LLM
I think that the idea of generating a commit message based on the content (diff) of the commit is fundamentally wrong.

Even before coding harnesses become mainstream, a lot of tools offered to automatically generate commit messages based on the diff (I think JetBrains IDEs started to offer it very early) and I always cringed when I've seen it.

The reason why I don't like diff-base commit messages is because they are redundant. If I want an LLM-generated summary of the diff, I can easily generate it myself, there is absolutely no reason to put it in the commit message.

What I would like to see in the commit message is some additional context that is not a part of the diff. I don't need to read what has changed, because I can already can see it in the diff (or get an LLM to summarize it for me). But I often do need to understand why this change was made. What were they trying to achieve? That's the important part that is not contained in the diff itself. And this is the part that diff-base commits rarely contain.

I think that even something simple like a link to a Jira (or other bugtracker ticket) is much more helpful than diff summary. Maybe instead of "fix" or "update" you could write just a couple of words about what are you trying to fix and why does it need updated. Still better, than a diff-summary.

vova_hn2··on Show HN: Scry, programmable internet search w/ congestion pricing
Pricing model is hard to understand at a glance. It uses a term "second of query time" which is not a conventional term and not defined anywhere. Also, all pricing related pages seem to be LLM-generated and are hard to read for a human.

Please, just explain in your own words, how the pricing works, without using made up terms invented by an LLM.

vova_hn2··on Whoisinspace.com/
Wiki says [0]: "Derivative versions of Sokol continue to be worn by Chinese taikonauts on flights of the Shenzhou spacecraft today, though details of the suits' design differ slightly; they are also reported to weigh less than the Russian version of Sokol."

[0] https://en.wikipedia.org/wiki/Sokol_space_suit#Use_by_countr...

vova_hn2··on Whoisinspace.com/
Technically, you would need to go to Waitangi, NZ (the closest city to Moscow's antipodal point [0]). When you are in the orbit you will periodically be much closer to Putin than if you just stayed at the antipodal point or close to it.

[0] https://www.geodatos.net/en/antipodes/russia/moscow

vova_hn2··on Whoisinspace.com/
I don't think so. So far all fatalities [0] happened either during launch or during launch or during landing. The only fatal incident that happened technically still in space (above the Kármán line) is Soyuz 11 [1], but it happened after the landing sequence was already started, so the capsule landed normally, just with the dead crew.

It appears that just hanging out in the orbit is relatively safe, going up there and going down is risky.

Same with aircraft, btw, most accidents happen during take-off, shortly after take-off or during landing. Cruising at a stable altitude is very safe.

[0] https://en.wikipedia.org/wiki/List_of_spaceflight-related_ac...

[1] https://en.wikipedia.org/wiki/Soyuz_11#Re-entry_and_death

vova_hn2··on Show HN: Restarted – a 2026 remake of the classic 2015 startup generator
Cool, thanks for the detailed response!

> grok-imagine-image-quality

I find it curious that a 2026 model still occasionally makes same type of mistakes that 2018 StyleGAN made.

vova_hn2··on LLM Classification Is Feature Engineering
I think that this can be automated by using two LLMs: a stronger/more expensive for generating prompts and a weaker for actual classification. Approximate algorithm:

1. Give "strong" LLM the task formulation and some labeled examples. Ask it to generate a prompt for the "weak" LLM.

2. Run "weak" LLM on the training set with generated prompt from 1, use replies as features for a smaller ML model (logreg, decision tree etc).

3. Pick examples from the training set that your small model is most wrong about and ask "strong" LLM to generate one more prompt (like in 1), except this time you are using the misclassified examples instead of random.

4. Run "weak" LLM on generated prompt from 3, add results as one more feature for your model.

5. Repeat 2 - 4 until your token budget for this task is exhausted or required score on cross validation set is reached.

I was thinking about creating an open source library that implements this, but I'm not sure if anyone really needs it. I suspect that people who need something like this already made their own implementation.

vova_hn2··on Show HN: Restarted – a 2026 remake of the classic 2015 startup generator
What did you use to generate human faces? As far as I remember, the earliest and most famous face generator ("This Person Does Not Exist") used GAN.

Anyway, my "Luciana Roberts" [0] has an artifact around her hair very similar to what older GANs often produced.

It's not a complaint, just a curious observation.

[0] https://restarted.io/?z=448760197027

vova_hn2··on Training a 4B model to produce 81% faster query plans than Postgres
should've made a TikTok video, instead of a write-up, amirite?
vova_hn2··on Anecdotally, programmers dislike "reduce"
Of course it is also possible to just create a temporary list and throw it away immediately:

    lst = [1, 2, 3]
    acc = 0
    [acc := acc + item for item in lst]  # this is the actual reduce
    print(acc)
This way you wouldn't need to take that weird function from Itertools Recipes.

It should be possible to optimize away the creation of the temporary list and avoid wasting CPU and memory on it. But I don't know if CPython actually has this optimization, that's why I didn't mention it initially. I would love someone more knowledgeable in CPython internals to tell me how this would work.

vova_hn2··on Anecdotally, programmers dislike "reduce"
Actually, now that I think about it, with this new(-ish) (in)famous walrus operator and itertools recipes, I could sort of emulate reduce using gen expr

First, I will need to steal a "consume" function from Itertools Recipes [0]:

    from collections import deque
    from itertools import islice
    
    
    def consume(iterator, n=None):
        "Advance the iterator n-steps ahead. If n is None, consume entirely."
        # Use functions that consume iterators at C speed.
        if n is None:
            deque(iterator, maxlen=0)
        else:
            next(islice(iterator, n, n), None)
Isn't it a bit weird, that the fastest and easiest way to consume an iterator entirely is to feed it to a zero length deque? It is weird, but it was just an apéritif, lets move to the main course:

    lst = [1, 2, 3]
    acc = 0
    consume((acc := acc + item for item in lst))  # this is the actual reduce
    print(acc)
This is the line where the actual `reduce`ing happens:

    consume((acc := acc + item for item in lst))
Basically, we use the fact that a "walrus" expression has a side effect and we just throw away the actual results of the iterator, because we don't need them.

Is it more readable then normal reduce? I'm not sure. If I seen it in the actual production code, it would certainly raised my eyebrows. It is not a part of the normal Python "vocab" - a set of idioms that are considered "pythonic" and that you expect every Python dev to intuitively understand, so I would be very cautious in using it in the code that is intended to be read by other people.

Why did I do it? I don't know, just a fun "what if?" thought experiment.

[0] https://docs.python.org/3/library/itertools.html#itertools-r...

vova_hn2··on Anecdotally, programmers dislike "reduce"
> reduce is less elegant in languages I use, like JavaScript, Python, and Swift. In my blissful stint as a Clojure developer, I did not get this feedback.

Two notes:

1. reduce if a part of functional programming vocab, so, obviously, a Clojure dev has to internalize it to be able to use the language properly. For other mentioned languages it is not that necessary.

2. As a (mostly) Python dev, I think that list comprehensions and generator expressions are much easier to read and understand than map and filter. Although, people coming from other languages and having limited experience with Python specifically might disagree with me. Perhaps, we should think about inventing some nice syntax sugar that around the concept of `reduce`ing and `fold`ing, similar to what list comp/gen expr in Python did to concepts of `map`ing and `filter`ing.

vova_hn2··on I can't stop thinking about Papua New Guinea
The "Pre-bronze age war between two tribes in West Papua, 1963" video in the article is an embedded tweet. Twitter currently doesn't allow to view it without an account (extensively discussed on HN [0]). Fortunately, it is also available on Youtube [1] (longer version [2]).

[0] https://news.ycombinator.com/item?id=49694296

[1] https://www.youtube.com/watch?v=kNHIP2FJzko

[2] https://www.youtube.com/watch?v=JI4uirwxx1Y

vova_hn2··on Compressing a flag to 11 bits
Now I wonder if it possible to create an SQL VIEW in any of the popular RDBMSs that would pack flags in one int8, but would expose them as separate columns in the VIEW in a way that would make not just SELECTs, but also UPDATEs and INSERTs, work.
vova_hn2··on Compressing a flag to 11 bits
I've read the requirements [0] section of the article and it doesn't contain anything that would prevent you from just storing all the flags in the decoder and using an id.

In fact, the article says

> With this (rather primitive) format I managed to encode 128 flags with varying success.

Which means that, actually, 7 bits would be enough.

So, this comment is (correctly) pointing out that requirements are imprecise.

You may find such "rules lawyering" obnoxious, but I think that in the real world tasks it is often useful to clarify such things, because it let's you avoid doing hard and complex work that is actually not needed.

I think that every experienced developer has this automatic response to reading a list of requirements: "here is a shortcut that will technically fulfill all the requirements. Please, either tell me that it is okay to do it, or update your requirements to close this loophole".

[0] https://read.vantezzen.io/miniflags#3d8e32040c2a808e8d95c8a0...

Page 1 of 10Next →