Jekyll2024-01-28T20:52:28+00:00https://wayne.conniptions.org/feed.xmlWayne MyersWayne Myers is a musician, writer and coder based in St Leonards-on-Sea. This is his blog.On Staying Vaguely Sane In A Post-Truth World2024-01-28T00:00:00+00:002024-01-28T00:00:00+00:00https://wayne.conniptions.org/2024/01/28/on-staying-vaguely-sane<p>Or, <em>why I thought the joke in my last comic was actually a bit shit but posted it anyway</em>…</p>
<p>Last night I posted a new cartoon over on comic.conniptions.org featuring <a href="https://comic.conniptions.org/comics/786.html">Rishi Sunak</a>.</p>
<p>I’ve not drawn him before and it’s been a good while since I last drew a political caricature, so I was pleased with how that part of it came out.</p>
<p>But the joke, such as it is, no matter how much I worded and re-worded it, doesn’t seem to land quite as well as I’d hoped it would.</p>
<p>I chose to keep it, because in this case, that is itself part of the point of the joke.</p>
<p>The background is the current - utterly insane, utterly disgusting - <a href="https://www.gov.uk/government/publications/safety-of-rwanda-asylum-and-immigration-draft-bill">Safety of Rwanda (Asylum and Immigration)</a> Bill currently going through the UK Parliament. This aims to unilaterally declare Rwanda to be a safe country to deport asylum seekers to, as a precursor to - the government hopes - removing any remaining legal impediments to doing just that. The Bill arose in response to a judgement by the Supreme Court that Rwanda was not, in fact, a safe country in any way shape or form, and that implementing the plan to deport asylum seekers there would break international law in several ways.</p>
<p>The BBC have provided a general overview of the Rwanda asylum plan <a href="https://www.bbc.co.uk/news/explainers-61782866">here</a>.</p>
<p>David Allen Green, whose talent at making legal minutiae accessible to non-legal experts remains unmatched, breaks down the judgement of the Supreme Court in great detail <a href="https://davidallengreen.com/2023/11/the-three-elements-of-the-rwanda-judgment-that-show-how-the-united-kingdom-government-is-now-boxed-in/">here</a>.</p>
<p>The Guardian coverage of this has been consistently good, including this recent piece, where the headline is also a trigger warning for anyone wishing to retain some shred of sanity: <a href="https://www.theguardian.com/world/2024/jan/27/revealed-uk-granted-asylum-to-rwandan-refugees-while-arguing-country-was-safe">Revealed: UK granted asylum to Rwandan refugees while arguing country was safe</a>.</p>
<p>Fully unpicking this particular Matryoshka doll of bullshit is way beyond the scope of this blog post, and no doubt some future PhD history of politics student - if there are such things - will have a miserable few years doing so at some point in the future, if there is one.</p>
<p>But there are a couple of things going on here - obvious things perhaps - but things that need pointing out and remembering nonetheless.</p>
<p>Firstly - why are we even fucking talking about this? The idea of a UK government plan to deport asylum seekers to Rwanda is so completely inhuman, so openly far-right, that it is hard to imagine even the Tory party of five years ago being able to stomach it. Even Theresa May - no soft-hearted liberal - <a href="https://www.bbc.co.uk/news/uk-61153677">could not support it</a>. But we are fucking talking about this, and we are doing so because the far-right takeover of the Tory party is now complete, to the extent that several Tory rebels could not support the Bill at latest reading because <a href="https://www.theguardian.com/uk-news/2024/jan/17/rishi-sunak-rwanda-deportation-bill-passes-third-reading-in-commons">it did not go far enough for them</a>.</p>
<p>It is not so many years in the scheme of things since my family immigrated to the UK hoping to find a tolerant country where the far-right would not have a hope of taking over. Well, here we are. We have an actively far-right government, doing actual far-right things, right now, today. Do not forget this.</p>
<p>Secondly - this is a particularly egregious example of post-truth politics. The attempt by the government to get around the legal facts in the judgement set out by the Supreme Court, by simply declaring Rwanda to be safe - by fiat - would be laughable if it were not actually happening. But in the context of Brexit, of Trump, of Putin’s war in Ukraine, of the continued existence of anti-vaxxers and climate-change deniers - it is just a normal Tuesday.</p>
<p>Of course politicians have always lied: that’s been a thing as long as there have been politicians. But this is King Cnut territory, only with, you know, everything. It’s different, and worse, and terrifying, and the Wikipedia article about it is both <a href="https://en.wikipedia.org/wiki/Post-truth_politics">much better and much longer than it should be</a>.</p>
<p>Do not forget this either.</p>
<p>And so to my weak joke. In the comic, Sunak exhorts the Lords to finally pass his ridiculous bill, which seeks to solve a problem by unilaterally overriding reality, so why stop there? Comic Sunak goes on to mention two further bills he has in mind, one of which will solve the Brexit problem by unilaterally declaring it a unilateral success, and one of which will solve his own political problems by declaring him personally to be ‘a really popular guy actually’.</p>
<p>If this doesn’t raise a particular chuckle, that’s because in a post-truth world and under a far-right government that has long parted company with any notion of objective reality, it is easy to see at least the first of these Bills actually being proposed - and far worse.</p>
<p>But I posted it anyway - if nothing else as a reminder to myself about these things.</p>
<p>Retaining some semblance of sanity under such conditions involves a certain amount of cognitive dissonance. You have to pretend - at least a bit - that everything is not quite so bad as all that, because otherwise it is all too much and nothing good comes of it. But you also need to remember from time to time. Because nothing good comes from the ostrich thing either. And there are things to be done. Small things, perhaps, but things nonetheless.</p>
<p>If you’ve read down this far, I hope you too are trying to do some of those small things, maybe even not-so-small things, and more power to your elbow if so.</p>Or, why I thought the joke in my last comic was actually a bit shit but posted it anyway…Gefilte Fish2023-04-10T00:00:00+01:002023-04-10T00:00:00+01:00https://wayne.conniptions.org/2023/04/10/gefilte-fish<p>Last night I made gefilte fish for the first time. I am feeling weirdly
emotional about it. This post is an attempt to process that.</p>
<p>Gefilte fish, if you have never heard of it, is a kind of poached fish ball
boiled with onions and carrot, traditionally served with chrayne, a sauce made
from horseradish, vinegar and beetroot. It originated among the Ashkenazi Jews
of Eastern Europe and, although I am not entirely sure how true this is, is
said to be a clever way around the religious prohibition against all forms of
work on Shabbos (the Sabbath), one such form being the act of separating things
from other things. This includes separating bones from flesh, which basically
meant Jews could never eat fish on Saturdays, an unfortunate situation in places
where fish is one of your main available sources of protein.</p>
<p>Since all bones are necessarily removed in the process of making gefilte fish,
plus it can (and should) be served cold, it is therefore an ideal Shabbos
delicacy, since you are also not allowed to cook. Actually you can, so long as
you neither turn a fire on or off - which is Deeply Odd And Quite Sexist when
you think about it - is cooking not itself considered work?<sup><a href="#note">1</a></sup> - and there’s a
whole recipe - Tscholent - involving putting an oven on a very low heat on
Friday afternoon and leaving it going overnight to get a hot meal the next day.
It’s complicated. I’m not even religious. Anyway, this post is about gefilte
fish, not tscholent.</p>
<p><img src="/images/posts/gefilte-fish.jpg" alt="A plate of gefilte fish, with chrayne, in action" /></p>
<p>Gefilte fish is also extremely delicious and has become a staple Jewish food
among Ashkenazis for almost all occasions. As I was growing up, my Nana
and Mum would make gefilte fish for Pesach, to break the fast with on Yom
Kippur, and, now and again, just because, as a starter for the Friday evening
Shabbos meal. Later, as an adult, my Mum would reliably and without fail
deliver or have me come and collect a batch of gefilte fish every year at
Pesach, which I would usually devour within 48 hours.</p>
<p>There are some men who would starve if it weren’t for the women around them
seeing to it that they got fed, and I have striven Not To Be Like That my whole
adult life. I do most of the cooking at home, including, increasingly, various
traditional Jewish staples such as chicken soup and so on. But somehow I never
got around to gefilte fish. Or chrayne for that matter. (Don’t forget the
chrayne. The chrayne is very important.)</p>
<p>One of my prized possessions is my late Nana’s 1958 copy of Florence
Greenberg’s Jewish Cookery Book, but like so many other recipes in there, the
gefilte fish recipe is just weird. Ground almonds? Celery? Fresh parsley? Boiling
the fish to make stock, straining, reserving, then making up the balls - with an
indeterminate quantity of matzo meal to bind - before gently returning them
to the stock and seeing how far the smell of boiling fish could be spread over
the next hour or two? It looked very complicated.</p>
<p>Also, if Mum or Nana had ever put parsley in gefilte fish, it had somehow dissolved
without trace. You can usually tell if something has parsley in it. The bits
of parsley are a dead giveaway.</p>
<p>I believe - and I don’t know why, because I haven’t a trace of supporting
evidence - that most Jewish households in the UK during the 1950s and 1960s had
a copy of Greenberg, but I also suspect that many recipes in it were widely
ignored, or, in practice, altered beyond recognition if used at all. The
important recipes in my copy are the ones in the back in my Nana’s
handwriting. But this post isn’t about those.</p>
<p>Anyway.</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/4EqxSX8b93I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
<p>A few months ago, B. and I finally left London and moved to St Leonards-on-Sea
in East Sussex, a distance of around 50 or 60 miles away, depending how you count
it. Whichever of those you go with, it is certainly not within Reasonable Gefilte
Fish Delivery Or Collection range from my Mum.</p>
<p>There is little or no Jewish community in St Leonards, but it does have easy
access to a number of excellent fishmongers and greengrocers. Last week, while
buying eggs at the greengrocers I noticed that he was also selling horseradish,
and remembered that I’d been meaning to make my own chrayne for years.</p>
<p>Chrayne is supposed to blow your head off. Proper chrayne will clear every cranial
tube of fluid in one go, but in the good way, like the old Colmans English Mustard
before they changed the recipe and nerfed it. With good chrayne, grumpy middle-aged
and elderly Jews have for centuries complained bitterly about Certain Children
leaving the lid off for too long, thus causing the potency to be lost due to
exposure to oxygen in the air. (This is true. Do not leave the lid off the
chrayne.) But shop-bought chrayne comes with the lid pre-emptively left off.
It is insipid, more like beetroot jam than mustard, and hence pointless. Every
year for the last several decades I have bought a jar of chrayne at Pesach to go
with my Mum’s gefilte fish, and every year I have been disappointed with it. The
chrayne, that is. Not the gefilte fish. To be clear: my Mum makes the best gefilte
fish.</p>
<p>It would have been good if I’d remembered to pick up some horseradish while I
was actually in the shop, but I went back the next day and got some.</p>
<p>“What are you planning to do with it?” asked the greengrocer.</p>
<p>“I’m going to make ch… horseradish sauce,” I told him, not yet feeling ready to
have a conversation about Yiddish names for Ashkenazi Jewish condiments at the
greengrocers.</p>
<p>“Oh, I’ll need some beetroots too.”</p>
<p>“They’re over there.”</p>
<p>I grabbed the beets, paid, and fled.</p>
<p>Chrayne is not hard to make. Here is Greenberg’s recipe:</p>
<blockquote>
<p>Take 3 large cooked beetroots and 2 sticks horseradish, peel and grate them all
and mix together. Sweeten to taste, and pour on as much malt vinegar as the mixture
will absorb. Pot and tie down.</p>
</blockquote>
<p>That’s what I should have done.</p>
<p>Instead I very stupidly used a random recipe from the internet which, in its
attempt to put a sassy modern twist on chrayne, or antisemitism, or something,
suggested a) using balsamic vinegar, b) adding a clove of garlic, and c) chopping
the horseradish rather than grating it. All of these things - I can now
exclusively reveal - are Very Very Wrong.</p>
<p>Worse than that, it turned out the beets I had bought in a hurry were pre-cooked,
G-d knows how or in what. Literally every other vegetable in that shop is so
lush, raw, fresh and organic you expect them to all burst into cartoon four
part harmony at any moment. But no, I’d managed to buy something pre-processed
there. Still, it saved cooking and peeling the beets myself.</p>
<p>The result was a chrayne almost but not entirely identical to the sad shop-bought
jars from Sainsbury’s. It tasted of vinegar, garlic, beetroot and disappointment.
Adding an extra inch of horseradish root - grated this time, not chopped, did
at least give it a little bit of a kick, but not much. Also, I now had a good
half-pint of it, so I put it into some jars, put the jars in the fridge, and hoped
that maybe the mixture would magically settle overnight into something a bit
more chrayne-like.</p>
<p>And sat there, unable to stop thinking about gefilte fish, deeply annoyed with
myself for not having already bought some fish to make it with.</p>
<p>It was 3pm on Easter Sunday. Most of the shops in town were definitely closed
for Easter, including the large supermarket round the corner. What would be the
the chances of finding an open fishmongers at that time?</p>
<p>Non-zero, as it turned out. <a href="https://www.rxfisheries.co.uk/">RX Fisheries</a>, more or less on the beach right at
the opposite end of neighbouring Hastings, were going to be open until 4.30pm.
If I left immediately (I don’t drive and the bike needs a service before I take
it out on the road again) I’d just about make it in time. Plus, it should be a
fairly pleasant walk along the coast.</p>
<p>Which it was, though with Easter Sunday I’d picked the worst possible day in
April to do this, and the Hastings coast got more and more packed with tourists
the closer I got to Old Town. Families, screaming kids, chips, ice-cream, an
entirely <a href="https://www.bondownersclub.co.uk/">random classic car</a> <a href="https://www.visit1066country.com/whats-on/bond-minicar-3-wheelers-p2183941">meet</a>, more screaming kids, more screaming families, more ice-cream and chips, fishmonger.</p>
<p>Bam, fishmonger.</p>
<p>Then the same in reverse.</p>
<p>It was quite trippy.</p>
<p>An hour or so later I was walking back along the coast with about half a kilo of
fresh cod fillet and half a kilo of fresh bream fillet bouncing around in a small
blue carrier bag. I was still a little concerned, though, as I had no idea what
the hell I was about to do - the Greenberg recipe seemed awfully tricky and I had
lost faith in looking up recipes for this kind of thing on the internet.</p>
<p>While walking along, I remembered that the last time I’d spoken to my Mum
about the hypothetical possibility of me maybe making gefilte fish myself finally,
she’d mentioned something about a secret ingredient, something that Nana had taught
her to add to it, which was the reason why their gefilte fish was consistently
better than any other gefilte fish of different provenance. I couldn’t remember
what it was, though she had told me. Could it possibly be the ground almonds
that Greenberg mentions? Surely not. That’s just weird. Who puts ground almonds
in gefilte fish? Also, surely I’d have remembered if it was that.</p>
<p>Then I remembered that it was 2023 and I could just call and ask her while
walking, so I did.</p>
<p>Turns out it’s sugar.</p>
<p>My Mum was very clear: ground almonds are nonsense. Celery is not required. There’s
nothing wrong with parsley - she has been known to use it now and again, but it
definitely isn’t necessary. And certainly, Greenberg’s hare-brained idea of
pre-boiling the unminced fish to make fish stock to then make balls and poach
them in the stock is way over-complicating it. Nana, for all her many talents,
was not one for complicated recipes. You just chop the carrots and onion, set it
to boil in well seasoned water, make up the fish balls with egg and matzo meal,
and then gently poach them in the water for a couple of hours, over which time
it turns to stock anyway. There’s no need.</p>
<p>But the key thing is to put a few teaspoons of sugar in the water as well, and
season to taste as it goes. Whatever the stock tastes like, so will the gefilte.</p>
<p>We had some discussion on the subject of how the hell I was going to mince the
fish without a mincer, and she reminded me that she usually gets the fishmongers
to do it. RX Fisheries were long closed and a half-hour’s walk away at this point,
so I said I’d probably be fine doing it by hand with a knife.</p>
<p>“Oh, my Bubba used to do it that way,” she said, “but it’s much easier if you just
get it pre-minced.” Amid visions of my tiny great-grandmother, who I never met but
have seen photos of, determinedly and resolutely determinely mincing raw fish armed
only with a knife, we agreed that I definitely would not use the food processor
instead, because that would probably over-mince it, at which point I’d arrived at
the Co-op and it was time to verify that they had no fresh parsley, which they
never do.</p>
<p>Obviously they might have had fish as well but I didn’t look. I refuse to buy
supermarket fish when I live on the coast now and there are Fresh From The Boat
More Or Less fishmongers around. That would be ridiculous.</p>
<p>And home, where an excited B. kindly volunteered to chaperone my My First
Gefilte Making Experience.</p>
<p>Also, where I learned that asking fishmongers to take the skin off for you is
a thing you can do, and that, using special Fishmonger Tools for the purpose, they
indeed will. This is useful information, especially if you are using a recipe that
ideally calls for the fish to be both deboned <em>and</em> deskinned.</p>
<p>Oh well. I made the executive decision that skin-on Would Be Just Fine, and after
chopping the carrots and onions, putting them on to boil (seasoned, with sugar),
and beating the eggs, started setting about the fish with a knife.</p>
<p>I try and keep our kitchen knives sharp, but… long story short… Dear Reader
(and lets face it, Mum, if you’ve managed to read down this far) I ended up
using the food processor. I was gentle with it, and it was fine.</p>
<p>Not using all the egg - on B.s instructions, in her capacity as Person Who Has
Not Made Gefilte Fish Before Specifically But Has Made Fish Balls Which Are Not
Dissimilar - turned out to be a good thing too, because it wasn’t necessary.</p>
<p>And the gefilte fish turned out ok. Bit bland, but recognisably gefilte fish.
They didn’t come apart in the pan or anything, they cooled down nicely overnight,
and I am about to have some more, because I’ve been rambling about gefilte fish
for over 2000 words now and I don’t know about you but it’s making me hungry.</p>
<p>They’re not nearly as good as my Mum’s gefilte fish of course and never will be.
Or Nana’s. But still. Gefilte fish. Gefilte fish is very important.</p>
<p>I’ve an ex-girlfriend who sneered at gefilte fish. My Mum didn’t like her, and
I didn’t understand why at the time. I get it now.</p>
<p>Oh and the chrayne turned out fine too, after a sit overnight, though I’ll make
that better next time now I know what to do.</p>
<p>I feel I’ve made a right gefilte fish of processing why I’m feeling so emotional
about it though.</p>
<p><small><a id="note">1</a> - Ok, a day or so after posting this I felt I was probably quite
wrong on this point, so I looked it up, and lo! I am indeed <a href="https://www.chabad.org/library/article_cdo/aid/95914/jewish/Food-Preparation-on-Shabbat.htm">totally wrong</a> - among
observant Jews, cooking very much <em>is</em> considered work for the purposes of Shabbos. <strong><em>However</em></strong>, I don’t know
about you, but if I’m in charge of a pot of food we are going to eat but have not
eaten yet, I very much feel like <em>I am still cooking</em> even if I have no intention
of (or am indeed prohibited from) doing anything to the contents of the pot other than wait until it is ready to
serve. Like I say, it’s complicated.</small></p>Last night I made gefilte fish for the first time. I am feeling weirdly emotional about it. This post is an attempt to process that.PIN Security Fun2023-03-27T00:00:00+01:002023-03-27T00:00:00+01:00https://wayne.conniptions.org/2023/03/27/pin-security-fun<p>So I was idly wondering about the security of a user-selected four digit PIN I have recently come to be in charge of.</p>
<p>In the scheme of things there aren’t many four digit PINs. The space is very small, at only 10000, so I wanted to find a league table of PINs from most commonly to least commonly used. Looking things up, I found an interesting article on the subject.</p>
<p><em>NB - This post modified from a series of posts I made to Mastodon three weeks ago…</em></p>
<p>So the article is <a href="https://www.theguardian.com/money/blog/2012/sep/28/debit-cards-currentaccounts">here</a>.</p>
<p>The full research, by data scientist Nick Berry<sup><a href="#nb">1</a></sup>, is <a href="http://www.datagenetics.com/blog/september32012/index.html">here</a>.</p>
<p>Berry claims to have a large dataset showing how commonly each four digit PIN is used. Sensibly, he is very clear that he will not release this data:</p>
<blockquote>
<p>… do not email me asking for the database I used; if you do, you will be wasting your time as I’m not going to respond. I’m not going to sell, donate or release the source data</p>
</blockquote>
<p>Also Berry:</p>
<blockquote>
<p>I love pretty ways to graphically vizualize data. Pictures really do paint thousands of words.</p>
</blockquote>
<p>He continues:</p>
<blockquote>
<p>Another interesting way to visualize the PIN data is in this grid plot of the distribution. In this heatmap, the x-axis depicts the left two digits from [00] to [99] and the y-axis depicts the right two digits from [00] to [99]. The bottom left is 0000 and the top right is 9999.</p>
</blockquote>
<p><img src="/images/posts/pin-heatmap.png" alt="Nick Berry's PIN heatmap" /></p>
<p>CHALLENGE ACCEPTED.</p>
<p><em>To explain if not already clear: Berry has emphasised that he has no intention of releasing his PIN usage data, but by providing a heatmap based on it, he effectively has, at least for the part I am interested in. All that is required is to decode the heatmap. The whole dataset is still out of reach, but the full league table of PIN numbers is entirely encoded in the heatmap.</em></p>
<p>Long story short, I spent a happy evening writing <a href="https://gist.github.com/wgmyers/1fb9e7e1e3e01605d816884facf44042">this Ruby code</a>.</p>
<p>It takes the provided heatmap image of the entire four digit PIN space (broadly speaking brighter is more widely used, darker less) and - very clunkily and slowly - this is not My Best Code - extracts the hex colour value, using the ImageMagick library, pixel by pixel, and matches it to the corresponding PIN.</p>
<p>Simply sorting the resulting output by raw hex value absolutely should not work. With a sensibly generated heatmap, why would it? There ought to be more steps to my solution than this. However, as it happens in this case, I think it basically does. Our top 20 and bottom 20 PINs are the pretty much the same as those listed in the article, except for a few that swap position due to loss of precision.</p>
<p>Is it possible that a heatmap decoded and sorted this way could preserve the top and bottom 20 elements of the list while effectivly yielding garbage in the rest of it? Perhaps it is? But if the colour values for the heatmap were chosen so as to obscure their exact origin, why preserve the forty most important items in the list? Even if accuracy gradually degrades with proximity to the middle of the list (that would seem fair) it seems like this data extract is still enough to get a vague idea of where in the overall table of PIN popularity a given PIN might sit. After all, I don’t need 100% accuracy. I just want to know if the PIN I have chosen is Demonstrably Stupid or not.</p>
<p>So. While I have not reconstructed the exact ordering of the 10000 possible 4-digit PINs in terms of popularity, it looks like I have managed to create a list that is close enough to the original to be of some use - this is to say: the ranking of the PIN in the output is likely to be fairly close to the ranking in the original data.</p>
<p>If you grab the image above and run my code against it, you can verify this for yourself.</p>
<p>My original Mastodon thread asked <em>Should I go ahead and register / build ratemypin.com?</em> which was a whimsical but admittedly massively dumb idea. I will be doing nothing of the sort.</p>
<p><small><a id="nb">1</a> - Sadly <a href="https://twitter.com/DataGenetics">Nick Berry</a> passed away last year. RIP, Nick. I would have loved to have discussed this with you.</small></p>So I was idly wondering about the security of a user-selected four digit PIN I have recently come to be in charge of.Entitled2023-03-24T00:00:00+00:002023-03-24T00:00:00+00:00https://wayne.conniptions.org/2023/03/24/entitled<p>Mediocre white man<br />
Lockdown sceptic<br />
Pro virus activist<br />
Says “masks don’t work”</p>
<p>People enduring<br />
Long COVID misery<br />
Have no energy<br />
To fight this jerk</p>
<p>Reek of privilege<br />
Cherry picking papers<br />
“Just asking questions”<br />
Contrarian prick</p>
<p>Back in reality<br />
Pandemic isn’t over<br />
Maybe if you’re very rich?<br />
Makes me sick</p>
<p>Prep school debate club<br />
Gave him confidence<br />
To make any argument<br />
It’s all a game</p>
<p>Struggling to carry on<br />
So fucking lonely<br />
So fucking tired<br />
Each day the same</p>
<p>Publishing lies<br />
For the benefit of billionaires<br />
“From the left”<br />
Says you my son</p>
<p>Should have pushed him down the stairs<br />
When many years ago<br />
I had the opportunity<br />
In his parents massive house<br />
In Kensington</p>Mediocre white man Lockdown sceptic Pro virus activist Says “masks don’t work”On The Square Root Of Fuck All2022-05-02T00:00:00+01:002022-05-02T00:00:00+01:00https://wayne.conniptions.org/2022/05/02/on-the-square-root-of-fuck-all<p>Thinking about the square root of fuck all. Originally a <a href="https://twitter.com/conniptions/status/1521114619833638912">Twitter thread</a>,
now also a blog post.</p>
<p>‘The square root of fuck all’ is a British phrase meaning ‘little or nothing’. Eg:
“it was a paid gig, yes, but by the time I’d paid all the musicians plus covered travel and
expenses I ended up with the square root of fuck all”.</p>
<p>The interesting question, for certain values of interesting, is which is bigger? The
square root of fuck all, or fuck all?</p>
<p>As we shall see, this depends on how much fuck all is. Mathematicians among you, please
move on. There is nothing to see here that you don’t already know. Your version of this
<del>thread</del> post will probably be funnier, and also will star out the word ‘fuck’ so people can
see it.</p>
<p>‘Fuck all’ is a British phrase meaning ‘little or nothing’. Eg: I wrote a whole
<del>thread</del> post that repeatedly used the word ‘fuck’ so it won’t surprise me if it gets
fuck all response.</p>
<p>The square root of a number is another number which, when multiplied by itself, results
in the first number. For example the square root of 4 is 2, because 2*2=4. The square
root of 25, similarly, is 5. And the square root of 0.25 is 0.5.</p>
<p>That last one seems counter-intuitive. How can the square root of a number be larger than
the number you started with? Except it is. 0.5 times 0.5 is the same as half of 0.5, which
is obviously 0.25. So the square root of 0.25 is 0.5.</p>
<p>Turns out the square root of any number less than 1 and greater than 0 is larger than the
original number. Eg: the square root of 0.5 is roughly 0.7071067811865476, which, by
coincidence, is roughly the amount of pennies that Spotify owe me for all-time streams of
my music.</p>
<p>That’s the square root of fuck all, obviously. But it’s also, quite clearly, fuck all. This
would imply that fuck all and the square root of fuck all were the same. Could we at last
be getting some traction on our original question?</p>
<p>If X is the square root of fuck all, and Y is fuck all, but X=Y, then there are only two
possible values for X and Y, which are zero and one. 1*1=1 and 0*0=0, which is to say, both
fuck all <em>and</em> its square root are both either 0 or 1. Remind you of anything?</p>
<p>That’s right: binary: the base 2 number system that underlies all computing, from your
mobile phone to your Mum’s laptop to the server hosting the website you are looking at now. In
binary, all numbers are made up of either 0s or 1s.</p>
<p>In computing, all things - colours, images, audio files, accounts payable, minimum thresholds
for payout, Spotify’s annual profit, Daniel Ek’s net worth, and so on - are represented
under the hood by binary numbers. All made up of 0s and 1s. We call these 0s and 1s ‘bits’.</p>
<p>HOWEVER, it is also vitally important, in normal computing, that we know which bits are 0 and
which bits are 1. You can’t have bits flipping between 0 and 1. Otherwise, a value of 00000001
might suddenly turn into 11111110, an increase from 1 to 254.</p>
<p>Interestingly, 1 to 254 is roughly the ratio between a median worker’s salary and a CEO’s
salary in many parts of the world. So you can see why it’s so terribly important that the
bits don’t flip.</p>
<p>In quantum computing, of course, which doesn’t exist yet, things are different. There, bits
can be 0 or 1, but they can also be somewhere in between, aligned along a probability spectrum
where you don’t know what the value of any particular bit is until you look at it.</p>
<p>The bits in quantum computing are all like Schrödinger’s cat, somehow both alive and dead
simultaneously until you look in the box. This is why quantum computer programs are so hard
to debug. I would not want to debug a program where all the bits were cats.</p>
<p>Does this shed any light on the relationship between fuck all and the square root of fuck all?
If we consider these as being more like quantum bits, or as cats, if you will, then their values
could be considered as probabilities somewhere in the range between 0 and 1.</p>
<p>If that is so, then the square root of fuck all, as we have seen, is definitely at least a
little larger than fuck all, since the square root of a number between 0 and 1 is larger than the
original number.</p>
<p>Speaking of original numbers, mine are both on Spotify and on Bandcamp. However, if you listen
to them on Spotify, I get the square root of fuck all. Or fuck all. Whichever is smaller.</p>
<p>On Bandcamp, by contrast, I get an entirely different number, chosen by yourself. Zero is the
lower bound (you can stream there for free if you like), but the upper bound is up to you.</p>
<p>So please - and not just for me, but for all the music you listen to - consider the Bandcamp
option for your music streaming needs. Mine is on <a href="https://music.conniptions.org/">music.conniptions.org</a> - and if your
favourite musician is not on Bandcamp, ask them why they hate money.</p>
<p><strong>PS:</strong> If you are still wondering about the cats, my apologies. They were a red herring.</p>
<p><strong>PPS:</strong> Now the cats have a red herring they are happy. You can stop worrying about them.
Here’s my bandcamp link again: <a href="https://music.conniptions.org/">music.conniptions.org</a></p>Thinking about the square root of fuck all. Originally a Twitter thread, now also a blog post.Pfeffel2022-01-15T00:00:00+00:002022-01-15T00:00:00+00:00https://wayne.conniptions.org/2022/01/15/pfeffel<p><a href="https://www.conniptions.org/pfeffel/">Pfeffel</a> is like Wordle but it always lies to you.</p>
<p>The chances are high that you have already come across the word game <a href="https://www.powerlanguage.co.uk/wordle/">Wordle</a>.</p>
<p>If not: Wordle is an online version of the pre-computers game <a href="https://en.wikipedia.org/wiki/Bulls_and_Cows">Bulls and Cows</a>, with a
couple of clever twists. Firstly, Wordle only lets you play once per day, with
the same secret word being presented to all users. Secondly, on completing the
game, Wordle provides a ‘share’ button, which allows you to copy and paste a
grid representing your result that day on social media.</p>
<p>Wordle went massively viral in December 2021, and <a href="https://en.wikipedia.org/wiki/Wordle_(video_game)">according to Wikipedia</a>
currently has more than 2 million daily players.</p>
<p>Since the rules of the game are very simple, it is also simple to implement, and
there are already several variants:</p>
<ul>
<li><a href="https://www.sweardle.com/">Sweardle</a> - A four-letter word, sweary variant</li>
<li><a href="https://qntm.org/files/wordle/index.html">Absurdle</a> - An adversarial variant which secretly changes the word as you play to make it harder</li>
<li><a href="https://edjefferson.com/letterle/">Letterle</a> - A minimalist one-letter variant</li>
<li><a href="https://worble.glitch.me/">Worble</a> - A straight clone that lets you play multiple times per day</li>
</ul>
<p>Like millions of other people, I have been playing Wordle every day for the last
couple of weeks and tinkering with the idea of making my own version just for fun.
But I didn’t want just to clone it. I wanted an idea.</p>
<p>Boris Johnson, the current Prime Minister of the UK (as of January 2022), is
widely acknowledged to be one of the least honest politicians - against some
fairly stiff competition - in the history of British politics. His middle name,
or rather one of his middle names, is ‘de Pfeffel’.</p>
<p>So, last Tuesday evening, late, I began coding a variant of Wordle that always
lies to you, and called it ‘Pfeffel’.</p>
<p>In the usual Wordle rules, there is a secret word you must guess. With each
guess you get told which letters in your guess are not in the secret word at all,
which letters are right but in the wrong place, and which letters are correct.</p>
<p>Pfeffel lies to you about this. If it tells you the letter is not in the
word, this means that it is. If it tells you the letter is correct, then it
may still be in the word, but not in that location. If it tells you the
letter is right but in the wrong place, either it is not in the word at all, or
it is actually correct.</p>
<p>This makes the game significantly harder than normal Wordle, though just about
still playable. If you squint.</p>
<p>The code is not great - I wrote it in a tremendous hurry - but for what it’s
worth, can be found <a href="https://github.com/wgmyers/pfeffel">here</a>.</p>
<p>The bulk of the game logic can be found in the <code class="highlighter-rouge">mark_guess</code> function:</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">mark_guess</span><span class="p">(</span><span class="nx">candidate</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">cletters</span> <span class="o">=</span> <span class="nx">candidate</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="dl">""</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">wletters</span> <span class="o">=</span> <span class="nx">word</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="dl">""</span><span class="p">);</span>
<span class="kd">let</span> <span class="nx">mark</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">correct</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">word_length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">wletters</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="nx">cletters</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cletters</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">==</span> <span class="nx">wletters</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">{</span>
<span class="c1">// correct</span>
<span class="nx">mark</span> <span class="o">=</span> <span class="nx">pfeffel</span><span class="p">(</span><span class="dl">"</span><span class="s2">guess-right</span><span class="dl">"</span><span class="p">);</span>
<span class="nx">correct</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// present but wrong place</span>
<span class="nx">mark</span> <span class="o">=</span> <span class="nx">pfeffel</span><span class="p">(</span><span class="dl">"</span><span class="s2">guess-present</span><span class="dl">"</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// wrong</span>
<span class="nx">mark</span> <span class="o">=</span> <span class="nx">pfeffel</span><span class="p">(</span><span class="dl">"</span><span class="s2">guess-wrong</span><span class="dl">"</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">letterbox</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">`guess-</span><span class="p">${</span><span class="nx">cur_guess</span><span class="p">}</span><span class="s2">-</span><span class="p">${</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">}</span><span class="s2">`</span><span class="p">);</span>
<span class="nx">letterbox</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">mark</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">mark</span> <span class="o">==</span> <span class="dl">"</span><span class="s2">guess-wrong</span><span class="dl">"</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">key</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">`key-</span><span class="p">${</span><span class="nx">cletters</span><span class="p">[</span><span class="nx">i</span><span class="p">]}</span><span class="s2">`</span><span class="p">);</span>
<span class="nx">key</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="dl">"</span><span class="s2">key-wrong</span><span class="dl">"</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">correct</span> <span class="o">==</span> <span class="mi">5</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">win_game</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">cur_guess</span> <span class="o">==</span> <span class="nx">max_guesses</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">lose_game</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
<p>This function takes a guess (<code class="highlighter-rouge">candidate</code>) and compares it letter by letter to
the secret word (<code class="highlighter-rouge">word</code>). It then marks each letter in the guess with one of
the three possibilities: <code class="highlighter-rouge">guess-right</code>, <code class="highlighter-rouge">guess-wrong</code>, and <code class="highlighter-rouge">guess-present</code>, the
last of which is shorthand for ‘right-but-in-the-wrong-place’.</p>
<p>If you have guessed all five letters correctly you win; if you have run out of guesses
you lose, otherwise the game continues.</p>
<p>However, before presenting the marks, the game runs them through another function
called <code class="highlighter-rouge">pfeffel</code>:</p>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">pfeffel</span><span class="p">(</span><span class="nx">mark</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">[</span><span class="dl">"</span><span class="s2">guess-right</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">guess-present</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">guess-wrong</span><span class="dl">"</span><span class="p">];</span>
<span class="kd">const</span> <span class="nx">pfeffeled</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">filter</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">item</span> <span class="o">!==</span> <span class="nx">mark</span> <span class="p">});</span>
<span class="k">return</span> <span class="nx">pfeffeled</span><span class="p">[</span><span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)];</span>
<span class="p">}</span>
</code></pre></div></div>
<p>This is the Boris Johnson function: whatever the truth is, it is guaranteed to
return one of the two possible lies.</p>
<p>Other than that, the game is identical to Wordle.</p>
<p>I should probably go back and improve the layout code, which does not, but should
use flexbox to ensure it works properly on all displays. I should add the rule
that all guesses must be a real word (this will involve adding a huge List Of
Real Words, but is fairly easy to do). I could look at adding some of the visual
feedback that Wordle has (attempting to enter a non-word makes the guess wobble),
and I absolutely ought to clean up the silly thing where I created a data structure
for the whole game and then never use it, instead storing all gameplay directly
in the page. Finally I could add a proper dialogue box at the end of the game
rather than using the built in <code class="highlighter-rouge">alert</code> function.</p>
<p>There is a joke involving the ‘share’ button which you get if you complete the
game - even if I added a share button, it would never actually share. People are
getting enough Wordle-related spam and I don’t want to contribute to it.</p>
<p>But, for a one-off gag game that most people will have forgotten about in a few
weeks, I’m not sure I can be bothered with any of that.</p>
<p>To my absolute delight, Pfeffel was featured in this week’s <a href="https://b3ta.com/newsletter/issue802/">B3ta newsletter</a>,
which resulted in more hits to my website in the course of an evening than it
has received since launch. Hits have now returned to their customary one or two
per day, and my stats page is hilarious.</p>
<p>Which is as it should be, really.</p>Pfeffel is like Wordle but it always lies to you.Emma Goldcoin2021-12-21T00:00:00+00:002021-12-21T00:00:00+00:00https://wayne.conniptions.org/2021/12/21/emma-goldcoin<p>Emma Gold and I have, this morning, designed, implemented and launched a new
cryptocurrency, called Emma Goldcoin (EGX). It is easy to use, verifiably 100%
secure, and has zero environmental impact.</p>
<p>Full details of EGX, along with the reference implementation, can be found <a href="https://github.com/wgmyers/egx">here</a>.</p>
<blockquote>
<p>EGX fixes all the problems with all the existing cryptocurrencies once and for all.
In particular it fixes the problems around security, environmental impact and ease of
use that beset all other known blockchain-based cryptocurrency offerings.</p>
</blockquote>
<p>The idea is that the total number of EGX is pegged to the number of human beings
on the planet. Each person has an EGX wallet - without exception - and on launch,
every person on the planet is given 1 EGX.</p>
<p>EGX introduces the concept of Cost of Receipt, using the formula <code class="highlighter-rouge">x=y</code>, such that
it costs the same amount to receive an EGX payment as the value of the payment
itself.</p>
<p>With EGX, the balances in the sender and receiver’s wallets remain the same after
every transaction, making it so trivial to implement both the wallets and the
blockchain part of EGX that no code whatsoever is required.</p>
<p>With no code, 100% security and zero environmental impact is achieved.</p>
<p>Wherever another kind of cryptocoin is in use, EGX can be substituted in order
to increase security and decrease environmental impact.</p>
<p>There are also numerous other advantages.</p>Emma Gold and I have, this morning, designed, implemented and launched a new cryptocurrency, called Emma Goldcoin (EGX). It is easy to use, verifiably 100% secure, and has zero environmental impact.Pfizer Muggin2021-12-19T00:00:00+00:002021-12-19T00:00:00+00:00https://wayne.conniptions.org/2021/12/19/pfizer-muggin<p>The other day, my old friend Alex posted a list of Corona-related song titles
to Facebook. I replied with a few of my own, including <em>Pfizer Muggin’</em>, with
which I was absurdly pleased. It had to be done.</p>
<p>So here it is:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/3hNtKWx1T20" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p><em>Pfizer Muggin’ boom<br />
Pfizer Muggin’ bam<br />
Pfizer Muggin’ boom<br />
It’s a scratch you won’t feel a thing</em></p>
<p><em>Pfizer Muggin’ boom (or Moderna)<br />
Pfizer Muggin’ bam (or Moderna)<br />
Pfizer Muggin’ boom (or Moderna)<br />
Astra Zeneca’s too hard to scan</em></p>
<p><em>No-one knows just how it started<br />
Someone got sick in Wuhan<br />
Then it spread like wildfire<br />
Round the world the pandemic began</em></p>
<p><em>We all spent a year in lockdown<br />
Till the vaccines came around<br />
Two jabs and then a booster<br />
Keeps your chance of dying down</em></p>
<p><em>Pfizer Muggin’ boom (no Corona)<br />
Pfizer Muggin’ bam (no Corona)<br />
Pfizer Muggin’ boom (no Corona)<br />
It’s a scratch you won’t feel a thing</em></p>
<p><em>Now there’s a crazy variation<br />
Omicron is coming through<br />
Sweeping all across the nation<br />
You all know what you got to do</em></p>
<p><em>You may be asymptomatic<br />
Have the Rona and not be ill<br />
Get the jab and while you’re at it<br />
Keep your mask on to be safer still</em></p>
<p><em>Pfizer Muggin’ ooh (or Moderna)<br />
Pfizer Muggin’ ow (or Moderna)<br />
Pfizer Muggin’ boom (or Moderna)<br />
Astra Zeneca’s too hard to scan</em></p>
<p><em>Pfizer Muggin’ boom (no Corona)<br />
Pfizer Muggin’ bam (no Corona)<br />
Pfizer Muggin’ boom (oh Corona)<br />
It’s a scratch you won’t feel a thing</em></p>
<p>Not so much a filk as a PSA.</p>
<p>I’m particularly pleased with how it came out because this is my first attempt
at one of those multiple-selves music videos, and it turns out that I was able
to record all the video segments using only my phone. By starting with the main
part, being bass and vocals part, and playing along to that in the others without
using headphones, I ended up with an audio mix that automatically slightly
boosted the main part at the expense of the others (they both have it in the
background), meaning that it didn’t need any tweaking at all. This is the kind
of workflow I can get behind, and I hope to make more of this kind of thing,
especially with the current Not Going Anywhere Due To COVID situation.</p>
<p>Yes, the audio in the two backing parts does get just slightly out of sync
towards the end. That’s annoying, but it’s only very slight and didn’t seem
worth fixing for a filk of this sort.</p>
<p>If you’re wondering how the hell this is a filk, you may not have heard of
the wonderful <em><a href="https://www.youtube.com/watch?v=77agwsm-7Dc">I’s A Muggin’</a></em> by
Stuff Smith. My version is based on <em><a href="https://www.youtube.com/watch?v=77agwsm-7Dc">Django Reinhart’s</a></em>,
which is much easier to filk.</p>
<p>I urge you listen to both.</p>The other day, my old friend Alex posted a list of Corona-related song titles to Facebook. I replied with a few of my own, including Pfizer Muggin’, with which I was absurdly pleased. It had to be done.The Linux Distro Zodiac2021-08-23T00:00:00+01:002021-08-23T00:00:00+01:00https://wayne.conniptions.org/2021/08/23/the-linux-distro-zodiac<p>So the other night, by which I mean two weeks ago or so, <a href="https://twitter.com/ElleArmageddon">@ElleArmageddon</a>,
who is a person on Twitter who I do not know, but who seems terribly cool, posted <a href="https://twitter.com/ElleArmageddon/status/1424946282959761409">the following</a>…</p>
<blockquote>
<p>“Linux distributions are just zodiac signs for nerds.”</p>
</blockquote>
<p>It being late, and having consumed at least a third of my regulation nightly
half a shandy, I immediately bashed out the following list, which, I feel, is
both too good and too eye-gougingly awful to be left languishing In That Place
Where No-One Ever Goes, ie my Twitter account, so I am now reposting it here,
slightly reformatted.</p>
<p>Herewith, my entirely partial, totally unfair and not really very funny list of
Linux Distros As Zodiac Signs, posted here, on my blog, another place Where No-One
Ever Goes, but at least it’s mine, so I’ll get to vaguely take care of it:</p>
<ul>
<li><strong>Aries</strong> - <em>DSL</em> - No pain no gain, we don’t care how much it hurts</li>
<li><strong>Taurus</strong> - <em>Mint</em> - We just want it to work</li>
<li><strong>Gemini</strong> - <em>OpenSUSE</em> - Sure, we’re totally open-source</li>
<li><strong>Cancer</strong> - <em>Fedora</em> - We just want to feel at home</li>
<li><strong>Leo</strong> - <em>Ubuntu</em> - We want the cred but also not to have to think about it too much</li>
<li><strong>Virgo</strong> - <em>Slackware</em> - Life is supposed to be difficult</li>
<li><strong>Libra</strong> - <em>Arch</em> - Keep It Simple, Stupid</li>
<li><strong>Scorpio</strong> - <em>Kali</em> - If I can’t hurt you with it, what’s the point?</li>
<li><strong>Saggitarius</strong> - <em>Gentoo</em> - No-one realises how good we are. We know. We don’t care.</li>
<li><strong>Capricorn</strong> - <em>Red Hat Enterprise</em> - We will make a fortune learning this</li>
<li><strong>Aquarius</strong> - <em>Debian</em> - Ours is the only right way</li>
<li><strong>Pisces</strong> - <em>MacOS</em> - It’s close enough, right?</li>
</ul>
<p>I bet there’s another seven or eight of these lists, but I’m not looking for them.</p>
<p>Also I spent literally five minutes thinking about this so feel free to make
your own far superior version.</p>So the other night, by which I mean two weeks ago or so, @ElleArmageddon, who is a person on Twitter who I do not know, but who seems terribly cool, posted the following…Thinkpad Grub Menu Restored2021-08-07T00:00:00+01:002021-08-07T00:00:00+01:00https://wayne.conniptions.org/2021/08/07/thinkpad-grub-menu-restored<p>This is going to be either the most boring blog post in the entire history of
blogging or the best thing you have read in years, depending on whether or not
you too have a laptop set up to dual-boot Windows and Linux, and the laptop
always boots directly to Linux - which is what you usually want, so you’ve been
living with it, for, say, five years - but you’d quite like to have the Grub
menu displayed first so you can mostly ignore it and let the default option run
anyway.</p>
<p>I have finally fixed it, by which I mean, I have finally found the Magic Forum
Post which provides the solution. For me. YMMV.</p>
<p>That post is <a href="https://askubuntu.com/questions/1310995/why-do-grub-options-only-appear-if-i-set-grub-terminal-console-on-my-laptop-w">here</a>,
and, if you like, you can scroll past my waffle to the solution right here at
the bottom of this page without even clicking anything.</p>
<p>I repeat: YMMV. I repeat: I am about to waffle at you.</p>
<p>Dual-boot setup is a pain in the neck, caveat emptor and all that. If your
problem is the usual one where you think you have set up dual-boot but it always
boots to Windows, I cannot help you. That is the usual problem people have and
it means that you have not set dual-boot up properly and Grub is not running at
all.</p>
<p>There are literally thousands of posts explaining how to fix that problem, like
<a href="https://askubuntu.com/questions/221835/how-do-i-install-ubuntu-alongside-a-pre-installed-windows-with-uefi">this one</a>
or <a href="https://help.ubuntu.com/community/%20UEFI">this one</a>. Your search continues:
good luck.</p>
<p>But no. I had managed to have the other problem, which no-one ever talks about.</p>
<p>I’ve already done all the dual-boot setup things, issued the weird command in
Windows from an administrator prompt, tweaked the BIOS settings so the right
things are enabled or disabled or whatever, set Grub to display a menu with a
ten second time out and had everything working Just Fine. Except the Grub menu
wouldn’t appear. Instead it would just wait ten seconds and boot to Linux.</p>
<p>Linux is almost always what I want - the Windows installation is only there
because I needed it for work purposes in my previous job, which ended two years
ago - but it’s still annoying.</p>
<p>Recently, after years of stability, the laptop started getting a bit crashy,
due to <a href="https://askubuntu.com/questions/1353859/ubuntu-18-04-05-lts-desktop-hangs-with-since-kernel-4-15-0-151-and-systemd-237-3">this Ubuntu bug</a> and
the problem went from ‘annoying’ to ‘serious PITA’ because it wasn’t easily
possible to boot into recovery mode or select a different kernel.</p>
<p>Time to start poking about again. But nothing worked, and why would it?</p>
<p>I have no idea what I am doing with any of this stuff - I can’t even set up
dual-boot properly.</p>
<p>Anyway.</p>
<p>Turns out all I needed to do was edit <code class="highlighter-rouge">/etc/default/grub</code>, <em>uncomment</em> the
line that says <code class="highlighter-rouge">GRUB_TERMINAL=console</code> then run <code class="highlighter-rouge">update-grub</code> and reboot.</p>
<p>Because of course it was.</p>
<p>Truly, 2021 is the year that Linux is finally ready for the desktop.</p>
<p>You’re welcome.</p>This is going to be either the most boring blog post in the entire history of blogging or the best thing you have read in years, depending on whether or not you too have a laptop set up to dual-boot Windows and Linux, and the laptop always boots directly to Linux - which is what you usually want, so you’ve been living with it, for, say, five years - but you’d quite like to have the Grub menu displayed first so you can mostly ignore it and let the default option run anyway.