Search
Background Sync with Service Workers
3.1.2019
Service workers have been having a moment. In March 2018, iOS Safari began including service workers — so all major browsers at this point support offline options. And this is more important than ever — 20% of adults in the United States are without Internet at home, leaving these...
How to Change the WordPress Admin Login Logo
2.1.2019
There are numerous content management systems that thrive these days but none are as prolific as WordPress. Every client wants the ability to change their website at a moment’s notice and they want to do it themselves, and again, WordPress is the best fit for that. You fit the client with...
How to Change the WordPress Media Upload Directory
2.1.2019
One thing I’ve always missed about the “old” way of web development was the simplicity of FTP. No deploy scripts, no fuss: simple drag and drop of files and the files are there. I’ve used FTP for assets on this blog for over a decade but I’m finally ready to be lazy...
Goals for 2019
31.12.2018
Every turn of the year is a new opportunity to start over, set goals, and renew optimism that time can heal wounds and drive us to change and achieve. I did really well with my 2018 goals: I started a fun podcast with TrackJS’ Todd Gardener I found my passion again by joining Mozilla’s...
How to Send an iMessage From Command Line
30.12.2018
As somewhat of a recluse, believe me when I say that text messages, instant messenger, and iMessage have relieved me of loads of anxiety and wasted time with short, meaningless voice chat. It’s been a decade since these communication types have become popular so we’ve moved on from...
How to Add a User Stylesheet in Firefox
29.12.2018
While many like to complain about CSS these days, it’s important to remember how amazing CSS is; the CSS language is: easy to learn easy to read easy to write simple to understand Web developers and designers alike love that CSS allows us to take text/media and present it in a beautiful...
Gulp for WordPress: Initial Setup
26.12.2018
This is the first part of a two-part series on creating a Gulp workflow for WordPress theme development. This first part covers a lot of ground for the initial setup, including Gulp installation and an outline of the tasks we want it to run. If you're interested in how the tasks are created, then...
Nested Destructuring
25.12.2018
Destructuring in JavaScript can initially feel confusing but the truth is that destructuring can make your code a bit more logical and straight forward. Destructuring does look a bit more complex when you’re looking for a property several objects deep, so let’s have a look at how to...
Force Download with JavaScript
24.12.2018
Force download scripts have been an important part of internet usability for a long time.  I can attest to that by the number of times I’ve implemented this feature on the server side and the popularity of my PHP Force Download post, even to this day.  With the web world having...
WooCommerce
20.12.2018
(This is a sponsored post.)
I just read a nicely put together story about WooCommerce over on the CodeinWP blog. WooCommerce started life as WooThemes, sort of a "premium themes" business started by just a couple of fellas who had never even met in person. Two years and a few employees later they...
CSS Ellipsis Beginning of String
18.12.2018
I was incredibly happy when CSS text-overflow: ellipsis (married with fixed width and overflow: hidden was introduced to the CSS spec and browsers; the feature allowed us to stop trying to marry JavaScript width calculation with string width calculation and truncation. CSS ellipsis was also very...
JavaScript waitForever
10.12.2018
Writing mochitests for new features in DevTools can be difficult and time-consuming. There are so many elements interacting in an async manner that I oftentimes find myself using the debugger to debug the debugger! In the case where it’s unclear what interaction isn’t working...
Get Viewport Lines and Columns in CodeMirror
27.11.2018
CodeMirror is an amazing utility for presenting code in a browser environment. Syntax highlighting, widgets, and a number of advanced functions make it a unique, useful tool. When using CodeMirror inside the Firefox DevTools debugger, I found that adding hundreds of column breakpoint widgets...
Replace Last Command in Shell
26.11.2018
Whether I fat-finger a command or my MacBook Pro keyboard’s keys don’t want to respond like they should, I’m frequently misspelling commands. What’s more frustrating is that many of these commands are long, taking making fixing theme time-consuming. Luckily a Twitter...
Script & Style Show: Episode 28: “Get Off My Lawn”, and Other Software Stories with Eric Brandes
18.11.2018
In this episode: Todd and David kick things off bantering about cell phones, Android rot, and the good old days of Windows XP and piracy. Todd’s colleague Eric Brandes gets us back on track with a discussion about trusting proven technologies, not chasing the latest fads, how TrackJS...
Script & Style Show: Episode 26: Web Games with ExcaliburJS with Erik Onarheim and Kamran Ayub
18.11.2018
In this episode: Todd returns from a vacation to Disney and gives David some tips about surviving a family visit to Orlando’s most famous theme parks. Erik Onarheim and Kamran Ayub join the guys to discuss HTML5 games, the Excalibur JavaScript HTML5 game library, the amazing games made with...
Object.fromEntries
9.11.2018
The Object object has been buffed with useful methods over the past few years. Object.keys, Object.values, Object.freeze, and Object.assign all address frequently desired functionality. One of the new Object methods is fromEntries, which accepts a Map or map-like array nesting and converts it...
Download a YouTube Channel’s Videos
7.11.2018
YouTube is an endless source of entertainment, be it stuff you’re proud to share you like or stuff you would rather others not know about (see: David’s history of watching old WWE Royal Rumbles). I watch a lot of YouTube in hotels and on flights when I don’t have internet access...
Turn Bluetooth On and Off from Command Line on macOS
6.11.2018
Bluetooth has been a revelation in wireless technology: wireless mice, headphones, streaming devices, and a variety of home and office environments. It goes without saying that wireless peripherals are so much easier to manage than wired counterparts, especially mice, that I usually have...
Get Up and Win
5.11.2018
Down on my hands and knees, I crawl around, bleeding out. I’m resigned to my fate. A kind stranger, a new friend, rushes over to me and kneels to help, reviving me at a time that didn’t require it. Just as I’m revived, the kind stranger says “Get up and win”. I...