Tech Problems

I'm Not A Bot

Cloudflare and Me

Send me feedback about this section

Due to my strict browser security - DNS blocking and uMatrix and uBlockOrigin and disabled Canvas and other Firefox settings - websites often believe that I am a robot.

Sometimes Facebook will force me to repeat a captcha. Sometimes Google will force me to go through five levels of captchas - no exaggeration!

But worst of all is Cloudflare, who block me outright. There are only two ways to avoid it:

  • use Chrome and (sometimes) log in to Google to let them know my real identity (which I do)
  • something like extortion:
    • download and use its 'Privacy Pass' browser extension
    • use Cloudflare Warp (their VPN)
    • Which begs the question - if an automated browser extension avoids this problem, is it really about blocking bots?

Cloudflare now oversees ingress for a large chunk of the internet - maybe a fifth of all major websites - and they are probably most famous for their DDoS protection and thus their bot detection abilities.

This was worst around 2022, when I was blocked even by some relatively big tech companies such as OpenAI, but it continues today with many smaller websites (such as regional newspapers).

Cloudflare can see, block or tamper with the plaintext of any communications on sites it 'protects'. Most often this is used to escape or block forum posts containing snippets of code. I believe it is enabled by default, leading to much greater difficulty publishing code anywhere, even on programming-oriented forums such as Hacker News.

Besides all this, there's an argument that Cloudflare is the reason why DDoS attacks returned to the internet (hackers used to DDoS each other, but Cloudflare offered hackers DDoS protection, basically stopping their 'civil war' and renewing the war against non-hackers outside Cloudflare's protection).

Not Just Cloudflare

Years ago, my main Reddit account was permanently banned by Reddit, because they thought I had been hacked - but I had simply been using a Python script that intercepted all my browser traffic. Totally understandable for them to do this, except they don't respond to appeals and creating a new account violates their ToS.

It used to be that Google would force me to complete captchas every few minutes if I went beyond the 2nd page of results. And Google captchas used to be awful - multiple pages of captchas of slow-fading image blocks.

They asked me to do a captcha, I did, they verified it, but they still blocked me immediately afterwards. And by the way, their 'contact support' link is nothing except a text box to send to them - which is obviously not going to be any help, because a bot could fill it in as easily as a human, so they will discard all responses.

I spoke too soon - just days later, another very similar error for WSJ. It feels like when all American websites blocked all EU traffic due to GDPR. But these days it's because they almost want a scan of my face to verify I'm not a bot.

Imperva is a 'cybersecurity leader' which is paid to block users who run Firefox on Linux (“look how many attacks we've blocked!” they'll say to their clients)

This is despite my IP address not being in the main IP blacklists that companies tend to share.

Click here to continue reading

Website

UI

Send me feedback about this section

Everything, thus far, is pure CSS and HTML. I wanted to avoid using JavaScript as much as possible.

Accessibility

