Tuesday, 16 June 2026

Keeping Ubuntu Up to Date

Keeping Ubuntu up to date in WSL is a manual process (unless automated).

Even if automated, you may need a "revert to manual" process if automation breaks (for whatever reason).

Some points:
  • The /etc directory is your friend in all this
  • cat /etc/os-release - needs to be done before and after to check the release has been complete
  • You should upgrade regularly - not least because you need to get the latest security updates
To ensure the upgrade can happen successfully you need to check/edit the release-upgrades file.

sudo emacs -rv /etc/update-manager/release-upgrades

Change Prompt=never to Prompt=LTS (the latter checks to see if a new LTS release is available).

Useful commands:
  • sudo apt update
  • sudo apt full-upgrade
  • sudo do-release upgrade
Don't forget to check os-release for successful install.

Official documentation here.

Process Based Automation

If you have a strong, underlying process, it should be trivial to automate it.

Monday, 15 June 2026

Latest Haskell Compilers

A good, up-to-date Haskell compiler is the GHC

Unlike earlier compilers e.g. Hugs, GHC has support for concurrency and parallelism, including Software Transactional Memory.

There are some language extensions available, including support for the FFI, or Foreign Function interface, which is enabled by default.

The latest Haskell Report on which the current version of GHC is based on is Haskell 2010.

One unfortunate fact about Haskell is poorly maintained external libraries.

What is IFNDR in C++ And Why is it Important

The June 2026 meeting for the ISO Standard C++ group concluded in Brno. 

A key objective discussed was reduction in undefined behaviour (UB) and IFNDR ("ill formed no diagnostic required") scenarios in C++. 

IFNDR is used greatly in the C++ context and refers to a situation where a program is ill-formed but the compiler is not required to generate an error.  This can result in runtime issues.

A website summarised the dangers of UB can be found here.

Thursday, 11 June 2026

RDAP is the new whois

You may see the message on websites "Use of the RDAP service is limited to lawful business purposes only". 

RDAP is the Registration Data Access Protocol developed by the IETF as the successor to whois.

Key difference: 

whois returns free text, RDAP returns JSON, making it machine readable and easier to automate. It also supports RESTful web services, allowing for HTTP based queries, error codes, authentication and access control.

RDAP also supports Internationalized Domain Names (IDNs), which are domain names utilizing non-Latin characters. Languages can include Arabic, Chinese, Cyrillic or Devanagari. As DNS is limited to ASCII characters, an ASCII encoding called Punycode (deliberately designed to rhyme with Unicode) is used for name translation.

All that said, whois is still probably more frequently used than RDAP.

Tuesday, 9 June 2026

C++ 26

The new C++ is C++ 26.  It has been effusively promoted by Herb Sutter.  A lot of new features have already been implemented in gcc - MSVC and Intel C++ need to catch up.

Profiles in C++

Profiles are a relatively new concept from the C++ Core Guidelines.

Their aim is to improve code safety, portability and maintainability.

Profiles are (portably) enforceable rules to achieve a specific guarantee. For example a Bounds Safety profile would force the compiler or static analyzer to flag the following:

int arr[5];
arr[10] = 42;  // out of bounds access - flagged by profile

A presentation by Stroustrup at a Safety Study Group explores this. Herb Sutter also published an interesting paper which refers to levelling up versus Rust.