Migration from Spress to Hugo

History and Motivation The list of static site generators is very long, but which one should you choose? When I ported this blog from Drupal to static HTML, I chose Spress, written in PHP, because PHP was my main programming language, its code looked well-thought-out, relied on established libraries and did everything I wanted out of the box and with a minimum amount of configuration. However, during the last year there was only one minor release of Spress and I missed some features I saw in other projects:

How to run npm install as non-root from a Docker container

Suppose you don’t want to install Node.js and npm on your local machine and already run your application in a Docker container. How do you install your dependencies from package.json? For deployment, the most common way is to create your own Docker image, where npm install is part of the Dockerfile. But what do you do on your development machine, where you don’t want to build a new image all the time and use the vanilla node image ?

Impressions from the Wikimedia Hackathon 2017 in Vienna

I attended the Wikimedia Hackathon 2017 in Vienna. This is a summary and review of what I learned there while working on the prototype of the “Advanced Search Form” extension for MediaWiki. The first hurdle for working on the feature was setting up a MediaWiki environment. The recommended way is the Vagrant environment, but I’ve had bad experiences with that in the past and did not want do download tons of stuff over the conference WiFi.

Impressions from 2017 - Day Two

Here are the bits and pieces I learned from the talks I attended at the second day of JSConf 2017 in Berlin: Applying NASA coding standards to JavaScript “Would you fly in a plane with an HTML and JavaScript instrument panel?” was the question Denis Radin asked at the beginning of the talk. While he is hopeful that improving the overall quality of JavaScript code may lead some day to the browser being the “universal GUI”, I remain skeptical for aviation, space exploration and other mission-critical systems that need real-time performance characteristics and high fault tolerance.

Impressions from 2017 - Day One

Here are the bits and pieces I learned from the talks I attended at the first day of JSConf 2017 in Berlin: What’s new in Netscape Navigator 2.0 Marcin Szczepanski tried to build the TodoMVC app with the first JavaScript implementation that was available - in Netscape Navigator 2.0. There was no DOM to manipulate, you could only call document.write during the render call. What he came up with, was an application architecture based on HTML framesets with a “parent frame” that holds the application state and child frames that are re-loaded and thus re-rendered with the current state whenever an event occurs.