Email or username:

Password:

Forgot your password?
10 posts total
Terence Eden’s Blog

The DALEK World (1965)
https://shkspr.mobi/blog/2024/05/the-dalek-world-1965/

You're a big Doctor Who fan, right? If I asked you what the world DALEK meant, you'd probably tell me that it is an anagram of KALED - the original name of their species.

You'd be wrong.

In 1965, it was clearly established by a canonical source, that the world DALEK stands for:

- Destroy without pity
- Attack without fear
- Live without conscience
- Eliminate without worry
- Kill, kill, kill, kill!

I ain't even lying!

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Dalekreed.jpeg

WTAF?

A few years ago, I picked up a copy of this - The DALEK World. A 1965 tie-in book published by the BBC. I've taken the liberty of scanning it and sharing a few images.
https://shkspr.mobi/blog/wp-content/uploads/2024/05/Dalek-World.jpeg

It is bonkers. And contains loads of facts for DALEK fans:

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Measles-fs8.png

There are also some pretty good stories - most of which don't feature Doctor Who, but do contain some brilliant future-gazing.

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Sensor-fs8.png

I love the fact that someone in 1965 predicted pirating movies and home projectors!

But, back to DALEKs. There's this brilliant bit of continuity busting:

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Yeti-fs8.png

Doctor Who wouldn't meet the Yeti for another two years - where it was established they were controlled by The Great Intelligence. Although, as the story is missing perhaps there is some retcon that we're missing?

Of course, there's no metric system in the future:

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Pounds-fs8.png

There are also some quite baffling claims:

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Invisible-fs8.png

A year after publication, Doctor Who had a full colour movie which featured this - presumably invisible - DALEK.

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Dalek-Red.jpeg

The artwork is gorgeous - albeit with a rather limited colour palette:

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Secret-Struggle.jpeg

What else do we know about the DALEKs? Well, for a start, they're communists!

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Communist.jpeg

Blimey! Luckily, the best way to defeat the DALEKs is... to implement planetary communism.

https://shkspr.mobi/blog/wp-content/uploads/2024/05/Defeat.jpeg

You think some of today's stories and tie-ins are a bit weird? The DALEK World is a wonderful little time capsule which shows what kids were devouring just a couple of years after Doctor Who first aired. If you can find a copy, I thoroughly recommend having a ruffle through it.

https://shkspr.mobi/blog/2024/05/the-dalek-world-1965/

#DoctorWho #DrWho #predictions

The DALEK World (1965)
https://shkspr.mobi/blog/2024/05/the-dalek-world-1965/

You're a big Doctor Who fan, right? If I asked you what the world DALEK meant, you'd probably tell me that it is an anagram of KALED - the original name of their species.

You'd be wrong.

In 1965, it was clearly established by a canonical source, that the world DALEK stands for:

Terence Eden’s Blog

HDR on a Pioneer VSX-933
https://shkspr.mobi/blog/2024/05/hdr-on-a-pioneer-vsx-933/

I bloody hate hardware manufacturers. I wanted to use HDR on my PlayStation 5. The console supports it, my TV supports it, my amp supports it, my cables support it. Yet it wasn't working. I tried everything - updating firmware, replacing cables, and even reading the manual. Nothing.

And then I stumbled on the answer thanks to a random forum post.

Perform the following procedure when the unit is on.
1. While pressing DIMMER on the main unit, press AUTO/DIRECT to display the current setting on the display. While this is being displayed, while pressing DIMMER on the main unit, repeatedly press AUTO/DIRECT to switch the setting.
2. To exit the settings, release your finger. After a few seconds, the display goes out and the switching is complete.

Once the setting was changed to "Enhanced" HDR worked! But why isn't it in the manual? A bit of searching for the text finds a file called manual/sup/upd/hdmi_4k_pio.pdf .

So I assume that this is a supplement meant to update the original manual - it is mentioned as new functionality introduced after a firmware update. But why isn't it in the main manual?

If you visit the VSX-933 product page you can download the manual, but there's no mention of a supplement or an update. The original manual was released in 2018, and the supplement in 2019.

I wonder what other features this amp is hiding that Pioneer simply haven't bothered to tell anyone about?

https://shkspr.mobi/blog/2024/05/hdr-on-a-pioneer-vsx-933/

