About me

I've been programming on-and-off for a couple of years now. I still consider myself fairly amateur. I hadn't been consistent, except for developing Koli for the past year or so.

I've been experimenting with AI-assisted coding, and still having a fairly constant change of opinion. It looks like I'm not gonna conclude it any time soon, given the new information and technology flowing in faster than ever. So, I decided to ramble a bit on my website that I haven't written anything on for years.

I'd like to start off by saying, I don't believe "software engineering is done". The entrance bar might've gotten higher, and non-engineer coders might be becoming redundant, but I don't think the need for engineers who solve problems has disappeared. The moment that happens, if ever, I suppose we wouldn't be sitting here talking about the software field specifically, but rather the world as we know it would be in a much different state, as I believe problem solving is one of the most crucial and distinctive features of the human race.

AI-assisted coding vs vibe-coding

My beef with AI usage is that the line between "AI-assisted coding" and "vibe-coding" is very, very thin. I believe a lot of people who claim to be doing the former are doing the latter. Either they don't realise, or they are straight away lying to not get criticised. Also, a lot of people who do the former often fall into doing the latter, including myself. It's very hard to tell, because it's a spectrum. The care one gives to the AI output is not consistent; the process has its ups and downs. This is not something exclusive to AI. You can make the same claim for review of human-written code. The difference is speed, which is an important one. What and how we do are not a monolith, and with these tools it's so easy to get caught off guard, get lazy, and just prompt things away, taking a quick look, assuming everything is fine, and thinking you will do any factoring necessary later on.

My first experimentation with AI and falling into the pitfall

When I got back to programming after distancing myself for about 2 years for personal reasons, and started developing Koli last year, being so detached from what was going on in the software field, I was doing things the old-school way. Not because I chose to, but I wasn't even aware of the new tools available. I remember hearing about AI chatbots, but back then, they didn't interest me enough to have a look. I downloaded ChatGPT in 2024.

After a while, I started to ask AI some questions about my project, and coding in general. Being back into programming, and following tech-related people on socials, I became aware of AI coding tools. I hadn't downloaded them initially, but I preferred asking AI for some code snippets, and adapting them to my use case.

Later on, especially when the core of my application had matured to the point where I needed to start developing a front-end, which is a process I don't like, but I have to do to get my app out there, I started pasting in bigger chunks of code.

I eventually downloaded Codex because, at that point, pasting in code rather than letting the AI tool have access to it wasn't a protective measure for my codebase anymore, but just an inconvenience, since I was pasting in too much already. I had one rule for the AI tool: Never ever edit the core package in the monorepo[1]. It was the part that had all the logic independent of the UI or platform-specific code. I just wanted AI to design(?) the UI, set up Electron and connect things together.

I eventually broke the rule. It made me become so lazy that I was just like "Nevermind, just do this little change in core too". And then it triggered a snowball effect.

I always had it in mind to declutter and beautify the codebase later on, but that time had never come.

I had already been planning to rewrite my app in Rust. Some of the reasons were: I like compiled languages more, I was interested in Rust anyways, and I wanted my app to be less bloated, which Electron was definitely not helping with.

I decided to use this change as an opportunity to correct my AI usage, which was basically only to use it like a search engine, asking for code snippets, etc.

Coming full circle

I started to enjoy programming again. However, as I realized later on, contrary to my initial thought that going back to manual coding + adapting code snippets from AI was the reason, taking a break and learning something new turned out to be what was causing the joy. As soon as my Rust rewrite matured to the point where I knew what to do next and there was repetitive stuff to do, I once again installed Codex and let it edit my code.

I don't feel like I'm lacking cognitive effort to the same extent as I did in my previous usage. It's sometimes hard for one to assess what exactly the cause of something is; thus misidentifications occur. I'm still experimenting, learning from it, changing my mind. I don't do much chatting with the LLM, or "think and plan together", except for the occasional questions on conventions, industry standards, followed by requesting sources. After a while, you find yourself arguing with it, becoming happy when you're in agreement, trying to convince it, etc., which is a kind of insanity.

I strive to learn from proper resources, read documentation, practise and take things slowly when a new concept arises. I use AI to generate what I know I would have written if I were to take time and write manually. I even started to care more about front-end concepts, lol. I use this opportunity to try more different implementations, read more on standards, core of things, and diving deeper into concepts.

At the time of publishing this post, this is how I use AI.

Not every new bad thing is caused by AI

You might think "Isn't it very obvious that AI has decreased software quality?" I'd say, in some cases, it helped make the decrease happen faster for those that have already been going downhill. Is this necessarily a bad thing? Shouldn't you switch away from software that is bloated, collects a ton of data, and whose developers/companies don't care about anything but shipping features over features, just to meet a deadline anyways? The core reason is not AI, but rather the priorities that developers and companies follow when using it.

