Hacker Newsnew | past | comments | ask | show | jobs | submit | dwb's commentslogin

I don't like the sharp corners either and I fully support the modifications in the article, but to be completely fair to the design, if your wrists are digging into the corners you're at the wrong angle. If you're habitually typing with bent wrists you're going to have problems. The "butterfly" keyboard was also (famously) terrible, but the newer ones, especially with the proper inverted-T cursor keys, are fine (for a laptop) imho. My ideal laptop keyboard would be split and orthogonal, but that's far too weird to make it anywhere close to mass production.

“Democratising” - you keep using that word. I do not think it means what you think it means.

I broadly sympathise, being a nerd myself also, but this just isn’t a way to build software for a general audience.

Yes, it’s fantastic. I have a post-tool-use hook for Claude Code to snapshot the repository for every edit. It’s like the built in file history feature but native in my VCS and works for my edits too. Don’t want to froth too much but JJ is my favourite piece of software in a while, and the fact that it’s not VC-funded is a major plus point.


Jujutsu is not "VC funded". But some of the developers, including me, work at East River Source Control (I worked on Jujutsu before that, too). The majority of the code in the project doesn't come from us -- or Google, for that matter. We don't allow people to approve patches when the author is from the same company, anyway.

(also at ERSC here, hi Austin!) Heck, I have not had enough bandwidth to do as much upstream work as I initially thought I would when I started there!

that's a company built on top of Jujutsu, not jj itself

If I remember correctly, jj is one guy who works at Google. Which presents a separate worry, which is that one day, when jj gets popular enough, Google will consume it, make it shit, change the name of it every six months and then shut it down.

That hasn't really been the case for a while imo: Martin works at Google and is paid to work on jj (there are also other Google employees who contribute, not sure whether they're paid to). jj is in use (wide use? No idea) alongside Google's internal tool (piper) with which it can interact (and with which it has some features in common) because jj has a pluggable backend architecture.

While I hate to engage in speculation, tell spooky stories, or screech at people about the evil CLA you have to sign in order to contribute, my personal opinion is that if Google were ever to start throwing their weight around, the project would be forked in short order and development would continue as normal – it has momentum, plenty of non-Google contributors, and a community. It's also not a product per se, though as we're about to find out, you can certainly build products on top of it – that probably makes it less likely for its current home to suddenly become proprietorial about it.

(hi Andy!)


Good points. I had a horrible vision of a git -> GitHub -> Microsoft -> GitHub-on-Azure style pipeline but yeah, I think there's enough good people involved around jj that your vision is probably more likely. Also, hi Steph!

jj is not "one guy who works at Google" and the vast majority of submitted code comes from non-Google developers. Even if Google were to stop developing jj (they won't) the project would be healthy and strong.

There's some legal annoyances around e.g. CLA which was a result of being a side project of Google originally. Hopefully we'll move through that in due time. But realistically it's a much larger project at this point and has grown up a lot, it's not Martin's side project anymore.


Can you expand on this? How do you achieve it? Just a WIP JJ commit after every change or something more clever?

  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "if command -v jj >/dev/null && jj root >/dev/null 2>&1; then if ! jj status >/dev/null 2>&1; then echo 'WARNING: failed to snapshot jj repository, tell user to fix'; fi; fi"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "if command -v jj >/dev/null && jj root >/dev/null 2>&1; then if ! jj status >/dev/null 2>&1; then echo 'WARNING: failed to snapshot jj repository, tell user to fix'; fi; fi"
          }
        ]
      },
In newer jj there’s a dedicated snapshot command but I’ve not updated yet. Pop this in your Claude Code settings.json. It will snapshot the repository, thus recording any changes. Explore with jj evolog.

In .claude/settings.json you can trigger shell commands on events like SessionStart, Stop, PreCompact, and PostToolUse [1].

I have all of them run `jj status`, because jj snapshots the working copy every time it's invoked.

You can have Claude write the hooks, but mine is:

`[[ -d .jj ]] && jj status >/dev/null 2>&1; exit 0`

[1] https://code.claude.com/docs/en/agent-sdk/hooks


The others use `jj status`, but if I were to do this, I'd use `jj log -n0`, which has no output. All you really need is any read-only jj command.

You could also turn on watchman and have this property on every save of a file and not even need to worry about hooks.


If I built a Mac app, the reason would be that I use a Mac, as do a lot of other people, and native apps are a lot more pleasant than non-native apps. I don't really understand why it's "restrictive"? There is no restriction happening.

There’s nothing stopping agents from composing MCP requests and responses, or from them writing programs to process the responses. MCP tools and resources are just as composable and programmable than any CLI - and more so than most because they are structured data.

