Here's how to deploy a static HTML site on Cloudflare Pages and secure it with Basic Authentication using middleware. This is simple to set up and means that people or bots can't access your site without a password. Note…
Note: these were created primarily with ChatGPT, Claude and Gemini, with a bit of back and forth prompting, pasting in AWS docs and correcting things. AWS main topology and infrastructure options Feature AWS Regions AWS …
It turns out that ChatGPT (and other large language models) are great at generating diagrams as well as text. If you ask ChatGPT to make a diagram then it might try to use Dall-e and draw one from scratch. Dall-e and oth…
I was talking to my kids about large numbers like a googol (10^100) and a googolplex. I knew bits and pieces about bigger number but not enough to confidently explain it until now. Addition, multiplication, iteration and…
I recently started work on a new project and started transitioning the JavaScript into TypeScript, so thought I'd write some notes. TypeScript is made by Microsoft and basically enhances JavaScript by adding a whole load…
While working on a JavaScript project using the chalk library to stylize terminal output, I found an interesting thing about handling JavaScript files as both importable modules and executable scripts, much like Python's…
In 2016, DeepMind's AlphaGo program achieved a historical milestone by defeating Lee Sedol, one of the world's top Go players. While the raw skill of AlphaGo was impressive, one particularly interesting aspect was its un…
This is an overview of how to get a server set up running Dokku, with wildcard domains. Out the box Dokku image from DigitalOcean: https://marketplace.digitalocean.com/apps/dokku Locally Git setup: DOKKU_HOST=ssh.example…
When managing Linux servers, it's crucial to ensure they're free from vulnerabilities. I recently explored various package vulnerability scanners and stumbled upon Vuls, an open-source tool that impressed me with its pow…
I ran through Packaging Python Projects today to get Clipea installable with pip install clipea-cli. (I originally wrote Clipea in PHP to get it working quickly but someone kindly ported it to Python.) pip packages are h…
Docker Volumes The standard way to keep files in sync between a Docker container and your host is using volumes. These use (normally) use bind mounts under the hood. You can do this on the command line: docker run -v /pa…
The site is a basic Eleventy site. You can install with npm install and build with npm run build. Use npm run serve for development. Most of the code that turns the repo of markdown files into a website is in .eleventy.j…
First thing's first: GPT stands for Generative Pre-trained Transformer but for some reason OpenAI have reused the name for one of their products. What's a Generative Pre-trained Transformer really? These are artifical ne…
Today, I was setting up an Amazon Lex chatbot and came across a couple of challenges. In simple terms, Amazon Lex is like a more structred version of ChatGPT. It uses advanced natural language understanding (NLU) and aut…
We encountered a challenge recently with a security vulnerability in a transitive dependency. This was where our project depended on a library (let's call it acme-corp/foo), which then depended on another library (let's …
I work with APIs most days and occasionally come across one without an accurate API specification. This happened recently and I thought it would be worth creating a spec before starting to use the API: that way I could m…
Revisiting CSS: A Pleasant Surprise I don't often write CSS. To my surprise, I discovered that modern CSS now has its own native variables, known as Custom Properties. These are now widely supported across all major brow…
I was trying to get a copy of an Android app APK file today. This can be really handy if you need to back up an app that's not on the Play Store anymore, or if you're trying to debug a problem and you don't have the orig…
OpenAI recently made their GPT-4-backed vision capabilities available to API developers. Here's OpenAI's Vision API Guide. After seeing this demo on Twitter and examining the code here, I decided to experiment with it my…
Your remote tracking branches This cleans up the big origin list you get when you do git branch --remote git remote prune origin Local branches that have been merged This removes your local branches that have been merged…
This means they can do the same calculation twice and get different answers. Be careful if you use GPUs for security related things. This is because of how floating point arithmetic works in CPUs/GPUs - the same thing th…
I was having a look around at vector databases to have a play with document search and realised that suddenly there's support all over the place for them, even from the big players. ELI5: geo databases query 2 dimensiona…