Premise one: Software shapes the people who use it.
Premise two: I write software.
Therefore: I think hard about what I build.
Liam Goring
Full stack developer and philosopher
I build production-grade web apps and think carefully about how AI changes the craft.

About
I'm a full stack developer who thinks carefully about what software is actually for. I work across the frontend and the backend1, but the thread running through all of it is how technology shapes the people who use it.
That interest led me to publish writing on AI ethics in Becoming Human2 and to pursue philosophy alongside my engineering work. I think the best developers aren't only technically sharp. They ask harder questions about systems, incentives, and consequences.
Day to day I use AI tools throughout my workflow, from code generation to research to documentation. I keep a critical eye on where automation helps and where human judgement is irreplaceable3. That balance is what I bring to every project.
Work and writing
Things I've built and written, in order.
The Ethical Computer Professional
What do we owe the people our code affects?
An essay on the ethical responsibilities that come with writing software: professional conduct, AI, privacy, and the social impact of technical decisions. Published in Becoming Human, an AI-focused publication on Medium.

Jokebot
Could a bot learn humour from the people it talks to?
A full-stack chatbot that tells knock-knock jokes and learns new ones from users, saving them to a SQLite database.
PicBot Express
Set it and forget it, for servers that want a steady stream of images.
A Discord bot that posts images from a configured library on a schedule.
DIP-Bot
A toolkit for servers that post a lot of images.
A Discord bot built with Python and MySQL that provides image posting utilities for servers.
–present
This portfolio
A place to show the work and the thinking behind it.
Built with Astro and TypeScript, and deployed to GitHub Pages with GitHub Actions.
Skills, indexed
The tools I reach for, alphabetically.
A
- Agile, practice
- AngularJS, frontend
- Astro, frontend; see also TypeScript
- AWS, tools
C
- ChatGPT, AI; see also Prompt engineering
- Claude, AI; see also Prompt engineering
D
- DevOps, practice; see also Docker, GitHub Actions
- Docker, tools; see also DevOps
G
- Git, tools
- GitHub Actions, tools; see also DevOps
- GitHub Copilot, AI
K
- Kiro, AI
L
- Laravel, backend; see also PHP, Jokebot (project)
M
- MySQL, backend; see also Python
N
- Node.js, backend
P
- PHP, backend; see also Laravel
- Prompt engineering, AI
- Python, backend; see also DIP-Bot (project), PicBot Express (project)
R
- REST APIs, practice
S
- SEO, practice
V
- VS Code, tools
- Vue.js, frontend; see also Jokebot (project)
W
- Web performance, practice; see also SEO
AI in my workflow
Not a replacement for thinking, a force multiplier.
Where I draw the line in each area of work. The splits are a rough sketch, not a measurement.
What I hand offBoilerplate, scaffolding and first-pass debuggingKiro, GitHub Copilot, Claude
What I keepArchitecture and the logic that matters
I use Kiro, GitHub Copilot and Claude to speed up development, from generating boilerplate to chasing tricky edge cases. AI handles the repetitive scaffolding so I can focus on architecture and logic.
I hand off most of this.
What I hand offDigesting long docs and unfamiliar APIsChatGPT, Perplexity, Claude
What I keepDeciding what is true and what matters
LLMs changed how I research unfamiliar APIs, digest long docs and explore new domains. What used to take hours of reading now takes minutes of targeted conversation.
Roughly an even split.
What I hand offBrainstorming edge cases and test scenarios
What I keepJudging which issues are real and what ships
AI helps me think through edge cases, generate test scenarios and review my own code for issues I might have missed. It is a tireless second pair of eyes on every pull request.
Roughly an even split.
What I hand offA working first draft of pipelines and scripts
What I keepDefining the problem and reviewing the result
From CI/CD pipeline configuration to one-off data transformation scripts, AI cuts the time I spend on automation. I describe the problem; it proposes a working starting point.
I hand off most of this.
What I hand offDrafting and line edits
What I keepThe ideas, domain knowledge and final call
Blog posts, READMEs and spec documents all benefit from AI drafting and editing. I keep the ideas, the domain knowledge and the final judgement; AI helps me say them clearly.
I keep most of this.
What I hand offExplanations on demand and Socratic questioning
What I keepThe understanding itself
AI has become an on-demand tutor. It explains new concepts, walks through algorithms and challenges my understanding through Socratic dialogue, with instant feedback alongside traditional learning.
I keep most of this.
I have written about the ethics of technology and AI, including an article in Becoming Human(opens in new tab), so I care about how and why these tools get adopted. AI is most useful when the developer keeps ownership of the problem, the architecture and the outcome. It accelerates execution; engineering judgement still drives every meaningful decision.
If any of this resonates, let's talk.
I'm open to collaboration, new opportunities, or just a good conversation.