#av #hdmi #HomeCinema #HowTo

HDR on a Pioneer VSX-933
https://shkspr.mobi/blog/2024/05/hdr-on-a-pioneer-vsx-933/

I bloody hate hardware manufacturers. I wanted to use HDR on my PlayStation 5. The console supports it, my TV supports it, my amp supports it, my cables support it. Yet it wasn't working. I tried everything - updating firmware, replacing cables, and even reading the manual. Nothing.

Terence Eden’s Blog

Book Review: Understanding Privacy - Heather Burns
https://shkspr.mobi/blog/2024/05/book-review-understanding-privacy-heather-burns/

https://shkspr.mobi/blog/wp-content/uploads/2024/05/cover.jpgHeather Burns has an absolutely deft way of turning the sometimes-dull world of digital privacy into entertaining, informative, and actionable prose.

Too many of these sorts of books end up being a list of woes and end with "someone should do something, I guess?". Understanding Privacy is different. All the way through the mantra is "You are someone! You do something! And here's how..."

Digital privacy is, I think it is fair to say, not a universally loved topic. Too often it is seen as shrill pedants lobbing fines at unsuspecting companies. The reality is somewhat more prosaic. This is a journey we all have to go on - wherever we work in the digital world.

It would be easy for this book to descend into just being a mega-long checklist. But, while there are a fair few lists, they are backed up with practical steps which can be taken by both people and companies. Some of them are wickedly witty:

Please use https://, because seeing http:// this late in the game is not the sort of ’90s flashback I enjoy.

I especially enjoyed the reframing of certain privacy mavens as "privacy ableists" - those who "criticise a person with a disability for owning an Alexa device, taking no regard for the benefit it has brought into the disabled person’s life."

I also got emotional whiplash after hearing some people described as "privacy shamers" - those who "harass anyone who is doing their best to change tech companies from the inside as being collaborators on par with the Vichy regime."

The book is full of interesting links out to further resources. Although, I should point out that links like https://smashed.by/cnilrights go via the short.io service. Which probably makes me a privacy pedant 😆.

This is an empowering read. It isn't designed to make you feel hopeless at the state of the world but, instead, it asks you to reflect on what you're doing and what you should be doing.

The final question should be the one which weighs on you heaviest: How am I going to feel about myself if I continue to work for this company and develop this product?

Read this book as soon as you can.

https://shkspr.mobi/blog/2024/05/book-review-understanding-privacy-heather-burns/

#BookReview #privacy

Book Review: Understanding Privacy - Heather Burns
https://shkspr.mobi/blog/2024/05/book-review-understanding-privacy-heather-burns/

https://shkspr.mobi/blog/wp-content/uploads/2024/05/cover.jpgHeather Burns has an absolutely deft way of turning the sometimes-dull world of digital privacy into entertaining, informative, and actionable prose.

Terence Eden’s Blog

Gell-Mann Amnesia and Purdah
https://shkspr.mobi/blog/2024/05/gell-mann-amnesia-and-purdah/

This is a retropost. Written contemporaneously, but published long after the events. At the time, I was a Civil Servant in Cabinet Office. Now I am not. But as we're heading for another General Election, I thought I'd share this post.

It's the evening of the 2019 General Election. I am plagued by two thoughts.

Briefly stated, the Gell-Mann Amnesia effect works as follows. You open the newspaper to an article on some subject you know well. You read the article and see the journalist has absolutely no understanding of either the facts or the issues. Often, the article is so wrong it actually presents the story backward-reversing cause and effect. You read with exasperation or amusement the multiple errors in a story-and then turn the page to national or international affairs, and read with renewed interest as if the rest of the newspaper was somehow more accurate about far-off Palestine than it was about the story you just read. You turn the page, and forget what you know.

And

The pre-election period (purdah) is the term used to describe the period between the time an election is announced and the date the election is held. Civil servants are given official guidance by the Cabinet Office on the rules they must follow in relation to Government business during this time.

People tweet wrong things all the time. But, during this election, I've seen people I admire and respect tweeting out things I know to be false.

I don't mean slightly wrong about an esoteric policy. I mean balls-to-the-wall, head-up-the-arse, foot-in-mouth, inexcusably wrong.

I get that part of politics is enraging people to gather them to your cause. But these were people who I eagerly followed so that I could understand what was going on in an increasingly complicated world.

