HNHacker News
TopNewBestAskShowJobs

astrobe_

2,240 karma · joined October 1, 2011

submissionscomments
astrobe_··on Minecraft removing obfuscation in Java Edition
You can add the Flight Simulator series to the list, which spawned a vast ecosystem of add-ons, both free and commercial.

I believe though, that what you actually need as a big or small company, is good game first and foremost; the engine is secondary. When the community around a game reaches a critical mass, the very small percentage of its members who have the skills to modify things becomes significant as well.

For instance, Richard Burns Rally was not intended to be modded at all, yet the fans added new cars, new tracks, online scoreboards, etc.

In the Luanti [1] community (a voxel games engine/platform, designed to be moddable nearly from the start), one begins to see something similar as well: notable games gets mods, others don't (the former default game is a particular case; it is not exactly good but go tons of mods because of its status, and games based on it benefit from that ecosystem). Yet all use the same engine (perhaps Roblox is similar in that respect, I'm not sure if they have "reified" whole games like Luanti did).

[1] https://www.luanti.org/

astrobe_··on What is intelligence? (2024)
> Intelligence is whatever we consider ourselves capable of

Then, what is what we are incapable of? Magic? ;-)

> Maybe the only thing we can do is advanced pattern matching

Pattern matching as a way to support the excellent heuristic "correlation is likely causation", yes. This is what allows us to analyze systems, what brings us from "something thrown away will eventually fall to the ground" to the theory to relativity.

Intelligence is understanding, and understanding comes from hacking systems in order to use them to our advantage - or just observe systems being broken or being built.

By doing that, we acquire more knowledge about the relationships and entities within the system, which in turn allows more advanced hacking. We probably started with fire, wolves, wheat, flint; and now we are considering going to Mars.

astrobe_··on Mosquitoes discovered in Iceland for the first time
Insects are more resilient than mammals in many ways. For instance, radioresistance [1]. Plus fast, quantity-oriented breeding cycles that makes them more reactive to changes in the environment.

[1] https://en.wikipedia.org/wiki/Radioresistance

astrobe_··on Forth: The programming language that writes itself
> Does Forth really reduce the burden of naming things?

I would say that you have less names, but they are more important. Plus, it is more difficult to name things because you prefer short names; in all languages, when you have a good naming "discipline", follow a naming convention, you end up with an informal "grammar" inside of your names. In Forth this is even more important.

> My impression is that there's more words in a Forth program than functions in an equivalent program in a language that has named variables

Yes, some people have called that "ravioli code" or "confetti code", IIRC. But most of them are support words. In Forth, you also eventually end up with "module APIs". This also exists in C or Java or ..., except the ratio useful:support is lower.

astrobe_··on Forth: The programming language that writes itself
It is too risky for companies to rely on a language that have a small pool of programmers. The bigger the company, the bigger the language must be. AI multiplies this availability, not productivity.
astrobe_··on A 4k-Room Text Adventure Written by One Human in QBasic No AI
Yes, I remembered that some MUDs touted much more rooms. I've found Aarchon (15K) [1] and SlothMUD (23K) [2]. And that's just the number of rooms, the other numbers (8K mobs, 7K items, 12K NPCs) are massive as well.

But big MUDs usually have "builder" teams so the comparison is unfair. However, these numbers have hardly been matched by game studios - WoW or Runescape comes to mind. And then there's Dwarf Fortress which reaches the infinite in some categories thanks to procedural generation.

[1] https://www.aarchonmud.com/arc/features

[2] https://www.mudportal.com/listings/by-genre/hack-slash/item/...

