Anticodeguy
رفتن به کانال در Telegram
Technomad & systems thinker exploring paths to freedom and prosperity https://stan.store/anticodeguy
نمایش بیشتر645
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
-230 روز
آرشیو پست ها
645
<written by a human being>
A few months back, there was a belief going around the AI community that coding models don't really understand non-web-based programming languages all that well. And the models themselves keep trying to convince me of this: like, the training data corpus contains way more software written in JS than in C#.
And that's probably true, but it doesn't mean modern models can't handle programming platform applications, say, for Windows.
Naturally, I decided to test this in practice. And I already mentioned that I'm working on a keyboard layout auto-switching utility on the .NET framework. As someone who's spent his whole life in web dev, I don't fully get what's going on in there, but I can definitely test the finished product, since I use it heavily every day.
And so far I'm more than happy with the results. The original program turned out to be way beefier than I expected: back in the day people loved stuffing in a bunch of features nobody ever used, but it gave the development more weight and significance.
Now it's the opposite - I only need the core function and nothing else, so the essence of coding right now is cleaning out all the excess functionality without breaking the key features in the process.
We got stuck in one spot - unable to catch why the auto-switch would stop triggering on certain words. And the pain of diagnosing it was that Sol was scared to suggest a full keystroke logging option because of security, since we'd just cut the input-saving feature as unnecessary.
I had to convince him that we're doing this for debugging and fixing a bug, not for spying on myself. After that we finally managed to catch and kill the problem.
But for now, the .NET development is going pretty damn well.645
HTML is the new PDF
<written by a human being>
In the era of interactive presentation building, the need for PDF for this purpose is slowly fading away. After years of successful practice, the format became the industry standard - opens on any toaster, keeps the formatting exactly as set, works cross-platform.
But you know what else has the same properties? HTML. It used to be used only for static websites, but today I use it more and more to present ideas, concepts, projects, and anything better shown visually.
And here HTML even beats PDF, because it lets you add animation and interactivity. For example, your project presentation can include a calculator with sliders you can happily drag around, showing off (your resourcefulness) in real time how the numbers change depending on market factors.
Or add some nice animation that visualizes the process of going through production stages (because our own visualization has completely atrophied).
Of course, I'm saying this in the context of building such presentations with AI agents, who just thrive at this kind of task. Weirdly enough, putting together a PDF presentation is noticeably harder for them than HTML, which is exactly why I'm urging you to use it.
And it costs pretty cheap in tokens, you can make changes really fast, and finally, host it for free on some Vercel or Cloudflare, so your creation is accessible via a link from anywhere.
For the first time in a while I can confidently say: HTML > PDF.645
There's no better testing than in Production
<written by a human being>
Sure, a well-built dev process has a testing stage. And of course, with AI it's gotten way easier to write unit tests for every little thing and run them on any change.
Beyond that there are tools like Playwright that literally let you reproduce the user journey and click through the interface for them, walk the happy path and reproduce possible errors.
But predicting how thousands of people will behave in thousands of different situations on thousands of different devices they use is basically impossible. Or maybe possible with quantum computing or some other interesting method, but at the current stage of software dev I haven't seen examples like that.
So the best test of your build is still live field testing by real users. Who will absolutely behave in ways you didn't account for in the interface design or didn't think through as an edge case.
For example, an email confirmation system with a one-time code is a fairly trivial task. And me and AI tested it up and down hundreds of times, refined the procedure down to the smallest detail, leaving the user no possible alternative actions (for example, we removed all links from the email). But still the user found a way to break the system and sent me a report saying the code doesn't work.
How's that possible? I check - it works for me. Turns out, being a lazy person, I'm used to copying the code from the email and pasting it into the confirmation form. But the user typed it in by hand. And typed lowercase characters, even though the code is always generated in upper case. And displayed in the form in upper case! So the swap wasn't easy to notice right away.
A dumb mistake, yeah. But only a real user helped find it.
Test in prod.645
<written by a human being>
Yesterday I started testing the Max version of ChatGPT. And first of all, of course, I'm interested in comparing Codex's limit consumption against Claude Code for the same $200 on similar tasks.
No results on limits yet, but there's one observation I noticed while working with Codex. I get the feeling it's more autonomous than Claude Code.
Claude Code is this careful, cautious assistant that stops at every turn and asks your permission. And no, I don't mean technical permissions - I permanently work in --dangerously-skip-permissions mode. I mean more that you need to prepare instructions in advance, properly set up the environment, hand over context in a structured way. And that's when it blooms, starts confidently pushing through tasks, keeping reliability and confidence in its actions.
Codex, on the other hand, just goes and does it. Goes wherever it needs to on its own, figures out whatever it's missing, doesn't really stop, and hacks its way through the jungle with a machete until it leads you to the long-awaited oasis.
Somehow completely without prep, without the needed context and structure, from the initial prompt it fixed my C# program for me and I didn't even have to fix anything or write new prompts.
Right now 5.6-Sol-Ultra is continuing work on the same program in multi-agent mode, already implementing my requests for functional improvements. We'll see the result, but so far the point for autonomy goes to Codex.645
<written by a human being>
Good practice when working with coding agents has become clearing the context window (instead of compacting the session) by passing a handoff-prompt into the session, so the agent can pick up right where it left off.
I decided to go further and visually show myself when this threshold is reached, after which it's time to clear the context - but also show the agent itself, so it gives me hints that the moment has come. I set up a hook that starts triggering at a threshold of 120K tokens and shows me a prompt, while also telling the agent itself to wrap up its generative adventures.
And at first everything worked pretty smoothly, just as it was supposed to. But after a while the AI started "reinforcing" the trigger policies, making them stricter, because it felt it was reacting too softly to the set threshold and not insisting hard enough on ending the session.
I wrote about this yesterday - those are the same retrospectives that result in new rules, memory, skills and other things that are supposed to work well. But in practice they led to the agent even stopping short of finishing tasks, cutting them off in the middle and just sitting there waiting for me to reset the context.
In the end it just became impossible to work with, since the agent developed a clear motivation to end the session as fast as possible. Had to cut it live)
In a separate session we ran an investigation, identified the elements driving this behavior, fixed them, and everything went back to normal. Tasks are getting done again, context is overflowing again.
If I don't reset it in time...645
Side effects of frequent retros
<written by a human being>
Recently I talked about the practice of running a retro after every session, which produces recommendations for improving the process, new skills, memory, instructions, and other joys of the vibe-coder.
By about the third week of this practice I noticed something was off. More and more tasks started piling up in tech debt. And attempts to clear out this backlog led to a situation where new ones appeared as fast as old ones got closed. For example, in one session we closed 3 tasks, but the retro process spawned 2 more. Then in the next session, 2 more, and so on.
So instead of shrinking, tech debt started accumulating, which clearly points to an error in the process.
Turns out that in one of our retros we tightened the decision thresholds for opening tasks. And a lot of things that could've been fixed in the same session, or shouldn't have been fixed at all, were getting pushed off into separate tasks.
Of course, I try to read all the process improvement recommendations the agent suggests, but hey, it should know better - these are its own instructions for its own work. In practice though, it's not that smooth, and I had to break this vicious cycle.
In a separate session we dug through the logs of previous ones, figured out the cause, raised the bar for opening tasks, and concluded that retros shouldn't run after every single session, but only in ones where there were clear deviations from the process. Or on a set interval, based on accumulated logs.
Anyway, wishing you a shrinking tech debt.645
<written by a human being>
Claude Code has an ultracode mode, which means calling and managing multiple sub-agents in orchestration mode.
I've talked a lot about agent orchestration, how I organize it and what this approach even gives you. But how does ultracode differ from a simple "orchestrate" prompt or even the orchestration skill I use?
The first and key difference - the orchestration workflow itself is run by a JS script. So it's deterministic - program code that initiates agent sessions and aggregates their results. In my current approach this is handled by a head "central" agent, which at the same time monitors execution and reacts to the output of child agents.
From this determinism follows a logical conclusion about the practical application of ultracode. If the goal is to parallelize identical tasks that would be too large for the context window of a single session, this method fits perfectly.
For example, you need to methodically go through hundreds of files and gather the needed context from them. Or run several agents on page design to compare a few different implementation variants and pick the best one. Or analyze a large codebase, splitting it into several blocks for analysis.
I tested ultracode on a tech debt drainage task and in one session easily and quickly closed 4 tasks from the backlog. And yeah, burned 650K tokens.
The main downside of this method is that there's no control over it. The ordinary child sessions launched by an agent directly can be opened, you can see what's happening in there and stop it if needed. But ultracode runs agents in an autonomous mode that's inaccessible from outside.
But for a series of same-type tasks it's a great tool. Now you know too.645
<written by a human being>
A few months ago some folks calculated the API-equivalent cost you get with different Claude subscription tiers. Turns out being subscribed is way more profitable than buying tokens as-you-go.
I recently wrote about /status and how far it is from reality. Actually it shows an approximate calculation of exactly this API-equivalent, which looks more realistic already. But the more you look at these calculations, the less you want to pay for API and stay on subscription instead - it's disproportionately more profitable.
Back then I also said it'd be worth comparing the benefit of Claude subscription vs ChatGPT subscription. And recently someone did just that, and the result, honestly, surprised me a lot, because this time ChatGPT took the lead.
If the estimates are to be believed, a $200 Claude subscription gives you the equivalent of $8,000 worth of API, while the same $200 ChatGPT subscription gives $14,000 - that's 1.75x more profitable!
While Claude was flexing its Fable, this question didn't come up, but as soon as ChatGPT released their latest Sol model, it's worth thinking about. Since the models can now actually be compared. By the way, that one-shot fix to the keyboard layout switcher program I talked about recently - that was done by Sol. First try, no fuckups.
Right now I'm on the $200 Claude subscription, but I'm planning to buy the same one on ChatGPT and compare them on my everyday dev tasks. And most importantly, figure out how much more profitable one or the other actually is in terms of token consumption and limits. Results, I'll share of course.645
<written by a human being>
I already have 2 working desktop apps in my collection that I use - an IoT lamp controller and now also an automatic keyboard layout switcher. And I like this thing!
It's very different from web development and the products are completely different, which gives a great reason to break up the routine while staying in the same programming harness.
The next challenge will be a bit harder and this post is my commitment to myself that I'll do it. A control program for Apple's Magic Mouse, that lets you fully use the mouse in a Windows environment.
Right now I'm buying a license for this software, so for now it stays paid for me. But soon the license term expires and that's a great excuse to build my own solution.
The first challenge is exactly that - the software is licensed. Meaning I don't have the option to fork the repo and make the changes I want in it. Will need to do reverse engineering or, if that doesn't work out, build everything from scratch.
The second challenge is the driver. Still a pretty distant topic for me, but insanely interesting. Finally got a reason to dig into it in detail.
I'll say right away, these are just thoughts out loud for now, I haven't started development, so as soon as there are results, I'll share.645
<written by a human being>
The forced system reinstall freed up not just space on the system drive, but also my mind in terms of openness to new possibilities.
Since the system is virgin, I decided not to install the whole pile of programs I had before, but strictly as needed. And inevitably I ran into a little program I've used for ages, but development on it stopped long ago, it's not being maintained, and basically the project's dead. And the last release installs janky and doesn't quite work clean.
Before I would've just accepted the sad fate of a useful utility, but today I've got a mighty AI in my arsenal - time to test the fresh GPT-5.6-Sol.
It's a keyboard layout switcher utility, which for English-speaking countries is of course useless, but everyone who regularly uses different languages knows what a pain in the ass it is - constantly switching languages, typing for a few minutes while staring at the keyboard, only to realize afterward you were typing in the wrong language.
The little switcher utility automates this process and even if a word was typed in the wrong layout, after a space the word gets converted into the correct one (instead of "руддщ" you get "hello").
Turns out the automatic switching itself wasn't working in the latest version, because the word dictionary wasn't loading. I set Sol loose on the repo and in 15 minutes it not only fixed everything but also upgraded the utility, making it fully standalone and cutting it loose from network dependencies, the old repo, updates, and all the other junk.
Everything worked great and now I've got my own fork of this lovely little utility. Next I'll strip out a whole bunch of extra functionality that has nothing to do with the original task and end up with a very tidy, minimalist program that does its one job well.
By the way, the program's written in C# on .NET Framework 4.0, and Codex handled it just fine.645
<written by a human being>
So what happened yesterday during a routine "cleanup" and optimization with the all-knowing flagship Fable?
I ended up reinstalling the system. Good thing all my key work files live on a separate machine, on network drives that are detached from the system drive, so a system reinstall, even a clean one, doesn't really scare me on its own.
But over the last few months I'd been piling up a pretty impressive chunk of chat history with Claude Code and Codex, which includes sets of skills, memory, instructions, plus a decent number of repos where all the actual work happens.
It's just more convenient to work with them off the system drive. And I think I managed to stop the full deletion of the working repos in time. Turns out it wasn't without losses though: most of the memory files, session logs, and skills got wiped for good.
While digging through the ill-fated session (which was strictly logged to a separate file), we figured out that a recursive delete command for "junk folders" got launched, but Fable screwed up the quotes in the bash syntax, which led not to deleting individual folders, but the entire C:\ drive.
Curtains.
Good thing I was at the computer during the process and noticed something was off in time and killed the operation. If I'd stepped away for a glass of water, I'd have come back to a black screen and an empty system drive.
SECOND TIME IN A ROW, A LESSON FOR MYSELF - Don't blindly trust even flagship models, they pull some wild shit! You gotta keep a close eye on them. And yeah, kids, do your backups regularly.645
Oops, I Did It Again
<written by a human being>
After singing Fable’s praises, I ended up making the exact same mistake all over again. I previously wrote about how Codex once wrecked my PC’s system while trying to optimize it. Claude, however, performed the same task on another computer far more carefully and without causing any damage.
So I figured that Fable, being such a super-smart model, would handle a task like this with ease. Oh, how wrong I was...
The first round of cleanup and optimization went perfectly, freeing up 100 gigs of space on the system drive. Then I asked whether it had run the standard Windows utilities used for this purpose. It said it hadn’t and that it would run them now.
Everything seemed harmless enough - it was just the standard DISM tool, which I run myself from time to time. So I went back to working in other repositories. Then, all of a sudden, I noticed that the status bar had disappeared from every Claude Code session.
I sensed that something was wrong, opened the system-cleanup session, and saw that it was still running. Then I checked the drive and discovered that it had miraculously “freed up” 750 GB out of its total 950 GB capacity. In other words, most of the data on the drive had vanished...
I rushed to reboot the machine to force all the processes to stop. When it came back on, I discovered that nearly all my programs and settings had been deleted. Many system functions had stopped working - I couldn’t even take screenshots of the errors!
I think I’ll write more about the experience tomorrow and try to analyze exactly what went wrong. But for today, I’m enjoying a wonderful day off in the company of the Windows installer.645
<written by a human being>
Not much time left to enjoy truly smart AI with Fable. And of course, like the rest of the AI nerd world, I'm squeezing every last bit out of the flagship model while I still can.
Yesterday I hit my limits and had to switch to Opus. And oh, did I regret it... During the Fable release (which was before its export ban) I deliberately didn't test the model, because I knew how hard it'd be to go back down a caste once they took it away.
But after it came back with generous limits under my current subscription, I couldn't resist the temptation, and god, it was beautiful! I've said this before, but the feeling that it's genuinely smarter than you and doesn't ask dumb questions - which Opus does constantly for some reason.
Switching to Opus after Fable feels like a real downgrade. I literally grab my head every session and can't understand why it can't answer its own question and throws it back at me. Purely technical questions that it clearly knows better than I do.
Opus has to be led around by the hand through the whole session, telling it what to do when, stopping it, redirecting it.
A session with Fable is: set the task, accept the final result some time later.
A session with Opus is: work as a nanny and make sure the poor kid doesn't accidentally fall...
In my very first session with Opus, on the same path we'd already covered with Fable, I had to stop and redirect it three times, ask it to reword the report several times, and pry out a coherent explanation of what was actually done, plus a few new bug-fix tasks.
The difference is just colossal. Can't wait for the new Opus model to get even a little closer to Fable. Until then I'll be fondly remembering the good old days with Fable, and making money so I can afford it.645
<written by a human being>
When I kicked off another session with Fable, I saw that right after reading the starting handoff prompt and loading the context, the window was packed to 110K tokens, which is right up against my limit - and that's without any actual work done yet!
And it's not always like that, usually in this project the start eats up around 40-50K tokens and I got used to that as the norm, so a sharp spike more than double that obviously caught my attention.
And it turned out the spike really was a one-off, because of a bulky file that had to be read from the previous session, but through /context I saw the context breakdown and there were 110 skills in there!
Obviously I've never used a lot of them, and some, like the Hyperframes and video-use set of skills, I only use in projects where I'm editing video. So the logical optimization step is moving project-specific skills inside those projects and deleting the ones I don't use.
Sure, everyone knows about the progressive-disclosure system, which means the AI agent doesn't read the whole fat body of the document, only its title and description, which is usually no more than a couple sentences. But that's enough to figure out whether to use the skill in this session or not.
But when the number of skills goes past a hundred, and some of their descriptions are pretty hefty, you can easily rack up thousands of tokens in context that won't even get used once.
So the recommendation is - do regular cleanup not just at home, but in your skills too. And yeah, go check /context on your latest session, what's in there?