In normal circumstances, I'd've argued with them online. Sure, it's neither healthy nor a good way to change people's minds - but it would be something.

Purdah - a somewhat politically-incorrect term - prevents Civil Servants from commenting on things during the election. It's a sensible policy - but a bit annoying when People Are Wrong On The Internet. In fairness, I probably shouldn't get involved in arguments - that's best left to the press team.

But I am conflicted. I have first-hand, expert knowledge about a subject. I can objectively prove my arguments. Why shouldn't I be able to correct people's mistakes?

Even worse - and the thing that mildly terrifies me - if my idols are wrong about that thing, what else are they wrong about?

https://shkspr.mobi/blog/2024/05/gell-mann-amnesia-and-purdah/

#election #GE2024 #politics #retropost

Gell-Mann Amnesia and Purdah
https://shkspr.mobi/blog/2024/05/gell-mann-amnesia-and-purdah/

This is a retropost. Written contemporaneously, but published long after the events. At the time, I was a Civil Servant in Cabinet Office. Now I am not. But as we're heading for another General Election, I thought I'd share this post.

Terence Eden’s Blog

One MegaWattHour of Battery Power!
https://shkspr.mobi/blog/2024/05/one-megawatthour-of-battery-power/

Less than a year ago, in August 2023, we installed a 4.8kWh Solar Battery at a cost of £2,900. Whenever I talk about the upfront capital costs of solar power, people rightly want to know what the payback period is.

Well, after less than 10 months, the battery has given us 1MWh.

To put that in to context, the average UK household uses about 3MWh per year. So (again, very roughly) over a third of our electricity use this year has come from the battery.

But where does the battery get its energy from? We have two sources.

First is solar. When the sun is shining, our solar panels produce electricity. That flows down from our roof and into our mains wiring where it is used by the home. If we are using less electricity than is being produced, the electricity flows into the local grid and we get paid for selling our surplus.

Our battery has sensors attached to the grid connection. When it detects surplus generation, it starts charging. By constantly monitoring our overproduction, it can charge up with free solar power.

But the sun doesn't always shine (ain't that the truth!) so there are days when our solar production is less than our usage.

In these cases, the battery charges from the electricity grid. We have a smart tariff which changes price every 30 minutes. The battery knows the day's prices and can predict our daily usage. If it can see that electricity is cheap at 3am and expensive at 4pm, then it will charge up during the early hours of the day and discharge at peak time.

The battery occasionally sits idle. Mostly when it has fully charged but knows an expensive period is coming up later.

What does that mean for money?

Well... it's complicated! When the battery charges from solar, is the electricity free? No! If we were to sell that surplus electricity to the grid, we would be paid 15p/kWh.

When the battery charges from the grid, is the electricity expensive? No! Because we are on a dynamic tariff, we occasionally get paid to use electricity! Our provider has paid us up to 5p/kWh to charge!

When the battery discharges, how much does it save us? Again, complicated! Because we're on a dynamic tariff our prices change every 30 minutes. Sometimes the rates are as high as £1/kWh, other times they're 1p/kWh. Generally speaking, the battery only discharges if the price of use is higher than the cost of acquisition.

So... I've fudged the figures! For the first year of operation, energy prices have been high. Based on a back-of-a-fag-packet calculation, I reckon the battery saves us an average of about 31p/kWh. Call it about £360 per year in savings.

That gives us a payback time of about 8 years.

Of course, if electricity prices spike, payback will be quicker. If they crater, it'll take longer. If we switch to electrical heating or get an electric car, the savings will be greater.

Domestic battery technology is still a bit of a tough sell. The batteries are large and their fans are noisy. The cost of materials and installation is high and their capacity is relatively small. But the technology behind them is sound. With a dynamic energy price tariff, they're one of the best way to reduce utility bills.

Obligatory referral link

Join Octopus energy and we both get £50. They have regular and dynamic tariffs, and a pretty cool GraphQL API.

https://shkspr.mobi/blog/2024/05/one-megawatthour-of-battery-power/

#battery #moixa #solar

One MegaWattHour of Battery Power!
https://shkspr.mobi/blog/2024/05/one-megawatthour-of-battery-power/

Less than a year ago, in August 2023, we installed a 4.8kWh Solar Battery at a cost of £2,900. Whenever I talk about the upfront capital costs of solar power, people rightly want to know what the payback period is.

