@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 random
@blog@shkspr.mobi avatar

Book Review - How Sex Changed the Internet and the Internet Changed Sex: An Unexpected History by Samantha Cole
https://shkspr.mobi/blog/2024/02/book-review-how-sex-changed-the-internet-and-the-internet-changed-sex-an-unexpected-history-by-samantha-cole/

Book cover featuring a peach emoji.This book is a rather pleasing wander through two interconnected topics. From the earliest chat rooms (A/S/L?) all the way to haptic-feedback in the Metaverse, this breezes through the way sex has advanced the technology and the resulting impact technology has had on sex.

The book is well illustrated - skirting a fine line between being overly prudish and unnecessarily graphic.

There are diversions into the religious weirdos behind some online dating sites, the original cam-girls, and BBS culture. The scatter-shot approach gives a wide but sometimes shallow look at all the ways the two topics intermingle. There aren't many interviews with the people involved - and it does rather rely on second-hand reporting.

As with a lot of books, only America exists. There are a few scattered mentions of Europe. But, apparently, the Internet didn't change sex for the majority of the world. All the censorship discussion goes via the cultural hegemony.

Weirdly, there's nothing about sexting or about how the Internet has liberated (some) disabled people.

It does point to some other interesting resources, such as the documentary "Losing Lena".

On a separate note - this is a beautifully formatted ebook. I find lots of publishers don't pay much attention to the ways the specific medium works. So it is nice to see some care an attention to images and captions. But, weirdly, the references aren't inline. The reference section links out to https://workman.com/HowSexChangedtheInternet - but that doesn't contain any actual links.

It is a good look through some of the steps (and missteps) which has led us to the Internet we have now.

https://shkspr.mobi/blog/2024/02/book-review-how-sex-changed-the-internet-and-the-internet-changed-sex-an-unexpected-history-by-samantha-cole/

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

A (tiny, incomplete, single user, write-only) ActivityPub server in PHP
https://shkspr.mobi/blog/2024/02/a-tiny-incomplete-single-user-write-only-activitypub-server-in-php/

I've written an ActivityPub server which . That's all it does. It won't record favourites or reposts. There's no support for following other accounts or receiving replies. It cannot delete or update posts nor can it verify signatures. It doesn't have a database or any storage beyond flat files.

But it will happily send messages and allow itself to be followed.

This shows that it is totally possible to broadcast fully-featured ActivityPub messages to the Fediverse with minimal coding skills and modest resources.

Why

I wanted to create a service a bit like FourSquare. For this, I needed an ActivityPub server which allows posting geotagged locations to the Fediverse.

I didn't want to install a fully-featured server with lots of complex parts. So I (foolishly) decided to write my own. I had a lot of trouble with HTTP Signatures. Because they are cursed and I cannot read documentation. But mostly the cursed thing.

How

Creating a minimum viable Mastodon instance can be done with half a dozen static files. That gets you an account that people can see. They can't follow it or receive any posts though.

I wanted to use PHP to build an interactive server. PHP is supported everywhere and is simple to deploy. Luckily, Robb Knight has written an excellent tutorial, so I ripped off his code and rewrote it for Symfony.

The structure is relatively straightforward.

  • /.well-known/webfinger is a static file which gives information about where to find details of the account.
  • /[username] is a static file which has the user's metadata, public key, and links to avatar images.
  • /following and /followers are also static files which say how many users are being followed / are following.
  • /posts/[GUID] a directory with JSON files saved to disk - each ones contains the published ActivityPub note.
  • /photos/ is a directory with any uploaded media in it.
  • /outbox is a list of all the posts which have been published.
  • /inbox is an external API endpoint. An ActivityPub server sends it a follow request, the endpoint then POSTs a cryptographically signed Accept message to the follower's inbox. The follower's inbox address is saved to disk.
  • /logs is a listing of all the messages received by the inbox.
  • /new is a password protected page which lets you write a message. This is then sent to...
  • /send is an internal API endpoint. It constructs an ActivityPub note, with attached location metadata, and POSTs it to each follower's inbox with a cryptographic signature.

That's it.

The front-end grabs my phone's geolocation and shows the 25 nearest places within 100 metres. One click and the page posts to the /send endpoint which then publishes a message saying I'm checked in. It is also possible to attach to the post a short message and a single photo with alt text.

There's no database. Posts are saved as JSON documents. Images are uploaded to a directory. It is single-user, so there is no account management.

What Works

  • Users can find the account.
  • Users can follow the account and receive updates.
  • Posts contain geotag metadata.
  • Posts contain a description of the place.
  • Posts contain an OSM link to the place.
  • Posts contain a custom message.
  • Posts autolink (sort of).
  • Posts can have an image attached to them.
  • Messages to the inbox are recorded (but not yet integrated).

ToDo

  • My account only has a few dozen followers, some of whom share the same sever. Even with cURL multi handle, it takes time to post to several servers.
  • It posts plain text. It doesn't autolink websites
  • Hashtags are linked when viewed remotely, but they don't go anywhere locally.
  • There's no language selection - it is hard-coded to English.
  • The outbox isn't paginated.
  • The UI looks crap - but it is only me using it.
  • There's only a basic front-page showing a map of all my check-ins.
  • Replies are logged, but there's no easy way to see them.
  • Doesn't show any metadata about the place being checked-in to. It could use the item's website (if any) or hashtags for the type of amenity it is.
  • No way to handle being unfollowed.
  • No way to remove servers which have died.
  • Probably lots more.

Other Resources

I found these resources helpful while creating this project:

What's Next?

I've raised an issue on Mastodon to see if they can support showing locations in posts. Hopefully, one day, they'll allow adding locations and then I can shut this down.

The code needs tidying up - it is very much a scratch-my-own-itch development. Probably riddled with bugs and security holes.

World domination?

Where

You can laugh at my code on GitHub.

You can look at my check-ins on a map.

You can follow my location on the Fediverse at @edent_location@location.edent.tel

https://shkspr.mobi/blog/2024/02/a-tiny-incomplete-single-user-write-only-activitypub-server-in-php/

blog, to JasperFforde
@blog@shkspr.mobi avatar

Book Review: The Constant Rabbit - Jasper Fforde
https://shkspr.mobi/blog/2024/02/book-review-the-constant-rabbit-jasper-fforde/

A human-sized rabbit wearing a suit.I love Fforde's provincial epics. They are dystopias set in the endless wastelands of suburban England. Whole new worlds brought to life in sleepy villages. The Constant Rabbit isn't exactly subtle in its politics - fears that "the Rabbits" might out-breed us leads to a rise in an anti-rabbit dictatorship. But it is the way he deftly weaves polemic and punchline that is so delightful.

‘Rehoming rabbits in Wales’ policy was won on a slender majority and with half the country not voting at all.

The humour is daft and, on more than one occasion, near the knuckle. He lays delicious traps for the reader and is expert at revealing our culture's weird foibles.

The back-and-forth nature of the storytelling felt a little unnecessary. It almost feels like it wants to be a documentary, but ends up diminishing some of the tension. The gentle reveal of the true nature of several characters is expertly done.

Funny, and just a little terrifying.

https://shkspr.mobi/blog/2024/02/book-review-the-constant-rabbit-jasper-fforde/

blog, to discworld
@blog@shkspr.mobi avatar

Book Review: Terry Pratchett - A Life With Footnotes by Rob Wilkins
https://shkspr.mobi/blog/2024/02/book-review-terry-pratchett-a-life-with-footnotes-by-rob-wilkins/

Photo of Terry Pratchett.Like a million fans, I have a precious memory of (briefly) meeting Terry Pratchett and getting him to sign something amusing. I hold on to it dearly.

This is half-way between a biography and autobiography. Parts were clearly dictated and recorded prehumously and are interspersed with observations from others. Terry's voice shines through although, as forevermore, I was left longing for just-one-more quote.

In among all the amusing asides1, perhaps what I found funniest was just how bitchy the man could be! A world-class grumping machine with built-in catty-power fuelled by snark and rage. He took grouchiness into an elevated art-form.

Rob Wilkins has the tricky job of making Terry accessible. He weaves his own life into Terry's (although he never oversteps) and acts as the perfect avatar for the reader.

For some reason, the eBook places all the photos in a gallery at the end. Understandable in a paper volume, but it would have been nice to intersperse them with the text.

But it is marvellous to spend a little bit more time in Pratchett's brain. Wandering around that glorious cathedral and weeping as it slowly falls into ruins.


  1. And, obviously, footnotes.

