mailto: blog -at- heyrick -dot- eu

The "algorithm" was never for you

There is a commonplace claim made by modern technology companies: that their algorithms know what you like. They analyse your behaviour, learn your interests, and then thoughtfully suggest things that will enrich your life.

This sounds marvellous, if somewhat creepy, in theory. A helpful digital butler that will quietly observe your tastes and suggest nice things you may otherwise have missed in the noise and chaos of the modern internet.

In practice, however, the algorithm is not a competent butler but rather a hyperactive trainee sales assistant shrieking "YOU BOUGHT SOCKS! ONCE! YOU NEED 300 MORE PAIRS OF SOCKS!" while throwing random things (not necessarily socks) at your head.

Let's take stock of this madness.

 

YouTube

You might imagine that YouTube recommends videos based on what you enjoy watching. This would be logical. Instead, YouTube recommends videos based upon what keeps you watching.
These things are not the same.

YouTube tends to recommend videos that maximise engagement. Engagement is a wonderfully vague word which, when translated into plain English, means "whatever keeps you watching long enough to show you more adverts".

I recently had to watch a Veritasium video using the YouTube app because my IP was (temporarily) blocked for watching too much outside of the YouTube ecosystem.
The video was a twenty eight minute look at the history and security of credit cards. Here's a screenshot of the end of it. The video is 28m33s and notice the red line along the bottom. That's the current play position. Notice also the gaps in the red line. All eight of them. Those are the advert locations. Statistically that's once every three and a half minutes (but not evenly spaced, something did attempt to place adverts at cut points in the video). That's ridiculous, really.
Screenshot of the YouTube app.
In the YouTube app.

Now, the thing with YouTube is that it has discovered something about human psychology: outrage works extremely well. Calm interest is nice, but anger glues people to the screen like nothing else. So watch one mildly critical video about something and before long the recommendation feed fills with people shouting at each other about it. Because you don't want calm discussion or an attempt to understand both sides of an argument. What you really want is gladiatorial combat and red-faced people screaming at each other.
The obvious and perverse downside of this is that if you try to find out about modern world topics such as left/right ideology, climate change, gender change, abortions, etc you will rapidly end up in a rabbit hole that's a dark scary place bereft of reason and empathy. Your "truth" will eventually end up as the most extreme take that doesn't blatantly break YouTube's terms and conditions.

 

Netflix

Netflix has its own set of helpful recommendations that appear to be based upon "people who watched this also watched". The thing is, their system will frequently suggest things you have already watched. Not obscure things you vaguely remember from years ago, but things you watched recently. The platform knows you watched them, it not only recorded you watching them but it faithfully recorded every time you hit pause or skip back 10 secs. And yet, these things are sat there in the suggestions, patiently waiting for you to discover them all over again.
Even more curiously, while you can upvote (little or lots) or downvote a video, there is no "hide this as seen" option, not even a little icon on the video thumbnail to indicate that you have watched it. Instead these entries linger like ghosts that refuse to move on.

This behaviour raises a possibility: perhaps the system is not really trying to recommend things at all. Perhaps it is just trying to keep the screen full. The more that would need to be removed as having been watched, the more other stuff would need to be found to fill the gaps.

Let's composite the first three screenfuls of "post apocalyptic" and grey-fade those things that I have already watched.

Things I have watched.
Things I have watched in this category are greyed out.

According to unogs, Netflix France only has 7132 items, broken down as 4278 movies and 2854 series. For the UK it's slightly different at 7086 videos (4067 movies and 3019 series). The disparity is due to the chaos of licensing.
To put this into context, a family-owned video rental store would often have between 500-1500 titles, while a larger chain store would often carry something closer to 5,000 titles. I've heard it said that Blockbuster had a minimum requirement of 7,000 but that may be specific to the US market; one can imagine a store in Baltimore needing a larger selection than a store in Camberley. So, really, the entirety of Netflix is akin to a larger chain video rental place and recycling stuff you've already watched in the suggestions gives the illusion that there's more.

 

Adverts in mobile apps

Mobile advertising adds another delightful twist. It's not enough to throw up a full-screen picture. It's not even enough to have a full-screen unskippable video of that crazy woman screaming (with full volume by default) that is somehow supposed to tempt you to looking at Temu.
No, they've one step further with playable adverts. Pull out pins to save a horrifically mistreated woman and her child. Tap on colours to save a king. Walk around whacking down trees and bears to... make bear barbecue because that's what people want in the ice and snow?

