HNHacker News
TopNewBestAskShowJobs

lemming

5,506 karma · joined July 12, 2009

You can get me on colin at colinfleming dot net
submissionscomments
lemming··on Jank now has its own custom IR
Clojure (AFAIK) does not use invokedynamic, except perhaps in the latest version for some of the new interop stuff. It still officially supports JVM 1.8 bytecode. It’s a language which greatly values stability and backwards compatibility, so it’s been very slow to adopt newer JVM features.
lemming··on Jank now has its own custom IR
No, it doesn't. In JVM Clojure's case, the vars are usually compiled to the moral equivalent of a global variable holding a pointer to a function. This allows you to update the function if the developer redefines it in the REPL, but it comes at a performance cost (the JVM can't inline it or otherwise optimise it). Clojure also allows you to compile with "direct linking", e.g. for production deployments, where you know you're unlikely to be wanting to dynamically update the code. In those cases defns are compiled down to static methods which call each other - much faster since the JVM can perform its magic with them, but you can't update them at the REPL.

I'm unsure exactly how jank works WRT this tradeoff, but the article makes it sound like it's closer to the direct linking version, but with the inlining etc being done by jank rather than the JVM. I don't know if this is only for AOT or also in JIT cases.

lemming··on Jank now has its own custom IR
Great article, as always.

There is one thing that I think is important to bear in mind when discussing inlining, especially in the context of Clojure. This is that once a function has been inlined, you can no longer update the definition of that function in the REPL and have that update the behaviour of functions which use it, unless you recompile those as well. This is not a criticism of course, it’s just part of the natural tension between dynamism and performance.

lemming··on 4TB of voice samples just stolen from 40k AI contractors at Mercor
When I was in NYC a while back, I met a woman at a friend's dinner party. She sounded totally American, but was in fact Brazilian. She worked as a lawyer, and said that she'd had to get extensive voice training in order to sound American so that people would take her more seriously professionally. I have no idea if the professional part worked, but the accent, mannerisms etc was amazing - I would never have guessed.
lemming··on Chernobyl wildlife forty years on
Sure, but the article talks about flourishing populations of deer, elk, and bison. I assume that means we’re talking about herds of each, all in the same space. And they have to survive over winter, which sounds pretty cold there - presumably they don’t migrate, which I guess they usually would? It’s definitely not ideal conditions.

Obviously it’s possible, but I was surprised.

lemming··on Chernobyl wildlife forty years on
What's amazing to me is how little space is required to have a completely self-sustaining ecosystem. A 60km diameter circle just doesn't seem like a very big space to have enough plants to support "flourishing" numbers of multiple types of large herbivores, without migration, as well as all the different prey species required to keep things in balance.

Regardless of the arguments about radiation, it seems pretty clear that lack of humans is really the most important thing for animals to flourish.

lemming··on Official Clojure Documentary page with Video, Shownotes, and Links
Thanks! Yes, I get on really well with everyone in the community - the community in general is perhaps my favourite thing about Clojure!
lemming··on Official Clojure Documentary page with Video, Shownotes, and Links
Hehe, Lisp Emacs Myopia is indeed a real thing. Cursive users have been not starting REPLs for over a decade now!

j/k of course, and no offence taken :-)

lemming··on Official Clojure Documentary page with Video, Shownotes, and Links
Things have been different for well over five years...

In fact, I first presented Cursive at the conj 2014, and I'd been working on it in open beta for perhaps a year before that, so well over 10 years!

...all this fantastic "static analysis style" developer tooling by borkdude and eric dallo.

ahem

lemming··on Understanding Clojure's Persistent Vectors, pt. 1 (2013)
I still don’t understand why they’re referred to as persistent vectors rather than immutable vectors, but I digress.

I believe that immutable just means, well, immutable, but persistent means that updates are achieved via structural sharing, so they’re efficient.

