NEW !!!

Monday, 25 May, 2020 UTC

Steganography. The art of hiding something right under your nose. For as long as humans have been alive, we’ve been trying to hide things — whether it’s our last slice of pizza or the location of a buried treasure. Do you remember the cool invisible ... more

Thursday, 16 April, 2020 UTC

Those of you who follow this blog know that not every blog post is an endorsement of a technique but simply a tutorial how to accomplish something. Sometimes the technique described is probably not something you should do. This is one of those blog posts. ... more

Tuesday, 14 April, 2020 UTC

As a huge fan of media on the web, I’m always excited about enhancements to how we can control our media. Maybe I get excited about simple things like the <video> tag and its associated elements and attributes because media on the web started with ... more

Thursday, 26 March, 2020 UTC

For many of us, git and GitHub play a huge role in our development workflows. Whenever we have a tool that we need to use often, the more fine-tuned we can make that tool, the faster we can get things done. The following are five git commands or helpers ... more

Tuesday, 17 March, 2020 UTC

JavaScript promises have always been a major win for the language — they’ve led to a revolution of asynchronous coding that has vastly improved performance on the web. One shortcoming of native promises is that there’s no true way to cancel a fetch …until ... more

Monday, 17 February, 2020 UTC

The Firefox DevTools underlying code, which is written with JavaScript and HTML, is a complex application. Due to the complexity and amount of work going on, the DevTools team has done everything they can to load as little as possible. Furthermore the ... more

Tuesday, 11 February, 2020 UTC

For years the only bit of feedback web developers could get was via alert("{str}") calls. These days we have the web console but, in rare cases, we don’t have a console and alert calls are our only window into a value at a given time. One problem: ... more

Thursday, 6 February, 2020 UTC

One awesome web functionality we take for granted is geolocation. Based on geolocation data, we can get someone to their destination, provide them suggestions based on their location, and so on. One downside of native geolocation, especially in the browser, ... more

Monday, 20 January, 2020 UTC

An IP address is a simple, numeric piece of information that gets passed to a server, but that IP address can provide a wealth of information with ipdata. With ipdata you can learn user location, language, currency, and much more! Quick Hits ipdata is ... more

Monday, 30 December, 2019 UTC

Every new year brings about a sense of optimism that the next 365 can bring about big, positive changes in different phases of life. That’s no exception for me and this blog. I did pretty well with last year’s goals, so I thought I’d push myself again ... more

Monday, 9 December, 2019 UTC

JavaScript is loaded with tiny syntax tricks to accomplish useful effects. For example, explore any codebase to see !! being used to convert a value to a boolean value. Have you seen ~~ before? Let’s have a look at what it does! We can employ ~~ to trigger ... more

Monday, 25 November, 2019 UTC

Lazy loading images is a practice that’s been popular for a decade and for good reason: images are usually the heaviest downloads on a given webpage and avoiding unloading images that are never seen saves the user bandwidth. There are plugins for lazy ... more

Wednesday, 20 November, 2019 UTC

GraphQL was developed by Facebook in 2012 to power up its mobile apps. Since open-sourcing GraphQL specification in 2015, it gained a lot of popularity and is now used by many development teams, including giants like GitHub, Twitter or Airbnb. Why so? ... more

Wednesday, 6 November, 2019 UTC

I write a lot of tests for new features within Firefox DevTools. We have hundreds of “mochitests” which open the browser and perform synthetic actions like clicking, typing, and other user actions. I’ve previously written about waitForever which essentially ... more

Tuesday, 5 November, 2019 UTC

So many developers believe that scraping a URL’s content is easy — just a simple curl and you’re done, right? Nope. CAPTCHAs, rate limitations, origin-specific limitations — they make getting content off the web a nightmare. Luckily we now have services ... more

Tuesday, 15 October, 2019 UTC

QR codes aren’t everyone’s cup of tea but I quite like them. If I see something I want to remember or check out later, especially when on the road, it’s super easy to take a quick picture — it’s much easier than trying to remember a URL and much faster ... more

Monday, 14 October, 2019 UTC

I first grew to love Firefox not as a web developer but as user, and what drew me to this amazing new browser was its add-on ecosystem. The add-on I used the most? Web scrapers. Piracy had just hit mainstream and I also need imagery and documentation ... more

Tuesday, 8 October, 2019 UTC

One of the unspoken rules of the internet is that most content is “free”… at the cost of webpage being littered with advertisements and trackers. This was’t a big problem in the early internet days but trackers and advertisements have become so intrusive ... more

Wednesday, 25 September, 2019 UTC

No matter how much experience I gain in this industry, one task I continue to fail at is building an accurate, flexible, and maintainable scraper for site search. As soon as sites change their HTML structure, my scrape is borked. When looking to build ... more

Wednesday, 18 September, 2019 UTC

One of my first tasks each day is checking the weather; it’s a necessity for knowing what my children and I should wear, if I’m going to need to water the lawn or need to shovel snow, and if I can take meetings out on my patio. It’s also been one of ... more

Wednesday, 11 September, 2019 UTC

The webpack JavaScript utility has taken over the modern JavaScript landscape, so much so that it’s hard to be a JavaScript developer and not use it. JavaScript build utilities are the point where they do best practices implicitly, like minify code, ... more

Tuesday, 10 September, 2019 UTC

These days, most front-end projects are going to involve NPM packages of some kind. Occasionally, when browsing documentation for these packages, I’ll see a recommendation to install a package like this. yarn global add <package> Or like this. ... more

Wednesday, 28 August, 2019 UTC

I’ve always loved exploring regular expressions because they’re one of those skills that’s never taught in school — you need to pick them up on the fly, messing up and fixing them along the way. Regex’s are incredibly powerful, and one power they have ... more

Tuesday, 27 August, 2019 UTC

A big part of our daily jobs is accomplished with much ease and efficiency by using different web tools and services. There is no doubt that for any type of need there is a great solution that is doing its job. In this article, we are reviewed on short ... more

Friday, 23 August, 2019 UTC

Async can throw a real wrench into the cogs of our programming workflows, all despite the fact that async is the modern JavaScript pattern. While async/await helps, there’s sometimes confusion about the way to have a single function that returns a value ... more

Monday, 5 August, 2019 UTC

Promises were a revelation in JavaScript development, allowing us to enjoy async processing and avoid callback hell. Many new APIs like Battery API, Cache API, and others use the promise API. One fact you may not know is that you can add a then method ... more

Monday, 29 July, 2019 UTC

For all of the improvements that the JavaScript language has added over the past few years, like the spread operator, default argument values, and arrow functions, there are still a few features I’d love to see implemented. One such feature is optional ... more

Friday, 26 July, 2019 UTC

The JavaScript Proxy API provides a wealth of “magic” within JavaScript, allowing you to use any object as sort of an alias that allows a wall of validation, formatting, and error throwing. Did you know that you could also employ the Proxy API as an ... more

Tuesday, 16 July, 2019 UTC

I’ve always been a massive advocate of cryptocurrency. I love the technology, the ease of use, and the freedom that cryptocurrencies bring to the world. Despite my love of crypto, I know that adoption will take a long time and that the state of crypto ... more

Tuesday, 2 July, 2019 UTC

I love that media has moved from custom plugins (Flash…gross) to basic HTML <video> and <audio> elements. Treating these media sources as just another element allows us to use CSS filters to adjust display, for example. The less we need to ... more