Thankfully you are no longer held captive for several minutes waiting for the game to expire, or forced to play it until the free play runs out. Now there's a little button marked "Google Play" that you can tap to forward out of the game. In each and every single case precisely one thing will happen. That is, you'll end up in Google Play, in the app store. Either by switching apps entirely, or by a sort of 2/3s screen popup version. You can easily back out of that to get back to the advert to tap the 'X' to close (and if you tap anywhere else, you're back to the app store), and then tap 'X' again to dismiss the big "GET" button (and if you tap anywhere else....).

These days it is pretty streamlined. The app store skip button appears after a few seconds, so the whole irritation can be dealt with in maybe 25-30 seconds.

So what relevance does it have to this particular discussion?

Google Play history
Google Play history, polluted by design.

Yup. Whether you are interested in the game, or not, whether you wanted to look at or download the game, or not - Google Play noticed and faithfully recorded this as an interaction of something that you chose to look at in the app store where it will influence future suggestions. This isn't a company trying to game the system, this is by design.

So, great. The algorithm now thinks that I have a burning passion for saving hapless kings and roasting bears. I go into Play Store and scroll down to the "Suggested for you" and what's there is Temu (sponsored), Coin Master, Kingshot, Last War: Survival Game, Gossip Harbor® and a load more crappy games I have precisely zero interest in. Especially since anybody with a brain knows that mobile games are optimised for microtransactions - you can either grind endlessly, or you can cough up real world cash. Those are the only ways to get ahead. I could tell you what I think of that, but my blog would utterly fail in its PG-13 ambitions.

There are only two ways to deal with this. The first is to turn off the app store history entirely, in which case your suggestions will be the generic crap determined by who pays the most - which may well be the exact same things.
The second is to call up your history (in the Play app store: tap your profile icon, tap "Personalisation in Play", tap "Play history", scroll down, be shocked, tap 'X' to dismiss each and every one - and since we're talking about Google's shitty excuse of programming, with a notable delay you will find yourself jumping all around the list without any interaction from you - even though things are removed when marked as "Deleting...", it seems necessary to recreate the entire list once it has been "Deleted"; which will drag you to the top of the list and maybe restore you afterwards if you didn't touch the screen in the meantime. It's an extremely hostile UI behaviour and it is as if they are intentionally trying to make this hard to do.

 

Amazon

And then, of course, there is Amazon. Yes, Amazon, the company that blessed the world with the "Buy in one click" button. The company that's a big warehouse of odds and ends that they'll rush to you in a day or two (with a Prime membership).

Now let's say you buy a shaver. This seems like a fairly conclusive purchase, doesn't it? You needed a shaver, you purchased a shaver, problem solved.
Any rational system would interpret this as a successful transaction, end of story.

Amazon, not being a rational system, will then start to suggest helpful things such as you might like...such as another shaver.
And that will be all it thinks about until you start looking at other stuff in order to give it distractions.

Why? Well clearly the algorithm is optimised to believe that shaving equipment, sold with a two year guarantee as is legally mandated in the EU, is actually really a consumable product with the approximate lifespan of fresh milk.

My aside comment relating to Amazon is to observe that when I used to buy stuff for mom, the algorithm had problems trying to cope with a male nerd that had a sideline in crochet and cross-stitch. I got some really weird suggestions for a while.

 

The sick sad truth

After a while of observing the algorithms observing you, a pattern will emerge. The recommendation systems are not really trying to understand you. They are trying to steer you. YouTube pushes you towards things that provoke reaction. Netflix prefers endless browsing over admitting how much is or isn't available. Mobile adverts push you toward accidental installs (directly via the advert and indirectly by polluting your history). And Amazon wants you to buy the things you solved the need for three weeks ago.

All of this is presented as a helpful service.
A friendly algorithm that "learns your preferences".

The thing is, if these systems were actually designed around your interests, they wouldn't behave like this. You wouldn't be shown things you have already watched. You wouldn't keep being thrown into the app store (and it wouldn't record things you didn't personally search for). It would understand the difference between curiosity and rage. It would recognise that buying a product usually means you no longer need that product.
In other words, it would behave like it was working for you.

Instead it behaves exactly like something working for someone else.

Which, of course, it is.

The algorithm does not exist to help you find what you want. It exists to gently, persistently, and invisibly push you towards what they want you to want.

 

Things aren't much better without an algorithm

My local supermarket used to send a little coupon booklet with useful reduction coupons. They haven't done this since forever. I guess if you want reductions you might have to install and use the app, but given the privacy implications that's a big NO from me.

They do provide little printed coupons related to things that have been purchased, but this isn't algorithmic so much as sponsored. If I buy some Yoplait yogurt pots, then I get a coupon from Danone tempting me to try their not-yogurt flavoured creamy gunk.

A money-off coupon.
A money-off coupon.

Alas, this system has no brains at all. I'm a single guy. My shopping ought to scream this loud and clear. If you examine my purchases you'll see that I dabble in organic (mostly milk and frozen veg), often buy ready meals, have a definite liking of Mars bars, and don't eat much meat (because it's shockingly expensive) and when I do it's usually chicken.

So why do I sometimes get promotions for baby nappies and panty liners?

I bought panty liners once, a very long time ago (in 2016), from a different place, in order to catch the mess when I was dealing with inkjet cartridges.
And I bought a thick pair of tights once, a stupidly long time ago (2013!), to cut up and glue the fabric over my keyboard's speakers to replace the fraying fabric there.

None of this makes me female. I get that gender, apparently, is a user-selectable option these days, a little switch you can flick when you rummage around and find your configuration settings...but regardless of how I may choose to dress or what pronouns I assign myself, I have no need for feminine hygiene products in my daily life.
In fact, the closest I come to such things (other than specific hacks like those mentioned above) is that I will happily sign a paper saying that they should be tax exempt - that we're still having this discussion is a serious failing of society.
But that's about as far as it goes. I don't need liners, and I don't need nappies for miniature sized humans. Even a cursory look at my typical shopping would say that, so to give me such coupons...come on, we're just wasting Bisphenol A-free thermal paper at this point.

 

My new watch

An impulse purchase. I haven't worn a watch in over twenty years. I'm not allowed to wear one at work (risk of contamination), and honestly asides from being at an appointment or work on time, the entire concept of time is a fluid thing in my life. My computer tells me that it is 13:42 as I write these words. There are two (analogue) clocks on the wall in front of me, one of them being the platter of a broken harddisc from an Xbox console. There's a radio controlled (thus always correct) clock behind me.

But time itself? It's a nebulous concept most of the time. I have alarms to get me up for work, but on weekends and days off, time is more like "the sun gets up" and "the sun sets". That part in between may or may not be filled with usefulness (of varying definitions of the word useful).

So why on earth did I buy a watch?

Well, because it arrived like this.

A bag of bits.
A bag of bits.

Or to show it better, here it is all opened up.

Bits out of the bag.
Bits out of the bag.

I'm sure you can see why it appealed to me.

With one 20 pin microcontroller, a quad 7 segment LED, one resistor, one 32.768kHz oscillator, two switches, and three ceramic capacitors it wasn't hard to build. The instructions were amusing: "Install the welding microcontroller at position U1" and "Install the digital tube at position of LED1".

In use, it's big and chunky. The LED is normally off as it would draw a lot of current, the power source is a CR2032 button cell. Pressing either button turns the LED on for about ten seconds. Holding the top button sets the minutes, and holding the lower button sets the hours.

Once upon a time this would have been futuristic.
Once upon a time this would have been futuristic.

Internally there are two pads. Shorting one pin to its matching pad will leave the LED always on (but I can imagine battery life would be dreadful). Shorting the other pin to its matching pad will change the watch to use 24h time. By default it uses the 12h clock, and there's no indication on the display as to AM or PM.

 

The schematic.
The schematic.

There is a very simple schematic printed in the instruction paper. It identifies the LED as a 2481BS, but it says nothing about the microcontroller. There is absolutely nothing marked on the chip itself. Given the pins are marked using notation such as PT5.1 I had thought that it may have been some sort of 8051 clone such as an Atmel part. The AT89LP4052 has a very similar pinout, as opposed to the PIC16F series. The telling thing is 0V to pin 1, +V to pin 20, and the crystal oscillator between pins 2 and 3.
Also telling is that it runs from a simple watch oscillator, and that it is driving the LEDs directly.
I posed the question to ChatGPT and while we weren't able to narrow it down to a specific chip, our consensus is that it is likely either a Holtek clock chip or some clone of it. These are tiny devices made specifically for this task.

Rather than being anything standard like a Z80, 6502, or 8051 core clone, it is likely to be some sort of custom 8 bit accumulator core with predictable timing. It is driving the LEDs segments directly from PT3.0 to PT3.7 which suggests that it is 8 bit internally rather than anything like 4 bit. Any more than that would be overkill. Likewise, that's probably why it's not a clone of a normal microprocessor - think of all the addressing modes of the 6502. Useful for an 8 bit computer, overkill for a watch.
So it'll be a little 8 bit accumulator core with something in the order of half a K to 1K of ROM, 16-32 bytes of RAM, a very simple ALU (no multiply or divide; the 6502 had neither and it didn't stop BASIC!). It may even use the PIC style of mixing RAM and registers? As for performance? Well, it doesn't need much. If it's timed off the main crystal it might do a few thousand instructions per second.

