The medium of the application (i.e. where or what is the application?)
Consider a task to consist of a problem or a set of problems, a solution process and a set of outputs.
The solution process is defined within some medium. This medium might by physical (e.g. pen and paper, whiteboard, physical objects) or digital (e.g. a spreadsheet, an executable application, a script, a database, a chatbot).
When we are working on a task with the assistance of an AI agent, we can attempt to solve the problem directly or have the agent indirectly use another medium to solve the problem.…
Read more ⟶
Two interesting blogs (and one article) on coding with agents
Two blogs that provide incredible and intimidating demonstrations of the levels that some people are taking agentic coding to.
https://blog.fsck.com/
https://simonwillison.net/
And article: https://mitchellh.com/writing/non-trivial-vibing…
Read more ⟶
Creating a "local" VPN network
Now that I have a point-to-point Wireguard connection between my desktop and my VPS, I want to create a small network of devices that can communicate with each other over the VPN. This will look like a “local” network, but it is actually a virtual network overlaid on the internet and my home network.
With such a network I should be able to, for example, connect to my home desktop from my laptop when I am away from home (without needing to open ports on my home router).…
Read more ⟶
Notes: debugging WireGuard
On the client Wireshark with the following filter: (ip.dst_host == <server ip> || ip.src_host == <server ip>) && ip.proto == 17
On the server Check the WireGuard interface status:
sudo wg show Enable and view debug logging for WireGuard:
sudo modprobe wireguard echo "module wireguard +p" | sudo tee /sys/kernel/debug/dynamic_debug/control dmesg -wT | grep wireguard …
Read more ⟶
Setting up a VPN with WireGuard
This is not a guide to setting up WireGuard. It is a log of the steps and missteps I took to set up Wireguard on a VPS.
I had previously set up WireGuard once before in order to be able to access my home network whilst traveling. In that instance I had used the wg-easy Docker image. I remember that it pretty much worked out of the box and so I didn’t have to think at all about the internal workings of the VPN and how it interfaced with the OS.…
Read more ⟶
Configuring and starting WireGuard
Installing WireGuard on the Server Install the WireGuard tools sudo dnf install wireguard-tools Generate a private key for the server wg genkey | sudo tee /etc/wireguard/server.key Generate a public key for the server sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub Create the WireGuard configuration file /etc/wireguard/wg0.conf with the following content: [Interface] PrivateKey = <Insert Server Private Key Here> Address = 10.20.10.1 ListenPort = 51820 Generate a private key for the client wg genkey | sudo tee /etc/wireguard/client.…
Read more ⟶
Getting a Hetzner VPS
Getting the VPS I selected a Hetzner “CAX11” instance (2 vCPUs, 4GB RAM, 40GB SSD, €3.95/mo) running CentOS Stream 10. I chose Nuremberg for the location as this was the closest to me and, all this being an experiment, I chose the cheapest instance type. I knew that CentOS had a reputation for being a boring and stable server OS and so, being relatively uninformed in such matters, it seemed like a reasonable choice.…
Read more ⟶
Bread
The Starter The starter is a mix of equal parts flour and water stored in a non-airtight container. It needs to be periodically fed in order to keep it alive. This means adding fresh flour and water in equal parts and mixing. It makes sense to feed your starter shortly before (within 8-24 hours) baking with the same amount of starter that you are going to use in the recipe so that it is at its most active to bake with and you maintain an approximately constant volume of starter in the long term.…
Read more ⟶
Meta
This site was created with hugo using the Archie theme, is served using nginx and hosted on a DigitalOcean droplet.
Deployed like so:
hugo && rsync -avc public/ ocean:~/blog nginx configuration:
server { listen 443 ssl; server_name chriswh.co.uk; root /home/chriswheeldon/blog/; index index.html; location / { try_files $uri $uri/ =404; } # SSL stuff # ... } …
Read more ⟶