Wednesday, 10. December 2025 Week 50

The ABCD framework for feedback

I have a little framework that I often use when I want feedback/when I give feedback on a blog post, a tutorial, a project, a product, etc. to get as much clarity as possible, quickly.

  • what’s Awesome?
  • what’s Boring?
  • what’s Confusing?
  • what Didn’t you believe?

These “ABCD” questions are basic, but they get to the meat of the good and the bad (and the in between) of what you’re producing.

(via)

Sunday, 7. December 2025 Week 49

Building a timetable with modern CSS

This article about Building a multi stage timetable with modern CSS using grid, subgrid, round(), and mod(), could become handy the next time you need to build a timetable on a website for a conference or festival.

Timetables are one of those components that look simple but contain a surprising amount of layout logic. For a project in 2026 I needed a version that supports multiple stages, adapts to the tallest session, and stays aligned across the entire timeline — all built in CSS.

(via)

Saturday, 6. December 2025 Week 49

CSS clamp()

Cassidy Williams wrote a post explaining the what, how and why of CSS clamp().

In a sentence, clamp() lets you assign a value to a CSS property between a minimum and a maximum range, and uses a preferred value in that range. It’s really helpful for responsive layouts and typography!

(via)

Fizz Buzz in CSS

Susam Pal shows how to solve Fizz Buzz in CSS:

li { counter-increment: n }
li:not(:nth-child(5n))::before { content: counter(n) }
li:nth-child(3n)::before { content: "Fizz" }
li:nth-child(5n)::after { content: "Buzz" }

(via)

Sunday, 30. November 2025 Week 48

TIL: Collapsing whitespace in a Liquid template

By inserting an empty string, Liquid's whitespace control can be used to remove newlines in templates while keeping them readable:

<p class="title">
  {{- article.title -}}
</p>

{{- "" -}}

<p class="summary">
  {{- article.summary | strip -}}
</p>

(via)

Saturday, 22. November 2025 Week 47
Thursday, 6. November 2025 Week 45

How to fix subsystem request failed on channel 0

Today I got greeted by the following error when I was trying to scp some file.

# scp a.txt user@somehost:/tmp/b.txt
subsystem request failed on channel 0
scp: Connection closed

This cryptic error message comes from a default config change that OpenSSH introduced in version 9.
By default it now uses the sftp protocol for transfering files and no longer the original scp protocol.
Thus for hosts which do not support the sftp subsystem, but only the original scp, the file transfer fails with the above error.

Luckily there is the -O parameter which can be used to select the original scp protocol, and the transfer then succeeds:

# scp -O a.txt user@somehost:/tmp/b.txt
Wednesday, 29. October 2025 Week 44

TIL: Speculation Rules API

Yet another trick to make your Internet feel faster :-)

Speculation Rules API (SRA) is a recently updated browser API which allows for a JSON definition to dictate what page A wants to do with page B. The "do"-ing can be either prefetching (just download the HTML) or prerendering (load the page, including its static assets, and render it completely). The prerendering happens in a new browser process and page B is ready to be swapped with the current page A instantaneously when the user navigates to B.

(via)

Sunday, 26. October 2025 Week 43