We can actually take a stab at guessing here. Turning on the LED shows a solid looking LED, no obvious flicker. So we're looking at maybe 100Hz per digit. With four digits, that's about 400 updates per second (2.5ms per digit). If it's a Holtek running at 32.768kHz that implies about 30µs per instruction (a million (µs/sec) divided by 32768 cycles/sec). This gives around 80 instructions for every 2.5ms digit.
But, here's the thing. I'm going to halve that. Why? Stability. It's quite possible that the 32.768kHz input will be driving a flip-flop divider that will be delivering good clock pulses to the core at 16.384kHz. So this implies 40 instructions per digit. But how many might we actually need?

For each digit we'll need to:

  • load the current digit index (hour 10s, hour 1s...)
  • fetch the digit value
  • look it up in a bit table to get the segment pattern
  • disable the selection of the previous digit
  • output the new segment bit pattern
  • enable the selection of the new digit
  • increment the digit index
  • test if it wrapped
  • zero if it did
  • loop
At the least, that's ten instructions. It's a very simple device, so it can probably be expected to manage one instruction per tick. However we should double that as we haven't accounted for things like blinking the middle dots every second, or the ten second timeout.
This implies maybe 20ish instructions per digit. Which is half what we have available. Plenty to handle things running in the background like a dead simple interrupt handler to run off a timer. Depending on the hardware inside the chip, this might be a hardware divider that simply ticks a few times per second. It's not running an OS, it doesn't need anything faster.
Why not once per second? Because of the detection of how long the button is held, and the auto-repeat of the digit updating. Two or four ticks per second will deal with that.
And why even do this? Simple - it decouples the timer tick handling from the LED scanning. Granted, this is a cheap crystal oscillator so it may well drift (the quoted values are often +/-20-50ppm which is around 1-4 minutes per month, or several seconds per day), but keeping the ticks and LED separate means the code inside doesn't even need to handle clashes or delve into complicated nonsense with counting cycles in loops. The tick code handles the tick, and the LED code handles the LEDs, and it doesn't even need to do anything like having interlocks around which digit is being read. It'll just read the current value and if the tick code changes it a nanosecond later, the update will be picked up the next time around, which will be a mere centisecond. The brain can recognise a digit in as little as 13 milliseconds, which is 1.3 centiseconds, which is slower than your digit is going to update. So we can concentrate on keeping the time as accurate as the hardware can manage, and if it's a teeny bump in the display update speed, well, we wouldn't notice anyway. After all, the reason we see four digits instead of each one blinking rapidly (which is the truth) is because of how long it takes the grey matter to do stuff.

