TL;DR: Prepend "about:reader?url=" to any website URL to force reader view in Firefox I'm in love with Firefox' reader view. It not only removes ads, nag-screens, subscription prompts and other clutter from articles but it's typographical choices often are better than the (well-intended) choices of the author. I also value the consistent look and feel … Continue reading Force-enabling Firefox’ reader view
Category: web
Error handling for failed network requests with service workers
Most service worker code samples show only the happy path where the fetched resource will eventually be available, eg: self.addEventListener('fetch', event => { // Skip cross-origin requests, like those for Google Analytics. if (event.request.url.startsWith(self.location.origin)) { event.respondWith( caches.match(event.request).then(cachedResponse => { if (cachedResponse) { return cachedResponse; } return caches.open(RUNTIME).then(cache => { return fetch(event.request).then(response => { // Put … Continue reading Error handling for failed network requests with service workers
Book of dark arts: selective disclosure with CSS
Show and hide pages and page elements with declarative CSS instead of imperative code
Book of dark arts: storing data in the view
Pentagram, source Wikipedia. Towards the end of the year I'll indulge in the dark arts, join the goblins and leave my white architect hat under the Christmas tree where it belongs. I'm helping a friend (a technically minded, non-programmer) write his first mobile app . We wanted to keep everything simple: use technologies which can … Continue reading Book of dark arts: storing data in the view
HTTP compression and incremental rendering
TL;DR: HTTP compression can delay rendering of web resources HTTP permits content to be served with different encodings, some of which can be used to compress [1] the data volume transferred over the network, which has become a frequent suggestion [2] towards optimising websites for performance. It turns out that the deflation phase of the … Continue reading HTTP compression and incremental rendering
Secure messaging in the browser
By observing news and public discussions I feel that there is a growing awareness of data privacy and an increasing demand for secure person-to-person communication. In order to address my communication needs, I plugged together a few Javascript libraries and started the Webencryption [1] project on Github. What is Webencryption? Webencryption is a rather crude … Continue reading Secure messaging in the browser
Phantomjs not showing text
TL;DR if Phantomjs doesn't show any text/fonts, give it a Truetype web font. Despite Phantomjs' [1] development slowing down [2] it still brings most of the features I need for regression testing web applications. And, thanks to Docker, it should be possible to operate it for a long time to come. Installing and operating Phantomjs … Continue reading Phantomjs not showing text
Unjam CSS
Abstract: Unjam CSS is a technique for removing render-blocking CSS from pages over which we have only partial control, such as CMS or portals. The problem: a portal generates HTML pages based on a template. Custom HTML can be inserted at specific place holders, but we can't modify the rest of the page HTML. The … Continue reading Unjam CSS
Equal height HTML elements in a container with CSS
Task: create HTML elements that contain other elements and adjust their height to surrounding container. No Javascript allowed. That's surprisingly hard; height:100% won't work; elements generally wrap their contents tightly and don't extend to their parents height dimension. Illustrating the problem: three elements inside a surrounding container Css-tricks lists several ways [1] to get this … Continue reading Equal height HTML elements in a container with CSS
Advanced web security topics
(Updated 22 May 2020) This post discusses web security issues that I come across - so far thankfully mostly by reading about them. It is a work in progress which I'll keep updating. The post title includes "advanced" because the topics discussed here involve clever, non-trivial hacks, are novel at the time of their publication … Continue reading Advanced web security topics