I recently learned that in 2022, browsers introduced a new 'colour space' - OKLCH (lightness, chroma, hue) - instead of the traditional RGB (red, green, blue). (Here's what that means).

OKLCH makes it a lot easier to design colour themes, because OKLCH is optimised for human-perceived colour, while RGB is computer-percieved colour. For example, I can keep the colours looking the same for a human, but make them darker by just modifying one attribute ('lightness'), or make them 'dimmer' by modifying the 'chroma' attribute - the same operation in RGB would require balancing all three attributes.

For my web app, I just slapped a colour theme on it years ago and left it like that. So I decided to revisit it.

Here's a colour-changing interface I cooked up. It changes the CSS variables; I can modify either RGB or OKLCH, and transform in between them.

The current dark theme and light theme
Optimising for what I like the look of

The light theme was similar, I won't bore you with the details.

I could iteratively improve my colour theme very quickly. So I thought I may as well make it friendly to colour-blind people too.

After a bit of digging around on Google, I found some Python scripts to convert screenshots to simulate certain types of colour-blindness. But I needn't have bothered - Firefox has an inbuilt tool to do that.

The most common type of colour-blindness is red-green blindness (Protanopia and Deuteranopia). Apparently around 8% of men have it, and maybe ~0.5% of women.

My preferred colour theme is very heavy on yellows and greens and reds - basically the worst-case scenario for them. My different types of clickable objects all looked the same colour under Protanopia and Deuteranopia.

Normal (left) vs simulated Protanopia (right)

Everything looked basically the same under Tritanopia (blue blindness). The solution, I figured, was to add some blue to distinguish these colours.

Normal (left) vs simulated Protanopia (right)

Aesthetics

Colour wheel of 'set1' dark theme (from above section)

TODO: Write this section

Law of Least Surprise

I found a 'grumpy man's blog' which complains about bad UI interfaces he and his followers encounter, and I've been using that to help me think about how to avoid unintuitive layouts and behaviours.

The sidebar (on desktop) becomes a header (on mobile). Change your browser's window size to see the problem it creates - a table of contents is more natural to display as a sidebar than as a header. To mitigate this, I grouped sub-headers into containers that automatically re-orient depending on whether the screen is in landscape or portrait mode.

Previously, I displayed a list of all blog pages on the sidebar/header of all blog pages. But the sidebar became valuable real estate when their contents grew, so I removed that and replaced it with a single link to the blog overview page.

In the blog overview page, I wanted to display previews of all blog posts. The lazy solution to that was just to copy the raw HTML contents, use CSS to make it unclickable, and add a “click here” link to the full blog article. The problem with that is that it isn't immediately clear to the viewer that links in the preview are not clickable - so I muted the colour contrasts, which is sort of the universal way of signalling that a UI area is 'disabled'. In particular, I ensured that links in the previews have a muted blue colour - I could have achieved the same effect by simply reducing the preview element's opacity, but that can have unintended side-effects (including slower page rendering).

I found myself often clicking my circular avatar as a way to go back to the main website. This is surprising, because my avatar wasn't clickable. This behaviour was instinctively ingrained in me, presumably because it is so common on other websites that peoples' avatars are clickable. Presumably this instinct is even more ingrained in other people, so I moved my avatar into the link to make it clickable too.

Dark Theme?

This blog has a different style to the rest of my website. A light-themed blog on a broadly dark-themed website - it doesn't sound like a good idea.

The reason for this is that, to me, a dark-themed blog looks too 'l33t' - too edgy, too new-style.

Dark themes are almost the default for programming - GitHub, VSCode etc - seemingly as a way to distinguish themselves from the professional looks of other industries, just like they do in other ways: wearing hoodies to work, using black gaming laptops with RGB lighting, using monospace fonts.

Light themes are the default elsewhere - Word, Excel, Exchange, white printers, white desktops, shirts - because that is the world of paper. It makes sense to me that the simple, low-tech portion of my website that consists only of words - the blog - should fit this theme of being paper on a screen.

TODO

The sidebar table-of-contents should highlight the currently-in-focus section, and it should show only the highest-level headers plus ancestors of the currently-in-focus section (see inspiration).

Look into Clay, a C-based HTML layout engine that works with HTML and WebGL.

Server Access Logs

Click here to continue reading

Drones

Rules

Drones have some rules (more details here). For my case (camera, under 250g, in countryside ('Open' category airspace)):

  • Must pay £11.13 each year to register as a drone operator ('operator' means owner, not pilot)
    • Drone must be labelled with the Operator ID
  • No need to register a Flyer ID too (but at £0, with an easy test, I may as well)
  • Insurance is not required only if it is for recreation, sport, or as a hobby
  • Must never fly above 120m, or out of line-of-sight, or in restricted airspace without a permit
  • Can fly within 50m of people, and can fly over them, but cannot fly over crowds

Restriction Zones

Send me feedback about this section

Permanently restricted airspace in Cambridge (source). Temporary restrictions can be viewed here (just search 'Cambridge' or 'Cambridgeshire')

WTF is going on here? Military?

Click here to continue reading

Literature

Queue

Severance - people split their memories between home and work

Wind River - same writer as Sicario. Some murder mystery in Alaska.

Arrival - trying to communicate with aliens before tensions leads to war

Ex Machina - AI thriller

Memento - by Christopher Nolan

Music

I like listening to songs in languages that I only somewhat understand. This allows me to fill in the gaps optimistically, instead of being annoyed at the lyrics being dumb or non-optimal.

German

Some of my favourite German pop songs were ruined when I actually bothered to read the lyrics and discovered how dumb they were - for example, Adel Tawil's 'Und ich singe diese Lieder...' which is a recap of recent world events rather than anything as grand as it originally sounded to me.

There's a woman singer - Alexa Feser or something - who wears a spacesuit in her music videos, and sometimes sings about space. Which I obviously like. But only some of her songs are about space - maybe the other songs are somewhat allegorical, and I haven't examined the lyrics carefully enough to see the links.

Neo-Classical

Classical music is boring! But neo-classical music (e.g. film scores) is great.

It's amazing how musicians can make a good riff and overlay their shitty song atop it. For example, Bitter Sweet Symphony by The Verve. Listen to the lyrics: “It is a bitter sweet symphony...” (like a movie that says its title in the first scene). It's shit; but the violin is great.

Listen to the Philharmonic Orchestra cover. It sounds so majestic, and flexible (bittersweet but, with some change, could be solidly triumphant or solidly sad).

And dear God, just look at this. Top goddamn result for 'bittersweet symphony orchestra' - just slop played by punks who pull stupid faces during the performance. Mohawks, bald men, old men, stupid guy with his tongue out at 02:44.

I'm not really complaining if people want to enjoy this, and more than I'd complain about people eating McDonald's. But why is Youtube showing it to me? All my Youtube history is traditional songs from over 80 years ago. The Youtube algorithm sucks.

Click here to continue reading

Hobbies

Perfumery

Why?

Send me feedback about this section

I got into this hobby due to 3 things:

  • Seeing a Youtube video where, in passing, a man is complimented on his unique cologne and he describes how secretive he is about it
    • Essentially he buys it from a small perfumer in Germany.
  • Discovering a common wild flower (Mugwort) that has a really nice smell
    • It is somewhat reminiscent of lavender and nutmeg but entirely unique.
  • Knowing that smell is a strong pathway to memories
    • It seems to me that if someone has a unique smell, they can have a 'bigger presence' in other peoples' minds

GCMS

Send me feedback about this section
Click here to continue reading

Splats

Gaussian Splatting

What and Why

Send me feedback about this section

Here's the short difference:

  • Traditional 3D models: a polygonal 'mesh'
    • Lighting information is discarded, and has to be (poorly) recreated by other tools such as roughness and reflection maps and shaders
  • Gaussian splats: elipsoids with colour, transparency and radiance information
    • Lighting information is kept
    • Capable of representing shapeless objects like fog, or extremely fine details like hair

Gaussian splatting is a graphics method developed in the 1990s as an alternative to tesselated (triangular) rendering. Although tesselated rendering has been the norm for decades, splatting returned around 2022 or 2023 due to research papers, based on neural network techniques (possibly specifically NeRF - neural radiance fields), which suddenly turned splatting into the fastest way to render realistic scenes, because it embeds all lighting information into each gaussian using 'spherical harmonics' or something.

See this filmmaker's behind-the-scenes of how gaussian splats are starting to be used instead of photogrammetry in the film industry.

I used to be very skeptical of photogrammetry - it struggled with hair and glass, and always required enormous manual effort to clean up the files to be usable in a 3D render (i.e. to add light maps). The professional tools were probably much better at this - I imagine the film industry has ways to scan objects and automatically produce those light maps - but it couldn't be done with a 'prosumer' DSLR camera.

Gaussian splatting completely solves the hair, glass, lighting and size problems for static scenes.

3D scan by traditional method, showcased by this professional 3D scan website

Click here to continue reading

Parenting

Click here to continue reading

Cardboard

What Cardboard Tells Us About The Roman Empire

Cardboard. That basic material that protects our Amazon deliveries and cereal boxes. Have you ever stopped to think about what happens to cardboard after it's served its purpose? Recycling, you'd think, right? Yes, of course. But. But but but.

Let's start with the basics. Recycling cardboard is like getting a Dundie Award for Participation. You're not exactly saving the world, but hey, at least you're trying. You break down the box, you toss it in the bin, and you feel a little spark of virtue. But then you remember that time your neighbor threw a greasy pizza box in the recycling bin, and now the whole batch is contaminated. This is why we can't have nice things.

Recycling, much like Jim's pranks on Dwight, is a delicate balance. Do it right, and you're a hero. Do it wrong, and you're the guy who put a stapler in Jell-O. And let's be real, most of us are the stapler-in-Jell-O guy when it comes to recycling.

Click here to continue reading

Book

Click here to continue reading

Misc

Predictions I've Got Wrong

Send me feedback about this section

I didn't think Brexit would happen, nor Trump's election.

LLMs: In 2020 or 2021, seeing OpenAI's GPT-2 and GPT-3, I thought ChatGPT's capabilities would be around by maybe 2025 - but it came in 2022.

Image generation: In 2021, I thought the best pipeline for image generation would be `sketch -> segmentation -> image`, utilising GANs, which are extremely fast to render and - most importantly - able to convey much more information about intent (e.g. placement of objects within the scene). Diffusion models (such as Dalle and Stable Diffusion) are much more compute-intensive and limited by the prompt. But inpainting solves this problem. Thus diffusion models are capable of almost anything, given enough compute time, because they can train on any labelled image - whereas segmentation models are fundamentally limited by the lack of training datasets, because they can train only on images that have a corresponding segmentation map, and it is difficult for the model to share abstract concepts between similar segment types.

Trump re-election: I thought Kamala would win, and that this would be the slow end of 'Wokeism' due to the left continuing to gradually dis-entangle from liberalism. I thought a Trump victory would lead to a repeat of the 2016-2020 Culture War, with left, liberals and elites joining together, once again, and putting new life into 'Wokeism'. Instead, Trump won, and 'Wokeism' suddenly died, with every major American corporation ending DEI practices, happening so fast that it felt like cultural whiplash.

Misc Things I've Miscalculated

I didn't realise how much people believe in conspriacy theories. For example, I was pretty shocked when one of my friends - quite a left-leaning but apolitical one - told me she thought that the Clintons had assassinated people. And here I was, thinking I was crazy for looking into the Esptein stuff...

Click here to continue reading