Above I used the phrase "accumulator core". You might be thinking 6502ish, but the difference is that the 6502 used an accumulator as the target of any maths operation; whereas in an accumulator core the accumulator is often the only real working register. It could well do what it needs to do by loading bytes from memory (into Acc), doing some transformation (increment) writing back to Acc, and then writing from Acc back to memory. There may be a limited addressing mode where it can load into Acc from address (in RAM) plus offset (in Acc).

So, as you can see, for an application like this it doesn't need to be fast, it doesn't need to be powerful, it doesn't need to have anything much internally. This keeps the transistor count low, which also helps keep power draw down. So low that it doesn't even need to have the ability to sleep when inactive. It'll be drawing a few microamps. The LED, when it is on, will be several milliamps. That's a thousand times more. So the LEDs are off most of the time, and when they are on, the microcontroller power draw isn't even a rounding error in comparison.

Granted, this is a lot of conjecture and I am absolutely definitely overthinking this, but it's cold and rainy so what else am I going to do? ☺

 

My dot matrix is faulty

Also this morning the new printer ribbon arrived. Actually, the postman gave me the printer ribbon, drove off, then came back a few minutes later with my watch (oops!). I said it was a shame he had to do the long driveway twice. He asked where I was from (Scotland) and I asked where he was from (Morocco).
At the end he said "Have a nice day!" in English.
I replied "La shukran ala wajib!" (no thanks necessary or you're welcome) which wasn't exactly correct but close enough. He was massively surprised that I knew that. I can also say hello "Salam alaykum" and I know the proper response is "Alaykum salam".
Okay, that's about the extent of my Arabic (I'm carefully glossing over the thing that unpleasant people tend to say) but, hey, even a phrase or two shows a modicum of respect for somebody else's culture. I mean, a person isn't automatically bad because they're not like you. To put this into sharp focus, I'm a tea-obsessed Brit in France. I'm not the same as them. Does this make me bad?
So, yeah, learn a couple of phrases in languages of people you interact with- even if only "hello" ("jane dohbray" (Polish), "buno zooa" (Romanian)).

