I’m an experienced programmer, and I’ve worked in many different languages. Sometimes being a programmer is a two-edged sword. You want to accomplish something, and you can do it easily — but it can be a lot of work to do it right. Maybe more work than you want to do.
Normally, I’ll kick out a few lines of script for something I want and be done, accepting that it isn’t production-hardened. This time, however, I decided to try an AI tool to see whether they could do the work I was too lazy to do myself. While I’ve played with chatbots, I wanted to try one of the dedicated coding agents, in this case, Codex. Outside of asking ChatGPT to write a simple function or find the cause of an error message, I haven’t done much coding with AI assistance, so I was interested to see what these agents brought to the table.
A Radio Problem
The problem was simple: I wanted an easy way to put buttons on my Linux desktop that launched Internet radio stations. Sure, I could open a player and paste in a long URL, but I’m far too lazy to remember all those URLs.
I searched for a way to make Shortwave — an Internet radio player — open a URL from the command line. Apparently, you can’t. Google Gemini suggested writing a script that launches cvlc, the command-line VLC player, with the URL as an argument.
That’s easy, so I did it. Of course, then I had to find the stream URLs for all my favorite stations. It turns out that Radio Browser maintains an extensive database of stations. I considered scraping the site or using its API, but honestly, the little script was becoming too much of a project.
Besides, I was already struggling to manage the media player’s lifetime. I didn’t want a new station playing on top of one that was already running, and I wanted a command to stop playback, so the script had already grown larger than I first imagined.
My first version used a temporary file containing the player’s process ID so a future script execution could kill the old player. That usually works, but it isn’t very robust, and I knew it. But how much work did I really want to do here? I decided I had done enough and turned the rest over to Codex, OpenAI’s coding assistant.
What Can Codex Do?
Codex is more than a chatbot that produces code snippets. With access to a project, and limited access to your machine, it can inspect existing files, edit them, run commands and tests, examine Git history, and manage commits and remotes. OpenAI describes Codex workflows as including coding, testing, analysis, code review, and repository automation.
The important distinction is that Codex works on the actual project. Instead of copying code out of a chat window, I could say, “Have a look at this shell script,” and it examined the script in place. It also noticed that I already had an uncommitted modification and avoided overwriting it. It also understands version control, and that turns out to be one of its really nice features.
Fixing Problems
My first request was:
Have a look at this shell script. I know it needs a trap. Is there a better way to keep it from accidentally killing something with a stale playradio.tmp?
Codex pointed out that a trap was not the only solution. The launcher exits immediately after starting VLC, so it is not around later to receive SIGCLD or clean up after the player. Sure, it could run something to wait around, but there was a cleaner way to get the job done.
It initially suggested verifying that the saved PID still belonged to cvlc. Then it caught a subtler problem in its own proposal: if Linux reused the PID for a different cvlc process, the name check could still kill the wrong player. This is probably very rare, but when it does happen, it will be a mysterious, hard-to-reproduce bug.
The final solution records both the PID and Linux’s process start-time token:
printf '%s %s\n' "$pid" "$start_time" > "$pidfile"

Before sending a signal, the script confirms that both still match. It also uses a private per-user runtime directory, serializes concurrent start and stop operations with flock, sends SIGTERM first, waits for a graceful shutdown, and rechecks the process identity before falling back to SIGKILL. That is considerably more thought than I wanted to put into a desktop radio button. Overkill? Maybe, but it is robust.
Another pleasant surprise was that Codex built a suite of tests to ensure that everything worked as it should. It runs these tests when it makes changes. So it doesn’t just create code. It creates code, executes it with test cases, and fixes any issues it discovers.
Searching the Database — and More
Once the process handling was safe, I asked:
Radio Browser allows you to search via API for radio stations. How hard would it be to make $1 a search string and take the best match, while allowing -u for a URL instead?
Codex checked the current API documentation, found that curl and jq were already installed, and implemented the search. It hides broken stations, orders matches by votes, selects the top result, and reports the selection back to Radio Browser’s click counter. I told it I wanted specific command-line options over several iterations. The program can play a URL, search the database for a station, or even just query the database. It can also give you a list and let you pick. (See the README.md for the entire interface.)

