Plex has been enshittifying for a while by pushing its crappy on demand stuff. The final straw was Plex blocking access to your home server from remote locations without a pro account, so I decided it was finally time to move on. I’d been hearing good things about Jellyfin - an open source project with an active community. Here are the steps I went through, not in any granular detail, but…
I guess as a full time web development nerd this was almost inevitable, but I’ve made a definitive switch from Mac to Linux in the last year. I’ve never been fully invested in the Apple ecosystem - never owned an iPhone as I never quite saw the appeal nor the justification for the expense so have always stuck with Android handsets since the great Nokia changeover days. However…
So this is an article I originally wrote last year for our agency’s internal knowledge base. It’s primarily aimed at junior devs, and I thought I’d share it on my public blog for others to peruse. To be clear, I use LLMs daily for work and play, whether that’s within Neovim or Zed, locally run Ollama models, or ChatGTP/Gemini web interfaces, so I’m hardly an anti-LLM…
Some of the projects I’ve been working on recently. Independent Work These are personal and freelance projects. recordlabel.io - a forthcoming suite of digital tools/webapps for record labels including promotion, management and distribution. Backend stack includes SlimPHP and Laravel. Grace & Goldney - affordable luxury curtains and blinds in the UK. An ecommerce site built with Sylius and…
Some of the tools I use on a daily basis. Some day, I’ll get round to sharing my dotfiles too! Editors Neovim (main driver) and Micro (quick edits) Windsurf, Gemini and Claude for AI code completion and chat Terminal Wezterm, with Starship prompt on bash Notable tools: exa, bat, fzf, difft, mcfly, navi, glow, jless, chezmoi, cecli, ollama, lazygit, aichat, btop, lazysql Desktop Ubuntu 25.10,…
I’m currently working on a Nuxt 3 project and found myself wanting to use Histoire (the Vue/Vite ecosystem Storybook alternative) for the component documentation. I’d abandoned the attempt earlier during development as Histoire wasn’t quite stable with Nuxt back in the autumn, but recent Histoire updates (v0.17.6 as at time of writing) seem to have fixed those legacy issues.…
I ran into an issue recently when I wanted to share a Histoire book in a Laravel project which uses Valet. By default, Histoire runs on port 6006 of the valet domain (e.g. https://my-project.test:6006) rather than localhost, but valet share will only share ports 443 and 80 out of the box, and only works from the directory you run it from. I couldn’t use tunnelmole as that only works with…
I’ve started working on a greenfield Laravel project and want to have a component/design system in place from the outset. My front-end stack will most likely be Stimulus and/or Vue 3 for interactivity, and CubeCSS methodology using UnoCSS and SASS with TailwindCSS as my utility layer. I haven’t got into Inertia or Livewire, so this will be classic rest API plus frontend JS. As for…
I’m an avowed fan of Laravel and it’s one of my go to frameworks for php development. However these days its default frontend stack - TailwindCSS, Inertia or Livewire, AlpineJS - seems somewhat esoteric and contrarian to me, apart from Tailwind. Whether that’s a fair assessment or not, it has definitely diverged from my own preferences. My usual frontend stack is UnoCSS for…
A little gist of a bash alias to upgrade all the things, which lives in my bash profile. # Upgrade all the things alias uatt='cd ~ && brew update && brew upgrade --ignore-pinned && brew cleanup && composer global update && cgr update && nvm install --lts '' --reinstall-packages-from=node && nvm install-latest-npm && npm -g update && corepack prepare pnpm@latest --activate && phive selfupdate &&…
WordPress, the jack-of-all-trades blog platform/CMS, has clearly made its mark on the web. But let’s be real - having to develop anything custom on top of it is hard-going if you’re used to more modern PHP frameworks such as Laravel or Symfony. Late last year I gave a lightning talk at PHPSW exploring the highs and lows (ok, mostly the lows) of working with WordPress, and then…
A while back, I started looking at self-hosted alternatives to Disqus for this blog, mainly since Disqus is slow to load as well as being a privacy nightmare. For the blog itself I use the excellent static generator hugo and host via netlify. I was looking for something: self-hosted so I’m not reliant on any third party service easy to embed with a js snippet After a bit of research, I…
Migrating from the bird site I’ve recently started using Mastodon during the Great Twitter Migration / Eternal November episode - I’m not a particularly avid Twitter user, I follow a few code and music people, search for my music release mentions, and do occasional music or code-related retweets or self-promotional posts, but for the most part I just lurk and use it as a news/current…
The application I’ve mentioned in a previous post that I’m currently building an application on top of Slim 4. Slim is a bare bones, micro framework, so I need to pick and choose the third party libraries I work with to build out the application. In this case I’m running Pest as the test framework, Cake’s Phinx for database migrations, and Laravel’s Eloquent ORM. This…
Standalone Job Queue I had a need for a simple job queue implementation for a project I’m working on, Promo by Recordlabel.io. The underlying (micro) framework is Slim 4 which is very much bare bones - a bit of underlying http glue really - with pretty much everything else provided by a patchwork of third party packages. For example I’m using Laravel’s Eloquent ORM, and a bunch…
Introducing Forme I’ve been quietly working on Forme for the last couple of years, mainly to scratch my own day to day development itch over at Sanders Web Works, where I’m the lead dev. We’ve recently open sourced it over on Github and it’s about time I wrote a little introductory blog post about it! In a nutshell - it’s an MVC framework built on top of WordPress. It…
I use ffmpeg, the famed media swiss army knife, to handle some of the audio conversion tasks in my record label management app, which is a pretty straightforward Laravel 8 thing running on a tiny and cheap AWS Elastic Beanstalk Linux instance. Whenever I push changes to the app, my workflow is to create and provision a brand new instance using the eb cli with the usual salad of yaml files, run eb…
I’ve recently been building an ecommerce site for the family home textile business, as you do. When choosing the platform, my main criteria were that it should be based on Symfony or Laravel, and that it definitely shouldn’t be Magento. I think I’ve already alluded to my thoughts on Magento 2 being a hulking, bloated and buggy mess in a previous post, and might well expand on…
Our household internet is with EE. Why? Well we were on BT Infinity for a few years, with its supposed high speeds and availability, but never got anywhere near the promised data speeds, so decided to cut costs and give EE a try. I thought it couldn’t be too much worse at least, and the savings would be worth the risk. We’re not extreme gamers or anything, but like many families we…
At the agency I work for, much as in any PHP shop, we do a fair amount of WordPress builds and maintenance. The WP codebase is ancient, and is about as far removed from today’s Laravel/Symfony best practises as it can be. Having said all that, it’s ubiquitous and of course still very much the most popular CMS in the world, and, to its credit, is very well-documented. A year spent…
I’m Moussa Clarke, a senior web developer currently hacking together projects for Sanders Web Works, a digital agency in the UK, as well as working on my own freelance side projects. I grew up on Basic and Z80 assembly, but I code mostly in TypeScript, PHP and Go these days. I’ve worked on a variety of projects using a bunch of frameworks and scripting doodahs. I’ll basically turn my hand to…
I’m a senior full-stack developer with over a decade of professional experience across agencies, SMEs, and my own projects. I’m currently available for limited freelance and contract work, whether you’re a business owner or a technical lead looking for a senior contractor. Whether you need someone to build something from scratch, untangle an existing codebase, or just sense-check…