astrobe_··on Tor browser removing various Firefox AI features
Or just watch its market share erode until it vanishes from the charts. You picked "beginning" too, and indeed it started when they betrayed the power-users userbase they had (the one that installed FF on their mum's computer and actively promoted it) to be more like the oh-so-successful Chrome (which was pushed with dark patterns like being bundled with AV updates). Personally, it made me go to the "old" Opera (Opera 12) until it got "Chromified" and sold to China.

They have consistently been doing the opposite of what the majority of their userbase expect from them (Pocket, paid sites forced to the "Speedial" page,...). To me, the only remaining value of FF is being up-to-date with web shena^H^H^H^H^H standards.

A FOSS project shouldn't be focused on succeeding; they should be focused on doing the right thing. No little compromises or play-on-words on your values. And if that means less funding, too bad, but so be it.

astrobe_··on Hardware Stockholm Syndrome
Maybe Mill' CPU [1] or GreenArray's CPU [2] ?

The sad thing is that nobody is going to buy these chips aside from niche products. You won't see them run a desktop or a smartphone, because if a CPU doesn't have a C compiler or a Javascript JIT "out of the box" so to speak, it has no hope to enter mass market products.

Even Java had no chance. Some older ARM CPUs used to support for "Java bytecode execution" [3] but it never saw adoption.

Your comment makes me think that there is some truth in TFA's title: a trait of many mental illnesses is that the person is not aware they have it - the Stockholm syndrome is probably not a mental illness, though. See what you are doing: "gatekeep" alternatives that don't play by the rules of the dominant architectures ("pipelined, superscalar SIMD RISC design").

[1] https://millcomputing.com/

[2] Website currently has a certificate problem. IIRC, GA144 is a 144 cores asynchronous CPU. The cores' ISA is based on the primitives of the Forth language: next to no registers, instruction manipulating data on a data stack instead, separate from the call/return stack.

[3] https://en.wikipedia.org/wiki/Jazelle

astrobe_··on Where it's at://
Owning a private key is the best way to prove your identity. As for hosting, I think BitTorrent is the most rock-solid? So maybe store your content in a Git repo, sign your commits, and publish on Torrent. And NNTP or RSS to notify users/followers of updates? Problems though are discoverability and passivity (e.g. no user comments from blogs etc.).
astrobe_··on Work is not school: Surviving institutional stupidity
I want to see that too; because OP is saying between the lines that "public school kids" are lazy dorks by birth.
astrobe_··on The 3,000-year-old story hidden in the @ sign
The claim is just inept. There's no particular symbol that holds more anything than others. The Greek alphabet [1] as a whole is a cultural cornerstone of the "western" culture.

[1] https://en.wikipedia.org/wiki/History_of_the_alphabet

astrobe_··on The great sameness: a comic on how AI makes us more alike
This was on HN's frontpage previously too; I immediately thought that this comic would say more or less the same thing. Perhaps both came from an AI? :D

But in another paragraph, the article says that the teacher and the students also failed to detect an AI-generated piece.

The ending of the comic is a bit anti-climatic (aside from the fact that one can see it coming), as similarities between creations are not uncommon. Endings, guitar riffs, styles being invented twice independently is not uncommon. For instance, the mystery genre was apparently created independently by Doyle and Poe (Poe, BTW, in Philosophy of composition [1], also claims that good authors start from the ending).

Two pieces being similar because they come from same AI versus because two authors were inspired and influenced by the same things and didn't know about each other's works, the difference is thin. An extrapolation of this topic is the sci-fi trope ( e.g. Beatless [2] ) about whether or not the emotions that an android simulates are real. But this is still sci-fi though, current AIs are good con artists at best.

[1] https://en.wikipedia.org/wiki/The_Philosophy_of_Composition

[2] https://en.wikipedia.org/wiki/Beatless

astrobe_··on How to stop functional programming (2016)
Beyond the satire, one is supposed to write code which is readable, and like often with written works, one has to think about the "audience", the readers. When you write technical documentation, you have to decide ahead of time the expected skill level of the reader - often that decision is written too in the intro as "prerequisite(s)".

When writing code you have the motto "don't make me think" in mind, but how to know what's the maximum level of trickiness for readers? There are familiar techniques and idioms when it is your main programming language, but they are not for someone using this language on the side.

In any case, neither code nor comments should be tutorials. To a reasonable extent, it is up to the reviewer to do their homework or just ask. Then based on that interaction you can add a comment or a parenthesis, or uncompress a bit the code. But not to the point that it means to "dumb down" things, because it is a downward spiral.

astrobe_··on Ants that seem to defy biology – They lay eggs that hatch into another species
The question is, which kind of environment pressure and context lead this ants to this adaptation. Perhaps a high mortality rate in their own species happened at some point? Maybe something like an STD?

The other thing to note is that integration of "foreign" genetic material also happens inside of individuals themselves, e.g. the famous cases of gut bacteria or mitochondrial DNA. One general puts a lot of emphasis on inter-species competition, e.g. predators and preys, but there's a lot of cooperation and symbiosis happening at all levels too.

astrobe_··on Playing “Minecraft” without Minecraft (2024)
The finite world is a problem in practice only for popular game servers. I think the base walking speed for characters is ~2m/s, so reaching the edge from origin would take at least 4 hours. Even free-falling from max altitude (10 m/s is the max speed IIRC) takes a while.

Moreover, the "finitude" of the world can be mitigated by the fact that Luanti also offers 64 km total vertically out-of-the-box; various mods use this space to create the equivalent of "dimensions". In practice, without tools that allow to dig ridiculously fast, supposedly realistic mountains (what can be realistic in a game where you can carry with you several trees, casually jump 1 m anyway and barely get a scratch from a 15 m fall?), planes, dragons or whatnot, a "troposphere" of 1 km is plenty, and would allow 128 64x64 km "dimensions".

That being said, and my own biases put aside, people outside of the Luanti core team are working on that [1]

[1] https://forum.luanti.org/viewtopic.php?t=9183

astrobe_··on Playing “Minecraft” without Minecraft (2024)
Minetest sort of officially rebranded itself as a game engine when it changed name, it already was a game engine before that. Most of the bugs are caused by games and/or mods themselves, in particular if you had a Lua exception.

Among the various games that took inspiration from Minecraft (Voxelibre, Mineclonia, Repixture), some are more reliable than others. Those that don't try to be too close are the more reliable because replicating complexity tends to lead to more bugs.

astrobe_··on Teen safety, freedom, and privacy
Well, in this scenario the user isn't supposed to have access to the (DNS) configuration. But one could still enter a raw IP address in the browser - e.g. a friend who has an unlocked device could ping the site to get it. But if one accesses a website by IP, since the links and the Ajax often need DNS resolution (CDNs etc.), the content will probably be blocked for the most part.

Like copy protection, the scheme is probably not entirely waterproof, but it can nonetheless act as a deterrent.

astrobe_··on Teen safety, freedom, and privacy
If we want to protect kids/teens, why not create an "Internet for kids" with a specific TLD, and the owner of this TLD would only accept sites that adhere to specific guidelines (moderation, no adult content, advertisement...)? Then devices could have a one-button config that restricts it to that TLD.
astrobe_··on Safe C++ proposal is not being continued
It looks more like an implementation error to me, and actually it looks more like a design mistake than an implementation choice because there are arguments in favor of using an abstract functor class for the comparison function (you'll need a closure sooner or later), which would have given the chance to warn the user about this particular issue in the docs - at least it would have been more visible and clearer than it currently is [1].

Because until vibe coding becomes a culture, programmers are at least expected to "RTFM". But that's also a requirement which is becoming harder to meet by the year, because - you almost said it the first few minutes of your talk - "we needed to merge it ASAP".

This mistake seems to have been somewhat fixed in C++20 [2]. "Too little too late", yes, probably.

[1] https://en.cppreference.com/w/cpp/algorithm/sort.html

[2] ibidem, tacit use of std::less.

astrobe_··on Safe C++ proposal is not being continued
> There is a prevalent culture of expecting users to not make mistakes.

I think the older of us C/C++ programmers come from no-safety languages like assembly language. That doesn't mean that all of us are "macho programmers" (as I was called here once). C's weak typing and compilers emitting warnings give a false sense of security which is tricky to deal with.

The statement you make is not entirely correct. The more correct statement is that there is a prevalent culture of expecting users to find strategies to avoid mistakes. We are engineers. We do what we need with what we have, and we did what we had to with what we had.

When you program with totally unsafe languages, you develop more strategies than just relying on a type checker and borrow checker: RAII, "crash early", TDD, completion-compatible naming conventions, even syntax highlighting (coloring octal numbers differently)...

BUT. the cultural characteristics of the programmers are only one-quarter of the story. The bigger part is about company culture, and more specifically the availability of programmers. You won't promote safer languages and safer practice by convincing programmers that it has zero impact on performance. It's the companies that you need to convince that the safe alternatives are as productive [1] as the less safe alternatives.

[1] https://xkcd.com/303/

astrobe_··on Doorbell prankster that tormented residents of apartments turns out to be a slug
Also, mechanical stuff eventually wears out - at best with good quality ones, the product becomes obsolete before they do. For instance potentiometers [1] used for volume control on stereos rust over time and eventually become unusable. So there's a durability argument too.

[1] https://en.wikipedia.org/wiki/Potentiometer

astrobe_··on From burner phones to decks of cards: NYC teens adjusting to the smartphone ban
Playing cards during breaks, reading a lot, interacting with others, listening to radio a lot, that was the student me when I went no tv, no computer (cause I was already addicted to programming, Internet wasn't yet everywhere) to force myself to socialize more. I hope these kids will have nostalgic memories of that time as well.
astrobe_··on I kissed comment culture goodbye
I agree with the author on the positive side of commenting. In addition to every they said, it learns you to accept being proven wrong, learn how ignorant you are, and is a great introspection tool.

The point of commenting is not being social or a socialite. The best comments are questions - asking others, questioning yourself.

Looking back at some of my comments, some were clearly toxic and I know why: it was time when things weren't going my way at work (cause most of my comment activity is in tech-related forums). It reminds me when I was bullied at school, which made me at times not the nicest brother. Took me too long to notice I had this tendency.

But their reasoning then becomes unsound: "All of that social activity with zero ROI." They throw the baby out with the bathwater.

It seems that the author belong to the same regeneration as mine, so they might be in that period of their life - the "forties blues" or "middle age crisis" (1). This doesn't "invalidate" this post, except for the false dichotomy between Internet acquaintances and IRL friends. It is a warning to be heard, at a time when we see more and more smartphone zombies in the streets.

(1) it becomes really ironic when you been looking at teens and their identity crisis with a patronizing eye in your thirties-forties and then you experience it a second time yourself.

astrobe_··on Google deletes net-zero pledge from sustainability website
Not so strange. Just like communism slips to oligarchy, capitalism slips to plutocracy, and as such actively undermines democracy. It doesn't that campaign budgets are capped when you have the right media owners on your side.

People decide on resource allocation, period. It is as "efficient" as choosing human laws versus natural selection, the latter being exactly the model capitalism is copied from.

astrobe_··on Git for Music – Using Version Control for Music Production (2023)
Git presents things to you as patches, but it doesn't really uses patches internally [1], so having a specif diff program doesn't help - except maybe to get readable patches - because IIRC, this can be customized.

A version control system that would/is using patches internally would be more space efficient, but probably slower as it would have e.g. to apply all patches from version 0 to reconstruct the current version. Git made its choice with regard to this frequent dilemma and its original purpose, which was to version control the Linux kernel source code.

> If changing a single bit at the start of file changes the whole thing then it's really a failing of the file format. By which I probably mean the container format.

Audio formats are typically compressed, so this is hardly avoidable. Compression is a bit like encryption in that regard, except that (good) encryption deliberately introduces random data [2].

[1] https://jvns.ca/blog/2024/01/05/do-we-think-of-git-commits-a... (or long story short:) https://news.ycombinator.com/item?id=13644631

[2] https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

astrobe_··on Six months into tariffs, businesses have no idea how to price anything
> It's not achievable in the USA because a very large chunk of our population is literally retarded. 70 mil voted for Trump for some reason.

I am not an American citizen so I cannot feel offended by this sentence, but I think it doesn't help to call people stupid.

What you describe looks like a failure of the education system, which have been defective for decades in the US, from what I've heard. This may very well take 100 years (4 generations is even slightly optimistic) to escape this downward spiral.

Meanwhile, a possible strategy is to do like the others: get a popular politician who makes empty promises, while doing the opposite, or whatever they want actually, when in charge. They can inject massive amounts of money in the public school system even though they promised to make private schools more accessible in their programme, and distract people's from this obvious lie with a wrestling showmatch against Putin.

Certainly, if you are smarter than them, you can trick them.

astrobe_··on New interpretations suggest the "heat death" hypothesis might not hold (2023)
Flies do equally well, if not better.

The only problem for earth life is that anything less intelligent than a human cannot leave the planet with significant chances of survival. Bacteria can however take a ride in our space probes and get a minuscule chance to colonize e.g. Mars [1].

What will go to the end of the universe is self-replicating robots. We have already made the first step in that direction with the AI that makes the headlines currently.

No art, no love, no dreams, just brute force.

[1] https://astrobiology.com/2022/12/planetary-protection-killin...

astrobe_··on Implementing Forth in Go and C
> Look at that stack wrangling! It's really hard to follow what goes where without the detailed comments showing the stack layout on the right of each instruction (a common practice for Forth programs).

The proposed definition is not particularly difficult to follow. This a readability argument, and we know it is 90% subjective. OP could be a rookie Lisper and I could be a grey beard Lisper: I don't see a problem here, cause I don't see the parens any more.

Second, Forth as 2 stacks, and it shouldn't be overlooked:

    : +! dup >R @ + R> ! ;
Of course, this will still be opaque to those here not familiar with Forth, but basically this definition copies the address you need twice to the "other" stack, fetches the memory value, adds, then retrieves the memory address to store the result.

Third, stack comments are as common as training wheels on bicycles. Ok, a bit more common actually. But you get the idea: you need them when you have not yet learned to feel forces and balance your weight accordingly. This is also a key point which is not visible because it is not syntax nor semantics, but design. Forth programmers are very insistent on simplification and factoring for this reason. Take them seriously. If you see 2+ instances of the same sequence of words, don't worry about execution speed, factor it.

Moore explained that definitions are like abbreviations except they can take a parameter or two. Follow that. He also isn't joking when he says than messing with more than two parameters on the stack (like the proposed +!) is already too much. The author even agrees, in a way.

When you do all that, this is when you can make cherries rain on your cake: you can rewrite in machine code the critical definitions, and it is easy to do because they are so short and simple. You can make up for the cost of interpretation and the cost of convenience factoring, if needed.

> How can you know the arity of the functions without adding explicit comments?

Oh, the classic example with foo and bar that give zero clue about what they do. Compare with the "+!" proposed by the author himself - any Forth programmer instantly knows it most likely takes 2 arguments and returns nothing. If it doesn't they will argue that it is as terrible name and you should know better.

This is one of the biggest challenges of Forth: stop FUDing yourself with "what ifs". They won't happen. Ok, sometimes they do happen. But by this time you will have built some confidence, stopped guarding against alien invasions from the next multiverse (which simplifies coding a lot), and you will be able to deal with those unexpected turn of events.

I won't pretend the problem doesn't exist at all, though. But it is far smaller than this type of argument makes it seem to be. It can be a problem when reading someone else's code who has an unfamiliar coding style, granted. But I have written thousands of lines of Forth and I rarely have this problem.

Also, a note on the C equivalent: again, it is focused on the syntax, but we know that semantics are where the fun is: do foo or bar have nasty side effects? Doesn't bar return a signed integer when foo expects an unsigned? I would argue that C's more "natural" syntax creates an illusion of understanding which makes it more friendly than it really is. Maybe you've felt it if you reviewed some code once, and then later had to debug or adapt it.

astrobe_··on SQLite (with WAL) doesn't do `fsync` on each commit under default settings
> but power failures are basically a non existent threat anyways

Not in the contexts sqlite3 is often used. Remember, this is an embedded database, not a fat MySQL server sitting in a comfy datacenter with redundant power backups, RAID 6 and AC regulated to the millidegree. More like embedded systems with unreliable or no power backup. Like Curl, you can find it in unexpected places.

astrobe_··on How can AI ID a cat?
> These days, computers can easily recognize photos of cats, but that’s not because a clever programmer discovered a way to isolate the essence of “catness.”

It could have been. It did happen in some cases as computer vision didn't wait for neural networks (e.g. OCR). But to hijack a famous quote, "Neural networks are like violence - if it doesn't solve your problems, you are not using enough of it."

> A neuron with two inputs has three parameters. Two of them, called weights, determine how much each input affects the output. The third parameter, called the bias, determines the neuron’s overall preference for putting out 0 or 1.

So a neuron does very basic polynomial interpolation and by hooking them together you get polynomial regression. I don't know if it amusing or amazing that people use polynomial regression to write programs now.

← PreviousPage 6 of 34Next →