Terence Eden’s Blog

Internationalise The Fediverse
https://shkspr.mobi/blog/2024/02/internationalise-the-fediverse/

We live in the future now. It is OK to use Unicode everywhere.

It seems bizarre to me that modern Internet services sometimes "forget" that there's a world outside the Anglosphere. Some people have the temerity to speak foreign languages! And some of those languages have accents on their letters!! Even worse, some don't use English letters at all!!!

A decade ago, I was miffed that GitHub only supported some ASCII characters in its project names. There's no technical reason why your repo can't be called "ഹലോ വേൾഡ്".

Similarly, I'm frustrated that Mastodon (the largest ActivityPub service) doesn't allow Unicode usernames and has resisted efforts to change.

So I built a small ActivityPub server which publishes content from an Actor called @你好@i18n.viii.fi - it is only a demo account, but it works!

Some ActivityPub clients report that they are able to follow it and receive messages from it. Others - like Mastodon - simply can't see anything from it. Take a look at the replies on Mastodon to see which services work. You can also see some of its posts on the Fediverse.

What Does The Fox Spec Say?

The ActivityPub specification says:

>

Building an international base of users is important in a federated network.
Internationalization

I can't find anything in the specifications which limits what languages a username can be written in. But there are a few clues scattered about.

The user's @ name is defined by preferredUsername which is:

>

A short username which may be used to refer to the actor, with no uniqueness guarantees.
4.1 Actor objects

There's nothing in there about what scripts it can contain. However, later on, the spec says:

>

Properties containing natural language values, such as name, preferredUsername, or summary, make use of natural language support defined in ActivityStreams.
4. Actors

So it is expected that a preferred username could be written in multiple scripts. Which implies that the default need not be limited to A-Z0-9.

The ActivityStreams specification talks about language mapping.

Finally, the ActivityPub specification has some examples on non-Latin text in names.

So, I think that it is acceptable for usernames to be written in a variety of non-Latin scripts.

But What About...?

There are usually a few objections to "Unicode Everywhere" zealots like me. I'd like to forestall any arguments.

What about homograph attacks?

Well, what about them? ASCII has plenty of similar looking characters. I doubt most people would notice when a capital i is replaced by a lower L - and vice-versa. Similarly the kerning issue of an r and n looking like an m is well known. Are mixed language homographs more dangerous? I don't think so.

What if people make names that can't be typed?

Well, what if they do? Maybe not being found by people who can't type your language is a feature, not a bug. But, anyway, clients can let users search for other people, or copy and paste their names.

What about weird "Zalgo" text?

It is up to a client to decide how they want to render text input. The "problems" of strange Unicode combinations are well known. This is not a hard computer-science problem.

What about bi-directional text?

The spec makes clear this is allowed.

Do people even want a username in their own script?

I have no evidence for this. But I bet you'd get pretty frustrated if you had to switch keyboard just to type your own name, wouldn't you? In any case, why can't I have a username of @😉

What's Next?

If you build ActivityPub software, give some thought to the billions of people who don't have names which easily fit into ASCII.

If your software can see @你好@i18n.viii.fi and its posts, please let me know.

https://shkspr.mobi/blog/2024/02/internationalise-the-fediverse/

#ActivityPub #fediverse #i18n #mastodon #unicode

Internationalise The Fediverse
https://shkspr.mobi/blog/2024/02/internationalise-the-fediverse/

We live in the future now. It is OK to use Unicode everywhere.

It seems bizarre to me that modern Internet services sometimes "forget" that there's a world outside the Anglosphere. Some people have the temerity to speak foreign languages! And some of those languages have accents on their letters!! Even worse, some don't use English letters at all!!!

Terence Eden’s Blog

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, nw["amenity"]({{bbox}}); finds all "amenities" near a specific location.

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}});

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: nw["name"][!"highway"][!"railway"][!"waterway"][!"power"]({{bbox}});

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.

overpass-api.de/api/interpreter?data=[out:json];nw["name"][!"highway"][!"railway"][!"waterway"][!"power"](around:100,51.5202,-0.1040);out center qt 25;

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 arrive vocabulary. So this will be limited to a message with a location attached.

Other ActivityPub services do support location.

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/