Anyway, where were we? Oh yes, the dot matrix. I fitted the new ribbon and fired up with the button held down to perform the test print. Nothing.
I folded the paper and inserted it twice as thick in case it was a positioning issue. There was a faint smear from the ribbon, but still nothing.

Oh well, the head has probably either seized or rusted. I had a crack at freeing it, but, well... that got nowhere. I can't say it's more broken than it was before because, well, there comes a point where the amount of brokenness is no longer relevant. Like if a car falls off a cliff and you then throw a rock at it. Technically it is more broken, but that's hardly relevant. My print head fell off a cliff, and I threw a rock at it. The sort of rock that goes by the name of percussive maintenance, that sadly in this case did not result in success.

It would have been fun to play with, but I guess it's not to be. Oh well. I'll stick it in the shed and maybe I'll remember it in twenty years when I'm 72, retired, incontinent, and ever so slightly senile. Hey, wouldn't this be useful to strip down for parts, despite me no longer being safe around soldering irons. Or screwdrivers. I wonder, will I have made it to being the male equivalent of a crazy cat lady? One needs ambitions, you know...

 

 

Your comments:

Please note that while I check this page every so often, I am not able to control what users write; therefore I disclaim all liability for unpleasant and/or infringing and/or defamatory material. Undesired content will be removed as soon as it is noticed. By leaving a comment, you agree not to post material that is illegal or in bad taste, and you should be aware that the time and your IP address are both recorded, should it be necessary to find out who you are. Oh, and don't bother trying to inline HTML. I'm not that stupid! ☺
As of February 2025, commenting is no longer available to UK residents, following the implementation of the vague and overly broad Online Safety Act. You must tick the box below to verify that you are not a UK resident, and you expressly agree if you are in fact a UK resident that you will indemnify me (Richard Murray), as well as the person maintaining my site (Rob O'Donnell), the hosting providers, and so on. It's a shitty law, complain to your MP.
It's not that I don't want to hear from my British friends, it's because your country makes stupid laws.

 
You can now follow comment additions with the comment RSS feed. This is distinct from the b.log RSS feed, so you can subscribe to one or both as you wish.

Frank, 28th March 2026, 08:47
Oi! If you think you'll be incontinent and senile at 72 you've got some serious issues! :-)
jgh, 28th March 2026, 16:41
Weird, I was watching that video about bank cards just two days ago. :)

Add a comment (v0.12) [help?] . . . try the comment feed!
Your name
Your email (optional)
Validation Are you real? Please type 80427 backwards.
UK resident
Your comment
French flagSpanish flagJapanese flag
Calendar
«   March 2026   »
MonTueWedThuFriSatSun
      
247
910111314
17
2325
     

(Felicity? Marte? Find out!)

Last 5 entries

List all b.log entries

Return to the site index

Geekery
 
Alphabetical:

Search

Search Rick's b.log!

PS: Don't try to be clever.
It's a simple substring match.

Etc...

Last read at 05:04 on 2026/04/11.

QR code


Valid HTML 4.01 Transitional
Valid CSS
Valid RSS 2.0

 

© 2026 Rick Murray
This web page is licenced for your personal, private, non-commercial use only. No automated processing by advertising systems is permitted.
RIPA notice: No consent is given for interception of page transmission.

 

Have you noticed the watermarks on pictures?
Next entry - 2026/03/28
Return to top of page