<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <description></description>
    <link>/</link>
    <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 09 Apr 2026 11:01:26 +0000</pubDate>
    <lastBuildDate>Thu, 09 Apr 2026 11:01:26 +0000</lastBuildDate>
    <generator>Jekyll v4.3.2</generator>
    
    
      <item>
        <title>Uhh, er, erm</title>
        <description>&lt;p&gt;For the past few weeks I’ve been working on a personal project. I came up with
the idea as a joke response to a post (since deleted) written by a friend
elsewhere. But what is this idea?&lt;/p&gt;

&lt;p&gt;There already exists a programming language Erlang. I have designed a language
unrelated to this but with the name &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uhhlang&lt;/code&gt;. It is a stack-based language and
the ONLY valid tokens (aside from comments) are hesitation words in various
languages - so uh, erm, euh, äää, and so on. I’ve taken words from English,
Danish, French, German, Hindi, Mandarin and more.&lt;/p&gt;

&lt;p&gt;A tradition in the programming world is for an early (usually the first)
program that a new user creates to display the message “Hello, world!”.&lt;/p&gt;

&lt;p&gt;In uhhlang, a Hello World program looks like the following&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ə ə Say hello
errr errrr ymmm errr uhhh äh
y
err хмм errr ym errr errrr errr ym ymmm ymmm
uhh errrr хмм ymmm errrr ymmmm
uhh errrr errrr ym errr ymmmm ymmm
uhh
uhh ää err ymmm äää errrr 呃
errr errrr ym хмм
uhh
errrr errr errr ym ym ymmm uhhh

errr errr errrr ymmm ym er er ymmmm ymmm
errrr errr ym errr ym ym err ymmmm
uhh errr errrr äh ymmmm
uhh errrr ymmm
errr errrr ym хмм
uhh errr errrr äh ymmmm
хм err ymmmm хмм err ymmm
.y.
uhhh uhhhh
אֶההה
ehh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I still have some more features to add (variables, associative arrays, perhaps file I/O) but it is minimally usable. I make no statement about &lt;em&gt;useful&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This is the first language I’ve designed, and in doing so I’ve learned a plenty about language design. I’ve also learned lots about Go, a language that I’ve only used in small amounts. My apologies to seasoned Go-developers who might recoil in horror. But to them I ask, have you noticed the launch date of this language?&lt;/p&gt;

&lt;p&gt;The repo for the language is located at &lt;a href=&quot;https://codeberg.org/mattp/uhhlang/src/branch/main&quot;&gt;https://codeberg.org/mattp/uhhlang/src/branch/main&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
        <link>/2026/04/01/uhh-er-erm.html</link>
        <guid isPermaLink="true">/2026/04/01/uhh-er-erm.html</guid>
        
        <category>tech</category>
        
        <category>languages</category>
        
        
      </item>
      
    
    
      <item>
        <title>Z is for zh</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;I’ve mention in several posts in this series that I enjoy language - and
languages. The language I started studying most recently is Mandarin, sometimes
called Standard Chinese or Standard Mandarin Chinese.&lt;/p&gt;

&lt;p&gt;But why &lt;em&gt;zh&lt;/em&gt;? That’s the ISO 639-1 code for the language, coming from the
Chinese name of the language 中文. One of the most popular ways of writing
Chinese characters in the Latin alphabet is called &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Pinyin&quot;&gt;pinyin&lt;/a&gt;&lt;/em&gt;.  Pinyin is
typically used to make it easier for non-speakers of the language to sound out
the characters but it’s also one of the techniques used to type Chinese
characters one a qwerty keyboard.&lt;/p&gt;

&lt;p&gt;The pinyin representation of 中文 is &lt;em&gt;Zhōng wén&lt;/em&gt; (occasionally &lt;em&gt;zhong1 wen2&lt;/em&gt;),
and it’s this zh from which the ISO 639-1 code is taken.&lt;/p&gt;

&lt;p&gt;For a couple of years I was having 2 lessons per week though I took a break a
couple of months ago. I learned not only to speak, but also to read and write a
little. It’s probably been the most interesting language I’ve studied. The
hardest part is not (perhaps surprisingly) the tones, but rather the writing
side of things.&lt;/p&gt;

&lt;p&gt;Frustrating though this is, I’m not too disheartened. During the course of my
studies, I leaarned that even Chinese natives sometimes get so-called
&lt;em&gt;character amnesia&lt;/em&gt;, mainly due to the proliferation of computerised inputs
that people use as opposed to writing by hand.&lt;/p&gt;

&lt;p&gt;A few days ago I hinted at the open question of &lt;a href=&quot;/2024/04/13/l-is-for-languages&quot;&gt;what it means to speak a
language&lt;/a&gt;.  When I first set out to learn, I
set myself the goal of being able to order a meal. And that goal I’ve achieved;
I’ve been to restaurants in Chinatown and ordered. Had to fall back on English
for little bits of it, but I still consider it a success. Once I’m feeling
rested, I plan to resume lessons.&lt;/p&gt;

</description>
        <pubDate>Tue, 30 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/30/z-is-for-zh.html</link>
        <guid isPermaLink="true">/2024/04/30/z-is-for-zh.html</guid>
        
        <category>a-to-z</category>
        
        <category>languages</category>
        
        
      </item>
      
    
    
      <item>
        <title>Y is for &quot;Yesteryear&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;English has some lesser used and (and somewhat archaic) words to describe time
relevant to the present. The first of these is representative of today’s letter
&lt;em&gt;Y&lt;/em&gt;, the word being &lt;em&gt;yesteryear&lt;/em&gt;. It means “last year”, analogous to yesterday.&lt;/p&gt;

&lt;p&gt;One more word in this category is &lt;em&gt;overmorrow&lt;/em&gt;, meaning “the day after
tomorrow”. I first encountered the equivalent of this in German when in school,
not having realised at the time that English had its own version. The German
word is &lt;em&gt;übermorgen&lt;/em&gt;, which dissects in exactly the same way the English word
does.&lt;/p&gt;

&lt;p&gt;Yet another word in this category is &lt;em&gt;ereyesterday&lt;/em&gt;, which means “the day
before yesterday”.&lt;/p&gt;
</description>
        <pubDate>Mon, 29 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/29/y-is-for-yesteryear.html</link>
        <guid isPermaLink="true">/2024/04/29/y-is-for-yesteryear.html</guid>
        
        <category>a-to-z</category>
        
        <category>words</category>
        
        
      </item>
      
    
    
      <item>
        <title>X for &apos;Xenophon Zolotas&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;


&lt;p itemscope itemtype=&quot;https://schema.org/Person&quot;&gt;
For the letter &lt;em&gt;X&lt;/em&gt;, today&apos;s entry is a head nod to former Greek
economist and Prime Minister &lt;span itemprop=&quot;name&quot;&gt;Xenophon Euthymiou Zolotas&lt;/span&gt;.
&lt;/p&gt;


English has inherited words from multiple language families.

Two of the speeches he gave are noteworthy because they contain words mainly of greek origin. Here are the texts of those speeches.


&lt;h2&gt;From 1957&lt;/h2&gt;

&lt;blockquote itemscope itemtype=&quot;https://schema.org/Quotation&quot;&gt;
&lt;div itemprop=&quot;text&quot;&gt;
I always wished to address this Assembly in Greek, but realized that it would
have been indeed &quot;Greek&quot; to all present in this room. I found out, however,
that I could make my address in Greek which would still be English to
everybody. With your permission, Mr. Chairman, I shall do it now, using with
the exception of articles and prepositions, only Greek words.

Kyrie, I eulogize the archons of the Panethnic Numismatic Thesaurus and the
Ecumenical Trapeza for the orthodoxy of their axioms, methods and policies,
although there is an episode of cacophony of the Trapeza with Hellas. With
enthusiasm we dialogue and synagonize at the synods of our didymous
organizations in which polymorphous economic ideas and dogmas are analyzed and
synthesized. Our critical problems such as the numismatic plethora generate
some agony and melancholy. This phenomenon is characteristic of our epoch. But,
to my thesis, we have the dynamism to program therapeutic practices as a
prophylaxis from chaos and catastrophe. In parallel, a Panethnic unhypocritical
economic synergy and harmonization in a democratic climate is basic. I
apologize for my eccentric monologue. I emphasize my euharistia to you, Kyrie

to the eugenic and generous American Ethnos and to the organizers and
protagonists of his Amphictyony and the gastronomic symposia.
&lt;/div&gt;
&lt;/blockquote&gt;

&lt;h2&gt;From 1959&lt;/h2&gt;

&lt;blockquote itemscope itemtype=&quot;https://schema.org/Quotation&quot;&gt;
&lt;div itemprop=&quot;text&quot;&gt;
Kyrie, it is Zeus&apos; anathema on our epoch for the dynamism
of our economies and the heresy of our economic methods and policies that we
should agonize the Scylla of numismatic plethora and the Charybdis of economic
anaemia. It is not my idiosyncrasy to be ironic or sarcastic, but my diagnosis
would be that politicians are rather cryptoplethorists. Although they
emphatically stigmatize numismatic plethora, they energize it through their
tactics and practices. Our policies have to be based more on economic and less
on political criteria. Our gnomon has to be a metron between political,
strategic and philanthropic scopes. Political magic has always been
anti-economic. In an epoch characterized by monopolies, oligopolies,
monopsonies, monopolistic antagonism and polymorphous inelasticities, our
policies have to be more orthological. But this should not be metamorphosed
into plethorophobia, which is endemic among academic economists. Numismatic
symmetry should not hyper-antagonize economic acme. A greater harmonization
between the practices of the economic and numismatic archons is basic. Parallel
to this, we have to synchronize and harmonize more and more our economic and
numismatic policies panethnically. These scopes are more practicable now, when
the prognostics of the political and economic barometer are halcyonic. The
history of our didymus organizations in this sphere has been didactic and their
gnostic practices will always be a tonic to the polyonymous and idiomorphous
ethnical economies. The genesis of the programmed organization will dynamize
these policies. Therefore, I sympathize, although not without criticism on one
or two themes, with the apostles and the hierarchy of our organs in their zeal
to program orthodox economic and numismatic policies, although I have some
logomachy with them. I apologize for having tyrannized you with my Hellenic
phraseology. In my epilogue, I emphasize my eulogy to the philoxenous
autochthons of this cosmopolitan metropolis and my encomium to you, Kyrie, and
the stenographers.
&lt;/div&gt;
&lt;/blockquote&gt;

I freely admit I need a dictionary for some of these words. Nevertheless, I
consider it an impressive feat. Despite my love of language and languages, I&apos;ve
not yet made dedicated efforts to learn Greek (whether modern or ancient).
</description>
        <pubDate>Sat, 27 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/27/x-is-for-xenophon-zolotas.html</link>
        <guid isPermaLink="true">/2024/04/27/x-is-for-xenophon-zolotas.html</guid>
        
        <category>a-to-z</category>
        
        <category>words</category>
        
        
      </item>
      
    
    
      <item>
        <title>W is for &quot;Webdesign&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;I’ve been in involved in web-adjacent technology for pretty much all of my
working life. I’ve worked on some significant large scale websites (both
government and retail). Despite that, I’ve done very little web design. Even
when working for a Ruby consultancy I was mostly involved in back end
components.&lt;/p&gt;

&lt;p&gt;Furthermore, when in school my artistic eye never really developed. As a result
my web design skills are pretty much non-existent. But within that space I’ve
learned plenty in the course of maintaining this blog, especially over the this
A-to-Z series. It’s definitely rejuvinated a bit of passion for me in the world
of tech.&lt;/p&gt;

&lt;p&gt;That said, I’m still mindful of my limits.  I’m thankful that the tech space is
sufficiently broad that this lack hasn’t held me back. I’ve been able to write
backend or system code or look after infrastructure, deliver training, and
plenty more.&lt;/p&gt;

&lt;p&gt;I’m unlikely to switch directly into web dev but I am at least scratching that
itch, the desire to learn.&lt;/p&gt;

&lt;p&gt;Whether in technology or not (and whether intentional or not), what facets of
your industry have you avoided?&lt;/p&gt;
</description>
        <pubDate>Fri, 26 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/26/w-is-for-webdesign.html</link>
        <guid isPermaLink="true">/2024/04/26/w-is-for-webdesign.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>V is for &quot;Vexillology&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Today’s challenge letter is &lt;em&gt;V&lt;/em&gt; and the topic I’ve chosen is  &lt;em&gt;Vexillology&lt;/em&gt;.
Wossat? It’s the study of flags. I hesitate to call it an interest of mine,
since that feels like an exaggeration but it’s still worthy of mention.&lt;/p&gt;

&lt;p&gt;When I was in school (I reckon this was sometime around 1990, based on the room
I was in), one of the posters on the wall was flags of the world. I remember noticing that there was one monochromatic flag.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2024-04-25-libya1977.svg&quot; alt=&quot;Flag of Libya, 1977–2011&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This was Libya, as the flag was then. (&lt;a href=&quot;https://en.wikipedia.org/wiki/Flag_of_Libya&quot;&gt;It’s since been updated&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Many years later my dad took an interest in sailing. Part of the learning
materials was to learn the &lt;a href=&quot;https://en.wikipedia.org/wiki/International_maritime_signal_flags&quot;&gt;maritime signalling
flags&lt;/a&gt;.
Being the curious and information-hungry person that I was (and still am!), I
took an interest and learned a few of them. At the time, several of them stood
out to me due to their shape:&lt;/p&gt;

&lt;p&gt;The letter A:&lt;br /&gt;
&lt;img src=&quot;/img/2024-04-25-a.svg&quot; alt=&quot;Maritime flag for the letter &amp;quot;A&amp;quot;&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The letter B:&lt;br /&gt;
&lt;img src=&quot;/img/2024-04-25-b.svg&quot; alt=&quot;Maritime flag for the letter &amp;quot;B&amp;quot;&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The numerals 0-9. As an example, here is “2”&lt;br /&gt;
&lt;img src=&quot;/img/2024-04-25-2.svg&quot; alt=&quot;Maritime flag for the numeral &amp;quot;2&amp;quot;&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I can still remember some of them now, along with their meanings. I have never
sailed, only ever having been a passenger. Strange, the things one remembers.&lt;/p&gt;

&lt;p&gt;Another type of flag is one used for communities. Probably the most well known
of these is the Pride flag created by artist &lt;a href=&quot;https://en.wikipedia.org/wiki/Gilbert_Baker_(artist)&quot;&gt;Gilbert
Baker&lt;/a&gt; in 1979.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2024-04-25-pride.svg&quot; alt=&quot;1979 Pride Flag&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There have been several variations of this flag over the years, additionally
numerous other groups within the queer community have their own flags such as
the trans pride flag – enough quer flags exist to write an entire post.&lt;/p&gt;

&lt;p&gt;Another community flag (not part of the queer umbrella), and significantly
less well known, is this one:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2024-04-25-eo.svg&quot; alt=&quot;Esperanto Flag&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This one is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Esperanto&quot;&gt;Esperanto&lt;/a&gt; flag – Esperanto being one of the languages I speak.&lt;/p&gt;

&lt;p&gt;A couple of years ago I stumbled on the flag of Nepal.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2024-04-25-nepal.svg&quot; alt=&quot;Flag of Libya, 1977–2011&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s not an overly new flag; it was adopted in 1962. But what very much caught
my interest was not only that non-rectangular, nor that it’s ornate, but also
that its construction is mathematical in nature &lt;em&gt;and&lt;/em&gt; &lt;a href=&quot;https://www.crwflags.com/fotw/flags/np-law.html&quot;&gt;codified in their
consitution&lt;/a&gt;. If you’re so
inclined, get a ruler, a pen, and a piece of paper and give it a go. Or you can
use &lt;a href=&quot;https://www.geogebra.org/classic&quot;&gt;Geogebra&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve mentioned 3 types of flag here: Community, Country and Maritime. On a
couple of occasions over the past few years I’ve run a quiz (or sometimes only
a round in a quiz) and the questions took the form of: “Is this flag that of a
country, a community or a maritime signal?”. Feel free to copy this idea!&lt;/p&gt;
</description>
        <pubDate>Thu, 25 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/25/v-is-for-vexillology.html</link>
        <guid isPermaLink="true">/2024/04/25/v-is-for-vexillology.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>U is for &quot;Unfinished&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;When I still lived in Manchester a friend asked me to join a small project he’d
created. This was a small volunteer organisation which hosted websites for
local community organisations at zero cost.&lt;/p&gt;

&lt;p&gt;Today’s letter, U, represents the name of this venture: &lt;em&gt;The Unfinished Project&lt;/em&gt;.
The name is to describe our mindset for the project, that work is never
complete, that it’s always unfinished, that there is always something more to
do.&lt;/p&gt;

&lt;p&gt;It’s typically been 2 or 3 core people running it for the past 20 years but
we’ve also taken on young folk interested in technologies adjacent to websites,
email, and hosting. It has been great to provide these people with an
opportunity to work on real public facing systems and gain experience, and see
these people move on to bigger things.&lt;/p&gt;

&lt;p&gt;Even though Unfinished stuff takes little of my time these days, this mentoring
side of things has long been important to me and I’ve been very lucky to be
able to incorporate it into my career for vast chunks of it, in addition to the
volunteer capacity I mention here.&lt;/p&gt;
</description>
        <pubDate>Wed, 24 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/24/u-is-for-unfinished.html</link>
        <guid isPermaLink="true">/2024/04/24/u-is-for-unfinished.html</guid>
        
        <category>a-to-z</category>
        
        <category>tech</category>
        
        
      </item>
      
    
    
      <item>
        <title>T is for &quot;Tracking&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Today’s entry in the A-to-Z of Blogging Challenge is a bit of a rant. The
letter is &lt;em&gt;t&lt;/em&gt; and the topic is &lt;em&gt;Tracking&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I hinted the &lt;a href=&quot;/2024/04/20/r-is-for-rss&quot;&gt;other day&lt;/a&gt; (when talking about RSS)
about my disdain for adverts. Something I dislike equally is the normalisation
of site visitor information being collected, and sold on to the highest bidder.
It’s this &lt;em&gt;tracking&lt;/em&gt; that I’m writing about today.&lt;/p&gt;

&lt;p&gt;Often on social network sites there’s a “share” button. These often add a small
tracking component. Because many of chat-based apps have link automatic previewers it
means that when such a link is shared then the system that the link was sent in
(even if different from where the link originated) will issue a request behind
the scenes to expand that link. As a result, the site where the link originate
will know of the association between the sending party and you the recipient.
You typically don’t even have to click on the link for this information to be
shared.&lt;/p&gt;

&lt;p&gt;For example: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://social.example.com/post/12345678?tr=qwertyu&lt;/code&gt;
is turned into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://social.example.com/post/12345678&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Every site has its own tracking components. It’s also &lt;em&gt;not&lt;/em&gt; the case that any
string of numbers or letters on the end of a link is necessarily tracking in
nature. It means that the method of cleaning a link will differ on a per-site
basis.&lt;/p&gt;

&lt;p&gt;To help with this, I’ve written a very simple tool and published it on this
site at
&lt;a href=&quot;https://peperell.com/stuff/jstoys/linkstrip.html&quot;&gt;https://peperell.com/stuff/jstoys/linkstrip.html&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you care about privacy then you can use this tool to clean up a link before
sharing it with someone. Note also that if you are comfortable with removing
such tracking components yourself, pasting a link into a chat box and then
editing it before clicking send is &lt;em&gt;not necessarily sufficient&lt;/em&gt; to remove the
tracking info - because of the aforementioned automatic link expansion /
preview features.  You can either do this manually (via a text editor running
locally on your machine - &lt;em&gt;not Google docs&lt;/em&gt;!) or with this tool.&lt;/p&gt;

&lt;p&gt;The current version is very simple, and I intend to improve it over time. It
strips out the tracking elements but still links to the desired content.&lt;/p&gt;

&lt;p&gt;If you’re a user of a site I’ve not yet taught this tool how to understand, I’d
welcome assistance. You can either leave a comment here or instead &lt;a href=&quot;https://github.com/mattpep/jstoys/issues&quot;&gt;via
Github&lt;/a&gt;.&lt;/p&gt;

</description>
        <pubDate>Tue, 23 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/23/t-is-for-tracking.html</link>
        <guid isPermaLink="true">/2024/04/23/t-is-for-tracking.html</guid>
        
        <category>a-to-z</category>
        
        <category>tech</category>
        
        
      </item>
      
    
    
      <item>
        <title>S is for &quot;schema.org&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;A few months ago I encountered an open set of guidelines for publishing
structured data on websites.  This standard is referred to by the name
“schema.org” or sometimes by just “schema” and it is published at
&lt;a href=&quot;https://schema.org&quot;&gt;https://schema.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The use is rather niche and likely only of interest to site creators and
authors of software which indexes web content, although I’m being rather
reductive here.&lt;/p&gt;

&lt;p&gt;When writing structured data for the web, especially in prose, a search engine
cannot extract the relevant details unless given appropriate hints.&lt;/p&gt;

&lt;p&gt;E.g. imagine a heading&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;
&amp;lt;h1&amp;gt;Arrival&amp;lt;/h1&amp;gt;
&lt;/div&gt;

&lt;p&gt;Without any such clues, it’s impossible to know whether this refers to&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;arrival instructions for some event&lt;/li&gt;
  &lt;li&gt;arrival times for a train or flight&lt;/li&gt;
  &lt;li&gt;&lt;span itemscope=&quot;&quot; itemtype=&quot;https://schema.org/Movie&quot;&gt;The &lt;span itemprop=&quot;copyrightYear&quot;&gt;2016&lt;/span&gt; movie &lt;span itemprop=&quot;name&quot;&gt;Arrival&lt;/span&gt; starring (amongst others) &lt;span itemprop=&quot;actor&quot; itemscope=&quot;&quot; itemtype=&quot;https://schema.org/Person&quot;&gt;&lt;span itemprop=&quot;name&quot;&gt;Jodie Foster&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;Possibly something else&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the markup can be changed to include this information without affecting the
presentation. In fact, I’ve marked up the movie example in that third bullet
point. The markup I used is&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;
&amp;lt;span itemscope itemtype=&quot;https://schema.org/Movie&quot;&amp;gt;
  The &amp;lt;span itemprop=&quot;copyrightYear&quot;&amp;gt;2016&amp;lt;/span&amp;gt; movie
  &amp;lt;span itemprop=&quot;name&quot;&amp;gt;Arrival&amp;lt;/span&amp;gt; starring (amongst others)
  &amp;lt;span itemprop=&quot;actor&quot; itemscope
    itemtype=&quot;https://schema.org/Person&quot;&amp;gt;
    &amp;lt;span itemprop=&quot;name&quot;&amp;gt;Jodie Foster&amp;lt;/span&amp;gt;
  &amp;lt;/span&amp;gt;
&amp;lt;/span&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;It looks very noisy in raw markup, I’ll admit, but look up again at that third
bullet point. The extra information such as the the fact that the number is a
year (obvious to a human) can be parsed by compliant tools, but doesn’t clutter
the text as seen by the end user.&lt;/p&gt;

&lt;p&gt;Another case for where they’re useful is contact details for an organisation.
Ever searched for a company’s phone number etc - in a search engine, I mean,
not directly on their site? With appropriate hints (such as those provided by
schema.org) the search engine can provide this even on the search results page.
It will know to extract certain information and ignore the rest. You’ll be unsurprised that there is a suitable schema defintion: &lt;a href=&quot;https://schema.org/Organization&quot;&gt;Organization&lt;/a&gt; which has the &lt;em&gt;telephone&lt;/em&gt; property.&lt;/p&gt;

&lt;p&gt;In some of the other posts I’ve made in this series I mention 
&lt;a href=&quot;/tag/books.html&quot;&gt;various books&lt;/a&gt; and I’ve made an effort to mark up those book
references with the correct schema type, &lt;a href=&quot;https://schema.org/Book&quot;&gt;Book&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve been unable to find recent adoption figures for the initiative, but the
Wikipedia article currently shows the 2016 adoption figure at 17% across a
subset of marketing agencies and industry adjacent organisations. Not
excellent, but perhaps the figure is higher now.&lt;/p&gt;

&lt;p&gt;I don’t know of any browser plugins to surface this information, but I can
imagine a smart phone feature: being able to extract a company’s phone number
when viewing their ccontact page rather than having to copy and paste the
number into the dialler app.&lt;/p&gt;

&lt;p&gt;The book example I gave above? What if your browser (whether tablet, phone,
desktop, laptop or other device) were able to add this to your wishlist from
your favourite bookstore? Or reserve it at your local library?&lt;/p&gt;

&lt;p&gt;You can likely think of more examples when browing the
&lt;a href=&quot;https://www.schema.org/docs/full.html&quot;&gt;available schemas&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Wishful thinking, perhaps, but wouldn’t it be nice?&lt;/p&gt;
</description>
        <pubDate>Mon, 22 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/22/s-is-for-schema-org.html</link>
        <guid isPermaLink="true">/2024/04/22/s-is-for-schema-org.html</guid>
        
        <category>a-to-z</category>
        
        <category>tech</category>
        
        <category>standards</category>
        
        
      </item>
      
    
    
      <item>
        <title>R for &apos;RSS&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Continuing the A-to-Z Challenge, today’s letter is &lt;em&gt;R&lt;/em&gt; and the topic is &lt;em&gt;RSS&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;RSS (Really Simple Syndication) is a way that a site can publish its
information to facilitate the erading of the content via another app or a
separate website which aggregates the content.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/rss.svg&quot; alt=&quot;RSS icon&quot; width=&quot;250&quot; /&gt;
If you’ve ever seen this orange icon on on a site then that will typically link
to the RSS feed for the site. I have an &lt;a href=&quot;/rss.xml&quot;&gt;RSS feed for my site&lt;/a&gt; (also
linked at the bottom of each post).&lt;/p&gt;

&lt;p&gt;The benefit of this is that one can configure an RSS-reader (as they’re
called), add the sites which one reads on a regular basis and then have the
content all in one place.  Depending on the site in question, this can also
strip out the adverts (though there are none on my site), and either include or
exclude the comments.&lt;/p&gt;

&lt;p&gt;One of the most widely used RSS readers was the now-discontinued Google Reader.
RSS usage took a huge nosedive when that service was dropped. I suspect, as
alluded to above, this was due to the loss of ad revenue on sites because only
the content was extracted. Another stronger force is likely to be the
proliferation of social network sites which provide similar aggregated feeds of
subscribed-to content. Such aggregations, being under control of providers can
have their order change, ads inserted, and certain material masked or promoted.
RSS aggregation bypasses all that.&lt;/p&gt;

&lt;p&gt;For a short while I used &lt;a href=&quot;https://theoldreader.com/&quot;&gt;The Old Reader&lt;/a&gt; (which is
still running) but I had exceeded the subscription limit of the free plan when
that limit was introduced but I felt like I didn’t read content often enough to
warrant any of the paid-for plans.&lt;/p&gt;

&lt;p&gt;A little over a year I learned of &lt;a href=&quot;https://github.com/jafarlihi/rssnix&quot;&gt;rssnix&lt;/a&gt;
which is a self-managed RSS reader written in Go. It had a couple of bugs
listed in the issues which looked simple enough(!). I was actively learning Go
at the time so I used that as an opportunity to dive in and fixed a couple.&lt;/p&gt;

&lt;p&gt;I still use that now, though very much on an ad-hoc basis.&lt;/p&gt;

&lt;p&gt;If you publish a blog, do you provide an RSS feed? Do you consume RSS feeds?&lt;/p&gt;
</description>
        <pubDate>Sat, 20 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/20/r-is-for-rss.html</link>
        <guid isPermaLink="true">/2024/04/20/r-is-for-rss.html</guid>
        
        <category>a-to-z</category>
        
        <category>tech</category>
        
        
      </item>
      
    
    
      <item>
        <title>Q for &apos;QR Codes&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Continuing the A-to-Z Challenge, today’s letter is &lt;em&gt;Q&lt;/em&gt; and the topic is &lt;em&gt;QR Codes&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;First off, what are they? The abbreviation QR code is short for “quick response
code”. They are the black and white small pixelated squares that we can “scan”
with a dedicate device or (more commonly) our mobile phones.&lt;/p&gt;

&lt;p&gt;Here’s one which links to the Wikipedia page for QR codes.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2024-04-19-qr-code-1.png&quot; alt=&quot;QR code which links to the Wikipedia page for QR codes&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I first encountered QR codes in the early 2010s. At the time they were seen,
outside of industry, as niche, obscure and somewhat faddish, perhaps even with
a bit of ridicule. But it seems that very quickly they became more widespread
and accepted.&lt;/p&gt;

&lt;p&gt;Event publicity posters will often contain a QR code linking to the event page
so that one does not have to type in the URL manually, an error-prone process.
They’re also used for self-printed train tickets in the UK (previously one would
collect tickets from a machine, the kind of tickets which have a magnetic strip
on the reverse).&lt;/p&gt;

&lt;p&gt;In doing research for today’s post, I learned that they were considerably older
than I thought - having been invented in 1994.  Traditional 1-d barcodes were
first used in a retail context in 1974. Small nostalgia story: using this fact
helped win me and a housemate a year’s supply of beer in 2004. Rather amusing
as he doesn’t drink at all and I don’t drink beer.&lt;/p&gt;

&lt;p&gt;Around a month ago I saw a coloured version of something similar, using pixels
of cyan, magenta yellow and black.  I forget what it was on but that same week
(same day, I think) I saw another one on a breakfast cereal box.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2024-04-19-qr-code-2.jpg&quot; alt=&quot;A 5x5 &apos;mosaic&apos; consisting of cyan, magenta, yellow and black cells, bordered by a white frame and accompanied by the text &apos;NaviLensGO&apos;&quot; srcset=&quot;/assets/resized/2024-04-19-qr-code-2-100x113.jpg 100w, /assets/resized/2024-04-19-qr-code-2-320x360.jpg 320w, /assets/resized/2024-04-19-qr-code-2-480x541.jpg 480w, /assets/resized/2024-04-19-qr-code-2-800x901.jpg 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;As can be seen in the text adjacent to the matrix code, it’s a variant of QR
codes with the brand name &lt;a href=&quot;https://www.navilens.com/&quot;&gt;“Navi Lens”&lt;/a&gt;. It’s a
Spanish company and the IP is patented technology rather than being an open
standard but I still think it’s a great idea because it solves some of the
accessibility problems that traditional QR codes have.&lt;/p&gt;

&lt;p&gt;As best I can tell, the reader app is free for end users. I wonder what their
funding model is; in other words how can the idea last? Perhaps it’ll be done
on a licensing basis like QR codes (which are also patented).&lt;/p&gt;

&lt;p&gt;Have you used either? I’m particularly interested in the use of NaviLens to
learn how the usability and accessibility compare.&lt;/p&gt;
</description>
        <pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/19/q-is-for-qr-codes.html</link>
        <guid isPermaLink="true">/2024/04/19/q-is-for-qr-codes.html</guid>
        
        <category>a-to-z</category>
        
        <category>tech</category>
        
        
      </item>
      
    
    
      <item>
        <title>P for &apos;Punctuation&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Today’s letter is &lt;em&gt;P&lt;/em&gt; and the theme is &lt;em&gt;punctuation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In particular I wish to talk about two punctuation marks: The Oxford Comma and
the Interrobang.&lt;/p&gt;

&lt;p&gt;The Oxford Comma is used to describe the comma which appears before the word
‘and’ in a list of items when written out in prose. Style guides between
publishers vary whether it should be used or not. When I was in school I was
told that the final comma should be omitted. It was only in my mid-to-late 20s
when I learned it was a thing. When I first heard of it I was undecided, but I
think I’m shifting to prefering to use it, rather than not.&lt;/p&gt;

&lt;p&gt;For example: My pets comprise a cat, a dog, three fish, and an iguana.
Without it, the text would be: My pets comprise a cat, a dog, three fish and an
iguana.  (Side note: I have only a cat.)&lt;/p&gt;

&lt;p&gt;The other character I mentioned in the opening is the &lt;em&gt;interrobang&lt;/em&gt;. It’s a
single character which combines the function of a question mark and an
exclamation mark. Why on earth would someone want that‽&lt;/p&gt;

&lt;p&gt;Typically it’s used for rhetorical or humourous questions, such as the example above.&lt;/p&gt;

&lt;p&gt;Typing the interrobang character in HTML is straightforward - one can use the
hex code. But sometimes, for example when writing in plain text, that option is
not avaiable. Typically what I do in this situation is to search “&lt;em&gt;whatever&lt;/em&gt;
character” (or “&lt;em&gt;whatever&lt;/em&gt; character code”) and then copy-and-paste from one of the
results. But that can be awkward, not least because search engine results
typically change over time.&lt;/p&gt;

&lt;p&gt;To close, therefore, I’m including here some of the characters (not only
punctuation symbols) that I need to type in order to have them together in one
place.  Likely it’ll be me later referring to my own post, but feel free to
bookmark such that you can come back too!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;‽ Interrobang, &amp;amp;#x203D;&lt;/li&gt;
  &lt;li&gt;° Degrees, &amp;amp;#176;&lt;/li&gt;
  &lt;li&gt;™ Trademar, &amp;amp;trade;&lt;/li&gt;
  &lt;li&gt;© Copyright, &amp;amp;copy;&lt;/li&gt;
  &lt;li&gt;± Plus/Minus, &amp;amp;plusmn;&lt;/li&gt;
  &lt;li&gt;µ Micro / Mu, &amp;amp;micro;&lt;/li&gt;
  &lt;li&gt;¶ Paragraph, &amp;amp;para;&lt;/li&gt;
  &lt;li&gt;∑ Captial Sigma / Sum, &amp;amp;sum;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which symbols do you type with regularity that can’t be typed with a single keystroke?&lt;/p&gt;
</description>
        <pubDate>Thu, 18 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/18/p-is-for-punctuation.html</link>
        <guid isPermaLink="true">/2024/04/18/p-is-for-punctuation.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>O for &apos;Ologies and Isms&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Today’s letter is &lt;em&gt;O&lt;/em&gt; and the associated topic is &lt;em&gt;-ologies and -isms&lt;/em&gt;.&lt;/p&gt;

&lt;p itemscope=&quot;&quot; itemtype=&quot;https://schema.org/Book&quot; itemid=&quot;https://chambers.co.uk/book/the-chambers-dictionary/&quot;&gt;I love words and etymology. As
a child I used to read the dictionary recreationally, and even asked for a
chunky dictionary for my birthday one year, &lt;span itemprop=&quot;name&quot;&gt;The Chambers
Dictionary&lt;/span&gt;.
&lt;/p&gt;

&lt;p itemscope=&quot;&quot; itemtype=&quot;https://schema.org/Book&quot; itemid=&quot;https://search.worldcat.org/title/49906947&quot;&gt;
Many years later (after I&apos;d finished University) I discovered another
dictionary-type book titled &lt;span itemprop=&quot;name&quot;&gt;Ologies and Isms&lt;/span&gt; and
its this book that I&apos;m writing about.
&lt;/p&gt;

&lt;p&gt;
Despite the title, it&apos;s not just limited to words containing those two
suffixes. It does explain the etymology for many words and phrases which
are used in English.
&lt;/p&gt;

&lt;p&gt;
If etymology is your thing you&apos;ll probably enjoy it. Also of possible interest
is &lt;a href=&quot;https://www.etymonline.com/&quot;&gt;Etymonline&lt;/a&gt; which I occasionally
use too.
&lt;/p&gt;
</description>
        <pubDate>Wed, 17 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/17/o-is-for-ologies-and-isms.html</link>
        <guid isPermaLink="true">/2024/04/17/o-is-for-ologies-and-isms.html</guid>
        
        <category>a-to-z</category>
        
        <category>books</category>
        
        <category>words</category>
        
        
      </item>
      
    
    
      <item>
        <title>N is for &apos;New Beginnings&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;


&lt;article itemscope itemtype=&quot;https://schema.org/Organization&quot;&gt;
&lt;p&gt;
Today&apos;s topic is one that makes me slightly nervous, although that&apos;s
not today&apos;s word. The word (perhaps &lt;em&gt;phrase&lt;/em&gt; would be better) is
&lt;em&gt;new beginnings&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
Having worked for the same company for eight and a half years, in December I
quit my job with the intention of having a short break and then starting my own
company.  In March, I did exactly that. I&apos;ve started a technical consultancy
offering services in my areas of expertise (&lt;span
	itemprop=&quot;knowsAbout&quot;&gt;software development, cloud solutions, and
	delivering technical training&lt;/span&gt;).
&lt;/p&gt;

&lt;p&gt;
I&apos;ve called my company &lt;a href=&quot;https://www.mlemblep.com/&quot;&gt;&lt;span
		itemprop=&quot;legalName&quot;&gt;mlem blep Ltd&lt;/span&gt;&lt;/a&gt;. Continuing the
cat theme, the company logo is a drawing of my cat, Freddie, with his tongue
out (having just been interrupted washing himself). There are a couple more
pictures of him in my &lt;a href=&quot;/2024/04/06/f-is-for-felines.html&quot;&gt;post earlier in this
series&lt;/a&gt; in which I wrote about cats.

&lt;img alt=&quot;Simple outline of a cat with its tongue sticking out&quot; src=&quot;https://www.peperell.com/img/2024-04-16-freddie.png&quot;&gt;
&lt;/p&gt;


&lt;p&gt;
You can see the site at &lt;a href=&quot;https://www.mlemblep.com/&quot;&gt;&lt;span
			   itemprop=&quot;url&quot;&gt;https://www.mlemblep.com/&lt;/span&gt;&lt;/a&gt;.
For the moment it&apos;s just me, but I am open to the idea of growing
if, as, and when it feels right.
&lt;/p&gt;


&lt;/article&gt;
</description>
        <pubDate>Tue, 16 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/16/n-is-for-new-beginnings.html</link>
        <guid isPermaLink="true">/2024/04/16/n-is-for-new-beginnings.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>M is for &apos;Mathematics&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;


&lt;p&gt;
Today&apos;s letter is &lt;em&gt;M&lt;/em&gt; and the associated word is &lt;em&gt;Mathematics&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
I&apos;ve enjoyed numbers and maths for as long as I can remember. In school numbers
and mathematics were taught to me as a natural pairing, perhaps close to
synonymous. But as I&apos;ve learned more not only has my interest grown but I also
realised that that pairing is hugely reductionary.
&lt;/p&gt;

&lt;p itemscope itemtype=&quot;https://schema.org/Book&quot; itemid=&quot;https://search.worldcat.org/title/1383655869&quot;&gt;
One Christmas in the early 90s I received the book &lt;span itemprop=&quot;name&quot;&gt;Chaos&lt;/span&gt; by 
&lt;span itemprop=&quot;author&quot;&gt;James Gleick&lt;/span&gt; (ISBN &lt;span
	itemprop=&quot;isbn&quot;&gt;9780749386061&lt;/span&gt;).  
The book has very little numerical data in it; rather it&apos;s a treatise
about the research and development of mathematics in the mid
1900s of a branch of mathematics called Chaos theory. Very loosely speaking,
it&apos;s about how tiny changes in a system can result in huge consequences.  It&apos;s
a very accessible read, even to non-mathematicians (though it would be less
salient to those with zero interest in the field).
&lt;/p&gt;


