Sign in

Greg Sullivan

@gregsullivan.com
24 followers 30 following 29 posts

Freelance WordPress developer. I write about making websites with WordPress, Tailwind CSS and Alpine.js. Working on underscoretw.com. He/him.

PostsRepliesMedia
Greg Sullivan @gregsullivan.com · 12/03/2026
My to-do item for “make a screencast” has devolved into creating my own PHP_CodeSniffer LSP extension for Zed, and it works so much better than before, but I can see the argument that maybe I shouldn’t have treated this as a blocking issue
000
Greg Sullivan @gregsullivan.com · 06/10/2025
Hey Adrian—Great to hear from you! Email is probably best: greg@gregsullivan.com Happy to discuss things further, and hope things are going well!
010
Greg Sullivan @gregsullivan.com · 15/07/2025
Claude Code and I came up with a plan to use `tower-lsp` to write our own language server in Rust and optimize it for Zed / `phpcs` specifically, but that might be more work (for me personally, even with AI assistance) than is warranted for a private Zed extension.
000
Greg Sullivan @gregsullivan.com · 15/07/2025
The one limitation is that EFM and Zed don’t agree on how to handle tabs, and neither has configuration options to resolve the issue. So I just have it underline the first character of lines with errors or warnings. I wanted to underline the entire line, but EFM doesn’t seem to support that.
100
Greg Sullivan @gregsullivan.com · 15/07/2025
Claude Code also got completely stuck 4–5 times, but was able to pick things up again when I explained what it was doing wrong. Given that the Zed extension is written in Rust, and I have never used Rust before, this all still feels like a pretty solid outcome.
100
Greg Sullivan @gregsullivan.com · 15/07/2025
Claude Code told me to give up multiple times, saying it couldn’t be done, which was an interesting experience. (It seemed obvious to me that Claude Code wasn't supplying the YAML configuration properly, but Claude Code really fought me on it.)
100
Greg Sullivan @gregsullivan.com · 15/07/2025
I’m trying to switch to Zed, but Phpactor was so slow that I almost gave up. Intelephense is fast, but doesn’t support PHP_CodeSniffer. I ended up using Claude Code to create a Zed extension that embeds the EFM language server to wrap `phpcs` and `phpcbf`. And it works!
100
Greg Sullivan @gregsullivan.com · 09/06/2025
The last time I went to No Frills, I spent $97.50 on cheese. It didn’t feel great, and I will do it again.
010
Greg Sullivan @gregsullivan.com · 18/04/2025
Sometimes on personal projects, I spell “colour” the Canadian way in variable names, as a treat. Then I realize I still need to spell it the American way in CSS properties and everywhere else, and I feel regret.
020
Greg Sullivan @gregsullivan.com · 11/04/2025
I just sliced an image for an HTML email, and I feel young again. But I don’t miss doing this.
020
Greg Sullivan @gregsullivan.com · 12/03/2025
Yesterday I stumbled upon the new `css-only` branch in the Tailwind Typography repository, and I’m still feeling excited about what this will mean for _tw. (My only worry is that any videos I record about Tailwind Typography before its CSS-only release will become outdated almost immediately.)
020
Greg Sullivan @gregsullivan.com · 24/02/2025
...Tailwind colours being overwritten by slugs from the `theme.json` file since it happened somewhat “magically” before. This makes it more explicit: You can see the colours being pulled from `theme.json`, and you need to decide to add them. Did you notice any other instances of added repetition?
000
Greg Sullivan @gregsullivan.com · 24/02/2025
My goal with the new approach to `theme.json` was still to avoid duplicating any values, instead referencing them in the CSS config. What are your thoughts on that approach? I’m not sure I’d exactly qualify it as repetition. The other side of this is that I know there was confusion surrounding...
100
Greg Sullivan @gregsullivan.com · 18/02/2025
You’re not doing anything wrong! I discussed the change here: underscoretw.com/release-note... It would be feasible to bring it back, but you would need to switch to using PostCSS instead of the Tailwind CLI directly: tailwindcss.com/docs/install...
100
Greg Sullivan @gregsullivan.com · 27/01/2025
Please let me know if you have any feedback once you do! I’m hoping to make some videos, especially around Tailwind Typography set up, in February, so I’m very open to suggestions on things I should be covering.
020
Greg Sullivan @gregsullivan.com · 24/01/2025
I’m going to revisit the documentation and inline comments after I get a sense of the questions people have over the next few weeks, but for now you can view the updates on GitHub, or generate a theme for your next project at underscoretw.com. Any feedback or questions would be much appreciated!
000
Greg Sullivan @gregsullivan.com · 24/01/2025
And as an added bonus, I upgraded ESLint to version 9, which was its own adventure. (ESLint 9 deprecates earlier approaches to configuration. The new way really does seem better to me, though.)
100
Greg Sullivan @gregsullivan.com · 24/01/2025
CSS-first configuration also provides an obvious way to support `theme.json` values in Tailwind, removing the need for the Tailwind plugin I wrote to handle automatically adding colours and widths from `theme.json` as Tailwind theme variables.
100
Greg Sullivan @gregsullivan.com · 24/01/2025
The changes allowed me to remove many things from _tw, some because they were now deprecated, and others because I couldn’t justify keeping them when everything else had been stripped away. Development dependencies in `package.json` went from 23 to 13.
100
Greg Sullivan @gregsullivan.com · 24/01/2025
There’s a huge amount of new stuff in Tailwind 4, and I’m not going to attempt a recap. It’s really fast, and configuration has been greatly simplified, but that barely scratches the surface. You should read this if you want to know everything that has changed: tailwindcss.com/blog/tailwin...
100
Greg Sullivan @gregsullivan.com · 24/01/2025
So, Tailwind 4! _tw now fully supports the latest version, and it has been updated to use CSS configuration. Before I go any further, If you’d prefer to read this in proper release-notes form, you definitely can: underscoretw.com/release-note... But if you prefer it as a thread, read on!
240
Greg Sullivan @gregsullivan.com · 23/01/2025
All done! Tomorrow I’m going to start following people on Bluesky and post a thread about the Tailwind 4 updates, but for now, they’re available on GitHub and via the generator.
010
Greg Sullivan @gregsullivan.com · 23/01/2025
Just pushed a commit for `Update to ESLint 9` to GitHub, because I know that’s what everyone’s excited to see
010
Greg Sullivan @gregsullivan.com · 23/01/2025
The “Removed” section of this changelog entry is getting intense.
000
Greg Sullivan @gregsullivan.com · 22/01/2025
My downloads folder is half test builds of _tw and half colouring pages of Disney villains I downloaded for my daughter’s birthday party. Not sure the work I’m doing can match `Scar-On-Cliff-With-Hyenas-Coloring-Sheet.pdf`
000
Greg Sullivan @gregsullivan.com · 22/01/2025
Losing track of the number of npm packages I’ve been able to remove from _tw while prepping for Tailwind 4.
010
Greg Sullivan @gregsullivan.com · 07/01/2025
Growing up, my parents always listened to a local classic rock radio station while we got ready for school. Now I listen to an indie rock station on satellite radio as my kids get ready for school, and the indie rock songs are about as old now as the classic rock songs were then.
000
Greg Sullivan @gregsullivan.com · 06/01/2025
Returning for a full week of work after seeing in the new year with Demolition Man on December 31 and Passenger 57 on January 1. If there was a better way to begin 2025, I can’t imagine what it would have been.
000
Greg Sullivan @gregsullivan.com · 02/01/2025
As the holiday season winds down, my defining memory of Christmas 2024 will be of my daughter insisting on listening to the Korn cover of “Kidnap the Sandy Claws” on repeat on the drive home from her preschool holiday concert.
010