@blog@shkspr.mobi avatar

blog

@blog@shkspr.mobi

This profile is from a federated server and may be incomplete. Browse more on the original instance.

blog, to blogging
@blog@shkspr.mobi avatar

https://shkspr.mobi/blog/2024/05/49911/

While attending IndieWebCamp in Brighton a few weeks ago, a bunch of us were talking about blogging. What is post? What should it contain? What's optional?

Someone (probably Jeremy Keith said:

A blog post doesn't need a title.

In a literal sense, he was wrong. The HTML specification makes it clear that the <title> element is mandatory. All documents have title.

But, in a practical sense, he was right. This blog post has an empty <h1> element - the document might be semantically invalid, it might reduce accessibility, but the post is still available.

A blog post can be a plain text document uploaded to a server. It can be an image hosted on a social network. It can be a voice note shared with your friends.

Title, dates, comments, links, and text are all optional.

No one is policing this.

Go create something which doesn't fit properly with the rest of the world.

https://shkspr.mobi/blog/2024/05/49911/

blog, to markdown
@blog@shkspr.mobi avatar

WordPress GeSHi Highlighting for Markdown
https://shkspr.mobi/blog/2024/05/wordpress-geshi-highlighting-for-markdown/

I've launched a WordPress Plugin for an extremely niche use-case.

WP GeSHi Highlight Redux works with WordPress's Classic Editor to convert Markdown to syntax highlighted code.

That allows me to write:

php$a = "Hello";$b = 5 * 2;echo $a . str($b);

And have it displayed as:

$a = "Hello";$b = 5 * 2;echo $a . str($b);

I've previously written about the WP GeSHi Highlight plugin. My plugin is a fork of that. It has the following changes:

  • RSS & Atom feeds - disable code highlighting
  • Remove extra style wrappers
  • Markdown support
  • Remove line-numbers
  • Remove escape option (escape now permanent)
  • Remove TinyMCE changes
  • Remove custom CSS options
  • Improve default CSS
  • Improve HTML detection

These changes work for me, with my weird blogging set-up. If they work for you, feel free to use it. If they don't work for you, please fork and write your own code.

You can download WP GeSHi Highlight Redux or get the original plugin.

https://shkspr.mobi/blog/2024/05/wordpress-geshi-highlighting-for-markdown/

blog, to Theatre
@blog@shkspr.mobi avatar

Theatre Review: Opening Night
https://shkspr.mobi/blog/2024/04/theatre-review-opening-night/

Poster for Opening Night.Opening Night is complex, fascinating, and flawed.

It is baffling that this is somehow less than the sum of its parts. The acting and singing are incredible - Nicola Hughes in particular has a magnificent stage presence. The directing and staging is wonderfully innovative - giving even the most distant seat a close-up view. The songs are all great - with "You gotta make magic" a standout hit. The whole ensemble comes together in a perfect display of a what a West End musical is supposed to be.

And yet... there's nothing there. Part of the problem is the paper-thin and scattershot story. An actress doesn't like her part because... ummm... she's not old enough? She sort of manifests a younger version of herself, but that's never really explored. There's a bit of sexual tension which doesn't really have an emotional arc.

The use of handheld cameras to project the action on screen (similar to The Mind Mangler down the street) makes the whole thing feel more cinematic. When people are paying a fortune for nose-bleed seats, they deserve a decent view of the action. But, like any gig, I sometimes felt I was watching the screen more than the stage. At which point I might as well have been home watching it on Netflix rather than paying a tenner for a glass of wine. It also suffers from the same problem as the movie version of Les Mis; the actors are doing stage acting - designed to project emotions to vast distances - when caught on camera it can look like a little ridiculous.

There's very little space for audience appreciation, which is weird. In most musicals, there's a suitable pause after each big number so the audience can applaud. Due to the naturalistic way the show is presented, many songs immediately segue into dialogue - which means a smattering of applause quickly withers on the vine.

Sheridan Smith dominates the stage. She is an utter powerhouse, giving it her all. The rest of the cast - including a tragically underused Amy Lennox from Cabaret - are spectacular. The various background players make for an impressive Greek Chorus. It is impossible to fault their performances.

It's just their performances are in service of such a mediocre and incoherent story. Even at the end I was left confused about what I'd just seen. There's no particular resolution, the characters aren't especially sympathetic, and there's nothing interesting to be said afterwards.

If you're happy to be swept along by the spectacle, and don't want to think too hard about the plot, characters, or meaning, then it is a fine night out. I just found it a bit incoherent.

But, at the end, the rest of the audience rose for a standing ovation - so what do I know?

https://shkspr.mobi/blog/2024/04/theatre-review-opening-night/

blog, to Catroventos
@blog@shkspr.mobi avatar

Do That After This
https://shkspr.mobi/blog/2024/04/do-that-after-this/

I was building some flatpack furniture the other day (my life is so glamorous) when I came across an interesting example of how not to write technical documentation.

Drill a hole in part A and insert part B once you have ensured part C has been aligned after its connection to A.

Most people can handle reading a whole sentence to figure out what's going on. But, after a tiring day of building, it is somewhat annoying having to juggle instructions into actions.

Most readers will assume that instructions are written in linear time. Do this, then that. But that example is non-linear. What it is trying to say is:

Connect part C with part A. Then align part C and part A. Then drill the hole in part A. Then insert part B into part A.

It is slightly less interesting writing. But it presents all the actions in the order they need to be taken.

I see this temporally-mixed anti-pattern all the time. A typical example of this in technical documentation is:

Select Print from the File menu.

A simpler, clearer, and less ambiguous way of writing that is:

Open the File menu. Select Print.

Another similar example of confusing writing is:

Go to File → Print → Settings if you need to change the paper size.

Again, this places cognitive burden on the reader. If they want to understand if the instruction is relevant to them, they have to read the entire sentence. When faced with dozens of sentences, this can become confusing. The solution is:

If you want to do X, then do Y...

Immediately the reader knows that they can skip this sentence because they don't want to do X.

As technical writers, we sometimes want to craft eloquent prose. We long for glorious and intricate sentences. We tire of the monotony of linear writing.

Tough. We need to get over ourselves. Go write that epic fantasy novel you've been thinking about. The job of a technical writer isn't to entertain, enliven, or delight the reader. The job is to give them instructions in an easy to follow format, reducing the amount of cognitive burden they have, and making it quick to find the information they need.

https://shkspr.mobi/blog/2024/04/do-that-after-this/

#documentation #English #language

blog, to Starwars
@blog@shkspr.mobi avatar

Book Review - Star Wars Propaganda: A History of Persuasive Art in the Galaxy
https://shkspr.mobi/blog/2024/04/book-review-star-wars-propaganda-a-history-of-persuasive-art-in-the-galaxy/

Book cover for Star Wars Propaganda.This is a weird book. The politics of the Star Wars universe are rarely deeply examined. The various tax-related shenanigans of The Phantom Menace were derided by geeks but here become a potent source for art as a dozen artists reimagine classic propaganda posters from Earth and remix them with pop-culture.

There are some stunning pieces of art - with a real feel of history. Here's a typical sample:

Group of posters with fine artwork.

Others just look like they were stitched together from clipart.

Crappy looking clipart poster featuring cut outs of various Star Wars aliens.

The images are a decently sized - but could have been a bit higher resolution for viewing on a tablet.

The textual content is mostly unserious filler. It is a weird pastiche of history books, going through the purported story of the artists and circumstances behind the propaganda. It is further padded with low-resolution screenshots from the movies.

It might have been better if this were a proper art book - showing the human-world's propaganda and how a series of artists adopted and synthesised it for Star Wars. If you aren't familiar with 20th Century poster art, some of the significance will be lost on you. One nice touch is that the book prominently lists the human artists behind each work.

You'll flick through the book in about 20 minutes. It's the sort of thing which could have been a BuzzFeed listicle. It's further cheapened by the adverts for OpenRoad Media's book giveaways. Beware, if you sign up for them, you'll find it difficult to remove yourself from their endless mailing lists.

https://shkspr.mobi/blog/2024/04/book-review-star-wars-propaganda-a-history-of-persuasive-art-in-the-galaxy/

blog, to Futurology
@blog@shkspr.mobi avatar

Universal Basic Website
https://shkspr.mobi/blog/2024/04/universal-basic-website/

Many years ago - when I was very young and you were even younger - it was standard for an ISP to provide all their users with a small amount of webspace. Both Pipex and Demon offered webspace back in 1996. If my hazy memory is correct, they offered a few megabytes - more than enough for a fledgeling website1.

But, over the years, ISPs shut down their bundled web offerings. Even their bundled email services went on the chopping block. This is sad, but understandable. Most people unbundled their email so they didn't need to stick with the same ISP. Why have user@isp.example when you could have a GMail address?

And, indeed, why host data with your ISP when you could just use Facebook?

For most people, Facebook is a pretty good personal website. You can post your photos and have your friends & family see them. You can write long heartfelt rants about your teenage melodrama. You can put up the opening times of your new business. You can even host a discussion board around a specific topic.

Now, don't get me wrong, there are a few problems with Facebook2. All your faves are problematic. But I think it shows that people want the benefits of personal websites, even if they don't want the hassle of running those websites.

What does the world look like if a country offers its citizens a Universal Basic Website? Similar to Universal Basic Income, a no-questions asked entitlement to a chunk of the Web. Perhaps a generic subdomain, some storage space, and an easy to use interface?

Oh, sure, there are lots of technical issues. You'd probably have to make sure people weren't running unapproved scripts. Moderation of prohibited content would be contentious. Tech support would be a nightmare. Some corrupt company would get billions to run a sub-standard service. A failed backup or a hacker would wipe out your bakery's recipes.

But...

We accept that there are common spaces in the real world3 where people can have fun without paying. Anyone can go to a park. Anyone can stick a flyer up on a community notice board. We let kids ride the bus for free.

Can we do the same in cyberspace?

You can read some other peoples' thoughts on this Mastodon thread.


  1. With background MIDI music, as was the fashion of the day.
  2. This is an understatement.
  3. AKA Meatspace. AKA AFK.

https://shkspr.mobi/blog/2024/04/universal-basic-website/

blog, to Theatre
@blog@shkspr.mobi avatar

Theatre Review: The Mind Mangler
https://shkspr.mobi/blog/2024/04/theatre-review-the-mind-mangler/

Photo of a man standing on a stage with an illuminated sign reading "Mind Mangler".This is a blast from start to finish. I haven't heard such screams of laughter since, well, the last Mischief production I saw!

The Mind Manger is a crap magician dealing with his shitty home life, a tosspot stooge, and an audience full of idiots. Naturally, everything that can go wrong does go wrong. Imagine a very grumpy Tommy Cooper who despises his audience and, against all the evidence to the contrary, is convinced of his own mesmeric ability.

It's a fully interactive show - the whole audience become part of the act in various misconceived ways. Of course, when the magic does work, it is spectacular.

If you can, get front row seats. We had a close up view of all the mishaps and were drawn in to some of the tricks. Joyous to peek just a little bit behind the curtain.

The London run ends in a few days, and then it is off on tour. Absolutely worth grabbing a ticket. Positively daft fun for all ages.

https://shkspr.mobi/blog/2024/04/theatre-review-the-mind-mangler/

blog, (edited ) to videos
@blog@shkspr.mobi avatar

Gadget Review: KAIWEETS KTI-W01 Thermal Imaging Camera
https://shkspr.mobi/blog/2024/04/gadget-review-kaiweets-kti-w01-thermal-imaging-camera/

The good folks at Kaiweets have sent me their KTI-W01 Thermal Camera to review. You can use coupon code TEB15 for an exclusive 15% discount.

Let's get this unboxed and working!

Demo

Photos

The photos are stored as JPGs which can be read by any normal graphics program. They also contain the thermal metadata which you can extract with specialist tools.

Here's the full photo taken with the camera. It shows the interior of an office with some computer equipment on a shelf.

Infrared photo.

You aren't going to get high-resolution photos out of this - 256x192 is what the thermal sensor provides. That's overlayed on a graphic.

It includes different filters so you can see just the thermals, the real image, or a mix of the two.

A thermal selfie.

Because the optical camera is quite some distance from the thermal camera, it doesn't cope well with close ups - as you can see. Luckily, this can be adjusted in the UI by pressing the up and down keys.

Videos

As well as static shots, it will take video - 240x320 resolution and 25fps - well, ish. It looks a bit jerkier than that to me. But it is good enough to see what's going on.

In this video, I've recorded a bath filling up. Towards the end, I've changed the settings so it shows more of the real-colour video with the heat overlayed.

https://shkspr.mobi/blog/wp-content/uploads/2024/04/bathtub.mp4

Filesize is about 1.5MB per minute - I've recompressed it for upload. I couldn't see any specific thermal metadata in the video.

Linux

Amusingly, it shows up as 1f3a:1000 Allwinner Technology Prestigio PER3464B ebook reader (Mass storage mode). Nevertheless, the 30GB volume was mountable and had an IMGS/ directory full of JPGs.

There is a Windows app, which I was able to run in PlayOnLinux. It offers a few features, such as being able to change the colour scheme of the photo, and pick out specific temperature points.

What's Great

The integrated lens-cap is is a thoughtful touch. As is the hand-strap and included padded case.

The trigger action feels great and is instantly responsive. There are a bunch of menu options if you like to fiddle with things.

Oh, and it is USB-C! So it will take the same charging and data transfer cable as all your other gadgets.

Overall, a nice package.

Downsides

The button layout is a little odd. The buttons feel nice and are responsive. But I would have expected the "Enter" button to be in the centre of the directional buttons.

It is a little slow booting up - but then, this isn't designed for quick action shots.

After taking a photo or a video, it asks if you want to save it every time. That's a little annoying. There's 30GB of storage and photos are only about 300KB - so it should be good for about 100,000 photos.

The videos are recorded without sound. A cheap microphone would make it easy to narrate what's going on in a shot.

Weirdly, the bundled app doesn't work on videos.

There's no expandable storage - the 30GB is plenty, but sometimes it is easier to shove an SD card into a computer.

Finally, there's no mounting point. Other cameras I've tried have a connector so they can be attached to a tripod. This is strictly hand-held only.

Verdict

This costs £200 - £250 depending on whether the algorithm likes you. Astonishingly, that's cheap for a thermal camera of this quality!

If you're into DIY, or you want to check the thermal efficiency of your home, or you just want to see how hot things are - this is a useful bit of kit. It's sturdy and well built. Dragging images and videos off it is a breeze - even if you don't use the official app.

The interface isn't the greatest thing in the world. But all you need to do is point and click. It's the sort of thing that's unexpectedly handy around the house with all sorts of tasks - from checking if the radiators are balanced, to seeing if a hidden plug is spewing heat.

£200ish isn't cheap cheap. But it is cheap enough that most geeks should have something like this. Also worth buying for community groups who want to check for heat leaks in their properties.

If you are happy with the slight user-interface oddities, and don't need a tripod mount, this is an excellent gadget.

Readers of this blog can use coupon code TEB15 for an exclusive 15% discount.

If you're American and would prefer to buy from Amazon.com, get 10% off with code E5W6NW8V until 2024-06-30 https://www.amazon.com/dp/B0CB7Q6J79

https://shkspr.mobi/blog/2024/04/gadget-review-kaiweets-kti-w01-thermal-imaging-camera/

#gadget #infrared #review #thermal #usbC

blog, to random
@blog@shkspr.mobi avatar

Book Review - Systems Ultra: Making Sense of Technology in a Complex World by Georgina Voss
https://shkspr.mobi/blog/2024/04/book-review-systems-ultra-making-sense-of-technology-in-a-complex-world-by-georgina-voss/

Book cover for Systems Ultra.Every technology is a transitional technology. This book makes the case that the complexity of modern technology is, well, complex! Systems are designed by so many people that their outputs are an utter mystery to anyone - even those deeply enmeshed within them.

It is somewhat scattershot - leaping between sextech, payment processors, architecture, and half a dozen other subjects. Each chapter is a worthy examination of a complex technology - but I felt it would have benefited from being a little more focussed.

‘what happens when systems break?’ is that they become visible.

This, I think, is the crux of the book. We don't notice the systems around us until they no longer work. That might be because a power cable is severed, or it might be because we as individuals are rejected from it. There's a long discussion about accepting payment for adult services. It turns out that payment processors who refuse to serve that market aren't making a moral judgement - the economics of constant chargebacks and fraud simply make it unprofitable.

To invent the sailing ship or the steamer is to invent the shipwreck. To invent the family automobile is to produce the pile-up on the highway. Every technology carries its own negativity, which is invented at the same time as technical progress.

  • Paul Virilio

Every system creates its own waste-product. To invent Internet tracking is to invent the data breach. To invent the password is to invent the cracker. It was Katherine Myronuk who said "All complex ecosystems have parasites" - but I think it is more pervasive than that. Complex systems have inherent flaws which reveal themselves in disturbing and unexpected ways.

Systems are both structure and behaviour.

If we engage with systems, it is our reaction to them which often shapes how they behave. Technology isn't just action, it must also be reaction.

‘In the future . . .’ is rife at CES. It smooths the gap between the cracked asphalt on the roads outside the convention centre and the promise of new sensor-embedded freeways that autonomous cars can navigate. ‘In the future . . .’ offers a familiar world with the same old culture but now, we have jetpacks.

This is the key misunderstanding that technologists have. We point to the future without ever explaining how on Earth we get there! Transitional technology is everything. And yet, we cannot invent a new system without creating a failure mode with severe ramifications.

The book is a little meandering and could do with some phones to illustrate the subjects it is talking about. But it is certainly an intriguing ramble through the complexity of the modern systems and some of the implications those complexities impose on our future.

https://shkspr.mobi/blog/2024/04/book-review-systems-ultra-making-sense-of-technology-in-a-complex-world-by-georgina-voss/

blog, to hardware
@blog@shkspr.mobi avatar

Review: WAVLINK DisplayLink - Dual HDMI/DisplayPort adapter
https://shkspr.mobi/blog/2024/04/review-wavlink-displaylink-dual-hdmi-displayport-adapter/

The good folk at WAVLINK have sent me their Dual-Screen USB-C adapter to review. Plug it in to a USB-C socket and you now have two extra monitor ports. It'll even work on a USB-A socket, if it is USB 3.0.

But is it any good? No. Not really.

Hardware

It's a fairly chunky hub, with a tragically short USB cable.

Chunky silver unit with a short USB cable.

The USB cable has a dongle which converts it from C to A. That's handy if you don't have enough C ports. But the cable being so short means it is sort of awkward to place. If you're on a narrow desk, the weighty adapter will just be left swinging.

On the back are four ports - two DisplayPorts and two HDMI.

Output device with four ports.

But you can only use two at a time. I stuck a DP in the left and an HDMI in the right and (eventually) it worked! I was able to get 4k @ 60Hz and 1080p @ 60Hz on my screens.

Three screens with the content spread across them.

It also passed through audio, although I couldn't find a way to select which monitor received the output.

There's also the requisite blue LED to let you know it is working.

Sadly, it is a bit of a faff to get set up because it is a DisplayLink adapter, rather than a USB-C hub. The manual spends 11 pages talking about driver installation!

Linux

Plugging it in to Linux shows 17e9:6000 DisplayLink USB3.0 5K Graphic Adapter - so it was detected without issue. That said, there were some warnings in dmesg:

Warning! Unlikely big volume range (=672), cval->res is probably wrong.[7] FU [USB Audio Playback Volume] ch = 6, val = -10752/0/16

But plugging it in doesn't give you extra screens. Instead, you need to visit DisplayLink.com to download the drivers. They are only available for Ubuntu Linux. There are also drivers for Windows, ChromeOS, Mac, and Android.

Despite my best efforts, I couldn't get them to work. It looks pretty buggy. Instead, I downloaded a random GitHub repo which installed the right drivers and got it working.

Once that was done, my laptop happily detected both external screens - one HDMI, one DisplayPort. It was able to change resolution, rotation, and refresh rate using Wayland. It even worked through the USB-A socket as well as the C.

Verdict

It's hard to know who this adapter is for. On the one hand, it does its job brilliantly. It turns your USB3 / USB-C port into a dual output device for two 4k monitors. On the other hand, that's all it does.

It costs £80 - which is a large chunk of change. Especially considering you can get USB-C hubs with dual DisplayPort for literally half that price - and most of those also come with extra USB ports, Power Delivery, Ethernet, audio etc.

Installing the DisplayLink software is a pain. USB-C means that I should be able to plug in an adapter and have it just work. With this, you have to manually install drivers and reboot before it will work. Good luck getting those drivers installed on a corporate laptop!

In theory, it can go up to 5K (5120x1440) on each DisplayPort - but I don't had a screen to test it on. If you need that sort of resolution, that's the only reason I can think for buying this.

It works - but it isn't plug-and-play, the drivers are a pain, USB cable is too short, it has limited functionality, it is too bulky, and is over-priced.

https://shkspr.mobi/blog/2024/04/review-wavlink-displaylink-dual-hdmi-displayport-adapter/

blog, to android
@blog@shkspr.mobi avatar

Software I Miss from Earlier Versions of Android
https://shkspr.mobi/blog/2024/04/software-i-miss-from-earlier-versions-of-android/

My love of Android waxes and wanes according to how much the software feels like it is fighting me. On a good day, I can flash the OS and install whatever apps I want. On a bad day, I can't remove bloatware and I'm forbidden from changing the internals.

I started using the latest Google version of Android on their Pixel 8 Pro. I say "their" because it never really felt like the device was mine. Google kept popping up and asking me to do things which were clearly in their interest; not mine. There was very little way to remove Google's features. I was beholden to them. Forget that noise! I flashed GrapheneOS and regained some control.

But there are still some things missing from the modern Android experience. Things which I'm sure used to exist on earlier versions, but have since been scrapped or severely restricted.

Here's what they stole from us.

Customised Fonts

I can't remember which version of Android I first had which let me change the font to Comic Sans. But that ability doesn't exist any more - not without rooting your phone and severely monkeying with its internals.

Google's Noto font is, sadly, abandonware. Aside from new Emoji, Google show no interest in putting a modern font stack into Android. So we're left with a fairly dull and incomplete corporate font.

Button Swapping

Android originally had the back button on the right of the screen. Then, in Google's infinite wisdom, it was swapped to the left. Why? Fuck your muscle-memory, I guess?

Nevertheless, Android used to let you swap the order of the on-screen keys. This is not a particularly challenging software requirement - yet seems beyond modern Android.

Call Recording

Google is indecisive on whether call recording should be allowed. It is legal in most parts of the world, and used to be well supported by Android.

Nowadays you have to flash a ROM to get this basic functionality back.

SIP Built-in.

You used to be able to add VoIP / SIP calls to Android for free! But the latest version doesn't let you do that any more.

Custom Ringtones and Vibration Patterns

I'm sure that I used to be able to set a different vibration pattern for different sorts of alerts. But I can't find that functionality anywhere these days. Same for different alert tones for different people.

Task switcher clear-all button

If I want to close all my open apps, I have to go to task switcher then scroll all the way across. It was handy when there was a "close all" button at the bottom of the screen.

Data SIM switcher

I have multiple SIMs. They can both receive calls and texts, but only one can be used for data. There used to be a button I could press to flip between the two. Now I have to go into the settings, and fiddle with a bunch of options. Annoying!

And the rest

What software do you miss the most from old versions of Android?

https://shkspr.mobi/blog/2024/04/software-i-miss-from-earlier-versions-of-android/

blog, to Theatre
@blog@shkspr.mobi avatar

Theatre Review: The Divine Mrs S
https://shkspr.mobi/blog/2024/04/theatre-review-the-divine-mrs-s/

An outstanding and joyous show. Through Rachael Stirling we catch a glimpse of Sarah Siddons - the acclaimed 18th/19th century actress. Stirling - and the entire cast - are exceptional. They transport us backstage with a dazzling array of characters. Every single actor gets a scene-stealing moment - it's lovely to see a cast having so much fun.

It is Noises Off versus The Patriarchy as we discover how hard it is to be a actress (and authoress) in a world where female celebrity was only just beginning. It bounces between high drama and farce effortlessly. There are some very "actorly" mditations on what it means to be a performer, the price of fame, and how to handle a truculent audience.

The show runs for another week and is exceptional.

https://shkspr.mobi/blog/2024/04/theatre-review-the-divine-mrs-s/

blog, to php
@blog@shkspr.mobi avatar

Where you can (and can't) use Emoji in PHP
https://shkspr.mobi/blog/2024/04/where-you-can-and-cant-use-emoji-in-php/

I was noodling around in PHP the other day and discovered that this works:

<?php$🍞 = "bread";echo "Some delicious " . $🍞;

I mean, there's no reason why it shouldn't work. An emoji is just a Unicode character (OK, not just a character - but we'll get on to that), so it should be fine to use anywhere.

Emoji work perfectly well as function names:

function 😺🐶() {   echo "catdog!";}😺🐶();

Definitions:

define( "❓", "huh?" );echo ❓;

And, well, pretty much everywhere:

class 🦜{    public int $🐦;    public ?string $🦃;    public function __construct(int $🐦, ?string $🦃)    {        $this->🐦 = $🐦;        $this->🦃 = $🦃;    }}$🐓 = new 🦜(1234, "birb");echo $🐓->🐦;

How about namespaces? Yup!

namespace 😜;class 😉 {    public function 😘() {        echo "Wink!";    }}use 😜😉;$😊 = new 😉();$😊->😘();

Even moderately complex Unicode sequences work:

echo <<<🏳️‍🌈Unicode is magic!🏳️‍🌈;

I've written before about the Quirks and Limitations of Emoji Flags. The humble 🏳️‍🌈 is actually the sequence U+1F3F3 (white flag), U+FE0F (Variation Selector 16), U+200D (Zero Width Joiner), U+1F308 (Rainbow).

Take a complex emoji like "Female Astronaut with Medium Dark Skin Tone" - 🧑🏾‍🚀 - that also works!

$🧑🏾‍🚀 = 1;$👷🏻‍♂️ = 2;echo $🧑🏾‍🚀 + $👷🏻‍♂️;

Probable the most complex emoji has 10 different codepoints! It looks like this - 🧑🏾‍❤️‍💋‍🧑🏻

And it works!

$🧑🏾‍❤️‍💋‍🧑🏻 = "Kiss Kiss. Bang Bang!";echo $🧑🏾‍❤️‍💋‍🧑🏻[-1];

There are some emoji which don't work;

$5️⃣ = "five";

The 5️⃣ emoji is U+0035 (Digit Five), U+FE0F (Variation Selector 16), U+20E3 (Combining Enclosing Keycap). PHP doesn't allow variables to start with digits, so it craps out with PHP Parse error: syntax error, unexpected integer "5", expecting variable or "{" or "$" in php shell code on line 1

You also can't use "punctuation" emoji as though they were normal characters:

echo 5 ❗= 6;

And, while not strictly emoji, you can't use mathematical symbols:

echo 5 ≤ 6;

So, there you have it. Is this useful? Well, probably. It is easy to get lost in a sea of text - so little pictograms can make it easier to see what you're doing. If the basic ASCII characters aren't part of your native language, perhaps it is useful to make use of the full range of Unicode.

Does your favourite programming language support Emoji?

https://shkspr.mobi/blog/2024/04/where-you-can-and-cant-use-emoji-in-php/

blog, to random
@blog@shkspr.mobi avatar

Toilet Review! Better Bathrooms Smart Toilet Seat
https://shkspr.mobi/blog/2024/04/toilet-review-better-bathrooms-_27403/

I want to make one thing very clear. Despite my propensity for IoT gadgetry, I did not connect my toilet to the Internet!

It's 2024. Why are you still scraping your arsehole with paper like some kind of 20th century throwback? A decade ago, I got a cheap bidet attachment. It wasn't great. The water was cold, the fittings leaked, and the plastic was creaky.

For our recent bathroom renovation, I decided that I wanted to get a proper Japanese style toilet with integrated bidet and all the technology I could find.

That didn't quite pan out. You can pay literally thousands of pounds for a "smart" toilet. And if you want the seat separately, that can cost several hundred quid as well. As much as I value my posterior, I didn't fancy paying through it!

But, with diligent research, I found one for £300 - that included the toilet, cistern, and smart seat.

It has blinkenlights!

What it does

Oh! A whole bunch! It offers rear and front wash - with an adjustable angle. It warms the water to your preferred temperature. While it is washing, it can oscillate and massage. And the whole thing can be controlled by a couple of built-in buttons, or a relatively simple remote control.

Wireless remote. Control your smart toilet using the handy integrated control buttons, or the wireless magnetic remote. The remote also comes with a convenient holder that attaches to a wall. Self-cleaning hose. This intelligent toilet is incredibly hygienic. It automatically cleans itself before use or every 72 hours when not in use to eliminate bacteria. Set your ideal hose position to one of five angles. The hose is concealed within the toilet seat when not in use. The white nightlight automatically turns on when low light is detected. This means you’ll find it easier to fall asleep after a night-time trip to the loo. Enjoy a hygienic cleaning experience choose from a front, rear or front and rear wash. The built-in sensor ensures wash and dry functions will only occur while you're seated. In a power cut, this toilet will function like a regular toilet. Choose between five water temperature settings (31-39°C). Then, select one of five spray wash modes to find your preferred level. Enjoy maximum hygiene and easy installation with a quick release seat. This design is quick and easy to remove and to aid easy cleaning of the seat and toilet itself.

There's also a little hatch for putting in some limescale remover, and a drain hole if you need to empty the bidet's tank - so should be pretty good for maintenance.

The remote has a magnetic holster which can be stuck to a nearby surface.

Oh, and there's a handy night-light.

A dark room. An ethereal glowing light emanates from the bowl of a toilet. Possibly leading sailors to their doom.

What it

At this price, there are limits to the technology. The seat isn't heated. The toilet lid doesn't automatically open or close. It doesn't play a little tune while you're going about your business. There's no air-dryer to remove excess water from your botty. No UV light sterilisation. The flush is manual - although it is dual control. It won't spray perfume into the water after a particularly troublesome dump.

Although there's a remote, the number of buttons build in to the seat are limited - front, back, and stop.

And, crucially, there's no Internet or Bluetooth connectivity.

Look, I know you think I'm stupid. But I would have like to control it from my phone. I'm going to be taking it in there with me anyway, so why can't I open an app to load my water temperature preferences?

The tech

The remote control operates at 2460MHz - which should keep it safe from naughty reprobates who have a Flipper Zero. But I doubt it offers any significant protection against a determined hacker. If you have multiple loos, is possible to set the remote to a different ID to prevent accidental interference.

The main protection seems to be the buttock detection software. Using a small camera presence sensor, the bidet refuses to operate until you have wedged yourself on the throne.

The pump and heater aren't overly powerful, so I'm not too worried about a hacker blasting a jet of boiling hot water up where the sun don't shine.

Downsides

There are a few minor annoyances. The pump is a little on the noisy side. It is quieter than a flush, but the whirring is noticeable.

The plumbing is somewhat complicated. Our bathroom fitter said it wasn't the neatest design to fit. The water hose juts out a little from the side, as does the power cable. They then wrap behind the unit.

It does feel a little narrower than other loos I've used. But it is plenty big enough for me.

Verdict

I can't find anything online about the "Purificare" brand. I suspect this is a white-label product; there seem to be several similar variants around. So I've no idea how reliable they are.

I wasn't expecting miracles for £300 - but I'm pretty impressed! As a toilet, it does the job. It is solid and the flush is powerful enough for my vegetarian diet.

The bidet is delightful. I mean that sincerely! Having a pulsing jet of moderately warm water, washing away the shameful filth of your pitiful human body, is a sensory delight. My tush has never been cleaner and my toilet-paper bills are much reduced.

If, like me, you spend more time on the bog than is strictly necessary, this is a reasonably priced accessory and will make even the most urgent visit to the smallest room a relaxing and pleasant experience.

https://shkspr.mobi/blog/2024/04/toilet-review-better-bathrooms-_27403/

blog, to python
@blog@shkspr.mobi avatar

Server-Side Rendering of Embedded Markdown Code Snippets in WordPress
https://shkspr.mobi/blog/2024/04/server-side-rendering-of-embedded-markdown-code-snippets/

Because I'm a grumpy old man, I don't use Gutenberg or Block themes on my WordPress. Instead, I write everything in Markdown.

When I write code snippets in Markdown, they look like this:

php$a = 1;echo $a;if ($a < 5) { // Do Something return thing( $a, true );}

But I want to render that with code highlighting. I was using the Prismatic Plugin. It is excellent and very customisable. But it uses JavaScript to do the code highlighting. I want to respect my readers' time and battery life; so I'm trying to reduce my dependency on Client-Side rendering.

I've switched to a modified version of WP-GeSHi-Highlight. That turns the above Markdown into:

$a = 1;echo $a;if ($a < 5) {   // Do Something   return thing( $a, true );}

Necessary Changes

When the JetPack Markdown pre-processor encounters a code block, it changes:

```php

into

<code class="language-php">

This means the WP-GeSHi-Highlight detection needs to be changed.

Old version:

return preg_replace_callback(    "/s*".    "(.*)</pre>s*/siU",   "wp_geshi_store_and_substitute",   $s);

New version:

return preg_replace_callback(    "/s*".    "(.*)</code>s*/siU",   "wp_geshi_store_and_substitute",   $s);

One of those matches looks for escaped= which can be true or false. I always want this to be true so, later in the code, I change a variable from:

$escaped = trim($match[3]);

To:

$escaped = true;

Style Changes

By default, everything looks pretty good - but there are a few changes I found necessary to make.

Firstly, there was something weird going on with the line-heights of my style, so I added this to my site's CSS:

/* GeSHI Highlighter Fixes */pre:has(> .wp-geshi-highlight-wrap5) {    line-height: 0;    padding: 0;    background: none;    filter: invert(1);}

The invert gives it a dark mode.

Secondly, in order to make any changes to the default styles of the highlighter, you need to add the bundled wp-geshi-highlight.css file into your style directory. The plugin will use that if it exists - so you can change font size and padding to be the same as your main theme.

Limitations

There are a few limitations with this approach.

No line-numbers. The plugin looks for something like line="13", but there's no way to add that in Markdown.

GeSHi hasn't received style updates on some languages for quite some time. It hasn't received any significant update since 2019. Which means bugs and security issues are likely.

Language definitions are quite strict. You can use javascript but not json.

The plugin doesn't have any options - nor an easy way to override its settings. So I've monkeypatched everything above. If the plugin updates, I'll need to change my code.

Demos

A few demos - just so you can see what it looks like.

Python

#!/usr/bin/env pythonfrom datetime import datetime, timedeltafrom mastodon import Mastodonfrom bs4 import BeautifulSoupimport config#  Set up accessmastodon = Mastodon( api_base_url=config.instance, access_token=config.access_token )#  Get user's infome = mastodon.me()my_id = me["id"]year_joined = me["created_at"].year

Bash

if [ "$(basename $2)" = "Image.gz" ] || [ "$(basename $2)" = "vmlinuz.efi" ]then# Compressed install  echo "Installing compressed kernel"  base=vmlinuzelse# Normal install  echo "Installing normal kernel"  base=vmlinuxfiif [ -f $4/$base-$1 ]; then  mv $4/$base-$1 $4/$base-$1.oldfi

Rust

// This is the main function.fn main() {    // Print text to the console.    println!("Hello World!");}

JavaScript

if (hour < 18) {  greeting = "Good day";  alert( greeting );} 

https://shkspr.mobi/blog/2024/04/server-side-rendering-of-embedded-markdown-code-snippets/

#HowTo #php #programming #WordPress

blog, (edited ) to aa
@blog@shkspr.mobi avatar

I can't use my number pad for 2FA codes
https://shkspr.mobi/blog/2024/04/i-cant-use-my-number-pad-for-2fa-codes/

This has to be the most infuriating bug report I've ever submitted.

I went to type in my 2FA code on a website - but no numbers appeared on screen. Obviously, I was an idiot and had forgotten to press the NumLock button. D'oh! I toggled it on and typed again. No numbers appeared. I switched to another tab, my numbers appeared when I typed them. So I was reasonably confident that my keyboard was working.

I swapped back to the 2FA entry and tried again. Still nothing. Then I tried typing the numbers using the number row on my keyboard. My 2FA code appeared.

WHAT IN THE SAINTED NAME OF ALPHONSE CHAPANIS IS GOING ON?!?!?

Developers often use JavaScript to "improve" the standard features of HTML. For example, using <input type="number"> has some accessibility concerns and using https://css-tricks.com/everything-you-ever-wanted-to-know-about-inputmode/#aa-numeric is great for showing a number key board on mobile, but not much else.

So a developer wants a reliable way to make sure a user can only type numbers. Fair enough.

There are two ways to do this - a right way and a wrong way - using https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.

One way is to listen for the character being sent from the keyboard - known as the key.

The other is to listen for the - known as the code.

A good demo of this is at keyjs.dev - play around with it to see what keyboard buttons your browser can detect.

When I press 7 on the top row of my keyboard, the key is 7 and the code is Digit7.

But when I press 7 on my number pad, the key is 7 but the code is Numpad7.

The JavaScript on the website was rejecting any key code which wasn't a "Digit"!

Perhaps I am a weirdo for insisting on both having and using my numpad? Perhaps developers need to test on something other than MacBooks? Perhaps JavaScript was a mistake and the Web would be better without it?

Either way, don't be like that website. Let users type in using whatever keys they like.

https://shkspr.mobi/blog/2024/04/i-cant-use-my-number-pad-for-2fa-codes/

blog, to random
@blog@shkspr.mobi avatar

Book Review: The End of Mr. Y - Scarlett Thomas
https://shkspr.mobi/blog/2024/04/book-review-the-end-of-mr-y-scarlett-thomas/

Book cover of a swirling vortex of words.Oooh! This is an interesting slice of philosophical fiction. On the surface, it is a fairly standard story about a mysterious Victorian book which contains dark secrets and has since been lost to history. You probably know how it goes; our fearless heroine finds a long-lost copy, unlocks a weird world of intrigue, and is pursued by sinister forces.

But then it hits the philosophy - and hits it hard! A one-two punch of Heidegger and Derrida, taking us on a journey into deconstruction.

The book-within-a-book aspect is nothing new, but neatly done. Similarly, the secret agents chasing a book is derivative of a hundred stories, but here it comes with a fun little twist.

The prose is gorgeous and inventive. There are some beautifully written lines scattered throughout. Two particular favourites of mine were:

A collapsing wavefunction of violence.

and

Being cursed by The End of Mr. Y must mean becoming part of the book; an intertextual being: a book-cyborg, or, considering that books aren’t cybernetic, perhaps a bibliorg.

You can think of it like The Matrix, but with better philosophy, fewer guns, more metaphysics, and lots more sex. It is a surreal and disorientating journey through the looking-glass.

https://shkspr.mobi/blog/2024/04/book-review-the-end-of-mr-y-scarlett-thomas/

blog, to keyboard
@blog@shkspr.mobi avatar

Hardware I miss from my old Android phones
https://shkspr.mobi/blog/2024/04/hardware-i-miss-from-my-old-android-phones/

I've been using Android since before it was released in the UK. When I was working at Vodafone, I got a pre-release HTC device with an early version of Android on it. I've been pretty much in the Android ecosystem ever since.

Recently, I treated myself to an upgrade - a Pixel 8 Pro. The biggest, fastest, fattest, AI-stuffed Android phone yet. It's pretty good! The camera is excellent, the heat-sensor is crap1, the battery is gorgeous, the weight is annoying. Google's software was too needy, so I replaced it with GrapheneOS.

But, as much as I like the device, there are some hardware things which I think would improve it. No, I'm not talking about a headphone jack! I'm talking about useful things2.

More precise input

The early Androids - and most BlackBerrys - had either a rollerball or touch pad just below the screen.

https://twitter.com/edent/status/693736427314659328/photo/1

It made it so much easier to do precise selection. Yeah yeah, I know you can slide along the spacebar to move a cursor, but it just isn't the same.

I get that a rollerball gunks up pretty quickly - but a touchpad or optical joystick would be lovely. Perhaps it could go on the...

Rear finger-print sensor

The technology behind the in-screen fingerprint sensor is magical. It works brilliantly. But I rather liked my One Plus 5T's rear sensor. It didn't blast my face with light, and I found it more natural to use when picking up the phone.

But, even better, the rear sensor acted as an input! When I stroked down on it, the notification shade appeared. Stroking up dismissed it. I'd love to have a rear-input like that again. I'd like more inputs in general!

Physical Buttons

In the future, cars will be ditching touchscreens in favour of physical buttons. Perhaps Android will do the same?

This is the HTC Dream - the original Android. And it is perfection.

The HTC Dream G1 - it has a pop up screen which reveals a keyboard, a trackball, and several physical buttons.

Wouldn't it be nice to have physical buttons for home and back, rather than trying to remember what swipe actions to take? OK, perhaps a modern phone doesn't need this many buttons - but there are still some things where switches are useful. For example...

Silence Slider

Both the iPhone and several Android devices have a dedicated "silence" switch.

https://beebom.com/oneplus-5t-star-wars-edition-launched/

It was so handy. There's a comfort about being able to reach into your pocket while sat and the theatre and know that your phone is on silent. No unlocking and fiddling with on-screen menus. One flick and you're good.

But, with most modern Android, you have to peer at the screen to know what's going on. I kinda miss...

Status LED for power and messages

Back in the day, every Android phone had a multi-colour LED. It would show red when your battery needed charging. It would pulse when being charged. It would flash green if you had an SMS. With a glance you knew what your phone was doing.

AMOLED hasn't really lived up to its promise. There's no single-pixel flashing away on screen to let me know if I have a message. Instead, I have to pick up my phone to get the entire screen to activate. What a waste of battery life!

NFC on the top.

My new phone has NFC right in the middle of the back of the phone. That's a bit awkward for placing on a tap-to-pay terminal on the bus. My previous phone had the NFC right at the top.

It is doubly annoying for me as I wear an NFC ring. And the damn thing keeps triggering my phone!

I realise this is an extremely niche problem!

Keyboard

The last Android phone I had with a keyboard was a complete disaster. Maybe I'm kidding myself that a full tactile QWERTY experience is necessary?

Phone with a keyboard at the bottom.

But look how pretty!

Infrared Camera

Remember how I said the thermal sensor was shite? I've reviewed a couple of Thermal cameras for Android.

They're expensive - but certainly useful. Both for finding hotspots in your home and for seeing who is sweaty. OK, it isn't the most compelling bit of hardware. But if you're going to put a sensor on a phone, at least make it useful!

3D Screens and Haptic Screens

Years ago, I tried an LG phone with a 3D screen. No glasses! It used the same sort of technology as the Nintendo 3DS.

OK, it wasn't the highest resolution and you had to sit at a precise angle. But it was interesting tech!

Similarly, I once played with the Senseg haptic screen. It used weird electrostatic tech to make the texture of the screen change. It is almost impossible to describe and, if I didn't have this video, I might believe I dreamed it.

There are phones with built in laser projectors which, while fun, aren't that compelling to me.

What else is missing?

What do you remember from the early Androids that you think is missing now? Which crazy innovations need to make a comeback? Which Shenzhen-special already has all these features?


  1. This is not an exaggeration. It is the most pointless piece of hardware I've ever seen on a device. And I once had an experimental Nokia with a receiver for DVB-H.
  2. Fight me!

https://shkspr.mobi/blog/2024/04/hardware-i-miss-from-my-old-android-phones/

blog,
@blog@shkspr.mobi avatar

There is an on-screen back button for GrapheneOS. But it is hardcoded to be on the left of the screen.

blog, (edited ) to CSS
@blog@shkspr.mobi avatar

Use CSS to boost the font size of emoji with no extra markup
https://shkspr.mobi/blog/2024/04/use-css-to-boost-the-font-size-of-emoji-with-no-extra-markup/

I want to make emoji bigger than the text that surrounds them. At my age and eyesight, it can be difficult to tell the difference between 😃, 😄, and 😊 when they are as small as the text.

Is there a way to use CSS to increase the font size of specific characters without having to wrap them in an extra <span> or similar?

Yes! Although it is a bit of a hack.

This relies on 3 CSS features: src: local(), unicode-range,and size-adjust. Let me walk you through it.

@font-face {    font-family: "emoji";    src: local('Apple Color Emoji'),         local('Android Emoji'),         local('Segoe UI Emoji'),         local('Noto Color Emoji'),         local(EmojiSymbols),         local(Symbola);    unicode-range: U+231A-231B, U+23E9-23EC, U+23F0, U+23F3, U+25FD-25FE, U+2614-2615, U+2648-2653, U+267F, U+2693, U+26A1, U+26AA-26AB, U+26BD-26BE, U+26C4-26C5, U+26CE, U+26D4, U+26EA, U+26F2-26F3, U+26F5, U+26FA, U+26FD, U+2705, U+270A-270B, U+2728, U+274C, U+274E, U+2753-2755, U+2757, U+2795-2797, U+27B0, U+27BF, U+2B1B-2B1C, U+2B50, U+2B55, U+FE0F, U+1F004, U+1F0CF, U+1F18E, U+1F191-1F19A, U+1F1E6-1F1FF, U+1F201, U+1F21A, U+1F22F, U+1F232-1F236, U+1F238-1F23A, U+1F250-1F251, U+1F300-1F320, U+1F32D-1F335, U+1F337-1F393, U+1F3A0-1F3CA, U+1F3CF-1F3D3, U+1F3E0-1F3F0, U+1F3F4, U+1F3F8-1F43E, U+1F440, U+1F442-1F4FC, U+1F4FF-1F53D, U+1F54B-1F567, U+1F57A, U+1F595-1F596, U+1F5A4, U+1F5FB-1F64F, U+1F680-1F6CC, U+1F6D0-1F6D2, U+1F6D5-1F6D7, U+1F6DC-1F6DF, U+1F6EB-1F6EC, U+1F6F4-1F6FC, U+1F7E0-1F7EB, U+1F7F0, U+1F90C-1F93A, U+1F93C-1F945, U+1F947-1FA7C, U+1FA80-1FAC5, U+1FACE-1FADB, U+1FAE0-1FAE8, U+1FAF0-1FAF8;    size-adjust: 300%;}body {    font-family: "emoji", sans-serif;}

Here's how it works.

@font-face this tells the browser that we're defining a new font which will be referenced later.

font-family this is the name we're going to be using as a reference.

src: local('Apple Color Emoji') ... CSS can reference local fonts. We don't know what device this page is being viewed on, so we've included a number of popular fallback fonts which should work with all major browsers. You can also reference a webfont if you want - although Emoji fonts tend to have a large filesize. I've adapted this from Marc Fornós' CSS and added a few more common default emoji fonts.

https://developer.mozilla.org/en-US/docs/Web/CSS/%40font-face/unicode-range this tells the browser to use this font only for the specific codepoints mentioned. This is where the magic happens.

Emoji codepoints are complicated - especially when it comes to combining characters. You can see a full list of every sequence in Unicode 15.1. There are currently 3,782 different emoji.

There was some talk of using named ranges but that doesn't seem to have gone anywhere. So, instead, I've extracted all the Emoji codepoints and manually grouped them. It's a pretty long sequence, and I'm sure I've made a few mistakes.

https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/size-adjust this is used to increase or decrease the apparent size of a font.

Finally, the body { font-family: "emoji", sans-serif; } tells the browser to use the Emoji font (remember, this will only work on the specified Unicode range) and then fall back to the defaults sans-serif font. Obviously, you can specify whatever fonts you like.

Have a play with it

This is a nifty little hack if you want to make Emoji (or any other text) bigger than its surroundings.

I am indebted to Šime Vidas who demonstrated this trick to me.

https://shkspr.mobi/blog/2024/04/use-css-to-boost-the-font-size-of-emoji-with-no-extra-markup/

blog, to random
@blog@shkspr.mobi avatar

Movie Review: The Holdovers
https://shkspr.mobi/blog/2024/04/movie-review-the-holdovers/

Poster for The Holdovers.You can safely skip the first 45 minutes of this movie. It's the most clichéd Dead Poets / Breakfast Club nonsense I've seen in quite some time.

As for the rest? Well… it is shot on film with a unusual aspect ratio. So, you know, that's cool...

There's also lots of ✨acting✨ and quirky camera angles…

The final third is your typical mismatched buddy movie. Isn't it funny that the old man and young boy are so different? And yet, in many ways, aren't they the same?

It is a totally unremarkable and utterly predictable movie.

https://shkspr.mobi/blog/2024/04/movie-review-the-holdovers/

blog, to linux
@blog@shkspr.mobi avatar

Review: ACS ACR1251T-E2 USB Token NFC Reader II
https://shkspr.mobi/blog/2024/04/review-acs-acr1251t-e2-usb-token-nfc-reader-ii/

Recap - I want to build an NFC reader expansion card for the FrameWork laptop. So I've bought a couple of components.

This is the ACR1251T-E2 - it's a USB pen-drive sized NFC reader with a side-out USB-A plug. Costs about £40.

USB thumb drive plugged into a computer.

There's a recessed green LED which flashes to let you know that it is working. It doesn't beep or vibrate when it detects an NFC token. It is a little bit tricky finding the antenna as the internal circuitry slides down the plastic housing - as can be seen in these internal photos

There's a lanyard hole at the end, and a plastic clip so you can attach it to things.

Linux support is flawless. Running lsusb shows 072f:224f Advanced Card Systems, Ltd ACR1251 CL Reader PICC

And running pcsc_scan gives the same information: 0: ACS ACR1251 CL Reader [ACR1251 CL Reader PICC] 00 00

Sadly, it wasn't detected by libnfc 1.8.0 ☹

Using the FIDO2 HID Bridge I was able to use my NFC Ring to log in to various websites.

It's a solid enough unit. The plastic housing is sturdy and not easily damaged. You can't get in to the shell without a spludger.

The only downsides are that it uses USB-A - we're in the C era now! - and that the sliding mechanism obscures the antenna position. But, if you want to carry a discreet USB stick with you for NFC purposes, there's nothing better.

https://shkspr.mobi/blog/2024/04/review-acs-acr1251t-e2-usb-token-nfc-reader-ii/

blog, to linux
@blog@shkspr.mobi avatar

Review: ACM1252U-Z2 NFC Reader Board
https://shkspr.mobi/blog/2024/04/review-acm1252u-z2-nfc-reader-board/

Recap - I want to build an NFC reader expansion card for the FrameWork laptop. So I've bought a couple of components.

This is the ACM1252U-Z2 and Oh! It is a dinky little component!

View of a circuit board with a lit green LED.

The only sign that it is working is a flashing green LED. There's no buzzer on the board. It really is a tiny thing. Side on it is almost invisible.

Side on view of a circuit board. Nothing much is protruding.

Does it work with Linux? Oh yes! It has a Micro-USB port, so I got a USB-C OTG cable. I plugged it into my laptop and ran lsusb - which shows it as 072f:223e Advanced Card Systems, Ltd ACR1252 Reader

Running pcsc_scan gives pretty much the same information 0: ACS ACR1252 CL Reader [ACR1252 Reader PICC] 00 00

It wasn't detected by libnfc 1.8.0 ☹

Using the FIDO2 HID Bridge I was able to use my NFC Ring to log in to various websites.

The antenna seems pretty sensitive. It read my ring from about a centimetre away though a cardboard sleeve. I think the debug port is the "J3 nRF USB" - but I can't find many details about wiring it up.

So, will it fit in the Framework laptop? Perhaps. If I could solder on a USB-C jack, it would still stick out 2.5cm - so a 3D printed protector would still be needed.

Alternatively, as suggested by Stephen Early it might be possible to hook it in to the spare USB 2.0 ports. And, if the size is right, stowing it beside the touchpad.

But, first, I need to wait for my laptop to ship 😂

The board costs about £35

https://shkspr.mobi/blog/2024/04/review-acm1252u-z2-nfc-reader-board/

blog, (edited ) to Victoria
@blog@shkspr.mobi avatar

Why do Doctor Who companions leave?
https://shkspr.mobi/blog/2024/04/why-do-doctor-who-companions-leave/

If you got the chance to travel in time and space, with an immortal alien, and got to rescue the universe again and again - would you ever give up that life? Would you be content to go from unravelling the mysteries of the universe and fighting DALEKs to, I don't know, marrying a stranger or going back to your old life?

The joy of Doctor Who is that we - the viewers - are the constant companion. We might be able to take a little break now and again - but the Doctor is always waiting to take us on another adventure. There is no way that we would voluntarily leave. Given half the chance, I dare say most of us would jump in the TARDIS without even saying goodbye to our families.

The classic era of Doctor Who treats the characters as amnesiacs. Very rarely do they learn or develop from one story to the next. There is hardly ever a character arc and so, it seems, companions wander off with no real motivation1. In some cases, they literally say "Well, time for me to be going then!" and head off into the universe.

Part of me thinks this is because a lot of the men who wrote Doctor Who didn't really understand that other people are people. If you're the sort of person who loves sci-fi and hates dealing with reality, it's easy to miss that your friends are changing. When they announce one day that they're not coming round to watch TV and, instead, they're going out with a girl it can come as quite a shock.

In the modern era of Doctor Who, the characters are a bit more fleshed out. They grow as the series progresses and, for the most part, have somewhat believable reasons for leaving.

I'm slowly working my way through the episodes of the 20th century TV show that I missed. So here's a quick look at the companions and why they left. It only looks at the companions who leave during a TV show. I've also ignored those who come back for specials, or who only stay for a couple of episodes. It's the classic era because Captain Jack Harkness is too complicated. And River Song is complicateder.

Where possible, I've linked directly to the companion's exit scene.

Susan - The Dalek Invasion of Earth

This one kind of disproves my thesis! The Doctor's grand-daughter falls in love after spending a brief amount of time with a rebel fighter. But, crucially, she doesn't choose to leave. It is The Doctor who locks the doors of the TARDIS and, essentially, forces her to go. Perhaps, he thinks, as a Gallifreyan2 she will eventually regenerate and / or build her own TARDIS?

Their parting is oddly touching. The Doctor knows immediately that this is the end of their journey. Barbara too spots the romance. Only blundering Ian is oblivious; just like all boys are to the feelings of their female friends.

"Don't make me choose between you and him. Please!"

Susan's heartbreak is evident. If only all other companions got the emotional farewell she did. Susan sets the template for how hard it must be to leave. Just like her, we've grown up with Doctor Who. And all of us eventually need to grow out of the show and forge our own way in the world.

Ian and Barbara - The Chase

There's no particular reason for Ian and Barbara to leave. This is an adventure like any other; they're in no more peril than normal. Ian nearly prat-falls off a tower, as does Barbara, but that's about it.

"Ian, do you realise... we could get home?" It comes out of nowhere. It isn't built up, it just happens.

The Doctor is explosive in his fury:

Doctor: You'll end up a couple of burnt cinders flying around in space. You idiots! You are absolute idiots!"
Barbara: We are not idiots! We want to go home!

The 1st Doctor is a grumpy sod, but this is on another level. It is abuse, pure and simple.

The Ian♥Babs montage at the end is particularly lovely. We also get a glimpse of the pain felt by The Doctor. Not at his actions, oh no! His pain is about his personal grief. Other people are toys - handed back once they're no longer fun.

When fans decide to leave, The Doctor discards them. If we don't enjoy the ride any more, he certainly isn't going to change in on our behalf.

Vicki - The Myth Makers

In the improbably titled "Horse of Destruction" - a missing episode - Vicki leaves us. A girl from the 25th century falls in love with 8th century BCE warrior Troilus. Reinforcing the Doctor Who stereotype that girls are fickle-friends who will run off with an unsuitable boy at a moment's notice. They always go for rough boys who probably play football, rather than the quiet and sensible boys who watch Doctor Who.

At least Vicki's romance develops throughout the story, it isn't sprung on us.

Steven: You'd better go. In any case, Troilus will die of jealousy if he knows you're with me.
Vicki: And what is that supposed to mean?
Steven: Oh, come off it Vicki. The way you two were carrying on...
Vicki: Troilus has been very kind to me and I'm very fond of him. And if all you can do is make fun...

She never actually gets to say goodbye to anyone, which is a pity.

Katarina - The Daleks' Master Plan

Literally no-one remembers Katarina! She starts out thinking The Doctor is a God and, but a few episodes later, is killed off. Again, the episode is missing, but there are audio versions.

Katarina fucks up. There's no other way to put it. She's trapped in an airlock with her hostage-taker. She momentarily breaks free and, rather than opening the door back to the ship, she spaces herself and her captor.

That's our greatest fear, isn't it? We're too primitive to travel with The Doctor. We know that we'd constantly be asking annoying questions and we'd screw up massively.

The Doctor allows himself - and us - a brief moment of delusion:

Steven: She pressed the wrong button, Doctor.
Doctor: She may have wanted to, dear boy. She wanted to save our lives.

A moment later, he confesses the truth:

Doctor: She didn't understand. She couldn't understand.

He is utterly irresponsible.

Steven - The Savages

In his first appearance, Steven says:

Help yourself to a piece of eternity.

  • Steven, The Chase

And that is where his character now rests. The Savages is another one of many missing stories. There is a brief clip on the Lost In Time DVD box set with some off-air audio mixed with a snippet of 8mm footage, so we get a tantalising snippet of his departure.

It does rather feel like The Doctor tricks Steven into staying. Steven spends most of the previous episodes moaning and complaining. So The Doctor disposes of him, much to Dodo's distress. She knows - and we know - exactly what fate awaits her.

Dodo Chaplet - The War Machines

Dodo is our contemporary. She's a girl from the Swinging Sixties. And she is discarded like a ragdoll.

Partway through the story, she is hypnotised by WOTAN. The Doctor figures this out and deprograms her. He knows that she is now a liability and sends her away. He flings her off the country, never to be seen again. It's eerily similar to what happens to Donna much later.

Towards the end, Polly brings word from Dodo saying she'd rather stay home thank-you-very-much. The Doctor makes a great show of pretending to be upset. He has dispatched her effortlessly. Doctor Who relentlessly drives away those who aren't able to handle it.

Polly & Ben - The Faceless Ones

Polly & Ben are both drugged and frozen for the majority of this story. And then they just walk away. Because they've landed in London in the 1960s and:

Ben: It's good to feel normal again.

It's a neat out. They've returned to the same date that they left. They are older and wiser, but the world hasn't moved on without them. Is that when you'd choose to go? You survived the terror and have a chance to restart your life from where you left off. Perhaps they are sensible.

Ben sums up their dilemma:

Ben: We won't leave Doctor. If you really need us.

But The Doctor doesn't need them. He's spent several episodes without their help and, apparently, not really caring much about where they are.

Ironically, it's Jamie who has a touch of romance which looks just for a second like it might cause him to stay.

Victoria Waterfield - Fury from the Deep

Again, like Katarina and Jamie (and Leela to come) she's a girl from the past. Adorably, her screams are so piercing that she can drove away the monsters!

Which is just as well as that's pretty much all she gets to do in this story.

Oh? Like you'd do any better?

In the end, she is traumatised. She has spent weeks ripped out of time and being terrified.

Victoria: I'm always frighted! Oh Doctor, I can't!

The Doctor is very tender with her. Far more than he has been in the path. He even repeatedly chides Jamie that Victoria has to make her own decision.

Jamie McCrimmon & Zoe Heriot - The War Games

Jamie is a throwback to Katarina. The modern show has never had a "historic" companion - and for good reason! It does become tiresome having The Doctor explain the simplest bit of technology to a companion who doesn't even understand electricity.

Zoe is another girl-from-the-future. Together they make an uneasy cipher for the viewers' desires.

Transported to (the as-yet unnamed) planet of Gallifrey, theirs is one of the cruellest exists from the show. Jamie and Zoe are exiled from heaven by a set of cruel gods. They repeatedly beg the Time Lords to let them continue the adventure.

And that, in its own way, is the perfect ending. We, the constant companion, don't want Troughton to leave us. Change is far too scary. Of course, we didn't like him a first - but we've grown to love the shambling little clown. And now it is over.

Doctor: Well, goodbye, Jamie.
Jamie: But Doctor! Surely we could...
Doctor: [Firmly] Goodbye, Jamie.
Jamie: I won't forget you, you know?
...
Zoe: Goodbye, Doctor. Will we ever meet again?
Doctor: Again? Now, Zoe, you and I know, time is relative, isn't it?
...
Doctor: (To the Time Lord) They'll forget me, won't they?

Will they? Yes. It is only when you rewatch Doctor Who that you realise just how little of it you remember.

Liz Shaw - Inferno

Doctor Who's first in-colour companion. She's feisty! She's a scientist! She's capable of so much!

She doesn't even get a send-off.

Dr Shaw is everything the fan wants to be. If we were a companion, we'd be just as good as Miss Shaw. She's able to understand the technobabble and willing to stand up to the Brigadier. So would we!

And at the start of the new season, she's gone. I don't think Pertwee's Doctor ever mentions her again.

Jo Grant - The Green Death

Jo is the opposite of Liz. She's a ditz. I remember when the "fans" started squawking about how Billie Piper was too girlie to be a companion - they obviously didn't remember Jo.

Unlike earlier companions, Jo isn't thrown through time 'n' space on her adventures. It is perhaps rather charming to think that her work with UNIT is just a job to her.

At least Jo's love affair doesn't come out of nowhere. She does spend a lot of time being a nursemaid to a man she known for a handful of days. She seems distraught that her incompetence might have caused the whole sorry mess. Perhaps it is guilt that drives her away?

The Doctor looks genuinely confused at her announcement. How could anyone give up a life of excitement for the boredom of domestic bliss?

Jo: You don't mind, do you?

The Doctor takes the English farewell of leaving without saying goodbye. He too is tired of the trope of girls leaving the game to go and play with boys.

Harry Sullivan - Terror of the Zygons / The Android Invasion

Harry just... nopes out. He's offered a return trip in the TARDIS with The Doctor and Sarah Jane and simply says:

Harry: I think I'll stick to Intercity this time, Doctor.

And that's it. He shows up a few stories later in yet another body-snatcher story. He gets untied by Sarah-Jane and is never seen again.

How many of your friends just drift out of your life? You say "see you later" and then never see them again. It is the way of all adult relationships - work colleagues who leave you there number, but you never call.

At the end of The Android Invasion, Sarah-Jane appears to mock Harry's former exit:

SJS: I'm going home. And I'm going by taxi!
Doctor: I'll make you an offer; I'll take you home.
SJS: How can I refuse?

It's an uncharacteristic and mean little jibe. Harry deserved better.

Sarah Jane Smith - The Hand of Fear

SJS's departure is often mis-remembered as being another character who doesn't want to go. She - like so many others - is traumatised. Towards the end of the episode she says:

SJS: I must be mad. I'm sick of being cold and wet and hypnotised left right and centre. I'm sick of being shot at, savaged by bug-eyed monsters, never knowing if I'm coming or going or been ... Oh, and boy am I sick of that sonic screwdriver! I'm going to pack my goodies and I'm going home. I said, I'm going to pack my goodies and I am going home!

She literally packs her things and is prepared to storm out. The Doctor, who hasn't really been listening to her, is recalled to Gallifrey and has to abandon her - like an unwanted puppy. At that moment, Sarah-Jane is distraught. She was only having a tantrum, she didn't expect consequences.

SJS: I was only joking, I didn't mean it.

It is grimly pathetic. It isn't the way any of us would want to go. She is kicked out without warning. She's done nothing wrong. The Doctor just has somewhere better to be.

Leela - The Invasion of Time

Leela joins a long line of girls who just want to settle down with a man. The Doctor is a boy having adventures - adventures which absolutely do not including kissing.

The problem is; Leela is thick. But, to The Doctor, all of his companions are barely above the level of savages anyway. So her motivations makes sense within the confines of this story. She doesn't understand the game that we're playing and wants to play with someone else now.

At least K9's explanation for leaving - to look after Leela - makes a funny sort of sense

Leela: Will he be lonely, K9?
K9: Insufficient data, mistress.

Romana - Warriors' Gate

Romana's leaving is such a disappointment. As I wrote in my review of Warrior's Gate, Romana's story comes to an abrupt end. Her frustration at being recalled to The Division Gallifrey could have been an important emotional arc for her. As could her abhorrence of the Lion-Folk's enslavement. Instead, she just says "Byeeeeeeeeee!"

There's a whole arc of stories which could have been a build up to her expressing her frustrations with The Doctor. Or her slow descent into resentment. Or she could have opposed the way The Doctor dealt with the situation. But there's nothing.

Adric - Earthshock

The hate directed to Adric is directly proportional to the loathing nerds have for seeing themselves presented accurately on screen. He is Wesley Crusher - a plain mirror to reflect our neuroses.

Adric is, I think it is fair to say, bullied and derided by the other companions. Adric chooses to stay behind on a spaceship as he's the only one who can unlock the controls. He is too slow. You can dress up his exit as noble self-sacrifice - but it is probably suicide. He'd rather die on a crashing ship than return to the constant humiliation on the TARDIS.

Adric: Just leave!

His death does reverberate around the companions and The Doctor. Their guilt at his exit is directly proportional to their complicity.

Nyssa - Terminus

Nyssa's defection happens in the background - literally. She has a tête-à-tête with Tegan in the background while The Doctor is moralising.

Her departure almost makes narrative sense. She is a scientist who is frustrated at not being able to do proper science on the TARDIS. She gets a chance to practise her craft on... a derelict space-station full of the murderous and infectious!

Just as in previous departures, it is the other companion who feels the loss more keenly. The Doctor makes a half-hearted effort to check she understand the ramifications, but there is no talking sense into her. She trades the universe for a minor clerical position.

It is a deeply disappointing end to her story.

Tegan Jovanka - Resurrection of the Daleks

Tegan wasn't even supposed to be here today! She is the opposite of a Doctor Who fan. All she wants is to go home. She is desperate to escape from this madman who kidnapped her. Tegan's arc is one of trauma. She is suffering from PTSD and one day the damn breaks.

Tegan is the closest we ever see to the horrors inflicted on the companions. As such, hers is one of the few departures that makes narrative sense.

Tegan: I think I'm sick of it
Doctor: You think I wanted it this way?
Tegan: No. It's just that I don't think I can go on [...] It's stopped being fun, Doctor.

That's how fans leave the show too. When the story outpaces what we can stand, we quit.

For once it seems The Doctor is saddened by the departure. Not for the loss of his companion, but because of what he has lost of his identity. All he can say is "It seems I must mend my ways". Which, of course, is how the show survives. Casting off old fans and reinventing itself for a new generation.

Vislor Turlough - Planet of Fire

I wish the modern series would have a "baddie" companion. Someone to make the audience boo their screens.

Turlough goes home. The Doctor doesn't seem at all interested either emotionally or intellectually about the departure. As for our interest, well, like Tegan it makes narrative sense. He is no longer an outcast at home and can start his life again.

Peri Brown - Mindwarp / The Ultimate Foe

There are two ways to look at Peri's exit. In Mindwarp Peri is beaten, tortured, and has her mind wiped. She is utterly destroyed. It isn't a noble or self-sacrificing death. It is the realistic fate of all who travel with The Doctor.

The devastation felt by The Doctor is evident. First Katarina, then Adric, and now Peri.

And then "The Ultimate Foe" plays on the producers' worst instincts; Peri got married. Yes, we're back to this old trope. I guess most of us would prefer being hitched to Brian Blessed rather than death. But it seems a bit of a narrative cop-out.

Mel Bush - Dragonfire

Mel's exit makes no sense. She decides to go off with Sabolom Glitz - a man with whom she quarrels endlessly. Perhaps this is the writer not understanding why some people stay in toxic relationships? Why do girls stop playing with us and go off with ruggedly handsome boys? Mel is buzzy and happy, and not overly traumatised by her experiences. But she acts like this departure has been a long time coming. It's just baffling.

She literally says:

Mel: Well, I suppose it's time.
Doctor: Time? Funny old business, time. It delights in frustrating your plans. All Kane's bitterness and hatred thwarted by a quirk of time.
Mel: No, I meant I suppose it's time I should be going.

Mel is the casual fan. Getting to the end of one season and going "That was all well and good, but I've better things to do. What's on ITV?"

Ace

Perhaps it is for the best that we never see Ace leave. She lives on in our memory. It is impossible to watch the old Doctor Who once you've been exposed to the new ones. It is ploddingly slow and the characters have very little motivation other than to move the plot forward. Are the sets and special effects a bit dicey? Yes, but that doesn't excuse the fact that the companion - our cipher - is constantly treated with disdain.

Ace's immortality allows us to believe (just for a second) that we can stay with "our" Doctor forever and nothing will change.

And now?

Perhaps I was too harsh. In my memories, the companions leave because they're bored. But true-fans like us can never really get bored, can we? As we grow older we recognise the horror of being a companion. That's something the modern era does much better - we see the trauma inflicted on the companions and their families.

Imagine the TARDIS materialised in your back garden. Would you enter it? Would you willingly allow yourself to be abducted knowing the fate of the average companion, the brushes with death, the studied indifference of The Doctor, the pain it would cause?


  1. Obviously, in the real world, actors want to leave or are fired or die. But there's no excuse not to make the character have an interesting motivation.
  2. And direct descendant of The Timeless Child.

https://shkspr.mobi/blog/2024/04/why-do-doctor-who-companions-leave/

blog, (edited ) to Theatre
@blog@shkspr.mobi avatar

Theatre Review: Instructions for a Teenage Armageddon
https://shkspr.mobi/blog/2024/04/theatre-review-instructions-for-a-teenage-armageddon/

There are lots of one-man plays. There are a decent number of one-woman shows. Where are the one-girl stories? This is Rosie Day's attempt to fix that imbalance.

Poster featuring lots of Polaroid photos of a teenager.

The plot isn't particularly original (it is hard being a teenage girl!!!) but the way the story unfolds is magical. It is witty, irreverent, and cringey in just the right amount. Charithra Chandran has easily enough stage presence to sustain the show alone. She takes up space and brings her various antagonists to life in a stunning display of thespianism. She effortlessly floats between witty teen-angst and a deeper, more profound pain.

The staging is a delight. A plain bedroom, enhanced with video projection, and a complete absence of production trickery. It really is Charithra alone up there - dragging us through her growing pains.

In an age of cheap and infinite content on Netflix, how do you convince kids to come to the theatre? Firstly, you cast a bone-fide Netflix star and, secondly, you make the tickets reasonably priced. Decent seats in the stalls are £25 - that's excellent value for a West End show. There are plenty of seats at that price and, although you can pay up to £60, the staging means a briliant view wherever you're sat.

And - judging by the predominate age of the audience - that strategy is working! The matinee audience was full of young women excitedly talking about the show.

This is what the West End needs more of. Not hyper-expensive productions (looking at you, Stranger Things), not cynical Disney movie cash-in shows, and certainly not yet-another jukebox musical - but brilliant actors, compelling stories, and sensible prices.

The show runs until 28th April 2024.

https://shkspr.mobi/blog/2024/04/theatre-review-instructions-for-a-teenage-armageddon/

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • tacticalgear
  • DreamBathrooms
  • osvaldo12
  • mdbf
  • everett
  • magazineikmin
  • khanakhh
  • Youngstown
  • rosin
  • slotface
  • modclub
  • kavyap
  • anitta
  • normalnudes
  • ngwrru68w68
  • thenastyranch
  • cisconetworking
  • Durango
  • ethstaker
  • InstantRegret
  • Leos
  • provamag3
  • GTA5RPClips
  • tester
  • cubers
  • megavids
  • lostlight
  • All magazines