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.
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.
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.
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
Sets and types are foundational mathematical concepts so I’m looking for how elixir’s types fit in that context. Union and intersection are not something that belongs only to sets.
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.
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.
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.
Don't know what it is either, but I'd like to got off-topic and remember with fondness the time when you could subscribe to RSS feeds directly in Safari. Google Reader was replacable, a direct integration into the browser not.
And for a short time, RSS was the bee's knees across the entire Internet. Apple had the best support for it, and almost put NetNewsWire out to pasture, until they just removed all baked in RSS functionality, entirely :(
But I use Reeder across Mac, iPad, and iPhone to keep up with feeds.
Feels like HTX blew up out of nowhere with a ton of long form content at once, but they were huge in Chinese social media already, and finally decided to start translating previous content to english and uploading to Youtube.
I've sent money to creators on YouTube/Instagram, but my employer at the time had government contracts, so it's it fair to say the US government funds Factorio video content?
I've been watching them in Chinese for a while. Their video production evolved through the years by leaps and bounds. Their technical skill also skyrocketed. But it started as a channel with technical reviews and some DIY.
That looks really interesting, but there's a ton of text flying over the video and it's making it hard to actually see what's going on in the image. Is there a way to disable that?
I recently learned that it's not just the switch, but also the gasket, so the switch plate material, the foam layers and even the keycap itself. I built two different split keyboards recently with the same simple Kailh box red v2 switch and they sound and feel completely different just because of the thickness of the switch plate and the type of keycaps I use.(check this for example https://www.youtube.com/shorts/HIldaxljpzc )
You can check if you find the switches colors here(it looks like an Akko purple pro, but not quite) https://keeb-finder.com/switches
Whereas rtings has a filtering list that also has sound profiles in the review pages.
You can get really cheap boards on taobao, for sofle, lily58, corne(all 3 are open source/open hardware) keyboards. You can of course also get prebuilt ones with or without switches for cheap if you want to. But in today's world, if you have tools and access to a 3d printer you can get a board for a few bucks some components and finish the whole thing with good switches and keycaps for 20-30 dollars.
It's a fun experience, and a nice reason to play around with SMD soldering techniques. I had my daughter (4 years) solder the hotswap sockets.
Worth checking out the miryoku layout, which is optimized for small keyboards, where I recently added sensor bindings for ec11 encoders[1].
You can get aula f75 for cheap, arround 50$, there are plenty of sound tests on youtube as it's very popular.
I got that version and I am happy, but if I was to buy a new one I would get the full size f108 because it's important for me to have distance between arrow keys and other keys. And tbh I would just get an apple keyboard or something similarly slim because it's more confortable for me. However for thicc (mechanical switch) keyboards, aula f75 has great specs and sound at a very good price.
I'm assuming it's too heavy and has too much contact surface (so more friction), making it too hard to glide smoothly.
There's probably something with the position of the hand when you move the mouse as well. At least I seem to be moving mostly the wrist when I use my mouse, meaning that my hand and forearm are not always aligned; without this alignment, I feel there's more strain on the wrist when typing.
my imagined device has the hand a bit more vertical, which would give more leverage for moving the device around.
Could you do a thing with magnets where you have a special mousepad as well with the pad being all one pole pointing up and the device the same pole pointing down?
Also my imagined device would not need the full keyboard, just the full right side of a qwerty keyboard.
I imagine it's uncomfortable to grip since you need to be careful to not press a key doing so. Since you can't rely on fingers much for grip, you could put more force pressing downward with your wrist but that would also add friction with the table. Mice are small enough that you can fit your hand around it, but a keyboard is large and flat.
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.