Both you and the Collins dictionary (merely one dictionary, not an absolute anuthority) are retconning. “Vibe coding”, as originally coined in this tweet, means something more specific: to generate code with LLMs and not really look at the output. The term itself suggests this too: reviewing code is not exactly a vibes-based activity, is it?

https://xcancel.com/karpathy/status/1886192184808149383


Here's Merriam Webster with the same definition: https://www.merriam-webster.com/dictionary/vibe%20coding

That tweet coins the term, we agree there. The activity it describes is using natural language to generate software. Whether you add a review process or not doesn't substantially change that. Sure, Karpathy says he doesn't "read the diffs anymore". Why does he say "anymore"? Clearly he was reading them at some point. If not reading any diffs was a core part of the activity, that wouldn't be the case, the tweet itself clearly outlines that as optional. He's clearly not talking about a core part of the activity.


I think the tweet is pretty clear on its intention for the definition and I’m not interested in arguing about it.

I do think the dictionary definitions, such as they are, are coming from a real place: some people do use the more general definition. And you seem to already know about both definitions. So why argue so belligerently and definitively in the first place? Parent comments you were replying to were obviously using the original definition. Talking about “retconning” is obviously silly given this timeline. Meaning in language is not a race to be the first to make it into a dictionary. It’s a very new phenomenon that new terms make it so quickly into a dictionary at all, and they’re always under review. So maybe factor that into your commentary?


Because I believe the broad definition is more widely used, I also don't think the narrow term is useful or meaningful, and I think it's being used purely by vibe coding practitioners who feel that the term has negative connotations.

This all started with the parent comment telling someone else (belligerently and definitively) using the broader definition that they were wrong.


The narrow term is very useful, there is obviously a world of difference between reviewing the output of an LLM and not - the latter is irresponsible. It shouldn’t be surprising that people bristle when being accused of it. It doesn’t make sense to accuse someone of redefining a term to make themselves feel better when the history of the term shows that yours is the redefinition. The simpler explanation is that the accused just doesn’t like being called irresponsible - not that they’re trying to defend LLM code generation from someone who doesn’t like it.

You're saying what I'm saying. They feel self conscious about the term "vibe coding".

And to be clear, nobody accused the people who lashed out here. They reacted to general statements that people are vibe coding.

I also don't understand why the term vibe coding couldn't contain a spectrum of responsible use. Just say you're reviewing your vibe coded commits!

Clearly the issue here is about how vibe coders perceive the term vibe coding. Some of them feel that it's demeaning and are trying to wiggle their way out of the label by arguing semantics.


No, people think it’s demeaning because they are using a different definition to you, the definition which was the original one. Don’t know how I can put it clearer.

You say no, but then you agree that they think it's demeaning. Are you saying no just to say no, because you dislike how I'm framing this?

I don't think you've shown that the narrow definition is the original one. That's just a claim with no evidence or argument for it.

If you think the tweet is that evidence, I disagree. The tweet itself could be used to support both definitions. Personally I think it's more inline with the broader definition (see previous posts in this thread).


I think the tweet is crystal clear evidence that “vibe coding” was meant to mean “LLM code generation without reviewing the generated code”. Plenty of other parent commenters in this thread clearly think the same. Think what you like, but your interpretation is very strange, and the pushback and downvotes you’re getting is because of that.

This is still not an argument.

