I moved my blig from LiveJournal here and to a static GitHub website. This time I mostly used Copilot to create a blog, this is a good opportunity to record current state of technology.

This is not going to be one more article "I vibe-coded something for the first time, wow-wow-wow". And not even "AI is going to replace me, we are doomed".

Of course I use professionally AI tools daily. It's just interesting to record what technology can do today and what it (yet) cannot.

Firstly, I am writing this text with support of AI (TAB-completion), and it really saves time. Compared to before, it guesses quite often, and especially good at correcting grammar. But still it can't guess correctly what I am going to write. It can though finish my jokes - which means they are not that good.

TAB-completion still offers too long and too wrong suggestions, so ignoring it or pressing ESC is a new skill.

Agents are great. I mean, really powerful now. But still not as good as a human.

I asked it to create a static blog with html and css, so that it can be hosted on Github pages. I included in the prompt that I will include it in my ASP.Net website, which will just index and parse html and display pages almost as is, adding comments and external styling. So styles should have distinct names and be reusable.

The results were quite good, though not perfect. Maybe it's because creating a blog is quite a standard task, so AI is trained on a lot of good examples. It created multiple files, well organised, all quite good.

Still, html was slightly overcomplicated. I had to simplify a bit to make it easier to write and reuse in ASP.Net. Honestly, one thing I kept in mind but didn't tell Copilot - for me the main reason to use Github is that I can create content in client from the phone. This really is simpler than creating any editor for a blog, but this meant that html must be extremely simple and css easy to remember and simple to reuse. Therefore I had to simplify css and html a bit myself, but there TAB-completion worked perfectly, it was enough to start and it helped to finalise.

AI is already better than me in creating UI styles. I mean, I always knew I am a terrible UI designer, and my website is still quite ugly, as you can see. I am a bit worried that it it too "standard", lacking "personal touch", but for a blog I consider it acceptable.

AI is extremely good at routine tasks - for example, I for some reason wrote this text as unsigned list (ul), and then just asked to change to paragraphs. And it worked immediately.

For code AI was never hallucinating to much, or at least it was easy to discover. But this time I didn't encounter any hallucinations at all.

The next task was to implement parsing index.html and displaying in my website.

Fist version I got was functionally correct but didn't look well. This is when I discovered that generated css was not entirely good to reuse. There were things bound to "body", that obviously couldn't work. This part was quite easy to improve, but was the first one where I found it's faster to do than guide Copilot.

C# code was "acceptable". I mean it worked, but it was one big method. I prefer things split to small logical methods. So for the start I at least moved logic to parse static site to a separate class.

As a next step I asked copilot to create a new controller and view to show blog post. It worked, but it again added one big method to a controller. I had to refactor it and move to a separate class. Where I refactored again to extract common methods - like paraing a tag.

Quite interestingly, Copilot failed to find existing code to reuse and failed to write methods for repeating functions - like parsing tags. It was just repeating several lines of code finding beginning and ending of the tag. It doesn't even offer to use any library - I imagine there must be some. I would probably avoid using thirdparty library for something that simple, but I would understand an approach.

What I didn't like:

It organises code like a junior. Most of the things go in one method, and some random things separated to extra methods. It tends to solve the task in one big block of code, instead of splitting into smaller logical blocks. This may actually be easier for AI to comprehend, but makes difficult for me as human to follow.

It doesn't follow the existing approaches, just does things it's way all the time. Seems like it fails to analyse the whole codebase.

AI constantly overcomplicates things and I have to remind to make simpler. There will be multiple checks that input data is correct even when this input is strictly generated by the code this AI just wrote. At the same time external input is assumed to be exactly as in the prompt, without checks.

There are lots of obvious comments generated . This looks like a good plan that is then extended to implementation, but I would prefer to remove then redundant comments if the code is self explanatory.

It still fails on complicitated things. Non-standard things require me fixing, or at least it's faster for me to debug than to guide AI fix it.

And speaking of debugging, with all the complications described above it's pretty difficult. I ended up slightly rewriting code first.

In general there are still areas that are easier to do manually. Sometimes asking AI to do these ends up more time consuming than doing it myself, problem is to notice it fast and stop wasting time.

While AI didn't hallucinate, it still tried to "please" me. In one occasion it continued generating (actually valid) css, but not the way I explicitly asked for. Of course, every time it sait that it's exactly what I asked for. I had to ask directly to get answer that what I wanted isn't possible in css. So still, AI finds it impossible to just say the question is wrong, we still need to formulate questions in a way that allows it. In my opinion, this is still the area where humans have huge advantage.

Summary

AI copilot is becoming increasingly more powerful and is now a real help in software development. Yet it is still a tool, greatly amplifying ones strengths as well as weaknesses. Main skill to master now: how to pit the boundaries where to use and trust AI and where to keep control or even do things manually.




Comments

No comments yet.


Remember my name for future