Blog
Articles about web development, design, performance, and related topics. Subscribe via RSS to keep up with new articles, or browse by topic.
- 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.
- Open Graph Tags for Useful Link Previews
Set Open Graph tags for article titles, descriptions, URLs, and images, then inspect the returned HTML and diagnose missing or outdated sharing previews.
- 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.
- Todo.txt: A Plain Text Task List You Can Keep
Use Todo.txt for a portable task list with priorities, projects, contexts, and completion dates. Filter tasks with a script and keep the file readable.
- Self-Hosting Web Fonts Without Overcomplicating It
Serve WOFF2 fonts from your own site with a focused @font-face rule, sensible fallbacks, and the right licence and caching checks.
- Start TypeScript With the Code You Already Have
A practical introduction to TypeScript types, narrowing, functions, API boundaries, and a small project setup.
- CSS Image Inversion With invert() and SVG Filters
Use CSS image inversion on images and icons, compare filter order, and choose currentColor or an SVG filter when a simple invert() is the wrong tool.
- CSS z-index: Why a Huge Number Still Does Not Work
Fix CSS z-index problems by inspecting stacking contexts, parent layers, and clipping, with a complete overlap example and deliberate fixes to compare.
- HTTP Status Codes: Debug the Request and Response
Read HTTP status codes alongside methods, headers, and bodies. Debug redirects, caching, authentication failures, rate limits, and upstream server errors.
- What Schema.org tells search engines about a page
Use Schema.org vocabulary and JSON-LD to describe articles, products, and organisations, then validate the markup without expecting guaranteed rich results.
- What robots.txt does and what it doesn't
Use robots.txt to manage crawler access, publish a sitemap, and avoid the common mistake of treating Disallow as noindex or authentication.
- FFmpeg Commands for Conversion, Trimming, and Filters
Use practical FFmpeg commands for conversion, stream copying, accurate trims, audio extraction, scaling, filters, and batch jobs that preserve originals.