You are still just stating opinions without any arguments. If you think the tweet is crystal clear evidence of your point, please show why. If you think my interpretation is strange (even though I've already shown you two normative sources that agree with me), please show why.

Look, there's already a term for unreviewed nonsensical genAI output: slop. The original tweet does not comment on the quality of the cod; slop otoh is specifically about the quality of the output. Call it slop if you want to specify that it's unreviewed.

Downvotes are not proof of anything. I'm getting roughly 0.5 downvotes per post, that's to be expected when multiple people are disagreeing with me about something they care about. And HN has been flooded by LLM enthusiasts for the past couple of years. This is not surprising.


Correct, I'm not making an argument on the quality of the evidence, I'm expressing a different opinion and explaining the disconnect. I'm not interested in convincing you as I don't think that will happen, but I did think that you were missing a distinction and could understand the difference even if you thought differently. Apparently not.

I’ve never heard that usage, it doesn’t sound right to me. (Relatedly, “an autistic” is generally considered dated / mildly offensive / just incorrect. Better is “an autistic person”, which makes it an adjective again. There does exist the noun “autist” which I do hear occasionally, but not from autistic people as far as I’m aware, so would probably avoid as well.)

> Relatedly, “an autistic” is generally considered dated / mildly offensive / just incorrect.

Is it? I've heard those sentiments about "a person with autism" (and more generally, "autism" as something you have rather than "autistic" as something you are), but not about the term "autistic" as a noun in general. I use "autistic" as a noun a lot, because I don't like to assume that everyone identifies as a person. (Even though doing so is normalized enough that not doing it looks more out of place.)

> There does exist the noun “autist” which I do hear occasionally, but not from autistic people as far as I’m aware, so would probably avoid as well.

In my experience "autist" doesn't necessarily have to do with autism itself, but more specifically the element of "weirdness"/"cringe" that others can have at it; i.e. it's usually used in a self-deprecating way to refer to some sort of weird or deranged behavior (and isn't at all a neutral way to refer to others). Though, most of my exposure to the term is from 4chan/2b2t; in those spaces autism in general is often used as a synonym for mental illness.


I've not heard of anyone not identifying as a person, and I thought I was aware of a good range of identities and subcultures. At least in the UK, using "an autistic" as a noun would have you be heard as someone older and out of touch - perhaps well-meaning, perhaps not, but at least a bit insensitive.

Your report of the meaning of "autist" in some places I think rather strengthens my suggestion to avoid it.


> I've not heard of anyone not identifying as a person, and I thought I was aware of a good range of identities and subcultures.

Well then, behold: https://en.wikipedia.org/wiki/Otherkin

I am otherkin and quite a few of my friends are also otherkin (or alterhuman, very nearly the same thing). There is also therianthropy under the otherkin umbrella, although I've seen that ordering get mixed up a lot. Most of the discourse about it I've seen is from the young/inexperienced.

> Your report of the meaning of "autist" in some places I think rather strengthens my suggestion to avoid it.

Indeed it does.


Maybe my definition of “person” isn’t quite standard, but I did have otherkin in mind; to me, a person doesn’t have to be human to be a person. My cat is a feline person, or near enough, Commander Data is a (fictional!) person, etc. Practically zero people want to give up their personhood, at least in everyday life, as it’s extremely disadvantageous and unpleasant. It’s in this sense that saying “an autistic person” rather than “an autistic” is much better: however you identify, you’re a person, an individual with rights and worthy of respect, and not a thing that one would only bother identifying with an adjective. A vital part of being a person is having more than one aspect. A lot of racial epithets are offensive for the same reason.

I do know at least one that explicitly doesn't identify as a person, because personhood does not come only with rights but with obligations, expectations, societal treatment and responsibility. I get what you mean (I haven't separated from my own concept of "person" either) but to me it's more inclusive not to require personhood for respect.

Ok well I have plenty of serious, production-level professional experience that says otherwise. Not “vibe coding” - we certainly review the code. It’s a tool that has downsides and failure modes, of course, but it’s at the point where it’s definitely speeding us up and we are using it a lot. Trust me, I’d prefer a world, on balance, where this wasn’t true – I don’t like many of the aspects and uses of the technology – but its utility in programming is undeniable now and the capitalists aren’t taking “no” for an answer.

I'm curious, where are you using the tools? What programming language? what domain? Are you willing to share the projects you're working on?

TypeScript and Go on a 1.5 million SLOC production codebase; a complex SaaS tool for financial planning and analysis. Quite far from being “just CRUD”. Before Anthropic Opus 4.5 I was trying out Claude Code and wasn’t all that impressed, but since then it’s definitely helped. The project I wrapped up before Christmas would have gone into the new year without it. You’ve still got to keep a close eye on it; whenever I’ve got lazy with review, trusting it too much, I’ve always regretted it. It’s never one-shotted anything, even with plan mode and all that. I’m a natural skeptic on this stuff and was very actually skeptical for most of last year. But I’m very confident there’s a large net productivity gain now.

So is this a web app with a go backend?

I don't know where you got the "just CRUD" quote from. I never mentioned CRUD. But this sure sounds like it would be CRUD with some additional models in the backend.

What makes it not just CRUD? Is it using some complex model for forecasting?


I wasn't quoting you, they are scare quotes. It is a web app with a TypeScript and Go backend, but to call it a CRUD app would be misleading (despite the fact that yes once you boil it all down, everything is a CRUD operation) because it's a complex and flexible web app. It's the kind of thing that a bunch of people would prefer to be a native app; it's spreadsheet-like.

It does not ask for permission for every file read, only those outside the project and not explicitly allowed. You can bypass project edit permission requests with “allow edits”, no need for “dangerously skip permissions”. Bash commands are harder, but you can allow-list them up to a point.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: