Joined August 2021
215 Photos and videos
Jun 12
If your code has a clear and consistent pattern, is well structured and the separation of concerns is not arbitrary, and it is genuinely extensible without having to re-fiddle with anything. Nothing is contrived or stuck in some odd way that'd break assumptions derived from any other area of the codebase. If that is the case then AI picks up on this and can carry it on effectively with light hand holding. If that is not the case then AI just starts doing `whatever` to figure out how to fit in requests. This is probably why some people are finding AI can fill in significant gaps of their codebase to a high quality similar to how they'd manually write it while others are wondering WTF did it just do and why. I'm starting to suspect people who are complaining about AI generating crap code are really just outing themselves as having written crap code themselves. Pattern recognition and extrapolation is what AI absolutely excels at. If it is doing something bad it's because the patterns it recognized, and is trying to extrapolate, are bad. But people have probably become blinded to the badness of their own code because they have been staring at it too long as they wrote it. This is a common difficulty with any designer, you somehow have to get a fresh mind to see whats bad, you get too used to your own stink. Then people only recognize the badness of their code when an AI uses it as a pattern to follow and reflects back something which they can now see with fresh eyes.
1
2
6
212
Jun 12
I'm starting realize... those who have minds which are very practiced at being highly logically consistent and non-contradictory, and can thus capture this in their code, or even their writings. AI can basically flow with them. It can recognize the logical consistency and stay in sync with the general direction of the human as they got and actually be an assistant that appears like it's on-point with what what the human wants. Whereas for those who do not have such minds. Whose minds tend to go in a lot of contradictory directions and cannot recognize it's own foundational patterns applied in another context. That AI can't pick up anything consistent enough to flow with them. Thus they feel like they are fighting with the AI.
3
105
Jun 11
Now that it is so easy to rip a bunch of art, train models off that, replicate styles, transfer styles to other styles. It's almost like you need some kind of system which people could sell artwork through which maintains some kind of portable proof of authenticity from the original artist. Then a web-culture around that which would place value upon not simply having the bytes of data but having the proof of authenticity. Something like a token on some kind of ledger which people themselves could collectively maintain and no single entity own. Hmmm... If only someone came up with something like that and artists embraced it, and grew network effects around it, and cemented that modality in global web culture at large, then perhaps the threat of AI devaluing authentic work could be reduced... Such a shame no one had any foresight on how this would all play out and didn't start trying to get the ball rolling on such a thing years ago. Oh well.
2
3
202
Jun 11
Thanks to Claude. The feeling which programming gave me when I first started making half-life 1 mods. Or when I got my first iPhone and started making iOS apps. Or when I first started making an Unity game. It's back. Like a whole barrier of resistance has been removed opening into some novel domain. The boundaries of a whole new upper limit are yet to be discovered.
1
117
Jun 10
Open Source, small teams and solo devs have always struggled to compete against the resource a corporation could throw at a project to get an army of workers to deal with the piles of less glamorous work no one would volunteer to do. Now AI can be utilized to close that gap. Corporate software development will never be able to adapt to small or solo teams going at the full speed possible with AI. Part of the purpose of corporate management hierarchy is to fragment and control developers. So that no single developer possesses too great a domain expertise, nor do they become too intertwined with anything critical and develop potential leverage against management. The management hierarchy exists to keep all the leverage on the side of management. Management hierarchy can serve an important purpose in certain domains, but it also unfortunately will inevitably turn into this. An entrenched bureaucracy always working to protect its own interests. It's a phenomenon that evolved in the industry because there' a mass of people who had nothing technical to bring to the table who found they could justify a big salary by inserting themselves in the middle of everything as gatekeepers. So then any 'progress' is dependent not on builder's simply building, but rather bureaucratic do-nothing gatekeepers giving the Okay. There is no way such companies will be able to go through the changes to enable developers to go at the full speed AI enables. It is completely contradictory to what they are. Even though some big corporations are adamantly Pro-AI on the surface. They'll never be able to fully adapt internally to what it enables. They are doing that because they have to. There is market pressure to have a consumer AI narrative. Some team gets assigned to drive that effort. Executives are concerned about being the brand perceived as being ahead of the curve. But internally most of the company probably despises the AI push looking for any opportunity they can to derail it. Internally they'll never fully adapt. If it weren't for the VC culture, which can be fairly rebellious, funding OpenAI and Anthropic to push this stuff out to the public and consequently making consumer demand, the big corporations would still have it be entirely internal. Google and others had internal LLM's as capable as the initial ChatGPT over a year before ChatGPT reached the public. If the card was entirely in the hand of the big corporations, it would not be getting played how it currently is. Anthropic and OpenAI are going to benefit hugely from the rise of AI. As will any established company that manages to set up a department geared from first principles to enable maximal speed from AI. But that is going to be the rarity. Largely AI is going obsolete the corporate world the more the non-corporate world figures out how to maximally utilize it. That is what AI poses the biggest threat to. The Anti-AI stance predominately pushes back on a potential threat to the establishment. To be in open source, or a small team, or to be an independent and not be jumping on AI to figure out how you can move faster and automate away what corporate bureaucracy would typically subsume to grow and spread. You are working against your own best interests.
1
3
156
Jun 9
For C the majority of methods which compose your system should be global or namespaces scoped. Not encapsulated in an object. Reason being, there is no way to add methods to an object outside it's original definition. Inherently making your system non-extendable unless you break the pattern of them being class scoped methods. Or introduce unnecessary complication like sub-classing the whole system just to add a method. New languages solved this by having some functionality to let you extend class definitions from anywhere with new methods. So in those scenarios this argument is moot. But notice, languages added two additional layers of abstraction to functionally accomplish what C already did by not allowing any method be on a struct. All except you can now use object.Do() instead of do(object). Was that really that important? I do not personally think so. To be concerned with the difference between object.Do() and do(object) is trivial and pointless. If you make everything do(object) then you never have to worry about extension methods or which object a method belongs in. It was a pointless complication. I will say, I do like the option of being able to put a method on a struct. They can be useful. But more so as shorthand utility operations on a POD struct. Not for the meat of your application.

1
1
433
Jun 7
Object-Orientation and abstraction in general was invented to make code more easily digestible for the human. Which is debatable if it really does. I'd argue it creates the illusion of simplicity on the surface at the cost of more actual complexity and is ultimately a net-negative in being able to understand it when you try to really dig into it, not just glance at the surface level. However. It's becoming more apparent to me with Claude that whole premise becomes moot. The easiest way to understand a system now is ask Claude to summarize it. Then ask Claude questions. To which, I believe it can do that better with more code flattened into one file with less abstraction and less indirection. Meaning, the argument against a C-Style of programming because it makes it more 'maintainable' is invalidated if you now use Claude as a kind of dynamic abstraction layer to understand the high level of a code base. Although I think it was a nonsensical argument to begin with, but now with Claude it's a counter-productive argument. I'm starting to suspect the more abstraction you have in a code base. The more logic and data of related moving parts are spread across a wider surface area. The more passes or steps of indirection a compiler would need to understand it. Then the more Claude will struggle to understand it and be more likely to make mistakes, oversights and need closer hand-holding to make it produce exactly what you want. Which makes me suspect AI will incentivize migration away from heavier abstraction and object-orientation towards more flattened data-oriented C-style. As you can manage more complexity with less complication through AI.
2
3
144
Jun 5
When any domain starts to get polluted with a lot of "stuff" the solution hides by being too obvious. Due to the group-think nature of human social dynamic, many people may notice the obvious, but they won't pick it up because they assume there must be something wrong with it purely because no one else is picking it up. At some point it requires a proud idiot without any shame in looking like an idiot to go over and simply pick it up. At which point the group-think nature which caused everyone to stay away from it makes those same people upset. Saying, "Well that was obvious! It was not a big deal! We all knew that!" Yes. Exactly. But you didn't have the courage to be an idiot. Past a certain threshold of intelligence the more important skill becomes learning how to be an idiot.
1
1
5
86
Jun 5
I would not be surprised if a bunch of agents pointed at the chromium codebase could rewrite it to be more performant, with less bugs, and fewer lines of code. People fixate on AI code not being as perfectly beautiful as handcrafted code but truth is a lot of the big production codebases out there have devolved into contrived excessive piles of crap. An agentic rewrite would be an upgrade.
2
4
326
Jun 3
I've been driving the clankers pretty hard for about 3 months now. I feel like I have internalized the proper way to interface with them where I'm no longer compromising on anything. Nor am I 'vibecoding'. I'm simply going multiples faster and producing code the same way I would have if I had done so manually. It's not 'agentic' coding either. I have thorough awareness of everything it is doing and producing. I use it more like an active assistant, or a kind of super-resharper or dynamic validation layer. As much as I hate to admit it the term 'copilot' is very appropriate. Really, I am ultimately compromising less. Because previously things I would not do because they'd be too time-consuming and are more-trivial, I can now do them. More exhaustive performance tests. More exhaustive scanning through technical specs of prior research. Widespread refactors which are trivial but could be time consuming. Just lots of stuff I'd typically punt on due to time management I can now just do all of that. I'm sitting here wondering. How many others are there? I have only noticed two others from their posts that seem to be 'getting it'. How you drive the clanker, not to vibecode, not to send off into an agentic rabbit hole you are clueless about, but how to actively weave it into workflow to simply do more of better quality and compromise less on things you'd typically punt on due to time constraints. Who else feels they are getting sense of this?
23
4
100
6,632
Jun 2
So... claude code would not allow you to ssh into anything through it. While codex does. So currently I'm ssh'd into my openbsd webserver as root through codex and am letting it config everything and vibe code my blog directly in the production www folder as a CGI application programmed with C. Look. Don't judge me. Look a this cool tree it made with my X posts as apples... rygo6.me/

