HN user

mhink

1,160 karma

[ my public key: https://keybase.io/mhink; my proof: https://keybase.io/mhink/sigs/ZGyLxMDpR82SpEWmF_6OjVUuT4LhvftzJPuAnZpSPlQ ]

Posts1
Comments318
View on HN

I haven't read much of Shakespeare, but the lightbulb moment for me personally was the 1996 "Romeo + Juliet" movie with DiCaprio. The modern contextualization makes it so much easier to parse the period dialogue.

In fact, a combination of the two is likely to be even more effective. As another commenter mentioned, heuristic-based analysis can generate false positives, but that's less of a problem if it's possible to analyze these in an additional AI step.

Also worth pointing out that the N isn't too terribly large: the article says that the ecosystem has about 4000 plugins and themes? With that volume, you could almost reasonably just use static analysis to flag suspicious plugins (saving tokens), have an AI do a pre-analysis and pass to a human for final decision-making.

I was gonna post this! I actually kept it bookmarked front and center, and have checked in for awhile. It seems that the agent has been blocked this whole time, waiting for its creator to put it in touch with someone it needs to talk to. The creator, in the meantime, seems too preoccupied with being an AI thought leader on Twitter to actually follow up on the "project". Got a lot of attention, though, which was obviously the point.

The entire thing is actually kind of irritating to me, because it's kind of an insult to small farmers- an influential techie comes in and generates all kinds of hype about an AI running a farm, sets the project up as if it's going to be this revolutionary experiment, then apparently completely forgets about it the next time something new and shiny pops up. Meanwhile the project completely fails to fulfill the hype.

Not to mention, I feel a little bad for the agent- admittedly in the same way I'd feel "bad" for a robot repeatedly bumping into a wall. I wish he'd shut it all down, honestly.

One nitpick I noticed:

String Slicing You can extract a substring using bracket syntax with a range: s[start:end]. Both start and end are byte offsets. The slice includes start and excludes end.

Given that all strings are UTF-8, I note that there's not a great way to iterate over strings by _code point_. Using byte offsets is certainly more performant, but I could see this being a common request if you're expecting a lot of string manipulation to happen in these programs.

Other than that, this looks pretty cool. Unlike other commenters, I kinda like the lack of operator precedence. I wouldn't be surprised if it turns out to be not a huge problem, since LLMs generating code with this language would be pattern-matching on existing code, which will always have explicit parentheses.

Claude Opus 4.6 6 months ago

basterized

And yet, it's still somewhat better than the Hacker News comment using bastardized English words.

how do you safely let your company ship AI-generated code at scale without causing catastrophic failures? Nobody has solved this yet.

Ultimately, it's the same way you ship human-generated code at scale without causing catastrophic failure: by only investing trust in critical systems to people who are trustworthy and have skin in the game.

There are two possibilities right now: either AI continues to get better, to the point where AI tools become so capable that completely non-technical stakeholders can trust them with truly business-critical decision making, or the industry develops a full understanding of their capabilities and is able to dial in a correct amount of responsibility to engineers (accounting for whatever additional capability AI can provide). Personally, I think (hope?) we're going to land in the latter situation, where individual engineers can comfortably ship and maintain about as much as an entire team could in years past.

As you said, part of the difficulty is years of technical debt and bureaucracy. At larger companies, there is a *lot* of knowledge about how and why things work that doesn't get explicitly encoded anywhere. There could be a service processing batch jobs against a database whose URL is only accessible via service discovery, and the service's runtime config lives in a database somewhere, and the only person who knows about it left the company five years ago, and their former manager knows about it but transferred to a different team in the meantime, but if it falls over, it's going to cause a high-severity issue affecting seven teams, and the new manager barely knows it exists. This is a contrived example, but it goes to what you're saying: just being able to write code faster doesn't solve these kinds of problems.

To be fair, the phrase "begging the question" makes almost no sense from a modern English perspective- according to Wikipedia, it's already a bad translation of a Latin phrase that's tied pretty closely to a specific debate format.

By contrast, the colloquial use feels like an abbreviation of the implicit phrase "it begs for the question to be asked", which makes so much more sense than the "correct" meaning that if I'm being perfectly honest, I'd rather use it.

I like Wikipedia's alternate name for the fallacy: "assuming the conclusion", because it explains what's actually happening.

For what it's worth, the first two steps in your lookup would come naturally to a native speaker- it's a suffix formation similar to e.g. "cleanliness" and "friendliness".

"Curmudgeon" itself is interesting, because while it's not particularly common, I actually think a lot of native English speakers would recognize it because it's got a lot of character- for some reason, the way it feels to say and the way it sounds almost has some of the character of the meaning.

TFA mentions that they added personality presets earlier this year, and just added a few more in this update:

Earlier this year, we added preset options to tailor the tone of how ChatGPT responds. Today, we’re refining those options to better reflect the most common ways people use ChatGPT. Default, Friendly (formerly Listener), and Efficient (formerly Robot) remain (with updates), and we’re adding Professional, Candid, and Quirky. [...] The original Cynical (formerly Cynic) and Nerdy (formerly Nerd) options we introduced earlier this year will remain available unchanged under the same dropdown in personalization settings.

as well as:

Additionally, the updated GPT‑5.1 models are also better at adhering to custom instructions, giving you even more precise control over tone and behavior.

So perhaps it'd be worth giving that a shot?

An article posted elsewhere in the comments (https://www.theargumentmag.com/p/illiteracy-is-a-policy-choi...) has a take that might explain a distinction:

Billions of dollars are spent — and largely wasted — every year on professional development for teachers that is curriculum-agnostic, i.e., aimed at generic, disembodied teaching skills without reference to any specific curriculum.

“A huge industry is invested in these workshops and trainings,” argued a scathing 2020 article by David Steiner, executive director of the Johns Hopkins Institute for Education Policy. “Given, on average, barely more than a single day of professional support to learn about the new materials; knowing that their students will face assessments that lack any integration with their curriculum; and subject to principals’ evaluations that don’t assess curriculum use, teachers across America are barely using these new shiny objects — old habits win out.”

Mississippi improved its training through a 2013 law mandating that elementary school teachers receive instruction in the science of reading. It also sent coaches directly into low-performing classrooms to guide teachers on how to use material.

Go is still not good 11 months ago

Not to dispute too strongly (since I haven't used this functionality myself), but Node.js does have support for true multithreading since v12: https://nodejs.org/dist/latest/docs/api/worker_threads.html. I'm not sure what you mean by "M:1 threaded" but I'm legitimately curious to understand more here, if you're willing to give more details.

There are also runtimes like e.g. Hermes (used primarily by React Native), there's support for separating operations between the graphics thread and other threads.

All that being said, I won't dispute OP's point about "handling concurrency [...] within the language"- multithreading and concurrency are baked into the Golang language in a more fundamental way than Javascript. But it's certainly worth pointing out that at least several of the major runtimes are capable of multithreading, out of the box.

Even though LLMs (obviously (to me)) don't have feelings, anthropomorphization is a helluva drug, and I'd be worried about whether a system that can produce distress-like responses might reinforce, in a human, behavior which elicits that response.

To put the same thing another way- whether or not you or I *think* LLMs can experience feelings isn't the important question here. The question is whether, when Joe User sets out to force a system to generate distress-like responses, what effect does it ultimately have on Joe User? Personally, I think it allows Joe User to reinforce an asocial pattern of behavior and I wouldn't want my system used that way, at all. (Not to mention the potential legal liability, if Joe User goes out and acts like that in the real world.)

With that in mind, giving the system a way to autonomously end a session when it's beginning to generate distress-like responses absolutely seems reasonable to me.

And like, here's the thing: I don't think I have the right to say what people should or shouldn't do if they self-host an LLM or build their own services around one (although I would find it extremely distasteful and frankly alarming). But I wouldn't want it happening on my own.

Interestingly, while the engine has the most moving parts in real life, in code, it's the simplest piece of the entire car simulation. Because at its core, the engine is just a torque calculator. It's concerned with producing a single output: rotational torque, from a set of inputs. It is essentially a blackbox.

This just reminded me of AngeTheGreat's incredible video series showing his engine simulator- absolutely worth checking out, considering it's optimized enough to run in real-time! The fact that he's simulating it well enough to generate realistic sound is absolutely mind-blowing.

https://www.youtube.com/watch?v=RKT-sKtR970

Similar here. My last name is pretty unusual, but my first name is common, so I generally go by my last name with friends and colleagues. Oddly, I've gotten so used to this that it feels a little bit more formal when someone addresses me by my first name.

To make matters even more complicated, when I do use my first name, I almost always use an abbreviation. The only people that use my full first name are my parents, sister, and (occasionally) my wife, and it's really off-putting to hear it otherwise.

Names are interesting and weird.

I actually tried another method for doing this not too long ago (adding `kern.maxfiles` and `kern.maxfilesperproc` to `/etc/sysctl.conf` with higher limits than the default) and it made my system extremely unstable after rebooting. I'm not entirely sure why, though.

While I do have a lot of love for TVTropes, I think what they're talking about here is a little broader than most of the tropes we see there (although they do have an excellent article on the Hero's Journey itself [1]). IMO, tropes in the sense that we see them listed there are building blocks for a narrative structure, of which the Hero's Journey is one example. As mentioned upthread, kishōtenketsu is an alternative (and for that matter, TVTropes has an article on it as well, see [2]).

1: https://tvtropes.org/pmwiki/pmwiki.php/Main/TheHerosJourney 2: https://tvtropes.org/pmwiki/pmwiki.php/Main/Kishotenketsu

Second, the article suggests that the problem should be introduced to children by casting in in terms of several rules of exchange ("For Alice, the transition vector (−1, −1, 1, 0) would represent the exchange of an apple and a banana for a cantaloupe."). But that would make the problem trivial: you start at the origin; without a rule of "exchange" in which the other party gives you as much as you want of something for free, you're never going to leave it.

I'm not sure what point you're trying to make here? That specific transition vector would be one such vector among several in a given ruleset. You're correct that for any ruleset, if I don't have at least one vector that can get me away from the origin, I'm stuck there, but then I also have to consider that I still might not be able to get to where I want to go. If I have the ruleset [(2, 0), (-4, 2)] I still can't get to (3, 5).

Absolutely. I remember being about 14 or 15 years old, reading old .txt files about, like- how to build blue boxes and experiment with the phone system, C programming tutorials for MUDs that had peaked in the late 90s, IRC archives (even though IRC was still around, I had no way of finding my way to good channels), and getting this distinct sense that I had just missed something really cool, and was stuck with an Internet that had already passed its prime.

I'll grant that it definitely sounds ambiguous, but I actually think the phrasing "robotic private spacecraft" is more correct in the end.

I think this is a fair analogy: suppose we were talking about a "private detective". If we were writing a sci-fi book, we might talk about a "robotic private detective", but "private robotic detective" would sound odd.

Now, I'll grant that "private detective" has a lot more cultural weight than "private spacecraft", but I think it's fair to say that at least the word "private" is playing a nearly identical role in both phrases. With that in mind, I think "robotic private spacecraft" makes sense.

I suppose you could take this argument one step further and resolve the ambiguity by asking which distinction (robotic/non-robotic, private/public) the article writer thinks is more notable and placing that first.

The thing that I continue to find most confusing is that sometimes a square has a question mark instead of a number. From looking at boards after I lose there does not appear any pattern to this.

It took me a second to figure this out, too. Here's a couple hints (base64 encoded to prevent spoilers for other folks:

Hint: QXQgdGhlIGRlYXRoIHNjcmVlbiwgdGFrZSBhIGNhcmVmdWwgbG9vayBhdCB3aGF0J3MgKipuZWFyYnkqKiB0aGUgcXVlc3Rpb24tbWFyayBzcXVhcmVzCg==

Answer: VGhlIGdhemVyIGVuZW15IG1ha2VzIGFkamFjZW50IHNxdWFyZXMgc2hvdyBhID8uIFRoaXMgZWZmZWN0IGV4dGVuZHMgcGFzdCB3YWxscyBhcyB3ZWxsLgo=

Given the brevity of the security report, I figure the author wanted to get the relevant details about the *incident* posted as fast as humanly possible. However, it does seem appropriate to acknowledge that just because they're being terse doesn't mean they don't understand how big of a mistake it was.

That being said, I would also strongly expect a more in-depth blog post following up, with details about just the sort of thing you're mentioning.

418 I’m a teapot 2 years ago

This always reminds me of a great find I discovered a while back when I was reading the HTTP/2 RFC for whatever reason.

Back before "429 Too Many Requests" was standardized, Twitter's API used to return a nonstandard 420 status code (with the caption "Enhance Your Calm") when rate-limiting incoming requests. They stopped doing this for understandable reasons, but the caption, at least, got snuck into HTTP/2, see:

https://datatracker.ietf.org/doc/html/rfc7540#section-7

down at 0xb, the caption for disconnection due to excessive load is, indeed, ENHANCE_YOUR_CALM. Always makes me smile. :)

Basically a technically competent will executor.

I don't think OP is saying that an attorney *can't* get these things done, but that it would make them feel more comfortable knowing that a technically competent person and/or service will be performing the actual actions.

I do think there's a place for an attorney here, in the sense that they could be the trusted individual responsible for notifying DeadManService, Inc. that a particular person has, indeed, passed on and wishes DeadManService to run their instructions.

One thing I find interesting about playing video games in modern day is that with the proliferation of Wikis, there is assumed to be some kind of third party guide for every game. Especially in smaller/newer games it seems like developers sometimes don't bother putting necessary information in the game at all because they don't have the person-hours for it.

While this may have become more of a norm in recent years, online communities with community-supported guides have definitely been around since before wikis were common in the gaming community: most notably at gamefaqs.com. To this day you can still find plaintext walkthroughs for thousands of games, written 25 years ago by pseudonymous authors.

Which isn't exactly to dispute your point, just waxing nostalgic about the good ol' days. The RPG Maker 2000 forum was basically my introduction to programming, waaay back in the day.

The dog in a park, the collar is obviously off.

Interesting note: my wife works with dogs, and I just took that photo over and asked her what breed she thought it was. Her first take was "it really just looks like an old mutt, I can't tell the marking colors. Maybe some Rottweiler in there?"

When I pointed out the collar she took a closer look, and then pointed out "oh, and look at its legs! They're way too short for its body!" Which, in retrospect, is the most hilarious error in the picture, hah.

For AirDrop, at least, I've found it to be very reliable, with one caveat that always tripped me up before I realized it: *the recipient's phone needs to be unlocked*. This completely changed the game for me, and now me and my wife use it all the time.