<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
  <channel>
    <title>Guido Flohr - Software Development</title>
    <description>Everything remotely related to software development.</description>
    <link>https://www.guido-flohr.net/</link>
    <webfeeds:cover image="http://www.guido-flohr.net/assets/images/gfl-profile.jpeg" />
    <atom:link href="https://www.guido-flohr.net/" rel="self" type="application/rss+xml"/>

    <pubDate>Tue, 02 Jun 2026 17:07:22 +0000</pubDate>
    <lastBuildDate>Tue, 02 Jun 2026 17:07:22 +0000</lastBuildDate>
    <generator>Qgoda vv0.11.0 (https://www.qgoda.net/)</generator>
      
      <item>
        <title>A JavaScript Lifecycle-Trap — How Class Field Initialisers Break Inheritance</title>
        <description>If you are one of the people that love to optimise away a constructor of a subclass, beware of a subtle caveat. The class field initialisation may not take place, when you expect it.</description>
        <pubDate>Mon, 01 Jun 2026 21:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/a-javascript-lifecycle-trap-how-class-field-initialisers-break-inheritance/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/a-javascript-lifecycle-trap-how-class-field-initialisers-break-inheritance/index.html</guid>
        
        <category>Development</category>
        
        <category>JavaScript</category>
        
        
        <category>Development</category>
        
      </item>
      
      <item>
        <title>Yargs 18 Pitfalls</title>
        <description>&lt;img src="/assets/images/yargs-18-pitfalls/pirate-ship.webp" width="100%"&gt;Upgrading Yargs from version 17 to 18 in a TypeScript project using Jest turned out to be a bit of a nightmare. The release notes for Yargs 18.0.0 include the line “yargs is now ESM first” — a seemingly small change that can cause major headaches. In this blog post, we’ll take a closer look at what that means and how to deal with it.</description>
        <pubDate>Tue, 07 Oct 2025 21:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/yargs-18-pitfalls/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/yargs-18-pitfalls/index.html</guid>
        
        <category>Yargs</category>
        
        <category>Jest</category>
        
        <category>Development</category>
        
        <category>TypeScript</category>
        
        <category>JavaScript</category>
        
        
        <category>Development</category>
        
      </item>
      
      <item>
        <title>Abusing JSON.stringify()</title>
        <description>&lt;img src="/assets/images/abusing-json-stringify/carpentry-tools.webp" width="100%"&gt;</description>
        <pubDate>Wed, 20 Nov 2024 22:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/abusing-json-stringify/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/abusing-json-stringify/index.html</guid>
        
        <category>Development</category>
        
        <category>JavaScript</category>
        
        
        <category>Development</category>
        
      </item>
      
      <item>
        <title>Hidden Quirks of JavaScript `for...in` Loops</title>
        <description>&lt;img src="/assets/images/hidden-quirks-of-javascript-for-in-loops/ferris-wheel-at-night.webp" width="100%"&gt;The C-style three-expression for loop in JavaScript is often viewed as old school or awkward beginner style. Some developers automatically use a for...of, foreach, or for...in statement instead. But the latter has a subtle pitfall that can lead to unexpected behaviour.</description>
        <pubDate>Mon, 11 Nov 2024 22:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/hidden-quirks-of-javascript-for-in-loops/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/hidden-quirks-of-javascript-for-in-loops/index.html</guid>
        
        <category>Development</category>
        
        <category>JavaScript</category>
        
        
        <category>Development</category>
        
      </item>
      
      <item>
        <title>Creating E-Invoices with Free and Open Source Software</title>
        <description>&lt;img src="/assets/images/creating-electronic-invoices-with-free-and-open-source-software/flow-chart.webp" width="100%"&gt;Starting 1 January 2025, electronic invoicing will become mandatory for all B2B transactions in Germany. Several other countries in the European Economic Area have already adopted similar requirements, or will soon follow suit. As a result, many businesses in Germany are racing to implement electronic invoicing solutions, though many face challenges along the way. Discover how you can simplify this process by generating electronic invoices in multiple formats — using only free and open-source software.</description>
        <pubDate>Sun, 03 Nov 2024 22:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/creating-electronic-invoices-with-free-and-open-source-software/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/creating-electronic-invoices-with-free-and-open-source-software/index.html</guid>
        
        <category>Accounting</category>
        
        <category>E-Invoice</category>
        
        <category>Development</category>
        
        
        <category>Development</category>
        
      </item>
      
      <item>
        <title>Dynamic Angular Configuration</title>
        <description>&lt;img src="/assets/images/dynamic-angular-configuration/angular-chameleon.jpeg" width="100%"&gt;Angular apps traditionally rely on static configuration through environment files, necessitating separate builds for each environment &amp;dash; a cumbersome process in practical scenarios. In this blog post, we describe an alternative, where configuration is loaded dynamically at runtime, streamlining development and enhancing flexibility. As an additional benefit, we will validate the configuration against a schema and add type-safety to it.</description>
        <pubDate>Wed, 15 May 2024 21:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/dynamic-angular-configuration/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/dynamic-angular-configuration/index.html</guid>
        
        <category>Angular</category>
        
        <category>Development</category>
        
        <category>Deployment</category>
        
        <category>TypeScript</category>
        
        <category>JavaScript</category>
        
        
        <category>Development</category>
        
      </item>
      
      <item>
        <title>Compiling ImageMagick for Perl</title>
        <description>Compiling PerlMagick, the Perl binding for ImageMagick, is a major pain in the neck, as it almost never works out of the box. Check out this blog post to discover an effortless solution to that tedious task. Say goodbye to manual tinkering and compiling headaches and hello to use Image::Magick!</description>
        <pubDate>Wed, 08 May 2024 21:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/compiling-perlmagick/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/compiling-perlmagick/index.html</guid>
        
        <category>Development</category>
        
        <category>Perl</category>
        
        
        <category>Development</category>
        
        <category>System Administration</category>
        
      </item>
      
      <item>
        <title>Standalone Angular Tour Of Heroes</title>
        <description>The popular Angular Tutorial Tour of Heroes currently does not work as described with recent Angular versions (Angular 18) because the Angular command-line tool now creates a standalone Angular app by default. You could avoid these problems by creating a non-standalone app but it is also quite instructive to just fix the problems yourself and stick with the standalone version.</description>
        <pubDate>Wed, 27 Mar 2024 22:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/standalone-angular-tour-of-heroes/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/standalone-angular-tour-of-heroes/index.html</guid>
        
        <category>Angular</category>
        
        <category>Development</category>
        
        <category>TypeScript</category>
        
        <category>JavaScript</category>
        
        
        <category>Development</category>
        
      </item>
      
      <item>
        <title>Authenticating Access to Private Content Hosted with AWS CloudFront</title>
        <description>&lt;img src="/assets/images/authenticating-access-to-private-content-hosted-with-aws-cloudfront/metal-padlock-on-keyboard.jpeg" width="100%"&gt;Setting up a static website, uploading it into an S3 bucket that serves as the origin of a CloudFront distribution is a simple and cheap solution. But what if you want to control access to the content? HTTP basic authentication no longer seems to work and is clumsy and ugly anyways. But signed cookies give you a better solution at hand and it is easy to implement with serverless computing.</description>
        <pubDate>Wed, 06 Mar 2024 22:00:00 +0000</pubDate>
        <link>https://www.guido-flohr.net/authenticating-access-to-private-content-hosted-with-aws-cloudfront/index.html</link>
        <guid isPermaLink="true">https://www.guido-flohr.net/authenticating-access-to-private-content-hosted-with-aws-cloudfront/index.html</guid>
        
        <category>Web</category>
        
        <category>Security</category>
        
        <category>AWS</category>
        
        <category>CloudFront</category>
        
        <category>Lambda</category>
        
        <category>S3</category>
        
        <category>JavaScript</category>
        
        
        <category>Development</category>
        
        <category>System Administration</category>
        
      </item>
      
  </channel>
</rss>
