Category: Uncategorized

  • Day 72 -74 Of Building An AI Startup

    A lot of my time and mental energy recently has been taken up with some paid work. But during that time I’ve made a lot of use of Cursor, now my goto IDE. It definitely makes me more capable and when I get stuck it can spot obvious mistakes which happen to the best of us.

    Overall, things are going well.

    My energy, attitude and work rate compared to day 0 are way better. I’ve had a few blips for sure.

    Building a team

    I was reading this week that the most effective companies are going to be small teams of senior experienced / C-Suite level thinkers and doers; working together toward building something.

    Employing people in the UK is incredibly expensive. I have no idea what junior level people are going to do anymore. The ones that work hard and compete, will do fine as always; but there will be a huge drop off of demand.

    Building an automated company

    The tools are now here to automate actions that are regularly taken in a company. It might be just the signing up of a customer to various systems, that are manually done. It might only save a few minutes but it means someone doesn’t need to context switch. So it’s not just the time saved, it’s also the mental energy saved.

  • Day 70 – AI makes you a 10x more useful programmer.

    Day 70 – AI makes you a 10x more useful programmer.

    Today was a breakthrough day.

    I needed to collect some data from two sources and cross-link them.

    I was able to use Claude 3.7 to generate several python scripts that used Playwright to crawl a site, intercept a script call and grab a particular value from it, and insert it somewhere else.

    Claude was able to generate the python scripts for me.

    I wouldn’t be able to do this without spending a long, long time learning python and how to use some of the libraries.

    So, another win for “AI”.

  • Work Diary #10

    Filament Forms

    In the last work diary, I covered how easy it was to link select fields … where values of select B are dependant on the value of select A.

    When you get an excessive amount of options though its nice to add a searchable field:

    Forms\Components\Select::make('venue_id')
    ->searchable()
    ->preload()

    So easy!

    But Filament gets even better.

    You can add an inline form to the select!

    ->createOptionForm(Venue::getForm())
    ->editOptionForm(Venue::getForm())

    The getForm function simply returns an array of form elements like you would get in the normal filament resource files.

    The amount of work this saves the developer is crazy good.

    Filament is really very good at first glance although I’ve noticed some very minor bugs.

  • Day 69

    Felt a bit refreshed past few days.

    Here’s what’s going on in the main

    1 – Still helping out on the DXP project … this is a Digital Experience Platform which manages websites at scale. We have a working version up and running on BetTodayUSA and are closing in on releasing the beta version very shortly, which will allow us to do a lot more public testing.

    2 – Helping a leading UK holiday rental company transition into a new booking software infrastructure.

    3 – Early stage discussions on AI startup for a scaled sentiment analysis

    4 – Also in early discussions with a friend who is amazing at producing leads through various data crawling and AI analysis techniques. Trying to figure out way forward.

    5 – I am building my own platform that is capable of being the infrastructure that all these projects (and more) would run on. It’s a relatively thin layer, but super useful.

    6 – Early stages of working with a 3D avatar

  • Work Diary #9 – Laravel Filament

    Enums can be super powerful …

    … use them in factories

    'region' => fake()->randomElement(Region::class),

    Filament Forms are really robust.

    Forms\Components\Select::make('region')
    
    ->enum(Region::class) // <-- This enforces validation!
    
    ->options(Region::class)
    
    ->required(),

    These days you really don’t want to spend any time doing form validation. It’s already been done. I like the above because it will ensure that even on frontend tampering it still means server side validation will enforce the values to be one of the enums. Honestly, that’s a small chunk of boilerplate that you don’t need to do.

    Laravel Shift :: Blueprint

    Blueprint gets the migrations for you.

    Get Filament To Generate The CRUD UI For You

    php artisan make:filament-resource Venue --generate

    Dependant Select Pickers

    Since Filament is a LiveWire app, all form elements are set with wire:model, with none of them being live updates. But you can easily change them live which means on any change, we send a request to the server and re-render the component. This gives the opportunity to query for options. Such as:

    Forms\Components\Select::make('region')
    
    ->live()
    
    ->enum(Region::class)
    
    ->options(Region::class)
    
    ->required(),
    
    Forms\Components\Select::make('venue_id')
    
    ->relationship('venue', 'name', modifyQueryUsing: function (Builder $query, Forms\Get $get) {
    
    ray($get('region'));
    
    return $query->where('region', $get('region'));
    
    }),

    The keys here are:

    • Using a custom closure in modifyQueryUsing
    • Passing the Forms\Get $get method into that closure
    • Using a query on region to match the selected region value

    Spatie Ray Debugging

    Debugging makes software programming so much easier. The Spatie crew have made ‘Ray’ which is a real-time logging utility. I did buy Herd Pro for this purpose, but I will probably end up up returning the Hero Pro licence since it’s not as useful as I thought … and stick with Ray. Highly recommend ray

  • Days 65 – 68 – Random Thoughts!

    Elimating Distractions, Interruptions and Overcommunication

    So last few weeks I’ve fallen in the habit of logging onto slack early in the morning; and I’d catch up with a developer on a project. This is still a very much needed ‘thing’ to be doing … but the problem is, it immediately scrambles my brain for the day.

    It’s the same for loading up your brain with any sort of communication early in the morning. That’s the time when you just want to use your fresh mind to work on important challenges.

    Emails are never important enough to get done first thing, although many will say they are. If they are that important, get them done the night before and send them. But to sacrifice your fresh mental energy to deal with messages coming in from slack, whatsapp, email, discord … it’s such a waste; and when you are self-employed and on your own time you just can’t afford to waste that energy.

    There’s always exceptions to the rule … that one important email which seals a deal, or solves an urgent and pressing matter. But in general, emails and all messaging will be abstracted away from us in the future world of AI Personal Assistants.

    I am guilty of it as well – ‘brain farting’ when I have an idea that I think is so great that I need to tell someone. Or having found something ‘great’, forwarding it to someone who I think will find it useful. But all I’m doing is consuming their attention and perhaps breaking their concentration on something potentially important.

    So the main thing going forward is no communications at least until 3pm. That’s normally the time when my fresh mind runs out of juice. Between 3pm and 8pm I generally don’t work very effectively.

    Overwhelm & Stress

    Recently hit a point where I got overly stressed with all the things going on. Partly that was down to me not managing the over communication going on in my life.

    It was also down to me not single handling tasks, and trying to manage more than one thing at a time. I think it was proven in a repeatable scientific method way that multi-tasking was insanely inefficient. So, as I was beginning to have more than one thing on my mind at any one time… it was tearing me in several directions.

    Also, the notebook that i started 70 days ago (ish), is now full… and whilst all the ideas are in there … it’s now time for a brand new clean notebook that builds on everything I’ve been working out over last few months.

    I’ve now started back at zero point – choose the key projects and short term goals for next thirty days within them, and cycle between them … without the overhead of multi-tasking, digital overwhelm, or without letting too many people into my head.

    Sports Psychology & Visualisation In Business

    Sports psychology is one of my favourite things to study, and in an different quantum timeline, maybe I would have been an athlete … but that didn’t happen for whatever reasons and no reason to not accept it. But you can apply SP to your own daily business life; and many would say it really is the key to their rather large successes.

    The very core of SP is in learning to work with your mind in a very specific way. Your ‘mind’ is actually the result of the central nervous system … (read Psychocybernetics for a new paradigm change on the subconscious) and it works pretty much like you would expect a robot to behave. You give it a clear goal that your biological machine can understand, and it will go and do it.

    We live and operate both as the passengers and drivers of ourselves. It’s a weird paradox that most don’t get to appreciate unless you unravel your mind and wake up to what’s beyond it.

    Point is, have a clear list of priorities… then mentally cycle through them – seeing what they look like at the end of completion. The key is knowing you won’t visualise it perfectly done first time, so just hold the intention, outcome and feeling of winning at it, and see what pictures come up into your mind. You will gain insights, and as you rewind from the end point to now, you will map out the journey in a way that your subconscious mind can understand better.

    I’d got out of the habit of doing this many years ago, but in reality, it’s the only way of true mental control.

  • Day 64 – An example of AI getting it wrong

    With Cursor, on a 1000 line script, it could not find where an API token was until I specified it.

    This has happened more regularly recently. The AI just gets basic shit wrong, or it leaves code in there which doesn’t need to be there. I’ll happily admit vibe coding is great, and I’ll also happily admit I’m wrong … but I think you really need to know what you are doing with AI else it becomes a mess quickly.

  • Day 55 – The Founder’s Story

    The days roll on.

    Today was a day of calls.

    Today taught me one thing and that was that the act of posting everyday actually has better consequences than just post engagements on LinkedIn.

    I was doing a few interviews today – graduates from TechEducators software development bootcamp … and a few of them had read through my posts on this site and LinkedIn. It was interesting to hear that they had done that, since I pretty much just write for myself at the moment.

    But I realise that the story that you make when starting something is actually important because, if they choose to, people can gain context on what you are doing. It’s not just about flawlessly sanitized marketing … founders can benefit from just being genuine and not being afraid of not being seen as being perfect. You just have to not care about that aspect.

    Anyway, it’s been challenging to do a post on an almost daily basis, but along the way you realise that it’s having unintended positive consequences. Which is great.

    Improvements to my story marketing

    I’m going to need to scale up with a bit of automation into other social networks; and do more videos. I want to focus first on the core original content that I create; and then look at what I can use AI to supplement that. But I need to scale into video content focused more on AI value, and also founders story.

    IT Projects

    I’m working on another project which will remain nameless. It’s a tricky one since it’s a great project with great potential; but it suffers from the very common IT project pitfalls – most of which I have fallen into in my career:

    • At the beginning of the project, it’s OK to do some R&D prototyping to see what’s possible; and it’s OK to use agile … but sometimes you do actually need to plan through what the end product MUST do. When you are replacing a system or starting a non-trivial one from scratch … you can’t just wing it. You must be specific about what you’re building and more importantly HOW you are going to get there. Make the decisions AHEAD of time. This is a massive skill and vibe coding people will never do this… we will see how it turns out over the long term.
    • During the project you need to communicate; as soon as that starts breaking down, things slow down. And the communication needs to be kept in places other than emails or messaging. Find what works for your team.
    • When things start getting a bit tricky, bring in specialist help. I can’t emphasise this enough. Whether that is a talented project manager developer, or a developer with better skills at your tech stack… don’t hesitate. You need someone sooner than you think.
    • DOCUMENT! When projects are several years down the road; onboarding new developers is slow since they have to figure it all out from scratch.

  • Day 54 Building an AI Agency

    Today’s post is a bit more of a strategic analysis of the situation.

    • There is a clear demand for more information on AI, across the board – from SMEs to enterprise.
    • AI Agencies are a fairly new phenomenon, and existing agencies will eventually realise they need to pivot to offer this service.
    • There is too much information out there regarding AI, and everyday I find a new tool, or new bit of news that blows me away. For the person who is not focused fully on AI, they don’t have the time or inclination to full match that.
    • Whilst there is an abundance of information, how much of it is actually relevant and actionable? A lot of people are now just getting their information from language models, coming up with strategies that sound good on the surface, but actually don’t work in practice.
    • Apart from people who have been at it for a few years, most people are nowhere close to understanding how to actually use AI to build/grow their business. They know there’s something that can help, but they aren’t sure specifically what that is.

    So, it’s clear to me that an AI Agency fulfils a demand that most companies are going to realise they need fairly quickly; and over the last fifty days or so I’ve figured out more or less that AI for business is about:

    • Being able to gather meaningful data from the internet in an automated fashion; using web crawling techniques blended with AI
    • In tandem with data gathering, AI can help with lead generation and create workflows that help a customer through their journey with companies. LLMs can be used to tailor emails to send out meaningful sales emails to people
    • Having a system driven by AI that oversees the entire business operations
    • Virtual Agents and Chatbots that act as the first point of contact for people using either websites or going through other ecosystems like whatsapp
    • Using automation tools to reduce time spent on manual tasking. Saving even five minutes per week on a regular task is roughly 4 hours per year saved. So over ten years for a company it’s the equivalent of a single employees working week.
    • Driving the content strategy with automation and generated content to supplement current marketing efforts
    • Able to develop digital features faster using AI code helpers and ‘vibe coding’
    • Able to talk to their data more effectively and gain insights

    It’s also clear to me that I still really enjoy, and am good at, development non-AI systems – becoming better at managing the projects of them – and that most of these will eventually be required to integrate with AI.

  • Day 53 – Laravel

    Despite:

    • SAAS being completely overpopulated with products
    • Agents being likely to take over most software
    • Automation tools likely to remove the need a lot of tool chaining dev

    Despite all this, I still want to build my own platform. Who knows where it will lead to.

    I had started to do this already but in the process:

    • Laravel upgraded to 12
    • Laravel Jetstream was superseeded by the new starter packs
    • Laravel Spark wasn’t suitable for Stripe integration since I wanted to use Stripe tax

    Before I go much further with the dev I’m going to strip back and start from the react starter pack.

    I’m comfortable with either Vue or React; but I’m going react mainly because I am going to integrate some stuff from Flowbite Pro.

    How To Install Laravel 12 Starter Kits with Laravel Sail

    I know there’s Laravel Herd these days, but i’ve got used to Sail and I like using docker. I don’t see a reason to change. But I needed to find a manual way of installing Laravel Sail straight off because my local composer was all messed up.

    Install.sh

    #!/bin/bash
    
    # Check if a project name was provided
    if [ -z "$1" ]; then
      echo "Usage: $0 <project-name>"
      exit 1
    fi
    
    PROJECT_NAME="$1"
    
    docker run -it --rm \
        --user "$(id -u):$(id -g)" \
        -v "$(pwd):/app" \
        -w /app \
        -e COMPOSER_HOME=/tmp/composer \
        laravelsail/php84-composer:latest \
        bash -c "composer global require laravel/installer && /tmp/composer/vendor/bin/laravel new \"${PROJECT_NAME}\""

    You can then call this with:

    sh install.sh desired_project_name

    This scripts will install Laravel from a docker container with composer in it. Then cd into your new directory and run a second script to install sail into it. I like how this step lets you select DB type because previously I had to mess around with docker to get it working.

    Install2.sh

    docker run -it --rm \
        --user "$(id -u):$(id -g)" \
        -v "$(pwd):/app" \
        -w /app \
        -e COMPOSER_HOME=/tmp/composer \
        laravelsail/php84-composer:latest \
       php artisan sail:install

    Big thanks to guy on reddit

    You can then use:

    • sail up -d
    • sail artisan migrate
    • sail npm install
    • sail npm run dev

    Has Laravel Gone Backwards With These?

    They’ve pissed off a lot of people in the community who were relying on JetStream. You can still use it but it looks like Laravel lot are going to force it out over the long term.

    There’s:

    • No teams setup whereas JetStream had it
    • JetStream had 2FA
    • JetStream had a better profile settings page

    One thing I’ve noticed is that there are no teams integrated into it, so it’s sort of a step backwards from JetStream from that perspective. However, it’s not a huge problem.

    Good Opportunity For Data Export Feature

    The main premise of the platform is keeping your data intact and organised. Because it’s a SAAS system at its heart, technically the data is on own servers, but we would offer a solution where you can have your own server and have full control over that.

    I’ve never liked apps that don’t let you export your data nicely, so I’ve been using this Laravel 11 platform for a few things, and I’ll want to bring the data over… so a new export/import feature is imminent.