Vibe Coding…
Remember when coding felt like an exclusive club where everyone spoke in brackets, semicolons and obscure acronyms? “Vibe coding” blows that door off its hinges. You don’t need a computer science degree, a hoodie, or the patience of a saint – just a vague idea of what you want to build and the ability to think logically. With vibe coding, plain language becomes your programming language. You describe what you want in normal words, the system translates that into code, and suddenly you’re creating apps, automations, and tools you never thought possible. It’s like going from deciphering hieroglyphics to ordering a pizza. The power to build is no longer locked away; it’s sitting there waiting for you if you’ve got an idea and a plan.
Now that we all have this amazing power at our fingertips, and we’re all marvelling at how clever we are, it’s worth taking a few minutes to think about three things at least:
- compare your creations with the polished software you’ve been using for decades
- spare a thought for the developers who created all this without the help of AI at all
- spare a thought for the developers who created the tools you’re using with AI to build your creations
I for one, even though I have always held developers in high regard for their skills, have a whole new appreciation for what they are capable of doing and how much deep knowledge of the environments they work in they must have accumulated to be able to do the things they do. Since I started writing this blog in 2012 I’ve dabbled in lots of things, and learned the basic skills of many technical topics such as regular expressions, XML, XPath, XSLT, AutoHotkey, even PowerShell at a very basic level; I’ve learned to understand the structure of many file types; all things that I consider are essential skills for anyone working with the sort of tools we use today in the localization industry. But I have never really got to grips with modern programming techniques.
Programming today is less about memorising obscure commands and more about thinking in building blocks. In the old days of BASIC you wrote one long list of instructions from top to bottom. Modern programming – especially object-oriented programming (OOP) – is more like arranging Lego… which is something a well known developer in the AppStore Team told me once, “it’s like Lego for adults”! You create self-contained “objects” (little blocks of data and behaviour) and then make them talk to each other. Instead of telling the computer every tiny step, you define how each block behaves and then reuse those blocks wherever you need them. This makes code more modular, easier to maintain, and far closer to how humans already think about systems. If BASIC was like writing a recipe line by line, OOP is like running a kitchen where each chef (object) knows its own job and you just tell them when to start and stop. That’s the mindset modern tools, frameworks and “vibe coding” systems are built on. More importantly, this is what you need to know and how you need to learn to think to be able to successfully “vibe code” yourself.
Why would I want to “vibe code”?
If you are not doing this already, then here are a few examples of things you could be doing in this whole new world that has opened up to everyone… and I’m basing this on just a few things I’ve been using if for myself in the last couple of years:
- create a regular expression to extract translatable text from a particularly complex text file you received for translation.
- create XPath expressions to build parser rules when you need a custom XML file type to handle complex XML files for translation.
- create a stylesheet to use in Trados Studio to help preview an XML you were given when you need additional context from the file but don’t want to pollute the editor with material that doesn’t need translating.
- create a PowerShell script to interact with Trados Studio APIs so you can import a translation memory without having to upgrade it (upgrade meaning extract all the fragments and bloat the TM when you don’t need them!)
- build a Trados Studio plugin to tackle a problem you’ve always known would help you but isn’t part of the product.
- build a Trados Enterprise addon to tackle a problem you know could be improved.
- write Python applications to prepare files for translation in a more sensible way, and then post-process the target files so they can be delivered as your client expects.
- build a SQL script to interrogate an SDLTM for maintenance in ways that would be impossible out of the box.
- create scripts for tools like Tampermonkey that can help analyse poorly delivered website content (I’ve created many for things like summarising my annual leave in a way that makes sense at a glance; analysing how a website is put together by providing me with data from wherever I point on the screen; capturing particular parts of a website to use elsewhere (very useful for things like grabbing API data to train an LLM with for example)).
- build an Android App to do something you can’t find on Google Play, but it would make your wife’s life (and yours!) a lot easier.
- build a browser extension to do something useful like help blind users with accessibility issues in a particular product.
- build your own image viewer because the W11 upgrade removed the last useful one and now you have one that just does what you need!
- build a TypeScript microservice deployed on MS Azure App Service that integrates with various other services to automate your work.
- create a PDF report from Trados Studio to summarise the results from using AI Essentials in a meaningful way.
- build your own version of AI Essentials that goes further and is more granular by integrating an LLM of your own to analyse your Trados Studio files.
- customise a WordPress site with your own css
- build your own website from scratch and don’t rely on 3rd party tools
- etc…
The list does go on because this is a whole new world where you are no longer restricted to only using the software you have access to… you can solve your problems yourself, and build the solutions you’ve always wanted. I have shared some of the things I’ve worked on here if you’re interested… I like to open-source them in case anyone can use them, or improve them and then we all benefit!
I still see skeptical comments and clickbait videos from people in denial about AI’s potential. Yes, AI can hallucinate, provide incorrect solutions, and even seem to lie – ironically making it more human-like than we’d care to admit! But here’s the thing: what we have access to right now is simply a tool. Like any tool, its value depends entirely on how skillfully you use it. The real opportunity lies in learning to wield it effectively in your work and digital life – and in the context of this article, mastering the art of “vibe coding.”
The basics…
There are some useful articles around if you google them, and a good place to start is this one from Google – What is vibe coding? In particular this section on the code-level workflow where they talk about a “tight, conversational loop you use to create and perfect a specific piece of code”:
- Describe the goal: You start with a high-level prompt in plain language. For example: “Create a Python function that reads a CSV file.”
- AI generates code: The AI assistant interprets your request and produces the initial code.
- Execute and observe: You run the generated code to see if it works as intended.
- Provide feedback and refine: If the output isn’t quite right or an error occurs, you provide new instructions, like, “That works, but add error handling for when the file is not found.”
- Repeat: This loop of describing, generating, testing, and refining continues until the code is complete.
The idea being that at no point do you need to know how to write the code yourself. When I started to think about this article I was thinking about vibe coding being like composing music – you strike a few notes, suggesting a melody, and the AI resonates with harmonics you hadn’t quite imagined, or knew how to play. You adjust, add another phrase, and suddenly the music flows as if by magic. You’re not meticulously writing every note on sheet music; you’re jamming with an infinitely patient collaborator who anticipates where you’re headed and fills in the gaps. Sometimes it hits a wrong note, and you course-correct. Sometimes it takes your simple melody and transforms it into something unexpectedly beautiful. The key is maintaining the rhythm, staying in sync, and knowing when to let it improvise versus when to take back control. Like any musical performance, the magic isn’t in the instrument alone – it’s in the interplay between you and the tool, each riff building on the last until you’ve created something neither of you could have produced alone.
Which all sounds very magical, and in some ways it is, but the experience I have had in building bigger and more complex solutions in this way has taught me a few things which I thought I’d share in this article.
My experience…
There are many articles around that seem to focus on how a developer would work with AI and adopt a vibe coding process. For example, I came across this one “A Comprehensive Guide to Vibe Coding Tools” by Madhukar Kumar where he provides a lot of really good information on tools available for coding and then using for vibe coding projects. But in my opinion, one of the great advantages of vibe coding is that it’s opened this world to people who really couldn’t code on their own at all, and they won’t, at least to start with, be using tools that allow a developer to work under control, within the architecture they have planned. So these people need a tool that makes sense for them and doesn’t need any other technical knowledge until they have learned from the process they go through… and if you keep at it I assure you that you will!!
So here’s some random thoughts from my own experience that may help build on those 5 principles from Google:
- Choose an AI solution that supports projects as some things can take quite a while to build as you become more and more adventurous – ChatGPT or ClaudeAI for example. This also allows you to add documentation that might be helpful for the AI to know about such as API documentation, or sample files you need it to handle.
- The initial prompt where you describe your goal is very important, especially with larger ambitious projects. I mentioned earlier about how a developer will create “self-contained “objects” (little blocks of data and behaviour) and then make them talk to each other.” Well this is something you’ll do as well, and on the whole an AI engine like ClaudeAI does a great job of organising it well. But as the project grows, and as you create new threads, it’s very easy to lose track. So I always specify in my initial prompt what the features are that I want in my application, the importance of architecting it in a modular way so it’s well structured and future proof. And I always ask it to tell me what its suggestion is and how it will build it. That is my starting point and it helps me to maintain some control even if I don’t know what the code itself is doing.
- It’s also a good idea to tell the AI what tools you will be using for the code, and what language you would prefer to have any commands it issues written. So if you’re using Visual Studio Code as your code editor, and you can run Python or Powershell commands comfortably then make sure you have in your initial prompt, and progress document (see point 6.) that you only want tests you are asked to carry out written in that syntax. So don’t provide Curl commands for example where this is harder to run in Visual Studio Code.
- That also brings me onto another point. Vibe coding doesn’t exclude you needing to learn how to use the development environment itself, but the good thing is you’re using AI! So if you don’t understand anything just ask it! AI is the most patient and knowledgeable teacher you could ever have when you want to know how to execute a particular command, create new files in the tool you’re using or whatever your question is! In general I use Visual Studio Code for just about everything I do apart from two exceptions… and I learned about all of these tools by asking AI:
- building a Trados plugin /addon where I used Visual Studio (Visual Studio Code’s big brother) and this is because Trados provides development tools for these apps through that environment, and
- building the Android app for my wife where I used Android Studio because it also provides me with the right toolkits, language support and preview capability as well as being able to easily connect to my wifes phone to test and deploy the app when it was completed.
- Choose an AI solution that can remember and interact with different threads in the same project. It can be quite frustrating when you are in the thick of it and are forced to start a new thread only to discover the AI you’re using doesn’t have a clue about everything you did so far!
- After I think the thread for a particular chat is getting a bit long I update a progress document with everything achieved so far, the file structure, the architecture for the solution, important points to note, next steps… all generated by the AI… but do read it and keep an eye on what it’s putting down as it can omit important things and on occasion make up new things that I’m not even doing! I then use this progress document as part of the first prompt in the new thread after seeing this message (which is incredibly annoying if you get it before you’re ready!):