#ActivityPub #fediverse #FOURSQUARE #geolocation #OpenStreetMap

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".

Terence Eden’s Blog

This blog is now on the Fediverse!
https://shkspr.mobi/blog/2023/09/this-blog-is-now-on-the-fediverse/

You can now have this blog federated to your social media site by following
@blog@shkspr.mobi

If you're on Mastodon, it should look something like this:

You should be able to follow it on Lemmy, kBin, PixelFed, and some cool social network I've never heard of.

How

This blog runs on WordPress. Thanks to the tireless work of Matthias Pfefferle, there's now an official WordPress ActivityPub plugin.

It's pretty easy to set up - just install and click on settings. But there are a few niggles you should know about if you run a blog in a subdirectory - for example, this site uses /blog

First, you'll need to add the following to the .htaccess file in your website's root:

RedirectMatch "^\/\.well-known/(webfinger|nodeinfo|x-nodeinfo2)(.*)$" /blog/.well-known/$1$2

That means if someone visits example.com/.well-known/webfinger to find your ActivityPub account, they'll be automatically redirected to example.com/blog/.well-known/webfinger

Secondly, you might need to change your blog's ActivityPub username. For example, I log in to this blog using the username "Master_Control_Program" - but I don't want that displayed as the user. So I went to Settings → ActivityPub → Settings and unticked the "authors" box. I then gave my whole site the unsurprising name "blog":

If you do have multiple authors, each one of them can have their own unique Fediverse account.

Why

You can follow this blog using RSS or Atom - that means you need a feed reader configured to pull from my site every time you want to see if there's an update.

Or you can subscribe via email - every time I publish a blog post it will appear in your inbox.

And, now, if you spend all day on social media you can get my blog's updates directly in your feed.

Fancy features

It is early days for the plugin, but there are a few nice features.

If you hit reply to a blog post in the Fediverse, it become a comment on my blog. This is similar to how Brid.gy syndicates comments.

You can see how many people followed you. And you can remove followers if you want to.

If you don't want to share the entire post, there are several settings which let you choose exactly what you do want shared.

Editing the WordPress post also send the edit out to the Fediverse.

The "joined" date is the date of your earliest blog post. See if you can find my oldest one!

Issues

Aside from a few glitches when setting up, there are a few points to be aware of.

There's no way to set a unique user avatar - it will go with whatever your blog is set to display.

It will only show blog posts from after you installed the plugin. So you can't scroll backwards into your archives.

Although you can see how many followers you have, I don't think there's a way to expose that to your users. And there's no simple way to say "Follow me at…"

As I mentioned, replying to a post converts that reply into a comment. But at the moment it doesn't support threaded comments. If I reply to a comment on the blog, it doesn't get sent back to the user as a reply on the Fediverse. Similarly, there's no way to track how many people repost or favourite your content.

ActivityPub doesn't support inline images. And some clients don't support formatting. So a federated blog post can look a bit weird.

If someone reads a blog post on the Fediverse, then they're not reading it on my website. I don't run any adverts - but I might miss out on people clicking around and reading other articles.

So I think I might only post an excerpt onto social media. I'm not sure yet. Thoughts?

What's next?

If you've seen this post Federated over ActivityPub - please reply! I'd love to know how far it has travelled.

https://shkspr.mobi/blog/2023/09/this-blog-is-now-on-the-fediverse/

#ActivityPub #mastodon #WordPress

This blog is now on the Fediverse!
https://shkspr.mobi/blog/2023/09/this-blog-is-now-on-the-fediverse/

You can now have this blog federated to your social media site by following
@blog@shkspr.mobi

If you're on Mastodon, it should look something like this:

You should be able to follow it on Lemmy, kBin, PixelFed, and some cool social network I've never heard of.

Григорий Клюшников

So can I comment on this from my very own ActivityPub server I made from scratch?
(just saw your comment on HN)

Terence Eden’s Blog

Never use a URL shortening service - even if you own it
https://shkspr.mobi/blog/2023/02/never-use-a-url-shortening-service-even-if-you-own-it/

The Guardian launched its online adventures back in 1999. At some point, they started using the name "Guardian Unlimited". Hey, the dot com boom made us all do crazy things! As part of that branding, they proudly used the domain GU.com

