JJ for the executively dysfunctional

May 11, 2025, 6:57 AM
JJ

I've been playing around with Jujutst/jj, and there's something liberating about it. One particularly handy strategy I've been running into has been throwing out a new "change" (to use Steve Klabnik's terminology, i.e. the Jujutsu-native unit of change that's distinct from Git commits) at a whim.

This has been nice to create a kind of to-do list of changes that should be made as part of a larger project or feature (or maybe just on the side) without having to dedicate yourself to finishing one thought before moving to the other. You can just scattershot a bunch of half-baked thoughts and work on them as you go!

Here's what that looks like. Let's say I'm working on part of a website revamp, which is change y... here:

jackson@Jacksons-MacBook-Pro website % jj log 
@ tutpmxxs jax.mostoller@gmail.com 2025-05-10 23:43:02 8b755f87
│ Unify post types into one stream
◆ yqlnrwrv jax.mostoller@gmail.com 2025-05-10 23:39:07 279278c6
│ Website revamp

Currently, I'm working on some organizational stuff ("Unify post types...") but let's say I suddenly realize I want to write up a new blog post. I can start that right away by just kicking off a new change, without worrying about what I have commited in my current working copy:

jackson@Jacksons-MacBook-Pro website % jj new y -m "post: JJ for ADHDers"
Working copy (@) now at: slulvryx d4cd198d (empty) post: JJ for ADHDers
Parent commit (@-) : yqlnrwrv 279278c6 Revamp 2025; post-centric

There are a few important arguments for jj new here:

It's good to remember that the command for hopping between changes is jj edit <revname>.