Published at
Updated at
Reading time
The Web Weekly newsletter keeps you up to date, teaches you web development tricks and covers all things working in tech.

Happy Sunday, party people! ๐Ÿ‘‹

What. A. Week!

We ran Contentful's annual conference this week. Salma and I moderated the second day. It was exhausting, but we had so much fun! The videos will be released shortly.

Salma and Stefan moderating.

And with that โ€“ this week's Web Weekly includes:

  • Scripts that do nothing
  • SVG favicons
  • Fascinating security vulnerabilities

... and, as always, GitHub repositories, a new Tiny Helper and some music.

Something that made me smile

Thus, the following expressions all return the same window object:  window.window; window.window.window; window.window.window.window;

You might know my flatmate @randomMDN. The Twitter bot posts random MDN pages, and it shared the window.window property. The web platform is messy, sometimes weird, and we're often stuck with all this "special" behavior.

What shall I say โ€“ window.window.window.window made me smile. ๐Ÿ™ˆ

Learn about window.window.window

Email handling โ€“ Don't repeat yourself

How to create Emails templates in Gmail: The 2021 Guide

I'm on the constant journey of saving keystrokes. And while I use various auto-expanding snippets like ;es (my private email), ;tel (my phone number) or ;had (Have a great day!) I repeated myself a lot when writing emails.

This week I was reminded of Gmail templates and set up a few to save some keystrokes (and time) with the emails I send every week.

Set up your Gmail templates

Chrome Dev Summit

Everything announced at Chrome Dev Summit 2021

Short'n'sweet: apparently, Chrome Dev Summit happened last week. ๐Ÿ™ˆ I missed it, but you can read all web feature announcements in this blog post.

Check the announcements

Do-nothing scripts

Do-nothing scripting โ€“ Almost any slog can be turned into a do-nothing script. A do-nothing script is a script that encodes the instructions of a slog, encapsulating each step in a function.

I love Dan Slimmon's approach to automating procedures. Often we all have to follow a series of steps after doing something. For example, after deploying to production, you might have to close some tickets, post to Slack and QA that everything's working correctly.

Your team and you could now document all these steps somewhere, but wouldn't it be nicer to run a command that does nothing else than walk you through all the steps? I certainly think so!

Set up do-nothing scripts

Invisible source code vulnerabilities

Trojan source โ€“ invisible source code vulnerabilities

The following security vulnerability is wild!

Did you know that there are invisible Unicode characters that change the character render order? The Trojan Source describes how these characters can be used to reorder code tokens so that the code you see is not the code that'll run. Scary!

Learn about Trojan Source

Double-downloaded favicons

HTML snipppet showing how to correctly load SVG favicons

SVG favicons are supported in all browsers except Safari. Use the following snippet to avoid Chromium browsers downloading the ico and (!) the svg files.

Avoid double downloads

TIL: use cases for the trap CLI command

tempfile=/tmp/tmpdata; trap "rm -f $tempfile" EXIT;

This week I learned about the trap shell command. It's like a "callback" to define commands that should run when a shell script finishes or is stopped. Use it to clean up files or guarantee that the running script is not accidentally terminated.

Learn about trap

The JavaScript event loop

Visualisation of the JavaScript event loop

Oldie but goldie; Philip Roberts' JSConf EU talk from 2014 is an evergreen resource. If you want to understand the JavaScript event loop, this talk is worth your time!

Understand the JS event loop

A command palette library

A command palette in a website

I shared my GitHub repo awesome-command-palette last week. The repo includes sites and apps that implement a keyboard-accessible command palette but also libraries to use.

Thanks to a contribution, I learned about ninja-keys, and it looks solid! The library bets on custom elements and is highly configurable. Get ready, friends; my site will have a command palette soon!

Add Ninja Keys to your site

TIL recap: Use buttons to overwrite form behavior

HTML source code including the formaction, formmethod and formnovalidate button attributes

Have you heard of the formaction, formmethod and formnovalidate button attributes? A year ago, I learned that you can use them to overwrite form behavior with a button. ๐Ÿ˜ฒ

Overwrite form behavior

Reader shout-out ๐Ÿ’™

Learning resources for developers

Josefine Schfr shared valuable learning resources on the SinnerSchrader developer blog. She included Tiny Teachers and shared Web Weekly. ๐Ÿ˜Š

Thanks so much, Josefine, and thank you all for reading along!

Three valuable projects to have a look at

A new Tiny Helper

Screenshot of

If you're dealing with photos and want to remove things from the pictures, you should give a try. Highlight the areas you want to remove and see the magic happening.

The service runs entirely in the browser, and there are no Photoshop skills required!

Clean up your pictures

Find more single-purpose online tools on

A quote to think about

This week's quote is in the spirit of building things from Charlie Gerard.

Useless is not worthless.

A song that makes you stop coding

Blue Book โ€“ Tom Doolie

This week's song won't make you stop coding, but it'll help you focus. "Blue Book" is a nicely flowing track with a very chilled beat.

Listen to "Blue Book"

Thank you for reading!

And that's a wrap for the forty-fourth Web Weekly! If you enjoy my newsletter, I'd love you to tell others about it. โ™ฅ๏ธ

If you're not a subscriber, you can change that! ๐Ÿ˜‰

Stay safe, and I'll talk to you next week! ๐ŸŽ‰ ๐Ÿ‘‹

Was this post interesting?
Yes? Cool! You might want to check out the email version. The last edition went out 8 days ago.
Stefan standing in the park in front of a green background

About Stefan Judis

Frontend nerd with over ten years of experience, freelance dev, "Today I Learned" blogger, conference speaker, and Open Source maintainer.

Related Topics

Related Articles