&lt;p&gt;
Way back in early 2009 I was trying to decide what to do for my 30th birthday.
My working premise was along the lines of &quot;How many 30th birthdays does one go
to? And how many does one remember - perhaps one&apos;s own, and maybe one other. I
want mine to be the one that people remember that wasn&apos;t their own!&quot;.  The idea
I settled on was to hire the Royal Insitution, and a guest speaker to talk
about something sciency or technological. I reached out to several people and
settled on one (&quot;Myths in Hollywood Science&quot;) which was hugely entertaining.
But as a result of having reached out to a handful of science communicators I
stayed on their mailling lists. And it&apos;s through one such contact that I
learned of the event &lt;a href=&quot;https://mathsjam.com/gathering/uk/&quot;&gt;MathsJam&lt;/a&gt;
(which &lt;a href=&quot;2024-04-05-e-is-for-events&quot;&gt;I mentioned a few days ago&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
Though I enjoy games and socialising, maths is something I can do alone during
those occasions in life when one doesn&apos;t want to be around people.  Maths is
very much an interest which has been with me for as long as I can remember.
&lt;/p&gt;
</description>
        <pubDate>Mon, 15 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/15/m-is-for-maths.html</link>
        <guid isPermaLink="true">/2024/04/15/m-is-for-maths.html</guid>
        
        <category>a-to-z</category>
        
        <category>books</category>
        
        
      </item>
      
    
    
      <item>
        <title>L is for &quot;Languages&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Today’s L-word is “Languages”.&lt;/p&gt;

&lt;p&gt;I’ve had an interest in languages for as long as I can remember. My mum is good
at languages too, so perhaps some of her interest influenced me.&lt;/p&gt;

&lt;p&gt;In school I studied French, German and later Latin. I wasn’t overly good at
Latin but I did enjoy it. Studying the language taught me plenty about English
too, and I’ve found this to be the case with subsequent languages I’ve learned - whether formally or with self-study.&lt;/p&gt;

&lt;p&gt;In a previous job (in 2015-6 ish), a colleague taught a series of lunchtime
lessons in Spanish. I learned a little, but didn’t really continue. That said,
I do remember one lunchtime towards the end of the course when I was buying
lunch from a nearby takeaway and one of the servers had a Spanish flag on his
name badge. I greeted him and explained that I’d been learning at work for a
few weeks. I got given some free food (I think it was a cake, but I no longer
remember)&lt;/p&gt;

&lt;p&gt;Slightly longer ago (in late 2010) I learned Esperanto. Through that language
I’ve made many friends across the world and travelled to many new countries.
Often at Esperanto events there are taster courses for the language of the host
country. As a result, I’ve toyed with Hungarian (the grammar and phonology of
which I love) but haven’t continued it beyond some very basic phrases. (Barely
enough to even understand responses!)&lt;/p&gt;

&lt;p&gt;Many of the events have been in Poland and Slovakia.  Despite having taken
several of these taster courses, I’ve not really progressed. It’s weird;
despite progressing (with mixed results) in other languages, this family is
particularly troublesome for me. The language structure and phonology seems to
not stick.&lt;/p&gt;

&lt;p&gt;In late 2019 I went to Japan for the &lt;a href=&quot;https://polyglotconference.com/&quot;&gt;Polygot Conference&lt;/a&gt; but extended the trip to
spend almost 2 weeks there. Prior to the event I’d planned ahead by having a
few lessons in Japanese. This helped a little but it was only at a very
elementary level. I’ve not continued my Japanese studies.&lt;/p&gt;

&lt;p&gt;But the language Esperanto has been a continued theme in my life. I use it
almost every day, even if outside of event this is limited to only a handful of
short messages sent to friends online.&lt;/p&gt;

&lt;p&gt;A recent language that I started studying in January 2022 is Mandarin, one of
the languages of China. For almost 2 years I had a couple of lessons per week
though a month ago I decided that I needed a break. As is often the case with
life, energy levels go up and they go down. I felt like I needed a break. My
goal when I set out was to be able to order food - which I can now do. I’m also
able to read very basic children stories.  I intend to resume lessons when the
time is right.&lt;/p&gt;

&lt;p&gt;When I speak with people about my interest in languages, a common question is
“How many languages do you speak?”. That answer varies depending on what it
means to speak a language. For European languages there is the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Common_European_Framework_of_Reference_for_Languages&quot;&gt;CEFR&lt;/a&gt;.
Using this a a metric I’d say I have (in addition to my native English) one at
C2 (Esperanto), and two at A2 (French, German - years ago these were B1 perhaps
bordering on B2) but one forgets through disuse.&lt;/p&gt;

&lt;p&gt;Thinking about it, though I’ve had a number of passing interests, languages
(along with &lt;a href=&quot;/2024/04/02/b-is-for-bellringing.html&quot;&gt;bellringing&lt;/a&gt; and computers)
have been pretty constant.&lt;/p&gt;

&lt;p&gt;What language(s) do you speak, and to what level?&lt;/p&gt;

&lt;p&gt;And unrelated speifically to languages but merely because my last-but-one
paragraph touched on the subjet, do you find that your interests are mainly
constant, or do they change over time?&lt;/p&gt;
</description>
        <pubDate>Sat, 13 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/13/l-is-for-languages.html</link>
        <guid isPermaLink="true">/2024/04/13/l-is-for-languages.html</guid>
        
        <category>a-to-z</category>
        
        <category>languages</category>
        
        
      </item>
      
    
    
      <item>
        <title>K is for &quot;Knitting&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;One of the hobbies I have (though I’m less active in it at the moment) is
knitting - mainly by hand though I’ve done a tiny bit of machine knitting when
I had access to one. I first learned by hand in the late 80s or early 90s from
my maternal grandmother. I didn’t have much staying power though, so never made
anything larger than swatches or practice sqaures at that time.&lt;/p&gt;

&lt;p&gt;Around 2006 I had a housemate who knitted and she encouraged me to start up
again. So I did, and I’ve since made all sorts of things: hats, gloves, scarves
and socks. A pair of socks is my favourite thing, though I’ve made several hats
too.&lt;/p&gt;

&lt;p&gt;A pair of socks that I’ve made
&lt;img src=&quot;/img/2024-04-12-k-is-for-knitting.jpg&quot; alt=&quot;A pair of socks that I&apos;ve made&quot; width=&quot;800&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On the tech side of things, around 15 years ago I came across KnitML, an XML
DTD to describe knitting patterns than could then be rendered into prose (in
English or any other human language) and even simulated into graphics form to
assist with resizing existing patterns and design of new ones. Unfortunately
that project is no longer active but it was fun to read from afar whilst it was
still in existence.&lt;/p&gt;

&lt;p&gt;In recent years I’ve run a handful of workshops where I’ve taught knitting. As
with any skills, people’s ability and speed with which they learn can vary
tremendously but it’s hugely fulfilling when someone takes to it and enjoys it.&lt;/p&gt;

&lt;p&gt;To the crafters who come across this post, do you know about the site
&lt;a href=&quot;https://www.ravelry.com/&quot;&gt;Ravelry&lt;/a&gt;, for knitters, crocheters and fibre makers?&lt;/p&gt;
</description>
        <pubDate>Fri, 12 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/12/k-is-for-knitting.html</link>
        <guid isPermaLink="true">/2024/04/12/k-is-for-knitting.html</guid>
        
        <category>a-to-z</category>
        
        <category>tech</category>
        
        
      </item>
      
    
    
      <item>
        <title>J is for &quot;Jekyll&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;This website is simple - both in terms of functionality and design. This is
intentional. I want to be able to focus on the content. Other than the comment
system (which is hosted separately), there isn’t even a database. I write the
posts in a plain text editor.&lt;/p&gt;

&lt;p&gt;I use the site-generator &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;, and this is the “J”
mentioned in the title of today’s post. I’m aware of a similar piece of
software called Hugo. Both work in this space, but Jekyll has existed for a
little longer (since 2008) than Hugo (since 2013).&lt;/p&gt;

&lt;p&gt;I write in markdown the majority of the time (with .html in a couple of cases),
and Jekyll does the transformation into static files. I then upload the result
to my webserver.&lt;/p&gt;

&lt;p&gt;There’s therefore no user accounts, no password to be guessed resulting in a possible breach.&lt;/p&gt;

&lt;p&gt;Those of you with blogs, do you use a fully fledged CMS or a lightweight
templating system. Is it one you wrote or is it an existing product?&lt;/p&gt;
</description>
        <pubDate>Thu, 11 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/11/j-is-for-jekyll.html</link>
        <guid isPermaLink="true">/2024/04/11/j-is-for-jekyll.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>I is for &quot;Integrity&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;My sense of integrity is important to me, including in the workplace. I’ve a
few stories but two scenarios in particular come to mind.&lt;/p&gt;

&lt;p&gt;The first is: I was working for a government agency which provides funding to
various organisations.  I was speaking with a family member about this work
and was told “Oh, yes, my employer received money from them”. I didn’t work
anywhere near the funding committee or decision process; I was working on
software at the time. But I still immediately contacted my superiors and
alerted them to this possible conflict of interest. It was all cleared without
problem.&lt;/p&gt;

&lt;p&gt;The second story is from over a decade ago. I was employed, but looking for a
new job. I found a recruiter and they described a role which seemed
interesting. As they gave more information, I had a suspicion who the client
might be. I queried with the recruiter and my guess was correct. I explained
“I’m going to have to withdraw because they’re a client”. I wasn’t actively
working on that client project. Additionally I vaguely recalled that my
contract didn’t have any prohibitive clauses, but it still could have been a
possibly awkward situation later on when already established in that potential
new company.&lt;/p&gt;

&lt;p&gt;A colleague at a more recent employer used to refer to me as his ethical
canary: “What would Matt think about &lt;em&gt;decision X&lt;/em&gt;?”. I’m sad that we no longer
work together but I’m also hugely thankful as he probably shaped me the most of
all of my employers.&lt;/p&gt;
</description>
        <pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/10/i-is-for-integrity.html</link>
        <guid isPermaLink="true">/2024/04/10/i-is-for-integrity.html</guid>
        
        <category>a-to-z</category>
        
        <category>nostalgia</category>
        
        <category>work</category>
        
        
      </item>
      
    
    
      <item>
        <title>H is for &quot;Handwriting&quot;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Like many of my peers in tech, my handwriting is pretty awful. For many years
whilst I was in school I had private handwriting lessons. It did help a little
but not until rather late. Until that time I’d been using a laptop. My reading
was unaffected, as was my speech and reading comprehension. Indeed, I was to
some exgent hyperlexic and had a broad vocabulary. I remember, vaguely, the
first time I beat my mum at scrabble.&lt;/p&gt;

&lt;p&gt;Changing school or moving years was sometimes difficult because each new set of
teachers had to be told about my accommodations (supported by the local
education authority). I remember with frustration one teacher who not only
initially denied this accommodation but also wrote (and I quote): “This is
hopeless. Re-write this legibly”. It took a bit of sorting out but it naturally
soured the relationship.&lt;/p&gt;

&lt;p&gt;I do write now (in addition to using a keybaord) and my writing is &lt;em&gt;mostly&lt;/em&gt;
legible (at least to me). But a few techniques help me to me more legible when
I’m writing for others. The first is to print rather than write joined up
(cursive, for the US folk). The second is that I will use more than one colour
(e.g. if presenting information in a table then I’ll draw the table in, say,
black, and then write the table entries in, say, blue. A final technique,
though one I use sparingly, is to write in all caps. Typically I’ll do this for
a couple of words, as it is difficult to read a block text in all caps.&lt;/p&gt;

&lt;p&gt;Though I carry a phone around with me (who doesn’t‽), I also often carry around
a notebook and use this in preference to my phone for text of more than a few
words. I’m sure this will surprise my former school teachers were they to learn
this. (I’m not in touch with any – I was in school almost 30 years ago)&lt;/p&gt;

&lt;p&gt;I may have been slow on the up-take but I’m glad that I was both supported in
alternatives and that I am capable as an adult.&lt;/p&gt;

&lt;p&gt;With the proliferation of keyboard use in the modern age, how is your handwriting?&lt;/p&gt;
</description>
        <pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/09/h-is-for-handwriting.html</link>
        <guid isPermaLink="true">/2024/04/09/h-is-for-handwriting.html</guid>
        
        <category>a-to-z</category>
        
        <category>nostalgia</category>
        
        
      </item>
      
    
    
      <item>
        <title>CSS Naked Day</title>
        <description>&lt;p&gt;According to &lt;a href=&quot;https://css-naked-day.org/&quot;&gt;this&lt;/a&gt;, April 9th is CSS Naked
Day! Quoting from the website: “The idea behind CSS Naked Day is to promote
web standards. Plain and simple.”&lt;/p&gt;

&lt;p&gt;Today, therefore, I’ve removed the CSS declarations from this site (with one tiny exception that appears on one page. Can you find it?)&lt;/p&gt;

&lt;p&gt;A bit of silliness. Why not‽&lt;/p&gt;
</description>
        <pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/09/css-naked-day.html</link>
        <guid isPermaLink="true">/2024/04/09/css-naked-day.html</guid>
        
        
      </item>
      
    
    
      <item>
        <title>G is for &apos;Games&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;I like to play games - of the boardgame and cardgame variety.&lt;/p&gt;

&lt;p&gt;A few years ago I came across a flowchart which can help one to decide what game to
play within a group based on different factors and preferences. I’m not sure of
the exact origin, but the earliest source I’ve found is from January 2015:
&lt;a href=&quot;https://www.reddit.com/r/gaming/comments/2s4355/choosing_the_perfect_board_game/&quot;&gt;https://www.reddit.com/r/gaming/comments/2s4355/choosing_the_perfect_board_game/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2024-04-08-g-games.jpeg&quot; alt=&quot;How to choose the perfect boardgame&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The games I play aren’t limited to what’s on this flow chart. I typically
prefer the strategy and team based games, in addition to the co-operative where
players have a common shared goal rather than in competition against one
another. Naturally, the games I like to play change over time but some of my
current favourites are:&lt;/p&gt;

&lt;h2 id=&quot;hanabi-2010&quot;&gt;&lt;a href=&quot;https://boardgamegeek.com/boardgame/98778/hanabi&quot;&gt;Hanabi (2010)&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;A co-op game where players must play as many cards in sequence. This game is
unusual in that one plays without seeing one’s own cards; instead players hold
their hands with cards facing outwards.&lt;/p&gt;

&lt;h2 id=&quot;pictures-2019&quot;&gt;&lt;a href=&quot;https://boardgamegeek.com/boardgame/284108/pictures&quot;&gt;Pictures (2019)&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;I have very little artistic skill but somehow this game somehow captures my
interest. There are several photos and each player has different materials with
which they have to create a representation of one of the pictures. The other
players must guess which piece is being created.&lt;/p&gt;

&lt;h2 id=&quot;turing-machine-2022&quot;&gt;&lt;a href=&quot;https://boardgamegeek.com/boardgame/356123/turing-machine&quot;&gt;Turing Machine (2022)&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Unrelated to Alan Turing, this game is a pure logic game. It can be played
co-operatively, competitively or solo. The goal is to work out a 3 digit secret
code using clue cards (e.g. “Is the first digit even”) and through making
guesses to the code and performing these tests, the code can eventually be
deduced.&lt;/p&gt;

&lt;h2 id=&quot;bridge-1925&quot;&gt;&lt;a href=&quot;https://boardgamegeek.com/boardgame/2181/bridge&quot;&gt;Bridge (1925?)&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;The exact date of origin is hard to pin down. This is the famous 4-player game originally
invented in the UK but now played worldwide.  A few years ago (before Covid) I
used to play a lot of bridge but I don’t play much now. I never really got on
with formal bridge clubs - I’ve tried a couple. Time is a finite resource but I
have been thinking recently that I’d like to start playing again.&lt;/p&gt;

&lt;h2 id=&quot;hare-and-tortoise-1973&quot;&gt;&lt;a href=&quot;https://boardgamegeek.com/boardgame/361/hare-and-tortoise&quot;&gt;Hare and Tortoise (1973)&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;This is a race game, but rather than based on luck of a die, one can choose how
quickly or slowly to move. Faster moves are more expensive and slower moves are
cheaper. Move too quickly and one runs the risk of running out of the game’s
currency (carrots).&lt;/p&gt;

&lt;h2 id=&quot;and-you&quot;&gt;And you?&lt;/h2&gt;

&lt;p&gt;What games are your favourites?&lt;/p&gt;
</description>
        <pubDate>Mon, 08 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/08/g-is-for-games.html</link>
        <guid isPermaLink="true">/2024/04/08/g-is-for-games.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>F is for &apos;Felines&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;


&lt;p&gt;
Low effort post since I&apos;m visiting family today. Today&apos;s letter is &apos;F&apos; and the word is &quot;Felines&quot;.
&lt;/p&gt;

&lt;p&gt;
As a child I grew up with cats but lived in rented accommodation from
when I was at university until 2006. A few years later (2010) I was thinking
that I&apos;d like to have a cat again and, being in my own place, this was now a
possibility.
&lt;/p&gt;

&lt;p&gt;
I went to my &lt;a href=&quot;https://cats.org.uk/&quot;&gt;local cat shelter&lt;/a&gt; and after a home check adoption was approved. Freddie has been with me ever since - he&apos;s now 14.
&lt;/p&gt;

&lt;p&gt;Ginger cat outstretched on a grey sofa with belly exposed
&lt;img src=&quot;/img/f-freddie-1.jpg&quot; width=&quot;500&quot; alt=&quot;Ginger cat outstretched on a grey sofa with belly exposed&quot;&gt;
&lt;/p&gt;
&lt;p&gt;Photo taken from above of a ginger cat sitting on a grey sofa, looking directly up into the camera
&lt;img src=&quot;/img/f-freddie-2.jpg&quot; width=&quot;500&quot; alt=&quot;Photo taken from above of a ginger cat sitting on a grey sofa, looking directly up into the camera&quot;&gt;
&lt;/p&gt;
&lt;p&gt;Ginger cat looking into the camera with his tongue sticking out. A classic mlem
&lt;img src=&quot;/img/f-freddie-3.jpg&quot; width=&quot;500&quot; alt=&quot;Ginger cat looking into the camera with his tongue sticking out. A classic mlem&quot;&gt;
&lt;/p&gt;
&lt;p&gt;A ginger cat rubbing his nose on the nose of a bespectacled human wearing can-style headphones. There is slight motion blur&lt;/br&gt;

&lt;img src=&quot;/img/f-freddie-4.jpg&quot; width=&quot;500&quot; alt=&quot;A ginger cat rubbing his nose on the nose of a bespectacled human wearing can-style headphones. There is slight motion blur&quot;&gt;
&lt;/p&gt;

&lt;p&gt;
I&apos;ve been working in IT for in excess of 20 years. I&apos;m still happy in the
industry but know that it won&apos;t be for ever. Even if in a volunteer
capacity after retirment, I want at some point to work in a big cat
sanctuary looking after cheetahs, pumas, lions etc.
&lt;/p&gt;

&lt;p&gt;
It feels odd to be thinking about plans 20 years in the future. But even if I
don&apos;t do this, I know I won&apos;t be bored.  What&apos;s the most distant future plan
you have?
&lt;/p&gt;
</description>
        <pubDate>Sat, 06 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/06/f-is-for-felines.html</link>
        <guid isPermaLink="true">/2024/04/06/f-is-for-felines.html</guid>
        
        <category>a-to-z</category>
        
        <category>cats</category>
        
        
      </item>
      
    
    
      <item>
        <title>E is for &apos;Events&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;The series “A-to-Z Blogging Challenge” continues with today’s blog entry on the topic of &lt;em&gt;Events&lt;/em&gt;.
I have a number of varied hobbies and it’s fun to spend time with people to share in these interests.&lt;/p&gt;

&lt;p&gt;Two events worthy of mention are MatjsJam and EMF.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://mathsjam.com/gathering/uk/&quot;&gt;MathsJam&lt;/a&gt; is a medium-sized event (a
little over 100 people) filled with talks and games on mathematics and taking
place every year. Some of it serious, much of it less so but pretty much all
engaging. There’s even a baking competition. Thinking to &lt;a href=&quot;/2024/04/04/d-is-for-dessert&quot;&gt;yesterday’s post on
desserts&lt;/a&gt; I should probably take part - so far
I’ve not got around to it. Being a smaller event compared to some of the others
I go to, this is also the event where I gave some of my earliest
&lt;a href=&quot;/talks&quot;&gt;talks&lt;/a&gt;. So it has a warm place in my heart for that reason too.&lt;/p&gt;

&lt;p&gt;What about EMF? The name is a pun - with the letters standing for &lt;em&gt;Electro
Magnetic Field&lt;/em&gt;. The event is a geek festival taking place over a long weekend.
3000-odd people camping in a field with letures, workshops, presentations etc.
The &lt;a href=&quot;https://www.emfcamp.org/&quot;&gt;official EMF Camp&lt;/a&gt; website gives more
information.&lt;/p&gt;

&lt;p&gt;It takes place every other year (on the even years) and this year is in
Eastnor, Herefordshire. It has sold out, so unless you’ve got tickets already
(or decide to submit a talk and that talk is accepted) you’ll need to wait a
couple of years to take part.&lt;/p&gt;

&lt;p&gt;I suspect at least one my readers is the kind of person to go to one or even
both of these. But for those of you with different interests, what events do you
like to go to?&lt;/p&gt;
</description>
        <pubDate>Fri, 05 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/05/e-is-for-events.html</link>
        <guid isPermaLink="true">/2024/04/05/e-is-for-events.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>D is for &apos;Dessert&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;Living alone I don’t bake desserts all that often because I’ll be tempted to
eat them at an unhealthy rate! But I do enjoy baking for a social event,
whether I’m hosting or attending.&lt;/p&gt;

&lt;p&gt;I find it frustrating that recipe sites often contain information extraneous to
the recipe because when I’m working to a recipe, I’m typically using my phone
which has a small display and so screen space is at a premium. That said, I do
understand why it’s done this way.  (Broadly speaking: Recipes can’t be
copyrighted but the associated narrative can be). I recently discovered a couple of tools which scan recipe sites and extract the relevant sections. They are &lt;a href=&quot;https://justtherecipe.com/&quot;&gt;Just The Recipe&lt;/a&gt; and &lt;a href=&quot;https://cooked.wiki&quot;&gt;cooked wiki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ve a few recipes that I like to cook semi-often, some of which are my own and some of which are
recipes from elsewhere. Focussing on today’s theme, I’ve selected some desserts to showcase here.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.bbcgoodfood.com/recipes/dark-chocolate-orange-cake&quot;&gt;Chocolate orange
cake&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not my recipe, but this one
is probably my favourite. It is a huge labour of love, mainly because I prepare
it over a couple of evenings. The first evening I’ll candy the orange peel and then
the next evening is for the cake itself. But the benefit is that I then have
candied orange peel to snack on.&lt;/p&gt;

&lt;p&gt;The chocolate sauce&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/d-sauce.jpg&quot; alt=&quot;The covering for this cake&quot; srcset=&quot;/assets/resized/d-sauce-100x133.jpg 100w, /assets/resized/d-sauce-320x427.jpg 320w, /assets/resized/d-sauce-480x640.jpg 480w, /assets/resized/d-sauce-800x1067.jpg 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;The candied orange peel drying&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/d-peel.jpg&quot; alt=&quot;The candied orange peel&quot; srcset=&quot;/assets/resized/d-peel-100x129.jpg 100w, /assets/resized/d-peel-320x412.jpg 320w, /assets/resized/d-peel-480x618.jpg 480w, /assets/resized/d-peel-800x1030.jpg 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;The candied orange peel ready to eat&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/d-peel2.jpg&quot; alt=&quot;The candied orange peel&quot; srcset=&quot;/assets/resized/d-peel2-100x93.jpg 100w, /assets/resized/d-peel2-320x298.jpg 320w, /assets/resized/d-peel2-480x447.jpg 480w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;The finished cake&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/d-cake.jpg&quot; alt=&quot;The finished cake&quot; srcset=&quot;/assets/resized/d-cake-100x133.jpg 100w, /assets/resized/d-cake-320x427.jpg 320w, /assets/resized/d-cake-480x640.jpg 480w, /assets/resized/d-cake-800x1067.jpg 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.bbcgoodfood.com/recipes/chewy-chocolate-chip-cookies&quot;&gt;Chewy chocolate chip cookies&lt;/a&gt;
This one is also not mine, again from the BBC Good Food site.&lt;/p&gt;

&lt;p&gt;Also on my website is &lt;a href=&quot;https://peperell.com/recipes.html&quot;&gt;an uncategorised list of my own recipes&lt;/a&gt; .
These are written without the fluff I lamented above. There’ll be no need to
use one of the stripping tools I mentioned. One in particular I’d like to highlight is a &lt;a href=&quot;https://peperell.com/recipes/lemon-merigue-pie.html&quot;&gt;lemon meringue pie&lt;/a&gt;.
Here’s some I made during the first lockdown. It’s a good way to re-use those Gu pots.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/d-lemon-m-pie.jpg&quot; alt=&quot;Lemon meringue pies&quot; srcset=&quot;/assets/resized/d-lemon-m-pie-100x75.jpg 100w, /assets/resized/d-lemon-m-pie-320x240.jpg 320w, /assets/resized/d-lemon-m-pie-480x360.jpg 480w, /assets/resized/d-lemon-m-pie-800x600.jpg 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;What’s your favourite dish to cook? (Whether dessert or not)&lt;/p&gt;
</description>
        <pubDate>Thu, 04 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/04/d-is-for-dessert.html</link>
        <guid isPermaLink="true">/2024/04/04/d-is-for-dessert.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>C is for &apos;Caddy&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;A few months ago &lt;a href=&quot;https://blog.jpluscplusm.com/&quot;&gt;a friend&lt;/a&gt; introduced me to &lt;a href=&quot;https://caddyserver.com&quot;&gt;Caddy&lt;/a&gt;, a webserver.
Why yet another one? Well, ultimately this one fits my needs better.&lt;/p&gt;

&lt;p&gt;The huge benefit, compared to other webservers such as &lt;a href=&quot;https://httpd.apache.org/&quot;&gt;Apache
httpd&lt;/a&gt; or &lt;a href=&quot;https://nginx.org/&quot;&gt;nginx&lt;/a&gt; is that it
supports &lt;em&gt;native&lt;/em&gt; auto generation and renewal of SSL certs (either self-signed
or via Let’s Encrypt). I know that LE certs can be automatically generated by
other means, but having it done in-band is the big bonus for me.&lt;/p&gt;

&lt;p&gt;My own site (the one you’re reading right now) has been hosted via Caddy
since January 2023.  The SSL site of things is so automated by Caddy, that the only
configuration I need is&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;peperell.com, peperell.co.uk {
  log {
    output file /var/log/caddy/blog.json {
      role_keep 10
    }
    format json
  }

  handle {
    root * /var/www/blog/
    file_server
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The mere existence of a domain name (or several domains) to configure a site is
enough for caddy to know to generate (and auto-renew) its SSL cert. No extra
cronjobs needed.&lt;/p&gt;

&lt;p&gt;Other than that, it does pretty much what one would expect from a webserver,
including ability to proxy on to lower tiers (e.g. APIs, unix sockets, HA proxy
etc). One extra thing that it provides but which I don’t use is an API, via
which one can add new site configuration at run time. My raspberry pi running
this site (and a couple of internal house-related services) does not need this
functionality but it’s good to know it exists should I encounter a commercial
project of a suitable size and shape for this to be relevant.&lt;/p&gt;

&lt;p&gt;Have you ever use Caddy, or does this post tempt you to give it a try?&lt;/p&gt;
</description>
        <pubDate>Wed, 03 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/03/c-is-for-caddy.html</link>
        <guid isPermaLink="true">/2024/04/03/c-is-for-caddy.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>B is for &apos;Bellringing&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;One of the numerous hobbies I have is bellringing. The -ology word for it is
campanology but virtually no one in the community calls it that. A rather
obscure name for it, and one seldom used, is &lt;em&gt;The Excercise&lt;/em&gt;. But what’s it all
about?&lt;/p&gt;

&lt;p&gt;It’s mostly an English thing, but does exist elsewhere in places where there’s
been Church of England influence. Bells are used, primarily as a call to
worship. But my interest lies in the musical and mathematical theory side of
things, along with team work and mental endurance. It requires physical motion,
yes, but not an undue amount of effort.  The mechanics of wheels and pulleys
makes it possible for even a person of my limited strength to run bells
exceeding one ton.&lt;/p&gt;

&lt;p&gt;Musically, the bells are pretty much always tuned to a major scale starting
with the highest note and ending with the lowest note. In each unit of time
(which we usually call a &lt;em&gt;row&lt;/em&gt;), each bell will ring once and once only. For
mechanical reasons (&lt;em&gt;conservation of momentum&lt;/em&gt;, for those who care) from one
row to the next a bell can be in the same position, one position earlier, or
one position later.&lt;/p&gt;

&lt;p&gt;We change the order in a pre-determined pattern that must be committed to
memory. These patterns can be simple or complex, and it’s this variety and the
challenge of memorising the patterns (which we call methods) that keeps my
interest.&lt;/p&gt;

&lt;p&gt;What got me into it? New Year’s Day 1996 I was helping friend clean out his
loft and got distracted, having found one of his theory books. I expressed an
interest and he invited me to come along to the practice night, which happened
to be the following evening.&lt;/p&gt;

&lt;p&gt;When I first moved to North London, I heard through the community that the
bells of the local church were not being regularly rung and the church had
members of the congregation who were interested in learning. So I made myself
known and have been teaching and ringing there for the last 18 years.&lt;/p&gt;

&lt;p&gt;If you’re interested to find out more and you live near a church then turn up
on a practice night and they’ll almost certainly welcome you. It’s a very open
communinity and one does not need to be a person of faith to take part, though
one must always keep in mind the reason for ringing existing, is a religous
one.&lt;/p&gt;
</description>
        <pubDate>Tue, 02 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/02/b-is-for-bellringing.html</link>
        <guid isPermaLink="true">/2024/04/02/b-is-for-bellringing.html</guid>
        
        <category>a-to-z</category>
        
        
      </item>
      
    
    
      <item>
        <title>A is for &apos;Alphabet&apos;</title>
        <description>&lt;aside class=&quot;panel&quot;&gt; 
	&lt;p&gt;
	This post was written as part of the 2024 &lt;a href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;&gt;A-to-Z of Blogging challenge&lt;/a&gt;. 
	For every Monday to Saturday in April (meaning 26
	days), an article corresponding to each letter of the alphabet is to be
	written.
	&lt;/p&gt;
	&lt;p&gt; 
	An index of my entries can be seen &lt;a href=&quot;/tag/a-to-z&quot;&gt;here&lt;/a&gt;.
	&lt;/p&gt;
&lt;/aside&gt;


&lt;p&gt;
I was thinking recently that I&apos;ve let my blog languish for a long time (having
checked, it&apos;s over two years).  Apt in timing, yesterday I discovered the &lt;a
	href=&quot;http://www.a-to-zchallenge.com/p/what-is-blogging-from-to-z.html&quot;
	&gt;A-Z Blogging Challenge&lt;/a&gt;.
It feels like the sort of thing I can use to help pick up activity. But then
again, I don&apos;t want it to be forced - so who knows how long I&apos;ll keep it up.
&lt;/p&gt;

&lt;p&gt;
&lt;div itemscope itemtype=&quot;https://schema.org/Book&quot; itemid=&quot;https://search.worldcat.org/title/154129771&quot;&gt;
As many of my readers know, I like words and language, and foreign lanuages
too. But today&apos;s post is on the English alphabet. Or rather on a book themed on
the English Alphabet. The title of this book is &lt;span itemprop=&quot;name&quot;&gt;The
Ultimate Alphabet&lt;/span&gt;. Though the book contains prose, the main content is a
series hand-painted pictures each themed on a single letter of the alphabet.
The wonderous thing about this book is that it is suitable for both children
and adults. There are simple words such as &quot;angel&quot; (findable by even young
kids), flags for countries beginning with A and for a real subtlety there is
the maritime signal flag for the letter A.
&lt;/p&gt;

&lt;p&gt;
I first encountered this book as a child in the late 80s (soon after it was
published) and have bought a copy of it myself since and as I&apos;ve learned more
complexities about the world, there are still relevant things to be found and I
get plenty of use out of it. I also occasionally buy it as a present for
people.
&lt;/p&gt;

&lt;p&gt;
The same artist drew each of the pictures - his name being Mike Wilks. The
small amount of prose serves as an explanation for how the pictures were
developed, along with a per-picture introduction giving sample words and how
many items are to be found.
&lt;/p&gt;

&lt;p&gt;
Here is the picture for the letter &apos;A&apos;. Can you find an angel, an aquarium, the Australian flag, an awning, and others? There are 306 things to find.
&lt;/p&gt;




&lt;img
  src=&quot;/img/2024-04-01-a-is-for.jpg&quot;
  alt=&quot;Angel, aquarium, Australia, awning, ... 360 A&apos;s to find&quot;
  srcset=&quot;/assets/resized/2024-04-01-a-is-for-100x62.jpg 100w, /assets/resized/2024-04-01-a-is-for-320x199.jpg 320w, /assets/resized/2024-04-01-a-is-for-480x299.jpg 480w, /assets/resized/2024-04-01-a-is-for-800x498.jpg 800w, &quot;
/&gt;


&lt;p&gt;
For convenience, here&apos;s a link to the book&apos;s details: &lt;span itemprop=&quot;url&quot;&gt;&lt;a href=&quot;https://isbnsearch.org/isbn/9780805000764 &quot;&gt;https://isbnsearch.org/isbn/9780805000764&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
</description>
        <pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate>
        <link>/2024/04/01/a-is-for-alphabet.html</link>
        <guid isPermaLink="true">/2024/04/01/a-is-for-alphabet.html</guid>
        
        <category>a-to-z</category>
        
        <category>books</category>
        
        <category>words</category>
        
        
      </item>
      
    
    
      <item>
        <title>Some wordle variants I&apos;ve encountered</title>
        <description>&lt;p&gt;Over the past few &lt;span class=&quot;contrast&quot;&gt;weeks&lt;/span&gt; a word puzzle called &lt;em&gt;Wordle&lt;/em&gt;
has become popular on social &lt;span class=&quot;contrast&quot;&gt;media&lt;/span&gt;, or at
&lt;span class=&quot;contrast&quot;&gt;least&lt;/span&gt; on Twitter/X, the only social
&lt;span class=&quot;contrast&quot;&gt;media&lt;/span&gt; &lt;span class=&quot;contrast&quot;&gt;forum&lt;/span&gt; in
&lt;span class=&quot;contrast&quot;&gt;which&lt;/span&gt; I have any kind of active presence.&lt;/p&gt;

&lt;p&gt;For &lt;span class=&quot;contrast&quot;&gt;those&lt;/span&gt; not familiar with the game, the goal is to determine the 5-letter
target word by making guesses at that word and &lt;span class=&quot;contrast&quot;&gt;being&lt;/span&gt;
told &lt;span class=&quot;contrast&quot;&gt;which&lt;/span&gt; of &lt;span class=&quot;contrast&quot;&gt;those&lt;/span&gt; letters
appear in the target and of &lt;span class=&quot;contrast&quot;&gt;those&lt;/span&gt; letters &lt;span class=&quot;contrast&quot;&gt;which&lt;/span&gt; are in the same &lt;span class=&quot;contrast&quot;&gt;place&lt;/span&gt; as
the &lt;span class=&quot;contrast&quot;&gt;guess&lt;/span&gt;. Sounds simlpe? There’s a &lt;span class=&quot;contrast&quot;&gt;limit&lt;/span&gt; of 6 guesses. It’s not just a case of &lt;span class=&quot;contrast&quot;&gt;being&lt;/span&gt;
&lt;span class=&quot;contrast&quot;&gt;lucky&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;I played several variants before I &lt;span class=&quot;contrast&quot;&gt;tried&lt;/span&gt; the original.  In this post, I’ll
&lt;span class=&quot;contrast&quot;&gt;share&lt;/span&gt; a few variants that I’ve encountered. They
mostly have the same gameplay as the original but I’ll &lt;span class=&quot;contrast&quot;&gt;point&lt;/span&gt; out some differences &lt;span class=&quot;contrast&quot;&gt;where&lt;/span&gt;
relevant.&lt;/p&gt;

&lt;h3 id=&quot;lewdle&quot;&gt;&lt;a href=&quot;https://www.lewdlegame.com/&quot;&gt;Lewdle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Like the original, but the target 5-letter word is in some way rude, lewd or
offensive. N.B. Some of the &lt;span class=&quot;contrast&quot;&gt;words&lt;/span&gt; are &lt;span class=&quot;contrast&quot;&gt;slurs&lt;/span&gt;.&lt;/p&gt;

&lt;h3 id=&quot;sweardle&quot;&gt;&lt;a href=&quot;http://sweardle.glitch.me/&quot;&gt;Sweardle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;As &lt;span class=&quot;contrast&quot;&gt;above&lt;/span&gt;, but 4-letter &lt;span class=&quot;contrast&quot;&gt;words&lt;/span&gt;.&lt;/p&gt;

&lt;h3 id=&quot;hello-wordl&quot;&gt;&lt;a href=&quot;https://hellowordl.net/&quot;&gt;Hello Wordl&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Play the original game but with a word length of anywhere between 4 and 11 letters.&lt;/p&gt;

&lt;h3 id=&quot;worldle&quot;&gt;&lt;a href=&quot;https://worldle.teuteuf.fr/&quot;&gt;Worldle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Try to identify the country based on its shape. The clue &lt;span class=&quot;contrast&quot;&gt;given&lt;/span&gt; is the distance and direction to the target.&lt;/p&gt;

&lt;h3 id=&quot;mathler&quot;&gt;&lt;a href=&quot;https://www.mathler.com/&quot;&gt;Mathler&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Find the hidden calculation that equals the target number. Uses digits 0-9 and
the operators &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you can &lt;span class=&quot;contrast&quot;&gt;solve&lt;/span&gt; this then there’s a &lt;a href=&quot;https://hard.mathler.com/&quot;&gt;harder version&lt;/a&gt; to try.&lt;/p&gt;

&lt;h3 id=&quot;nerdle&quot;&gt;&lt;a href=&quot;https://nerdlegame.com/&quot;&gt;Nerdle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;A harder version of Mathler - find the mathematical equation. You don’t even
know how many digits are to be &lt;span class=&quot;contrast&quot;&gt;found&lt;/span&gt; in the answer.&lt;/p&gt;

&lt;h3 id=&quot;dordle&quot;&gt;&lt;a href=&quot;https://zaratustra.itch.io/dordle&quot;&gt;Dordle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Like the original but try to &lt;span class=&quot;contrast&quot;&gt;solve&lt;/span&gt; two &lt;span class=&quot;contrast&quot;&gt;words&lt;/span&gt; at once.&lt;/p&gt;

&lt;h3 id=&quot;quordle&quot;&gt;&lt;a href=&quot;https://www.quordle.com/#/&quot;&gt;Quordle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Like Dordle but try to find &lt;em&gt;four&lt;/em&gt; words at once.&lt;/p&gt;

&lt;h3 id=&quot;passwordle&quot;&gt;&lt;a href=&quot;https://passwordle.com/&quot;&gt;Passwordle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;A much harder version of the game. The possible characters a not limited to
letters but include numbers and symbols too. At least the letters are
case-insensitive!&lt;/p&gt;

&lt;h3 id=&quot;passwordle-a-different-one&quot;&gt;&lt;a href=&quot;https://rsk0315.github.io/playground/passwordle.html&quot;&gt;Passwordle&lt;/a&gt; (a different one)&lt;/h3&gt;

&lt;p&gt;The &lt;span class=&quot;contrast&quot;&gt;first&lt;/span&gt; one I consider to be genuinely infeasible for a &lt;span class=&quot;contrast&quot;&gt;human&lt;/span&gt; to &lt;span class=&quot;contrast&quot;&gt;solve&lt;/span&gt;. &lt;span class=&quot;contrast&quot;&gt;Enter&lt;/span&gt;
the password and be &lt;span class=&quot;contrast&quot;&gt;shown&lt;/span&gt; its SHA256 hash. You’re then &lt;span class=&quot;contrast&quot;&gt;shown&lt;/span&gt; &lt;span class=&quot;contrast&quot;&gt;which&lt;/span&gt; of &lt;span class=&quot;contrast&quot;&gt;those&lt;/span&gt;
hash digits are &lt;span class=&quot;contrast&quot;&gt;found&lt;/span&gt; in the target word’s hash. (A hash, amongst &lt;span class=&quot;contrast&quot;&gt;other&lt;/span&gt; things,
can be used to &lt;span class=&quot;contrast&quot;&gt;store&lt;/span&gt; passwords securely). More details can be &lt;span class=&quot;contrast&quot;&gt;found&lt;/span&gt; in the
Wikipedia article on
&lt;a href=&quot;https://en.wikipedia.org/wiki/Cryptographic_hash_function&quot;&gt;hashing&lt;/a&gt; but for a
simple explanation: A tiny change in the &lt;span class=&quot;contrast&quot;&gt;input&lt;/span&gt; (the &lt;span class=&quot;contrast&quot;&gt;guess&lt;/span&gt; made) results in a
huge change in the output (the ‘clues’ given).&lt;/p&gt;

&lt;h2 id=&quot;vortjo&quot;&gt;&lt;a href=&quot;https://telegramo.org/vortjo/&quot;&gt;Vortjo&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Perhaps the most obvious adaptation is to have a foreign language dictionary. This variant has an Esperanto wordlist.
Small disclaimer: Vortlo is written by a friend of mine.&lt;/p&gt;

&lt;h3 id=&quot;a-version-in-google-docs-compatible-with-excel&quot;&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1dNjJoyQIyV5Wh88VAuAirxeOMD1oG_qM/edit#gid=164968068&quot;&gt;A version in Google Docs, compatible with Excel&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Made by &lt;a href=&quot;https://twitter.com/akshathkilla/status/1492483558426161156&quot;&gt;Twitter user akshathkilla&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;numble&quot;&gt;&lt;a href=&quot;https://www.geogebra.org/m/yjv62ujk&quot;&gt;Numble&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;A version made in the Geometry modelling software &lt;em&gt;Geogebra&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&quot;absurdle&quot;&gt;&lt;a href=&quot;https://qntm.org/files/absurdle/absurdle.html&quot;&gt;Absurdle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The first variant I found. This is a contrarian version of the game; it
continually changes the target word to &lt;span class=&quot;contrast&quot;&gt;avoid&lt;/span&gt; your guesses (whilst still giving
non-contradictory clues). This one doesn’t have a &lt;span class=&quot;contrast&quot;&gt;fixed&lt;/span&gt; word on a given day so
you can replay it to your heart’s content.&lt;/p&gt;

&lt;h3 id=&quot;chordle&quot;&gt;&lt;a href=&quot;https://www.chordle.synthase.cc&quot;&gt;Chordle&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Try to determine the correct form of a musical &lt;span class=&quot;contrast&quot;&gt;chord&lt;/span&gt;. It’ll be some kind of 7th
and the challenge is to work out the &lt;span class=&quot;contrast&quot;&gt;notes&lt;/span&gt; and what inversion the &lt;span class=&quot;contrast&quot;&gt;chord&lt;/span&gt; is in.&lt;/p&gt;

&lt;h3 id=&quot;any-more&quot;&gt;Any more?&lt;/h3&gt;

&lt;p&gt;Have you encountered any that I’ve not mentioned here? Foreign language variants are equally welcome as gameplay variants.&lt;/p&gt;

</description>
        <pubDate>Sun, 20 Feb 2022 00:00:00 +0000</pubDate>
        <link>/2022/02/20/wordle-variants.html</link>
        <guid isPermaLink="true">/2022/02/20/wordle-variants.html</guid>
        
        
      </item>
      
    
    
      <item>
        <title>How to avoid a low bus number</title>
        <description>&lt;p&gt;This post is nothing to do with public transportation. Instead I refer to the
concept called the Bus Number, which is a way to quantify organisation risk. It
refers to the minimum number of people in an organisation that need to be hit
by a bus for there to be lost knowledge.&lt;/p&gt;

&lt;p&gt;A less jarring version of this term is the lottery factor; referring to people
who would leave the organisation were they to win the lottery. (The risk would
also apply when people take holidays or go on parental leave).&lt;/p&gt;

&lt;p&gt;In a perfect world, all knowledge would be captured in written form such that
it wouldn’t be lost in the event of people moving on but reality doesn’t work
that way.  I remember once place I worked which had a large ish team but also
had a large variety of duties.  In the early stages that worked okay, but as
the team and variety increased it didn’t scale. Our bus number was seldom 1,
except perhaps during the initial stages of taking on that duty. As a result we
became adept at distributing this knowledge within  the team. We soon realised
that trying to share knowledge of all tasks to all members wouldn’t work.
Instead, I proposed that we would have each member of the team be the subject
matter expert for a different component. They would not only be in charge of
discovering and documenting the relevant intricacies, but also ensuring that
their particular knowledge area does not have a bus factor of 1. So they’d also
run training sessions to share the relevant information.&lt;/p&gt;

&lt;p&gt;The team was made up of 3 senior engineers (me being one) but was junior heavy.
By distributing the workload, this not only freed me up for managerial duties,
but also empowered and engaged other team members. What better way than to be
told “I trust you to make this happen”‽&lt;/p&gt;

&lt;p&gt;A second technique, relevant to the documentation side of things&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, was that
we’d have one person write it, but then asked that the documentation be
validated by having a newcomer attempt to use it. The SME would answer
questions, but take a passive role such that the documentation – and not the
SME – would be the guide. The newcomer can then amend documentation filling in
gaps and ambiguities. Having the ability (and permission!) to amend procedural
documentation was key here. &lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;All in all at the time of my departure we had in the order of 20 topic areas
spread across 10 SMEs, though basic knowledge of the majority of tasks was able
to percolate to most of the team. But 100% across 100% would be an impossible
and demotivating goal. Don’t set yourself or your team up for failure. Success
is possible but don’t equate this with perfection.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I have a post in the back of my mind on the topic of documentation too. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Hm. Maybe this would be a good addition for my &lt;a href=&quot;http://www.peperell.com/2021/12/09/how-to-interview-a-company.html&quot;&gt;Questions to ask a company&lt;/a&gt; list; how painful is the changing of procedures and/or documentation? &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 16 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/16/bus-number.html</link>
        <guid isPermaLink="true">/2021/12/16/bus-number.html</guid>
        
        <category>work</category>
        
        
      </item>
      
    
    
      <item>
        <title>Tracking personal expenses</title>
        <description>&lt;p&gt;For the past year or two I’ve been tracking my finances using a &lt;a href=&quot;https://en.wikipedia.org/wiki/Plain_text&quot;&gt;Plain
text&lt;/a&gt; system called
&lt;a href=&quot;https://beancount.github.io/&quot;&gt;beancount&lt;/a&gt;.
Following on from &lt;a href=&quot;http://www.peperell.com/2021/12/14/online-groceries.html&quot;&gt;yesterday’s post on online grocery
shopping&lt;/a&gt;, I was
thinking about the sorts of graphs I can extract from my Beancount data.&lt;/p&gt;

&lt;p&gt;For the graphs below I’ve left the dates present but removed the numbers. The
shape is what tells the story.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My grocery expenditure&lt;/strong&gt;, with bars for each quarter of the past almost 2 years:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2021-12-15-groceries.png&quot; alt=&quot;Grocery expenditure&quot; srcset=&quot;/assets/resized/2021-12-15-groceries-100x41.png 100w, /assets/resized/2021-12-15-groceries-320x130.png 320w, /assets/resized/2021-12-15-groceries-480x196.png 480w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;Relatively stable over the past year or so, with a tail-off in Q3 of this year.
I can’t think of a reason why this might have changed; if anything I’d expect
it to have increased a little (see my explanation for the next graph)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deliveroo&lt;/strong&gt;, grouped by month from March of this year&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2021-12-15-deliveroo.png&quot; alt=&quot;Deliveroo expenditure&quot; srcset=&quot;/assets/resized/2021-12-15-deliveroo-100x28.png 100w, /assets/resized/2021-12-15-deliveroo-320x89.png 320w, /assets/resized/2021-12-15-deliveroo-480x134.png 480w, /assets/resized/2021-12-15-deliveroo-800x223.png 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s interesting to see my mood reflected in this graph.  May was a rather
difficult time for me for a few reasons(thankfully okay now). So I was cooking
for myself a lot less and instead ordering food in.  And in July I recall
cooking a lot of my own food. Although as I write this,I recall that I also had
some deliveroo vouchers as gift. So that wasn’t a direct expense to me and
therefore isn’t represented in this graph.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Council Tax&lt;/strong&gt;, grouped by month from several years ago.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2021-12-15-counciltax.png&quot; alt=&quot;Council tax expenses from 2016&quot; srcset=&quot;/assets/resized/2021-12-15-counciltax-100x19.png 100w, /assets/resized/2021-12-15-counciltax-320x62.png 320w, /assets/resized/2021-12-15-counciltax-480x94.png 480w, /assets/resized/2021-12-15-counciltax-800x156.png 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;I was aware of this change (because of the annual statements the council send me)
but it’s pleasing to see &lt;em&gt;one&lt;/em&gt; bill reducing, in a world which seems to
have every other bill increasing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pet expenses&lt;/strong&gt;, grouped by year&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2021-12-15-cat-expenses.png&quot; alt=&quot;Pet expenses&quot; srcset=&quot;/assets/resized/2021-12-15-cat-expenses-100x46.png 100w, /assets/resized/2021-12-15-cat-expenses-320x148.png 320w, /assets/resized/2021-12-15-cat-expenses-480x222.png 480w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is the sharpest rising expense.  Partly it’s insurance, and partly it’s
the out-of-insurance expenses incurred as he has more health problems. But the
main increase is the specialist food he needs.&lt;/p&gt;

&lt;p&gt;I’ll finish with an obligatory picture of Freddie. He’s definitely worth it!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2021-12-15-freddie.jpeg&quot; alt=&quot;Deliveroo expenditure&quot; srcset=&quot;/assets/resized/2021-12-15-freddie-100x103.jpeg 100w, /assets/resized/2021-12-15-freddie-320x330.jpeg 320w, /assets/resized/2021-12-15-freddie-480x495.jpeg 480w, /assets/resized/2021-12-15-freddie-800x825.jpeg 800w, &quot; /&gt;&lt;/p&gt;

</description>
        <pubDate>Wed, 15 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/15/tracking-expenses.html</link>
        <guid isPermaLink="true">/2021/12/15/tracking-expenses.html</guid>
        
        
      </item>
      
    
    
      <item>
        <title>Thoughts after a year of online grocery shopping</title>
        <description>&lt;p&gt;Last October I started grocery shopping online. This worked very well for around 9 months.
Product accuracy was high and it was very easy to request a refund (at point of
delivery) for unwanted substitutions or for items extremely close to expiry.
But even still, the vast majority of items were in stock and so things were rarely a problem.&lt;/p&gt;

&lt;p&gt;But around August of this year, things took a downturn. Since then almost every
single order I’ve placed has had items missing due to low stock levels. Almost
without exception, these items have all been in the same category: prepared
meals. Not the greatest culinary choice, sure, but I value the convenience (and
besides, though price is of &lt;em&gt;some&lt;/em&gt; concern, I’m not aiming to optimise for
cost).&lt;/p&gt;

&lt;p&gt;As a result it means I’ve had to make alternative arrangements for 5-ish meals
per week. I mind less if this is something I would have eaten in the evening,
but when working from home it does have an impact on lunch time arrangements.&lt;/p&gt;

&lt;p&gt;I am aware that the orders are picked by hand on the day of delivery and
therefore subject to local store stock levels. Furthermore, missing items &lt;em&gt;are&lt;/em&gt;
refunded. But it’s very poor from a user experience point of view.&lt;/p&gt;

&lt;p&gt;Since the pandemic, I have occasionally walked to the supermarket (typically
whilst needing to run other errands such as visiting a bank) and have noticed
the same items missing from shelves. So to be clear: the items missing from my
orders do appear to be due to genuine stock issues. I also understand that it’s
an unreasonable expectation that the pickers go to other stores in order to
minimise the number of missing items.  But what’s less clear is why this has
been the case for almost 4 months, and why this has changed when it was fine
before this period.&lt;/p&gt;

&lt;p&gt;A little over 10 years ago I worked for an ecommerce company and that had
stock-level awareness. It would give warnings when items were low in stock, not
merely when the item was completely out.  Technically this would be possible
because they know what my delviery address is and so can estimate what the
local picking store would be. But that said, I don’t know what use it would be
to raise a complaint. This isn’t a problem with a specific order; it’s a
systemic issue and thus harder to fix but also it seems rather self-centered.
The process as a whole seems to work; perhaps it’s just my choice of product. I
don’t know how common my usage pattern is.&lt;/p&gt;

&lt;p&gt;About a month ago there was an interesting problem that happened one evening
when my order was delivered. The crate presented to me contained none of the
items I normally ordered; it was someone else’s. The delivery driver was on the
verge of re-funding the entire order and in our conversation he made an
off-hand comment that he had only 5 orders remaining to deliver. I made the
suggetion of checking whether it had been switched with someone else’s. The
driver checked the van and found another crate which had the same identifying
number. It seems unlikely that crates are numbered on a per-van basis, but with
this being the case the chance of the same number being issued and then ending
up on the same van, seems very low. But this is what happened, and my items
were located. (Presumably the other household, being one of the remaining 5,
correctly received their crate which had first been presented to me). So this
issue too was solved&lt;/p&gt;

&lt;p&gt;My supermarket of choice was Sainsbury’s but I’ve been thinking over recent
weeks that I might give a differnt brand a try, to see how it compares with
missing items. Do any of you get groceries online reguarly, and if so how
common are subsitutions or out-of-stock issues?&lt;/p&gt;

&lt;p&gt;Train operating companies typically publish punctuality and reliability
figures, as a percentage of on-time or services ran. I wonder what supermarket
percentages showing “Orders met without subsitution”, both aggregated (either
company wide or perhaps per store) and for me as a user, might be. There’s
bound to be a couple of data geeks who read this. Can you think of any other
figures that might be interesting, were supermarkets to collect them? (and
ideally publish them too)&lt;/p&gt;
</description>
        <pubDate>Tue, 14 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/14/online-groceries.html</link>
        <guid isPermaLink="true">/2021/12/14/online-groceries.html</guid>
        
        
      </item>
      
    
    
      <item>
        <title>Oneword - Writing exercises</title>
        <description>&lt;p&gt;Another nostaligiac post!&lt;/p&gt;

&lt;p&gt;In the past I used to write a lot of prose. My dayjob has occasional call for
it now but my time is normally spent writing code and mentoring people. That
lack is part of my motivation for wanting to kickstart this blog.  I’ve no idea
how long I’ll keep this up. Maybe just until the 25th.&lt;/p&gt;

&lt;p&gt;Most of what I write (and wrote, for that matter) is report or tutorial in
nature with little inventive writing. I had a memory last night of a writing
prompt technique that I encountered perhaps 15 or 20 years ago. This being “one
word” - a single word is presented and the task is to write, unrefined, unplanned and
unedited on that topic for 60 seconds.&lt;/p&gt;

&lt;p&gt;I was curious and searched online and found a website called, precitably
enough, &lt;a href=&quot;https://www.oneword.com/&quot;&gt;OneWord&lt;/a&gt; which offers such suggestions. A new
word is offered every few days. A fun thing about this site (and any others
like it) are that users’ submissions are collated so you can read what others
wrote (whether or not you make a submission for that particular word).&lt;/p&gt;

&lt;p&gt;I don’t have the right sort of creative skills to write stories with plot and
character, but this is the closest I get to creative writing.&lt;/p&gt;
</description>
        <pubDate>Mon, 13 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/13/writing-exercises.html</link>
        <guid isPermaLink="true">/2021/12/13/writing-exercises.html</guid>
        
        <category>nostalgia</category>
        
        
      </item>
      
    
    
      <item>
        <title>Science-themed video calls with kids</title>
        <description>&lt;p&gt;My niblings are aged 5 and 7. Due to COVID I’ve not been travelling to see
broader family much but I have had a few videocalls with them. Because they
both have an interest in science and doing things, I’ve come up with a few
ideas for activities. On one such occasion I talked them through making a lemon
drizzle cake (&lt;a href=&quot;http://www.peperell.com/recipes/lemon-drizzle-cake.html&quot;&gt;my own recipe,
available here for those
interested&lt;/a&gt;).  On
another occasion I demonstrated to them &lt;a href=&quot;https://en.wikipedia.org/wiki/Subtractive_color&quot;&gt;Subtractive colour
mixing&lt;/a&gt; though I didn’t call
it that. I think I used probably the wording “making new colours”. That
afternoon is what this post is about.&lt;/p&gt;

&lt;p&gt;I started the call wearing a labcoat and protective eyewear&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; which
definitely got their attention!  [I don’t have a photo of this available, I
shall try to obtain one and update this post] I started them off by first
getting them to find 3 big glasses and 3 small glasses, and some red, yellow
and blue liquid food dye (which I’d prep’d the parents to buy a few days
beforehand). Exactly what size you use doesn’t matter; it’s merely a
convenience.&lt;/p&gt;

&lt;p&gt;In case you can’t guess where this is going, I had them almost fill each of the
3 big glasses with water. Then into one glass they’d add a few drops of blue
food dye and mix it up, yellow into the next and stir that, and red into the
last big glass.&lt;/p&gt;

&lt;p&gt;It looks like the following&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2021-12-12-nibling-science-primary.jpg&quot; alt=&quot;3 big glasses filled with water and dyed blue, yellow, red respectively&quot; srcset=&quot;/assets/resized/2021-12-12-nibling-science-primary-100x76.jpg 100w, /assets/resized/2021-12-12-nibling-science-primary-320x243.jpg 320w, /assets/resized/2021-12-12-nibling-science-primary-480x365.jpg 480w, /assets/resized/2021-12-12-nibling-science-primary-800x608.jpg 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;I then asked them what colour they thought we’d get if we mixed the red and the
blue. The guess doesn’t matter - it’s to get them thinking about colours. So we
take one of the little empty glasses and pout into it a little of the red water
and a little of the blue water!&lt;/p&gt;

&lt;p&gt;We then did the same again but this time with the yellow and the blue.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/2021-12-12-nibling-science-secondary.jpg&quot; alt=&quot;2 smaller glasses with the result of mixing blue with red, and blue with yellow&quot; srcset=&quot;/assets/resized/2021-12-12-nibling-science-secondary-100x57.jpg 100w, /assets/resized/2021-12-12-nibling-science-secondary-320x182.jpg 320w, /assets/resized/2021-12-12-nibling-science-secondary-480x273.jpg 480w, /assets/resized/2021-12-12-nibling-science-secondary-800x455.jpg 800w, &quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can use other combinations, and also different ratios.&lt;/p&gt;

&lt;p&gt;If you’re reading this then feel free to replicate this with your own kids, or
do it with kids over a video call as I did.&lt;/p&gt;

&lt;p&gt;Not overly taxing, but very fun and very engaging.&lt;/p&gt;

&lt;p&gt;A word of advice though: Make sure that they have careful supervision. I’m not
responsible if they start trying to handle the dyes directly instead of using
the diluted colours!&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Am I unusual in having my own such &lt;a href=&quot;https://en.wikipedia.org/wiki/Personal_protective_equipment&quot;&gt;PPE&lt;/a&gt; at home? &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Sun, 12 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/12/science-with-niblings.html</link>
        <guid isPermaLink="true">/2021/12/12/science-with-niblings.html</guid>
        
        <category>family</category>
        
        
      </item>
      
    
    
      <item>
        <title>Introducing the microCOVID</title>
        <description>&lt;p&gt;A couple of months ago I discovered the website for the so-named &lt;a href=&quot;https://www.microcovid.org/&quot;&gt;microCOVID
project&lt;/a&gt;.   What’s a microcovid? It’s a unit by
which one can estimate risk of contracting covid based on one’s lifestyle -
things such as how one travels to work, with how many people, how far apart and
so on. One can enter one’s risk appetite and the website will show whether the
indicated activities put someone above or below that threshold. It’s still a
new project and the science is still imperfect but I’ve learned a bit from it
about &lt;em&gt;relative&lt;/em&gt; risks.&lt;/p&gt;

&lt;p&gt;That website made me think of af few other unusual units (by which I mean
&lt;a href=&quot;https://en.wikipedia.org/wiki/International_System_of_Units&quot;&gt;non-SI&lt;/a&gt;)
-derived) that I’ve encountered. The first one that comes to mind (and from
which I suspect the microCOVID was named) is the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Micromort&quot;&gt;micromort&lt;/a&gt;, a measure of mortality
risk for certain events, such as travelling (by whatever mode of transport),
smoking, skydiving, living in a city etc.&lt;/p&gt;

&lt;p&gt;Next up there’s the Helen (with the milli-Helen being the most common
multiple), based on the character from Homer’s
&lt;a href=&quot;https://en.wikipedia.org/wiki/Iliad&quot;&gt;Iliad&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Helen_of_Troy&quot;&gt;Helen of
Troy&lt;/a&gt; whose face is said to be so
beatiful that it launched a thousand ships.&lt;/p&gt;

&lt;p&gt;Another one relevant to the pandemic (or perhaps more to the lockdowns) is the
beard-second, which as its name suggests, is how fast the average beard grows
in one second. The exact value differs (it’s not an SI unit. afterall)
depending on which defintion ones uses, but 5nm and 10nm are the typical
values.&lt;/p&gt;

&lt;p&gt;There’s a whole load of them on Wikipedia falling into two categories
&lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_humorous_units_of_measurement&quot;&gt;Humorous&lt;/a&gt;
and
&lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_unusual_units_of_measurement&quot;&gt;Unusual&lt;/a&gt;.
There’s little point in me reproducing them all here but it makes for a fun
distraction - if a foray into metrology is your sort of thing.&lt;/p&gt;
</description>
        <pubDate>Sat, 11 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/11/unusual-units.html</link>
        <guid isPermaLink="true">/2021/12/11/unusual-units.html</guid>
        
        
      </item>
      
    
    
      <item>
        <title>Lamenting the downfall of rot13</title>
        <description>&lt;p&gt;When I first gained access to the Internet in the mid 90s, the world was a very
different place. The web was still in its infancy.
&lt;a href=&quot;https://en.wikipedia.org/wiki/Usenet&quot;&gt;Usenet&lt;/a&gt; was still very popular.  Online
culture was very much focussed on sharing of information rather than the skew
towards collection of data that seems to proliferate today.&lt;/p&gt;

&lt;p&gt;One of the things I remember is &lt;a href=&quot;https://en.wikipedia.org/wiki/ROT13&quot;&gt;ROT13&lt;/a&gt; -
a simple way that text would be hidden, but done so in an intentionally simple
way. It was simple enough that with a little practice one could even decode it
by eye, though it was rare for people to actually do that; typically email
clients and newsclients would have ROT13 functionality built in.&lt;/p&gt;

&lt;p&gt;It worked as follows: All non-letter characters (such as punctuation, spaces,
new lines) would be unchanged. But every letter would be advanced 13 spaces in
the alphabet, remaining as upper case or lower case, depending on what they
were originally.&lt;/p&gt;

&lt;p&gt;The real elegance of ROT13 is that the same calculation can be used to both
“encode” and “decode” the text. In other words, there’s no need to know whether
a text segment is coded or in plaintext before applying the transformation. It
was simple to implement.&lt;/p&gt;

&lt;p&gt;Some examples: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;A&lt;/code&gt; would become &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;N&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;B&lt;/code&gt; would become &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;O&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C&lt;/code&gt; would become &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;P&lt;/code&gt;
etc, but also note that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;N&lt;/code&gt; would become &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;A&lt;/code&gt; (since there isn’t a letter after
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Z&lt;/code&gt;). The same thing would apply for the lower case letters.&lt;/p&gt;

&lt;script&gt;
// I am not a Javascript programmer and it shows
function rot13(s) {
    var result = &quot;&quot; ;
    for (let i = 0 ; i &lt; s.length ; i++) {
        let newchar;
        if (s[i] &gt;= &apos;a&apos; &amp;&amp; s[i] &lt;= &apos;z&apos;) {
            new_codepoint = s.charCodeAt(i) + 13;
            if ( new_codepoint &gt; &apos;z&apos;.codePointAt() )
                new_codepoint -= 26;
        } else if (s[i] &gt;= &apos;A&apos; &amp;&amp; s[i] &lt;= &apos;Z&apos;) {
            new_codepoint = s.charCodeAt(i) + 13;
            if ( new_codepoint &gt; &apos;Z&apos;.codePointAt() )
                new_codepoint -= 26;
        } else {
            new_codepoint = s.charCodeAt(i);
        }
        result += String.fromCharCode(new_codepoint);
    }
    return result;
}

function flip_text(element) {
    var old_text = document.getElementById(element).innerHTML;
    var new_text = rot13(old_text);
    document.getElementById(element).innerHTML = new_text;
}
&lt;/script&gt;

&lt;div id=&quot;example1&quot; class=&quot;highlight&quot; onclick=&quot;flip_text(&apos;example1&apos;)&quot;&gt;
Click on this text to see the effect. Guvf grkg jnf uvqqra ohg vf abj erirnyrq.
&lt;/div&gt;

&lt;p&gt;Here’s another example. The English alphabet in both upper case and lower case:&lt;/p&gt;
&lt;div id=&quot;example2&quot; class=&quot;highlight&quot; onclick=&quot;flip_text(&apos;example2&apos;)&quot;&gt;
ABCDE FGHIJ KLMNO PQRST UVWXYZ
abcde fghij klmno pqrst uvwxyz
&lt;/div&gt;

&lt;p&gt;Why was such a thing used? The common use cases were&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;to hide the punchline of a joke&lt;/li&gt;
  &lt;li&gt;to prevent giving a spoiler about a TV episode or movie&lt;/li&gt;
  &lt;li&gt;to hide the answer to a puzzle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It seems as though ROT13 has fallen into disuse these days.  It also never
really became widely used on the web. I’m not sure why either of these might be
so, but I still have a soft spot for ROT13. One possibility that as Javascript
became more widely adopted on the web, designers used more aesthetically
pleasing techniques such as blurring or black bars, or perhaps having the
solution behind second page load.&lt;/p&gt;

&lt;p&gt;I’m not trying to make a point here. Instead, I merely felt indulging in a
little nostalgia.&lt;/p&gt;

&lt;p&gt;I’ll finish with a joke: When is a car no longer a car?&lt;/p&gt;
&lt;div id=&quot;example3&quot; class=&quot;highlight&quot; onclick=&quot;flip_text(&apos;example3&apos;)&quot;&gt;
Jura vg gheaf vagb n fvqr fgerrg.
&lt;/div&gt;
</description>
        <pubDate>Fri, 10 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/10/lamenting-downfall-of-rot13.html</link>
        <guid isPermaLink="true">/2021/12/10/lamenting-downfall-of-rot13.html</guid>
        
        <category>tech</category>
        
        <category>nostalgia</category>
        
        
      </item>
      
    
    
      <item>
        <title>How to interview a company</title>
        <description>&lt;p&gt;I see lots of advice about how for candidates on how to prepare for interviews,
covering both algorithm specifics (e.g. “how to crack the technical
interview”), and how to prepare for common non-technical questions (“Why do you
want to work here?”, “Where do you see yourself in five years time?” and the
like). But interviews are a two way street. They’re not solely for the company
to decide whether they want to hire you or not – they’re also to help you
decide whether you want to work for the company. I see much less advice on how
the candidate can address that second aspect.&lt;/p&gt;

&lt;p&gt;I’m hugely lucky to be in a job I enjoy. This hasn’t always been the case but I
think what really helped me to learn how to interview potiential employers was
a bumpy patch in my employment history in 2014.  Around and since that time,
I’ve collected some questions that have really helped me to gain insight into
what working for a company might be like.&lt;/p&gt;

&lt;p&gt;Here are the questions, along with some thoughts on why these are useful&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When top performers leave this position, why do they leave, and where do they go?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If a company doesn’t know, it likely means that they’re not conducting exit
interviews, meaning that they have little interest in working to retain
talent. Another possibility is that people are leaving because they’re
disgruntled&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, though it’s understandable that the company won’t admit this,
and thus an answer of “We don’t know” does not necessarily mean something
negative. But if exit interviews &lt;em&gt;are&lt;/em&gt; conducted then there’s often something the
company can learn from that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What one thing missing from my resume concerns you the most?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I use this one as a barometer to help gauge how well I’m faring compared to
other candidates seen so far. I’ve worked with in excess of 40 different
languages and syntaxes in my working life&lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;  so I’m able to demonstrate that
I can learn new ones. This question, therefore, is useful to see how the
company views differing skill sets and their willingness to offer training
opportunities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversely, with there being so many other good candidates, what made you seek me out?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the other side of the coin for the question above, but it can be of use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where have the best ideas come from in the last two years?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a great one to learn about company culture as set by the executive
suite (or C-levels, or whatever term is used for the organisation in question).
If all ideas come from The Powers That Be and none have come from lower tiers,
including Individual Contributers, then it’s possible that the organisation is
an inflexible or dogmatic one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With learning curves in IT typically steep, productivity from day 1 is rare. If I’m hired, what is one thing I’ll need to deliver in the first 90 days in order to be considered successful?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a great one that I use to get an inkling into what it might be like
working for that person. A list of projects or tasks is useful, but as the
candidate I can also get a sense of whether the expectations are realistic or
not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Burnout is a common problem in IT - how do you help staff not to?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;More than once I’ve quit my job before having another one lined up, and once I
didn’t but probably should have. I realise this is hugely privileged of me to
be able to do so. IT has a reputation for providing a good income, and I’m
thankful for that. But workplaces shouldn’t make us feel bad. Money should not
need to be a sweetener to be subject to duress for 40-odd hours a week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When was your last production outage and what was it?&lt;/strong&gt;
&lt;strong&gt;How green is the monitoring and how common are false alerts?&lt;/strong&gt;
&lt;strong&gt;What is your oncall rota like?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I use these questions to help gain an insight into how high-pressured the
workplace is. If there’s always something breaking and it needs to be fixed
immediately, then the chance of burn out increases and staff churn increases.
Plus due to lack of rest (because of gruelling on-call), tired people are at
increased risk of  making mistakes, and this too leads to more outages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s the diversity of the engineering team? (not just that of the company in general)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tech has an appalling reputation for diversity with women, trans people and
non-white people woefully under represented. I’ve had some very lazy answers to
this question when asking it but the best answer I received was supplemented
with activities that the company is undertaking to combat the disparity. That’s
the place I accepted the offer from almost 7 years ago, and the place I still
work at today. [Edit in 2024: I no longer work at this place]&lt;/p&gt;

&lt;p&gt;I’d be curious to know whether you have any of your own questions of this kind.
I’m particularly interested on hearing from people who work in tech-adjacent or
even unrelated fields.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;due to working conditions, pay, lack of progression, or whatever else &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I’m not claiming to be an expert in all of them! &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 09 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/09/how-to-interview-a-company.html</link>
        <guid isPermaLink="true">/2021/12/09/how-to-interview-a-company.html</guid>
        
        <category>work</category>
        
        
      </item>
      
    
    
      <item>
        <title>Invisible characters</title>
        <description>&lt;p&gt;A few days ago I wrote about &lt;a href=&quot;https://www.peperell.com/2021/12/04/debugging-without-logs.html&quot;&gt;an issue which was particularly tricky to
debug&lt;/a&gt;.  Here’s
another such story from a few months ago.&lt;/p&gt;

&lt;h2 id=&quot;context&quot;&gt;Context&lt;/h2&gt;

&lt;p&gt;At this client, we support the websites used by members of the public when
applying for or renewing passports online, along with the associated
applications, systems, and third-party providers needed for these.&lt;/p&gt;

&lt;h2 id=&quot;problem&quot;&gt;Problem&lt;/h2&gt;

&lt;p&gt;A specific customer’s passport application was being rejected (due to failure
of automated validation checks) and appeared in one of our error queues with
the message notifying us that the phone number was missing. We’re used to that;
it happens once in a while. The engineer working on the problem asked the
customer service team to obtain the applicant’s phone number, and then manually
updated the record by copying and pasting it from the email containing it
received from the customer service team.&lt;/p&gt;

&lt;p&gt;The engineer then, as was established procedure for amending records in this way,
resubmitted the application from the error queue.  It was again rejected and
landed back in the error queue. This time the message notified us that the
phone number was invalid.&lt;/p&gt;

&lt;p&gt;An initial visual inspection showed nothing out of the ordinary.&lt;/p&gt;

&lt;h2 id=&quot;investigation&quot;&gt;Investigation&lt;/h2&gt;

&lt;p&gt;After performing basic investigation (i.e. a visual inspection of the
phone number), our team’s next port of call is typically the application
developers.  They confirmed to us that there is a regular expression on the
front end when users make applications in order to prevent mal-formed phone
numbers from being introduced.&lt;/p&gt;

&lt;p&gt;At this point, the engineer sought advice from a senior engineer - and this is
where I joined the investigation.&lt;/p&gt;

&lt;p&gt;Inspecting visually (i.e. not using the website) I again confirmed that the
phone number matched the regular expression. A second set of eyes helps, plus
performing these checks helps the senior engineer to get up to speed with the
details of the problem.&lt;/p&gt;

&lt;p&gt;I then clarified the origin of the phone number and realised that it never came
from the website (being instead entered manually), and formed the conclusion
that the website regular expression would never play a role.  It was at this
point I suspected Unicode – somewhere between luck and suspicion borne from
experience.&lt;/p&gt;

&lt;p&gt;To prove or disprove this hypothesis, I then used the tool &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hexdump&lt;/code&gt; (with the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-C&lt;/code&gt; option) to view the byte-level representation of the number.  My
expectation was that all bytes would be in the hex range 30-39 (digits
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0&lt;/code&gt;-&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;9&lt;/code&gt;), or 2b (a plus, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+&lt;/code&gt;, for international numbers), and 20 (a space).
Instead we saw&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;echo +6421333333​ | hexdump -C
00000000  2b 36 34 32 31 33 33 33  33 33 33 e2 80 8b 0a     |+6421333333....|
0000000f

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;(number masked for privacy reasons)&lt;/p&gt;

&lt;p&gt;So there’s a stray character. It would be a simple matter of deleting the
erroneous character and re-amending the record, but having gone this far it’s
both prudent and intellectually/forensically interesting to identify the nature
of the malformation.&lt;/p&gt;

&lt;p&gt;My initial interpretation was &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;808b&lt;/code&gt;, which is an invalid byte sequence in
&lt;a href=&quot;https://en.wikipedia.org/wiki/UTF-8&quot;&gt;UTF-8&lt;/a&gt; encoding.  After a bit of circling
around I then noticed I’d missed a byte out and the full value was &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;e2808b&lt;/code&gt;. A
quick websearch for this sequence identified this as being a zero-width space
character.&lt;/p&gt;

&lt;p&gt;Conclusion - this was indeed a funky Unicode character.&lt;/p&gt;

&lt;h2 id=&quot;summary-of-findings&quot;&gt;Summary of findings&lt;/h2&gt;

&lt;p&gt;The format of the phone number was mangled in a way invisible to the eye: it
contained a Unicode character, specifically a zero-width space. This
was brought along when the phone number was copy&amp;amp;pasted from the original email
from the customer service team.  To be clear: this is no fault of the original
engineer, nor of the customer service team who sent us the document in this
format.  It’s an artifact of how office-based text editors such as Word
sometimes present text, and end users should not be expected to know about this
behaviour.&lt;/p&gt;

&lt;h2 id=&quot;recommended-actions&quot;&gt;Recommended actions&lt;/h2&gt;

&lt;p&gt;I forget the reason why there was a missing phone number despite the website
having validation. Perhaps the validation had only recently been added. That
detail isn’t important to the story but I felt I should cover it here in case
anyone wonders. But with that validation in place, no further application
updates are needed because the issue should not occur again.&lt;/p&gt;

&lt;p&gt;Manual updates to records are rare; we see approximately 2 a month. We already
perform input validation in the form of a regular expression when we get the
phone number directly from the user via the website. The receiving systems to
which we send applications (e.g. for identity checking or for referee
validation) also have error detection - this being the reason that periodically
requests end up in the error queue for manual investigation. The effort
required to make an application change to detect these and give a more specific
error is probably not counteracted with the amount of time it would save, based
on this low occurence rate.&lt;/p&gt;

&lt;p&gt;There might be some merit in teaching the application support team about some
likely culprits when Unicode extended characters cause problems. (&lt;a href=&quot;https://en.wikipedia.org/wiki/Non-breaking_space&quot;&gt;Non-breaking
spaces&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Quotation_marks_in_English&quot;&gt;smart
quotes&lt;/a&gt; also being
occasionally encountered)&lt;/p&gt;

&lt;p&gt;One could make the suggestion of typing the number by hand rather than risk
introducing formatting errors such as this, but the risk of introducing a
typographical, transpositional or some other error is far too great.&lt;/p&gt;

&lt;h2 id=&quot;addendum-but-what-is-a-zero-width-space&quot;&gt;Addendum: But what is a zero-width space?&lt;/h2&gt;

&lt;p&gt;It’s a way to indicate that a line-break may appear at a given point in a chunk
of text, but that if the column of text is sufficiently wide that the line
break is not necessary.&lt;/p&gt;

&lt;p&gt;To demonstrate the effect, in this paragraph of text I’ve writte out numbers in English but separated with ZWSPs. Resize this window by making it narrow to see it in action.&lt;/p&gt;

&lt;blockquote&gt;
One​Two​Three​Four​Five​Six​Seven​Eight​Nine​Ten​Eleven​Twelve​Thirteen​Fourteen​Fifteen​Sixteen​Seventeen​Eighteen​Nineteen​Twenty.
&lt;/blockquote&gt;

&lt;p&gt;It doesn’t make sense to have linebreaks in a phone number, but the document
that was sent to us was a text document, and the text editor used (Word, I
think) doesn’t know what it means to be a phone number, so it didn’t know not
to add one. ZWSPs are invisible to the naked eye, on screen, and when printed
so it only matters in very subtle cases such as this – far too nuanced for
something like Word to care about having intelligent heurestics to make the
determination of whether to add one or not!&lt;/p&gt;

</description>
        <pubDate>Wed, 08 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/08/invisible-characters.html</link>
        <guid isPermaLink="true">/2021/12/08/invisible-characters.html</guid>
        
        <category>tech</category>
        
        <category>fault-finding</category>
        
        
      </item>
      
    
    
      <item>
        <title>Something old, something new</title>
        <description>&lt;p&gt;Don’t name things &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;new&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;old&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;Systems are replaced in IT often (though perhaps not as often as we might
sometimes like or that they deserve!).  Some of the time, these old and new
systems will co-exist.  Given enough time, such a system might even be replaced
a second time, maybe with some of the same staff members present and even &lt;em&gt;by&lt;/em&gt;
the same staff members.&lt;/p&gt;

&lt;p&gt;When in the middle of such a transition, how can the old and new systems&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; be
distinguished?&lt;/p&gt;

&lt;p&gt;The example I’ll focus on here is a print spooler but it need not be limited to
that.&lt;/p&gt;

&lt;p&gt;A separate name might well be needed if someone consuming these print services
(or whatever) cannot automatically select the correct destination.  Calling the
print queue &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printserver&lt;/code&gt; makes sense. But when replacing it, giving the new
system the name &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;newprintserver&lt;/code&gt; though in the short term it allows the two to
be distinguished, will eventually lead to confusion once the old one gets
removed.&lt;/p&gt;

&lt;p&gt;Let’s assume for the moment that the name &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;newprintserver&lt;/code&gt; has been decided
upon, and that it’s sufficiently far in the future that the old one has been
removed. Will the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;newprintserver&lt;/code&gt; system be renamed?  If so then this can
cause another series of disruption whilst configuration is updated.&lt;/p&gt;

&lt;p&gt;Maybe it won’t be renamed from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;newprintserver&lt;/code&gt; once the old system has been
removed, but this has a couple of drawbacks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;newcomers(!) joining the organisation might wonder whether the old one is
still in service (for example as a backup) or maybe even that the new one is
still in a trial period and therefore not ready for full use&lt;/li&gt;
  &lt;li&gt;What happens when the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;newprintserver&lt;/code&gt; system is itself replaced? Will the
next one be called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;newnewprintserver&lt;/code&gt;? This is hyperbole, I admit, but
hopefully this makes the point.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The other approach is to use the name &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printserver&lt;/code&gt; for the new one and to
rename the old one to be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;oldprintserver&lt;/code&gt;. Because when new systems are
introduced they often have teething problems, it’s usually the case that the
two systems co-exist. But by using the prefix &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;old-&lt;/code&gt; might make people think
it’s already due to be phased out and is deprecated. But it also causes
problems because in the event of the new system not yet fully working, people
are guaranteed to have to make a configuration change to go back to the
original printer which they knew to be working.&lt;/p&gt;

&lt;p&gt;With the goal being to migrate people onto the new system, this is perhaps the
least disruptive version of the previous scenerio, but still might result in
the double renaming if there are teething problems with the new system which
necessitates people to use the old one for a while.&lt;/p&gt;

&lt;p&gt;Better to have the one rename, and to do so once it’s been proven. As much as
one tries to perform testing before launching a new service, some things will
be missed. But you can help to cut down on this impact by inviting a few users
to be beta testers, perhaps who promise to be flexible and who can give you
useful feedback and are willing to help diagnose issues.&lt;/p&gt;

&lt;p&gt;Aside from system replacement, having a few users with whom you have a such a
good relationship will make easier your life as a person who provides services
to end users.&lt;/p&gt;

&lt;h2 id=&quot;tldr&quot;&gt;tl;dr&lt;/h2&gt;

&lt;p&gt;Don’t name things &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;new&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;old&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But what name to use? Cute names might be fun, but they are also opaque. So
names such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;marypoppins&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hyperion&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;saturn&lt;/code&gt; are best avoided.
Descriptive names are better.  So when replacing a system called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printserver&lt;/code&gt;
use a name such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printer&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;printspooler&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Note that I’m making a distinction here between &lt;em&gt;systems&lt;/em&gt; and &lt;em&gt;machines&lt;/em&gt;.  Naming of machines is a different debate, some of which falls under the &lt;a href=&quot;https://devops.stackexchange.com/questions/653/what-is-the-definition-of-cattle-not-pets&quot;&gt;“cattle vs pets” mentality&lt;/a&gt; although as a side note I will admit to not entirely liking that nomenclature.  Sometimes a service is provided by a single machine in which case there will be an overlap, but in general for this article I’m focussing on the naming of systems. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Tue, 07 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/07/something-old-something-new.html</link>
        <guid isPermaLink="true">/2021/12/07/something-old-something-new.html</guid>
        
        <category>tech</category>
        
        <category>standards</category>
        
        
      </item>
      
    
    
      <item>
        <title>No agenda, no attenda</title>
        <description>&lt;p&gt;Meetings are a necessary part of pretty much any office-based job. (I’ve only
minimal experience in other work sectors so cannot meaningfully comment on
them).  People often feel both that meetings are unproductive and that they
take time away from work itself getting done. There may be an element of truth
in this but that doesn’t mean that meetings are forgoable.  I say that well-run
meetings can act like a lubricant, helping work to be more effective, that
information can be shared with relevant parties etc. So how can one bridge the
gap between these two viewpoints?&lt;/p&gt;

&lt;p&gt;I’ve come up with a few ideas based on my own observations and from
conversations with colleagues over the decades.&lt;/p&gt;

&lt;h2 id=&quot;have-an-agenda&quot;&gt;Have an agenda&lt;/h2&gt;

&lt;p&gt;How often have you gone to a meeting not knowing what it was about and then
been called to comment on something and felt woefully underprepared? Publishing
an agenda &lt;em&gt;before&lt;/em&gt; the meeting (e.g. in the invitation) allows participants to
prepare.  The other benefit of having an agenda is that it sets a clear
expectation of when the meeting is over. (Otherwise, how do you know when
you’re done?)&lt;/p&gt;

&lt;p&gt;Despite what the title of this article suggests, I’m not recommending to
automatically refuse a meeting if there is no agenda published. Doing so is
likely to make waves in your organisation and sully your reputation. But a
followup request for an agenda prior to the meeting can help to establish the
cultural habit in your company of including an agenda.&lt;/p&gt;

&lt;h2 id=&quot;include-suitable-breaks&quot;&gt;Include suitable breaks&lt;/h2&gt;

&lt;p&gt;Human concentration wanes after an hour, perhaps 90 minutes. This could be
through boredom, maybe they need a coffee/cigarette/toilet break. If your
meeting is longer than this, be sure to include breaks.&lt;/p&gt;

&lt;h2 id=&quot;consider-the-list-of-attendees&quot;&gt;Consider the list of attendees&lt;/h2&gt;

&lt;p&gt;Indicate in the invitation whether attendane is mandatory or recommended. This
may differ on a per invitee basis but it’s still relevant. It might be clear
from the subject and the agenda (you &lt;em&gt;are&lt;/em&gt; including one, right‽) but you can’t
always rely on this; new starters within the organisation might not have the
cultural knowledge to make this determination. They could, for example, attend
everything thinking it necessary or perhaps useful to help them gain
organisational knowledge, or they could do the opposite and deselect themselves
due to thinking them too new to be able to contribute.&lt;/p&gt;

&lt;p&gt;Make sure, also, that you are including relevant people, and not including
people who don’t need to be there. For example, imagine that a team believes
the company needs to purchase some software. A person in chgarge of signing off
expenses would likely need to be present.  But one of the graphics design team
is unlikely to be needed in a meeting to decide whether to renew the contract
with the office cleaning company. These are extreme example, sure, but even
within teams there can be meetings which require some but not all members.&lt;/p&gt;

&lt;h2 id=&quot;publish-a-summary&quot;&gt;Publish a summary&lt;/h2&gt;

&lt;p&gt;Some people might have missed the meeting - either due to being in another
meeting(!), declining due to other duties, or perhaps being on holiday or
absent due to illness.  Publishing a summary of decisions made and agreed
actions along with task owners and due dates can help to set expections.&lt;/p&gt;

&lt;p&gt;The recipients of this summary should be the original invitees plus any
additional people who took part.  The benefit of including the original
invitees rather than just the attendees is that it benefits those who missed
the meeting, regardless of reason.&lt;/p&gt;

&lt;h2 id=&quot;try-to-avoid-lunch-times&quot;&gt;Try to avoid lunch times&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&quot;I&apos;ve booked a lunch time meeting because that&apos;s the only time people were
free&quot;.&lt;/p&gt;
&lt;p&gt;&quot;Yes, that&apos;s &lt;em&gt;why&lt;/em&gt; I was free&quot;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Really, try to avoid booking meetings which occur during lunch time.  Though
this isn’t always possible, people need to eat lunch in order to be able to
concentrate. If you’re going to book a lunch time meeting then provide food.&lt;/p&gt;

&lt;h2 id=&quot;have-suitable-padding&quot;&gt;Have suitable padding&lt;/h2&gt;

&lt;p&gt;In this context, by the word padding, I mean times between the other meetings
of the attendees.  If one meeting ends at 1000, this doesn’t mean that
attendees will be free at 1000 and that your meeting can start at that time.
What if the previous meeting overruns? Although on this note, it’s also rude to
the next group who might use that meeting room if you’re not out at the time
when their meeting is due to start. By finishing on time, people don’t have to
leave early plus this gives time to tidy up the room, re-arrange any chairs,
and let the air circulate.  (It’s unpleasant to go into a meeting room still
with the aroma of the previous users)&lt;/p&gt;

&lt;p&gt;How much padding to add? A suitable padding is in the order of 5-10 minutes
before the half-hour mark, depending on how long the metting is.  Possibilities
include 1000–1050 and 1330–1355, instead of 1000–1100 and 1300–1400. This
gives opportunity for the aforementioned room-reset.&lt;/p&gt;

&lt;p&gt;Providing gaps between meetings also allows people to get a coffee or visit the
toilet rather than having to join their next meeting late.&lt;/p&gt;

&lt;h2 id=&quot;finishing-thoughts&quot;&gt;Finishing thoughts&lt;/h2&gt;

&lt;p&gt;I’m trying hard not to come across as misanthropic in this post. I’ve been to
well-run meetings, and I’ve been to poorly run meetings. I know which I’d
rather go to. It is hopefully clear that having attendees be engaged is much
more useful than having ones who are not, and having a reputation of running
effective meetings will serve you well professionally.&lt;/p&gt;

&lt;p&gt;I’d welcome input of any additional ideas you might have.&lt;/p&gt;
</description>
        <pubDate>Mon, 06 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/06/no-agenda-no-attenda.html</link>
        <guid isPermaLink="true">/2021/12/06/no-agenda-no-attenda.html</guid>
        
        <category>work</category>
        
        
      </item>
      
    
    
      <item>
        <title>Adventures with puzzle websites</title>
        <description>&lt;p&gt;I’ve been writing code for a very long time.  I like to think I’m good at it,
but know also that I can be better.  My current job, as much as I enjoy it, has
limited scope for writing software; it’s typically limited to writing
&lt;a href=&quot;https://en.wikipedia.org/wiki/Infrastructure_as_code&quot;&gt;Infrastructure as Code&lt;/a&gt;
which is close, but not entirely the same.&lt;/p&gt;

&lt;p&gt;To scratch that itch, and keep skills honed, I like to make use of puzzle
websites. These are websites which contain a series of challenges. Typically
they start off simple and get more complex but this isn’t necessarily the case.
Those that do, are good for people learning a language because simpler problems
will likely use less complex code constructs, but they also provide the
opportunity to challenge more seasoned developers.&lt;/p&gt;

&lt;p&gt;Once in a while I’ll use one of these sites to experiment with a language other
than the one(s) I use most regularly at the time; those at present being Ruby
and Python. I like to compare the type of approach that one uses in one
language with that which would be used in another.  Sometimes I find that my
use of one language will even impact how I write another. (This happens to me
in spoken languages too.)&lt;/p&gt;

&lt;p&gt;These puzzle websites usually have a discussion forum which is hidden from
view until a puzzle has been solved. I have found this wonderfully instructive
because there have been occasions where I’ve solved the problem in a convoluted
way but read some of the solutions submitted by others and can then learn
something.&lt;/p&gt;

&lt;p&gt;Here are some of the puzzle websites I’ve encountered&lt;/p&gt;

&lt;h3 id=&quot;project-euler&quot;&gt;&lt;a href=&quot;https://projecteuler.net/&quot;&gt;Project Euler&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I think this is the first puzzle-based website I started using with any
regularity or perseverance.  I discovered this website in 2008 ish. I started
using it to improve my mathematical skills rather than programming, though I do
usually write code to solve them. (There have been a couple I’ve solved by hand
with pen and paper)&lt;/p&gt;

&lt;p&gt;This website doesn’t take code as a submission; instead it asks for the answer
which is almost always a number but is occasionally a word or series of letters.&lt;/p&gt;

&lt;p&gt;As much as I enjoy maths, I’m finding the limits of my mathematical ability.
The later ones are well beyond my reach but there’s lots left of the early ones
for me to solve still.  I’ve completed 114 out of 775.&lt;/p&gt;

&lt;p&gt;A new puzzle is published approximately every week. It’s suggested on the site,
but I repeat it here for the sake of this article: Don’t try for a &lt;a href=&quot;https://en.wikipedia.org/wiki/Proof_by_exhaustion&quot;&gt;brute-force
approach&lt;/a&gt;, It may work for
the early puzzles, but it definitely won’t for the later ones.&lt;/p&gt;

&lt;h3 id=&quot;shellydev&quot;&gt;&lt;a href=&quot;https://shelly.dev/&quot;&gt;shelly.dev&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I discovered this one only a couple of months ago.  The goal for this website
is to draw shapes in as few moves as possible using a dialect of
&lt;a href=&quot;https://en.wikipedia.org/wiki/Logo_(programming_language)&quot;&gt;Logo&lt;/a&gt;.  There are
33 puzzles (at the time of writing) but there’s a sandbox so you can have a
play with the language too.&lt;/p&gt;

&lt;p&gt;I don’t use Logo as part of my job but I have feelings of nostalgia towards the
language because it’s one of the earliest languages I used. I first encountered
Logo in the 80s at school on the &lt;a href=&quot;https://en.wikipedia.org/wiki/BBC_Micro&quot;&gt;BBC
Micro&lt;/a&gt; (through which I also learned
&lt;a href=&quot;https://en.wikipedia.org/wiki/BASIC&quot;&gt;BASIC&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;With this website you can also create your own challanges and offer them to
other site participants.&lt;/p&gt;

&lt;p&gt;Solutions are not shared even once solved, but the website does have a
recommended number of steps with which to solve each puzzle and awards a bonus
if your solution uses fewer steps than this recommendation.&lt;/p&gt;

&lt;h3 id=&quot;microcorruptioncom&quot;&gt;&lt;a href=&quot;https://microcorruption.com&quot;&gt;microcorruption.com&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;The theme for this website is an electronic lock. The challenges take the form
of using carefully constructed usernames and passwords to cause the lock to
open without knowing the genuine credentials. The firmware to the locks is made
available, and is written in machine code for the &lt;a href=&quot;https://en.wikipedia.org/wiki/TI_MSP430&quot;&gt;MSP430
processor&lt;/a&gt;.  I’d not encountered this
processor before discovering this website.  My experiences with processors thus
far has been limted to &lt;a href=&quot;https://en.wikipedia.org/wiki/ARM_architecture&quot;&gt;ARM&lt;/a&gt;,
&lt;a href=&quot;https://en.wikipedia.org/wiki/MOS_Technology_6502&quot;&gt;6502&lt;/a&gt;,
&lt;a href=&quot;https://en.wikipedia.org/wiki/Motorola_68000&quot;&gt;68000&lt;/a&gt;,
&lt;a href=&quot;https://en.wikipedia.org/wiki/Zilog_Z80&quot;&gt;Z80&lt;/a&gt; and
&lt;a href=&quot;https://en.wikipedia.org/wiki/MIPS_architecture&quot;&gt;MIPS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don’t do much electronics these days, but this website is a fun way to keep a
toe in the water.&lt;/p&gt;

&lt;p&gt;No user-contributed challanges and no sharing of solutions. But definitely one
of my favourites.&lt;/p&gt;

&lt;h3 id=&quot;codewars&quot;&gt;&lt;a href=&quot;https://www.codewars.com/dashboard&quot;&gt;CodeWars&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;This is a very comprehensive site.  It has a series of challenges in lots of
different languages and as a participant in the site you can chose in which
languages you’d like to see the puzzles.&lt;/p&gt;

&lt;p&gt;The challenges take the for of a text description and a series of automated
tests (written in code). Your goal is to write code to get these tests to pass
and then your submission will be subjected to further more rigorous testing.&lt;/p&gt;

&lt;p&gt;User contributed puzzles are welcomed; indeed this is how the site thrives. You
can see other people’s submissions and compare them to yours. On this site in
particular, I am frequently impressed by the variety of approaches that people
take compared to my own.&lt;/p&gt;

&lt;h3 id=&quot;postgresql-exercises&quot;&gt;&lt;a href=&quot;https://pgexercises.com/&quot;&gt;PostgreSQL Exercises&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I’ve only had a small play with this one. But it is a good place to practice
&lt;a href=&quot;https://en.wikipedia.org/wiki/SQL&quot;&gt;SQL&lt;/a&gt; skills. It shows sample tables (both
structure and their content) and then shows what data the site wishes to be
extracted. The challenge is to write the SQL query to retrieve this data.&lt;/p&gt;

&lt;p&gt;SQL has dialectal variations between different DBMSs but this site is focussed
on &lt;a href=&quot;https://en.wikipedia.org/wiki/PostgreSQL&quot;&gt;Postgres&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;adventofcode&quot;&gt;&lt;a href=&quot;https://adventofcode.com/&quot;&gt;AdventOfCode&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Topical for this time of year! This website has two closely-related puzzles per
day for the first 25 days of December, and has been running every year since
2015.&lt;/p&gt;

&lt;p&gt;The challenges are usually based around text manipulation though there are a
few algorithmic related ones, and the &lt;a href=&quot;https://adventofcode.com/2019/&quot;&gt;puzzles from year
2019&lt;/a&gt; featured several in which an emulator for
a fictitious CPU is developed.&lt;/p&gt;

&lt;p&gt;As well as a site-wide league table, this website allows you to create a league
table amongst a group of friends/colleagues.&lt;/p&gt;

&lt;h2 id=&quot;odd-and-ends&quot;&gt;Odd and ends&lt;/h2&gt;

&lt;p&gt;There was also a couple of puzzle sites written in
&lt;a href=&quot;https://www.lightbot.com/&quot;&gt;Flash&lt;/a&gt; that I used to play 10-ish years ago. But
with Flash having discontinued in 2020 they are no longer
available in their original forms.&lt;/p&gt;

&lt;p&gt;The first one I’m thinking of is Lightbot, in which one pilots a robot around a
tiled arena trying to light up certain squares. It’s a bit like Logo. This game
is now available as a &lt;a href=&quot;https://www.lightbot.com/&quot;&gt;mobile game (still called
&lt;em&gt;Lightbot&lt;/em&gt;)&lt;/a&gt; though I’ve never tried it in this form.&lt;/p&gt;

&lt;p&gt;The second Flash game was called Manufactoria. The game play for this was a
&lt;a href=&quot;https://en.wikipedia.org/wiki/Finite-state_machine&quot;&gt;finite-state machine&lt;/a&gt;,
which was run by a robot which would run around an arena containing directional
conveyor belts bridges etc, and the goal was to turn one input pattern into
another, or to accept/reject certain input patterns based on criteria specific
to the puzzle.&lt;/p&gt;

&lt;p&gt;There’s also the website &lt;a href=&quot;https://exercism.org/&quot;&gt;exercism&lt;/a&gt; which I discovered
whilst writing this article, though I’ve never used it. At first glance, it
looks a bit like CodeWars so is good if you wish to work on several languages.&lt;/p&gt;

&lt;p&gt;Finally, there’s a collection of links in &lt;a href=&quot;https://www.reddit.com/r/adventofcode/comments/lxlizg/is_there_anything_like_advent_of_code_but/&quot;&gt;this Reddit
thread&lt;/a&gt;.
Some of them are mentioned here, but I’ve not checkout out all of them.&lt;/p&gt;

&lt;h2 id=&quot;closing-notes&quot;&gt;Closing notes&lt;/h2&gt;

&lt;p&gt;As part of my job, I occasionally run training courses in Python. I usually
suggest this sort of website to give ideas and practice drills to students for
content after the course.&lt;/p&gt;

&lt;p&gt;Do you know of any others? Do you &lt;em&gt;run&lt;/em&gt; one, even? (Are you involved with ones
of the sites I’ve mentioned? Please say hello if so)&lt;/p&gt;

</description>
        <pubDate>Sun, 05 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/05/puzzle-websites.html</link>
        <guid isPermaLink="true">/2021/12/05/puzzle-websites.html</guid>
        
        
      </item>
      
    
    
      <item>
        <title>The difficulty of debugging without logs</title>
        <description>&lt;p&gt;According to a colleague I mentored around 10 years ago, “What do the logs
say?” is one of my mantras. I guess that’s fair. It probably still applies now.
[Current colleagues, feel free to pass comment!] Logs are designed to be a
useful source of diagnostic information and they’re often the first thing I
check, after any message immediately output in stderr or stdout.&lt;/p&gt;

&lt;p&gt;But what happens when logs don’t contain useful info? This story covers the
investigation I took when trying to track down the cause of a problem at a previous client.&lt;/p&gt;

&lt;h2 id=&quot;context&quot;&gt;Context&lt;/h2&gt;

&lt;p&gt;One of the functions my employer provides at this client is the building of
Ubuntu laptops used by developers and civil servants. This is not at the
hardware level; we use a hardware reseller for that. Rather, we perform software installation/updates and
machine hardening such that they are allowed on production networks and to
access customer data.&lt;/p&gt;

&lt;p&gt;The build environment takes the form of a network segregated from the main one
used by workstations on a day-to-day basis. We’d relax the boot options of
laptops to permit a network build, peform that network build, and than
re-restrict the boot options to prevent unauthorised boot media from being
used.  The build server has several components, the primary ones being: DHCP,
TFTP, Cobbler, and Apache.&lt;/p&gt;

&lt;h2 id=&quot;the-problem&quot;&gt;The problem&lt;/h2&gt;

&lt;p&gt;I had updated the build server with a newer kernel. But attempting to boot from
this newer kernel image was unsuccessful.  Normally the visible effect on the
laptop that was being built was a series of dots, which act as a progress bar,
except that there was no completion figure given; instead it would uncompress
and execute the kernal. (I think it’s probably 1 dot per kilobyte, but that
detail isn’t important). The effect when using this problematic boot menu
option is that no progress dots were shown.&lt;/p&gt;

&lt;p&gt;Previous boot menu options remained working.&lt;/p&gt;

&lt;h2 id=&quot;investigation-and-findings&quot;&gt;Investigation and findings&lt;/h2&gt;

&lt;p&gt;Checking the system logs on the boot sever showed that of the two files
required for each of our boot menu options, for this problematic menu option
only the first file was being requested by TFTP. Other boot menu options
continued to work unimpeded.  We knew that the network cabling was functional
and correct because the to-be-built machine was able to perform the network
boot to acquire an IP address and load the menu of available options.&lt;/p&gt;

&lt;p&gt;A &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tcpdump&lt;/code&gt; showed the TFTP request coming in and (at least a partial) response
going out.  On the cobbler server, an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;md5sum&lt;/code&gt; comparison between the new image
and an older one showed that the kernels were identical, and that the initial
ramdisk images were also identical. We could see the first file being requested
(for the problematic option) via TFTP in the logs but two things stood out: one
that the response was short (and there was no followup traffic), and two, that
the second file was not requested.&lt;/p&gt;

&lt;p&gt;Eventually I had the idea to run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tcpdump&lt;/code&gt; in verbose mode and then debugged
the individual bytes in the response. It was here I determined that the short
response was a denial. (There was no easy way to get the client to log more
verbosely because it was still in the pre-execution phase; no OS had yet been
started by the client).  I then looked more closely at the file on the boot
server and found that root was the owner and the filemode was 0640. The TFTP
service ran as a different user (I think &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nobody&lt;/code&gt;).&lt;/p&gt;

&lt;h2 id=&quot;summary-of-cause-along-with-highlighted-suggestions-for-improvements&quot;&gt;Summary of cause, along with highlighted suggestions for improvements&lt;/h2&gt;

&lt;p&gt;The kernel (and initial ramdisk) images had been given too restrictive
permissions. Relaxing the file mode to 644 was enough to resolve the problem.&lt;/p&gt;

&lt;p&gt;The “simple” diagnostic approach would have been to run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tftpd&lt;/code&gt; in verbose
mode, to make it be more chatty about permission errors. But there’s also the
so-called principe of least surprise: one would normally expect an application
to log when it cannot fullfil a request, at the default log level. Apache and
nginx do, for example. The “complex” answer would be to submit a patch to tftp
such that it logs inability to accede a request at the base log level. This
approach also requires that patch to be accepted which may or may not be a
simple battle, depending on the software in question.&lt;/p&gt;
</description>
        <pubDate>Sat, 04 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/04/debugging-without-logs.html</link>
        <guid isPermaLink="true">/2021/12/04/debugging-without-logs.html</guid>
        
        <category>tech</category>
        
        <category>fault-finding</category>
        
        
      </item>
      
    
    
      <item>
        <title>How do I write good code?</title>
        <description>&lt;p&gt;“How do I write good code?” was a question put to me by one of my direct
reports a little over a year ago, in one of their one-to-ones. I was able to
give a brief answer, but the question has been ticking over in my mind. A  few
days ago I launched this blog, and so I thought it would be a good opportunity
to put some of those digested thoughts into written form.&lt;/p&gt;

&lt;p&gt;There isn’t a simple answer this question, but it is still answerable. To get
closer to an answer, we need to take into account a number of factors.  We can
do this by first seeking clarification: What do we mean by good? We can assess
code on several fronts: ease of maintenance, speed, bugs and error-handling,
and comprehensiveness. Let’s look at these in turn.&lt;/p&gt;

&lt;h2 id=&quot;ease-of-maintenance&quot;&gt;Ease of maintenance&lt;/h2&gt;

&lt;p&gt;Sometimes code is written once, to be thrown away. More often - the vast
majority of the time, even - code is preserved to be run again repeatedly.&lt;/p&gt;

&lt;p&gt;As business needs change, such code will need to be modified. Consequentially,
it’s usually the case that more time is spent reading code than actively
writing or changing it. Therefore it is better to have code that is easy to
understand than it is to have code which uses quirky or obscure behaviour.
Although such tricks are sometimes necessary, for example they might be faster;
see the section on &lt;em&gt;Speed&lt;/em&gt; below.&lt;/p&gt;

&lt;h2 id=&quot;speed&quot;&gt;Speed&lt;/h2&gt;

&lt;p&gt;Code doesn’t always have to run quickly. Is this a one-off process or will it
be repeated? Will there be a human waiting for the code to complete or will the
code run unattended.  Imagine a scenario when a monthly mailshot is sent out
and that this script takes 60 minutes to run. If it needs to be launched
manually, and runs locally on someone’s machine, then that person can’t shut
their machine down whilst the script is running. But if it completes in 60
seconds then this is less of an imposition. Better would be for such a regular
task to be on dedicated infrastructure, though this is perhaps a separate
factor from that of speed. But returning to the issue of ‘dead time’: if a
script takes 5 minutes then that’s a useful amount of time: one can make a
coffee, go to the loo, etc. But 30 minutes is an awkward amount of time because
it’s too short to work on anything else, because that task would need to be
interrupted to resume the task being done that necessitated the script in the
first place (the mailshot, in this example).&lt;/p&gt;

&lt;p&gt;Let’s take another example. Imagine a website - perhaps it’s an online retail
website. Numerous studies indicate that visitors will abandon a website if it
is slow to respond. So there’s a financial and reputation impact to the
organisation to have performant software.&lt;/p&gt;

&lt;h2 id=&quot;bugs&quot;&gt;Bugs&lt;/h2&gt;

&lt;p&gt;Except perhaps in &lt;a href=&quot;http://underhanded-c.org/&quot;&gt;subversive contexts&lt;/a&gt; it is rare
to intentionally add bugs to code. It’s generally agreed that once identified
bugs should ideally be fixed, and if not immediately fixable then the bug
should be recorded in a tracker, somewhere central, and ideally also linked to
the code repository such that future people making use of the code can find the
list of defects easily.&lt;/p&gt;

&lt;p&gt;Whether a bug is high or low priority depends on its severity and/or impact,
and how often it comes up.&lt;/p&gt;

&lt;p&gt;A bug with minimal fallout that doesn’t happen very often (e.g. “This script
does not work on any leap day”) might easily be postponed if it is non-trivial
to fix. But a bug such as “The payment processor will abort the entire batch if
any of the recipients have an apostrophe (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&apos;&lt;/code&gt;) or hyphen (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-&lt;/code&gt;) in their
name&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; is much more critical and would likely need to be prioritised.&lt;/p&gt;

&lt;h2 id=&quot;error-handling-and-reporting&quot;&gt;Error handling and reporting&lt;/h2&gt;

&lt;p&gt;This is closely related to the &lt;em&gt;Bugs&lt;/em&gt; section but it’s worthwhile discussing separately.
Let’s take the previous example of hyphenated names. It could be that the whole
batch fails with a cryptic error “Batch failed”. Or it could be that the whole
batch fails with a more useful error “Record 437 failed due to unrecognised
character in name &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Malcolm Wynn-Jones&lt;/code&gt;”&lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;. Hopefully it’s clear why this kind
of error is preferable.&lt;/p&gt;

&lt;p&gt;Another kind of failure mode would be for the other records in the batch could
succeed and solely this problematic record go into a queue for human attention,
for manual processing. This is, perhaps, the preferable result, so long as the
fact that there are problematic records is somehow made known, rather than them
falling silently into the void.&lt;/p&gt;

&lt;p&gt;A truly awful outcome, which would leave a lot of manual cleanup, would be if
in the event of a hyphenated name aborting the batch processor, the records up
to the problematic record were correctly processed and furthermore that the
error reported be the less useful “Batch failed”. Why? Because the natural
response (to someone who doesn’t know this script’s cursed behaviour) would be
to run the entire batch again – because they have no indication that some of
them did, in fact, succeed. This would lead to load of double payments.
Problems such as this can be mitigated with staff training, sure, but people
will always leave and join so it’s better to have error messages be as useful
as possible. Plus in the event of a rare error, the specifics of a given
script’s foibles are easily forgotten so having the error message be
descriptive is a good thing.&lt;/p&gt;

&lt;h2 id=&quot;comprehensiveness&quot;&gt;Comprehensiveness&lt;/h2&gt;

&lt;p&gt;Imagine a process with 5 steps. Does this script do all 5 steps, or does it do
the first 3 and still leave the final 2 to be done by hand? It might be the
case that the script is new and hasn’t been finished.&lt;/p&gt;

&lt;p&gt;But the downside of a script not being complete is that it’s much more likely
for a step to be omitted or carried out wrongly. This risk diminishes (well,
bugs notwithstanding) if the script covers all steps.&lt;/p&gt;

&lt;p&gt;In the absence of a script automating all of the required steps, a useful
safety net is to have a document with a well defined procedure, including a
checklist. Designing a checklist is itself an art; NASA have even conducted
researched into the &lt;a href=&quot;https://ti.arc.nasa.gov/m/profile/adegani/Flight-Deck_Checklists.pdf&quot;&gt;human factors of what makes a good (or in their words
“normal”) checklist&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;closing-notes&quot;&gt;Closing notes&lt;/h2&gt;

&lt;p&gt;A thousand or so words is more than I was expecting to write! Writing
&lt;em&gt;perfect&lt;/em&gt; code is almost impossible to achieve. Writing &lt;em&gt;good&lt;/em&gt; code? Sure,
that’s doable.  But first let’s decide on what we mean by “Good”.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;There is a excellent article which expands further on this topic: https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This is a character’s name from the BBC Series &lt;em&gt;Spooks&lt;/em&gt;. That was a fantastic series, worth a watch if you enjoy BBC Drama/Action series. I might buy myself the box set. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 03 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/03/how-do-i-write-good-code.html</link>
        <guid isPermaLink="true">/2021/12/03/how-do-i-write-good-code.html</guid>
        
        <category>development</category>
        
        <category>tech</category>
        
        
      </item>
      
    
    
      <item>
        <title>On recognising people face-to-face vs online</title>
        <description>&lt;p&gt;Like much of those in systems/development and sys/dev-adjacent roles (and many
other industries, for that matter), I’ve been working from home for the vast
majority of the past 2 years. I have only occasionally travelled in to either
the office or to client sites.&lt;/p&gt;

&lt;p&gt;During this time, my employer has grown from 80ish employees to 130ish
employees. Some people I’ve not met in person. And for a long time, this
included my (then) delivery manager. During the summer she ran an in-person
general knowledge quiz and seeing her from afar in the office that day I at
first I didn’t recognise her. It made me think; we take different cues based on
the context in which we encounter people.&lt;/p&gt;

&lt;p&gt;On camera, though people have facial expressions, features such as body
language, build, and height are camouflaged. But in-person we do get these
cues, plus, perhaps a person’s gait.&lt;/p&gt;

&lt;p&gt;I’m reminded also of a time when I still drove and was living in Manchester. I
was driving to a place that I’d only ever walked to, though had done so many
times. On my first time driving there, I missed the turning. Again, this comes
down to the cues. When driving, one tends to think about which lane to be in,
how wide or tight to take a turn, etc. When walking one might notice the house
with a broken fence, the bush that overhangs the pavement, or where the texture
of the pavement changes etc.&lt;/p&gt;

&lt;p&gt;I’m not a sociologist or pyschologist but I’d be interested to read people’s
thoughts on this, and whether any studies or theses have been written on the
topic of context-based cues and recollection. The pandemic has shut down much
of the world (to varying degrees) but it has raised a number of curiosities
such as this.&lt;/p&gt;
</description>
        <pubDate>Thu, 02 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/02/recognising-people-face-to-face-vs-online.html</link>
        <guid isPermaLink="true">/2021/12/02/recognising-people-face-to-face-vs-online.html</guid>
        
        <category>anthropology</category>
        
        
      </item>
      
    
    
      <item>
        <title>Musings on markup of deeply nested tags</title>
        <description>&lt;p&gt;This post started off as a conversation with a &lt;a href=&quot;https://twitter.com/mattsta/&quot;&gt;Twitter
mutual&lt;/a&gt; (also called Matt), in which we lamented
some of the pain-points of HTML and came up with a couple of proto-ideas of
solutions.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/mattsta/status/712640434804297729&quot;&gt;&lt;img src=&quot;/img/2021-12-01-twitter-mattsta.png&quot; alt=&quot;Tweet showing a proposal for an amendment to closing tags in HTML&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Markup, particularly in HTML and its relatives, can often have deeply nested
tags. Sometimes, when writing a closing tag, the hierarchical context of its
opening countpart can be off-screen. This is particularly the case if one of
the tags contains a lot of content.&lt;/p&gt;

&lt;p&gt;Take a look at the following example:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;article&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;nt&quot;&gt;&amp;lt;section&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;introduction&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;nt&quot;&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Introduction&lt;span class=&quot;nt&quot;&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;nt&quot;&gt;&amp;lt;p&amp;gt;&lt;/span&gt;This article demonstrates the use of placeholder text. It
            contains pseudo-latin text which starts with the wording
                &lt;span class=&quot;nt&quot;&gt;&amp;lt;span&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;lang=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;latin&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt; Lorem ipsum dolor sit amet&lt;span class=&quot;nt&quot;&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
            and &lt;span class=&quot;nt&quot;&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This example is short so the off-screen effect does not apply so strongly. But
one of the ideas was to have implicit closing tags, borne out of the idea that
though HTML tags can be nested, they may not overlap. Using this suggestion,
the previous fragment could be represented as:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;article&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;nt&quot;&gt;&amp;lt;section&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;introduction&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;nt&quot;&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Introduction&lt;span class=&quot;nt&quot;&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;nt&quot;&gt;&amp;lt;p&amp;gt;&lt;/span&gt;This article demonstrates the use of placeholder text. It
            contains pseudo-latin text which starts with the wording
                &lt;span class=&quot;nt&quot;&gt;&amp;lt;span&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;lang=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;latin&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt; Lorem ipsum dolor sit amet&lt;span class=&quot;nt&quot;&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
            and
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Notice the absence of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/div&amp;gt;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/body&amp;gt;&lt;/code&gt; tags.  Since the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/html&amp;gt;&lt;/code&gt; tag cannot appear until these previous three tags have themselves be
closed, why not have the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/html&amp;gt;&lt;/code&gt; tag close them implicitly? As I write this,
I’ve come up with an extra idea - that even the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/html&amp;gt;&lt;/code&gt; tag, in this example,
can be omitted if it were to appear at the end of a stream.&lt;/p&gt;

&lt;p&gt;There are a few benefits to this:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;less chance of making a typo in a closing tag’s name,&lt;/li&gt;
  &lt;li&gt;less screen real-estate used,&lt;/li&gt;
  &lt;li&gt;less need to keep track of 100% of context in mental state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s also slightly future-proof; if further opening tags are added then they do
not necessarily need their closing tags to be added.&lt;/p&gt;

&lt;p&gt;A second proposal that we discussed, again based on the non-permisibility of
overlapping tags, is to have closing tags of the following form&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;html&amp;gt;
    &amp;lt;body&amp;gt;
        &amp;lt;div class=&quot;article&quot;&amp;gt;
            &amp;lt;section class=&quot;introduction&quot;&amp;gt;
            &amp;lt;h1&amp;gt;Introduction&amp;lt;/h1&amp;gt;
            &amp;lt;p&amp;gt;This article demonstrates the use of placeholder text. It
            contains pseudo-latin text which starts with the wording
                &amp;lt;span lang=&quot;latin&quot;&amp;gt; Lorem ipsum dolor sit amet&amp;lt;/span&amp;gt;
            and
&amp;lt;////&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;See the 4 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/&lt;/code&gt; symbols? Although the HTML standard requires it, there is no need
for the tag name to appear after the closing symbol. So this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;////&amp;gt;&lt;/code&gt; tag
closes 4 tags. It doesn’t have all of the benefits that the previous idea does,
but it is still lightweight. And a small extension to this idea is to have an
integer count:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;html&amp;gt;
    &amp;lt;body&amp;gt;
        &amp;lt;div class=&quot;article&quot;&amp;gt;
            &amp;lt;section class=&quot;introduction&quot;&amp;gt;
            &amp;lt;h1&amp;gt;Introduction&amp;lt;/h1&amp;gt;
            &amp;lt;p&amp;gt;This article demonstrates the use of placeholder text. It
            contains pseudo-latin text which starts with the wording
                &amp;lt;span lang=&quot;latin&quot;&amp;gt; Lorem ipsum dolor sit amet&amp;lt;/span&amp;gt;
            and
&amp;lt;/4/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note that the number refers to the number of closing tags, not the number of
omitted &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/&lt;/code&gt; symbols. So &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/4/&amp;gt;&lt;/code&gt; means close 4 tags. Labouring the point,
perhaps, but it’s easy to miscount (or mistype) the the number of closings to
be performed by the tag &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/////////////&amp;gt;&lt;/code&gt;? It’s much kinder on the
eyes/fingers/brain to see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/13/&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;With the use of minimisers (such as might be performed by CDNs and other layer
7 technologies), the emphasis presented by use of indentation would be lost,
and so use of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;////&amp;gt;&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;/4/&amp;gt;&lt;/code&gt; forms harder to debug than named closing
tags.&lt;/p&gt;

&lt;p&gt;Neither me-Matt nor &lt;a href=&quot;https://matt.sh/&quot;&gt;other-Matt&lt;/a&gt; are members of the W3C. I’m
also not anywhere near claiming that any of these proposals are ready for
submission or adoption by the W3C, but it’s interesting to muse on what might
be appropriate.&lt;/p&gt;

&lt;p&gt;Perhaps a lighter-weight version of this would be to use a filter or wrapper
language (such as &lt;a href=&quot;https://jinja2docs.readthedocs.io/en/stable/&quot;&gt;jinja2&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Sass_(stylesheet_language)&quot;&gt;SASS&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Less_(stylesheet_language)&quot;&gt;LESS&lt;/a&gt;, or &lt;a href=&quot;https://cheetahtemplate.org/&quot;&gt;Cheetah&lt;/a&gt;) and have the processing be done on the
remote end. This also improves adoption because only servers need updating,
rather than the plethora of browsers, screen readers, etc that exist in the
wild. I’ve not yet written anything that does this, but I’d be interested to
hear your thoughts, and especially if you go so far as to implement a filter.&lt;/p&gt;
</description>
        <pubDate>Wed, 01 Dec 2021 00:00:00 +0000</pubDate>
        <link>/2021/12/01/deeply-nested-tags.html</link>
        <guid isPermaLink="true">/2021/12/01/deeply-nested-tags.html</guid>
        
        <category>tech</category>
        
        <category>standards</category>
        
        
      </item>
      
    
  </channel>
</rss>
