I just uploaded a full walkthrough of the updates to YouTube. Some functionality is not obvious, but the uploads are faster, and connection is more reliable. Overall I am quite proud of this version.
Next up: port the improvements over to the Android App.
To support my ongoing work on the SmartPoi and Magic Poi projects (and to help me save up for a new Microphone!) please consider contributing to my patreon. https://www.patreon.com/c/CircusScientist.
Shout out to Flávio from my Patreon, this one is for you!
Special Notice:
In the next month or so all of my paid subscribers over on Patreon are going to receive a surprise. I have something that nobody has done before (I checked) but I’m keeping it for them, so now is a good time if you like poi and making stuff, go ahead and join up.
Using Aider AI coding assistant and Deepseek api I got 10 usable websites made in about30 minutes. This is just a test of what is possible with AI coding – the only things I did on the websites in the video was add a few images to make them work.
To have your website created and hosted with the help of AI visit https://devsoft.co.za – obviously if you pay me I will do it properly!
I think above all this video demonstrates that AI is a tool, but needs proper guidance to get it right.
The Details
I made a script which used Aider:
*I found the problem I had in the video now – no mention of image file format!
#!/bin/bash
set -eo pipefail
shopt -s nullglob
# Configure Deepseek API
export AIDER_MODEL="deepseek/deepseek-reasoner"
export DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY"
# Process each website folder
for dir in */ ; do
(
echo "Building website in: $dir"
images=("${dir}images"/*)
# Use aider to build website from brief.txt (paths relative to git root)
aider --yes-always --no-auto-commits --no-stream --message "$(printf "Make a website (or improve the existing site) using the following instructions. Make sure to use only the images in images folder (they are always named img img1 img2 etc) when building the site. If any other images are referenced, remove them. Do not leave the website unfinished, add placeholder content where an unfinished element would be always. \n\n%s" "$(cat "${dir}brief.txt")")" "${dir}index.html" "${dir}script.js" "${dir}styles.css" "${images[@]}"
)
done
echo "All 10 websites built successfully!"
This used in particular the brief.txt in each website folder. here is an example from the video:
Custom Candle Maker: Wants a moody, scent-driven design with a product carousel, an ingredient transparency section, and a "Build Your Candle" form (wax type, fragrance, color). Mentioned competitors using "slow-motion pour videos" but prefers static images to save costs.
The 10 prompts were made using Deepseek chatbot, which I asked to create customer requirements for the 10 videos – with variety.
Conclusion
The AI does a good job but needs a lot more information than the vague short prompts I actually gave it. In a real-world scenario with an actual customer I would most likely be much more specific, with better results no doubt.
Some old Circus Scientist services have to go, in order to move forward with new projects. This is due to Ubuntu Server upgrade (not intentional)
Outline:
There are two ways to look at things in software:
Keep things compatible and working no matter what. I think of this as the “hoarder” mentality (think Microsoft)
Move fast and break things (aka Google)
I guess I try to keep a happy medium, leaning towards the “hoarder” side. Right now though, something is going on that I don’t have any power to change. The Ubuntu Server version 20 which I have most of my “experimental” services on is going EOL in a few months. I don’t have a choice – I need to upgrade all of my online projects. Sometimes this is as simple as upgrading Ubuntu in-place but due to Python version updates this time it’s impossible. Each service has to be updated and put on a new version of the server – I’m using the latest LTS version, Ubuntu Server 2024.
What is going away
LED Website Indicator. I really love this project, my first fully integrated Web and IOT project. Basically nobody cared except me. I’m going to open source the Arduino code at some point, some parts are already are available on GitHub.
MagicPoi old website. There is already a new version with most of the same functionality (my patreon subscribers have had access to this for a while). This was my first really large Flask website with an api accessible from ESP8266 and is a bit old and insecure now. I have a backup if anyone has data from there that they need to get back, just send me an email and I will sort you out.
AI Site Generation. A fun project that was just for learning purposes really.
Monkey Detector (web version with api). Another learning project, not being used.
Invisible Deck Practiser. Just a JavaScript version of an Android app (magic).
Other personal sites not related to this blog.
Temporary disruptions
Several other services need to be migrated, this may take up to a week depending on the complexity. Expect disruptions.
SmartPoi Downloader
The new alpha version of magicpoi site (with api)
devsoft.co.za
show.circusscientist.com
Other personal sites not related to this blog.
Conclusion
Sometimes you have to break things in order to move forward.
Everything that is moving to the new server is going to have proper Python virtual environments with up-to-date libraries. More secure, faster, future proof.
Found a tutorial online – of course I’m not the first person to try this
Add the tutorial webpage to Aider context (to send to DeepSeek) – I did skim it first, looked OK, using cool libraries and stuff
Add some specifications (prompt) and tell DeepSeek to make it for me. – using Python with Gradio and Browser Use – a way to control Chrome easily with AI.
The result
DeepSeek with Aider’s “Architect mode” did an amazing job. It required some guidance about what exactly I wanted – the tutorial was more of an inspiration than something I wanted to copy exactly. As usual there were errors and I had to spend a few hours asking the AI to debug code – as well as doing it manually on occasion. AI programming is not foolproof and will not replace us in it’s current state – it’s a tool only. A great tool – but only a tool.
I love good tools.
DeepSeek decided that it needed to record it’s progress as a gif, made up of screenshots. I didn’t ask it to do this, and it wasn’t mentioned in the tutorial either.
Here is the slideshow for “Find me the cheapest Android phone on gumtree”. It also returned the results in text format.
Conclusion
It was super fun asking my “DeepSeek Operator” to do something and then watching it click around in the browser, even working out that it had to accept cookies before continuing!
As you can see, the tools for this type of operation exist in the Open Source world already. I think that Agentic AI is almost ready to take over the browser and do a lot of your work for you – if you are willing to trust it. It could be great for research for example.
Having said that, the DeepSeek R1 model was pretty slow via api. I think that may be a problem with reasoning models in general, though. Also, it didn’t find the actual cheapest phone, I did that myself in a few seconds afterwards to double check the result.
What do you think, should I publish my Python powered OpenAI Operator clone to GitHub?
Update:
I published it! You need a DeepSeek api key for this to work*