A Beautiful Site
How I Use GitHub Issues
Revisiting FOUCE
Web Components Are Not the Future — They’re the Present
Component Machines
Styling Custom Elements Without Reflecting Attributes
Reflection and Custom States in Web Components
Anchoring Software to Major Versions
Building Custom Elements With a Library
Design Systems Are An Investment
How to File a Bug Report
Thoughts on Framework Churn
Better Buttons with color-mix() and Custom Properties
Dynamic Slots
My Commitment to Accessibility
Converting a URL Object to a Plain Object in JavaScript
The Term "Headless Component" is a Misnomer
Shoelace 2.0
Installing Shoelace in a React App
Why You Should Prefix Custom Events
Custom Event Names and the Bubbling Problem
The Future of Shoelace
A Web Component Story
Not Everything Can Be Feature Detected
Buttons and Cursors
My Stance on AI-generated Code
Design Systems Aren't Cheap
CSS Parts Inspired by BEM
When To Create CSS Parts
Valid Names for CSS Parts
Complacency on the Front End
A Web Components Primer
Success Requires Luck
Flash of Undefined Custom Elements (FOUCE)
Bulletproof Components
Empowering Design System Users
Exploring the EyeDropper API
The Future of Frameworks
Superpowers
Know When To Draw The Line
Don't Do Magic
On Buttons and Links
On Using Web Component Libraries
Finding the Closest Element Through Shadow Roots
Testing Support for :focus-visible
Querying through shadow roots
Prefers Reduced Motion
Finding the active element in a shadow root
Moving from Stencil to LitElement
SVG Repo
Archiving Postleaf
Getting localized month and day names in the browser
Shoelace 2.0: a forward-thinking library of web components
Cory's amazing dot paper
A free HTML, CSS, and JavaScript beautifier
Let's Encrypt renews but browsers still seeing old/expired SSL certificate
Introducing Surreal CMS 7
Getting duplicate ids in an HTML document
A clever way to style the <mark> element
Opening a new window after an async operation
Zipping multiple folders into separate zip files
Shoelace.style — A back to the basics CSS starter kit
Downloading a list of URLs automatically
Surreal CMS acquires PageLime
Rebuilding your Spotlight index in macOS
Thoughts on AMP
JSON Feed
Postleaf: reimagined
Thoughts on uploads
Importing plain CSS files with Sass
Determining your app's base directory in Node.js
Hashing Passwords with Node.js and bcrypt
Using an ORM
Solving the search problem
Moving to Node.js
SSH failing on macOS Sierra
Getting it right
SimpleImage 3.0
Don't hate on PHP
Thoughts on comments
Code can change
A better way to write config files in PHP
How to upgrade or downgrade Node.js using npm
Adding and removing virtual hosts on Ubuntu 14.04
Lessons from a failed Kickstarter
Democratizing publishing
Animated CSS hamburger icons
Flushing DNS cache on macOS
A clean fade-in effect for webpages
How to remove box shadows from input controls on iOS
Passing data from PHP to JavaScript
The HTML5 download attribute
Get comfortable with abstraction
Thoughts on being a good manager
I should have been asking my users this from the start
Why developers hate being interrupted
Social sharing buttons are ineffective
How to use currentColor in your stylesheet
I switched from tabs to spaces and haven't looked back
CSS shapes are here
CSS reset with box-sizing fix
What can you do with a single <div>?
Is your product the reason your startup is failing?
Stop trying to build the next unicorn
BrowserStack: stop using virtual machines for browser testing
I'm taking "startup" back
Hide the mouse cursor with CSS
How to leave a console greeting for your visitors
Subtle Patterns: hundreds of free backgrounds that tile
Find a name for almost any hex color
Working with HTML5 data attributes
Is it possible to be an introverted entrepreneur?
How to use the PHP ternary operator
Five things I've learned about taking risks
Using the classList API
TinyPNG: A better way to compress PNG images
What is my browser? This tool will tell you
Smaller volume increments in macOS
Link to a specific page in a PDF file
Lessons from my 20s: a presentation by Ryan Allis
How to get the dominant colors of an image with Color Thief
PlayCanvas: an easy, open source WebGL game engine
box-sizing: border-box explained
Give your JPEGs alpha channels
How to get faster and better help from support
Swapping variables with JavaScript
The next version of PHP may very well be 7
SVG has a logo
A user interface is like a joke
Parsing URLs in JavaScript
An icon converter that supports multiple sizes and transparency
Validating URLs and email addresses in PHP
Semantic version numbers
There's a reason that Bootstrap 3 has ugly buttons
Whipping file inputs into shape with Bootstrap
Tips for the aspiring web developer
Down with the share widget!
Feature detection for CSS transitions via jQuery $.support
Access pages without the php extension using .htaccess
Detecting mobile devices with JavaScript
Redirecting to and from the www subdomain with .htaccess
The SimpleImage library for PHP
How to delete a tag on GitHub
Office 2007 files downloading as ZIP files in Internet Explorer
Smoothly scroll to an element without a jQuery plugin
The difference between web designers and web developers
New shortcut keys in Windows 7
Icon Finder: an awesome search engine for icons
JSNES: a Nintendo emulator built in JavaScript
Table cells and max-widths in Internet Explorer 8
Browser makers: where’s the new tab + homepage option?
What happens if IE8 "breaks" my website?
Images display in Firefox and Safari, but not in Internet Explorer
PHP functions to get and remove the file extension from a string
Prevent white noise from appearing in images after fading
A Beautiful Site becomes "A Beautiful Site, LLC"
Import/restore MySQL files from the command line
Parsing a JSON string results in an 'Invalid Label' error
$.postJSON() for jQuery
Generate random passwords in PHP
Fetching remote web pages with curl and PHP
Determine file extensions using JavaScript
But we haven't even mastered Acid2!
Netscape support ending in February 2008
IE8 burns the Acid 2 test
Select all, select none, and invert selection with jQuery
External popup links using jQuery
Convert arrays to CSV with PHP
Getting proportionally-resized dimensions of an image
JavaScript functions for basename and dirname
Avoiding timestamp errors when calculating dates in php
DaFont: an excellent free font resource
Forcing file downloads in PHP
Web standards are just "minor details"
Creating stylesheets for handheld devices
Creating a printable website using print stylesheets
CSS drop caps
Find and replace hyperlinks and email addresses in PHP
What are favicons?
Using JavaScript to prevent comment spam
Password protection using .htaccess and .htpasswd
GIF, JPEG or PNG? Using images on the web
Business cards
An Event Apart, Boston
A Beautiful Site launched