Blog
Articles about web development, design, performance, and related topics. Subscribe via RSS to keep up with new articles, or browse by topic.
- Getting border-radius right on nested elements
For nested rounded elements, subtract the gap from the outer border radius to keep the two curves aligned.
- Why I block AI scrapers instead of setting traps
A few creative responses to AI scraping, from robots.txt rules to bot-specific responses—and why simple blocking is usually the better choice.
- Where I use CSS nesting and where I keep selectors flat
Use native CSS nesting for states, pseudo-elements, and media queries while keeping ordinary component selectors flat.
- The Fediverse Is Social Media Without One Central Platform
Mastodon, Pixelfed, PeerTube, and other independent services can communicate through open protocols such as ActivityPub.
- Bluesky Search Operators I Actually Use
Find exact phrases, people, links, languages, and date ranges on Bluesky with a small set of search operators.
- Use a Bluesky Post as the Comment Thread for a Hugo Page
Fetch replies, reposts, and likes from Bluesky's public API and display them below a Hugo article.
- Bulk Unsubscribe From YouTube Channels With a Browser Script
Use YouTube's subscription manager manually or run a browser-console script to unsubscribe from many channels.
- Add Mastodon Author Attribution to Your Articles
Connect shared articles to a Mastodon profile with the fediverse:creator meta tag and an allowed website domain.
- Let Form Controls Size Themselves With field-sizing
CSS field-sizing lets inputs, textareas, and selects grow with their content, with no JavaScript measurement code.
- A Simpler Light and Dark Theme With CSS light-dark()
Use the CSS light-dark() function with color-scheme to keep theme colors together without repeating media queries.
- Writing a technical blog people want to read
Build a developer audience by writing useful technical articles, showing real examples, and distributing them without turning the blog into a content machine.
- Delete Your Old Tweets With TweetXer
Back up your Twitter archive and use the open-source TweetXer script to remove old posts without a paid bulk-deletion service.
- AI Is Changing Marketing, but It Still Needs Supervision
Where AI helps digital marketing, where it creates risk, and why automation still needs data quality and human review.
- Should You Block AI Crawlers?
Blocking AI crawlers is a choice about access, attribution, server cost, and discoverability—not a complete way to protect public content.
- Which bots should you let crawl your website?
Web bots are better judged by identity, behaviour, and impact than by a simple good-or-bad label.
- What the EU Digital Services Act Changes Online
A practical overview of the Digital Services Act, including who it covers, its transparency rules, and the extra duties for very large platforms.
- The Open Graph Tags a Shared Page Needs
Add the essential Open Graph title, description, URL, image, and type so shared links have a useful preview.
- Free courses to start learning AI
A practical list of free AI courses, from non-technical introductions to Python, prompt engineering, NLP, and LangChain.
- What Google's March 2024 Update Targeted
Google's March 2024 core update and spam policies targeted scaled content, expired-domain abuse, and site-reputation abuse.
- Using UTM tags without making a mess of campaign names
Build consistent UTM-tagged URLs with source, medium, campaign, term, and content parameters that remain useful in analytics.