https://shkspr.mobi/blog/2024/02/book-review-terry-pratchett-a-life-with-footnotes-by-rob-wilkins/

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

Book Review: Tomorrow, and Tomorrow, and Tomorrow - Gabrielle Zevin
https://shkspr.mobi/blog/2024/01/book-review-tomorrow-and-tomorrow-and-tomorrow-gabrielle-zevin/

Book cover showing a crashing wave.This deserves all the accolades going. A perfectly rendered tale of childhood best-friends-forever growing up and trying to make video-games. It is funny, well observed, and grim. It's sort of like Nick Hornby's "High Fidelity" for the 21st century.

There's a desperately sad trope about how some men believe that women are a video-game where, if you put enough friendship in, you eventually get rewarded with sex. This is the tangled and twisted tale of how some people believe that, if you put enough friendship in, you get rewarded with a video-game company.

The book is rich with foreshadowing and brutal in its execution. It is written almost as though it were a documentary - shuffling time for maximum narrative impact, and telling the story from multiple points of view.

None of the characters are entirely sympathetic; but none of them are entirely irredeemable. It is a complex a lovely work of fiction about people who understand fiction but don't understand the complexity of human relationships.

https://shkspr.mobi/blog/2024/01/book-review-tomorrow-and-tomorrow-and-tomorrow-gabrielle-zevin/

blog, to DoctorWho
@blog@shkspr.mobi avatar

Dark Season - Russell T Davies' new show starring Kate Winslet
https://shkspr.mobi/blog/2024/01/dark-season-russell-t-davies-new-show-starring-kate-winslet/

A dark and shadowy figure is using laptops to terrorise a school and convert its pupils into mindless automata. Only one person can stop this dastardly scheme - Kate Winslet! Who, for some reason, plays a 15 year old.

Because she is 15. Because this is 1991 and Russell T Davies has written one of his first proper dramas for the telly. Albeit Children's BBC - but we've all go to start somewhere, right?

While watching the fabulous "Imagine" documentary on RTD, I learned about "Dark Season". The CBBC show which, arguably, kickstarted his career. I probably saw it the first time around but, alas, the ravages of time had erased it from my memory. It is very much of its time. Filmed in the summer holidays with a bunch of drama-school kids and a healthy disregard for adult supervision.

Victoria Lambert plays... well... The Doctor as if she were a schoolgirl. She has long marvellous speeches about the nature of reality, she browbeats her teachers, and has a couple of plucky companions (including Kate Winslet) who she leads on a merry dance through time and space suburban England. There's some superb technobabble, megalomaniac plots, and cameos from old sci-fi shows. It features scientists in hiding, explosions, people with glowing hands, computers which suck out your brains, shadowy corporations and eldritch horrors. It fully acknowledges its clichés and contains lots of snappy dialogue. Even the title sequence has shades of Doctor Who.

Is it any good? Well, look, if you were the target audience for it in the 1990s then yes. It is a lovely piece of nostalgia. If you are a Doctor Who obsessive who wants a glimpse at what a revived Dr Who could have looked like, it's amazing. It contains many of the prototypes of the 21st Century version As a piece of media in its own right... the DVD is available 2nd hand from all good auction sites!

https://amzn.to/47tIwSe

Delightfully, there is a sequel with a grown-up Kate Winslet available as a Big Finish audiobook.

https://shkspr.mobi/blog/2024/01/dark-season-russell-t-davies-new-show-starring-kate-winslet/

blog, to privacy
@blog@shkspr.mobi avatar

Envelopes and GDPR
https://shkspr.mobi/blog/2024/01/envelopes-and-gdpr/

Privacy is a funny concept, isn't it? Very few people want the whole world to know what medical complaints they have. But most hospitals are open-access buildings, where the waiting rooms have large monitors to tell patients that their doctor is running late.

A few years ago I was sat in the proctology waiting room. Anyone who knew me would have seen I was waiting for an bum doctor. They may not have known my specific complaint, but the laser-display board announced that my appointment was with Doctor X. Anyone can look up Doctor X online and see that they specialise in removing foreign objects which have mysteriously found their way inside a person. Whither privacy?

But that's the kind of trade-off we make. It would be expensive to have individual waiting cubicles. And most people aren't famous enough to be recognised in public. And the chances of your neighbour also being in hospital are slim. Any you might just be waiting for a friend. So we sort of hand-wave it away because it is a small but difficult problem to solve.

Anyway, a few months later, I received a letter from the hospital. It was delivered in a plain envelope with no hospital markings. The return address was a suitably anonymous bulk mailing service. There were no warning markings to say this was a medical letter. There is no way that my postman, my housemate, or my cleaner would have known what the letter was about.

But see if you can spot the incredibly subtle mistake that was made:

A letter addressed to me. Just inside the plastic window you can see the word "colonoscopies".

Printing a physical letter on paper and then folding it in such a way that both the address is displayed and the paper cannot slip is a surprisingly hard problem. I get letters from lots of organisations where this has happened.

But, before lighting up the pitchforks, what's the real harm that has occurred here and how could it be prevented?

My postie now knows some of my medical info. That's assuming they bothered reading past the address, and that they remember anything specific from the 500 letters they had that day. My postie seems nice enough - but I don't doubt that a postal worker somewhere could use this to blackmail or intimidate a vulnerable person.

Anyone with access to my letterbox, and who gets there before me, also has sight of my information. Again, I tend to trust the people I let in. But not everyone is so lucky. A sufficiently abusive person would have opened the letter regardless of what they saw.

A fully paper envelope with no plastic window reduces one specific class of error - but may be too expensive to implement at scale. And, of course, if there's no window then there is the chance that the wrong letter might go into an envelope addressed to someone else.

Would going digital solve this? Email is mostly end-to-end encrypted between the big providers, so it would be unlikely that anyone saw it as it was being delivered.

Most email clients show the first few lines of a message - and some of them will show that preview as a pop-up on a locked phone. So anyone with access to your device could see something untoward. A sender name and subject have to be useful to the receiver - but is "FROM: Proctology. RE: The object we pulled out of you" too revealing?

An email could be fairly anonymous and link to a download portal of the real message. But that's quite a lot of work for a user to do. And an abuser could still have access to your device.

An email encrypted with your public key and send with a cryptic subject line is the sort of theoretical magic that geeks love, while forgetting that most people reuse their passwords and leave their laptops unlocked in the coffee shop.

What I'm getting at is that there's no perfect solution. Only incremental changes which may introduce a new class of problem.

https://shkspr.mobi/blog/2024/01/envelopes-and-gdpr/

blog, to vr
@blog@shkspr.mobi avatar

VR Game Review: Get The Heck Out
https://shkspr.mobi/blog/2024/01/vr-game-review-get-the-heck-out/

You don't need to pay £££ and download GB of files in order to have a good VR game. It turns out that the Web is perfectly capable of serving a decent VR experience. You can open up your VR rig's browser (I use Wolvic) and start playing instantly.

I've just completed "Get The Heck Out". It's a fun and free shooter. The twist is, you are expected to die. A lot. You start with a puny pea-shooter:

After every level you can upgrade your weapons - which last until you die. But every few levels, you get the chance for a permanent upgrade. So you restart with more powerful guns, shields, and armour.

Here's how it looks at the start:

And by the time you're fully kitted out, you'll have an experience like this:

It only takes a few hours to complete - and you get a bit of a workout from ducking and diving away from all the enemies.

The graphics, music, and sound effects get a little repetitive - but isn't a blockbuster experience at a premium price. On some levels, the game stutters as it tries to keep up with drawing hundreds of fast-moving projectiles. You do have to exit the VR view in order to see what permanent upgrades you have.

But it is the sort of game which is immediately accessible. There's no learning curve - just point and shoot. You can play stood up or sat down - there's no ability to wander around the level, so you don't need much space to play.

It is brilliant to see just how good WebVR and WebGL are.

https://shkspr.mobi/blog/2024/01/vr-game-review-get-the-heck-out/

blog, to fediverse
@blog@shkspr.mobi avatar

Rebuilding FourSquare for ActivityPub using OpenStreetMap
https://shkspr.mobi/blog/2024/01/rebuilding-foursquare-for-activitypub-using-openstreetmap/

I used to like the original FourSquare. The "mayor" stuff was a bit silly, and my friends never left that many reviews, but I loved being able to signal to my friends "I am at this cool museum" or "We're at this pub if you want to meet" or "Spending the day at the park".

So, is there a way to recreate that early Web 2.0 experience with open data and ActivityPub? Let's find out!

