5 ms·
I've been enjoying JJ recently, after giving it another try. I'd tried it when it was new, and the sharp corners were still a bit too sharp for my liking. JJ s
by paradox460 1y ago
I've been enjoying JJ recently, after giving it another try. I'd tried it when it was new, and the sharp corners were still a bit too sharp for my liking.
JJ seems to be part of a new "era" of tooling that's just really good. I mused about this a bit in a blog post:
https://pdx.su/blog/2025-08-13-the-quiet-software-tooling-renaissance/ https://pdx.su/blog/2025-08-13-the-quiet-software-tooling-re...
- nchmy 1y agoim glad to see you also use and love mise. Mise, jj (and its phenomenal jjui TUI, which I see you mentioned there), and uv for python are nothing short of revolutionary, as far as I'm concerned. Just beautiful tools.
- paradox460 1y agoI probably should mention things like atuin and fish, which bring, if not joy, absence of frustration when using my computer
- nchmy 1y agoAtuin is great too! I recently switched to it from fzf. zoxide is similar and beautiful as well. I use both all day.
- paradox460 1y agoI love zoxoxe, and even have it plugged into my Alfred, with minor tweaks
- stavros 1y agoI never managed to get into mise. I tried, but I think its documentation wasn't good enough for me to be able to configure the things I wanted, and, with uv, I barely ever see a need to use it... Does anyone have a use case where they use mise with Python? What do you use it for?
- KingMob 1y agouv is amazing, but mise is good if you need non-python tools too (e.g., bringing in prettier to format your HTML/Js/templates, adding Js tools, etc.) It's also not either/or. mise can defer to uv for setting up all the python stuff. The mise docs are pretty good these days, I think. Task dependencies are still a little rough, though.
- stavros 1y agoAh interesting, I have needed node and it's been a bit of a pain, maybe mise can set it up. I'll try it again, thanks!
- nchmy 1y agoShould be as simple as mise use node. Or mise use -g node@version (the -g installs it globally) Same for anything else - deno, bun, golang tooling etc
- stavros 1y agoOh, this reminds me of a big problem I had: I never know the names of the packages, is there a registry somewhere? I never managed to find one.
- paradox460 1y agomise search <package> will find matches across all the baked in registries, and if its not there you can use ubi, aqua, or any github, gitlab, or http path to get it
- stavros 1y agoThank you! I never knew this.
- KingMob 1y agoYes, you can browse them at https://mise.jdx.dev/registry.html https://mise.jdx.dev/registry.html Also, it's possible, if trickier, to install from arbitrary git repos. Finally, if you type `mise use` with no package name, it'll present a filterable list. Start typing what you think you want, and it'll quickly filter to only things match.
- sunshowers 1y agoNice article! I do think standards for tooling have gone up a lot in the last few years. Rust is certainly a part of it.
- yard2010 1y ago[flagged]
- paradox460 1y agoWhile bun is extremely impressive, I'd not say it leads the movement more than anything else. For me then biggest sea change in developer QoL has to be Mise, followed by JJ. Everything else is more niche, but I use mise and JJ in every project. Don't get me wrong, I really like bun. I run my blogs asset pipeline on bun, and run my home automation on it as well, but at the end of the day it's a js runtime, competing with the also excellent deno
- 8n4vidtmkvmk 1y agoIt's more than a runtime. It's a test runner, package manager and build tool and shell interpreter. The first 2 in particular are big for me. Build tool needs work.
- shepherdjerred 1y agoBun is great, but that's overselling it
- ItsHarper 1y agoI'd definitely include nushell in this
- GCUMstlyHarmls 1y agoI used zsh for gosh, over 15 years probably now. I swapped to fish at the start of this year on a bit of a whim (new year, new computer, new ~~me~~ shell). It's pretty good in a "gets out of the way" kind of way, and the `abbr` feature is preferred over aliases but it has some annoying quirks like no dictionary type, the inability to "background blocks of code", requiring spawning a subshell + string which has other issues and in a way it feels sort of stuck between being new and friendly but still carrying over enough baggage to be annoying in other ways. I tried Nushell a week or so ago and after getting my head around it (and $it and $in, haha) I think it feels like the future. It's not quite there ergonomically in some ways eg: reedline can't edit the current command line, but it's quite close. What really sold me on it was when I - Had a flat text file of "url\nartist\ntitle" - Had to download these urls and insert the artist & title into a database and I realised I could do it all with Nu primitives, open new-landings.txt | lines | each { $in | str trim} | chunks 3 | each {{title: $in.0, artist: $in.1, url: $in.2}} | enumerate | par-each { http get ($in.item.url | str replace large medium) | save $"landing-($in.index + 101).jpg" # also insert artist title into database run-app ... etc } Now, could you do the same thing with zsh/bash/sh? Yep. Some kind of awk/sed thing with xargs I would guess. But I'd have to look it up. With Nu, after a few hours of playing with it I already "knew" how to do it. That felt really powerful. For reference, I also tried Murex and Elvish. Elvish doesn't support ctrl-z, so its disqualified right there though I like the syntax. Murex seemed fine but Nu was bigger with wider support. I think I saw Nu had pattern matching and it immediately got a big desirability bump. I remember seeing another comment, wishing we had STDIN, STDOUT, STDERR and STDDATA, maybe one day.
- hiq 1y ago> I'd have to look it up. I suspect most of the current coding assistants would have been able to do that for you in most languages, including something more portable and easier to maintain like Python.
- syklemil 1y agore: `fd` I also find it a lot better to do something like `fd -e py -X ruff format` than `find -name '*.py' -exec ruff format {} +`. Part of it is that `find` seems to come from before we standardized on `--foo --bar` having an equivalent in `-fb`, and the nagging about some flags being positional, but also just the general syntax of their `-exec`, which _requires_ the `{}` to be present, but it can only ever be in one position for the `+` variant. My one nag about `fd` is that it has two optional positional arguments, so the way I use it I sometimes wind up with `fd -e $ext "" /path/to/search`. (`fd -e $ext --search-path /path/to/search` might be a clearer alternative I should habituate myself to.) IME positional arguments are always less ergonomic than flags/options, _especially_ if there are more than one of them and they're not mandatory. But they're still better than the `find` syntax.