[{"data":1,"prerenderedAt":488},["ShallowReactive",2],{"blog-/blog/26-08-01-th-creative-is-ltd":3,"latest-posts":80},{"id":4,"title":5,"author":6,"body":7,"category":65,"date":66,"description":67,"extension":68,"image":6,"meta":69,"navigation":70,"path":71,"seo":72,"stem":73,"tags":74,"__hash__":79},"blog/blog/26-08-01 TH Creative is Ltd.md","TH Creative is officially a Ltd Company",null,{"type":8,"value":9,"toc":58},"minimark",[10,14,17,26,31,34,37,40,44,47,55],[11,12,13],"p",{},"I’m incredibly pleased to announce that as of this week, TH Creative is now officially a registered Limited company!",[11,15,16],{},"This is a massive milestone for me. When I first started out, operating as a Sole Trader was the easiest way to get the ball rolling. My focus was purely on doing the work: writing the code, wiring up IoT hardware, and designing user interfaces.",[11,18,19,20,25],{},"But as the scope of my consulting projects has grown, and with the active development of my own in-house software products (like ",[21,22,24],"a",{"href":23},"/blog/26-06-16-app-building-with-agentic-ai","Klovva","), it became clear that I needed to upgrade the underlying \"operating system\" of the business itself.",[27,28,30],"h3",{"id":29},"why-the-change","Why the change?",[11,32,33],{},"As an engineer, you can think of your corporate structure a lot like your database architecture: if you get the initial schema wrong, migrations down the line become painful and expensive.",[11,35,36],{},"Moving to a Ltd structure provides the proper legal framework to shield liability, cleanly manage Intellectual Property, and build standalone SaaS products that can eventually scale, spin out, or be acquired. It’s the right vehicle for the next phase of my career.",[11,38,39],{},"Of course, it also means I've had to spend the last few weeks learning an entirely new stack: Companies House filings, corporate bank accounts, and finding a good accountant here in Birmingham. As I've mentioned before, the engineering is often the easy part - it's the business logic of the real world that takes getting used to!",[27,41,43],{"id":42},"what-this-means-for-you","What this means for you",[11,45,46],{},"If you're a current or future client, nothing changes on the day-to-day. You still get me: a multidisciplinary engineer and designer focused on the \"Zero-to-One\" phase of your projects. I'm still here to help deconstruct your complex problems and build the bridge between high-level strategy and low-level code.",[11,48,49,50,54],{},"There will just be a slightly more formal ",[51,52,53],"em",{},"\"TH Creative Ltd\""," at the bottom of the invoices.",[11,56,57],{},"A huge thank you to everyone who has supported, hired, and collaborated with me to help get the business to this point. Here’s to the next chapter!",{"title":59,"searchDepth":60,"depth":60,"links":61},"",2,[62,64],{"id":29,"depth":63,"text":30},3,{"id":42,"depth":63,"text":43},"News","2026-08-01","A quick update on the business side of things: TH Creative has officially levelled up from a Sole Trader to a registered UK Limited company.","md",{},true,"/blog/26-08-01-th-creative-is-ltd",{"title":5,"description":67},"blog/26-08-01 TH Creative is Ltd",[75,76,77,78],"Milestone","Business","TH Creative","Building-in-Public","CMLwWJUV2iNepGAJ9dmJP7p9e7I9xDYOuuIVGzXUgjw",[81,117,360],{"id":4,"title":5,"author":6,"body":82,"category":65,"date":66,"description":67,"extension":68,"image":6,"meta":114,"navigation":70,"path":71,"seo":115,"stem":73,"tags":116,"__hash__":79},{"type":8,"value":83,"toc":110},[84,86,88,92,94,96,98,100,102,104,108],[11,85,13],{},[11,87,16],{},[11,89,19,90,25],{},[21,91,24],{"href":23},[27,93,30],{"id":29},[11,95,33],{},[11,97,36],{},[11,99,39],{},[27,101,43],{"id":42},[11,103,46],{},[11,105,49,106,54],{},[51,107,53],{},[11,109,57],{},{"title":59,"searchDepth":60,"depth":60,"links":111},[112,113],{"id":29,"depth":63,"text":30},{"id":42,"depth":63,"text":43},{},{"title":5,"description":67},[75,76,77,78],{"id":118,"title":119,"author":6,"body":120,"category":345,"date":346,"description":347,"extension":68,"image":348,"meta":349,"navigation":70,"path":350,"seo":351,"stem":352,"tags":353,"__hash__":359},"blog/blog/26-06-16 Building with agentic AI.md","App building with Agentic AI",{"type":8,"value":121,"toc":333},[122,125,132,137,144,151,155,158,162,165,168,172,183,195],[11,123,124],{},"Things have been a little quiet around here lately, but for good reason: I’ve been deep in the lab getting a new product off the ground.",[11,126,127,128,131],{},"Meet ",[129,130,24],"strong",{},".",[133,134,136],"h2",{"id":135},"what-is-klovva","What is Klovva?",[11,138,139,140,143],{},"Without giving ",[51,141,142],{},"too"," much away before we officially launch, Klovva is a new mobile platform built to help modern parents share the mental load and tame the daily chaos of juggling the kids' schedules.",[11,145,146,147,150],{},"We’re still polishing things up behind closed doors (",[51,148,149],{},"Hint",": It doesn't look like the AI-generated image above!), but it’s been taking up the vast majority of my engineering hours outside of my contracting work.",[133,152,154],{"id":153},"where-ai-was-really-super-helpful","Where AI Was Really Super Helpful",[11,156,157],{},"I know I'm not the first to say this, but AI is at its most useful when it acts as an accelerator for an engineer rather than a total replacement. Building Klovva has proved that point ten times over.",[27,159,161],{"id":160},"_1-product-designer-syntax-writer","1. Product Designer > Syntax Writer",[11,163,164],{},"I didn't actually know Flutter before starting this project. In a traditional workflow, picking up a new cross-platform framework from scratch would have added weeks of googling, refactoring, and syntax bugs before getting a functional prototype running.",[11,166,167],{},"Instead, I acted more like a Product Designer and System Architect. I defined the high-level architecture, user flows, and product logic, while letting agentic AI handle the underlying UI code and widget state management.",[27,169,171],{"id":170},"_2-antigravity-ide-gemini-pro","2. Antigravity IDE + Gemini Pro",[11,173,174,175,178,179,182],{},"I built the bulk of the application inside Google’s ",[129,176,177],{},"Antigravity IDE",", powered by ",[129,180,181],{},"Gemini Pro",". Working with an agentic IDE felt like pairing with a hyper-fast junior developer.",[11,184,185,186,190,191,194],{},"However, despite what I wrote in a ",[21,187,189],{"href":188},"/blog/26-03-18-setting-up-the-safety-net","previous post",", getting the new version (2.1) of Antigravity IDE to play nicely with my usual ",[129,192,193],{},"DevContainers"," setup did not go as smoothly as I would have liked.",[196,197,198,203,236,240,251,255,258,302,306,309,316,320,323],"blog-callout",{},[199,200,202],"h4",{"id":201},"antigravity-ide-21-devcontainers","Antigravity IDE 2.1 + DevContainers",[204,205,206,226],"ul",{},[207,208,209,212,213,217,218,221,222,225],"li",{},[129,210,211],{},"Push Everything into the Dockerfile:"," Don't rely on ",[214,215,216],"code",{},"devcontainer.json"," lifecycle scripts. Antigravity doesn't run post-scripts (like ",[214,219,220],{},"postCreateCommand"," or ",[214,223,224],{},"postStartCommand","), so bake all CLI tools, Flutter SDKs, and system dependencies directly into your Dockerfile.",[207,227,228,231,232,235],{},[129,229,230],{},"The \"Container Started\" Hang:"," If the launch hangs right when you hit the ",[214,233,234],{},"\"Container Started\""," status message, don't wait around. Disconnect from the container and immediately reconnect—it usually picks up the active session instantly.\n::",[27,237,239],{"id":238},"_3-mcp-integration-with-github-issues","3. MCP Integration with GitHub Issues",[11,241,242,243,246,247,250],{},"To keep the AI agent structured, I leveraged the ",[129,244,245],{},"Model Context Protocol (MCP)"," directly integrated with ",[129,248,249],{},"GitHub Projects and Issues",". Instead of pasting long prompts into a chat window, I created structured issues in GitHub. The agent reads the issue context via MCP, generates an implementation plan, executes the changes across the repo, and closes the issue when done.",[133,252,254],{"id":253},"the-tech-stack","The Tech Stack",[11,256,257],{},"I selected a modern, serverless stack for getting the app off the ground quickly:",[204,259,260,266,272,278,284,290,296],{},[207,261,262,265],{},[129,263,264],{},"Front-end:"," Flutter (App), Nuxt + Vue + TailwindCSS (Website)",[207,267,268,271],{},[129,269,270],{},"Back-end:"," Supabase (Postgres DB, Edge Functions, Auth)",[207,273,274,277],{},[129,275,276],{},"Hosting:"," Netlify",[207,279,280,283],{},[129,281,282],{},"Email Integration:"," Resend",[207,285,286,289],{},[129,287,288],{},"AI Integration:"," Gemini, Jina",[207,291,292,295],{},[129,293,294],{},"Analytics:"," PostHog",[207,297,298,301],{},[129,299,300],{},"Project Management:"," GitHub Projects + MCP",[133,303,305],{"id":304},"the-hard-part-from-code-to-market","The Hard Part: From Code to Market",[11,307,308],{},"As engineers, we often fall into the trap of thinking that building the app is the main event. In reality, the engineering is the easy part (for us.)",[11,310,311,312,315],{},"Now, I’m turning my attention to things I don’t fully understand yet: ",[129,313,314],{},"Go-To-Market strategies, business incorporation, and monetization models",". So whilst I have a vision for the app and where I want to take it, figuring out how to launch and scale a product is a whole new challenge - wish me luck!",[27,317,319],{"id":318},"join-the-waitlist","Join the Waitlist",[11,321,322],{},"Back to Klovva - we aren't ready for a full release quite yet, but if you want to be among the first to test it out when we open the doors, go ahead and join the waitlist:",[11,324,325,326],{},"👉 ",[129,327,328],{},[21,329,330],{"href":330,"rel":331},"https://getklovva.com",[332],"nofollow",{"title":59,"searchDepth":60,"depth":60,"links":334},[335,336,341,342],{"id":135,"depth":60,"text":136},{"id":153,"depth":60,"text":154,"children":337},[338,339,340],{"id":160,"depth":63,"text":161},{"id":170,"depth":63,"text":171},{"id":238,"depth":63,"text":239},{"id":253,"depth":60,"text":254},{"id":304,"depth":60,"text":305,"children":343},[344],{"id":318,"depth":63,"text":319},"Opinion","2026-06-16","A look under the hood at how I’ve been using Flutter, Supabase, and Antigravity IDE to build a brand new product - and the challenges beyond engineering","/images/blog/260616-building-agentic-ai.png",{},"/blog/26-06-16-building-with-agentic-ai",{"title":119,"description":347},"blog/26-06-16 Building with agentic AI",[354,355,356,357,358],"AI","Flutter","Dev Containers","Antigravity","Docker","-srt08Fo2kHFh05xwtgX31FM2vEkzq4H-bXs3PC3UE8",{"id":361,"title":362,"author":363,"body":364,"category":345,"date":479,"description":480,"extension":68,"image":481,"meta":482,"navigation":70,"path":483,"seo":484,"stem":485,"tags":486,"__hash__":487},"blog/blog/26-03-25 Is AI making me obsolete.md","Is AI making me obsolete?","Tom Haskell",{"type":8,"value":365,"toc":471},[366,373,380,383,387,393,396,409,412,416,419,431,435,442,446,449,452,456,462],[11,367,368,369,372],{},"Many years ago, I did a Masters Degree in Artificial Intelligence. If you’d told me then we’d have LLMs that could write a strategy document or code an app, I’d have been amazed. The problem back then was ",[129,370,371],{},"availability of datasets",". To train an AI you need vast amounts of human-validated content.",[11,374,375,376,379],{},"Take face-recognition for example - that was one of the classic problems back then. There were several algorithms that were very good at finding a face in an image, but answering the question of “who does this face belong to?” was exceptionally difficult - where do you get the data for what someone looks like to associate ",[214,377,378],{},"face = name","? One of the first leaders in this were Facebook. Here was a site where you uploaded a photo, clicked a person’s face and “tagged” the face to a person, essentially making us the trainers for an AI that could then do it for you -suggesting the name immediately. It seemed like magic!",[11,381,382],{},"That’s essentially the same premise as today’s LLMs - they’ve been trained on masses of human-generated content, words, code, art, music, and your personal data to be able to suggest things to you. And that’s the problem: what you get is essentially a suggestion. Those facebook tagging suggestions were not always right - sometimes it thought you were your brother, if you were wearing glasses or a hat or looking off to the side it couldn’t identify you. But that was ok, we knew it was only a suggestion and were happy to correct it.",[133,384,386],{"id":385},"the-hype","The Hype",[388,389,390],"blockquote",{},[11,391,392],{},"AI models are like a good actor: they can say the words convincingly, but don’t actually know what they mean.",[11,394,395],{},"Today, AI is being touted as “the answer” rather than “the suggestion”. We’re told we don’t need copy-writers, junior developers, artists or designers because AI can do it all for us.",[11,397,398,399,402,403,408],{},"But it’s important to remember that these AI models don’t actually “know” anything - they’re just really good ",[129,400,401],{},"predictive text engines",". I heard them described somewhere as being like a good actor- take a TV doctor for example: they might know how to say the medical jargon convincingly, but don’t actually know what the words mean. There are countless examples of people asking an AI model basic reasoning questions and it failing (",[21,404,407],{"href":405,"rel":406},"https://www.youtube.com/shorts/rvlnWMj14vA",[332],"how many R’s are in strawberry?",") because there’s no “brain” to speak of, just a probability that a certain word will follow on from a previous set of words.",[11,410,411],{},"This gap between probability and real understanding is the chasm we now have to cross to reach the “True AI” that I dreamed of back in my uni days - or what we now call AGI (Artificial General Intelligence) - and has been promised by AI researchers repeatedly over the last 60 years as being just around the corner. I think we’re still someway off, if indeed it is possible at all.",[133,413,415],{"id":414},"have-i-been-replaced","Have I been replaced?",[11,417,418],{},"So bringing it back to my situation: do I still have a job in an environment where anyone can code their own app in a weekend?",[11,420,421,422,426,427,430],{},"Having used AI to ",[21,423,425],{"href":424},"/blog/26-03-11-vibe-coding-my-website","vibe-code my website"," I’m not currently too concerned. Can it produce code? Absolutely. It’ll even produce code that will run and perform it’s own tests. But, as I mentioned in that previous post, it’s only as good as your ",[129,428,429],{},"average junior developer."," You need to know exactly what you want, how you want that thing to work and look, and be incredibly precise about communicating it. To be honest, if I wasn’t already a developer I’m not sure how I would know how to explain to it what I wanted. Maybe I care too much about idiomatic code and structure, but even putting that aside there’s a level of intuition and experience that it just can’t replace.",[27,432,434],{"id":433},"the-support-problem","The support problem",[11,436,437,438,441],{},"I’ve read several articles recently that have highlighted the “hidden tax” of vibe-coding: ",[129,439,440],{},"long-term support",". What happens when a critical library is updated, or a big browser change breaks the layout? If you’re relying on AI to fix it for you, you might need to wait until there are enough human-generated tutorials for it to pick up the fix.",[133,443,445],{"id":444},"positive-use-of-ai","Positive use of AI",[11,447,448],{},"So far I’ve been very negative about AI, but it’s definitely not all bad. Going back to my original point about it providing suggestions - it’s exceptionally good at that. I use it all the time for writing documents based on bullet points, or fine tuning blog posts, or as a more natural interface for my “why doesn’t this work?” type questions. But I always read it through and edit it afterwards.",[11,450,451],{},"Using it to speed up my coding is also very helpful - it can perform some of the grunt work in lieu of having my own junior dev. Scaffolding out a Vue app, or writing the boilerplate CRUD methods for data access can certainly be very useful.",[133,453,455],{"id":454},"the-verdict","The Verdict",[11,457,458,459,131],{},"AI is undoubtedly useful, but lets keep using is as a suggestion tool rather than a source of expertise. With that view it will make me ",[129,460,461],{},"more productive, rather than redundant",[11,463,464,465],{},"So, if you have a project idea and you have the technical depth to communicate it clearly and support it yourself—crack on! I’d genuinely love to hear how it goes. But if you’re looking for someone to bring that human intuition and experience to the table (while using AI to make it faster and cheaper), ",[21,466,468,131],{"href":467},"/#contact",[129,469,470],{},"get in touch",{"title":59,"searchDepth":60,"depth":60,"links":472},[473,474,477,478],{"id":385,"depth":60,"text":386},{"id":414,"depth":60,"text":415,"children":475},[476],{"id":433,"depth":63,"text":434},{"id":444,"depth":60,"text":445},{"id":454,"depth":60,"text":455},"2026-03-25","There’s been a lot of talk about AI making developers obsolete. Is it all hype, or should I be concerned?","/images/blog/260325-ai-making-obsolete.png",{},"/blog/26-03-25-is-ai-making-me-obsolete",{"title":362,"description":480},"blog/26-03-25 Is AI making me obsolete",[354],"WZz80tcQqFa_b1578cYFlkndGDdYzcK0CXL3IE1DY2Y",1786541726642]