Copying and pasting code you don't understand from Stack Overflow just because it seems to be getting the job done is a bad practice. Now with AI, that's happening on a larger scale.

How is it bad to create a minimalist website, quickly refactor part of a codebase that is already well-organized and documented, or scan for security issues to be reviewed by humans with the use of AI? How can you justify that this is harmful from a software quality perspective?

Yes, I believe the idea that anyone can vibe code any app they want is insane. I mean, they can come up with something, and it might work[2]. In that case, especially if it's for personal use, go for it. Someone who doesn’t know how to protect user data or how to handle migrations, data corruptions, etc., even in an offline app, will hit a hard wall eventually.

Once high-quality LLMs can run on average consumer hardware, hate will decrease tremendously

When people are fiercely against something, they tend to have reasons that are more crucial to them, whose absence would deem other reasons not worthy of discussion. I believe that competing AI models belonging to a handful of corporations are the core reason for the hatred among a lot of people. And other reasons are just the cherry on top, which I sympathize with A LOT. A future where intelligence is a utility, like electricity or water, and people buy from those companies on a meter[3] is quite dystopic, no matter if you think LLMs are just overhyped.

Once this core reason is gone and AI becomes local, thus privacy-respecting, I believe a good amount of people will stop being against it for other reasons, but rather try to solve problems that come with AI, without giving up on it.

B-b-b-but, I use it for translation, I'm not a native speaker!

You've probably come across this as one of the most common and unbelievable defences against the claim that someone's post is AI. I've especially seen it on Reddit a lot.

- This post smells AI.
+ Well, I've used it for translation, I'm not a native speaker!

No, you didn't. Just shut up. You didn't use it only for translation. I'm not a native English speaker either, and have used AI to proof-read what I've written. I've realised that it just changes the content too much. I had to specifically prompt it to point out only the obvious mistakes, and eventually reduced using it.

You know the outcome has nothing to do with what you've originally written in the source language. Hell, I don't even know if I should believe you really intended to do only translation. To me, a lot of those posts just look like their "authors" prompted "I want a post about this, write something good." At that point, you're just making AI write the post about the topic you want. It is irrelevant whether the target language is your native one or not.

What I believe I will never do

Act like any codebase that has touched LLMs is dirty, needs to be gotten rid of, cannot be touched anymore. It's not a religious issue.

It's lunacy. Just like there are people to whom AI is a religion, there are people to whom AI is a heresy. Once you commit it, you're doomed to eternal hell. Even if one day my stance changes to a less pro-AI one again, I don't think I will think like this. It's just a silly purity thing.

If there is one thing everyone can agree on: Never ever use AI for things people believe are words coming out of you.

Don't do it. Integrate it into your workflow, whatever your job might be. I only have been discovering what the implications are for my own field. I don't like it when people who have nothing to do with software engineering tell me what to do. So, I won't tell you what to do. But drawing the line here should be a no-brainer.

Don't have it generate blog posts, social media posts, messages under your name[4]. It's just stupid. Aren’t you ashamed of sharing that stuff when people inherently expect it to be created by you? Then you put on a suit, or maybe have AI photoshop one onto you, to take a fancy profile picture for your LinkedIn to seem authoritative on issues you can't even write about in your own words. smh.

Finally

You might think it's impossible to have AI and not to fall into the "vibe-coder" side of the spectrum, and the only solution is to let go of it completely. You're free to take that path. But I don't think lack of self-control should be a reason to just scream "slop slop slop" to everyone who utilizes it.

AI is here to stay. I hope it becomes more efficient, to the point that current competing models can run on consumer devices, so we are not tied to those corporations. We will adapt, find ways to deal with its downsides, and those who use it properly will benefit from it. There will probably be niche software that does not use or claims not to use AI. I believe they will be a very small minority, as more and more open-source and privacy-respecting projects embrace it, because it makes maintenance easier.


  1. Koli used to be a monorepo of core, desktop, server, and web when it was written in TypeScript/Electron. The current version is in Rust/Slint. ↩︎

  2. I don't wanna pull a J. Peterson here and make it seem like I'm making this harder for the sake of being seen as smart, but what do we mean by "working"? Seriously, though, just seeing it work when using it in the intended way and not testing edge cases doesn't mean it's working reliably, and depending on how critical the app is, it might end up being really bad for the end users. ↩︎

  3. Sam Altman: "We see a future where intelligence is a utility, like electricity or water, and people buy it from us on a meter" at BlackRock's US Infrastructure Summit ↩︎

  4. I suppose some emails can be an exception. After all, I don't think the dentist will care if the sentences regarding rescheduling the appointment are really constructed by the patient. The same applies to an email to the council for appealing an unjustified parking fine. Related AI features in our smartphones might really be handy. Who wouldn't want to do this repetitive work with a single prompt while driving or whatnot? If anything, it's a positive net and a huge time-saver. ↩︎