September 16, 2023
Running a Structured Meeting
There are a few crucial things that you can do to run really good meetings. I go over what has helped me run a lot of effective meetings over the years.
June 22, 2023
Adding the View Transitions API to my personal site
How I added smooth page transitions to my site using the View Transitions API.
June 19, 2023
A Lightweight Way to Read GraphQL Data
I share a lightweight function that will let you read a GraphQL endpoint without the need for heavy libraries. This is great for simpler use cases.
June 6, 2023
How to make a color changing favicon
May 4, 2023
Using a Pros/Cons list to help navigate technical discussions
Discover the humble Pro's/Con's list, a tool that captures every pro and con in technical problem-solving discussions to avoid repeating the same objections and lead to healthier discussions.
February 16, 2023
How to use variable fonts from Google Fonts
Google Fonts makes a lot of great variable fonts available, but it's not terribly clear how to make use of those fonts. Here are some tips on how to take full advantage of their super powers.
December 1, 2022
A new website: now on Eleventy!
Announcing the new version of my personal website - this time around I built it in Eleventy.
May 24, 2022
Colorosetta: the VS Code Extension!
Announcing the VS Code Extension for my one-to-many color translation tool, ColoRosetta
May 22, 2022
Using CSS Custom Properties and Logical Properties Together
How to combine custom properties and logical properties for layout super powers.
May 18, 2022
Browser Dev Tools: Element Inspector Popover
Did you know? All three major browser engines offer an inspector popover for elements. Yeah, I didn't know.
May 12, 2022
The Link with rel=preload is a Seperate Thing
Note to self.
April 15, 2022
How to have Dark & Light Mode Images that also works with User Choice
When we added a 'dark mode' to PBS.org's appearance, we wanted to allow users to have a choice to turn it on. That introduces some complexities that you need to account for.
January 5, 2022
Don’t use Viewport Units for Font Size on their own
Be sure to pair viewport units with a relative unit when using them on font sizes, or you'll introduce an accessibility issue.
January 3, 2022
A little known Media Query: Aspect Ratio
Did you know? You can make a media query based on a viewports aspect ratio, not just it's width.
December 7, 2021
Meta thinking: Managing Decisions
Why it's important to think about what kinds of decisions you are faced with.
October 12, 2021
Give Your To-Do's Context
When capturing to-do's, be sure to include enough information that your future self isn't confused.
October 6, 2021
Say What the Impact is when Reporting Issues
When reporting an issue, make it clear what the impact is.
October 5, 2021
Firefighting 101: How to Manage Breakages
A playbook for tech managers in dealing with significant outages.
September 30, 2021
How to Deal With Large Pieces of Technical Debt
The smaller the individual pieces of work, the greater the chance that a large piece of technical debt will be addressed.
September 29, 2021
Make Your Request Clear
On improving your communication by making request clear and obvious, and not assuming the other person will figure it out.
July 2, 2021
Analytics events, HTML classes, and protecting against refactoring
A way to protect analytics events against refactors and unintentinal breakage - analyics classes in your HTML.
February 25, 2021
How We Removed jQuery from a large app
How we went about removing jQuery from a large application that had depended on it for many years.
December 18, 2020
New tool: ColoRosetta
October 31, 2020
What width and height attributes should you use with responsive images?
Best practice is to add `width` and `height` attributes to image elements in HTML to improve browser layout performance.
August 27, 2020
Django 3.1 gotcha: Referrer Policy has a new default, and it might break iframes and links
In Django 3.1 the project updated the default 'referrer-policy' to be 'same-origin', which might lead to unexpected results in your project.
August 14, 2020
April 30, 2020
CSS min(), max() and clamp() Functions
A quick look at the relatively new, but well supported, min(), max() and clamp() functions and how you might use them.
April 29, 2020
Pointer Events and Inline Elements in Chrome
Something interesting I learned about using pointer-events and Chrome on inline elements.
April 22, 2020
Resolving a github repo and a new Create React App
A play in one act
March 20, 2020
How to POST *Data* with the Fetch API
How to go about using the Fetch API to POST data to an API.
February 11, 2020
The Contrast Triangle
I've launched a new tool to help check three colors at once, for when you have hyperlinks without underlines.
January 26, 2020
Advice on interviewing for Junior Developers
Some advice on how to stand out during an interview when your a Junior Developer - either right out of a bootcamp/school, or still early in your career.
November 12, 2019
How to Truncate Type at More Than One Line with Just CSS
Have a design where you want text to get cut off at 2 or 3 lines? You can do it with CSS alone.
November 3, 2019
Life Lessons Learned From Running a Marathon: How to do something really hard
What I learned from doing something really, really hard.
August 15, 2019
A (Brief) intro to Search Engine Structured Data
What is structured data, how does it help search engines understand your content, and how to add it to your site.
August 14, 2019
June 19, 2019
Alfred Tip: Quickly Access Common URLs
One of my simplest productivity hacks, but one of the most effective.
May 23, 2019
Responsive Images in Hugo - by Laura Kalbag
April 29, 2019
Making a Gatsby Site with Multiple Content Types
March 28, 2019
How to Create and Use Fixtures in Cypress Tests
How to generate a fixture for use in a Cypress end to end test, and how to actually use it.
March 27, 2019
Fixing the 'Bad Interpreter' Error from AWS and Python 3.7
How to clear up the terminal message from AWS relating to Python 3.6 not being found.
March 26, 2019
Creating a Canonical Tag in a Django Template
A quick tip on adding a canonical tag within Django templates, and why.
March 1, 2019
Responsive spacing with viewport and ch units
How I used vw, vh and ch units to achieve responsive spacing in my new design.
February 25, 2019
Welcome to my New Design - 2019
My site gets a makeover for 2019. Here's all about it.
February 24, 2019
Django Templates: Block and If statements don’t work like you might expect
Django templates may not respect if statements around block usage the way you expect. I found that out the hard way.
January 26, 2019
Books I Read in 2018
7 of the best books I read last year - 3 fiction, 4 non-fiction.
January 3, 2019
Lifehack: 4 ways to help tame common email noise
A few handy tricks to cut down on the noise in your email inbox.
December 19, 2018
How to make better Pull Requests: Adding Steps to Test
Do your pull requests languish for days before someone finally gets around to looking at it? Is the feedback that you get unhelpful? Are you finding nasty bugs in your code only when someone looks at your PR's?
I've been there. And I know a better way - follow along!
November 3, 2018
Troubleshooting Adding and Removing EventListeners: with Arguments, Debounced, and in a React Class
November 3, 2018
The unsung develpment tool: Spreadsheets
September 24, 2018
How to Fake the Window Object in Jest and Enzyme
September 14, 2018
Migrating From Wordpress to Hugo
September 5, 2018
Background Repeat and its Possibilities
August 31, 2018
Getting Started With Front End Tests: a Mindset
August 30, 2018
Migrating a Blog - An Opportunity for a Content Inventory
August 28, 2018
Moving to Hugo
April 27, 2018
April 12, 2018
Things I wish I knew when starting with Python
January 5, 2018
Leading Ampersands for modifiers in Sass: An anti-pattern
September 5, 2017
How to get rid of the "You have mail" message in your terminal
April 12, 2017
Why three typefaces rule the web, and what you can do about it
August 8, 2016
You shouldn't worry about Section 508 - it's Section 504
August 1, 2016
Looping Video Backgrounds: pointers and pitfalls
May 9, 2016
How to “preview” a click event tag in the Google Tag Manager console
January 28, 2016
Moving on from a technology, or: life after Drupal
December 23, 2015
Don’t be a dumb developer
October 3, 2015
Two level breadcrumbs with CSS :only-child
September 23, 2015
Simplicity comes with experience
September 21, 2015
Do the least amount possible
September 19, 2015
SVGs vs. Icon Fonts: Two points in favor of Icon Fonts
September 9, 2015
Accessible links without underlines
July 24, 2015
The Strategic Job Hunt
July 17, 2015
Surviving Getting Laid Off
June 27, 2015
How to structure your typography in Sass
June 3, 2015
Layer Cake: A Responsive Design Layout Pattern
February 7, 2015
Creativity is yet to come in Web Design
January 10, 2015
Front End Testing with Wraith: A Step by Step Recipe
January 4, 2015
Where to begin? How I start a visual design for the web
August 20, 2014
If you could only have five Google Fonts
January 8, 2014
Why SVG is so cool (or: what happens when you're late to the party on something)
December 19, 2013
How to apply classes to elements with CKEditor 4, in Drupal 7
December 2, 2013
Sass’s trailing ampersand and modular code
September 23, 2013
Not Communicating is Not an Option
August 15, 2013
How to use a more recent version of jQuery in Drupal (without jQuery Update)
August 10, 2013
How to use IcoMoon and Icon Fonts – Part 3: 7 Ninja Tricks
August 3, 2013
How to use IcoMoon and Icon Fonts – Part 2: A Workflow
July 31, 2013
How to use IcoMoon and Icon Fonts - Part 1: Basic Usage
July 7, 2013
Using icons from icon fonts directly in CSS
April 28, 2013
Useful SASS mixin - "prop-query"
September 18, 2012
Mac OS X Digital color meter for web designers
August 16, 2012
Front End Developers - the seamstresses of the web?
April 17, 2012
An HTML email centered layout
April 9, 2012
HTML E-Mail and borders: a hard-won lesson
April 5, 2012
New Version of the Font Combinator!
April 3, 2012
Altering the comment form in Wordpress
March 1, 2012
Ira Glass on the Creative Process
December 19, 2011
My favorite 24Ways article so far: Your jQuery: Now With 67% Less Suck
October 31, 2011
Developing a Wordpress site locally, on more than one computer
April 8, 2011
Adobe Illustrator: Rotate/Copy object tip
April 1, 2011
How I got my name
February 11, 2011
My favorite word: Octothorp
January 31, 2011
Git aliases - a step by step recipe (using Textmate)
January 21, 2011
HTML5 is dead. Long live HTML.
January 20, 2011
Your Tools Don’t Matter … for infrequent tasks
January 11, 2011
On staying focused
December 8, 2010
Adactio: A brief list of false dichotomies
June 12, 2010
What some hippies taught me about work ethic