Duncan McClean

Duncan McClean

@duncanmcclean.com

Christ follower. Software Developer @statamic.com. Building builtwithcargo.dev

1.2K followers104 following493 posts

Pinned

I've just tagged v1.0.0 of Cargo! πŸ“¦πŸš€ Cargo is a comprehensive e-commerce addon for Statamic. It behaves like a first-class citizen - you model your content how you want, and Cargo fits in around it.

Duncan McClean reposted

Tickets for Statamic Summit are now available! It includes all talks, workshops, 3 meals a day, 3 nights lodging in the castle, and all the coffee, tea, & beverages you'd like. There's never been a better environment for learning and relationship building. https://statamicsummit.com/

Duncan McClean reposted

I’m looking for my next role, freelance/contract, or full-time. Senior developer and tech lead with 10+ years of experience, mainly in PHP/Laravel. Based in France and looking for fully remote work. If you’re hiring, or know a team looking for someone with my background, feel free to reach out.

Just published Best Before, a package to make sure temporary code, like backfill commands, is deleted instead of hanging around for years. Plop #[BestBefore('2026-12-25')] on a class or a method and CI will fail once it's gone off. Like out-of-date milk! πŸ₯›

Automatic Renewals have been a long time coming... and they're finally here! πŸš€ You can enable renewals for Statamic & Cargo during checkout or from your account's licenses page.

Statamic@statamic.com

β€œHey, just following up on that license renewal…” You can retire that email now. Turn on Automatic Renewals for Statamic Pro & eligible Marketplace products, and move on. Save those chats for things that really matter. Like making the logo bigger. https://statamic.com/blog/automatic-renewals

I released a few common feature requests for Cargo over the weekend! πŸ“¦ - Added support for "Free Shipping" discounts - Improved line item metadata support (it's now visible in the CP!) - cargo:install now publishes an "order shipped" email

Before releasing Cargo earlier this year, I thought I was gonna hire someone to help me keep up with bugs & feature requests. Today, I barely look at bug reports. I point Claude at the issue, it opens a PR, and after a quick review I ship it. πŸš€

Obviously, having a large test suite helps with this. I can ship fixes with confidence... without testing everything manually. I'm only _really_ involved more complicated PRs or planning out new features. Freeing up my spare time to hack away on ideas!

Glasgow's famous traffic cone made it into the featured image! 🏴󠁧󠁒󠁳󠁣󠁴󠁿 @emd.cosocial.ca.ap.brid.gy tried one on too!

Statamic@statamic.com

Hope you enjoy our Laracon wrap-up post! We sure enjoyed our time in Boston with the community. Ya'll are wonderful. https://statamic.com/blog/laracon-us-2026

Duncan McClean reposted

Duncan McClean reposted

I’m currently looking for remote freelance or full-time opportunities in web development. Expertise in Laravel, Vue, React, Alpine.js, Livewire but open to anything. 12 years of experience. Available immediately. France, UK, Europe.

Duncan McClean reposted

Antlers Toolbox for PHPStorm is now available! Huge thanks to John Koster for a truly obsessive level of passion for this kind of stuff. 🫢

Duncan McClean reposted

Duncan McClean reposted

Statamic turns 14 today! πŸŽ‚πŸŽ‰ Here's our launch post β€” from an era of the web that glows warmly with nostalgia. Also in 2012β€” Facebook went public and acquired recent photo sharing startup Instagram for $1 billion. Yahoo! bought Tumblr for $1.1 billion. Slack and Tinder launch. Wild. ❀️

Something is wrong with my Claude Code and I can't figure it out... The latest model I can use is Opus 4.5. It claims that updates are available but Homebrew says I'm on the latest version. I've tried re-installing and clearing my .claude directory to no avail. Any ideas?

Duncan McClean reposted

Our friend Marty Friedel is taking the stage at Laracon AU in Brisbane this November with a talk called High Performance Statamic β€” the story of dragging a decade-old, 50k-page site into Statamic + Bard and making it FAST.

I've had this one in my drafts for a while. We recently needed to set up Satis to distribute private packages. We could have used Private Packagist but we opted to self-host using Satis instead. Here's how we set up Satis on a Laravel Forge server. ⬇️ duncanmcclean.com/satis-larav...

duncanmcclean.comSetting up Satis on Laravel ForgeWe recently set up Satis for distributing private packages at work. We could have used Private Packagist but we opted for Satis because we wanted to control auth and avoid an unnecessary monthly expense.

Duncan McClean reposted

As an OSS maintainer, my new rule is that anything a frontier model can find with some reasonable effort is a 0-day. Hence why I'm now shipping security releases on public holidays.

Duncan McClean reposted

Ran into something I hadn't considered with clearinghouse.app this week. Accountants/bookkeepers are a big audience for my app, but while one was onboarding, they realised that only admins can install Stripe apps. They only had "Accountant" access (and rightly so) 😬

clearinghouse.appClearingHouse: Sync Stripe revenue into FreeAgentClearingHouse syncs Stripe invoices, payments, refunds and fees into FreeAgent with per-product categorisation and multi-currency support.

Duncan McClean reposted

🚨 Supply chain attack on the Laravel Lang organization: 700+ historical versions across multiple community-maintained Laravel Lang packages were compromised with an RCE backdoor, including: laravel-lang/lang laravel-lang/http-statuses laravel-lang/attributes Laravel-Lang/actions

socket.devLaravel Lang Compromised with RCE Backdoor Across 700+ Versi...Laravel Lang packages were compromised with an RCE backdoor across hundreds of versions, exposing cloud, CI/CD, and developer secrets.

Duncan McClean reposted

If you haven't updated Composer to 2.9.8 or 2.2.28 (LTS), do so urgently! GitHub will restart the rollout of their new GitHub Actions tokens later today. They've improved secret masking to cover this Composer issue, but you're safer if you update. #composerphp #php #phpc

Packagist@packagist.com

🚨 Security advisory: Composer 2.9.8 and 2.2.28 fix a vulnerability leaking GitHub Actions GITHUB_TOKENs to job logs via error messages. Update now or disable affected workflows. blog.packagist.com/composer-2-9... #composerphp #phpc #php

Ran into something I hadn't considered with clearinghouse.app this week. Accountants/bookkeepers are a big audience for my app, but while one was onboarding, they realised that only admins can install Stripe apps. They only had "Accountant" access (and rightly so) 😬

clearinghouse.appClearingHouse: Sync Stripe revenue into FreeAgentClearingHouse syncs Stripe invoices, payments, refunds and fees into FreeAgent with per-product categorisation and multi-currency support.
View full thread

My workaround: install links. An accountant sends a link to their client. Client clicks the link, authorises the Stripe app, done. Accountant gets an email and continues setup.

Ran into something I hadn't considered with clearinghouse.app this week. Accountants/bookkeepers are a big audience for my app, but while one was onboarding, they realised that only admins can install Stripe apps. They only had "Accountant" access (and rightly so) 😬

clearinghouse.appClearingHouse: Sync Stripe revenue into FreeAgentClearingHouse syncs Stripe invoices, payments, refunds and fees into FreeAgent with per-product categorisation and multi-currency support.

Sure, they could ask their client for elevated privileges, but it's a little awkward. "Hey client, can you please make me an admin so I can install this app to make my job easier? Pretty please?"