lemming··on Show HN: A memory database that forgets, consolidates, and detects contradiction
So soon our agents will need spaced repetition flash cards for the things we want them to remember! I eagerly await Anki for Agents.
lemming··on Tailscale's new macOS home
Related question: how are people handling adding family members of varying technical abilities to your tailnets? Does each family member get a separate user so you can manage their access? For my immediate family I was just logging tailscale in as me on their devices, but that becomes a pain when they get logged out and need me to log in again before things go back to working.
lemming··on Data Manipulation in Clojure Compared to R and Python
I'm very familiar with Clojure, but even I can't make a good argument that:

    (tc/select-rows ds #(> (% "year") 2008))
is more, or at least as, intuitive as:

    filter(ds, year > 2008)
as cited above. I think there's a good argument to be made that Clojure's data processing abilities, particularly around immutable data, make a compelling case in spite of the syntax. The REPL is great too, and the JVM is fast. But I still to this day imagine infix comparisons in my head and then mentally move the comparator to the front of the list to make sure I get it right.
lemming··on OpenClaw Is a Security Nightmare Dressed Up as a Daydream
But if it doesn’t have access to the network, then it’s just not very useful. And if it does, then it’s just a prompt injection away from exfiltrating your data, or doing something you didn’t expect (eg deleting all your emails).
lemming··on Anthropic takes legal action against OpenCode
This argument is predicated on Anthropic losing money on the subs, but I'm not sure that's a cut and dried argument. OpenAI have said publicly that they're (very) profitable on inference, and they're much cheaper than Anthropic. I suspect this is just artificially trying to create a moat. The problem is their moat is not as sticky as they think it is - I completely ditched Claude for Codex a while ago, my money now goes to OpenAI, and I'm very happy with it. For a while Claude was noticeably better, but that's not the case any more - in my case I prefer Codex.
lemming··on Show HN: Claude Code skills that build complete Godot games
This actually produces more impressive results than I expected. My understanding was that models are quite poor at spatial reasoning/understanding, so I'm surprised it can generate such good assets. Do you use different models for the 3d generation?
lemming··on I am directing the Department of War to designate Anthropic a supply-chain risk
It will be true as soon as it becomes official though, assuming they actually go through with it and this is not just a bargaining tactic.
lemming··on I am directing the Department of War to designate Anthropic a supply-chain risk
My interpretation of that is that I’m required to assume good faith on behalf of other commenters. So, if someone makes the same argument as the government, I’m supposed to assume good faith there, but nothing requires me to assume good faith on behalf of the government. So I can say that this is obviously a shakedown without breaking the rules.
lemming··on Show HN: Free alternative to Wispr Flow, Superwhisper, and Monologue
Could you go into a little more detail about the deep context - what does it grab, and which model is used to process it? Are you also using a groq model for the transcription?
lemming··on Show HN: Free alternative to Wispr Flow, Superwhisper, and Monologue
Is it possible to customise the key binding? Most of these services let you customise the binding, and also support toggle for push-to-talk mode.
lemming··on GPT‑5.3‑Codex‑Spark
Tested at Mistral’s scale is a very different thing to tested at OpenAI’s scale.
lemming··on GPT-5 outperforms federal judges in legal reasoning experiment
Given TFA, it seems that having human determinations involved might run the risk of prejudicing the AI.
lemming··on OpenAI is hoppin' mad about Anthropic's new Super Bowl TV ads
Those ads are definitely destined to age like milk.
lemming··on Show HN: NanoClaw – “Clawdbot” in 500 lines of TS with Apple container isolation
Sam Altman is on record saying that OpenAI is profitable on inference. He might be lying, but it seems an unlikely thing to lie about.
lemming··on Show HN: Lendy – Keep track of books you have lended
My mum has a very simple solution to this problem. It’s a booklet of temporary bookmarks which say “borrowed from Liz”. The bookmarks have a perforated line which allows them to be ripped out of the booklet, and there’s space in the stub to write the name of the book and the name of the person borrowing it. Every time anyone borrows a book it comes with a bookmark reminding them where they got it from. It works really well.
lemming··on Agent orchestration for the timid
Is anyone exploring the (imo more practically useful today) space of using agents to put together better changes vs "more commits"?

Yes, I am, although not really in public yet. I use the pi harness, which is really easy to extend. I’m basically driving a deterministic state machine for each code ticket, which starts with refining a short ticket into a full problem description by interviewing me one question at a time, then converts that into a detailed plan with individual steps. Then it implements each step one by one using TDD, and each bit gets reviewed by an agent in a fresh context. So first tests are written, and they’re reviewed to ensure they completely cover the initial problem, and any problems are addressed. That goes round a loop till the review agent is happy, then it moves to implementation. Same thing, implementation is written, loop until the tests pass, then review and fix until the reviewer is happy. Each sub task gets its own commit. Then when all the tasks are done, there’s an overall review that I look at. Then if everyone is happy the commits get squashed and we move to manual testing. The agent comes up with a full list of manual tests to cover the change, sets up the test scenarios and tells me where to debug in the code while working through each test case so I understand what’s been implemented. So this is semi automated - I’m heavily involved at the initial refine stage, then I check the plan. The various implementation and review loops are mostly hands off, then I check the final review and do the manual testing obviously.

This is definitely much slower than something like Gas Town, but all the components are individually simple, the driver is a deterministic program, not an agent, and I end up carefully reviewing everything. The final code quality is very good. I generally have 2-4 changes like this ongoing at any one time in tmux sessions, and I just switch between them. At some point I might make a single dashboard with summaries of where the process is up to on each, and whether it needs my input, but right now I like the semi manual process.

lemming··on San Francisco coyote swims to Alcatraz
This sort of thing is a huge problem here in New Zealand. The only native mammal here is a bat, we have mostly birds which evolved for a really long time with only avian predators. So they’re hilariously poorly adapted for surviving standard predators (cats, rats, dogs etc) which first the Maori and subsequently Europeans brought. For example, many of them are flightless and tend to freeze when threatened - works well against eagles but is a terrible idea when threatened by a cat.

As a result, we have many animals, mostly birds, which are totally unique and also critically endangered. Many of them can only survive on offshore islands which have been comprehensively cleared of predators at vast effort and expense. The islands need to be relatively accessible since humans have to get to them to maintain them, but it turns out that once in a while a predator will swim quite vast distances for no apparent reason, and it only takes one to mess up years of painstaking work. Quite apart from killing a bunch of birds whose total remaining numbers might range from the tens to the hundreds of individuals.

lemming··on Anthropic Explicitly Blocking OpenCode
> I am really surprised to see people cancelling their Max subscriptions; it looks performative and I suspect many are not being honest.

Why do you think I'm not being honest? What am I supposedly not being honest about?

lemming··on Anthropic Explicitly Blocking OpenCode
https://shittycodingagent.ai
lemming··on Anthropic Explicitly Blocking OpenCode
I’ve used both Claude and Codex extensively, and I already preferred Codex the model. I didn’t like the harness, but recently pi got good enough to be my daily driver, and I’ve since found that it’s much better than either CC or Codex CLI. It’s OSS, very simple and hackable, and the extension system is really nice. I wouldn’t want to go back to Claude Code even if I were convinced the model were much better - given that I already preferred the alternative it’s a no-brainer. OpenAI have officially allowed the use of pi with their sub, so at least in the short term the risk of a rug pull seems minimal.
← PreviousPage 2 of 34Next →