1
176
Jun 2
I've had a few non-programmer friends come to me with some app or website they've vibecoded. To which they are so happy with, but always with the caveat of, "I have no idea what the code is doing, I'm sure it's absolute shit, but it's working!" Too which I am genuinely elated. I don't see why some people get so upset about this. Maybe it's because I don't feel threatened at all by it? I imagine if you are in a problem domain where someone could vibecode half-decent results it might set off alarms. But if you feel like vibecoding is encroaching on your territory maybe that is a sign you need to do something more difficult? It reminds me of when Unity started to pick up momentum. Around version 2 or 3. Too many seasoned gamedevs were having freakouts about all the "unity slop" being pumped out. Then the iOS app store getting flooded with "amateur unity trash". I find there is still a deeply embedded resentment in those who were apart of older established gamedev companies during that time. Where they'll ignore you or be hyper-critical if you have too much Unity or C# on your resume. They were just so upset the bar got lowered and other less skilled people could now make stuff that might pass as comparable to what they felt was such hard difficult work. Which I also loved that era when amateur half-finished Unity experimental games were all over the web and app store. I did not get why some were so threatened and upset by it. Do something more difficult or stake your ego on something more meaningful if it's that big of an issue. I am very amused with creative cultures in any form. Not everyone needs to make some highly polished and perfectly crafted masterpiece to contribute to a creative culture. All the half-baked experiments, flaws and failures that come out of the churn of a frenetic creative culture is part of what makes things like that interesting.
1
1
3
133
Jun 2
- Use clang C 23. - Disable exceptions and related. - Disable RTTI. - Disable libstdc linking. - Disable all the warnings about using C99 features. - Use plain libc headers and clang builtins directly. - Make minimal versions of containers you need tailored to your exact need. - Selectively use c template-only headers for syntactical sugar with std::initializer_list or std::atomic or C attributes. - Make minimal use of templates where you'd otherwise go overboard on a macro. Ensure to use the compile time metric of clang periodically to make sure you've not done anything which makes compile time go off the rails. - no virtual methods. - no access modifiers. - never use 'class' only use 'struct'. - C 'requires' constraints are useful. - For your general application state prefer a fat struct with namespace or global scope methods. Only put methods on struct when they are utility methods to operate on a POD struct. Such as clear or push to a list. Or invert a matrix. - Prefer static create methods rather than constructor. Only use constructor if its for some kind of syntactical sugar on a POD type or template. - Always prefer a static allocation or the stack over heap allocation. Malloc and free are just fine for when you need bigger chunks. If you are calling these so many times that it becomes complicated to deal with you are doing something else wrong. Then you get the best of C and the best of C . Generally it is better because strategic template use can make a codebase better. The ONLY thing you lose is the way compound literal lifetimes work in C. Which is unfortunate. But you can still take a pointer to a compound literal within a method call and rely on that temporary value existing for the lifetime of that single call. Which can cover most of the scenarios where you'd need to do that. I've been calling this `GNU C -` I know we have like several flavors of notions in this direction floating around. But that is mine.
101
May 27
The truth is... it is not "AI Programming" vs "Non-AI Programming". It is: "AI Programming" vs "Massive Bureaucratic Corporation to Manage the Massive Tedious Slog of Maintenance and Implementation Work No One Wants to Do." One of the things that stood out to me among the vocal programmer community is Andreas Kling, making laydbird browser, jumped on AI and agentic coding. I assume because he's in a problem domain where that "Massive Tedious Slog of Maintenance and Implementation Work No One Wants to Do" is overt and clear. And the competition to any independent open source effort is obviously a "Massive Bureaucratic Corporation". Conversely those who seem to be most adamantly anti-AI and convinced they can manually write every line of code to a higher quality. It's because your project is not as ambitious nor as large. You are working on smaller scoped, niche, projects. Albeit very cool and important things in some cases, but they are smaller projects. Things where you can fully grok the entire project and keep strict overview of every little detail. You aren't trying to do something which would typically need a "Massive Bureaucratic Corporation" to manage and maintenance. The ironic thing of it too, I also don't know anyone who is leaning in the anti-AI camp who is also simultaneously greatly in-love with making contributions to something like Chromium codebase. Or any other codebase that has turned into such a monstrosity it needs a big corporation with a passive money printer to subsidize it's management and development cost. That generally you've deferred to smaller scoped niche specialized projects because you'd probably hate having to work in one of those Massive Bureaucratic Corporate codebases. Which means you don't demonstrate any solution to offer towards people in that problem domain. It comes off as hypocritical. You need to take on a comparably big effort and prove that you can actually corral a huge army of open source contributors to methodically go through and build everything line-by-line manually. Or demonstrate you love pushing through the slog of a Massive Bureaucratic Corporate codebase by making lots of meaningful commits to one of them. Personally I don't think either will happen. The Rust Servo project still sitting there in a barely usable condition is proof that you can't corral an army of open source contributors to take on something that big and ambitious. Then if you cloned chromium or some other codebase under Massive Corporate Bureaucracy and had to spend a year trying to push some meaningful change through it. Unable to work on a smaller niche project which you can keep nicely curated and perfected. I think pretty quickly you'd start believing that passing a lot of that punishment onto AI sounds like a great idea.
2
99
May 25
Regularly now, for any thought about politics or general worldview, I will paste my notion into AI and ask it to critique it. To which rarely does it validate it. It typically tear it down, or highlights things that make me re-think something. Sometimes I present these thoughts or arguments to other people. Also mentioning that I use an AI to validate my thoughts and perspective. To which a common response is that AI is sycophantic and it will just validate whatever your predisposition is. I always ask back, what would you ask the AI? Not everyone has a subscription to run endless queries on supergrok or whatever. Which they might respond. Or just give me back an argument. To which I copy/paste that to the AI and give them the link back. Never has it actually validated any such persons argument. In most cases it completely tore it apart for being factually incorrect and logically inconsistent. At which the exchange goes from, "You are wrong because you used an AI to sort through your reason and AI just validates anything because it is sycophantic". To, if you believe that is true. Well then. Here is your argument given to the AI which it thinks is nonsensical. Which means you have to consequently believe you are severely incorrect if you cannot even get a supposedly sycophantic AI on your side. I am sure this depends on the exact model but the latest ChatGPT thinking and SuperGrok thinking models. Any question which can factually validated in anyway, or relies on any kind of sound logic, they can be absolutely brutal if you ask for a simple 'Critique' of some thought of yours. Even if they are sycophantic. People going from worldviews so distorted that not even a sycophantic AI will validate them, to worldviews at least in the ballpark of reality such that a sycophantic AI might be able to validate them. That seems like a collective upgrade to me. Everyone should probably argue their worldview and politics with AI more.
1
97