2026
Sep 11
/Web Development
How to leverage the wsrv.
Sep 11
/AI
Install and setup for Gemini CLI, Google's free open-source terminal coding agent.
Sep 11
/AI
Install, setup and real-world workflow for Claude Code, the AI coding agent I use daily for client work.
Sep 10
/AI
Know whether your SEO/AEO optimizations are helping or hurting your website, and whether an expensive SEO/AEO firm is worth the cost, by evaluating real data in Google Search Console.
Sep 3
/AI
Most WordPress sites are built in a way that makes AI coding tools nearly useless.
Aug 6
/AI
Properly scaling n8n in queue mode, auto-adjusting hardware to support workers based on queue size in Redis.
Aug 2
/Analytics
Everything you need to measure conversions from ChatGPT ads, from a basic pixel install to a fully synced server-side setup.
Jul 24
/AI
What actually earns AI visibility on Reddit.
Jul 16
/Compliance
How to use an open-source cookie banner with GTM's Consent Mode v2.
Apr 14
/AI
How we optimized for AI and achieved #1 for ideal prompts in ChatGPT, Claude, Grok, DeepSeek, Gemini & Copilot.
Mar 15
/Compliance
The proper way to handle consent in Google Tag Manager without overpaying for tools or losing the data your business depends on.
Feb 24
/Analytics
How to identify the company/organization of your website visitors with custom code and no third-party tools.
Jan 15
/WordPress
Inspirational list of professionally designed custom WordPress themes for bank and finance organizations.
2025
Dec 14
/Marketing
Everything you need to know about Google's December 11, 2025 algorithm update.
Dec 10
/Analytics
Complete end-to-end walk-through of the best possible Facebook Pixel & Facebook Conversion API implementation for maximum match rate.
Dec 10
/Development
How to find and fix redirect issues at the source.
Dec 2
/WordPress
What separates a well-built WordPress site from the other 95%, and the shortcuts that create debt.
Nov 27
/Marketing
Not interested in paying $$$$$ for a CRM? Consider an open-source alternative, that may actually be better for your needs.
Nov 9
/Analytics
Read only a percentage of rows to reduce cost and latency while producing approximate statistical query results.
Oct 31
/WordPress
When and where WordPress will automatically add a redirect for a URL behind the scenes.
Oct 28
/AI
Understanding how Google's ranking system works can tell us how to best approach AI SEO.
Sep 27
/WordPress
Step-by-step guide for moving a website from HubSpot CMS to WordPress without losing data or design integrity.
Sep 27
/WordPress
Foundations of building and maintaining a good custom WordPress theme.
Sep 26
/Analytics
Understand how a server-side analytics system works, and why it leads to more accurate analytics data and better advertising optimization.
Sep 18
/AI
Training a custom LLMs on a Macbook Pro M3+ using WordPress posts as fine-tuning data.
Aug 10
/AI
How to create the best, most accurate, AI-generated SQL for BigQuery data exploration.
Aug 10
/Analytics
Are your Looker Studio reports running much slower in the browser than they should be?.
Aug 8
/AI
GPT-5 isnt revolutionary, it's largest benefit is reduced token cost, and we're now seeing a curve forming with each release cycle.
Aug 5
/WordPress
A response to recent bogus vulnerability reports targeting WordPress wp-cron.
Aug 4
/Marketing
SEO is often overlooked during a redesign process, which can have a very negative impact on search rankings.
Jul 31
/Marketing
Martech patterns, approaches and systems for high-converting websites.
Jun 30
/Analytics
Find the most costly bottlenecks in your BigQuery data warehouse and speed up your Looker reports.
Jun 19
/AI
Considerations when leaning on AI for content marketing.
Jun 14
/Marketing
Google’s disavow tool allows you to identify bad/low quality links to your site, potentially improving quality scores.
Jun 1
/AI
Variations of AI generated images from various LLM prompt tools.
May 10
/AI
18 highly productive patterns for generating effective code with AI.
May 7
/AI
Straight forward instructions on how to start working with the OpenAI Codex CLI.
May 3
/AI
Smarter ways to stop WordPress form spam using OpenAI API's and Gravity Forms.
May 2
/WordPress
Behind the scenes look at the plugins, patterns and approaches used to build very high quality WordPress websites.
Apr 28
/WordPress
Achieving the most commonly sought after URL rewrite structure for a custom WordPress resources section built using a post type, taxonomy, and associated archives and single templates.
Apr 22
/Analytics
How to keep your Google Tag Manager containers clean and well organized with established patterns and conventions.
Apr 10
/WordPress
Sample content for the Gutenberg editor.
Feb 20
/AI
AI-generated code can be useful, but dropping it into WordPress without a plan is a bad idea.
Feb 19
/Analytics
GA4 assigns traffic sources based on a priority system—UTMs, referrers, auto-tagging, and more—so here’s how to decode it in BigQuery and get the cleanest attribution data possible.
2024
Dec 13
/Marketing
Seven overlooked ways to convert more of the traffic you're already paying for.
Dec 6
/Development
How to validate a phone number against the North American Numbering Plan with only JavaScript, no APIs required.
Nov 22
/Analytics
Simple overview of Google Analytics: what it is, why you might need it, and how to set it up.
Nov 14
/WordPress
Simple and effective ways to load CSS and JS modules in a custom WordPress theme from scratch (no frameworks).
Nov 5
/WordPress
Growing list of CMS alternatives to WordPress.
Oct 14
/WordPress
Automattic has hijacked the Advanced Custom Fields Pro plugin, and will be releasing it as "Secure Custom Fields" in the coming week(s).
Oct 11
/WordPress
How to create a custom WordPress theme that's very basic for easy learning.
Oct 3
/Analytics
Tips on cleaning and importing large CSVs into BigQuery.
Oct 2
/WordPress
Properly configuring CloudFlare caching rules for your WordPress website is the best way to make your website extremely fast.
Aug 23
/WordPress
Pros and cons of extending the built-in WordPress REST API with custom endpoints.
Jul 28
/Analytics
Ways to reduce query and storage job costs in BigQuery.
Jul 21
/Analytics
Guide to syncing Google Search Console data into BigQuery daily using Google's native data exports.
Jul 11
/Analytics
Automated daily syncs from Hubspot into BigQuery without expensive ETL costs, using an alternative to Google Integration Connector.
Jun 30
/Analytics
Host your own open-source CDP platform to replace expensive software like Segment or FiveTran.
Apr 23
/WordPress
Should you really use a WordPress plugin for that? See how 11 lines of code can replace 87,907, and why that's a major advantage.
Apr 20
/WordPress
How custom WordPress themes are built, with real world examples.
Apr 11
/WordPress
Complete list of all built-in email notifications sent by a WordPress, and how to disable them
.
Mar 29
/WordPress
The best way to delete thousands of WordPress posts, pages or post types.
Mar 10
/WordPress
Loading JS modules in WordPress with the new wp_enqueue_script_module function.
Mar 6
/WordPress
Content management systems used by large enterprise businesses, with live examples.
Feb 6
/WordPress
Drastically speed up the WordPress admin with 3 lines of code.
Jan 31
/WordPress
Simple, secure way to remotely connect to a WordPress database at WPEngine.
Jan 15
/WordPress
Stop PHP notices and warnings from polluting WP-CLI output and breaking scripted commands.
2023
Dec 28
/Marketing
How to submit HubSpot forms using the HubSpot Forms API.
Nov 30
/WordPress
Advanced details on finding slow WordPress queries, and fixing them.
Nov 8
/WordPress
Block access to the wp-login page based on the connecting user's IP address.
Nov 5
/Analytics
Limit access to show only specific data to certain users or groups in Google BigQuery.
Oct 24
/Compliance
Prepare your WordPress website for a SOC compliance audit.
Oct 17
/WordPress
Advanced tactical tasks for securing a WordPress website.
Sep 29
/WordPress
The most probable causes of a slow WordPress website.
Sep 26
/Analytics
DIY approach to server-side event tracking with Laravel + Redis.
Sep 24
/WordPress
WordPress is the #1 tool used to build websites, powering over 40% of the websites online today.
Sep 18
/WordPress
Serve all WordPress website visits from https:// and not https://.
Sep 10
/WordPress
How to remove all [srcset] attributes from images in WordPress.
Aug 23
/Analytics
Useful BigQuery examples for querying Google Analytics 4 data.
May 16
/Development
Redirect an entire domain in CloudFlare, forwarding all non-WWW traffic to WWW, or WWW to the root domain, at the page level with a single rule.
Apr 23
/WordPress
Deploy updates to Kinsta with git push, utilizing the same approach as WPEngine under the hood.
Apr 4
/WordPress
How to disable all built-in RSS feeds in WordPress.
Mar 27
/Development
Creating valid SSL certificates for localhost web development, supporting one or many local domains.
Mar 24
/Marketing
Adding and updating custom campaign types and member status values for your SalesForce campaigns.
Mar 9
/WordPress
Programmatically add a user to all sites in a WordPress multisite network (WPMU).
Feb 12
/Development
Automatically fix typographic widows to avoid a single hanging word on its own line.
Jan 19
/Analytics
Track conversions for TikTok ads with high match rate attribution using both the Pixel and Events API.
Jan 18
/WordPress
A working fix for the Sage/Blade template errors that hit WPEngine sites on 1/18/2023.
Jan 5
/Development
Calculating an age in years, months and days from a user provided birthdate (MM/DD/YYYY).
2022
Dec 19
/Analytics
How to track your Hubspot form submissions in Google Tag Manager, step by step.
Dec 10
/WordPress
Stop WordPress form spam in Gravity Forms with custom spam filtering rules.
Dec 5
/Development
Steps to fully uninstall Elasticsearch from your server.
Dec 4
/Analytics
The best way to track Marketo form submissions as conversions in Google Tag Manager.
Nov 30
/Analytics
Work with Drift's built-in Google Tag Manager events to simplify event tracking.
Nov 28
/Development
CloudFlare began rate limiting images.
Nov 17
/Development
Simple CSS rules to remove box-shadow from one side of an element.
Nov 5
/Development
How to start, stop and restart MongoDB from the command line.
Aug 8
/Development
Custom corporate branding for Zoom landing pages, emails, and more.
Aug 5
/Development
Previews and names of all available Apple News supported fonts.
Jul 25
/WordPress
Create your own rules to stop form spam submissions on your WordPress website.
Jul 17
/WordPress
Configure transactional email for WordPress that's reliable using
an SMTP Relay or an HTTP API.
May 28
/Analytics
How to track unique pageviews in GA4.
May 12
/WordPress
Why is your WordPress admin so slow? It's probably
HTTP API requests made by premium plugins.
Apr 18
/Analytics
Automatically targeting prospects that are most likely to become paying customers
is one of the best ways to lower customer acquisition costs.
Apr 12
/Analytics
How to define custom conversion events in Google Tag Manager,
and why it's a good approach to follow.
Apr 4
/WordPress
Fixes for a common WordPress database error: "Table is marked as crashed and should be repaired".
Mar 30
/Development
Validate a US Social Security Number (SSN) with
JavaScript, PHP, Python, Ruby and more.
Feb 19
/Development
A recent update to the popular SVG Support WordPress plugin may cause broken SVG's on your WordPress site.
Feb 11
/Development
A simple pattern I use to validate emails.
2021
Sep 9
/WordPress
WordPress editor stylesheets won't load external assets with @import rules, but there's an alternative approach you can use to load fonts into the Gutenberg editor.
Jul 15
/Development
"SyntaxError: Cannot use import statement outside a module" is a common
Node.
Jun 22
/WordPress
Track, log and notify team members when changes are made to a WordPress website's file system, database and DNS.
May 18
/Development
How to style a <select> dropdown placeholder value in a way that
is similar to the CSS ::placeholder pseudo element.
Feb 24
/WordPress
How to update an Advanced Custom Fields (ACF) repeater field programmatically.
2020
Sep 10
/WordPress
The simplest way to get WordPress post content by post ID.
Sep 8
/WordPress
Create a WordPress admin user with PHP to login to a site with only FTP access.
May 5
/WordPress
Automatically generate an ordered reference to all
action hooks and filters for a WordPress install.
Apr 27
/WordPress
How to fix `cURL error 60: SSL certificate: unable to get local issuer certificate` errors in localhost WordPress environments.
Apr 2
/Development
Selecting an option by its text label, getting the label for a currently
selected option, selecting an option programmatically and more.
Feb 25
/Development
Practical examples of JavaScript module patterns
and how to include them as a dependency.
Jan 17
/Development
Simple commands to export and import all
MySQL databases that exist on a server.
2019
Dec 20
/Development
Quickly get Moment & Moment Timezone working in an
Angular CLI TypeScript project.
Dec 20
/Development
The simplest way to format numbers and floats as
currency strings in JavaScript and TypeScript.
Dec 19
/Development
How to safely display any HTML in an Angular component
without escaped or encoded characters.
Dec 11
/WordPress
Solving "failed to send buffer of zlib output compression" errors in WordPress.
Nov 26
/Development
Ionicons 4 include a native web component that doesn't
work in an Angular app, here's a quick and easy fix to solve the problem.
Nov 25
/Business
How to get the Mac Dock app working
on multiple external display monitors.
Jul 15
/WordPress
Widen the Gutenberg editor with a few lines of admin CSS so layouts match the front end.
Jul 8
/Development
Read route and query parameters in an Angular component without pulling in a library.
2018
Dec 6
/WordPress
The best way is to install the official Classic Editor
plugin created by the Automattic team.
Sep 18
/Compliance
Run a quick, effective scan of your business
website for ADA accessibility compliance.
Sep 7
/WordPress
Big list of enterprise WordPress websites
for Fortune 1000 companies.
Sep 4
/WordPress
Automatically fix hanging words (or typographic widows) in WordPress
content using this helpful function to filter the_content().
Jul 27
/Compliance
Make your WordPress dropdown menus WCAG 2.
Jul 5
/WordPress
Simple, effective way to disable the WordPress
REST API if you're not using it.
May 23
/Development
How to fix a "Uncaught Error: Syntax error, unrecognized expression"
JavaScript error when working with jQuery 2.
2017
Nov 12
/Marketing
Documentation on Google search operators for advanced searching and filtering of results.
Aug 14
/Business
Over the past 10 years as freelance web developer I've learned important
lessons about business, relationships, money and life.
Jul 3
/Development
Tips to help you find and fix this common XHR JSON API syntax error in JavaScript:
"SyntaxError: Unexpected token < in JSON at position 0".
Jun 30
/Development
Automatically indent HTML files on save in Sublime Text.
Jun 19
/WordPress
Parse Markdown in Timber/Twig templates with
this custom twig filter/extension.
Jun 16
/WordPress
Safely change the name of a WordPress plugins admin
menu using the following function.
Jun 10
/WordPress
Building single page apps inside of a WordPress plugin.
May 29
/Development
Quickly add a git remote for
an existing Heroku app.
May 17
/WordPress
Find & fix malicious 301 redirects to seonix.
May 5
/Development
Express.
Apr 28
/Development
Real world examples of angularjs $http and $resource cache, including how
to work with localStorage and sessionStorage.
Apr 24
/Development
Define your own custom tag delimiters to change {{ myScopeVar }}
to your own syntax, such as {! myScopeVar !}.
Apr 13
/Development
How to create AngularJS directives that are only allowed for a specific HTML element or tag.
Apr 12
/Development
Reduce a JS build task with Uglify from 15-20 secs to 500ms.
Apr 6
/WordPress
Having trouble with user enumeration, or maybe you have notices in your
error logs about "Preventing Possible Attempt to Enumerate Users"?.
Feb 24
/WordPress
The two best ways I've found to move a WordPress database between hosts safely.
Feb 24
/WordPress
Search within a taxonomy by patching the way WP_Query
handles the MySQL GROUP BY clause.
Feb 20
/Development
Get Your Express.
Feb 8
/Development
PHP's $_POST won't work with a content-type of application/javascript.
Jan 20
/Analytics
Track client-side JavaScript errors as Google Analytics events using
Google Tag Manager and avoid error logging software.
2016
Dec 4
/WordPress
Avoid using any of WordPress' built-in taxonomies and post types names to
avoid collisions when creating custom taxonomies and post types.
Oct 27
/Development
Steps to reset geolocation prompt's in Google Chrome, useful for for testing
navigator.
Oct 25
/Development
Handle on enter key press events in Angular
using this simple directive.
2015
Jul 6
/Business
A free, open-source way to record your screen as an animated GIF.
Jul 6
/Development
Quick way to make a simple pulsate
animation using CSS3.
Jun 18
/Development
Determine equality for two JavaScript objects.
Mar 21
/WordPress
Check if WordPress content was created using the
SiteOrigin's Page Builder or built-in editor.
Feb 13
/Development
Presented at the February 2015 Boston Node.
Jan 29
/Development
This simple regex rule makes wildcard find and
replace routines easy in Sublime Text.
2014
Dec 23
/Development
Simple way to serve static HTML, images, stylesheets and scripts with Node.
May 9
/WordPress
Sample page content for testing CSS against the
HTML output of the WordPress TinyMCE editor.
Apr 21
/WordPress
How to use meta boxes to effectively manage
web layouts beyond the editor.
Apr 11
/Marketing
Lessons learned integrating Pardot,
WordPress and Gravity Forms.
Feb 5
/WordPress
Use this function to remove the "Posts" menu and
posting area from the WordPress admin.
Jan 25
/Marketing
What Dublin Core metadata is, and whether it still earns its place in your markup.
2013
Dec 18
/WordPress
For use as custom post type menu icons.
Nov 19
/WordPress
Discover exactly what functions are attached to any WordPress hook, in the order they fire.
Oct 16
/Development
Grab the thumbnail for any YouTube video straight from its URL, in every available size.
Oct 9
/WordPress
Remove the obvious WordPress fingerprints from your site without breaking anything.
Oct 8
/Development
Why `if ($el)` always returns true in jQuery, and what to check instead.
Oct 6
/Development
Using is(":checked").
Oct 6
/Development
Redirect the browser properly with `window.
Oct 6
/Development
Using is(":visible") or is(":hidden").
Sep 30
/Development
Lay a bulleted list out horizontally and keep the bullets, with copy-paste CSS.
Sep 23
/Development
Copy the icon characters from this table, and paste
them directly into Photoshop.
Sep 23
/Marketing
Examples of content curation done right.
Sep 3
/WordPress
Getting Roots theme rewrites and clean asset URLs working on WPEngine.
Aug 11
/WordPress
Well known brands running WordPress today, and what their builds tell you about the platform.
Aug 11
/Business
How to find and vet a web designer, and the warning signs worth walking away from.
Apr 8
/WordPress
Step-by-step instructions for building a business website on WordPress from scratch.
Jan 11
/WordPress
The local, staging and production setup I use to test WordPress changes before they ship.
2012
Dec 18
/WordPress
A quick fix for "Uncaught ReferenceError: jQuery is not defined" in the WordPress admin.
Dec 5
/WordPress
Include custom post types in author archives with one drop-in function.
Nov 30
/WordPress
Give site owners the option to display taxonomy term descriptions on archive templates.
Nov 26
/WordPress
The difference between is_home() and is_front_page(), and which fires on a static homepage.
Nov 5
/Development
Why vertical-align misbehaves between two inline-block elements, and how to fix it.
Nov 2
/WordPress
Compress WordPress uploads automatically so slow images never reach production.
Oct 12
/Business
SaaS website designs that sell, and the patterns behind their conversion rates.
Sep 23
/Development
Test Internet Explorer on a Mac for free using a virtual Windows machine.
Sep 18
/Development
Build mailto links that prefill subject and body without breaking on special characters.
Sep 6
/WordPress
The quick, correct way to get an RSS feed for a custom post type in WordPress.
Sep 4
/Development
Set up wildcard local domains in MAMP Pro so any hostname resolves without editing hosts.
Aug 22
/WordPress
Run oEmbed on excerpts and custom fields with a single line of code.
Aug 20
/WordPress
Show post dates as "3 hours ago" using WordPress's built-in human_time_diff().
May 29
/Development
Repair an SVN checksum mismatch on commit without losing your local changes.
Apr 20
/WordPress
Allow plugin installs and core upgrades on a MAMP localhost without the FTP prompt.
Apr 15
/WordPress
A live test page for the Responsive Video Embeds plugin — resize the browser and watch.
Apr 13
/Development
Why TimThumb images break behind Cloudflare, and how to confirm caching is at fault.
Mar 30
/Business
WordPress & The Expectation of "Free".
Mar 15
/WordPress
Handy snippets for identifying which template file WordPress is currently rendering.
Feb 27
/WordPress
WordPress has a hidden screen listing every editable option in your database.
Feb 25
/WordPress
The references and standards worth following on a professional WordPress project.
Jan 8
/Development
Load social sharing widgets on demand with AJAX instead of on every page load.
2011
Dec 27
/WordPress
Add your own meta fields to media attachments and read them back in a theme.
Dec 22
/Marketing
Add Open Graph tags so shared links show the right title, description and image.
Dec 14
/WordPress
Track and display popular posts without a plugin, using WP_Query and a custom field.
Dec 13
/WordPress
Get rid of the unwanted tooltip WordPress adds to every inserted image.
Oct 26
/Development
A simple PHP and JSON caching function that cut a 5 second API call to milliseconds.
Oct 11
/Development
Force browsers to pick up modified CSS, JavaScript and images instead of stale copies.
Oct 4
/WordPress
Build numbered WordPress pagination with paginate_links() and a custom WP_Query.
Sep 26
/Development
A library of re-useable LESS classes and mixins worth keeping in every project.
Jun 23
/WordPress
A real world benchmark of WordPress speed gains from full page caching and a CDN.
Jun 1
/WordPress
Every practical way to add custom meta boxes, and which one fits your project size.
May 30
/WordPress
Strip the junk markup Microsoft Word leaves behind when clients paste into the editor.
May 23
/Business
Habits that keep remote work sustainable before you become a social vegetable.
May 19
/Development
What LESS adds to CSS — variables, mixins, nesting — and why maintenance gets easier.
May 17
/Development
Connecting to a MAMP MySQL database over SSH from the OS X Terminal.
May 16
/WordPress
Give the WordPress user profile screen a real editor instead of a plain textarea.
May 12
/WordPress
Display the total number of results found on a WordPress search page.
May 2
/WordPress
Loading resources from a CDN is a great way to improve website performance.
Apr 25
/WordPress
Fifty WordPress sites with genuinely good design, and what to borrow from each.
Apr 21
/WordPress
The checklist I run before any WordPress redesign goes live.
Apr 14
/Analytics
Add Google Analytics to a WordPress theme in code, no plugin required.
Apr 14
/WordPress
Map and load your 301 redirects before launch so rankings survive the new URLs.
Apr 7
/Marketing
SEO best practices for YouTube videos: titles, descriptions, tags and thumbnails.
Mar 31
/Marketing
Optimize Flickr photos so people actually find them, and get traffic back to your site.
Mar 24
/WordPress
Move enqueued scripts to the footer in WordPress with one function.
Mar 17
/WordPress
What to look for in WordPress hosting, and where cheap plans cost you later.
Mar 16
/Business
The least painful way to share a page from iPad Safari to Twitter.
Mar 14
/Development
The best way I've found to process URL parameters
with JavaScript in the browser.
Mar 10
/Development
Recreate Hulu's homepage content slider with jQuery Cycle and CSS3.
Mar 3
/Development
Format currency and money fields as users type without breaking the submitted value.
Feb 24
/Development
Create, read, update and delete cookies with jQuery, including expiry and path options.
Feb 17
/WordPress
Pull an external RSS feed into WordPress content with a shortcode, using built-in SimplePie.
Feb 15
/Development
What I learned building SimilarSounds.
Feb 10
/Development
The favicon files and markup every browser and device actually needs.
Feb 8
/Development
Why array_push() fails on associative arrays in PHP, and what to use instead.
Jan 27
/WordPress
Trim down and customize the TinyMCE editor toolbar and format dropdown in WordPress.
Jan 20
/Development
Detect iPhone, iPad and Android visitors server-side with a single PHP function.
Jan 13
/WordPress
Run one query to get every custom field attached to a post, page or post type.
2010
Dec 2
/Development
How I test websites across browsers, including standalone Internet Explorer versions.
Oct 27
/WordPress
Setting up repeating field groups with the Custom Field Template plugin — and the data-loss bug to avoid.
Oct 15
/WordPress
A look at PageLines, a drag-and-drop CMS theme framework for WordPress.
Oct 7
/Development
Comparing Typekit and Cufon for web font replacement, and where each one fits.
Oct 1
/WordPress
Advanced WordPress performance work: caching, queries, assets and hosting.
Sep 30
/WordPress
Replace the default WordPress maintenance message with a branded page during upgrades.
Aug 24
/WordPress
Why Google shows a date in your search snippet, and how to stop it.
Aug 13
/WordPress
Use custom post types to structure a content-heavy WordPress site properly.
Aug 10
/WordPress
Load your own CSS and JavaScript in wp-admin to simplify the dashboard for clients.
Jul 13
/Development
Building a diagonal navigation bar with CSS, jQuery and XHTML — harder than it looks.
Jul 9
/WordPress
More WordPress plugins that turn the platform into a genuine content management system.
Jul 5
/WordPress
A running list of the newest WordPress CMS plugins worth paying attention to.
May 31
/WordPress
Serve jQuery and other libraries from Google's CDN to cut WordPress load time.
May 25
/Development
Rotations, shadows, rounded corners and animations you can use in CSS3 today.
May 18
/WordPress
How the early WordPress custom field plugins compared, and what replaced them.
May 16
/WordPress
What custom post types in WordPress 3.
May 11
/WordPress
The features WordPress 3.
May 9
/Development
Why I moved off Dreamhost shared hosting to a Media Temple DV, and how it compared.
Apr 19
/WordPress
Six plugins that fill the gaps between the WordPress editor and a real CMS.
Jan 14
/WordPress
Why default WordPress search returns poor results, and how to improve relevance.
2009
Dec 25
/WordPress
A reader asked whether WordPress holds up against a traditional CMS.
Dec 21
/WordPress
Stop the auto-update prompt for a plugin you've customized and can't overwrite.
Nov 30
/WordPress
WordPress took the Overall Best Open Source CMS award for 2009 — here's what that reflected.
Nov 16
/Marketing
Add a rich HTML signature to Gmail without a plugin, and keep the formatting intact.
Sep 22
/WordPress
Whether to start a custom WordPress theme from a framework like Thematic or from scratch.
Sep 14
/Business
What corporate web design work really demands, and why being quiet gets you nowhere.
Sep 14
/Marketing
How writing style and call to action wording change conversion rates.
Aug 30
/WordPress
Ten sites publishing WordPress content that's actually worth reading.
Aug 27
/WordPress
Brand the WordPress login page with your own logo and colors using hooks, not core edits.
Aug 23
/Business
Five publications worth reading regularly, and what each one is good for.
Aug 20
/Business
The different routes into a web career, and what each one actually demands.
Aug 12
/Business
A CMS design we launched at Fresh Tilled Soil, featured on WeLoveWP.
Aug 5
/WordPress
The plugins that turn WordPress from a blog into a content management system.
Jul 22
/WordPress
Find broken and dead links across a WordPress site and fix them from the admin.
Jul 16
/WordPress
A widget that lists filtered posts by taxonomy, type or meta without writing code.
Jul 14
/Development
Target Mac or Windows visitors in JavaScript when a bug only affects one platform.
Jul 14
/Development
A three line snippet for targeting Firefox 2 and below, when you have no other option.
Jun 30
/Marketing
Restyle the AddThis sharing widget so it stops looking generic on your site.
Jun 29
/WordPress
A recap of my WordPress SEO and CMS talk at the Boston WordPress Meetup.
Jun 29
/WordPress
Fix WordPress XML import failures on files larger than 20MB by raising the right limits.
Jun 26
/WordPress
I'll be presenting on WordPress SEO and CMS capabilities at this month's Boston Meetup.
Jun 17
/WordPress
How widely WordPress is actually used as a CMS, and what the numbers mean.
Jun 17
/Marketing
Configure All in One SEO on a WordPress site, and the defaults worth changing.
Jun 15
/WordPress
Back up the database, uploads, themes and plugins on a schedule you can actually restore from.
May 28
/Development
Run Internet Explorer 6, 7 and 8 on a Mac for cross browser testing.
May 21
/WordPress
The plugins and settings that make the biggest difference to WordPress page speed.
May 20
/WordPress
Manage multiple WYSIWYG editors on a single post with the Custom Field Template plugin.
May 12
/Business
Nebula and star cluster photography from the NOAO, for color and texture inspiration.
May 7
/WordPress
Use custom page templates so sections of a WordPress site can look completely different.
May 7
/WordPress
Highlight comments left by the post author so replies stand out in a thread.
May 5
/Development
Why text looks pixelated during jQuery animations in Internet Explorer, and the fix.
May 4
/WordPress
WordPress has no is_child() conditional for subpages — here's the one I use instead.
Apr 29
/Analytics
Pull social media stats into your Google Analytics dashboard with a Greasemonkey plugin.
Apr 28
/Analytics
The simple way to add Google Analytics tracking to a WordPress site.
Apr 1
/Development
Detect where a visitor is located from their IP address and adapt your forms to suit.
Feb 14
/Marketing
Landing page designs that convert, and the structure behind why they work.
Feb 3
/Business
Keep Google Calendar and iCal in sync on macOS without a third-party service.
Jan 12
/Business
A web design rap from The SEO Rapper that's better than it has any right to be.
2008
Dec 22
/Marketing
Add social bookmarking links to WordPress posts with the Sociable plugin.
Nov 7
/Analytics
Which Google Analytics reports actually matter when you're working on SEO.
Nov 3
/Marketing
The WordPress SEO plugins and tools worth installing, and what each one does.
Oct 31
/Business
Whether a degree or a course is worth it for web design work.
Oct 18
/Development
Why jQuery fadeIn() and fadeOut() pixelate text in Internet Explorer, and how to fix it.
Sep 10
/Development
Highlight the current page in a navigation dynamically with jQuery, CSS and PHP.
Sep 9
/WordPress
A jQuery plugin that hides mailto addresses from spam harvesters but not from visitors.
Sep 9
/WordPress
Add default placeholder values to form inputs with the jQuery valueFx() plugin.
Aug 26
/Development
Separating presentation from content with XML and XSL, and where the approach broke down.
Aug 24
/Development
Measure page weight and load time in the browser to find what's blocking rendering.
Jul 28
/Development
Load an external JavaScript file on demand with $.
Jul 2
/Development
A cross browser fix for AJAX requests returning XML in Internet Explorer.
Apr 15
/Business
What a Dreamweaver .
Apr 13
/WordPress
A jQuery plugin that protects mailto links from spam bots harvesting your address.
Mar 25
/Business
The macOS keyboard shortcuts that save real time in a web design workflow.
Mar 12
/WordPress
Highlight the WordPress post currently being viewed inside a sidebar menu.
Mar 12
/Development
A small jQuery snippet that keeps mailto links safe from spam bots.
Feb 6
/Development
Add focus and blur effects to a search field with a few lines of jQuery.