Search
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...
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...
Lessons in Failure: Removing the Old Debugger from Firefox
29.10.2018
Joining the Firefox DevTools team was a dream come true for me. I shared why in the first episode of the Script & Style show but the quick summary is that I grew up loving Firefox (even before it was called “Firefox”) because Mozilla cared about developers via their early developer...
Mercurial: Mass Add and Remove All Files
29.10.2018
While I much prefer git and the GitHub workflow, Firefox’s codebase (mozilla-central) is store in a mercurial repository. There are tools that wrap mercurial so you can use a git-like interface, like git-cinnabar, but my philosophy is to learn the root tool so that I know what’s going...
Change Mac Brightness from Command Line
24.10.2018
Earlier this week I posted about how you can modify your Mac’s volume from command line. Little command line scripts make me smile because I spend so much of my day in command line, and automation can be the key to productivity. I next thought about modifying brightness from command line...
Find and Change Default App for File Type from Command Line
23.10.2018
There are few things more frustrating to any computer user than files opening in an unwanted application. Sure you can use the Open menu item in the desired application but we all just want to double-click a file and see it open in the application we expect. I recently got to thinking about this...
Real-time Geolocation & Reverse IP Lookup with ipapi (Sponsored)
22.10.2018
There’s an incredible amount you can do when you know where your web visitor is located. You can target advertising to the user, you can load maps of nearby search queries, you can localize website verbiage, you can customize content for their region, etc. I guess what I’m trying...
Change System Volume from Command Line on Mac OS
15.10.2018
Oftentimes the awesome GUI applications we love are simply gloss over a command line functionality. While I do love a visual app, it’s always good to know how to do things from command line, if only for the sake of automation. I’ve covered loads of command line secrets, most notably...
Script & Style Show: Episode 25: AR, VR, and Mozilla Reality with Chris Van Wiemeersch
14.10.2018
On this episode: Todd notices what David’s been watching on YouTube while logged in as the Script & Style user and David has no defense but loads of embarrassment. David hurriedly transitions to welcoming guest Chris Van Wiemeersh from Mozilla’s Reality team. Chris enlightens...
How to Get and Set CSS Variable Values with JavaScript
8.10.2018
CSS variables are a very welcome addition to the language, despite them being incredibly basic. Sure we could use SASS or stylus but languages should never count on developers relying on frameworks and toolkits to accomplish what we know we need. And just like every other part of a webpage,...
Script & Style Show: Episode 24: Meme Sites, Developing for Fun, and Podcasts with Lemon!
6.10.2018
On this episode: Todd asks David what he wants to be for Halloween and quickly regrets it, while Todd reveals his somewhat controversial costume. David and Todd then welcome Lemon, an amazing web developer that creates silly but hilarious web games, hosts The FPl.us podcast, and shares his views...