They probably should rewrite it in Rust, but also, I think the Bun guy wanted to rewrite it in Rust because he thinks Rust is a better choice for Bun, independent of Bun being used by Claude Code.
HN user
jolux
she/her
Interests:
- programming languages, especially functional programming and static type systems
- operations research and logistics
- policy analysis, especially around urban land use and mass transit
- business strategy
Formerly at the MBTA, currently building transit operations software at Swiftly (opinions my own).
Shoot me an email: hn@klebe.dev
Love the new site!
Minor typo in the Erlang card:
“Elixir also excels at IoT, distributed systems, and everything the Erlang is renowned for”
should probably be “everything the Erlang VM is known for” or “everything Erlang is known for.”
I am not really sure how much yet another post complaining about async/await that ends with “thread-per-core is the way to go” adds to this discussion. Granted I’m both an Erlang programmer and a big fan of Tokio and Rust’s async/await implementation in general and I think this post and many others like it betray a fundamental misunderstanding of these technologies so I am probably biased.
No, it’s a desktop with an Intel processor.
My experience with non-Apple Thunderbolt products has been pretty dicey across the board. My ASUS motherboard has a port and theoretically works with it but across several firmware, BIOS, and driver upgrades, I’ve never actually got it to successfully recognize my TS4 as a Thunderbolt device, only USB.
Claude Code uses Bun.
Rust is technically older than Go, but who was actually using it when Go 1.0 came out in 2012? Rust 1.0 wasn’t until 2015.
I think I said named branches, but that is definitely what I mean
I think I misread you, because you were talking about git vs svn in a way that made it sound like jj was a step backward from git as regards branching, and I got confused.
I often work on something and then switch away to something else. it might be a week before i get back to it, and the name of the branch is a clue as to what the heck I was doing.
Right, but you can still name your branches with bookmarks, you’re just not required to. Personally, I tend to use commit descriptions more than bookmarks to keep track of what I’m working on, but this is a personal choice.
Other people often need to check out a branch I'm working on to help. How does anonymous branching help anyone except a solo developer?
It’s just nicer as a local workflow, to me at least? I can create throwaway branches without having to come up with a name for them. I end up creating many, many more branches than I did in git as a result, which helps me keep my work better organized and my changes more focused when I submit them for others to review (which at least on GitHub, requires a bookmark of course). This is ultimately psychological because obviously I could just make up a name for the git branch, right? But it makes a big difference for me!
Totally fair :) personally I used to be a git wizard and I am relieved at how much about it I’ve been able to forget since learning jj, but I understand not everyone has the same experience.
Yes, that describes me at both jobs I’ve had since learning jj. Hence why I asked for specifics: I’m genuinely curious what other people struggle with, partially because I’d like to help them if I can, and partially because it gives me a better understanding of common pitfalls which helps when teaching other people.
There’s nothing stopping you from using separate changes to emulate the staging area if you want.
Also `sl absorb`.
I assume you mean named branches (bookmarks in jj)? Because anonymous branches in jj are trivial: you just `jj new <parent_change_id>` and you have a new branch.
Bookmarks aren’t that bad either IMO, especially with the recent addition of `jj bookmark advance`. Curious if you can say more about the particular difficulties you found keeping them up to date?
What do you find insufficiently minimalistic about Erlang? It’s not exactly a shaggy dog of a language.
Uber has been profitable since 2023.
Rust originally came with a green thread library as part of its primary concurrency story but it was removed pre-1.0 because it imposed unacceptable constraints on code that didn’t use it (it’s very much not a zero cost abstraction).
As an Elixir + Erlang developer I agree it’s a great programming model for many applications, it just wasn’t right for the Rust stdlib.
Cmon, this is the guy that was running a shady online casino which was tanking Cloudflare’s IP reputation, completely different.
This is in part because those countries have been historically reliant on the US for their national defense…
Huh, interesting. Looks like they were indeed quite different until the Mk3 in 2012
It has found actual reproducible SQL injections for me as well as XXE vulns.
Sonarqube did not flag public fields as a security issue by default the last time I used it — however it has found several real vulnerabilities for me before.
You could definitely buy the Focus in the US.
No point. Claude Code with skills and subagents is plenty. If they would stop breaking it constantly it would be fine.
The bottleneck has not been how quickly you can generate reasonable code for a good while now. It’s how quickly you can integrate and deploy it and how much operational toil it causes. On any team > 1, that’s going to rely on getting a lot of people to work together effectively too, and it turns out that’s a completely different problem with different solutions.
I think they just posted the link they log into. The site is ui.com or store.ui.com.
Checked exceptions are bad because people just catch them and rethrow RuntimeException. Proper errors as data would be much preferable.
I couldn’t quite tell from your comment. Anyway it’s not my experience with CC but everyone seems to have a slightly different take on it.
have you used claude code?
It's not just for security, it's also for maintainability. Frankly being able to reflect across package boundaries has always seemed like a misfeature for maintainability to me. The code you have that is broken by Java 9 was already badly behaved, the JVM was just lenient about it.
Ah, it was written in Groovy last time I looked at it I believe. In any case here’s how to install a default java:
`mise ls-remote java` to show all vendors and versions, or just `mise latest java@temurin` (or any other vendor) to get the latest version string
`mise use -g java@<version>` to install it and set it as a default
pro tip: don't bother with SDKMAN. use https://mise.jdx.dev to install Java, it can also install a bunch of other languages and tools. it's most likely the last tool version manager you'll ever need.