Why AI image generators ignore the word "not"
A diffusion model can't draw a negation - "does not wear armour" produces armour. What I learnt wiring Stability's Stable Image Core into a character builder, and the small LLM I put in front of it.
Notes and articles on business operations, systems integration, agentic AI, and where they meet - with the occasional detour into the garden.
Showing articles on . Show all
A diffusion model can't draw a negation - "does not wear armour" produces armour. What I learnt wiring Stability's Stable Image Core into a character builder, and the small LLM I put in front of it.
Our Ikea NÄMMARÖ set had gone grey, dry and fibrous after a few summers. What one tin of Osmo UV-Protection-Oil Extra did for it, how far the tin went, and why it beat the furniture protector we'd used before.
Founders and business owners are vibe coding real, working apps with AI tools like Lovable - some to communicate a vision, some with live users already. What an AI-built prototype gives you, and when and how to move to a bespoke platform.
The 1988 Gare de Lyon rail accident, and what its instruments, alerts and emergency mechanisms have to say about how we monitor and run software systems.
How I use AI in the loop when writing articles for this site: scaffold first, rewrite everything, bank the corrections, and never publish what you don't know.
Full-text search with no index at all: raw text in S3, a fleet of parallel Lambda functions scanning byte ranges, and benchmarks of what that buys - plus the Bloom filters that let the brute force skip most of the corpus. Part three of the serverless search series.
The "[Action Required] Amazon RDS MySQL 8.0 will reach end of standard support" email explained - Extended Support charges, forced upgrades, and how I plan and run these major version upgrades for clients.
DynamoDB has no full-text search of its own, but its talent for key lookups is enough to build one: tokenising documents into an inverted index, searching it with single queries, and keeping it fresh with Streams. Part two of the serverless search series.
Searching a million records without running a search cluster. The first in a series on serverless search in AWS, looking at why Athena and OpenSearch Serverless don't quite fit the problem, and previewing five alternative strategies.
Agentic AI is the next chapter of digital transformation, and the businesses that already digitised and connected their operations are the ones positioned to benefit. A worked example from Si Novi's own books.
The "[Action Required] AWS Elastic Beanstalk PHP 8.2 on Amazon Linux 2023 platform branches retire" email explained in plain terms - what retirement actually means, why waiting is riskier than it looks, and how I run these PHP platform upgrades for clients.
AI can automate the judgement-heavy middle of your operations - reading messy inputs, routine decisions, exceptions - but only once your systems are connected. A practical guide to what works, what doesn't, and how to start.
The "[Action Required] AWS Lambda Node.js 20.x end-of-life" email in plain terms - what ends on 30 April, why the September deadline is the one that bites, and how to find and upgrade every affected function.
A support chat that asks you to keep your phone awake is a sign the architecture has pushed its problem onto the customer. On designing mobile web sessions that survive interruption.
How the Permissions-Policy header controls access to browser features like camera, microphone and geolocation, its syntax, and how to set it in Apache and PHP.
How the Referrer-Policy header controls what URL information is shared with other sites, the values available, and how to set a sensible default in Apache and PHP.
Handy aws s3 sync command examples for uploading, downloading, mirroring with --delete, filtering, cache headers and dry runs, from deploying static sites to S3.
Handy aws s3 cp command examples for copying single files and directories to and from Amazon S3, including recursive copies, content type and cache headers, and streaming with stdin and stdout.
What the X-Content-Type-Options nosniff header does, why MIME-type sniffing is a risk, and how to set it in Apache, PHP and on AWS CloudFront.
How the Content-Security-Policy header controls which resources a page can load, its key directives, report-only mode, and how to set it in Apache, PHP and AWS CloudFront.
Practical rsync command examples for file synchronisation, backup, and deployment workflows.
How to set the Strict-Transport-Security (HSTS) header to enforce HTTPS, with examples for Apache, PHP, Yii 2, Lambda@Edge and CloudFront functions, and the max-age, includeSubDomains and preload directives explained.
How to set the X-Frame-Options header to prevent clickjacking, with examples for Apache, PHP, Yii 2, Node.js and Remix - and what the "refused to display in a frame" browser error means.
Using S3 GetObject with promises and async/await in Node.js, updated for AWS SDK v3 - including how to read the streaming Body it returns.
How to add a cron job to an Elastic Beanstalk PHP app, and how to make your environment variables available to the cron.
Adding HTTPS to a single-instance Elastic Beanstalk PHP application by putting CloudFront in front of it, including the Apache and Yii2 configuration needed.
How adding a Captcha widget like Google's reCaptcha to your website's public forms helps keep out automated bots.
How to set up AWS sub-accounts and cross-account IAM roles for secure, isolated access across multiple AWS environments.
A technical guide to migrating Yii 1 models to Yii 2, covering namespaces, validation rules, relations, and search methods.
Digitising business processes with web applications, integrations and the cloud to save money, reduce duplication and improve efficiency.
The US Navy tore the touchscreen controls out of its destroyers and went back to physical throttles after the USS John S McCain collision. What that says about complexity, human error and designing software people can actually use.
How to migrate legacy PHP applications to AWS cloud hosting with no disruption to your business, for scalability and reliability.
A guide to migrating PHP web applications from Yii 1 to Yii 2, covering the differences between versions and upgrade strategies.
Using the Xero API to integrate your back-office and operations software, generating invoices and bills automatically.
Essential security practices for PHP web applications, including OWASP guidelines, DevOps security, and regular maintenance.
Why businesses replace spreadsheet processes with web applications, updated for the AI era - and what the data those spreadsheets hold is now worth.