Over time, the branding faded and GU.com became a URL shortening service. Tiny URls like gu.com/abc could be printed in papers, sent via SMS, or posted on Twitter. They made a huge fanfare about how it would help with analytics.

You can read some of the history of the shortner to understand why it was created.

And now, for reasons best known to themselves, The Gaurdian have stopped the service and put GU.com up for sale.

The starting price is TWO AND HALF MILLION DOLLARS!

Look, if I had an asset that valuable and was looking at declining revenue, I'd sell it.

But breaking that URl comes with a problem. I've written before about why URl shortening is bad for users and bad for the web. I've even helped publish government guidance about it. But all of those were based on the premise that the shortener was a 3rd party service. I never thought someone would be as daft as to switch off their own service.

Here are some of the problems this sale causes.

data:image/webp;base64,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

Is there a tweet somewhere of a future politician saying "I support this 100% GU.com/...."? Redirect that to something horrific and you have a potential scandal on your hand.

There are lots of academic papers with gu.com shortened links. Those are all now dead.

Millions of links around the web - including many on the Grauniad itself - are all now broken.

The Guarrdian could fix this by publishing a list of all the shortened URls. That wouldn't stop links breaking, but would make it possible for researchers to reconstruct the original destination.

For decades, we've tried to remind people that "Cool URls Don't Change". We'll just have to hope that the people of the future find a way to decipher all these obsolete links.

https://shkspr.mobi/blog/2023/02/never-use-a-url-shortening-service-even-if-you-own-it/

#guardian #hyperlinks #newspapers #url #web

Never use a URL shortening service - even if you own it
https://shkspr.mobi/blog/2023/02/never-use-a-url-shortening-service-even-if-you-own-it/

The Guardian launched its online adventures back in 1999. At some point, they started using the name "Guardian Unlimited". Hey, the dot com boom made us all do crazy things! As part of that branding, they proudly used the domain GU.com

Terence Eden’s Blog

The unreasonable effectiveness of simple HTML
https://shkspr.mobi/blog/2021/01/the-unreasonable-effectiveness-of-simple-html/

I've told this story at conferences - but due to the general situation I thought I'd retell it here.

A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic violence. The security guards on the door are cautiously indifferent to anyone walking in. The air is filled with tense conversations between partners - drowned out by the noise of screaming kids.

In the middle, a young woman sits on a hard plastic chair. She is surrounded by canvas-bags containing her worldly possessions. She doesn't look like she is in a great emotional place right now. Clutched in her hands is a games console - a PlayStation Portable. She stares at it intensely; blocking out the world with Candy Crush.

Or, at least, that's what I thought.

Walking behind her, I glance at her console and recognise the screen she's on. She's connected to the complementary WiFi and is browsing the GOV.UK pages on Housing Benefit. She's not slicing fruit; she's arming herself with knowledge.

The PSP's web browser is - charitably - pathetic. It is slow, frequently runs out of memory, and can only open 3 tabs at a time.

But the GOV.UK pages are written in simple HTML. They are designed to be lightweight and will work even on rubbish browsers. They have to. This is for everyone.

Not everyone has a big monitor, or a multi-core CPU burning through the teraflops, or a broadband connection.

The photographer Chase Jarvis coined the phrase "the best camera is the one that’s with you". He meant that having a crappy instamatic with you at an important moment is better than having the best camera in the world locked up in your car.

The same is true of web browsers. If you have a smart TV, it probably has a crappy browser.

https://shkspr.mobi/blog/wp-content/uploads/2018/08/Twitters-guest-mode-displayed-on-a-TV.jpg

My old car had a built-in crappy web browser.

https://shkspr.mobi/blog/wp-content/uploads/2015/06/i3-HTML5.jpg

Both are painful to use - but they work!

If your laptop and phone both got stolen - how easily could you conduct online life through the worst browser you have? If you have to file an insurance claim online - will you get sent a simple HTML form to fill in, or a DOCX which won't render?

What vital information or services are forbidden to you due to being trapped in PDFs or horrendously complicated web sites?

Are you developing public services? Or a system that people might access when they're in desperate need of help? Plain HTML works. A small bit of simple CSS will make look decent. JavaScript is probably unnecessary - but can be used to progressively enhance stuff. Add alt text to images so people paying per MB can understand what the images are for (and, you know, accessibility).

