You can follow my Notes using any RSS reader — my personal favorite is Reeder.

Max ·

I recently bought the NocFree lite wireless split keyboard. I’ve been using the Microsoft Sculpt keyboard before, which is no split keyboard, but it already is slightly angled, so that my hands learned to not reach to the other side. Therefore moving to a fully split keyboard has been quite smooth.

But since NocFree doesn’t offer a version with international or German layout, it also means I have to unlearn typing with the German layout. Since I still write quite a lot of German, I also still needed a way to write German Umlaute äöü despite using an English layout.

With a bit of research I found the EurKey layout, which seems to be perfect. It keeps all the keys from the US layout, but adds European characters hitting right Alt + [key] combinations. ä for example is typing right alt + a.

If you want to give EurKey a try, I’ve installed this version 1.4 on my MacBook.

Max ·

If your ability to write good code or fix bugs depends on getting lucky with an AI slot machine, you’re not a programmer — you’re a code gambler.

AI
Max ·

I’m surprised that there are programmers, who actually believe adding non-deterministic tools to developer toolchains will improve productivity—unless their definition of productivity excludes quality. Because quality depends on consistency and reliability. Two things non-deterministic tools cannot offer.

The software industry has always struggled to put user experience over developer experience, but at least we’ve put our trust in deterministic tools like compilers, linters and language servers, which provide consistent feedback.

Now some people put their faith in tools, that return different outputs for the same input. How’s that gonna help with reliability and consistency?

Software quality should not depend on luck with the next token prediction.

I have a bad feeling that „You’ve prompted it wrong“ is the new „It works on my machine“.

AI
Max ·
Max ·

I’ve noticed that youtube videos in my notes are not displayed in my RSS reader, not even as a link. This is because I didn’t provide a fallback inside the <lite-youtube> web component I’m using to render youtube videos with performance and privacy in mind.

I’ve now added a link inside the web component, that should be rendered in RSS readers as a fallback. Here is a test, that should render a link in RSS readers:


📺 Youtube video
Max ·

To me the future of technology is a lot closer to Bret Victor’s vision of computational public spaces than private and centralized AI black boxes and middlemans, that try to get as much data about us as possible. It’s the complete antithesis to today’s narratives about technology.

I especially enjoyed comparing the values of urban design and computing. It’s also a bold claim, that we will always give up our privacy when computing is bound to screens, but probably true. And lastly, it’s such a good observation that we managed to build a somewhat democratic and civilized society based on very complex infrastructure systems, but never managed to make these systems transparent and visible to us, so that we can understand and therefore govern them.

Our brains haven’t changed in a hundred thousand years, but we’ve built this very complex society around ourselves, and we’ve decided that we want to collectively govern it.

We can’t do that, if we can’t see or understand how any of this works.

Bret Victor [40:30]

📺 Youtube video
Bret Victor talks about computational public spaces
Max ·

Externalising thinking to an "AI" is convenient, because giving in to stupidity is convenient. Chatbots are a shortcut to incompetence disguised as a shortcut to knowledge.

Max ·

Great post highlighting the problems of depending on ChatBots to do your programming work:

Because you don’t know what you don’t know. That’s the cruel joke. We’ll fill this industry with people who think they’re good, because their bot passed CI. They'll float through, confident, while the real ones - the hungry ones - get chewed up by a system that doesn’t value understanding anymore. Just output. Just tokens per second.

And what’s worse, we’ll normalize this mediocrity. Cement it in tooling. Turn it into a best practice. We'll enshrine this current bloated, sluggish, over-abstracted hellscape as the pinnacle of software. The idea that building something lean and wild and precise, or even squeezing every last drop of performance out of a system, will sound like folklore.

If that happens? If the last real programmers are drowned in a sea of button-clicking career-chasers - then I pity the smart outsider kids to come after me.

Defer your thinking to the bot, and we all rot.

Max ·
Max ·

Honest cookie banner:

“Our website would like to violate your privacy and sell your personal data.”

Max ·

Cloudflare now makes it easy and free to add Google analytics behind a proxy, so that it’s harder for ad blockers to prevent Google’s tracking.

This is especially sad, since they could have made it easy and free for privacy-focused alternatives like Plausible and Pirsch instead. They already have documentation on how to do it manually with Cloudflare workers.

Another reason I should migrate away from Cloudflare…

Max ·

Stop paying to use a service. Start paying to host your service.

Max ·
Max ·

I’ve been using the browser console and querySelector to inspect and find certain elements on a page. Today I learned that one can also use XPath in the search field inside the elements tab. It has a different syntax than querySelector, but it can do things that CSS selectors cannot.

For example you can search for all elements with aria attributes with this XPath query:

//[@[starts-with(name(),"aria-")]]

You can find more examples and use cases for XPath in this blog post by Adrian Roselli:

adrianroselli.com/2021/04/xpath-for-in-browser-testing.html

Both Chrome and Firefox support XPath searches when in the DOM view of their dev tools.

Max ·

Even the end of Daft Punk is a symbol for integrity, vision and humanity. Thomas Bangaltar explains their decision to stop Daft Punk:

"My concerns about the rise of artificial intelligence go beyond its use in music creation," he says, suddenly serious.

"2001: A Space Odyssey is maybe my favourite film and the way [Stanley] Kubrick presented it is so relevant today - because he is asking exactly the question that we have to ask ourselves about technology and the obsolescence of man."

That's always been his position, he stresses. It's just that people sometimes misinterpreted Daft Punk's aesthetic as an unquestioning embrace of digital culture.

"I almost consider the character of the robots like a Marina Abramović performance art installation that lasted for 20 years," he says.

"We tried to use these machines to express something extremely moving that a machine cannot feel, but a human can. We were always on the side of humanity and not on the side of technology."

That's why 2021 was the right time to pull the plug on the project.

"As much as I love this character, the last thing I would want to be, in the world we live in, in 2023, is a robot."

Max ·

This is how you can use any emoji as a favicon. I stumbled upon this code in one of my side projects, which is probably copied from somewhere else. I just wanted to post this here again, so that I don’t forget about it.

<link
  rel="icon"
  href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🙂</text></svg>"
/>
Max ·
Max ·
Max ·

With Safari not supporting the typed attr() function, I thought Apple users would have to wait for an update to see the improved view transitions on my website. But it turns out this is not the case!

Thanks to a toot by Bramus, I learned that Safari supports view-transition-name: auto. When the transition name is set to auto, Safari takes the good old id attribute of an HTML element to uniquely identify it during a view transition. Unfortunately Safari is currently the only browser that supports it.

But since attr() doesn’t care about which attribute it references, I simply altered the CSS I found on David Bushell’s website, which works on Chrome, changed attr() to reference id instead of data-id, and added view-transition-name: auto as a fallback for Safari.

Now view transitions work in both browsers and as a little bonus I can simply use id instead of data-id. Progressive enhancement for the win!

div[id] {
  @media not (prefers-reduced-motion: reduce) {
    view-transition-name: auto;
    view-transition-name: attr(id type(<custom-ident>), none);
    view-transition-class: your-element-type;
  }
}
<div id="unique-identifier">
  I’m my own element in Chromium and Webkit during a view transition!
</div>
Max ·

I noticed that the view transitions on my website stopped working in Safari. The reason was that I moved and nested the lines for activating them inside :root. Chrome still applies them if the declaration is nested, but Safari doesn‘t.

/* nesting breaks view transitions in Webkit */
:root {
  @view-transition {
    navigation: auto;
  }
}

/* works in Webkit and Chromium */
@view-transition {
  navigation: auto;
}