52 karma · joined October 22, 2025
It's been said repeatedly and at the risk of sounding like a broken record: the compiler is a deterministic tool and LLMs are not. And they most likely won't ever be deterministic for certain things sometimes so deeply subjective such as programming, where even different humans could come up with varying solutions to the same problem.
BECAUSE the compiler is so painfully deterministic, yu can be hands-off, knowing that some of the smartest people in the world continue to dedicate a dizzying amount of focus and brain-power to making sure that given x, the output is always z (it's obviously more complex but yu get the idea). I'd say that while determining the correctness of a compiler requires specialised knowledge, it is less mentally taxing to trust BECAUSE it is deterministic. And so, theoretically, yu can dig in directly and see that given these combinations of inputs, the compiler always produces that output... Again, whether the output is right or not is specialised knowledge and can usually be mathematically be verified.
This is very different from LLM-assisted programming which is a subjective endeavour that has now separated code-generation from intention where previously the act of actually writing the code embedded the author's intent by virtue of the author having to decide every single character that survives. This is why documentation feels boring because it feels like writing the code twice (depending on your disposition as a programmer anyway).
If I directed a team and they use LLMs, I'd want them to personally carry responsibility for their LLM-generated code to the extent that they've exhaustively verified that the code itself carries their intent, rather than just that the output matches what was expected. This would be an absurd thing to do with a compiler (i.e. verifying the generated assembly code), and I strongly believe that the difference is in the determinism of the generative process. If every generative run is unique, then every generated output must be very carefully verified EACH TIME to the extent which the human begins to naturally feel personally responsible for the code itself not just the final result.
And the idea that
> Software engineers who use LLMs should save a curated prose document describing the software, alongside the code that was generated from it.
is something I completely agree with, but c'mon, let's be honest... that's the same old documentation practice all over again. Amusingly, LLM-assisted coding is now making traditional programming practices even more important to adhere to. Anyway, it's always been easier to read the documentation than the code itself (for me atleast, I'd like to generally understand the general idea before I go eat granite).
I guess I'm disagree-ing with the article where it seems to say 'peeling of the sticker and calling it homemade' is the wrong thing to do with LLM-assisted programming because we don't do that with compilers (i.e. claiming authorship over the generated asm). I think that comparison shifts us dangerously into being purely result-focused, like we are with compilers.. where we only care about the results of the computation and our high-level input, and ignore the outputted ASM except in very special cases.
I posit that the indeterminism of LLM-generated code requires us to care very very deeply about the output of the model. A reliable signal of that care is when a human has painstakingly seen to it that the output aligns with their intention, to the point where they claim direct ownership of not just the results of computation, but the generated code itself. I think we should encourage that instinct especially if yu want to hold a programmer accountable for their failing code and expect them to feel personally responsible for it, rather than pointing back at the model. I believe this is what Indradhanush Gupta may be gesturing at.
Afterall, what is slop? Didn't read the code, only interested in the results of computation.
Unfortunately, yu can't use dynamically-linked apps anyway since failfs would break absolute path resolution loading system libraries.
EDIT:: But I guess yu could put a statically linked app on the socket, wrap it in failfs and gave it proxy requests to a dynamically-linked app process if your app must use something like python.
I don't use agents at all and I think that building agent/Ai-first is gonna push away people like me (who don't want to deal with agents or any related concept or even git tbh). I'd genuinely say generalise into a Virtual Desktop typer thing.
In your blog, you mentioned that each tile is sorta like a computer (sandbox?) in itself actually containing AND running the work. That's brilliant! Now, if you could make it possible that one single tile could fill the entire screen, like a typical desktop view, on demand. Incase I just want absolute focus on one thing (I'm not always looking across all three monitors) and not be in 'Canvas mode' seeing all my Virtual Desktops.
I could also see myself working across three (or more) tiles where I've got docs in chrome, vs-code open in another and something else (more docs? Terminal? Doesn't matter). Fact is that the infinite canvas literally replaces me having to buy two - three monitors to get the same feel. I could now buy a single large curved one and have infinite monitors.
I had an inkling of this feeling when I saw Omarchy (A tile-based Linux distro from Basecamp / 37signals). What I thought was missing was infinite-ness and a little spatial something? I actually literally thought, what if those tiles didn't squish together like that and the BG were a 2D infinite canvas?
If you pull this off just right and actually focus on getting the desktop version right first (I believe that's where your users are), I believe you may have stumbled onto a different kind of operating system paradigm for a workflow issue we try to solve with even more physical monitors.
I never shut off my PC so I can imagine long lived virtual monitors wayyy off in the canvas ether with all that work still open and waiting until I'm ready for that frame of mind.
I don't have anything to say about the disappearing message except that it's cool as a way to ping or get someone's attention but a dedicated chat box? window? Just a little foldable flourish in the bottom left or right corner so yu can directly 'chat' with someone persistently who's in your space (or you're in theirs) is way more healthy for a serendipity than a disappearing message where it's kinda like an implicit race condition and loses the asynchronous nature of letting me consider a text before I reply especially in work settings. I'd also not want to give access to my entire canvas ether as opposed to selectively allowing access to specific virtual desktop lol
As for 3D? Meh I don't know. Don't need that but other people may like it. I'm just approaching this from a workflow angle. Love the whimsy regardless.
I absolutely want this, I would absolutely pay for this, I think this is a great product in the Figma range and I absolutely wish you all the best of luck because this is awesome. Just focus on the operating system /workflow angle for a desktop use-case first. I couldn't try it (don't have a Mac) but I got the idea from the video.
Good luck, guys! And ykw? I wonder if I could fork around with Omarchy and give it infinite canvas since it's already 95% there. Never mind the social feature or 3D graphics yet.
Do note that I only use LLMs in the ChatUI, I never use agents. I don't believe having a blackbox codebase managed by entities with a half-life of 'delete conversation' or 200k tokens is a responsible idea. In ChatUI, I lay the ground rules, kill assumptions about our working relationship, give it foundational context on the problem and codebase we're working on, explain the problem and then we have a conversation about it and I gradually disclose more logically context as it becomes relevant. So, to directly answer your question, maybe I'm missing out on a ton of upside by not using the absolute best but I'd say familiarizing yourself with a specific model has all the benefits of having a human friend you've grown up with... except your buddy's a savant and would absolutely love to help!
What tends to happen is that I’ll reach a junction with Claude where I’m reading its output and starting to manually make changes yeah?. The output is usually already very good, close enough to what I want that it's way more efficient for both of us if I just carry it the rest of the way myself. Or I 'ruin' the clean flow by veering off into questions, clarifications, or broader changes. After a while of this back-and-forth review process, after definitely attaining an 'improvement checkpoint', I scroll back up to what I think of as a 'conversational context checkpoint' and then summarise all the changes we’ve converged on as succinctly as possible including the 'why' (verrry important to always tell them the why). I edit that checkpoint message, and that becomes a new branch of the conversation starting from there. All the noise, all the intermediate negotiation, disappears, and what remains is a compressed version of only what I want the model to carry forward.
Sometimes, if the changes are too extensive to easily summarise, I go even further back, one message above where Claude started generating files. I edit that instead, rebuild the context with only what matters, and then present the corrected output as if I authored it myself sometimes even saying something like, 'So Claude I tries to implement this myself, what do you think? Does it match what we agreed on? Do you disagree with anything or have questions or see issues?'. It works surprisingly well up to even catching new subtler problems in that improved code. It’s very close to your idea of context sculpting, just executed through manual, human-intuited branching rather than model-side compaction.
The interesting constraint I want to point out is judgement. The model doesn’t really have it in the human sense. Knowing what is important is exactly the hard part. Prompting it into the right shape figuring that out for itself is almost like an art form, whereas for the human there’s already an intuitive sense of... salience? running underneath everything. That's the sauce really. You, the human, are the most efficient and effective OUTER_MODEL
Another difference is structural. In this workflow, you are effectively editing your own message and then forking the conversation from that point downwards. It behaves more like a git branch than a linear chat.
I’ve never fully bought into agents either, at least not in the sense of something that meaningfully replaces the human in the loop. I don't want to either 'cause what then? Even if agents work, the question becomes who maintains the code, who understands it deeply enough to extend it without decay. So even this manual technique still depends on full human involvement. Each prompt is modular, structured, information dense, and intentionally non-open-ended. That non-open-endedness is like avoiding a circular dependency where groups of related contexts are littered all over and yu can't pick a proper checkpoint for the chunk of work you're currently doing. This again assumes you're solving problems in logical bite-sizes anyway.
But I consider prompting as less like conversation and more like maintaining modular, versioned intent. It should feel like a sciency discipline rather than purely improvisation Al. Steer it, don't let it steer and never append either; wipe the slate with an edit or new conversation but an edit keeps more of the nuances of that specific model instance. It's very interesting research you've done here. Well done to yu and codex!
EDIT: typo!
So the idea of feeling tricked based on how much effort went into it feels foreign to me. If I got something out of it, that's enough. Even if it took the author and a model no time at all.
The ‘feeling tricked’ part, to me, suggests a kind of adversarial framing with AI outputs that I think is curious. I’m just engaging with the text in front of me, whether it’s a story, a README, or a wall of technical writing. If it communicates clearly and has substance, I don’t think much about where it came from. I think much of this just comes down to what people think they’re engaging with when they read, the work itself or the mind behind it.
And tbh, filtering what’s worth the attention has always been on the reader. There’s plenty of human written slop too. I tend to judge everything the same way on my way to deciding whether to keep reading or drop it.