I did make a few requests. For example, if you pass a URI, the program should figure it out and skip the database search. I also wanted the player to be configurable through a PLAYRADIO_PLAYER environment variable. I asked it to fall back on wget if curl wasn’t installed. Missing dependencies should produce useful installation advice rather than mysterious failures. I also asked it to produce a GitHub-style README and a traditional Unix man page.
Human Guidance Still Matters
There were a few places where human intervention improved the result. For example, the PLAYRADIO_PLAYER configuration and its explanatory comment originally appeared near the bottom of the script. That works, but it is inconvenient for someone who wanted to edit the file. I asked Codex to move it near the top.
Another example was the first version of --pick. I had specifically suggested Bash’s select command, so Codex printed the formatted list and then let select print a second numbered list. It worked, but the duplication was distracting and, as far as Codex was concerned, it was what I asked for.
I pointed the duplication out. Codex replaced select with a simple numeric read, keeping the detailed table and adding only one extra row:
1 Jazz One 2 Jazz Two 3 Cancel Station number:
This is a good example of how I think these tools work best. The AI handles the implementation, edge cases, tests, and documentation, while the human provides design input and flags anything awkward or that doesn’t fit the intended experience.
Does It Scale?
I’m not an expert at using these kinds of tools, but I think this worked very well. I generally asked for what I wanted and then made technical observations about the results.
I also tried this with a script, originally from [Petar Marinov], that I’ve used and modified for years to replace the cd command (see GitHub). I didn’t tell it what to do. I just let it look at the code. It correctly determined what it was supposed to do and made solid suggestions for making it more robust. It suggested features and even a major improvement to make it work not just with cd but with anything that changes pwd, like pushd. Of course, I couldn’t resist getting a man page and a README for free.
One feature I asked the tool to create was a simple bookmark system. It proposed and created a way to create and maintain a bash associative array that it persisted in a configuration file. That worked, but I knew it would be better, on many levels, to keep the bookmarks as proper symlinks. When I pointed this out, the AI did get it, saying:
That has several nice consequences:
- changes from cdmark are instantly visible in every shell; no reload or synchronization issue
- ls -l ~/.config/cdfunc/bookmarks is already a crude cdmark list
- bookmarks can be created or removed manually with ordinary Unix tools
- Syncthing/git/backup tools handle them naturally
- no parsing, quoting, escaping, or rewriting a bookmarks file
- no associative-array initialization at shell startup
- broken bookmarks are naturally represented as broken symlinks
I think that’s substantially cleaner.
It also noted that this makes shell completion very simple, which I had not thought about. However, its implementation broke normal shell completion for the commands. It fixed that after I pointed it out. Well, actually, it took two tries to work out all the bugs. This is another case where human guidance is critical.
For a more advanced project, I forked a simple editor, kilo, and added a few Emacs commands. I asked Codex to review it. It found a number of bad edge cases, some in the original code, and fixed them. I then asked it to suggest Emacs-like features it could easily do. We added a ton! (see GitHub). It was impressive how well it analyzed and understood the code. I had done similar modifications to the code a few weeks earlier and, I have to admit, Codex understood the original code base much faster than I had.
Again, though, human guidance is necessary. Emacs uses an Esc prefix for some commands. You can also hold down the Alt key to get the same result. So pressing Alt+W in a terminal sends an Esc character and a W.
Initially, Codex wrote code to detect an Esc, wait a short time for a command, and then, if nothing came, treat it as a bare escape. It even understood that this would be a problem and mentioned it. Alt+W would work, but there was no way for a human to press Esc and then W in the time allotted. I prompted:
Yes I see that in the program. Would it be possible to have it wait indefinitely for ESC UNLESS a caller set some flag. So when other parts of the editor (search/save/etc.) are prompting for input they would set that flag (or call a separate entry point) and, at that point, ESC=>ESC. Any other time ESC is treated as a prefix (and perhaps ESC ESC gets sent as an escape just as a — ahem — escape hatch.
That fixed the problem. It is hard to remember that while Codex seems smart, it doesn’t have human judgment or human-level problem-solving skills. You have to supply that. Sure, it found problems in its own code. It found problems in my code. It devised solutions. But you still have to make sure those solutions make sense and sometimes nudge it — at least — in the right direction.
If you are interested, each of the GitHub repos (playradio, cdfunc, and kilo) has a session directory that contains transcripts of the AI chats that produced the final versions of the code. Admittedly, none of these started from a totally blank slate, but working on an existing code base is certainly a realistic test.
The Git Assistant
One feature I particularly liked was Codex’s ability to manage Git. I didn’t even try the GitHub plugin for Codex, which would probably be even better. I asked it to commit the current version before starting a new feature, which gave me a clean checkpoint. Later I said:
Commit please. I’m going to add a remote GitHub repo. Can you set this as origin and push it after the commit?
Codex committed the changes, added the remote, pushed the branch, configured upstream tracking, and verified that the working tree was clean. The entire evolution is visible in the repository’s history — from process-safety changes, to Radio Browser search, to configuration and documentation, to the interactive station picker.
You can see the final project and follow each commit in the repositories along with transcripts of the AI sessions. Having things in version control is especially useful with a tool like Codex. You can easily see what has changed and roll back if you like.
Wrap Up
The original script solved my immediate problem in a handful of lines. The finished utility solves the same problem safely, handles failures, searches a public database, supports different players, has good documentation, and leaves a traceable Git history. One important note. Codex and other agents have a limited context window, so you won’t get the same results trying to work with extremely large code bases unless you pay for a larger model. But for these tasks, normal consumer Codex worked well.
Could I have written all of that myself? Certainly. Would I have bothered to go this far? Probably not for what is basically a one-off desktop hack.
That may be the most useful role for a coding agent: They don’t always enable you to do something you couldn’t otherwise do. But they make it cheap enough in time and attention span to do all the boring and defensive coding and testing that you know you should do, but so often don’t. Codex didn’t replace me. It just augmented my patience.

The entire premise here is incredibly simple, chatbot not really needed. Basically 20min of python.
That said I do agree there is utility in AI, just make sure you understand what it is doing and the potential pitfalls.
Two of the less discussed pitfalls:
All your code is sent to the AI company. The terms and conditions are undecipherable, and based on past behavior, I wouldn’t trust them to follow them anyway.
The price will increase. Current estimates are that it costs 1-100 USD per hour to run these agent services, and they are just sold or given away at massive loss.
Nice when it’s free, but beware of becoming too reliant on it.
You are right that there may be price increases to come, but I think the utility far outweighs the price now. The limiting factor in price right now are the number of remaining providers and the fact that local AI seems to work just as good. I do not mind investing say 5k for a ‘junior 10x programmer in a box’.
Or the other thing happens, and the cheaper, faster, better models come along and similar performance becomes absurdly affordable and less energy intensive.
DeepSeek did that to the last generation of models, so this isn’t far-fetched.
“I do not mind investing say 5k for a ‘junior 10x programmer in a box’.”
Yikes !
I assume we are NOT talking Yen here.
AI tokens are not really not in a hobbyist budget, IMO.
I have successfully used Grok and Gemini, but only the FREE stuff, mostly for fun but I am occasionally amused when the AI offers to refactor some trivial code segments.
As far as Internet music on Linux, I still prefer the old mpd and mpc.
You need to shop around. Codex is pretty cheap already. Just a bit more than Netflix.
Use an API key instead of a monthly membership and it’s eminently affordable. I am still on the initial $10 credit i loaded my account with 3 months ago, using Codex for random embedded code reviews and fixes, throwing a few thousand lines of raw data or logs and telling it what i want extracted or sorted etc. I am not trying too hard to use it sparingly, but not just throwing everything at it. I know I won’t overspend because when the credit runs out it just errors and you can see usage on the dashboard in real time.
It’s prepay access basically.
This is why open models are so important. Being able to download and run a model entirely on your hardware keeps your information local and you don’t lose any money that you would playing a video game for the same period.
Twenty minutes? Ha! I’d do it in ten! Look what efficient programmers we are when we only have to do the estimation part!
Albert (because “AI” reads just like “Al”) probably also could have done a lot of it in ten, but he just couldn’t be bothered, so he used it as an excuse to kick the tires.
Honestly, I think that kind of starting-off-with-something-simple is the right way anyway. It’s like blinking the LED.
Aibert. A new Dilbert character?
Just for clarity, was this article written by the human AL Williams or the LLM Hackerday writer Ai Williams? (I dont mind either way BTW)
Just in case that’s not a joke: We don’t use any LLM in any of our writing / images / or anything. Not just human in the loop, the entire loop is humans.
Well these were deliberately simple (and there were three projects of varying complexity). However, my point is that I attempted more than I would have with my “20 minutes” of whatever because I wouldn’t have figured out a search API, etc. etc.
You wrote this, it’s the punchline: “They don’t always enable you to do something you couldn’t otherwise do. But they make it cheap enough in time and attention span to do all the boring and defensive coding and testing that you know you should do, but so often don’t.”
Claude (specifically Claude Desktop) does this, for me – it handles, quite solidly with certain methods and approaches, all of the tedious and boring bits – and often enhances with polish I would have skipped for time.
The acceleration in productivity can be astounding, it’s all down to the guy in the chair. I am often amazed at how, in a larger ground-up effort documented for and by Claude as he goes, Claude ends up capable of massive sweeping error-free re-architecting to support whatever whim I have as I go, ideas that expand the features, functions and capabilities, of an app.
The ideas are mine. Claude simply translates my ideas into code – my ideas about how to architect, how to structure the app to support greater levels of complexity and capability from the bottom, up.
Claude can ALSO do refactoring in large ways, to actually further simplify a code base. I am doing a migration of a huge pre-Claude app, and the code base is shrinking, while the features and capabilities expand. Ideas I never had time for due to tediousnes of manual coding, back in play. It is so fast that it lets me do what I only wished I had time to do by hand.
One comment – closing the loop, providing a way for the LLM to generate, test, and consumers the results in an automated way, is a huge leap for improving the result.
I personally can’t see how using an AI agent is beneficial to anybody. Besides the massive loss of jobs and destruction of the middle class to this stuff, where’s the fun in typing endless prompts and waiting for answers? Requires 0 creativity and destroys the learning process.
Written like a true boomer, who never tried AI coding assistance. Try it sometime. The prompt is the fun, the creativity and the learning process. This is where the great jobs are. Regardless of what you think, AI is the future and the clock can’t be turned back to the 80’s. Adapt or die…
There’s currently two types of people: people who whine about AI and people who have to actually build stuff for a living
I agree. I spend so much time tracking, validating, and correcting factual errors in documentation and code written by AI that I just don’t have enough time to write my own anymore.
Ha I can relate to that. It’s a living.. for now
And all this fluff how much energy and water stealed from us all? (not to mention exploited labour and the rest)
I tend to agree with these arguments, but lately I’ve read that countries are curtailing solar power. China recently prevented the use of enough energy to power the country of Mexico for 1 year over the course of 6 months. Water needs to be addressed and so do emissions. Personally I don’t drive, I walk and bicycle, so I can’t speak for everyone, but I probably am responsible for fewer emissions while using AI than people who drive everyday in an ICE vehicle. These are real issues, but if that’s your only thing against AI, you’re probably not looking at the big picture.
I want to clarify my statement about China. The truth is more interesting than my hasty and poorly worded summary. They prevented solar energy from entering their grid due to insufficient grid capacity. At the same time they kept coal burning plants running due to contractual obligations. The same thing happened in other parts of the world. Here is the article via reuters:
https://www.reuters.com/business/energy/china-leads-wave-clean-power-wastage-grids-globally-hit-limits-2026-08-17/
“Insufficient grid capacity” means not enough demand – nobody needs the power at the moment it comes. People’s lives and energy use does not line up with the amounts and availability of the solar power.
The “contractual obligation” means keeping the lights on, meaning that the coal power plants must be up and operating to ensure continuous supply of energy regardless of what the solar power does. Here in the west we use natural gas turbines for the same job, and try to sell the system as green by pretending they don’t exist.
The article makes it out to be the fault of the coal plants and their contracts, but it’s really the fault of solar power for failing to meet supply with demand when the demand happens, and supplying energy when there isn’t demand. This is not a China problem either, this is a fundamental VRE problem that anyone who builds enough will face.
Excess solar power cannot be used to power data centers, because it’s not dispatchable power: you can’t decide when and how much to have. In order to capture it for use, you must invest even more money into very large batteries, which further increases the cost of power and makes running data centers on it economically unviable.
Grid scale storage is a thing. Look at South Australia as an example.
https://en.wikipedia.org/wiki/Hornsdale_Power_Reserve
Forgive me if I don’t take your “definitions” and conclusions at face value. Demand is indeed an issue at times. Some places give power away during the day because of the excess power created by solar. That must be horrible for everyone in the area.
Perhaps instead of installing illegal gas powered generators, data centers could install Power Walls and then use the super cheap excess solar for use at night or on cloudy days. When they have more than they need, they sell it just as South Australia is doing. From the above link:
“During two days in January 2018 when the wholesale spot price for electricity in South Australia rose due to hot weather, the battery made its owners an estimated A$1,000,000 (US$800,000) as they sold power from the battery to the grid for a price of around A$14,000/MWh.[37] Based on the first six months of operation, the reserve is estimated to earn about A$18 million per year.[38]”
There’s more than one way to get things done. How we’re currently doing it is outdated and wasteful.
Grid scale storage is a small and expensive thing. 194 MWh is a gnat’s fart in a grid that consumes gigawatts all the time. It only participates in the top margin sales for load adjustment where the unit prices are much higher than the average wholesale price.
On rough estimate, if the Hornsdale reserve is buying wholesale electricity at $50 AUD, it has to sell it for at least $200 per MWh to break even for cost, so it’s basically quadrupling the cost of the electricity to put it through the battery.
I’m not talking about illegal gas generators, I’m talking about the fact that the power grid is already running these things all over the place to pick up the slack from solar and wind, and ends up generating the vast majority of electricity this way.
https://bioenergyinternational.com/wartsila-engines-chosen-for-us-power-plant-project/
Technically that’s a huge 429 MW diesel engine designed to run on natural gas, which is more efficient than a straight through turbine, but same difference anyways: the renewable energy system is absolutely reliant on fossil fuels and without a gargantuan and extremely rapid growth in battery installations, not to mention massive reductions in cost, it’s going to stay that way for the next 50-100 years.
That would make the datacenters publicly subsidized for electricity for the basic point of it, because the cost of all the electricity is basically paid up-front in the investment and collected back from all the other customers.
Of course it’s a good idea that you’re not throwing the energy away by not using it, but simply giving it to private business is not exactly a fair deal.
That’s not a good thing: it describes a system that is operating at the brink of failure, and a private company that can extract ridiculous profits out of the situation.
Normal wholesale grid prices range from $40-70/MWh and during severe shortfalls it can reach up to $2000-5000 at the margin. Utilities buy most of their electricity in long term contracts, but when there’s a shortfall they have to bid on the spot market to buy what’s missing at whatever price the most expensive generators demand.
The addition of VREs has caused these ridiculous swings in marginal prices to become more severe and more frequent, and that’s driving up the average cost of electricity. The utilities are responding by passing the cost to their customers in forcing hourly rate contracts and time-of-use charges that swing up and down according to the spot market price.
The tragedy of the situation is that the governments and politicians have painted us in a corner: VRE is not compatible with large centralized power generation like nuclear due to the rapid load following demands. We can’t go back to burning coal, we have to phase out gas, and batteries are not meeting their promises.
Either the governments start to backpedal on the climate goals and electrification plans, or we’ll begin rationing electricity within the next 10-20 years. The data centers are just the cherry on top, the entire system of affordable electricity on demand is poised to fail.
Yeah that was an obvious campaign by some moneyed interest
“Sometimes being a programmer is a two-edged sword. You want to accomplish something, and you can do it easily — but it can be a lot of work to do it right. Maybe more work than you want to do.”
Wondering how many have their own personal library of vetted code for moments like this. Seems programming is either throw something together, or go out into the wild and dig up something.
ITT Linux people reinventing what Windows users had since mid 1990s.
Nah. Just somebody looking for an excuse to try out AI.
I’ve had links on my Linux desktop since forever for favorite internet radio stations. Click, music. No programming needed, no need to memorize long, ugly URLs.
There is a bit more to it than that. My actual goal was to have links on a KDE panel and way to stop playback when another started plus have a single stop button. Otherwise I have to find the player. Stop it. Then go back and start the other one. Not a huge problem of course, but enough friction that I wanted something better. What I really wanted was a proper player that would just let me kick off a station from the command line. But there you are. Plus the other two projects. In each case, they were projects I had started, but used Codex to polish them, document them, find bad corner cases (and fix them), and add features I would not have bothered if I had to do the work myself.
I have a list of radio stations in my foobar2000. A single double click and I can switch from local news to Irish music, North Korean music or even “radio quran” from Saudi Arabia. It’s as simple as it can be. Even a person with severe mental disability would be able to do it.
Face it dude, you overengineered something that just works in an OS designed for regular humans; not CompSci PhDs stuck in the 1970s who consider PDP-11 to be the very peak of computing.
I’m not a compsci PhD, wasn’t even born in the 70s, never used a pdp-11. Yet I run exclusively Linux instead of the spyware/money extraction scheme you call an OS designed for regular humans (either one). If that’s what it is to be a “regular human,'” I’m glad I’m not. I’d hate to be the human equivalent of cattle.
Had a similar experiment with AI coding myself recently. Started with a simple need – to get IPV6 SLAAC working on Wireguard – which I initially thought was an issue of configuration, didn’t expect to be impossible. Talking my options through with Gemini, and lots of dead ends from people suggesting stuff that clearly didn’t work, which it found online, I concluded it was going to need some code.
So I let it have a go. Used both gemini and gpt 5 mini, in visual studio code (these can also handle the project and git, not just snippets of code). Came up with a solution, that worked, but was a bit flakey. Clearly not as neat as it could be, but avoided modifying the wireguard kernel module. But it left me hankering to let it loose again and do it properly. So I had a second go at it, this time with modification to wireguard. The second attempt, guided by what I had learned from the first, and still with a fair bit of hand holding, was superb (that’s my own assessment, obviously I haven’t sent the AI code upstream for a more qualified opinion – I’m sure that would not be appreciated).
This stands in stark contrast to my attempts to use multiple models in visual studio code to make a simple web application, that couldn’t even manage to handle the basics like user authentication!
If you’re interested I documented my attempts. Maybe HaD worthy in itself as a software hack/ ai experiment https://richard.burtons.org/2026/05/20/wireguard-modified-to-support-ipv6-slaac/
Awesome work! I’ll definitely give it a read.
Nice. Yeah, it’s certainly an iterative process that requires some talent to do correctly. Just saves a ton of typing
Codex is impressive. I’m using it daily.
I’m using a simple plan/validate plan/go for implementation workflow.
It’s coding better than I would do (I’ve been a developer for…decades, and I do have mixed feelings about delegating the implementation to an AI).
I would not have been able to develop my today’s K6-based agent tracing load testing tool, in merely a couple of hours (this was nos a trivial task).
This is a double-edged sword. I try to stay on the safe (for my brain) side.
Agreed about the mixed feelings. I have 30+ years of programming experience. That said… It’s not just a better programmer than I am. It’s a better programmer than anyone I’ve ever met. I work at a research lab with a bunch of PhD’s, many in computer science/graphics.
Is it good for highly detailed nuanced work? Not always… But it’ll handle uninteresting to moderately interesting features, and come back with tests, in less time than it takes me to grab a snack.
Oh… And it’s pretty darn good at naming things. I haven’t tested cache invalidation.
I don’t know if it is the best programmer I’ve ever met. But I do think it is the most patient. If you look at the transcripts, you’ll see where it made choices that were suboptimal in many cases. Workable choices, but suboptimal. Luckily it doesn’t get offended if you don’t like its design. At least, not yet.
I agree. I’m definitely not the best programmer, but I can get stuff done. Codex is WAY better than I am, and so much faster. I have to go out and “learn” a new language enough to synthesize it, and then all the libraries and their APIs. Codex already knows all that. With AI, I only have to direct the logic and system flow. The details are up to me.
Trust begins where understanding ends. Congrats on keeping yourself in the loop and even learning from the process. No question these tools have some utility, but most of the world won’t be as circumspect as you in their use. The tools will be deployed to narrowly defined goals, the wielder will be none the wiser at the end because that’s not in their goal, and unintended consequences of all types will be tolerated because they’re externalized costs in the capitalist world these things will be deployed most aggressively. I don’t dispute the utility, but it doesn’t change the fact that the world is right and truly screwed in multiple ways when these things start running everything…as they will because a certain class of us will find that state of affairs profitable. And then we arrive at what EM Forster foresaw over 100 years ago:
https://en.wikipedia.org/wiki/The_Machine_Stops
This is nothing new, though. Calculators did this. If you were working a problem by hand or with a slip stick and you got a wild answer because of a mistake you were instantly suspicious. Now if you fat finger a calculator button most people will confidently read out the calculator display and defend it to the death. Machines don’t make people smarter. They make smart people more efficient.
Can’t argue with that and I won’t harp on…much. I saw my Vic-20 as both canvas and tool that extended my capabilities and, yes, when I was older (and on more capable machines) made me more efficient. I mastered the tech, circuit board to cloud. I would just encourage people to think deeply about which “smart people” are going to become more “efficient” and at exactly what. It’s still early days in the Jackpot, and things already aren’t encouraging.
Well, yeah, some people used calculators/computers to great ends. Some people used TV to create important educational/cultural content. Some people use the Internet for amazing things. Then there are cat videos. I’d say for every Vic20 that launched people into a computer career there were 100 that played some frogger games and went in the closet.
What worries me is that clearly I got a fair result because I could look at the code critically and make meaningful requests. But if you never do your own coding, you won’t have that judgement and experience. Then again, that’s how they teach calculus. They don’t tell you how easy it is to a derivative until you learn the hard way to do it. Maybe that’s a thing.
People who suffer want others to suffer.
…”whether they could do the work I was too lazy to do myself”… ‘Nuff said.
Indeed.
Nepal is not pleased with our carbon emissions and wants reparations, and weve got new github repos full of vibe coded projects.
You might want to calculate just how many servers are involved with posting your comment.
Curtailing solar while coal burns is a fact of life today. Let’s fix that before trying to prevent real advancements in tech.
Who the hell cares about Nepal
I do. I care about everyone on some level.
What? A nuanced and balanced article about AI coding on Hackaday, beyond “AI coding sucks?”
Welcome aboard. Glad you’re here.
+1 …. I really thought Hackaday was going down the pan for a while. Glad to see they’re now on board with the new tech. How about an article about the Cyber Security implications of the Hugging Face incident?
What a wild story, right? I don’t know that anyone understands the implications. Certainly not the people at OpenAI, who let the agents collaborate, hallucinate a target that they had to attack, and then actually carry it out.
But I still think that there’s a bunch of shirking-of-responsibility by the humans in control. An LLM agent would kill your grandmother if it needed the money to buy you a hamburger, and I think it’s on the people who are running the machine to make sure that it is not able to do so.
Yep, a wild story indeed. I was thinking more on the geo-politcal level eg a state/country wanting to do harm to another state. A possible scenario would be Pn attacking Ukraine with a massive swarm of attack agents with the high probability of the attack spreading to the rest of Europe and beyond. Not that Pn would really care about that. Plausible deniability.
I think it’s safe and important to point out that Hackaday writers are all opinionated individual adults allowed to express themselves as they see fit. They don’t all agree on this.
There’s a lot more you can do. I make a lot of single page apps, and flask apps. This week I made
a flask app to manage my firewall rules for my openwrt based iot reverse engineering sandbox. It lists devices from dhcp, has a couple curated (by me) mappings of firewall rulesets to groups, lets me quickly move devices to groups, streams syslog to redis for dashboarding, and lets me progressively allow list outbound traffic, DNS requests in a default deny pihole group.
And 2. A digital conspiracy board/knowledge-graph pipeline for regulatory capture. Applies osint techniques for The Power Elite (C. wright Mills) yype analysis for finding modern oligarchs of the world: scrapes wiki data, parses it onto the FollowTheMoney schema (same one Aleph/OCCRP use), joins the two datasets on Wikidata QIDs, and stores relationships like board seats and job tenures, with citations. An export step turns that into dated edges in Neo4j for querying and visualization. Bootstrapping about 830k entities takes ~10 seconds with a streaming importer that stays flat around 100MB regardless of dataset size, and there’s even tests. Took like 15 minutes of me planning the overall shape, plus prior art investigation on the side, and then i just let it cook for ten minutes while I walked the dog, and I had a passable prototype of a bespoke viz tool by the time I came back.
A face detection/recognition android app, so you can see how likely you are to be blamed by flock for a crime you didn’t commit, before you leave the house. Used Labelled Faces in the Wild, plus a model zoo with Yolo, SCRFD, facenet, arcface, etc.
Wow I look paranoid (appropriately so, for a hacker, I hope).
Lol, Nice work, and I think it’s a relatively appropriate level of paranoia for a hacker. Personally I don’t think this level of paranoia is intrinsic, I believe it is a learned response based on observations on the societies we live in. You’re probably fine as long as you keep everything based on falsifiable claims. ;)
Excellent article, AL. Lately I’ve been using codex to solve my problems building FreeCAD in LTS Linux distros that stake claim to my python dependency user site. I started with the intention of fixing FreeCAD code, but when the scope of all their python workarounds came into focus, I realized the smaller target was fixing python dependency contamination, or dependency hell.
+450 / -2 lines later I have a prototype of cpython that keeps historical versions in a user location organized by version number. When you import a library, first it checks the usual user site, then if it doesn’t find the right version, it checks the historical user site, and if it doesn’t find the right version, it uses my prototype pip to download the needed version to the historical user site.
Zero changes to the python language. 100% backwards compatible. So far, no errors. If anyone wants to try it check my GitHub profile. I only have 3 repositories: FreeCAD with the new python standard dep list, and prototype cpython and pip.
Even if no one merges my forks, MY dependency problems are gone.
https://github.com/justtryingtogetsomeworkdone
So there has been some discussions about the environmental affects, and I am actually not that so sure about that either – All it takes to run something like a Qwen 3.8 27b is a single GPU.
Sure, the top-notch “frontier models” (or so they call) are going to require a lot of resources, but you don’t actually have to use one, lighter options are out there (such as DeepSeek Flash), and are usable enough.
I do use agentic AI whenever the problem that I am trying to solve is rather obvious but tedious, I just let it do it for me then I review the diff myself. So I am essentially turning myself into the maintainer role – that is how agentic coding is meant to work.
“Commit please. I’m going to add a remote GitHub repo. Can you set this as origin and push it after the commit?”
Some thought…
Do you loose something when the agent writes the notes? Is it a chore or is it your commit to your own brain, reinforcement.
Could the agent write a script to commit and push to github? Then future commits might not use tokens. I thought of that when I noticed that Claude usage examples where heavily geared toward redundant token use, generating the same 3 lines of script repeatedly.
Could have just used a 555?
In my experience with remote desktop for automation, the key is choosing tools that integrate well with your existing stack. Compatibility often matters more than features.