News for hackers. Stuff that matters.

mechanicum

Re:No new Ghostty updates since March on Wednesday October 07, 2026 @02:31PM (#49996915)
They haven’t cut a release since March. There have been updates almost every day.
Re:The Board Game of the Alpha Nerds (2014) on Friday September 25, 2026 @08:30AM (#49843706)
I do think though that the long playing time is an important factor in the emotional devastation.

Considering other venerable classics with similar dynamics, I’ve seen far more people be far saltier about betrayal at the end of a game of Twilight Imperium (even though there can only be one winner) than they do in something like Cosmic Encounter (where they could have played for an almost guaranteed joint win).

Much easier to laugh off a 20-30 minute game and go again, than watching an entire day of scheming and planning go up in smoke at the hands of a supposed ally.

Re:Homebrew 7.0.0 on Sunday September 13, 2026 @12:16PM (#49685632)
I don’t think utility or popularity had anything to do with the decision. It’s just that they no longer support casks with unsigned binaries.

You could create a third-party tap to install wine via homebrew.

Re:Spark: Sparklines in your shell on Sunday August 30, 2026 @10:48AM (#49499144)
Braille characters would double the horizontal resolution but halve the already limited vertical resolution, which isn’t great for something that’s intended to be displayed inline with text.

I think Teletext might be even worse. IIRC, it only has three heights for its triangles.

If you’re interested in multiline plotting with braille characters, Ian Henry’s bytemap for Janet (https://github.com/ianthehenry/bytemap) is worth a look (or my Clojure port: https://github.com/waddie/bytemap.clj).

Re:Kakoune Code Editor on Wednesday August 19, 2026 @12:05PM (#49363401)
> I switched back to main after noticing that the plugin branch adds about 1s to startup time

Very curious what’s happening there. With empty helix.scm/init.scm, there is essentially zero measurable impact on startup for me.

Bytecode caching isn’t yet enabled (it is in progress), so I can see that kind of delay if I’m giving it tens of thousands of lines of code to evaluate on startup, but it took a lot of effort to get there.

Re:Kakoune Code Editor on Tuesday August 18, 2026 @07:05PM (#49354089)
Helix is actively developed, they just haven’t cut a release since July last year. Most recent major feature to land in master was workspace trust.

The Scheme-based plugin system (https://github.com/mattwparas/helix/tree/steel-event-system) is almost ready to go. The plan is to merge it to master after the next release, whenever they get round to that.

It’s easy to build from source though, I’ve been using it daily for over a year, and there already are several dozen reasonably sophisticated plugins available. You can browse a list of mine here: https://github.com/stars/waddie/lists/helix-plugins-steel-li...

Re:How Claude marks AI-generated content on Tuesday August 11, 2026 @08:10AM (#49256989)
Talking to the person who gave it to you, in my experience.

In my own testing, Pangram is excellent at detecting the default output styles of LLMs.

If you tell the LLM to change its output style, so it’s not full of “load-bearing spaced em dashes that aren’t X, they aren’t Y. they’re Z.” constructions (which humans are pretty good at detecting on their own), the false negative rate soars.

Re:Mea Culpa – Dark Hours on Sunday August 09, 2026 @12:00PM (#49232619)
I’ve seen the original repo, I mean Godier’s.

A name clash is the least damning evidence in my opinion. Last year my previous employer asked us for suggestions for naming an AI agent. Everyone produced pretty much the same list, because everyone just asked ChatGPT.

Except me. I had also asked ChatGPT, but I bothered to google the suggestions and found there were already like half a dozen AI agents for every suggestion.

(they ultimately launched what was by then the 7th or 8th AI-related product with essentially the same name)

Creativity in naming doesn’t seem to be their strongest suit.

Re:Mea Culpa – Dark Hours on Sunday August 09, 2026 @10:23AM (#49231705)
I’d love to see the other repo, and the prompts that led to both.

Did Godier copy the other guy’s repo, name and all, and try to pass it off as his own work? That seems like the obvious conclusion, albeit brazen to the point of insanity.

Did Claude copy the repo, in response to a prompt? If Claude copies a Claude vibe-coded project, can any plagiarism really be said to have taken place?

Or is this just what Claude is statistically likely to spit out if you prompt it to build an astronomy app and leave it to it?

Re:Steel Bank Common Lisp version 2.6.7 on Tuesday July 28, 2026 @07:28PM (#49091396)
Probably this?

“Concurrency Oriented Programming in Termite Scheme”: http://scheme2006.cs.uchicago.edu/09-germain.pdf

Implemented in Gambit Scheme: https://github.com/FredericHamel/termite-scheme

I was curious so I asked Claude how it would do that: https://gist.github.com/waddie/b26166eec6cf675c044c09a95a754...

I thought this bit was interesting:

> TE has no register for hedging, ownership of an opinion, or acknowledging that a reasonable person would disagree. Modality is roughly can / must / do not. […] Where a thought can't be said in STE without becoming a lie, I'd mark it and say it plainly rather than mangle it. Confidence and disagreement are the two things I'd insist on smuggling through.

Re:JEP 540: Simple JSON API (Now in Incubator) on Thursday July 23, 2026 @01:39PM (#49025364)
You almost can, with Jackson:

  jshell> new ObjectMapper().valueToTree(Map.of("providers", List.of("SUN", "SunRsaSign", "SunEC")));
  $4 ==> {"providers":["SUN","SunRsaSign","SunEC"]}
(or was that the joke?)
Re:Escape IntelliJ: Scala and Kotlin LSPs on Emacs Eglot on Thursday July 23, 2026 @10:22AM (#49022108)
It looks like that was added in Java SE 6, and doesn’t materially change the underlying problem. Have there been more recent developments?
Re:Escape IntelliJ: Scala and Kotlin LSPs on Emacs Eglot on Thursday July 23, 2026 @09:05AM (#49020945)
My understanding was the biggest issue has always been that javac is a poor foundation for any kind of live tooling like LSPs?

It’s less “make me a Java LSP” than “rewrite javac around incremental compilation and exposing a semantic DB”. Which sounds like a much harder problem.

Re:A Road to Lisp: Why Lisp on Thursday July 09, 2026 @05:29PM (#48852606)
> I've found LLMs to be bad at balancing parenthesis.

I think that was true last year. In my experience, it’s no longer the case with Claude Code or Codex.

Re:Biff.core: system composition for Clojure web apps on Tuesday June 09, 2026 @01:00PM (#48463849)
Last year, I thought it was awful. Even Opus would reliably unbalance parentheses on practically every edit and then enter a doom spiral of making things worse as it tried to figure out the right place to put a `)`.

Recently, I’ve been quite impressed, at least with Claude. At some point they figured out the parens issue, and the code is largely solid and idiomatic. I’ve mostly used it with Polylith apps, so the context for any given change is naturally well-defined. Usual issues with failing to reuse existing functions or make sound decisions about architecture, but no more so than I’ve seen with TypeScript or Rust.

I think there are a few points in its favour: it’s a very concise language, the documentation is terse but precise and comprehensive, and while there’s obviously nowhere near as much Clojure out there as there is JavaScript or Python, there is a lot. As the Clojure demographic skews toward experienced, senior programmers, I’d guess the quality of that corpus is probably well above average.

Java stack trace errors might even be an advantage now.

Re:Learn PHP in 2026 (Yes, Really) on Sunday June 07, 2026 @10:19PM (#48440683)
I can believe it’s much improved and I wouldn’t look down on anyone for using it.

But it’s still never going to be a language I like, and I’m yet to encounter any of these modern codebases in the wild. It’s invariably a crusty old relic, much closer to the PHP of 2006 than the PHP of 2026.

Re:My thoughts after using Clojure for about a month on Thursday June 04, 2026 @12:07PM (#48400651)
> Eh? That's completely lifted from CL.

Clojure’s abstraction is a bit more far-reaching than Common Lisp’s SEQUENCE, implemented as interfaces rather than types.

A Clojure sequence is anything “seqable” (either implements the Seqable interface, or special case handling for host platform collections), not just lists and vectors. Hash maps, sets, Java Iterables, etc. are all seqable and work with the same standard collection functions.

e.g. you can `(map (fn [[k v]] …) {:a 1 :b 2})`, rather than needing a separate MAPHASH function.

Re:Elixir v1.20 released: now a gradually typed language on Thursday June 04, 2026 @09:19AM (#48398251)
Short answer: “a type system centered on the use of set-theoretic types (unions, intersections, negations) that satisfy the commutativity and distributivity properties of the corresponding set-theoretic operations”.

Long answer, well, there are blog posts[0], the Design Principles of the Elixir Type System paper[1] and related presentations[2, 3, 4] that talk about it at length. Giuseppe Castagna’s site has many more related papers: https://www.irif.fr/~gc/topics.en.html

[0]: https://elixir-lang.org/blog/2022/10/05/my-future-with-elixi...

[1]: https://www.irif.fr/~gc/papers/elixir-type-design.pdf

[2]: https://www.youtube.com/watch?v=gJJH7a2J9O8

[3]: https://www.youtube.com/watch?v=VYmo867YF6g

[4]: https://www.youtube.com/watch?v=giYbq4HmfGA

Re:Elixir v1.20 released: now a gradually typed language on Wednesday June 03, 2026 @04:33PM (#48389605)
FYI, that’s currently available in a Humble Bundle with 16 other PragProg functional programming books: https://www.humblebundle.com/books/ultimate-functional-progr...
Re:The vi family on Wednesday May 13, 2026 @03:40AM (#48118953)
I think describing Kakoune/Helix as vi-inspired with “slightly different keybindings” is rather missing the point.

The most important difference is that they invert the editing model from verb-noun to noun-verb. Meaning you always see exactly what you’re going to be operating on before you do it.

The second most important difference is that they were designed from the ground up around multi-selection editing as a primitive, rather than a plugin or late addition.

That model is typically less efficient purely in terms of keystrokes, for some operations significantly so, but it’s somewhat mitigated if having the state on-screen rather than in your head means you undo less often.

I wouldn’t suggest either approach is superior. I suspect most people (“most people” in the subset of people who jibe with modal editing to begin with, anyway) will find that one just fits their brain better than the other.

Personally, even having used Vim almost daily since finding it on a Fish Disk sometime in the mid-90s, I still turned out to be in the kak/hx group. I can still use vi quite comfortably when I need to, but Helix removed a bit of friction I’d barely been aware of.

There’s a steady stream of NeoVim exiles to Helix forums, I think who mostly found its Lua-based config too complex/brittle, asking why the devs don’t add settings to make it work like Vim, include a *Vim keymap as standard, etc.

It’s kind of wild to me that people would choose their editor based on how minimalist its config/how batteries-included it is, rather than its fundamental editing paradigm.

Re:Why Everyone's Picking Up a PSP Again in 2026 on Tuesday May 12, 2026 @08:35AM (#48107364)
Last week I actually did dig out my UK launch PSP-1000 from 2005 (a gift from Games Workshop for being Design Studio Employee of the Year, I think to the bafflement of almost everyone in the department, not least me – at the time, I was the bloke who kept the websites running, after most of the US-based team had left on 2 weeks’ notice in March).

Not out of any particular nostalgia for the device itself, nor because I’ve seen anyone else with one. I just had a sudden hankering to play a Ridge Racer, and it turned out my PS3 is stuck in some kind of update loop.

I was pleasantly surprised by how well it’s held up. And by that, I mean this specific unit: over 20 years old, left in the back of a drawer for at least the last 10, but seemingly as good as new. The screen is obviously a bit dim by modern standards, but the battery still holds a charge for hours. If I treated a smartphone like that, I’d be afraid of it swelling to the size of a football and setting fire to the building.

By contrast, the DS Lite I found in the same drawer no longer recognises anything in either cartridge slot and the screens have developed a brownish gradient running top to bottom, although the clock had only drifted by ~40 minutes.

For me, that era of portable gaming coincided with a lot of travel for work, holidays, gigs and music festivals. I’ve probably spent more time playing games on those two consoles than I have on every mobile device released before or since put together.

It’ll probably end up back in the drawer sooner rather than later, but I had a fun Saturday evening working my way through a shoebox of UMDs, checking out save files mostly timestamped 2006-2008. And maybe I’ll finish another run through Jeanne d’Arc first.

Re:Why I Still Reach for Lisp (& Scheme) Instead of Haskell on Thursday April 30, 2026 @03:09AM (#47959207)
It’s trivially easy to do in Clojure (literally one line of code to start an nREPL server, after deps/requires), and often very useful in dev and personal, local projects. In practice, I’ve never once used it in a user-facing production system, in 16 years of writing Clojure.

Out of the box, there’s zero security or audit trail. Building that properly isn’t trivial and, even with it in place, many corporate infosec teams would have fits if you suggested that engineers can make arbitrary inspections/modifications to a running production system.

Where it could be appropriate, often you’re running the code in autoscaling containers or something similar. Modifying one instance then is rarely anything but a terrible idea.

Where I have used it is for things like long-running internal batch systems that run a single instance and never touch any sensitive data. Connecting a REPL in those cases is much more flexible and powerful than, say, building a dashboard UI or a control API over http, and you get it for free.

Re:Jeffgeerling.com has been Migrated to Hugo on Sunday January 04, 2026 @09:10AM (#46488118)
Maybe Subscribe with Reeder[0], 1Password[1], Userscripts[2]. The RSS and HTML icons are obviously fairly generic, so not 100% sure.

[0]: https://reederapp.com

[1]: https://1password.com

[2]: https://github.com/quoid/userscripts

Re:One Handed Keyboard on Saturday November 15, 2025 @05:31AM (#45936463)
Their video on YouTube, in English: https://www.youtube.com/watch?v=9vW12gQ4Klc
Re:State of Terminal Emulators in 2025: The Errant Champions on Monday November 03, 2025 @01:27PM (#45802456)
More than two, e.g. there’s also the Inline Images Protocol supported by iTerm2 and WezTerm.

Kovid documented his rationale at some length here: https://github.com/kovidgoyal/kitty/issues/33

Re:Space Elevator on Monday October 20, 2025 @09:09AM (#45643484)
Definitely S01E01, @ ~55-58 minutes. I just watched it.
I mean, 25 years and 27 inches later, and only reappearing after the queen Hudson served had died, with no tale of exactly where he’d been or how he got back… the cynical explanation would be that he was simply a different man claiming to be Hudson in the hope of a handout from the restored monarchy.
Re:How I'm Using Helix Editor on Monday October 13, 2025 @01:04AM (#45564840)
These have been available since mid-2022:

  :insert-output Run shell command, inserting output before each selection.
  :append-output Run shell command, appending output after each selection.
  :pipe, :| Pipe each selection to the shell command.
  :pipe-to Pipe each selection to the shell command, ignoring output.
  :run-shell-command, :sh, :! Run a shell command
The placeholder for the current file is %{buffer_name} (not as bad as it looks, the command line has tab completion for basically everything).
Re:Notes on Switching to Helix from Vim on Friday October 10, 2025 @03:39PM (#45542908)
Cmd + click places multiple carets on macOS. Apparently – I never touch the mouse when I’m editing in Helix. I don’t know which modifier it is on other platforms.

I’m not sure if replicating Sublime’s Ctrl + D is possible or not, but there are other ways to achieve every use case for it I can immediately think of. e.g. I think I’d typically be doing `<space>h` to select every instance of the symbol under the cursor, or using `s`elect to reduce a selection to a match, possibly yanked and pasted.

Older »