DOM Trees and Focus Order

Sometimes it is hard to determine which element to focus. This post provides you with a specific tool to make your choice of candidates wider than just the body or “whatever the browser does”. | Continue reading


@manuel-strehl.de | 4 months ago

Easy Theming with OKLCH colors

There is a new kid on the block with CSS colors. OKLCH is all the rave. We can use it together with CSS custom properties to add easy color themes to our CSS styles. | Continue reading


@manuel-strehl.de | 4 months ago

Work Around MySQL’s “Big Packet” Error

I worked at importing Unicode data into Codepoints.net’s database, when I encountered a peculiar MySQL error that I haven’t seen before yet: ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes | Continue reading


@manuel-strehl.de | 2 years ago

Comfortably Call make from Subfolders

A little helper script allows for more comfort when working with make in projects with sub-folders. | Continue reading


@manuel-strehl.de | 3 years ago

Efficiently Calling JS Bundlers in a Makefile

A wonderfully elegant way to use Makefiles together with bundlers, that emit several files, are intermediate files. This post explains, how you can use them for easy cross-platform little-setup builds. | Continue reading


@manuel-strehl.de | 3 years ago

A Paradox of Irony

Continue reading


@manuel-strehl.de | 3 years ago

Searching MDN on the Command Line

The Mozilla Developer Network recently switched its infrastructure. Now, the MDN content is stored in a Github repository in the form of HTML files with YAML front matter. You can think of it, what you want, given their … | Continue reading


@manuel-strehl.de | 3 years ago

Docker One-Liners to Make Complex Tasks Simple

Docker as a tool to spin up complex setups quickly also allows for phenomenally fast deployment of packaged applications, that would otherwise be daunting to install. Here are some very useful commands, that make heavy use of this feature for a plethora of different problems. | Continue reading


@manuel-strehl.de | 3 years ago

Create Opening Doors in CSS

In this post we will open doors solely with the magic of modern CSS. Using the well-supported 3D transforming properties, we achieve this without a single line of Javascript. | Continue reading


@manuel-strehl.de | 3 years ago

Check Markdown Spelling with aspell

The venerable aspell spell checking utility has gained some respectable powers over the last year. In this post we explore them to add easy spell checking to our Markdown pipeline. | Continue reading


@manuel-strehl.de | 3 years ago

Trim LilyPond SVG Output

Music sheets typeset with Lilypond have a hardcoded height. This post explains, how to reduce the height to what is actually shown using Inkscape’s command-line interface. | Continue reading


@manuel-strehl.de | 3 years ago

Overwrite PHP’s built-in functions in unit tests

In unit tests you might run in problems, when your code uses PHP built-in functions, that emit certain hard-coded values like session_start(). When you use PHP namespaces, however, you can solve this problem in an elegant way. | Continue reading


@manuel-strehl.de | 10 years ago

Minimal contents of a .git folder

What does a minimal usable .git folder look like? Let’s try it out! | Continue reading


@manuel-strehl.de | 10 years ago

A Makefile Rule for Generating Responsive Images from SVG

This rule takes an SVG file as input and returns two PNGs. One is rendered with 72 dpi, which maps 1 SVG pixel to one output pixel. The other, target@2.png, is rendered with twice the solution to fit for Retina displays. | Continue reading


@manuel-strehl.de | 11 years ago

Page Layout Experiment

This small experiment allows to try out interactively the so-called Gutenberg canon for page layout on different page sizes. | Continue reading


@manuel-strehl.de | 11 years ago

Load jQuery before RequireJS and still use it as dependency

If you use RequireJS and jQuery in a project, you might find yourself in a situation, where you embed jQuery before RequireJS, but still need to have the “jquery” dependency respected. This article describes, how to achieve this. | Continue reading


@manuel-strehl.de | 11 years ago

Learning HTML

In January 2011 a user at StackOverflow asked, if he should start learning HTML5 / CSS 3 or begin with the older versions. In quite a length I answered the question by explaining my way to web development over the years. I think, that the answer might serve others well, too, who … | Continue reading


@manuel-strehl.de | 12 years ago

Reverse Ordered Lists with CSS

The other minute I’ve read an interesting article on the new HTML5 reversed attribute on ordered lists, that, who would have thought, reverses the counting. The article proposed a JavaScript polyfill. However, I thought,… | Continue reading


@manuel-strehl.de | 12 years ago

A Suggestion for Replacing the Gregorian Calendar

In 2009 Tantek Çelik published a draft of a new calendar with 5-day-weeks solving issues with the Gregorian one. I am not convinced, that this is a useful way to re-structure the calendar. Back in the days we set up a calendar for our RPG world together with Sebastian Gerstl and … | Continue reading


@manuel-strehl.de | 12 years ago

Rolling Releases are the Future

The Mozilla developers have received some critics for their decision to remove the version number from future Firefox releases. Many other open source projects, like GIMP, are speeding up their release cycles as well, al… | Continue reading


@manuel-strehl.de | 12 years ago

About Attribution of my Works

The question came up quite regularly in the past, what would be an appropriate way to attribute me when using one of the CC-released works. Unfortunately the Creative Commons License itself proves to be no real help here. The license text (as of version 3.0) says: | Continue reading


@manuel-strehl.de | 12 years ago

motokai, a dark motif for ChatZilla

I’m a sucker for the monokai color scheme, especially in its Vim theme incarnation molokai. It is easy to imagine, how surprised I was, that this scheme wasn’t ported to a ChatZilla motif yet. After all it exists no… | Continue reading


@manuel-strehl.de | 12 years ago

Back from the MDN Doc Sprint

The Mozilla Doc Sprint in Cincinnati was an extremely interesting event to be. This article sketches the deepest impressions I took home with me. | Continue reading


@manuel-strehl.de | 12 years ago

On Replacing Checkboxes and Radio Buttons with CSS3 and w/o Images

There are several techniques to replace native checkboxes with images. This approach will need no extra markup, degrades gracefully and doesn’t harm a single image. | Continue reading


@manuel-strehl.de | 12 years ago

Using PHP as It was Meant to

PHP has been thrashed a lot over the last years. While many critics are doubtlessly true, it is still the most used server-side language to create the web we use today and it is an easy to learn language to get started w… | Continue reading


@manuel-strehl.de | 13 years ago

A Simple Icon Set

For one of my recent projects I looked for simple icons, that are free to use. Well, to put it in a nutshell, I didn’t find, what I was looking for. So I fired up Inkscape and created a set that fits my need. Here it is, simple, plain, monochrome and free to use (a.k.a. in public … | Continue reading


@manuel-strehl.de | 13 years ago

HTML5 Reset Styles

The HTML5 specification lists default CSS rules. The article describes how to revert these. | Continue reading


@manuel-strehl.de | 13 years ago

Markup for Syntax Highlighting

The article describes a way to mark up syntax highlighted source code with a simple pre element while retaining the advantages of other solutions. | Continue reading


@manuel-strehl.de | 13 years ago

Simple EPUB ebooks with Python

The EPUB standard is based on several other, well-established technologies. This makes it easy to generate simple ebooks in this format with the standard libraries of many modern languages. I’ll show here a way to do it … | Continue reading


@manuel-strehl.de | 13 years ago

A Minimal Proxy with PHP and SQLite

Many web services allow access to their APIs via JSONP nowadays. This allows client-side JavaScript to access ressources via domain boundaries. However, for several reasons caching ressources locally (on the same server … | Continue reading


@manuel-strehl.de | 13 years ago