Explore My Notes

The machine stops | Jeremy Keith

For many folks writing or sharing art on the open web in 2024, the rise of corporate theft under the guise of "AI" has become a real sticking point. I share these sentiments, though have yet to start taking any real action against them. Still, when I do consider the actions I could take, I find my thoughts echoing those that Jeremy has shared. Beyond merely requesting to be kept out of "training datasets", can we somehow punish or poison them for daring to steal our words, images, and videos without our consent?

I certainly like the idea 😏

On the rational response to LLMs – fight back:

If my words are going to be snatched away, I want them to be poison pills.

On techniques people are using to make their content dangerous for LLMs to "consume":

Smarter people than me are coming up with ways to protect content through sabotage: hidden pixels in images; hidden words on web pages.

If enough people do this we’ll probably end up in an arms race with the bots. It’ll be like reverse SEO. Instead of trying to trick crawlers into liking us, let’s collectively kill ’em.

Digital litter picking | Terence Eden

The idea here is far from revolutionary, but I really like the naming and overall approach. Digital litter picking: a small, scalable, civic good that you can just do. Nice!

I want to live in a world where every voter can quickly and easily find out who they can vote for - and where they can vote. So I engage in digital litter picking.

It isn't glamorous or sophisticated work. It doesn't require much training, or a huge time commitment. But it's the sort of thing that I think can make a real difference to the civic environment.

Why I'm over GraphQL | Matt Bessey

An interesting dive into the long-term complications and issues that Matt has come across whilst using GraphQL. From self-professed "hype train member" for the technology to now considering it a niche tool only beneficial in specific areas, it's an interesting read, though largely boils down to "GraphQL is probably too complex to manage yourself", which means if you're outsourcing that to a third party already, few of the criticisms should matter to you. Still, it's nice to see a more nuanced take and it provides some excellent points around security and performance that are absolutely worth being aware of.

Stacking grids without media queries | Kevin Powell

A very clever technique of using combinations of flex-basis, asymmetrical flex-grow, or (for Grid) some quirky minmax() magic to generate flexible layout shifts that, in practice, are controlled by their container's size, but do not use media or container queries at all. Useful for sidebars that you want to fall into a stacking context if there isn't enough room, or (and this is very clever) for making grids with a fixed number of columns e.g. a stack unless you can fit exactly three columns of a minimum width, and then it snaps into a grid layout. Super useful!

Generative AI is for the idea guys | Rach Smith

A wonderfully concise look into why the current round of "AI" hype doesn't quite seem to get the point, and likely won't amount to anything close to what the headline's imply.

On the true value of ideas.

Like the idea was the main thing that mattered, and the pesky task of actually building it was an insignificant little bump along the road to success. At this point I would usually tell them that ideas are worth nothing, until they are implemented.

On how AI may not be the issue, but Silicon Valley culture could be:

The suggestion that some word/picture guessing machine could actually do what I and other creators do is A. offensive and B. obviously just another fantastical idea.

The implementation is what matters… and I’m not convinced the idea guys in Silicon Valley are going to figure it out.

Building a design token system | Scott Rouse

A very detailed and thorough overview of how to use design tokens to power a distributed design system and site architecture. The crux is ensuring design (Figma), code (CSS), and content management (in this case, Contentful) are all aligned.

Also includes some solid advice on why design tokens should be transformed into semantic tokens when they hit the codebase, which I fully agree with.

Clean advertising | adactio

A(n expectedly) brilliant article from Jeremy highlighting some of the absurdities underlying our current privacy nightmare called "behavioural advertising". Most importantly:

...there’s a problem with behavioural advertising. A big problem. 

It doesn’t work.

Almost all of the data suggests that behavioural advertising would work, if the prediction model is accurate. The problem is that our predictive algorithms are terrible. Which isn't surprising. The biggest algorithmically-based companies in the world – Twitter, Facebook, et al. – still can't get predictive feeds to work, despite literally owning all of the data that would be needed for them, so why on earth would something as complex as consumer relationship mapping be possible?

Of course, that's not what we're told. We're told that online advertising is so effective as to be able to predict that you're gay before you know so yourself; to guess when you're pregnant; or to know ... After all, this is a trillion-dollar industry we're talking about! There has to be something more to it, right? Well, Jeremy puts it better than I ever could:

Suppose someone told you that they keep tigers out of their garden by 
turning on their kitchen light every evening. You might think their 
logic is flawed, but they’ve been turning on the kitchen light every 
evening for years and there hasn’t been a single tiger in the garden the
whole time. That’s the logic used by ad tech companies to justify 
trackers.

In other words, it's really hard to prove a negative. Any time someone criticises the industry, they point to vanity metrics like clickthrough rates as "proof", even though most of these metrics are devised by the industry, monitored by the industry, and (crucially) are near-impossible to categorically tie back to the ads themselves. 
 

The bigger smoking gun is that right now proof of the positive – that online tracking actually does lead to increased revenue – is also mysteriously absent. Sure, everyone knows about some successful online ad campaigns, but how many of those were successful due to a combination of virality, third-party talking points (such as blog posts and social media coverage), and old school contextual advertising (e.g. showing ads for a video game on a tech website)?

