Posts by jsbarretto@social.coop
 (DIR) Post #AtcQG4j0WTdPxAyY9g by jsbarretto@social.coop
       2025-04-30T07:15:36Z
       
       2 likes, 0 repeats
       
       LLMs promise something enticing, but ultimately hollow: the ability to skip the dialect and impose one's will on the machine by force. They are appealing because they do not allow space for their user to be wrong, or to be forced to encounter the consequences of their unrefined ideas.This is why code written by LLMs is often buggy, insecure, and aimless: it is written to appease a master that does not understand the conflict between their ideas, nor the compromises necessary to resolve them.
       
 (DIR) Post #AtcQGDl6w1fHyJ1rBQ by jsbarretto@social.coop
       2025-04-30T07:18:38Z
       
       1 likes, 0 repeats
       
       If you're an LLM fan, it might initially appear confusing that a programmer might choose a statically typed language, and more confusing still that those with experience *yearn* for static typing. Why limit yourself? But the reality is that the development of good software requires the dialectic between developer and machine to take place, and type systems accelerate this process by allowing a skilled programmer to refine their mental model much earlier in the development process.
       
 (DIR) Post #AtcQGMjJa4ZlnLG38K by jsbarretto@social.coop
       2025-04-30T07:18:52Z
       
       1 likes, 0 repeats
       
       I think this is all I have to say on this topic.
       
 (DIR) Post #Atej4ShvoiKWIwZHtY by jsbarretto@social.coop
       2025-04-30T18:06:14Z
       
       2 likes, 0 repeats
       
       People seemed to like this so I turned it into a blog post: https://www.jsbarretto.com/blog/on-llms/
       
 (DIR) Post #AveCw15BzgDBBJEoEq by jsbarretto@social.coop
       2025-06-30T06:25:49Z
       
       0 likes, 0 repeats
       
       @BrodieOnLinux Gotta catch em all
       
 (DIR) Post #AvyGMSwchRPDuY5TzE by jsbarretto@social.coop
       2025-07-09T22:38:25Z
       
       0 likes, 0 repeats
       
       @stux We can't usefully force a canonical ordering of these things across society, so saying "do all X before any Y" effectively turns into "never do Y". It gets used a lot as a justification for nimby antics that are holding back net zero policies.
       
 (DIR) Post #AziMTmqAJdpIksCfjs by jsbarretto@social.coop
       2025-10-29T21:25:13Z
       
       1 likes, 0 repeats
       
       A few weeks ago I hit a really fun personal milestone: my text editor is now sufficiently complete that I can start using it as my daily driver.Now that I'm using it full-time, I'm finding so many opportunities to make tiny productivity improvements here and there. If I have a thing I want to make less bad, I can just... make it less bad!I highly recommend building your own version of at least one tool that you use on a daily basis, if for no other reason than that it's just really very fun.
       
 (DIR) Post #AziMTul8sCYtJbum1I by jsbarretto@social.coop
       2025-10-29T21:30:30Z
       
       0 likes, 0 repeats
       
       I think I am quite lucky in that I have a relatively low bar for what I consider 'essential' in a text editor. Syntax highlighting, multi-buffer support, and a decent keyboard-driven file browser is about all I need.Maybe at some point I'll dive into LSP support, but I've always been happy invoking compilers manually in a separate shell so it's no skin off my nose.I imagine that someone used to the luxuries of VS Code or its ilk might want to pick an alternative tool to build for themselves.
       
 (DIR) Post #AziMU2Z1r7crWMJDFY by jsbarretto@social.coop
       2025-10-29T21:39:08Z
       
       0 likes, 0 repeats
       
       If you're a professional software developer, so much of your life is dedicated to writing code that effectively just vanishes into a void, never to be seen again. Maybe it gets rewritten in a few months, maybe the project gets cancelled, maybe nobody uses the feature, maybe you leave your employer before ever get to see it hit production.But writing tools for yourself is great & immediately useful. Writing code and then immediately experiencing the value of that code is such an endorphin rush.
       
 (DIR) Post #AzjQ6Qi31fQyQoU5zs by jsbarretto@social.coop
       2025-10-30T10:15:17Z
       
       0 likes, 0 repeats
       
       @futurebird Necessarily! It's not a 'trick' as much as it is a necessary consequence of the laws of entropy. Building your own version of the library is surprisingly uncomplicated!https://github.com/zesterer/babble/blob/master/src/main.py
       
 (DIR) Post #Azpe4WSXF3OpzXyNHs by jsbarretto@social.coop
       2025-11-01T23:40:04Z
       
       0 likes, 1 repeats
       
       Thinking that I might start adding something like this to more of the software I write.
       
 (DIR) Post #B0S7ykMXniFyfbXrEW by jsbarretto@social.coop
       2025-11-20T23:06:03Z
       
       1 likes, 0 repeats
       
       I finally found the energy to dive back into Ariadne's wildly complicated diagnostic generation logic. Here's a new configuration option, `minimise_crossings`, which does what it says on the tin.Before and after.
       
 (DIR) Post #B0S7ysJIFgPTJq5NHE by jsbarretto@social.coop
       2025-11-20T23:08:54Z
       
       0 likes, 0 repeats
       
       I really want to clean up this code, but I'm finding it quite difficult. It's like a knot that's been shaken around until it's reached its canonical cardinality. Nothing can be removed without breaking functionality, but what remains is only just in the realm of comprehension.
       
 (DIR) Post #B0icCsMWFYJ2mPQJSi by jsbarretto@social.coop
       2025-11-28T09:12:26Z
       
       1 likes, 0 repeats
       
       @FreeCAD I really have no idea what I'm doing with CAD or product design, but a month ago I had a need to fill and FreeCAD did the job: here's a replacement watering can head I designed and printed after the first one broke.
       
 (DIR) Post #B1LoKvP1bd0r8ndYtE by jsbarretto@social.coop
       2025-12-17T20:32:47Z
       
       1 likes, 1 repeats
       
       > Rust is too constrained without [unsafe blocks] to get any useful work done.Just saw this in the wild again.@veloren has about 330,000 lines of Rust code today. It's a networked, multi-threaded, 3D, portable game and game engine played by thousands of people. Very much not a contrived example. Name any sort of code and you'll find it in there: GUI, packet parsing, physics, DSP, decision trees, database calls, ECS, procgen, audio. It's all in there.It has 12 instances of `unsafe`:(1/2)
       
 (DIR) Post #B1LoL0GhW0KEEQmU6q by jsbarretto@social.coop
       2025-12-17T20:34:21Z
       
       1 likes, 1 repeats
       
       Of those 12 instances:- 6 relate to hot reloading (dynamic linking) and aren't even presented in public builds- 3 relate to the plugin system (JIT compilation and other things that are almost impossible to provide hard soundness proofs for)- 2 relate to shader compilation (also JIT)- 1 relates to accessing the OS clipboard and is unsafe because the underlying abstraction is perilously easy to abuse (thanks C)
       
 (DIR) Post #B1LoL8LxSLHfJ3InPk by jsbarretto@social.coop
       2025-12-17T20:35:00Z
       
       0 likes, 0 repeats
       
       I know these people are just trolls, but still. It irks me to see people still saying this in the wild.
       
 (DIR) Post #B1Mnuu5C5K3ofzugl6 by jsbarretto@social.coop
       2025-12-18T01:30:12Z
       
       0 likes, 0 repeats
       
       Top tip(s) for those trying to understand a complex, well-established codebase: start off by rewinding the git history to a very early release.There's a good chance that most of the core abstractions have survived unscathed, and seeing them surrounded by fewer ossified tendrils will make them easier to make sense of.As an example, Veloren 0.2 was just 20k lines (compared to 330k today), yet much of 0.2's design principles have survived with surprisingly few changes.
       
 (DIR) Post #B1MnuvZiXK4RIxCZyS by jsbarretto@social.coop
       2025-12-18T01:33:15Z
       
       0 likes, 0 repeats
       
       From there, go through each of the most-commented PRs: those are the ones that are most likely to contain 'abstraction-shaking' changes. Read the discussions, understand what philosophical changes the codebase underwent at those critical moments. Usually you will find lots of highly revealing debate among older contributors.Move from past to future, updating your mental model of the codebase as you go. Details are not important.
       
 (DIR) Post #B1MnuwuJaE8nR7qXia by jsbarretto@social.coop
       2025-12-18T01:37:09Z
       
       0 likes, 0 repeats
       
       For certain critical files, it's often useful to skip through the commit history and compare every N commits. Knowing how to diff specific files over time is very useful here.This is also why I'm not a fan of overzealous squashing: you lose this rich history that tells the 'why' instead of just the 'what'.Focus primarily on type definitions rather than code: that's where you'll find the philosophical intent of any well-maintained codebase. Code is always full of cheap temporary hacks anyway.