Effective prompt engineering for AI newbies

Here’s a little guide on how I speak to my LLMs. I’m a very heavy Claude user, but I’m entirely sure these same tactics work across all models because they’re fundamental to the way LLMs work.

As a disclaimer, I don’t think anything in here is particularly groundbreaking or novel; I’m just sharing my thinking and why I frame things the way I do when using these tools.

The basics

First up - the basics. It’s a machine.

Read more →

Vibe-coding Screenshooter with Copilot

One of my favourite things about being a software developer in 2025 is the ever-increasing ability to quickly spin up side projects and tools that don’t make economical sense and don’t teach you enough to justify much effort.

For example, I’ve made a tool called Screenshooter, which is an entirely client-side screenshot stylising tool.

It lets you upload an image or screenshot, and then apply simple skew, zoom, and grain effects, for consistent images for social media and so on.

Read more →

Vibe-coding automatic OpenGraph images with Hugo and Claude

Claude 3.7 Sonnet and I have vibe coded automatic OpenGraph image generation for Hugo.

I found a bunch of other ways of doing this like I linked to before, but this uses an incredibly simple technique: use the canvas library to draw the logo and post title, and save the image. It’s much simpler than trying to wrangle Puppeteer or Playwright, which are great but huge overkill for the simple text-heavy styling of this site.

Read more →

Generating JWTs for GitHub Apps with PHP

As I’m working on my new AI startup Rivets, I’ve been setting up a GitHub App.

That’s not an OAuth app, but the second type they provide, where the app can operate as itself as opposed to operating as you on your behalf.

There’s an excellent PHP library lcobucci/jwt available to handle the meaty parts of generating JWTs, but I had some trouble getting it working with GitHub Apps specifically, as there are some quirks, and not a huge range of examples.

Read more →

Using Coolify as an alternative to Laravel Forge

The more I use Coolify, the more I’m impressed by it. It’s a great alternative to platforms like Laravel Forge, Vercel, Heroku and others.

Following on from my previous post about setting this up, I’ve also published a Github repository to make it easy to get started.

Coolify handles everything I’ve thrown at it, and I’m using it in production with PHP, Node, Python, Postgres, and MySQL. If you work across different technologies or like to experiment, it’s never been easier to take back control from the cloud and run things on your own servers.

Read more →

How do you find the good stuff buried in the noise?

I read a lot so you don't have to

Every week: 5 links that are actually worth clicking. AI, software development and more.
Zero spam.