This quest is divided into two parts.

  1. Get nearby "Points of Interest" (POI) from OpenStreetMap.
  2. Share a location on the Fediverse.

OpenStreetMap API

OpenStreetMap is the Wikipedia of maps. It is a freely available resource which anyone can edit (if they're skilled enough).

It also comes with a pretty decent API for querying things. For example, https://overpass-turbo.eu/s/1GaE.

Map of a part of London. Some parts are highlighted.

As you can see, it has highlighted some useful areas - a pharmacy and a pub. But it has ignored other useful locations - the train station and the park. It has also included some things that we may not want - bike parking and a taxi rank.

What API call is needed to get useful locations of of OverPass?

It's possible to specify the type of thing to find using nw["amenity"="restaurant"]; - but adding every single type of thing would quickly end up with a very large query containing hundreds of types.

It is also possible to exclude specific types of places. This retrieves all amenities except for fast food joints:

nw["amenity"]({{bbox}});-nw["amenity"="fast_food"]({{bbox}});

Again, that would be complex.

Perhaps one solution is just to return everything and let the user decide if they want to check in to a telephone kiosk or a fire hydrant? That's a bit user-hostile.

Instead, this query returns everything which has a name nw["name"]({{bbox}});

Map of London with several bits highlighted.

That cuts out any unnamed things - like park benches and car-sharing spots. But it does add named roads and train lines.

It is possible to use filters to exclude results from OverPass. The best that I can come up with is: https://overpass-turbo.eu/s/1GaR

That gets everything which has a name, but isn't a highway or railway or waterway or powerline. It isn't perfect - but it will do!

This is the query which will retrieve the 25 nearest things within 100 metres of a specific latitude and longitude. It includes the name and any other tags, the location, and the OSM ID.

https://overpass-api.de/api/interpreter?data=%5Bout:json%5D;nw%5B%22name%22%5D%5B%21%22highway%22%5D%5B%21%22railway%22%5D%5B%21%22waterway%22%5D%5B%21%22power%22%5D(around:100,51.5202,-0.1040);out%20center%20qt%2025;

ActivityPub

There's good news and bad news here. Firstly, ActivityStreams (which are subscribed to in ActivityPub) supports the concept of "Place" and "Location".

Once the user has a latitude and longitude, the can share it - along with a message, photo, or anything else.

Something like:

{    "@context": "https://www.w3.org/ns/activitystreams",    "type": "Note",    "content": "Here in NYC! <a href="https://www.openstreetmap.org/way/958999496">John Lennon's Imagine Mosaic</a>.",    "attachment": [        {            "type": "Image",            "mediaType": "image/jpeg",            "url": "https://fastly.4sqi.net/img/general/590x786/56367_9pxuZJD7d1hgPdaMFcFq1pipvTTMynBJsYcpHH-b8mU.jpg",            "name": "A photo of a mosaic which says 'Imagine'."        }    ],    "location": {        "name": "John Lennon's Imagine",        "type": "Place",        "longitude": 40.77563,        "latitude": -73.97474    }}

For example, here's a PixelFed post with an attached location - and this is the JSON representation. That status can be reposted into other social networks.

It is worth noting that Mastodon doesn't (natively) support location - if you view my repost of that PixelFed post you'll see there's no location metadata attached. That's OK! It just means that the status needs to include human-readable data.

Similarly, Mastodon doesn't support the https://www.w3.org/TR/activitystreams-vocabulary/#dfn-arrive vocabulary. So this will be limited to a message with a location attached.

Other ActivityPub services .

Putting it all together

Well… that's a job for next week. Probably!

  • Building a web site which gets the user's location is easy.
  • Getting the data from OverPass should be straightforward.
  • Creating an ActivityPub server which can post geotagged notes into the Fediverse might be a little beyond my skillset! Some testing with Darius Kazemi's AP Glitch suggests this should work.

If you'd like to help, please leave a comment.

https://shkspr.mobi/blog/2024/01/rebuilding-foursquare-for-activitypub-using-openstreetmap/

blog, to China
@blog@shkspr.mobi avatar

Book Review: Babel - R. F. Kuang
https://shkspr.mobi/blog/2024/01/book-review-babel-r-f-kuang/

Book cover featuring the dreaming spires of Oxford. The page is ripped in two and the Tower of Babel is no longer there.This is an astonishing book. On the one hand, it's the basic "Harry Potter" trope - a young orphan is gifted, gets sent to school to learn magic, becomes pals with the other weird kids, has adventures, and fights a monster. Except here, Harry is Chinese, is sent to Oxford University to learn magic, and faces up to the reality of colonialism and Empire.

Oh, and the magic is based on the Sapir-Whorf hypothesis.

I lived in Oxford for several years (although, thankfully, I wasn't a scholar) and Kuang has perfectly captured the madness of the city. Her world-building is delightfully realistic and the parenthetical footnotes sprinkled throughout lead to a mesmerising blurring of reality and fiction. When you read sentences like "Phonological calques are often semantic calques as well." it often feels like you're receiving an education as well as experiencing the narrative flow.

The book's politics aren't subtle - but they needn't be. This isn't smuggled polemic; it is righteous fury bound into a novel and set loose on an unsuspecting world. It is the very essence of what it means to be "woke". Our characters gradually have the scales drop from their eyes and they begin to realise the nightmare world they live in.

A thoroughly entertaining read, with a perfect mixture of alternative history, science-fantasy, heartbreak, and wonder.

On a minor technical note - the publishers have rendered all the Chinese characters as tiny images which makes it hard to read them. A bit of a baffling editorial decision!

https://shkspr.mobi/blog/2024/01/book-review-babel-r-f-kuang/

blog, to Economics
@blog@shkspr.mobi avatar

What's the incentive to tell the truth on surveys?
https://shkspr.mobi/blog/2024/01/whats-the-incentive-to-tell-the-truth-on-surveys/

I recently received a survey from an event I'd attended. Look, I've read The Circle, so I know that I have to give individuals scores of 10 or they'll be fired. I also know Net Promoter Score is bullshit, but the people sending the survey have faith in it. So I filled it in as best I could.

But then I got to this question:

Survey question asking about whether the programme was good value for money.

Putting aside whether I feel like something is good value for money - what's my incentive for being honest? I am homo economicus. As a rational self-interested agent, I want things to be better value for money than they currently are. I either want to pay less, or to get more for my money.

It simply doesn't make sense for me to tell the truth on this question. If enough people say they want a better deal, the market should take that as a signal, right?

My previous employer used to send round employee satisfaction surveys. You know the sort of thing "how well does leadership communicate?" and "have you experienced bullying in the workplace?" that sort of thing.

One of the questions was along the lines of "Do you think you are being paid fairly?"

Again, even if I thought I was overpaid why would I answer with anything other than "no"? If people answer yes, we are unlikely to get a pay rise. If we answer no, there is a chance the business will increase its wages.

Perhaps I am overly cynical? Maybe I'm missing something fundamental about how the results of the survey are used? It could be that most of the world is honest by default?

But I can't help wondering whether I'm the only person who deliberately tries to subvert these questionnaires?

https://shkspr.mobi/blog/2024/01/whats-the-incentive-to-tell-the-truth-on-surveys/

blog, to random
@blog@shkspr.mobi avatar

Book Review: Refuse to Choose! A Revolutionary Program for Doing Everything That You Love - Barbara Sher
https://shkspr.mobi/blog/2024/01/book-review-refuse-to-choose-a-revolutionary-program-for-doing-everything-that-you-love-barbara-sher/

Book cover of a spiral notebook.I am decidedly unconvinced by this book.

What do you do when you are too interested in the world? This is a problem I have; everything is interesting1! How do you pick? What if I spend time studying the wrong thing? What if I never complete any of my madcap projects? How do I pick and choose?

This book purports to help "Scanners"2 get their lives in order. I sort-of identify with that - so can this book help me regain focus and get on with my life? No. Not really.

Essentially, it is a "feel-good" book masquerading as "self-help":

Now that I’ve grown up, I realize that all that delicious dilettantism pays its way as much as any degree in medicine or engineering, by making me remember every day—whenever I pick up a book or watch the Science Channel or try to read a map of Asia for no particular reason—that life is amazing and there is no end to the wonder of it.

It is relentlessly positive and, ironically, a bit scattershot. It has some very specific analogue solutions to the problems people face. It is an older book - although it does reference the Internet - so some of the solutions can quite easily be translated into digital "to do" lists and blogs.

The core advice boils down to "write things down. Return to them if they spark interest again. Find jobs which have broad appeal."

Let’s end the notion that ideas have no value unless they turn into a business or have some other practical use. Save them all in a beautiful book like Leonardo did. You might want to give them away someday, perhaps to someone who needs an idea.

I do like its core message. And there are some delightful analogies buried away in there:

A house painter leaves when he’s through painting the house; he doesn’t move in and live there.

But as well as being technologically outdated, the book is very tied to a specific culture. It is suffused with religion, family, and The American Dream. It felt rather alienating and offputting to me. It has a chintzy, homespun ethos which I found a bit grating. And, as lots of American self-help books do, it was filled with endless praise for the author. There were large passages of cloying letters-to-the-author which I had to skip.

If you are able to cut through the fluff, and mentally update the advice, there are some great nuggets of wisdom in there. I especially liked this one:

If you want to think clearly, be calm and be smart; schedule a Micro Nervous Breakdown at least once a day.

Do you know? I think I might just have one now!


  1. For a given value of everything.
  2. A self-invented term which seems to mean people who just can't focus on any one topic.

https://shkspr.mobi/blog/2024/01/book-review-refuse-to-choose-a-revolutionary-program-for-doing-everything-that-you-love-barbara-sher/

blog, to ai
@blog@shkspr.mobi avatar

The (theoretical) risks of open sourcing (imaginary) Government LLMs
https://shkspr.mobi/blog/2024/01/the-theoretical-risks-of-open-sourcing-imaginary-government-llms/

Last week I attended an unofficial discussion group about the future of AI in Government. As well as the crypto-bores who have suddenly pivoted their "expertise" into AI, there were lots of thoughtful suggestions about what AI could do well at a state level.

Some of it is trivial - spell check is AI. Some of it is a dystopian hellscape of racist algorithms being confidently incorrect. The reality is likely to be somewhat prosaic.

Although I'm no longer a civil servant, I still enjoy going to these events and saying "But what about open source, eh?" - then I stroke my beard in a wise-looking fashion and help facilitate the conversation.

For many years, my role in Cabinet Office and DHSC was to shout the words "OPEN SOURCE" at anyone who would listen. Then patiently demolish their arguments when they refused to release something on GitHub. But I find myself somewhat troubled when it comes to AI models.

Let's take a theoretical example. Suppose the Government trains an AI to assess appeals to, say, benefits sanctions. An AI is fed the text of all the written appeals and told which ones are successful and which ones aren't. It can now read a new appeal and decide whether it is successful of not. Now let's open source it.

For the hard of thinking - this is not something that exists. It is not official policy. It was not proposed as a solution. I am using it as a made-up example.

What does it mean to open source an AI? Generally speaking, it means releasing some or all of the following.

  1. The training data.
  2. The weights assigned to the training data.
  3. The final model.

I think it is fairly obvious that releasing the training data of this hypothetical example is a bad idea. Appellants have not consented to having their correspondence published. It may contain deeply personal and private information. Releasing this data is not ethical.

Releasing how the data is trained is probably fine. It would allow observers to see what biases the model has encoded in it. Other departments could use the model to train their own AI. So I (cautiously) support the opening of that code.

But training weights without the associated data is kind of useless. Without the data, you're unable to understand what's going on behind the scenes.

Lastly, the complete model. Again, I find this problematic. There are two main risks. The first is that someone can repeatedly test the model to find weaknesses. I don't believe in "security through obscurity" - but allowing someone to play "Groundhog Day" with a model is risky. It could allow someone to hone their answers to guarantee that their appeal would be successful. Or, more worryingly, it could find a lexical exploit which can hypnotise the AI into producing unwanted results.

Even if that weren't a concern, it appears some AI models can be coerced into regurgitating their training data - as discovered by the New York Times:

The complaint cited examples of OpenAI’s GPT-4 spitting out large portions of news articles from the Times ... It also cited outputs from Bing Chat that it said included verbatim excerpts from Times articles.
NY Times copyright suit wants OpenAI to delete all GPT instances

Even if a Government department didn't release its training data - those data are still embedded in the model and it may be able to reconstruct them. So any sensitive or personal training data might be able to be reconstructed.

Once again, to be crystal clear, the system I am describing doesn't exist. No one has commissioned it. This is a thought experiment by people who do not work in Government.

So where does that leave us?

I am 100% a staunch advocate for open source. Public Money means Public Code. Make Things Open It Makes Things Better.

But...

It seems clear to me that releasing training data is probably not possible - unless the AI is trained on data which is entirely safe / legal to make public.

Without the training data, the way it is trained is of limited use. It should probably be opened, but would be hard to assess.

The final model can only be safely released if the training data is safe to release.

What next?

I'll admit, this troubles me.

I want to live in a world where the data and algorithms which rule the world are transparent to us. There will be plenty of AI systems which can and should be completely open - nose-to-tail. But there will be algorithms trained on sensitive data - and I can't see any safe, legal, or moral way of opening them.

Again, I want to stress that this particular example is a figment of my imagination. But at some point this will have to be reckoned with.

I'm glad this isn't my problem any more!

https://shkspr.mobi/blog/2024/01/the-theoretical-risks-of-open-sourcing-imaginary-government-llms/

blog, to Law
@blog@shkspr.mobi avatar

A small text rendering bug in legal judgements
https://shkspr.mobi/blog/2024/01/a-small-text-rendering-bug-in-bailii/

OK, first off, you have to read this amazing judgement about whether Walker's Sensations Poppadoms count as a potato-based snack for VAT purposes. Like most judgements, it is written in fairly plain and accessible language. The arguments are easy to follow and it even manages to throw in a little humour.

But if you read closely, you'll see there are a few instances where an errant question-mark pops up:

Screenshot of text. Highlighted are a couple of instances of a question mark followed by the letters "o", "u", "r".

From context, it is pretty clear the word should be "flour" but is rendered as "?our" - why is that?

The original PDF judgement can be downloaded from the official Tribunals website (an ancient service which is long overdue for an update).

If you search the PDF the word "flour" and select it, notice what happens:

Looking at the metadata of the PDF, it appears the file was created with Office 365 which has "helpfully" used a typographic ligature - "fl".

Drawing showing how two letters can be squashed together to form a new symbol.

Ligatures are handy for displaying characters in a pleasing manner - but they can really confuse some software.

One way to deal with this is to use a process called "Unicode Normalisation". It is rather dull and technical, but there are plenty of libraries which will split these characters.

Here's how it works for the "fi" ligature:

Graphic showing the "F" "I" ligature being split.

There are a few issues here.

Firstly, Office 365 should not be using Unicode ligatures. The text should have the letters "f" and "l" but it is the font which should display as a ligature.

Secondly, Bailii's processing of the PDF should either cope with normalisation or it should throw loud and explicit warnings when it runs into something it doesn't understand.

Thirdly, as well as Bailii and the Tribunal Service, the PDF is also available at the more modern Case Law service from The National Archive. Their HTML and PDF documents also have the ligatures, but have subtly different layouts because they have been re-rendered with LibreOffice 7.2.

I've reported the issue to Bailii via their contact form. I've also raised a bug with The National Archive.

And now I'm off to enjoy some tasty potato-based snacks which have been assessed at the correct level of tax!

https://shkspr.mobi/blog/2024/01/a-small-text-rendering-bug-in-bailii/

blog, to random
@blog@shkspr.mobi avatar

Lessons learned from bringing promotional sweets to a conference
https://shkspr.mobi/blog/2024/01/lessons-learned-from-bringing-promotional-sweets-to-a-conference/

I've recently set up my own consultancy company and decided to sponsor my local UKGovCamp conference. That entitled me to a logo on the site, a shout-out during the conference, and place to put any promotional stickers. Everyone loves stickers!

But I decided to bring along something different - promotional sweeties!

I found a small business to print my logo with edible ink onto sweets and ordered some fizzy flying saucers, mint Mentos, and fruit Mentos. They all had my company logo and name on them.

A big plastic tub filled with luridly coloured sweets.

Here was my working theory. If I were a bigger sponsor, I'd have a table and people would have been able to come up to me and chat in exchange for swag. But I didn't have a dedicated space. That's OK, I could make my own space!

If you walk up to people while carrying a big bag of candy and say "Would you like a Jelly Baby an after-dinner mint?" people react with joy! Most people love being offered a sweet. It's a great way to meet people and start conversations.

It was great! It felt like I talked to all 500 attendees, I gave away most of the sweets, and I told people a little about the work I do. People had smiles on their faces and were happy to chat.

But… Here's what didn't work.

The key flaw in my cunning plan is that once you give someone a sweet with a logo on it, they eat the sweet. Now they don't have your logo to remember you by! A sticker is like a business card - a physical reminder. A sweet is gone in an instant.

The sweets are quite small and, as a consequence, the logo and text are also small. A few people didn't notice the printing or thought that the mints were designed to look like blue eyeballs.

https://urbanists.social/@martinhowitt/111788464310634759

My site has reasonable SEO if you search for "Open Ideas Ltd" - but there was no URl printed on the sweets because they were too small. And they would be eaten straight away.

Compact disks of sugar aren't the most health-conscious snack. I made sure that the treats were all vegan and gluten-free. While the big tub of flying saucers had the ingredients and allergens printed on them, the Mentos didn't. Some people were (understandably) reluctant to take unidentified sweets from a stranger.

So, lessons learned? Bring bigger sweets, with more eye-catching designs, including a clear call to action, and which are sugar-free and inedible.

Stickers. I've reinvented stickers…

And yet… I'd probably do it again! I'm not a mega-corp trying to convince people to purchase my services. I'm just this guy, you know? It can be a bit intimidating to go up to strangers and say "TALK TO ME". But saying "Hello! Would you care for a sweet?" is a socially acceptable ice-breaker.

I enjoyed the experience and, while I don't think it will lead to a 10x ROI with enhanced EBITDA and hitting my OKRs, it was a lot of fun.

My question to you is this - what's the favourite swag you've ever given out?

https://shkspr.mobi/blog/2024/01/lessons-learned-from-bringing-promotional-sweets-to-a-conference/

blog, to linux
@blog@shkspr.mobi avatar

Review: Iiyama 28 inch 4K Vertical Monitor
https://shkspr.mobi/blog/2024/01/review-iiyama-28-inch-4k-vertical-monitor/

Four years ago, I got the Iiyama ProLite 24" Vertical Screen. But as my eyes grow dimmer and my hind-brain desires upgrades, I splurged on the (stupidly named) Iiyama ProLite XUB2893UHSU-B5.

It is well lush! Thin bezel around 3 sides. Excellent viewing angle when vertical. A decent array of video ports and USB. And fairly wallet friendly £280. There's a lot of screen for your money.

A large vertical monitor atop a standing desk.
(Yes, I do have a desk crowded with gadgetry!)

I'm only using this for reading very long (and only slightly boring) documents. I can't tell you if it has the millisecond response you want for gaming. But for watching content, it is superb. The screen isn't reflective and the picture is fabulous.

There are plenty of options if you want to fiddle with your gamma, contrast, brightness, and all the other things which are standard these days.

Picture adjustment options.

Downsides

I'm going to start with the slight niggles I found.

First, is the built-in USB hub. You get 4 USB-A sockets - two are USB-3 and have 900mW, two are USB-2 and have 500mW. That's basically fine, but I would have expected at least a couple of USB-C by now. But what's worse is that the hub itself takes the stupid USB-B 3.0 connector. Yeah, the weird double height one.
A horrible USB plug.
It comes with a cable in the box. But it is a bit daft.

As always, the blue LED for power is too bright - but nothing a bit of tape can't fix.

The speakers are a little tinny. Basically fine for a conference call, but nothing more. There is a headphone socket if you want to route audio to something more substantial.

I think the EDID is a little wonky - see the Linux section below.

On Windows, my laptop sometimes forgot that audio could be routed through the monitor. I restarted my hub and everything worked again. I've no idea if that's the fault of the laptop, hub, or screen.

The settings buttons are a little fiddly. No worse than any other screen - and the sort of thing you play around with once and then never again.

Positives

Great mounting options. As well as boring horizontal, the monitor can be rotate left or right to 90 degrees. The stand is well sprung so the height is easily adjusted. Similarly, it can be tilted back a bit if that's what you want.

Audio quality out of the headphone socket is excellent. No cross-chatter even at high volumes.

The cables which come with it are a decent length (HDMI, DP, Power) and the DP cable has a locking mechanism (squeeze to open).

It uses two build-in thumb-turn screws to connect the stand to the base-plate, and the monitor to the stand. No tools required. Oh, and the base-plate also rotates.

Linux

The USB hub shows up as 05e3:0610 Genesys Logic, Inc. Hub - nothing remarkable. Just works.

For some reason, I couldn't get my Linux box to drive it at 60Hz without turning on fractional scaling. I think that's a limit of my GPU. I'll be honest, I'm not sure what's the difference between 200% @ 2160p and 100% @ 1080p.

Here's what the monitor reports using sudo get-edid -b 7 | parse-edid (run without -b 7 first to find your bus number).

Section "Monitor"    Identifier "PL2893UH"    ModelName "PL2893UH"    VendorName "IVM"    # Monitor Manufactured week 33 of 2023    # EDID version 1.4    # Digital Display    DisplaySize 620 340    Gamma 2.20    Option "DPMS" "true"    Horizsync 15-150    VertRefresh 24-75    # Maximum pixel clock is 600MHz    #Not giving standard mode: 1920x1440, 60Hz    #Not giving standard mode: 1920x1200, 60Hz    #Not giving standard mode: 1920x1080, 60Hz    #Not giving standard mode: 1680x1050, 60Hz    #Not giving standard mode: 1440x900,  60Hz    #Not giving standard mode: 1400x1050, 60Hz    #Not giving standard mode: 1280x1024, 60Hz    #Not giving standard mode: 1280x720,  60Hz    #Extension block found. Parsing...#WARNING: I may have missed a mode (CEA mode 95)#WARNING: I may have missed a mode (CEA mode 94)#WARNING: I may have missed a mode (CEA mode 93)    Modeline    "Mode 22" 262.75  3840 3888 3920 4000 2160 2163 2168 2191 +hsync -vsync     Modeline     "Mode 0" 533.25  3840 3888 3920 4000 2160 2163 2168 2222 +hsync -vsync     Modeline     "Mode 1"     Modeline     "Mode 2"     Modeline     "Mode 3" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync    Modeline     "Mode 4" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync    Modeline     "Mode 5"  74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace    Modeline     "Mode 6"  74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace    Modeline     "Mode 7"  74.250 1280 1390 1420 1650  720  725  730  750 +hsync +vsync    Modeline     "Mode 8"  74.250 1280 1720 1760 1980  720  725  730  750 +hsync +vsync    Modeline     "Mode 9"  54.000 1440 1464 1592 1728  576  581  586  625 -hsync -vsync    Modeline    "Mode 10"  54.000 1440 1464 1592 1728  576  581  586  625 -hsync -vsync    Modeline    "Mode 11"  27.000  720  732  796  864  576  581  586  625 -hsync -vsync    Modeline    "Mode 12"  27.000  720  732  796  864  576  581  586  625 -hsync -vsync    Modeline    "Mode 13"  27.000 1440 1464 1590 1728  576  578  581  625 -hsync -vsync interlace    Modeline    "Mode 14"  27.000 1440 1464 1590 1728  576  578  581  625 -hsync -vsync interlace    Modeline    "Mode 15"  54.054 1440 1472 1596 1716  480  489  495  525 -hsync -vsync    Modeline    "Mode 16"  54.054 1440 1472 1596 1716  480  489  495  525 -hsync -vsync    Modeline    "Mode 17"  27.027  720  736  798  858  480  489  495  525 -hsync -vsync    Modeline    "Mode 18"  27.027  720  736  798  858  480  489  495  525 -hsync -vsync    Modeline    "Mode 19"  27.027 1440 1478 1602 1716  480  484  487  525 -hsync -vsync interlace    Modeline    "Mode 20"  27.027 1440 1478 1602 1716  480  484  487  525 -hsync -vsync interlace    Modeline    "Mode 21"  25.200  640  656  752  800  480  490  492  525 -hsync -vsync    Modeline    "Mode 23"  241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync     Modeline    "Mode 24"  200.25 2560 2608 2640 2720 1440 1443 1448 1474 +hsync -vsync     Option "PreferredMode" "Mode 22"EndSection

But, ultimately, all the functions worked with Linux. The display was crisp, sound was passed over DP or HDMI, the USB port worked flawlessly.

Verdict

Too often "vertical" monitors have crap viewing angles. I'm delighted to say that the PL2893UH is perfect. Even at an oblique angle text remains sharp and colours remain consistent.

If you're going to be staring at a screen all day, it might as well be this one!

You can buy the monitor on Amazon.

https://shkspr.mobi/blog/2024/01/review-iiyama-28-inch-4k-vertical-monitor/

blog, to ilaughed
@blog@shkspr.mobi avatar

Review: Another USB-C Hub from Mokin - 14-in-1
https://shkspr.mobi/blog/2024/01/review-another-usb-c-hub-from-mokin-14-in-1/

The lovely people at Mokin keep sending me their USB-C hubs to review, and I'm happy to do so. They work splendidly with my Linux and Windows machines, and they provide more ports than I ever thought necessary.

A little metal hub with lots of cables going in to it.

This one is positively festooned with extra ports. Let's take a look.

USB-C

Plug your power adapter into the hub, and then the hub into your laptop. With most hubs, that's it; you've lost a C port. This has an extra USB-C port - so you don't lose anything. Personally, I'd prefer more USB-C ports.

Instead, you get 3x USB-A 3.0 ports, and 2x USB-A 2.0 ports. That's a lot of room for peripherals. They're all well spaced out, so you should be able to cram everything in.

Storage

All these sorts of hubs tend to have an SD slot and a microSD slot. Read and write speeds hit the limit of the cards I had - but you may be better off using the USB 3 ports if you really need speed. Speaking of which...

Speed

Obviously, if you have a hundred gadgets plugged in - and only one USB-C cable - there's a limit to the total throughput. That said, the Ethernet port topped out my 650Mbps broadband - and I don't have anything much faster than that!

Video

There are two HDMI ports and a legacy VGA port. I'll be honest, I can't remember the last time I needed to plug my laptop into an analogue video cable. But I guess if you go to lots of crappy conference venues it might be useful?

My old laptop was able to drive two monitors at the same time, which was pretty useful. You're limited to one at 4k@60Hz - if you're using two HDMI, you'll only get 30Hz. But if you're happy with 1080p, you'll get 60Hz on both.

Apparently MacOS doesn't support triple display.

Power

USB's Power Delivery mode is a still a bit confusing. I used a 100W Dell charger and, USB-C PD tester saw that about 80% of the power was making it to the laptop.

With the power unplugged, the hub drew electricity from the laptop in order to charge all the gadgets.

Sound

Weirdly, the analogue sound out didn't show up for me in Linux. I'm not heartbroken by that - either my laptop has a speaker out or the HDMI device does. But it is a bit weird that it didn't show.

Linux info

As with all modern devices, it is plug-and-play. All my gadgets worked fine with it. This is what Linux sees:

ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet AdapterID 2109:0817 VIA Labs, Inc. USB3.0 Hub             ID 2109:0817 VIA Labs, Inc. USB3.0 Hub ID 1a40:0801 Terminus Technology Inc. USB 2.0 Hub2109:8817 VIA Labs, Inc. USB Billboard Device   ID 2109:2817 VIA Labs, Inc. USB2.0 Hub             ID 2109:2817 VIA Labs, Inc. USB2.0 Hub  

Verdict

There's a lot packed into a fairly small box. Depending on which way the wind is blowing, you'll pay about £60 on Amazon for it.

Small box with too many USB cables coming from it.

It's a neat little halfway house between a small adapter with a couple of ports and a massive docking station. But if you don't need all those ports, there's probably something cheaper.

I guess this is aimed at people plugging in to all sorts of weird screens on their travels. I think a DisplayPort would have been a better choice than double HDMI.

So a bit of a mixed bag. If you need these options, it is close to perfect. But it may be excessive for some.

Discount

Readers of this blog can get 25% off at https://mokinglobal.com/ using code TERENCE25.
Offer expires 2024-03-31

https://shkspr.mobi/blog/2024/01/review-another-usb-c-hub-from-mokin-14-in-1/

blog, to random
@blog@shkspr.mobi avatar

No, Oscar Wilde did not say "Imitation is the sincerest form of flattery that mediocrity can pay to greatness"
https://shkspr.mobi/blog/2024/01/no-oscar-wilde-did-not-say-imitation-is-the-sincerest-form-of-flattery-that-mediocrity-can-pay-to-greatness/

Another day, another debunking!

I've seen this quote flying around social media for some time.

A tweet with thousands of reposts and likes. It reads: I just learned that the full Oscar Wilde quote about imitation is: “Imitation is the sincerest form of flattery that mediocrity can pay to greatness.” The last part.. it matters.

Everyone loves finding out that a famous quote has a twist and that the author isn't anonymous. It's the perfect piece of clickbait!

But the thing is… this quote is bunkum.

The easiest way to tell is to stick it into a search engine. You'll find lots of people confidently claiming it is by Wilde - but no actual sources. Try it now. Surely at some point someone would have pointed to the scene in a play, or some private correspondence, or a passage from a book, wouldn't they? But there's nothing. Just a lot of unsourced claims.

Wilde isn't an obscure writer. All of his work has been digitised and is easily searchable. As far as I can tell, this "quote" doesn't appear anywhere.

So who did say it? And who attributed it to Oscar Wilde?

The phrase "imitation is the sincerest form of flattery" has a long history. In its modern form, it can be attributed to Charles Caleb Colton who published it in a book of aphorisms in 1820. That's 34 years before Oscar Wilde was born.

But what about "that mediocrity can pay to greatness"? The earliest example of that 2nd half comes from 1893, in "Notices of the proceedings at the meetings of the members of the Royal Institution of Great Britain with abstracts of the discourses - Volume XIV". That was published in 1896.

Here it is in the essay "The Imaginative Faculty" by Sir Herbert Beerbohm.

As on the stage, so it is in real life, we are not what we are, we become what we imagine ourselves to be. A man is not always what he appears to his valet. He often finds his truest expression in his work. A great man will often appear uninteresting and commonplace in real life. Who has not felt that disappointment ? The real man is to be found in his work. It is this personality which is often obliterated by his biographer — for detraction is the only tribute which mediocrity can pay to the great. This literary autopsy adds a new terror to death. A man might at least be permitted to leave his reputation to his critics, as he would leave his brains to a hospital.

Admittedly, that was published during Wilde's life. And, in 1892, Beerbohn produced and stared in Wilde's A Woman of No Importance. Nevertheless, the phrase isn't found in that play - nor in any of his earlier works that I can see.

In 1898, the phrase was also used by "Abbott" when memorialising the racist and misogynist hate-preacher "Brann":

https://archive.org/details/completeworksofb12branuoft/page/72/mode/2up

It pops up again in 1918 with Georg Brandes writing "A great writer has said: Detraction ts the only tribute, which mediocrity can pay to the great.".

The combining of the two phrases doesn't seem to appear online or in archived works until - as far as I can see - October 2nd 2012.

Using Twitter's date-based search I found a now-defunct lifestyle magazine with the full quote - albeit unattributed. A few days later, someone quotes a now-private account which attributes it to Wilde.

Two tweets showing the phrase.

A year or so earlier, in 2011, a Juventus Football fan posted this proto-version of the phrase:

https://twitter.com/Salah_Almutairi/status/103342577440399360

The Origin?

But, perhaps there is a little truth in the quote.

In 1882, Oscar Wilde gave a lecture - "The English Renaissance of Art" - in New York City. During which, he said:

Satire, always as sterile as it is shameful and as impotent as it is insolent, paid them that usual homage which mediocrity pays to genius

Which can be seen (in very low fidelity) in the New York Tribune, January 10th 1882:

A low resolution scan of a newspaper.

A few months later, he signed an autograph with the slightly more pithy:

Satire is the homage which mediocrity pays to genius.

Sadly, it does not appear to have been an original bon mote.

Going back even further

A year before, in 1881, the Michigan Medical News published a column saying:

Furthermore if Dr. Roberts' has copied "verbatimly" from Dr. Leonard there is in that fact another ground for congratulation, for is not plagiarism the most subtle form of flattery? It is the tribute which mediocrity pays to genius :

Perhaps Wilde was unlikely to be reading medical journals. But there are earlier publications

In 1872, a list of sayings was attributed to the American judge Frederick Grimke:
Envy is the homage which mediocrity pays to genius.

Even earlier is this entry from The Dublin Magazine from 1842:
La Rochefoucault said that "Hypocrisy was the unconscious homage that Vice paid to Virtue ;" may we not say too that Plagiarism is the homage that Mediocrity pays to Genius. If this be true. Dr. Kane has obtained the suffrage of the small as well as that of the great.

That's a good decade before Oscar Wilde was born. It is possible that, as he was born and grew up in Dublin, the phrase was in common parlance then.

So what have we learned?

Everyone loves a cool quote. And people feel smart when they are told a "hidden truth" behind it. It's the same thing that lights up the brains of conspiracy theorists; there's a second meaning which the world doesn't know but has been revealed to you.

But this, it turns out, is not by Oscar Wilde. Both halves of the quote pre-dates him by several decades. The quote that Wilde did give is about satire, rather than imitation. And even that wasn't original.

But the Internet is a machine which mercilessly mingles quotes until a new meme was born.

"I have said to you to speak the truth is a painful thing. To be forced to tell lies is much worse."

https://shkspr.mobi/blog/2024/01/no-oscar-wilde-did-not-say-imitation-is-the-sincerest-form-of-flattery-that-mediocrity-can-pay-to-greatness/

#factCheck #quote

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

Gadget Review: Mokin USB-C to USB-C & USB-C & USB-C & USB-C & USB-C
https://shkspr.mobi/blog/2024/01/gadget-review-mokin-usb-c-to-usb-c-usb-c-usb-c-usb-c-usb-c/

You can never have too many USB-C ports, right? It's rubbish having a cheap laptop with only a single USB-C port. So, the good folks at Mokin have sent me a gadget which turns your single and lonely USB-C port into FIVE USB-C ports.

A multi-port adapter.

Along the side you get 4 USB-C 3.1 ports which are theoretically capable of 10Gbps in aggregate.

At the bottom is a USB-C 3.0 Power Delivery port which can take up to 100W of power.

There's also an obligatory blue LED to let you know it is working.

A slim USB-C hub with lots of cables plugged in.

Speed

As will all modern hubs, there's nothing to install. Plug it in and it starts working. Copying a large file from a USB 2.0 phone got a respectable 90mbps.

When plugged into ethernet, it got up to 660Mbps - which is about as fast as my broadband goes.

And I don't think I have any faster devices than that to check!

Power

I used my USB-C PD tester. I plugged in a 100W capable charger into the hub's PD socket, and the output into my laptop. The hub passed through about 80% of the power I got when I was plugged in normally. So there is a bit of a hit in the power delivery.

That said, it happily charged the laptop and all the devices attached to it. Even without power attached, the hub drew power from the laptop and charged the gadgets.

It doesn't support "Fast Role Swap". So if you disconnect the power from the hub, your devices will briefly disconnect and reconnect again. Usually not a problem unless you're in the middle of a file transfer.

Downsides

The major issue is that there's no monitor output.

This is a USB 3.1 hub. As I've mentioned before, in order to do video over USB, you need 3.2 capable hubs and cables.

Feel free to supply your own rant about USB-C versions here.

Linux info

This shows up as 05e3:0610 Genesys Logic, Inc. Hub and is supported by modern Linux kernels. I tried it on Ubuntu and Android and it worked just fine.

Verdict

You can get this for about £20 on Amazon depending on whether the algorithm likes you or not.

For the price, I think it is excellent. I can't find anything so cheap or slim which does support video. Or has as many ports.

If all you need are a bunch of extra C ports, this is perfect. Speeds are good, power transfer is good, and it works on Windows and Linux flawlessly. If you need video, try Mokin's USB-C Docking Station.

Discount

Readers of this blog can get 25% off at https://mokinglobal.com/ using code TERENCE25.
Offer expires 2024-03-31

https://shkspr.mobi/blog/2024/01/gadget-review-mokin-usb-c-to-usb-c-usb-c-usb-c-usb-c-usb-c/

blog, to Musicals
@blog@shkspr.mobi avatar

Theatre Review: Alan Cumming is not acting his age
https://shkspr.mobi/blog/2024/01/theatre-review-alan-cumming-is-not-acting-his-age/

Poster featuring Alan Cumming in a provocative pose.What a treat! Alan Cumming has the amazing gift of making a 2,000 seat venue feel like an intimate little club. The Crown-Prince of Scotland spent two hours regaling us with tales from Hollywood and singing his heart out.

The name-dropping is outrageous! The stories scandalous! The singing fabulous! It feels like the whole performance is in italics with extra exclamation marks.

It feels slightly odd to say this, but it was delightful to hear him sing in his natural accent. If you've seen Schmigadoon or Cabaret or literally anything else he's been in, you'll know what a gift he has for accents. But hearing classic show-tunes done in a rolling burr was magnificent.

The song choice is, I think it is fair to say, eclectic. I've seen a lot of musicals but even I struggled to place them all. Yes, he does some from Cabaret (although probably not the ones you'd expect) and a delicious Disney medley, but the real joy is in the deep cuts and the self-composed number.

His backing band is modest - piano, drums, trumpet, and cello - but it is more than enough to fill the space without being overpowering.

It is a sweet, joyous, flirtatious, and wickedly funny show. Perhaps the only disappointment was that we didn't get to hear a rendition of the theme from "High Life" 😉

Tickets are available for tonight in London, Thursday in Manchester, and Saturday in Glasgow.

https://shkspr.mobi/blog/2024/01/theatre-review-alan-cumming-is-not-acting-his-age/

blog, to random
@blog@shkspr.mobi avatar

Gadget Review: USB-C AA Batteries
https://shkspr.mobi/blog/2024/01/gadget-review-usb-c-aa-batteries/

Supertoys last all summer long! But batteries do not. The last set of rechargeable batteries I had leaked everywhere, and I could never find the right charging lead for the gizmo which pumped power into them.

So let's cut out the middle-man and plug a USB-C cable straight into our batteries!

Two AA batteries with USB-C leads going into them.

What?

These were the cheapest AA batteries I could find which took USB-C. £16 including delivery, for 4 batteries and a mutant cable. Regular AA batteries are about a quid each, or 50p if you buy in bulk. So these only have to last 8 times as long as a normal battery to be worth it.

Four AA batteries in a row. They have USB-C receptacles near the top.

The mutant cable causes fear and despair to all those who look upon it.

A cable with a USB-C plug on one end and two USB-C on the other.

The triple-ended USB cable is for power only. It happily charged my phone but didn't let any data through.

Plugging the batteries into the cable set of this flashing green LED. The light goes solid once fully charged.

https://shkspr.mobi/blog/wp-content/uploads/2024/01/flashing-battery-led.mp4

I'm half disappointed that they don't come with BLE and an app to say when they need recharging!

A quick shove into a battery tester showed them to be pumping out about 1.45V.

Battery tester showing 1.45V.

The other (non-rechargable) batteries I have give out 1.3V - 1.6V, so these seem perfectly acceptable.

The USB-C batteries are identical in size to their standard brethren.

Three batteries of the same height and width.

Do they really have 12800mAh capacity? Duracell's AA batteries claim a maximum of 2500mAh - and they don't need space for a USB-C port and LED. So, I think that capacity is unlikely. It wouldn't be the first time Daweikala have misrepresented their batteries' capacity.

I don't have the tools (or the patience) to properly evaluate their capacity. All I know is... They work. I shoved them in my gadgets and they provided enough power. If they drain a bit quickly, I'll shove in one of the hundreds of USB-C cables I've got laying about the place. The batteries get slightly warm while charging, but they don't emit any noise or magic smoke.

So, they probably lie about their capacity and they're a good deal more expensive than regular batteries. But they're quick and easy to recharge, and they create less waste.

You can probably find them on AliExpress, or in your local equivalent, at a cheaper price.

One day, in the glorious future, every device will charge via USB-C. Until then, these are a nifty way to retrofit old gadgets.

https://shkspr.mobi/blog/2024/01/gadget-review-usb-c-aa-batteries/

blog, to climate
@blog@shkspr.mobi avatar

We pay 12p / kWh for electricity - thanks to a smart tariff and battery
https://shkspr.mobi/blog/2024/01/we-pay-12p-kwh-for-electricity-thanks-to-a-smart-tariff-and-battery/

I love my solar panels. But the solar panels don't love the British midwinter. Most of the year, my panels produce more electricity than I can use. But in winter we're lucky if they produce 3kWh per day - and most of the time it is considerably less.

So our winter electricity bills must be massive, right?

Nope.

The normal cost per kWh is 28.5p (including VAT). We're paying less than half that - 12.4p per kWh.

Screenshot of our electricity bill showing 320kWh consumption.

This is thanks to two things - a smart tariff and a home battery.

The Octopus smart tariff charges us a variable amount throughout the day. Every 30 minutes the prices change to reflect the demands on the grid. During peak times, it can go as high as £1/kWh. That's a good incentive not to run the tumble-dryer at the same time as the rest of the country is cooking dinner!

During quieter times, the price of electricity drops - there isn't much demand at 3AM so prices fall. Sometimes they fall to zero. Other times, they fall into negative territory and we get paid to use electricity.

Now, that's all well and good, but most people don't want to shift their consumption habits. The dishwasher goes on when it is full and dinner is cooked before Coronation Street starts. That's where the battery comes in.

We have a 4.8kWh battery. It is hooked up to the Internet and knows what our energy prices are minute-to-minute. When electricity is cheap, it charges up from the grid. When electricity is expensive, it discharges into our home. If we boil the kettle at 7pm, the sensors on the battery detect that we're using expensive electricity and starts outputting stored electricity.

Essentially, we don't have to alter our lifestyle at all. Here's a typical December day. The graph is quite complicated, so let me step you through it.

Two graphs showing power flows across a day.

The bottom graph shows how expensive it is to buy electricity throughout the day. As you can see, there is a peak in the early evening when electricity becomes expensive.

The top graph has two interesting lines on it. The purple line shows how much electricity we're drawing from the grid, the blue line shows what the battery is doing. Early in the morning electricity is cheap - you can see the purple line rising as the blue line falls. That shows the battery is charging. You will notice that it only charges at the cheapest possible times.

In the evening, you can see the purple line dip to zero and the blue line rise. That shows the battery is discharging into our home and there in no electricity being purchased from the grid. There's a similar dip at about 0830 when there's a little spike in price. Clever battery!

I want to stress that is is all automated. I don't have to do a single thing. The battery speaks directly to my electricity provider to get the half-hourly costs. The battery can predict what our usage will be, but keeps most of the electricity for the expensive times of day. Our smart meter sends our usage back to the energy company automatically.

Savings

Against a normal tariff of 28.5p/kWh, I'm paying 12.4p/kWh. That's a saving of 16.1p/kWh.

The bill above shows 320kWh per month, which means a saving of £51 from the electricity I buy. That's approximately a 55% discount.

We've had that battery since August, so about 5 months. In that time it has saved us approximately 500kWh. We only moved onto the smart tariff a few months ago, so work out the savings there is complex - but I estimate it's about £130.

December is a high use month (lots of lights on and oven cooking). During summer, the battery mostly fills up with free solar power. It is hard to predict exactly what we'll save in a year, but it should easily for 50% off our electricity bills.

Cost

But, of course, there's no such thing as a free lunch. Our 4.8kWh battery cost about £2,700 to supply and install. That's a large chunk of change. Based on our current projections, its payback period should be about 7 years. Of course, if electricity prices rise significantly, the payback period will shorten.

Solar panels are also expensive to install - between £4,000 and £12,000 depending on your property and how complex your roof is. They mean we pay virtually nothing for electricity in spring and summer. Again, the payback period is under a decade.

We can also sell our excess solar back to the grid. In theory we could also buy cheap electricity in the morning, store it in the battery, and then sell it back at peak times. In practice it isn't worth it; the cost of buying electricity at peak is higher than the price we could sell it for. So it makes sense to use the power rather than selling it.

If you can afford the large up-front capital costs, solar + battery allows you to make massive savings with a dynamic tariff. In times of solar excess, we pay close to nothing per kWh. In winter, we shift our consumption to pay at the cheap rate.

Effectively, it's like pre-purchasing all your electricity for the next decade.

Final thoughts

There's no doubt that the cost makes this prohibitive to many people. Ideally, the state should be mandating that all new homes have solar panels and space for optional batteries. We also need V2G (Vehicle to Grid) to allow electric cars to act as home batteries.

But there's no doubt that these technologies actually work! Yes, solar works in rainy London. And, yes, even fairly small batteries can make a significant difference in winter. We're on the cusp of a domestic energy revolution. When coupled with a smart tariff, it means people don't have to change the way they behave in order to save energy.

https://shkspr.mobi/blog/2024/01/we-pay-12p-kwh-for-electricity-thanks-to-a-smart-tariff-and-battery/

blog, to ComputerScience
@blog@shkspr.mobi avatar

Compressing Text into Images
https://shkspr.mobi/blog/2024/01/compressing-text-into-images/

(This is, I think, a silly idea. But sometimes the silliest things lead to unexpected results.)

The text of Shakespeare's Romeo and Juliet is about 146,000 characters long. Thanks to the English language, each character can be represented by a single byte. So a plain Unicode text file of the play is about 142KB.

In Adventures With Compression, JamesG discusses a competition to compress text and poses an interesting thought:

Encoding the text as an image and compressing the image. I would need to use a lossless image compressor, and using RGB would increase the number of values associated with each word. Perhaps if I changed the image to greyscale? Or perhaps that is not worth exploring.

Image compression algorithms are, generally, pretty good at finding patterns in images and squashing them down. So if we convert text to an image, will image compression help?

The English language and its punctuation are not very complicated, so the play only contains 77 unique symbols. The ASCII value of each character spans from 0 - 127. So let's create a greyscale image which each pixel has the same greyness as the ASCII value of the character.

Here's what it looks like when losslessly compressed to a PNG:

Random grey noise.

That's down to 55KB! About 40% of the size of the original file. It is slightly smaller than ZIP, and about 9 bytes larger than Brotli compression.

The file can be read with the following Python:

from PIL import Imageimage  = Image.open("ascii_grey.png")pixels = list(image.getdata())ascii  = "".join([chr(pixel) for pixel in pixels])with open("rj.txt", "w") as file:    file.write(ascii)

But, even with the latest image compression algorithms, it is unlikely to compress much further; the image looks like random noise. Yes, you and I know there is data in there. And a statistician looking for entropy would probably determine that the file contains readable data. But image compressors work in a different realm. They look for solid blocks, or predictable gradients, or other statistical features.

But there you go! A lossless image is a pretty efficient way to compress ASCII text.

https://shkspr.mobi/blog/2024/01/compressing-text-into-images/

blog, to random
@blog@shkspr.mobi avatar

Movie Review: Looop Lapeta / লুপ লাপেটা
https://shkspr.mobi/blog/2024/01/movie-review-looop-lapeta-%e0%a6%b2%e0%a7%81%e0%a6%aa-%e0%a6%b2%e0%a6%be%e0%a6%aa%e0%a7%87%e0%a6%9f%e0%a6%be/

Movie poster - a woman is on the phone looking nervous.About a million years ago, I took a cute girl on a date to see the cult movie Lola Rennt. I felt pretty cool for knowing all about hip German cinema. I eventually married the girl, so she must also have thought I was pretty cool.

Well, a few days ago, I found out that Netflix remade the film last year. In Hindi!

Looop Lapeta (লুপ লাপেটা - literally "Crazy Situation Looping") is a hyper-modern update of the original, and it is joyous. It's lovely seeing a film made by someone who likes film-making. Most Netflix films are content to point static cameras at actors and hope for the best. This absolutely revels in cinematic trickery. The updates contain lots of subtle (and not so subtle) nods to the original. The whole cast are gold, but it's Shreya Dhanwanthary who shines with an absolutely scene-stealing monologue in a deftly filmed uncut shot.

It doesn't have quite the tension of the original and is perhaps a little stretched out. The use of flashbacks is fun, but the slow-motion sequences do drag a bit. The Gappu & Appu comic relief felt a bit tacked on.

I can thoroughly recommend it as a delightfully bonkers film.

https://shkspr.mobi/blog/2024/01/movie-review-looop-lapeta-%e0%a6%b2%e0%a7%81%e0%a6%aa-%e0%a6%b2%e0%a6%be%e0%a6%aa%e0%a7%87%e0%a6%9f%e0%a6%be/

blog, to random
@blog@shkspr.mobi avatar

Gadget Review: Vehhe Ionic Shower Head
https://shkspr.mobi/blog/2024/01/gadget-review-vehhe-ionic-shower-head/

Look, here's the deal. Sometimes companies send me products to review. I usually try and make sure they're interesting, useful, or delightfully weird. Mostly they're electronic gadgets or cool books.

But someone offered to send me a shower head to review. And our old shower head had got a bit gunked up. So I said yes. I have sold the soul of this blog for a £13 bit of plastic full of magic stones.

Anyway, here's the obligatory video.

Is it any good? I mean... yeah. It's a mass produced bit of plastic. It fits onto a standard UK shower hose. You can have a high pressure beam, a rain shower, or a mix of the two - all from one button.

Do the beads have ionic magic? Not a clue. They certainly make it look nice though.

If you'd like me to review something - please get in touch.

https://shkspr.mobi/blog/2024/01/gadget-review-vehhe-ionic-shower-head/

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