Category: Daily Report

  • Day 148 – Vibe Coding Worsening?

    I’ve noticed that once you are up and running with a proper web application framework like Laravel, blindly using Cursor on it turns it into a nightmare. It feels as if the quality of answers has gone down over last weeks, but I’m frequently rejecting its suggestions. Often it’s got the SoC wrong.

    Anyway, potentially better prompt engineering would fix it, or more training on Laravel framework specifically. Once it fully is trained on the Filament package, it will be amazing.

    Some notes

    • I am finding myself rejecting a lot of the Cursor agent advice… potentially because it needs training on some newer libraries I’m using; but also I do see the glaring errors it makes sometimes.
    • Whilst LLMs are awesome, to mistake them right now for anything approaching intelligence is silly considering ARc2 is being passed at rates less than 5% by AI/LLMs. That really has blown me away. We will see in fall 2025 if anyone has come close. If they do, it’ll be a incredibly scary step forward.
    • For traditional web frameworks, Laravel Filament still looking great. Todays development included:
      • Mostly smooth configuration of import/export to CSVs on models within the Filament table panels.
      • Got job queues setup
      • Quality of life improvements to UI
      • Notifications work great
    • Laravel Pulse is quite good. I was having a few problems with CSV import jobs failing and then infinite retrying but this made me realise I wanted monitoring software asap. Pulse still requires someone to be observing however, and Sentry would still be obvious choice.

    I’ll shortly be in a position to launch the very early version

  • Day 107 – Mac Mini Me

    Still a few days behind on the blogging so adding a general thought for day 107.

    Recently bought new Mac Mini M4 Pro. Entry level.

    Potentially could have upgraded RAM and hard drive (especially, since 500 gigs gets eaten up pretty quick).

    Overall the experience of going back to a desktop rather than laptop with two monitors is quite different. Feels different. I don’t have to keep unplugging wires all the time when I go out to a meeting which happens at least every other day.

    It’s also really nice just having a blank new OS to start with. As with a nice notebook you try and keep it all clean to start with. That’s the feeling I’ve got right now with it.

    The Mac Mini’s are excellent value for money, and was even surprised they have a speaker that pretty much does the job for every day work related audio. A built in microphone would have been welcome, but probably impractical.

    That’s it for now.

  • Day 106 – Back To The Tech Specs with AI

    Today I realised that technical specifications have come full circle in importance.

    We’ve been agile for so long, with focus on short sprints; and I don’t think we need to throw away those benefits.

    But with AI, you can now plan the system on a very wide scale from the beginning.

    I also realised today that I have been thinking too small when it comes to AI. Whatever you think the capabilities of AI are, you are probably underestimating it.

    Today we put together a loose specification of about 3000 lines. Broadly speaking these included:

    • database schemas
    • user stories
    • features
    • UIs
    • component structures

    Using Cursor we would ask it to amend a technical specification MD file as we mapped out the idea from scratch again. Thank to Shaun who pointed this idea out which I’ve sort of tweaked now.

    From this technical specification we asked it to build a vanilla HTML/JS frontend prototype.

    The purpose of this was to see whether the AI could correctly interpret the spec.

    So we went back and forth from the tech spec to prototype, and were able to hone it after a few iterations. This allowed us humans to visually see what we were building.

    I won’t share the prototype UI yet, but suffice to say it reduced several days of work down to an hour or so.

    Crazy times.

  • Day 105 – Cursor

    Today my business partner took his codebase and gave it to cursor.

    The thing is, since he wasn’t hooked up to GitHub, we took the easy route and downloaded the zip file, and I just told him to go play with it.

    He spent the entire day upgrading the application and from the sounds of it integrated a ton of awesome new features.

    And then when it came to showing it to me, it had stopped working.

    Turned out after all that, that he had lost the work. Something went radically wrong, and either some files were deleted, or it just got mega confused.

    No Git commits!

    At any rate, his mind was blown. We will re-continue tomorrow.

  • Day 104 – How to decide when to call it quits on a project, or when & how to pivot?

    For the last few months I have been partially helping out an AI startup get a handle on its product. Their lead developer had left a year ago, leaving a fairly complex and over engineered codebase.

    I realised last night how much of my time, attention, and energy I had been putting into the project.

    Whenever I find myself waking up and my automatic thought process goes to a particular project, I regularly need to assess whether that project is worth of my ever decreasing time.

    The problem is – as with almost all software projects at the moment, is that unless you are able to integrate AI coding tools with it to develop new features faster, you are falling behind.

    The reality is that the combination of automation tools + ‘vibe coding’ + ‘senior engineer experience’ can outpace and rebuild most systems from scratch very quickly now. The cost of software development is now significantly less although the increase in technical debt from AI generated code will be substantially higher than normal.

    Sunk Cost Bias

    With the right attitude, you can take lessons from most experiences in life. When an individual or company has invested resources into a project for too long, there’s this thing called sunk cost bias…which is the psychological desire to keep on going on a path because you’ve journeyed so far.

  • Day 102 – OpenAI Structured Outputs

    When you want the OpenAI API to return output in a specific structure, you use Structured Outputs.

    Here’s an example:

    import { NextResponse } from 'next/server';
    import OpenAI from 'openai';
    import { zodTextFormat } from "openai/helpers/zod";
    import { z } from "zod";
    
    export async function POST(request) {
      try {
        const client = new OpenAI({
          apiKey: process.env.OPENAI_API_KEY,
          organization: process.env.OPENAI_ORG_ID,
        });
    
        const requestData = await request.json();
        const { model, input } = requestData;
    
        const CalendarEvent = z.object({
          name: z.string(),
          date: z.string(),
          participants: z.array(z.string()),
        });
    
        const response = await client.responses.parse({
          model: model || "gpt-4o-2024-08-06",
          input: input,
          text: {
            format: zodTextFormat(CalendarEvent, "event"),
          },
        });
    
        return NextResponse.json({ 
          success: true, 
          event: response.output_parsed 
        });
      } catch (error) {
        console.error('OpenAI API Error:', error);
        return NextResponse.json(
          { success: false, error: error.message },
          { status: 500 }
        );
      }
    } 

    So, if you are doing it the javascript way:

    • You use Zod to define the object. Here you see we’ve created CalendarEvent with name, date and participants, all of which are strings.
    • You use the responses API and you use the { text.format }

  • Day 101 – Long term consequences of AI

    Day 101 – Long term consequences of AI

    It’s been quite a journey over last 100 days.

    I am very happy I made the decision to go all in on AI.

    I know a huge amount more than I did 100 days ago.

    I can see that it’s going to become a huge opportunity for big corporates to automate almost all their tasks.

    Big insurance companies will use AI to make most of their workforce redundant. Whether they find new work for them to do, I don’t know… but I can clearly see that the big companies are going to want to use AI to cut costs.

    Here’s where a potential down spiral begins:

    1 – Companies have always been interested in cost savings.

    2 – AI will offer the perception of massive cost savings.

    3 – Companies will either: a) ignore & wait b) upskill & create an internal AI team c) get in external contractors

    4 – Current internal systems and workflows will be analysed

    5 – Patterns in these systems / workflows will be identified

    6 – These patterns will be automated with AI

    7 – Companies achieve cost savings

    Obviously this is fairly abstract, but it’s sufficient to demonstrate what I’m talking about.

    So, all the big companies in the world will start investing in internal or external workforces (creating a new career sector) and they will reduce the bloat that humans created. So they will eventually, mostly, get rid of staff.

    How quickly and at what magnitude this happens I don’t know, but basically, take the UK as an example, all FTSE100 companies will eventually downsize significantly. This is simply because most ‘work’ that is done in enterprise companies is the moving around of data in a certain way. And in reality, most workers are a bit bone idle. There is huge room for improvement.

    As of January–March 2025, the UK’s labour force—comprising 33.98 million employed and 1.61 million unemployed, for a total of about 35.6 million people House of Commons Library

    Total employed (Jan–Mar 2025): 33.98 million people

    FTSE 100 companies: ≈ 6.0% of the workforce (≈ 2.04 million employees)

    Public sector (government): ≈ 17.4% of the workforce (≈ 5.90 million employees, excluding major reclassifications)

    So, let’s take a cautious approach – 10% of the workforce will be made redundant. So for every 100 people at AVIVA (insurance company), AI will absorb about 10 peoples jobs. That doesn’t seem unrealistic right?

    Let’s extrapolate to the entire 34 million. So 10% made redundant … thats 3.4 million jobs gone and not coming back … which triples the number of unemployed straight off.

    This is potentially manageable, but will put huge strain on welfare. Massive growth in government sponsored training companies as they try to achieve any sort of retraining numbers.

    The circular problem is:

    • 3.4 million people (many with kids) … suddenly have less money.
    • Less money goes into economy
    • Businesses shrink again, lay off more staff
    • Process repeats

    And the problem mainly is that the new brains are looking to create companies that are entirely AI driven. The fewer humans the better is the mantra. So you have that, and probably the fact that most companies will self-preserve and take out more than 10% of their workforce.

    The only way out of this is either:

    • Reduce supply chain costs (mainly through energy sources)
    • Open up new industries
    • Nationalise and subsidise industries
    • UBI

    To be continued.

  • Automation Flows In Companies- Days 96, 97 and 98

    Over the weekend I had a ten mile walk into the countryside, and a four hour brainstorm with my business partner. All good stuff.

    Today I go back to N8N, the workflow solution. Am following along the official tutorial for the moment. It’s clear to me that all companies that embrace automation properly from the ground-up will save a huge amount of time, freeing up their staff to focus on the important stuff. Whilst not technically AI, automation is clearly part of the new paradigm change that will begin happening across enterprises, especially the SME sector which hasn’t really normalised it yet.

    N8N Scheduling

    If you are going to build an automated network of actions for your company, then having scheduled triggers are a must. Of course you can use CRON or jobs in frameworks to do this, but having it in a nice easy UI is just way better.

    In this example, you can see that you can easily setup these triggers with a lot of flexibility. They can be triggered every second or just once a month. For each time period, there are different types of options. So just having these triggers can give you some food for thought in what you might want to start automating.

    Off the top of my head:

    • At the start of every week I might want a script that goes out and captures all the relevant news for me from several RSS feeds. Those can then be put into a workflow.
    • Or I might want to send out an email to the managers of departments to ask for a progress report.
    • Or, could be an email shot, a sales report generation, a slack message, a LinkedIn message or it could check whether tasks have been done last week, and to alert whether there is anything top priority outstanding.

    Anyway, point is, that time triggers give you a huge amount of flexibility. In the above image you can see that these triggers begin flows (currently empty!) that start at the beginning and end of the work week.

    The NASA Node

    Whatever you might think about NASA and the space industry in general, it’s pretty cool that you can just access NASA information from N8N. It takes one minute to get an API key from them, you throw it in N8N and you can now get Solar Flare reports from the last week …

    You can also Test the step and see the output:

    N8N Conditionals

    You can then take the output from any node. In our case the NASA feed. What I like about this, is that N8N will show you the output of any API calls, and allow you to drag any field easily into the conditional statement. So here I have dragged ‘classType’ from the left and put it into the conditional, and searched for the string ‘X’ which is a class of solar flare.

    When you test, you get a lovely UI showing the true or false.

    The next step was outputting to postbin, which wasnt working as expected. I will continue with this tommorrow.

    Automation Software Cuts Costs

    I don’t know why I haven’t played with automation software more over the years. Probably because I was focused on coding. N8N abstracts away so much code to make this work, and unless you have a working foundation that can call any new API robustly and output it all easily … you would have to start from scratch and it would take a while. I just love how automation software takes away this hassle, and you can still integrate it with your internal systems if you want to.

    Licencing

    N8N has an enterprise licence agreement so if you ever want to self-host commercially in production, you still need to pay them a licence agreement. I totally get why they do this, but it’s annoying since I wanted to use this open source software freely. I think it means you can use it internally for free, but as soon as you want to build a product with it, the enterprise licence requirement kicks in.

  • Day 95 – HeyGen!

    Had a call with the guys yesterday at HeyGen.com

    https://www.heygen.com

    So these guys generate avatars for use in influencer marketing. Some key notes are:

    • They have an API you can use
    • Multilingual
    • Pre-generated ones can basically say whatever you want
    • You can speak to one of these avatars and they will talk back to you. Not pre-generated.

    During the meeting they were also able to take a 4 second clip of me in the video, and basically render it and make me say anything. The mouth movements and voice are not super great, but for a four second sample it was good.

    It’s clear to see we will just be interacting with these agents on websites, and as you talk to them, they will present the data necessary to complete your goal next to them.

    I imagine OperatingSystems will just have these inbuilt. Back to ‘Clippy’!

    High quality human avatars driven in real time by LLMs that you can talk to, will be the future of e-commerce.

    It was always going to happen, and it’s been tried before but now it looks like the tech is going to converge.

    Websites will just have a shopping assistant now that talks to you, suggests products, and you wont have to do as much searching, or even typing (which might be a good thing for those of us who’ve coded for years) …

    Psychologically humans will connect more with another human looking avatar helping them to complete their goals.

    You will talk to it, the LLM runs off using RAG to the objects available for sale, and then will come back the solution … and present it to the user. If it’s clothing, the avatar may just change clothing to demonstrate it.

    Potentially further into the future, the avatar will interact with the product, like holding a laptop, etc … unsure exactly how, but I imagine eventually all products will be showcased in 3D so the avatar will be able to work with that somehow.

    Interesting times.

    Every day I see something that makes me both sad and excited, depending on what perception I want to take!

    Vercel AI Chatbot

    Carrying on from yesterday, I managed to switch the local Chatbot to OpenAI and so now I have got the local UI up and running and hooked up to OpenAIs API. And I can change the colour scheme now.

    Ok, that’s it for today’s R&D update.

    Will also have some news on the DXP project soon.

    We’ll also go through N8N workflows from WordPress to the socials.

  • Day 94 – Every company will just have their own internal chat

    A quick detour away from N8N today in my R&D time…

    The time has come where the app I’m working on really needs a traditional ChatGPT interface.

    I did have a developer spasm and think about building the UI from scratch for fun, but …

    Fortunately Vercel do some amazing templates out of the box for different purposes:

    https://vercel.com/templates/

    Vercel do an official ChatBot one and there’s a guy on Github who does a more feature full one albeit hasnt been updated for a while

    https://github.com/mckaywrigley/chatbot-ui

    The official Vercel one is updated more regularly, so I’m just going to use that. Below is how it looks on the demo. I’m currently trying to configure some bugs in it, but it will be great to get this up and running locally so I can start testing it to see if I really do need to start from scratch. It’s already integrated with Auth.js which I dont really want.

    The other one is based on Supabase, which is an incredible offering. But will stick with this for now.