Jeremy makes a fantastic case in his article for why the blind adherence to behavioural advertising is terrible for the web:

  1. It's bad for users, because it serves largely irrelevant ads;
  2. It's bad for advertisers, because it wastes their time and money (not just in terms of serving ads poorly, but also in terms of the huge cost of developing tracking software and analysing the largely pointless results in the first place);
  3. And, of course, it's extremely bad for the web, causing page bloat, impacting performance, and resulting in terrible user experiences (cookie banners, GDPR consent forms, JS-requirements, cookie-walls etc.);
  4. Plus (secret option four), it's bad for the planet, too!

He also makes a great case for how we can go about improving things: ban third-party cookies, block cross-site tracking, normalise contextual ads online (y'know, the ones that actually work), and keep pointing out that the current model is just a bit rubbish.

The greatest trick the ad tech industry has pulled is 
convincing the world that contextual relevance is somehow less effective
than some secret algorithm fed with all our data that’s supposed to be 
able to practically read our minds and know us better than we know 
ourselves.

... if this mind-control ray really could give me timely relevant adverts, I
might possibly consider paying the price with my privacy. But as it is,
YouTube still hasn’t figured out that I’m not interested in Top Gear or
football.

I know it’s hard to imagine a future without tracker-driven behavioural 
advertising. But there are no good business reasons for it to continue.
 

Look mum, no breakpoints! | Rob McCormick

An excellent overview of how to approach fluid design on the web. Lots of excellent references and techniques, particularly those around using Flex layout with flex-basis to control widths, or auto-repeating Grid layouts for extra control. Also some solid stats around the problems of designing for fixed breakpoints.

On the Tailwind trap, or how Tailwind hides the shortcuts and lures people into bad habits:

When I was using grid in Tailwind, I thought of it as a static thing with a defined number of columns, or rows, or both. To change it I had to explicitly state how many new columns (or rows) I wanted. I wasn't aware that a grid could be dynamic, adapting the number of columns or rows based on the content and available space

On how fluid design comes with one clear tradeoff:

Everything has tradeoffs - you can't have it all. And as far as I can tell the main tradeoff with building fluid websites is that you can't control every aspect. At some screen sizes it won't look exactly as you wished it did.

On the reality of designing for fixed breakpoints (and how rare those breakpoints are to fit what your users use):

Two of the designs I worked on were likely seen by less than 1% of people. And even if we're generous and include the entire range for the largest breakpoint, even though 1280px is at the top end, less than 3% of people would have seen three of my designs exactly as I intended them.

Creating content migrations in Craft CMS | nystudio107

A useful primer on how to use migration files in Craft.

Migra­tions are PHP files that con­tain code which alters the data­base from one state to anoth­er.

The core commands are as follows.

Run any waiting migrations, specifically the safeUp() functions:

php craft up

Rerun the last migration (undoes the previous migration and runs the file(s) again, so any changes are automatically applied):

php craft migrate/redo --interactive=0

Revert the previous migration (runs the safeDown() function):

php craft migrate/down --interactive=0

A loveletter to a tiny TV | Eric Bailey

Eric introduces the Tiny TV 2, an adorable piece of faux-retro tech that lets you load videos onto a tiny, replica cathode ray TV (which is obviously using an LED panel, digital files, and visual effects for all of the analogue touches e.g. static). But he also has some interesting surrounding thoughts on how quality, well-made goods can spark genuine joy. And now I kinda want my own mini TV to hack around with – and incredibly, they aren't even that expensive!

Jamstack slide decks | Sli.dev

I needed to throw together a quick presentation for an internal team meeting at work, but I've maxed out my Slides.com free usage and really hate Google's offering, so went digging for something better. Thanks to the Front End Horse community, I was introduced to Sli.dev. It's a solution with a clear learning curve – especially if you've never used Vue.js before – but after an hour of noodling around, I had a completely useable slide deck. Another couple of hours later and I had a custom, branded theme, using our company fonts and colours throughout. And now that's setup, all I have to do is clone the Git repo and edit the solitary Markdown file that controls the entire deck. I kinda love it 😅

But there's more to the codebase then scratching a bit of a developer itch. It comes with some great tools bundled, including prebaked slide animations, code formatting/highlighting, and some very clever custom focus order management so you can click through and showcase specific aspects of a slide in a preset sequence. The presentation mode is surprisingly robust, making it trivial (particularly with multiple monitors) to see all of your notes, the next slide, and various other tools whilst everyone else only sees the presentation. And, it's completely self-hosted, so I could render out the final deck and stick it on a web host somewhere to archive it indefinitely.

There are some downsides, but I've not hit anything too egregious. It has a very minor loading time, and there is an irritating reliance on additional abstractions, so your templates are all in Vue (not a bad choice) and CSS defaults to UnoCSS, but even here I was able to revert to pretty much vanilla CSS with relative ease. So really, as long as you can get past the unconventional install method (npm and CLI commands), this is a very robust piece of kit.

Heat death of the internet | Gregory Bennett

Perhaps the definition of a "lolsob" micro-essay on the state of the internet in 2024. 

On the usefulness of search engines:

The first page of Google results are links to pages that have scraped other pages for information from other pages that have been scraped for information. All the sources seem to link back to one another. There is no origin.

On the helpfulness of AI:

Your coworker sends you a PowerPoint pack to support a presentation you are giving to the executive committee, but you can’t make heads or tails of it. You call them over Zoom and they tell you they used ChatGPT to write it.

A little too personal:

Your Gmail is approaching storage capacity.