jfhr's blog

Hi, I write blog posts about software development and books (and sometimes more). If you enjoy this blog, feel free to say hello :)

Latest post:

HTTP/2 Server Push and Cache-Digest

Server Push is a feature in HTTP/2 that can make websites more efficient. This post is about how it works, how you can implement it - and why it is so rarely used.

Build automation with JavaScript and zx

zx is an open-source tool by google for creating server-side scripts with JavaScript. In this post I'll talk a bit about what it does, and how and why I use it in several projects to automate builds.

The DeconstruCT.F 2021

I played in the DeconstruCT.F 2021 with ps1ttacus! It's a little late, but these are my writeups for the web challenges I solved.

The Down Under CTF 2021

I was spontaneously invited to play on the DownUnderCTF 2021 by ps1ttacus.

The most important thing I learned: CTF's are fun! I'm glad I participated and want to say a big thank you to the organizers. In this post I share writeups of the challenges I solved.

How to really know if your webapp is online

If you search for "check online JavaScript", you'll quickly come across the navigator.onLine property. Unsurprisingly, it returns true if you're online, and false if you aren't. In addition, the window.ononline and window.onoffline events notify you whenever that value changes.

False positives

If it was quite this easy, I wouldn't be sitting here writing a blog post about it. In fact, if we look at the spec, we find the following...

Book review: "They Both Die at the End" by Adam Silvera

Most books build suspense by making it uncertain what will happen in the end. Then there's They Both Die at the End by Adam Silvera - a book that spoils its resolution right in the title. You know how the story ends before you get to the first page.


document.designMode = "on";

This single line of JavaScript makes an entire webpage editable. Try it out here...


I've recently read about the project Mighty. Tl;dr, it's stadia for the web browser. Mighty runs Chrome on their server and streams it to your device, promising better performance and less battery use. Sounds interesting, and I'll definitely try it once it's available - but there are some things I want to talk about.

Start an app with Angular 12 and Bootstrap 5

Learn how to quickly create a web-app with Angular 12 and Bootstrap 5.

Start an app with Angular 12 and Bootstrap 4

Learn how to quickly create a web-app with Angular 12 and Bootstrap 4.

Light and dark themes with Angular, Bootstrap and SASS

Let's say you have an Angular single-page app and use Bootstrap for styling. You want to let your users choose between multiple themes (e.g. a light and dark theme). You also want the option to use custom SASS for each theme, as well as for all themes at once.

The solution