Downvote me if you want, I'm flaunting the guidelines in service of the discourse.
If I may posthumously discipline the horse - when did the suffixes "-native" and "-first" merge in unholy matrimony?
Was it when B2B marketing realized that engineers equated "native" with "best/fastest/simplest solution available"? Or is it even more stupid than that?
Idk. Honestly native is a good descriptor if you mean “we designed it explicitly for ___” as opposed to “we realized last quarter that ___ was the new cool thing, so we bolted it awkwardly onto our product”
I also hate them, along with “go to market” and “customer focused”.
I like your origin idea, but “cloud-native” is practically an oxymoron. Somehow taking a simple native application and perverting it to the cloud with added layers of abstraction in both the client and the server is somehow “cloud native”?
Makes downtown New York seem like “natural living”.
You can't say this. We have no idea. There is nothing about (s/the law of physics/US history) that pushes (s/cancer cure/the right to privacy) a long time away.
Don't mind me, just repurposing one of your old comments to save time.
Me personally? I'd feel shame for not spending the half hour it would have taken to put even the flimsiest human stamp on the thing I asked an LLM to make for me.
To me the main difference is that there is no staging (so no stashing needed), and conflicts are first class citizens. In practice this means that you can usually halt your work halfway, switch a commit, rebase everything onto head and continue working even if one of the branches off your commit has conflicts. In git you would have to resolve those before the rebase can finish.
Since conflict resolution these days mostly boils down to “hey LLM, resolve conflicts” this is much nicer.
Also jj tracks every change to the repo so undo works much better and is more readable than reflog
My favorite feature is the built-in distinction between what's mutable and what's immutable in my history. I can freely modify any commits I make locally without issue, since no one else would be able to depend on them, but if I push something or fetch it from a coworker, I have the safety of not needing to be careful when doing the equivalent of an amend or rebase because it will fail with an error telling me to use a flag to bypass the immutability protection if that's what I actually want.
Not having to stage changes in lieu of them automatically getting picked up was a bit of a learning curve for me, but now that I've gotten used to it I like it a lot better and I don't think I could go back. The equivalent of the reflog pretty much always has my changes in it if I accidentally lose them without manually saving due to the snapshotting, and I have no need for a stash because commits and branches are essentially just recording a checkpoint rather than being things that feel "heavyweight".
As an added bonus, dealing with conflicts is a lot less annoying because each commit records its conflicts separately, so fixing them doesn't require doing a stateful pipeline of changes in a big rebase; I can just do them piecemeal, in any order I want, and even just check out other stuff and work on them before coming back later if I feel like it.
I was "that guy" who would sometimes have coworkers come for help with git problems (https://xkcd.com/1597/ alt text). I've forgotten most of that knowledge (and all of that muscle memory) and didn't have to learn nearly as much to replace it with the ability to do a lot more with a lot fewer mistakes.
Here's a challenge: see yourself from the outside.
Realize that however effective you are as a programmer now, you were once a hopeless beginner.
Then you must acknowledge that you are still a hopeless beginner, relative to the you that doesn't exist yet.
In the spirit of fellowship, I tell you:
git gud
---
And as you continue to learn, you'll see this for yourself, but I guarantee to you now that AI opened paths to writing novel software which no one has noticed yet. Software that was possible before but perhaps annoying to build, etc. Software which perhaps will only ever be imagined by someone who learned exactly the things you have, in exactly the order you did.
Never make the mistake that AI knows how to do everything just because it knows how to do everything we've done so far.
And don't think of your work as "mining" engineering problems! Forget engineering problems. Find a human problem and think about it for an entire month.
I don’t see why this weakens the example. He has repeatedly built and released games from his own engines and now language/compiler. Money was increasingly required but he had made that money through the same process.
My observation is that right now AI coding agents lean towards re-implementing everything from the ground up. This of course will not scale. It will scale beyond what humans writing code would scale to, but we will ask the AI for more, so it will even things out.
Those who cannot do, preach.
There's a funny trick where if you are an experienced software developer, and take time to think about your design and describe what you want in clear terms, it will actually do things your way. Weirdly, this still saves massive amounts of time.
People who don't understand how to build good software LOVE to expound on the things we'll have to design in order to make AI tools "lean toward" building better software.
It seems that these folks are not willing or able to conceive of, you know, actually getting good at this stuff.
For this reason, it never occurs to them that human beings are STILL the source of the best ideas and designs.
The evergreen observation; The most self-promote-y among us are mostly using AI to reinvent solutions and disguise them as new designs. These address solved problems, which are themselves disguised as new agentic problems.
Celebrating and promoting this stuff does not help us get better at discovering and building actually new things; change my mind.
You should play around more, it's flawed but more than any other tech it rewards exploration.
But asking for something more nuanced, in the range of regular speech, requires the correct lingo
I like asking models to write things using only the N most common words in a language. It's probably never perfect, but it understands the assignment well enough. from there I notice things I prefer about that constraint, and things I don't.
If I may posthumously discipline the horse - when did the suffixes "-native" and "-first" merge in unholy matrimony?
Was it when B2B marketing realized that engineers equated "native" with "best/fastest/simplest solution available"? Or is it even more stupid than that?
reply