Practical .NET, software, and AI tutorials by Gerard Beckerleg, a developer in Sydney.
- How I made shipping a side project boring
I have projects on my local machine that nobody else has seen. Not because the ideas were bad, but because getting from localhost to a real URL felt like too much work. Setting up a server takes time. So does DNS, SSL, and deployment scripts. By the time it’s all done, the motivation is usually gone.
- Traefik + Cloudflare: Fix 526 SSL Error by Switching to DNS Challenge
Traefik uses HTTP-01 ACME challenge by default. The way it works is: Let’s Encrypt sends a request to http://yourdomain/.well-known/acme-challenge/<token> and checks that Traefik responds with the right token. If it does, cert issued. The problem is Cloudflare. When the orange cloud proxy is on, Let’s Encrypt’s request hits Cloudflare’s servers, not your origin. Traefik placed the challenge token on the origin. Cloudflare has no idea it’s there. It returns a 404. Let’s Encrypt fails the validation. No cert.
- Self-Hosted Hugo Blog: Forgejo + Forgejo Actions + nginx + Traefik
A walkthrough of migrating this blog off AWS (CodeCommit + CodeBuild + S3 + CloudFront) onto a self-hosted stack using Forgejo for git and CI/CD. Most of the config was written by Claude Code. The old AWS stack was four services doing what two containers now do. The migration was part of a consolidation onto Oracle Cloud free tier VMs. The target infrastructure was already there: a Forgejo instance on one VM and a Docker/Traefik apps server on another.
- Ubuntu on Windows Subsystem for Linux (WSL 2) can't open /var/run/atd.pid to signal atd. No atd running?
When trying to add a scheduled script using at on Ubuntu in Windows Subsystem for Linux (WSL 2) using the following command: at now + 1 minute -f testat.sh I recieved the following error: Can't open /var/run/atd.pid to signal atd. No atd running? This is due to the fact that the at daemon is not running, to start the daemon use:
- VS Code Interactive Notebook '*-*' is not a valid version string
When installing a NuGet Package in a VS Code Interactive Notebook with a C# (.NET Interactive) code block using the follwing command I copied from this Microsoft tutorial: #r "nuget:Microsoft.DotNet.Interactive.SqlServer, *-*" I recevied the following error: '*-*' is not a valid version string In order to fix this I went and found the latest version number from the NuGet Gallery page for the package and updated the command to include a specific package number instead of the *-*:
- Cloudflare Pages /opt/build/bin/build: line 39: zola: command not found
While deploying a test Zola site to Cloudflare Pages I recieved the following error in the build logs: /opt/build/bin/build: line 39: zola: command not found The error is because in order to use Zola with Cloudflare Pages you need to specify the version of Zola that you are using in a Production Environment Variable like so:
- OpenRouter API response missing text in JSON payload
OpenRouter API response missing ’text’ in JSON payload Testing OpenRouter with gpt‑4 turbo. Request looked fine but the completion field came back empty: { "id":"chatcmpl-xxxx", "choices":[ {"index":0,"logprobs":null,"finish_reason":"stop"} ], "model":"gpt-4-turbo-preview", "usage":{...} } No choices[0].message.content. cURL request: curl https://openrouter.ai/api/v1/chat/completions -H "Authorization: Bearer $OPENROUTER_KEY" -H "Content-Type: application/json" -d '{"model":"gpt-4-turbo-preview","messages":[{"role":"user","content":"hi"}]}' Turns out OpenRouter now requires the header HTTP-Referer (your site) and X-Title (app name) for non‑localhost keys.
- langchain.tools.SerpAPIWrapper throws Invalid API Key despite valid key
langchain.tools.SerpAPIWrapper throws Invalid API Key despite valid key Spotted this today while wiring a quick search tool. from langchain.tools import SerpAPIWrapper tool = SerpAPIWrapper() print(tool.run("Sydney weather")) Console spat back: SerpApiError: Invalid API key Key worked in curl. Quota fine. Python 3.11, langchain 0.1.12, serpapi 0.6.2. Environment variable SERPAPI_API_KEY was set.
- AutoGPT stuck repeating the same task loop
AutoGPT stuck repeating the same task loop Last night I let AutoGPT try a simple research job. It found the first website, wrote a plan, then looped on the same “visit site” action forever. INFO Running with goal: Research Rust async examples THOUGHT Visit https://tokio.rs/ ACTION browser.open_url RESULT Page loaded THOUGHT Visit https://tokio.rs/ ... Docker image significantgravitas/autogpt:0.4.2, Python 3.10.11. Running on WSL2 Ubuntu 22.04. OPENAI_API_KEY set, no proxy.
- langchain load_tools() throws KeyError for requests
langchain load_tools() throws KeyError for ‘requests’ Yesterday I was wiring up a quick agent and called: from langchain.agents import load_tools tools = load_tools(["requests"]) The import blew up with: File ".../langchain/agents/load_tools.py", line 78, in load_tools tool = TOOL_NAME_TO_CLASS[name] KeyError: 'requests' Python 3.11, langchain 0.0.259, running on Windows 11 PowerShell.