Research Post

Windows' windows

Windows' windows

27 June 2018

Some of you might remember the episode of Only Fools and Horses where Trigger gets an award for using the same broom for 20 years - 17 new heads and 14 new handles. More formally known as The Theseus Paradox, does something lose its identity when all its constituent parts have been replaced? But what has this to do with operating systems, I hear you yawn?

There are many advantages to developing software on a case-sensitive operating system, especially when the language you're using is also case sensitive. Microsoft's Windows isn't - despite its default file system, NTFS - being so. Very few Windows applications are designed to work with case-sensitive file systems. The exceptions are generally those that have to work with POSIX compliant systems, e.g. Cygwin.

It's a tortuous process to be out at a client's site and having checked a file into git, discover that you've committed a file with the wrong case in the file name. You can't just change the case of the file name on disk as Windows doesn't recognise the name has changed, so you have to actually change the name, then change the code to recognise this name, then commit, then repeat it all again with the correct name. Microsoft's 'cmd' shell is also severely lacking compared to Linux's Bash (or fish, or ksh, etc). So Microsoft did the best thing and now allows Windows 10 users to switch out the cmd shell underpinnings for Linux. The Windows store currently has Ubuntu and openSUSE flavours available.

Even switching apps via Alt-Tab is changing - and for the better. Instead of just cycling through applications, you'll soon be able to cycle through browser windows and individual application tabs as well. A feature also already implemented (and extended) in the latest KDE Plasma Linux desktop (see below).

Notepad. Sigh. The absolute lowest form of editing other than just rewriting your text file from scratch from the command line (copy con file name.text, start typing and control-F6 to finish, before you ask). It hasn't really changed since Windows was created. Until now. Oh, and only for Windows 10 users (again). The eternal problem is editing a file that was created under Linux. It has, understandably, Linux-y line endings and when opened in Notepad, all the rows are blended into one. But no longer. Notepad now supports 'LF' as well as the original 'CRLF' line endings. A small but extremely welcome change. In its defence though, I've always thought that a Carriage Return followed by a Line Feed is more technically correct than just a line feed - 'return to the beginning of the line and then go down a line'.

What if you're fed up with the way the windows work and you want to walk on the wild side? Well, KDE has you covered. KDE is arguably the best (KDE & GNOME have the vast majority of the KDE UI market sewn up) UI for Linux and it's also available for Windows. It's freely available to download from but it doesn't come with a package manager though, and for that, chocolatey.exe has you covered. It's a great way of installing open source software in Windows.

So, having replaced the file system, the window manager/look and feel, and the text editor, is it still Windows that you're using?

Well done, FIDO!

How long before you don't need to type in a password? Microsoft, Mozilla and Google have recently endorsed two new APIs that, when implemented, mean that you can use a locally attached something-or-other to authorise you instead of a username and password combination. For instance, a local fingerprint sensor or face recognition camera, either built-in to your PC or attached via USB. The WebAuthn API specifies how this works and the FIDO Alliance Client-To-App Protocol (CTAP) specification sets out how devices attach and communicate this secure information. FIDO Alliance is concerned with security and was founded by PayPal and Lenovo among others in 2013. The key thing here is that user credentials never get sent over the internet.

From Lick UI-ed to LiqUId

Steve Jobs once described Apple's Cocoa windows manager as 'lickable' as they were so attractive (older times…). Last Friday, I was compiling a toolset for HTML5 development using ReactJS for one of our clients and I've included that list here so you can see what's involved:

  • React JS: the library that controls the way data is displayed and updated on screen.
  • Redux: how state data is managed and updated and passed to React. This library isn't just for React - it can be used comfortably with Angular.
  • Redux Sagas: a saga is a long-running asynchronous connection usually used for REST calls for data. It relies on Javascript generators and yielding for its asynchronicity.
  • ImmutableJS: don't use mutable data as it can kill performance. ImmutableJS is a great way of accomplishing this. It doesn't rely on React either.
  • React Router: this gets you from one web page to another within your app. Supports transition animations, history and the back button.
  • Reselect: a memorisation and composable Redux data store query library to speed up Redux data store access.
  • lodash: a general utility library for functional/collections routines.
  • Styled-components - CSS as JavaScript. Embed styles directly in each component or in local style sheet.

…and this list doesn't include linting assistants or even a UI widget library (we recommended React Semantic UI).

Back to Articles