Go sit in an uncomfortable chair, in an uncomfortable location, and stare at an uncomfortably small screen with an uncomfortably outdated web browser. How easy is it to use the websites you've created?

I chatted briefly to the young woman afterwards. She'd been kicked out by her parents and her friends had given her the bus fare to the housing benefits office. She had nothing but praise for how helpful the staff had been. I asked about the PSP - a hand-me-down from an older brother - and the web browser. Her reply was "It's shit. But it worked."

I think that's all we can strive for.

Here are some stats on games consoles visiting GOV.UK

data:image/webp;base64,UklGRkACAABXRUJQVlA4IDQCAADwCgCdASowADAAPrVSpU0nJKOiJzgKSOAWiUAXZm5dJ3l+BQ9m8phghwQHi8Ym3WaOSWWXnMbNxfUTSGhLzaiwgM/jMUh9QyDj+eMEfT8GtmH7Ikv7R970O8NBBuMa+KAA/u6fAj/ZHU+ifD/0K5VcqevQEIiV2z/I751/gf7B3YqTI0HUv5mf23t/HHmDmCdfNAB8oG9t5ssK1N3u6/Oi6YtdXyqBn89uoffcuDK1lL+YJj8OfNiNpVauzA/rdfPPGmiu0kMb1zXjv0ayNt3YWaNMLuP+Bbj2GymT8NS0EWuLK4zBspi4Xmi0/8j6zlQi/A5xa7l+3XBGSv5B6/rFAZ+u9CV463VDEiBQstTlc2DegXJD8I1O209P75NR55lQHMXNqNve+S+6w9DPQxYsdKvUaSmWM3dFYUrtQBHgZ51UzKROe3Bd9HJ8vH4n0WAA5WqXeerFQvZNcSiilNowyft9VwfV2ZA3BzrWidUbL8pxaPcZqCsNLGc2QPFPWZUINLCW32sNfT4i//RCWNcldFF4d/nR4s+L+3zwLHlDlB/7H9kH1KDTwLvNOWTs+ZmlQTYEWrq0stlUCysB31n9W8M4A+IfvxM3YOIc/yZNXuWPLU76FyMqg1p5+uOhZM5qMIrudEhzKOgSw8XuOiIr9S+LP52GU8CQsA9kwqKTNWDUZ/4o4ajssfRUF/B2EubzBYXporQg5/OK20e1YM3TwkRcWSNsfD4BkSi1Gb+kD2sSAAA=

Matt Hobbs (@TheRealNooshu@hachyderm.io)

@TheRealNooshu

data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCmFyaWEtbGFiZWw9IlR3aXR0ZXIiIHJvbGU9ImltZyIKdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoCmQ9Im0wIDBINTEyVjUxMkgwIgpmaWxsPSIjZmZmIi8+PHBhdGggZmlsbD0iIzFkOWJmMCIgZD0ibTQ1OCAxNDBxLTIzIDEwLTQ1IDEyIDI1LTE1IDM0LTQzLTI0IDE0LTUwIDE5YTc5IDc5IDAgMDAtMTM1IDcycS0xMDEtNy0xNjMtODNhODAgODAgMCAwMDI0IDEwNnEtMTcgMC0zNi0xMHMtMyA2MiA2NCA3OXEtMTkgNS0zNiAxczE1IDUzIDc0IDU1cS01MCA0MC0xMTcgMzNhMjI0IDIyNCAwIDAwMzQ2LTIwMHEyMy0xNiA0MC00MSIvPjwvc3ZnPg==

Replying to @TheRealNooshuInterestingly we have 3,574 users visiting GOV.UK on games consoles:
• Xbox - 2,062
• Playstation 4 - 1,457
• Playstation Vita - 25
• Nintendo WiiU - 14
• Nintendo 3DS - 16

20/22

❤️ 29💬 1♻️ 010:45 - Mon 01 February 2021

https://shkspr.mobi/blog/2021/01/the-unreasonable-effectiveness-of-simple-html/

#HTML5 #web #WeekNotes #work

The unreasonable effectiveness of simple HTML
https://shkspr.mobi/blog/2021/01/the-unreasonable-effectiveness-of-simple-html/

I've told this story at conferences - but due to the general situation I thought I'd retell it here.

A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic violence. The security guards on the door are cautiously indifferent...

Go Up