- I use ClaudeAI and ChatGPT (the majority of the time), both of which support me working with projects. ChatGPT is far better at using all the available threads in the project… ClaudeAI in general, seems to be a better coder 🙂
- ClaudeAI will give up on a task sooner than ChatGPT and if you’re not careful it will try to take a completely different approach to the one you’ve been working on for days! So I always tell it, at the start of every thread, not to just go off and write the code without explaining to me first what it intends to do, and why. This way I can stop it if I think it’s going off track, and it’s a great way of learning more and more as you do it.
- ChatGPT can have a tendency to go around in circles and never get to the root of a problem. So when ChatGPT does that, or ClaudeAI starts to give up, I pose the problem to the other and most of the time the advice helps to clear the blockage. But I always keep the project as a whole in one or the other, depending on where I started.
- Where do I start? Typically I start with ClaudeAI because so far I find the approach and delivery to be more reliable and easy to understand. So most of my projects reside in ClaudeAI.
- I also find it’s really important to build a project progress file as you go. So once I have provided the initial goal and got some structure from the LLM on how to tackle it I save that document to a markdown file. I use markdown because the chat interfaces seem to like markdown, and because it’s light and easy to use. If you want a good markdown editor I can recommend Typora… not free but not expensive (15 bucks at the time of writing) and I use this daily!
- This way I know the new thread will at least know what we have done so far, and this process is doubly good for learning!
- I also find that it can help to use different LLMs for different topics when I get stuck. For MS Azure related problems I have found ChatGPT (or OpenAI) gives me better assistance that unblocks me when I’m getting stuck. On the Android app I built for my wife I solved the blockages by giving the problems to Google Gemini. I even resorted to using Grok some time ago as for a short while it was producing solutions where the others didn’t seem to do as well. But today I wouldn’t say that’s the case… and to be honest Grok suffers with verbal diarrhoea which drives me nuts!
- File size can also be an issue… ChatGPT seems to be able to handle far larger files than ClaudeAI and this is better for analysing lengthy log files for example. So I often build the solution with ClaudeAI and when receiving or generating log files as I’m testing the work I can find the areas of interest in ChatGPT and then feed just the relevant parts to ClaudeAI.
The main thing I would say is start small. Try something that would be helpful for real… maybe create a VB Script to do something with data in an Excel file; or try creating a stylesheet for a preview in Trados Studio; or write a powershell script to copy and rename a bunch of files in your folders. These sort of things are normally quite straight forward and will help you to get started. Once you’ve started there’ll be no stopping you!!
Final thoughts…
I’ll share with you the last two things I did this bank holiday weekend that I think are pretty useful. A couple of nights ago I created a Python script that can look at a target folder in a Trados Studio project I point it to and then create a PDF report from the details in the SDLXLIFF files after a user was scoring each segment with AI Essentials (a feature available for Trados Cloud users… the Trados Enterprise/Accelerate/Team/Ignite editions). This I think is helpful because you can get a report in Trados Cloud from using AI Essentials, but not in Trados Studio despite having the Smart Review plugin. You can find that script here along with a sample of the report that is created and some sample files in case you want to try it out. It took me around an hour to create this, including time to create the test files (also AI generated), and use the Smart Review plugin manually on each segment. I used ClaudeAI alone for this.
Then yesterday evening I was thinking… if I’m a freelance translator I probably don’t have access to AI Essentials, but I might have my own OpenAI API key since many translators use it for the OpenAI provider plugin from the appstore. So I decided to extend that concept by building an application that could automatically score all the segments in a translation with a bit more granularity (using OpenAI), provide a really comprehensive scoring feature and explanation for the score, and inject the results for each segment as comments in the SDLXLIFFs. Finally provide a comprehensive PDF document with all the results. You can find that version here. That one took me around 4-hours and whilst it was mainly ClaudeAI, I did have to resort to ChatGPT when I wanted to add support for gpt-5-mini because ClaudeAI didn’t believe me that it even existed… quite a humourous conversation… and the API is a bit different to gpt-4o which it used to begin with. Finally running this command (AI generated) in Visual Studio Code to pull all the available models from my OpenAI account:
python -c "from openai import OpenAI; import os; from dotenv import load_dotenv; load_dotenv(); client = OpenAI(api_key=os.getenv('OPENAI_API_KEY')); models = client.models.list(); [print(m.id) for m in models.data if 'gpt' in m.id]"
Which resulted in this response from ClaudeAI:
The moral being… even the smartest AI can be wrong or incomplete. The real power comes from your own curiosity, testing, and logic – AI just speeds up the journey, it doesn’t replace the driver.


2 Comments
Sameh Ragab
Beautiful! I see you got some inspiration from our recent conversation even without seeing my new born baby. Indeed, we have to keep up with the technology and turn our ideas into dreams.
Paul Filkin
Certainly our recent conversation reminded me just how brilliant our own developers are… without them doing everything they do without the help of AI there would be no Trados, no Trados platform for others to develop against… and without developers building the tools we have access to today there would probably be no new born baby for Sameh or me 😉 Looking forward to seeing what you used these tools to create though!