<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/blog/xsl/rss.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="en">
	<title>Moritz Glantz — Blog</title>
	<subtitle>Website and Blog of Moritz Glantz, UX Engineer and Accessibility Specialist from Karlsruhe, Germany.</subtitle>
	<link href="https://moritzglantz.de/blog/feed.xml" rel="self"/>
	<link href="https://moritzglantz.de/"/>
	<updated>2026-04-12T13:00:00Z</updated>
	<id>https://moritzglantz.de/</id>
	<author>
		<name>Moritz Glantz</name>
	</author>
	
	<entry>
		<title>HTML Tags Memory Quiz Game</title>
		<link href="https://moritzglantz.de/blog/posts/html-tag-memory-quiz-game/?source=feedxmllink"/>
		<updated>2026-04-12T13:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/html-tag-memory-quiz-game/</id>
		<content type="html">&lt;p&gt;Do you remember that &lt;a href=&quot;https://codepen.io/plfstr/pen/zYqQeRw&quot; target=&quot;_blank&quot;&gt;HTML memory test on CodePen&lt;/a&gt;? I thought it was time to give it some more challenging modes. So I built my own version.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/zMV-KgpSIk-1818.avif 1818w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/zMV-KgpSIk-1818.webp 1818w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/zMV-KgpSIk-1818.gif 1818w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/zMV-KgpSIk-1818.jpeg&quot; alt=&quot;A minimal browser game UI titled “HTML Tags Memory Quiz Game” shows a large central input with the word “article,” a hidden-settings style control, progress at 0 / 117, timer and streak indicators, a Stop run button, and an empty Found section.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1818&quot; height=&quot;1420&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;The idea is still simple: &lt;strong&gt;type as many HTML elements as you can remember&lt;/strong&gt;. But this one adds a few more challenging modes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a timer for normal runs&lt;/li&gt;
&lt;li&gt;countdown rounds with different time limits&lt;/li&gt;
&lt;li&gt;you can also add all the weird obsolete and deprecated elements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sounds like fun?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/html-quiz/&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Test your HTML memory&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Roborock Saros 10R voice commands</title>
		<link href="https://moritzglantz.de/blog/posts/roborock-saros-10r-voice-commands/?source=feedxmllink"/>
		<updated>2026-04-12T12:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/roborock-saros-10r-voice-commands/</id>
		<content type="html">&lt;p&gt;The Roborock Saros 10R has its own built-in voice assistant. You say “Hello Rocky” or “Hey Rocky”, then a command, and if all goes well, the robot does the thing. These commands work without a network or app connection. This is especially useful if you run the vacuum without a network connection, the way nerds like it.&lt;/p&gt;
&lt;p&gt;What I was missing was a simple list outside of the app. So here it is.&lt;/p&gt;
&lt;h2 id=&quot;commands&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/roborock-saros-10r-voice-commands/#commands&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Commands&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Commands&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Start cleaning&lt;/td&gt;
&lt;td&gt;&lt;code&gt;start cleaning&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pause&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pause&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resume&lt;/td&gt;
&lt;td&gt;&lt;code&gt;resume&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vacuum and mop&lt;/td&gt;
&lt;td&gt;&lt;code&gt;vacuum and mop&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vacuum&lt;/td&gt;
&lt;td&gt;&lt;code&gt;just vacuum&lt;/code&gt;, &lt;code&gt;vacuum only&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mop&lt;/td&gt;
&lt;td&gt;&lt;code&gt;just mop&lt;/code&gt;, &lt;code&gt;mop only&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clean here&lt;/td&gt;
&lt;td&gt;&lt;code&gt;clean here&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skip here&lt;/td&gt;
&lt;td&gt;&lt;code&gt;don&#39;t clean here&lt;/code&gt;, &lt;code&gt;skip here&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go back to dock&lt;/td&gt;
&lt;td&gt;&lt;code&gt;go back to dock&lt;/code&gt;, &lt;code&gt;charge&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Empty the dustbin&lt;/td&gt;
&lt;td&gt;&lt;code&gt;empty the dustbin&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wash the mop&lt;/td&gt;
&lt;td&gt;&lt;code&gt;wash the mop&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dry the mop&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dry the mop&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stop drying&lt;/td&gt;
&lt;td&gt;&lt;code&gt;stop drying&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Increase vacuum intensity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;increase vacuum intensity&lt;/code&gt;, &lt;code&gt;vaccum harder&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reduce vacuum intensity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;reduce vacuum intensity&lt;/code&gt;, &lt;code&gt;vaccum softer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Increase mopping intensity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;increase mopping intensity&lt;/code&gt;, &lt;code&gt;mop harder&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reduce mopping intensity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;reduce mopping intensity&lt;/code&gt;, &lt;code&gt;mop softer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume up&lt;/td&gt;
&lt;td&gt;&lt;code&gt;volume up&lt;/code&gt;, &lt;code&gt;speak louder&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume down&lt;/td&gt;
&lt;td&gt;&lt;code&gt;volume down&lt;/code&gt;, &lt;code&gt;speak softer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clean rooms&lt;/td&gt;
&lt;td&gt;&lt;code&gt;clean “room name”&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;These are tested commands.&lt;/p&gt;
&lt;p&gt;I have not tested these commands with Alexa, Google Assistant or other external voice assistants, but some of them could work there too.&lt;/p&gt;
&lt;p&gt;I would be very interested to hear from other Saros 10R users if they have found additional direct voice commands. If you have, let me know and I would be happy to add them to this list.&lt;/p&gt;
&lt;p&gt;I also wonder whether this could be tested more systematically: just speak a long list of plausible commands and record which ones are accepted. That might be a good way to find undocumented commands or alternative phrasings. But that is a topic for another day.&lt;/p&gt;
&lt;p&gt;At the very least, this should save somebody a bit of trial and error.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>2025</title>
		<link href="https://moritzglantz.de/blog/posts/2025/?source=feedxmllink"/>
		<updated>2025-12-29T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/2025/</id>
		<content type="html">&lt;p&gt;&#39;tis the season for “end of the year”-posts. Let’s go!&lt;/p&gt;
&lt;h2 id=&quot;in-2025-i&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/2025/#in-2025-i&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; In 2025, I…&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;…started a new job. I am now working full time in digital accessibility.&lt;/li&gt;
&lt;li&gt;…settled my first legal dispute.&lt;/li&gt;
&lt;li&gt;…sold some tech themed shirts in my &lt;a href=&quot;https://cottonbureau.com/people/mgx&quot; target=&quot;_blank&quot;&gt;American shop&lt;/a&gt; and &lt;a href=&quot;https://wowirsindistvorne.myspreadshop.de/&quot; target=&quot;_blank&quot;&gt;international shop&lt;/a&gt; and it made me happy, that some people resonate with my humor.&lt;/li&gt;
&lt;li&gt;…moved to a new apartment.&lt;/li&gt;
&lt;li&gt;…traveled to Japan for a few weeks.&lt;/li&gt;
&lt;li&gt;…went bodyboarding in Portugal for two weeks.&lt;/li&gt;
&lt;li&gt;…ate lots of rice.&lt;/li&gt;
&lt;li&gt;…tried lots of new food.
&lt;ul&gt;
&lt;li&gt;Recommend: onigiri, tuna sashimi, miso soup, okonomiyaki, tsukemen, A4 wagyu, Japanese baumkuchen.&lt;/li&gt;
&lt;li&gt;Cannot recommend: nattō (very slimy), bitter melon, pig ears, any kind of offal.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;…came home to the new &lt;a href=&quot;https://mastodon.social/@MoritzGlantz/115145711454801372&quot; target=&quot;_blank&quot;&gt;apartment completely underwater&lt;/a&gt; and had to throw away half of my furniture.&lt;/li&gt;
&lt;li&gt;…continued renovations in the Palatinate Forest.&lt;/li&gt;
&lt;li&gt;…launched 7 tools and websites.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://moritzglantz.de/accessibility-link-tester/&quot;&gt;Accessibility Link Tester&lt;/a&gt; – A tool to build various combinations of links, with different attributes, to test them with screen readers.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://moritzglantz.de/blog/posts/daily-html-mastodon-bot/&quot;&gt;Daily HTML Bot&lt;/a&gt; – a Mastodon bot that helps learning HTML by posting two random HTML elements per day with a short explanation and a link to the spec.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://moritzglantz.de/blog/posts/force-show-focus-bookmarklet-for-accessibility-testing/&quot;&gt;Force Focus Bookmarklet&lt;/a&gt; – a bookmarklet that highlights focused elements clearly – with an orange outline, and a red background.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://moritzglantz.de/mastodon-hidden-post-stats/&quot;&gt;Mastodon Hidden Posts Stats&lt;/a&gt; – A tool that shows you stats about the posts you have hidden via Mastodon filters.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://moritzglantz.de/metronome/&quot;&gt;Metronome Web App&lt;/a&gt; – Well, it is a free online metronome without any fuzz or ads.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://moritzglantz.de/whatsapp-backup-viewer/&quot;&gt;WhatsApp iOS Backup Viewer&lt;/a&gt; – A handy web app that parses and shows your WhatsApp chat backups in a neat interface.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://moritzglantz.de/the-mighty-triangle/&quot;&gt;The Mighty Triangle&lt;/a&gt; – Are you also somebody who underestimates the Triangle? That ends today 😊.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;…published &lt;a href=&quot;https://moritzglantz.de/archive/&quot;&gt;11 blog posts&lt;/a&gt;, including this one.&lt;/li&gt;
&lt;li&gt;…did lots of freelance accessibility work.&lt;/li&gt;
&lt;li&gt;…performed my first inclusive design study. No matter what you think you know, people with disabilities will teach you something new every time.&lt;/li&gt;
&lt;li&gt;…recorded and published &lt;a href=&quot;https://wwsiv.de&quot; target=&quot;_blank&quot;&gt;9 podcast episodes&lt;/a&gt; with Sarah for #WWSIV&lt;/li&gt;
&lt;li&gt;…stopped streaming and podcasting with #WWSIV 😢.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;did-i-achieve-my-goals-for-2025&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/2025/#did-i-achieve-my-goals-for-2025&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Did I achieve my goals for 2025?&lt;/h2&gt;
&lt;p&gt;For 2025 I planned to…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;…do even more &lt;a href=&quot;https://moritzglantz.de/work-with-me/&quot;&gt;Accessibility and Frontend-Dev freelance work&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;…redesign the start page of this blog to fit with the new blog design&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;❎ &lt;strong&gt;…design the front-end of a really cool remote streaming tool which is in the making right now (I am late on this one, sorry Sarah!)&lt;/strong&gt;&lt;br&gt;– started, but the drive got lost along the way. Maybe we will dig it up again. It was a tool to remotely control OBS Studio.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;…travel east&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;…help launching accessible versions of lots of websites.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;🤷 &lt;strong&gt;…finish the construction work in the Palatinate Forest&lt;/strong&gt;&lt;br&gt;– when is construction ever finished?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;in-2026-i-plan-to&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/2025/#in-2026-i-plan-to&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; In 2026 I plan to…&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;…&lt;a href=&quot;https://moritzglantz.de/work-with-me/&quot;&gt;start freelancing again&lt;/a&gt;, after my new job took away 100% of my time (but no more than one day a week).&lt;/li&gt;
&lt;li&gt;…start making music again. Drums, Guitar, composition, recording. I don’t know what or with whom, but I need the beat back in my life.&lt;/li&gt;
&lt;li&gt;…maybe, just maybe, publish some of my poetry.&lt;/li&gt;
&lt;li&gt;…attend more concerts and other cultural events.&lt;/li&gt;
&lt;li&gt;…organize a &lt;a href=&quot;https://di.day/&quot; target=&quot;_blank&quot;&gt;Digital Independence Day&lt;/a&gt; meetup in Karlsruhe.&lt;/li&gt;
&lt;/ul&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Digital Independence Day</title>
		<link href="https://moritzglantz.de/blog/posts/digital-independence-day/?source=feedxmllink"/>
		<updated>2025-12-27T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/digital-independence-day/</id>
		<content type="html">&lt;p&gt;At the 39th Chaos Communication Congress (39C3), Marc-Uwe Kling introduced the idea of a &lt;a href=&quot;https://di.day/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Digital Independence Day&lt;/strong&gt;&lt;/a&gt; and it deeply resonated with me.&lt;/p&gt;
&lt;p&gt;We already saw examples of misuse of power when U.S. sanctions abruptly &lt;a href=&quot;https://apnews.com/article/international-court-sanctions-trump-icc-hague-4cdefe4de067432f6cdb9b137908c463&quot; target=&quot;_blank&quot;&gt;cut ICC officials off from everyday essentials&lt;/a&gt;: email, bank accounts, credit cards, and even services like Alexa and e-books.&lt;/p&gt;
&lt;p&gt;(&lt;a href=&quot;https://marcuwekling.de/&quot; target=&quot;_blank&quot;&gt;Marc-Uwe Kling&lt;/a&gt; is a popular German author and the writer of the &lt;strong&gt;Kangaroo books&lt;/strong&gt; (the “Känguru-Chroniken” universe)).&lt;/p&gt;
&lt;h2 id=&quot;the-idea&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/digital-independence-day/#the-idea&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The Idea&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;On every first Sunday of the month&lt;/strong&gt;, you spend a bit of time becoming less dependent on Big Tech.&lt;/p&gt;
&lt;p&gt;Not in a dramatic “delete everything and move to a cave” kind of way. More like: small, repeatable, realistic steps.&lt;/p&gt;
&lt;h2 id=&quot;what-could-you-do-on-that-day&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/digital-independence-day/#what-could-you-do-on-that-day&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; What Could You Do On That Day?&lt;/h2&gt;
&lt;p&gt;Here are a few examples, one thing a month is plenty:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Move one mailbox&lt;/strong&gt; (Gmail → Proton Mail/mailbox.org; ideally with your own domain).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Switch messengers&lt;/strong&gt; (WhatsApp → Signal).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Switch defaults&lt;/strong&gt; (Firefox as main browser; search engine, password manager, DNS).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leave Meta behind&lt;/strong&gt; (Instagram/Facebook → Mastodon/Pixelfed).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export and back up&lt;/strong&gt; (photos, notes, documents to storage you control).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Move core services&lt;/strong&gt; (calendar, contacts, notes, cloud drive → Nextcloud; test, then migrate).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;help&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/digital-independence-day/#help&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Help!&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;If you happen to know what the points on this list mean, you should help others becoming digitally independent.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The magic isn’t in doing everything. It’s in doing &lt;em&gt;something&lt;/em&gt; regularly, so “I should really…” becomes actual progress over time.&lt;/p&gt;
&lt;h2 id=&quot;join-in&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/digital-independence-day/#join-in&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Join In&lt;/h2&gt;
&lt;p&gt;If you want, treat this as a recurring appointment with your future self: an hour a month, for more autonomy and less platform gravity.&lt;/p&gt;
&lt;p&gt;For convenience, here’s an &lt;strong&gt;ICS calendar event&lt;/strong&gt; you can subscribe to:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/blog/posts/digital-independence-day/digital-independence-day.ics&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Digital Independence Day Calendar Event&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Triangles, please!</title>
		<link href="https://moritzglantz.de/blog/posts/triangles-please/?source=feedxmllink"/>
		<updated>2025-12-22T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/triangles-please/</id>
		<content type="html">&lt;p&gt;Do you know someone who answers &lt;em&gt;“Do you play an instrument?”&lt;/em&gt; with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Yes, the triangle.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thirteen years ago that joke annoyed me enough that I planned to build a website about the triangle — an instrument that cuts through every mix and is a lot less trivial than its reputation.&lt;/p&gt;
&lt;p&gt;Today it goes live.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/the-mighty-triangle&quot; target=&quot;_blank&quot;&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/6wW_KtDQul-2996.avif 2996w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/6wW_KtDQul-2996.webp 2996w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/6wW_KtDQul-2996.gif 2996w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/6wW_KtDQul-2996.jpeg&quot; alt=&quot;Screenshot of The Mighty Triangle – Play the triangle - followed by instructions on how to play with a keyboard the a big yellow triangle followed by buttons to play it&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2996&quot; height=&quot;1778&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;the-mighty-triangle&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/triangles-please/#the-mighty-triangle&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The Mighty Triangle&lt;/h2&gt;
&lt;p&gt;It’s a small, focused site with everything I wanted back then:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The science&lt;/strong&gt;: why the triangle is so present in a mix, and what makes it sound the way it does.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incredible performances&lt;/strong&gt;: the heroes who make “one note” feel like an art form.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Popular songs featuring a triangle&lt;/strong&gt;: once you hear it, you’ll keep hearing it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A virtual triangle&lt;/strong&gt;: play it yourself (including dampening), because that’s where it gets interesting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/the-mighty-triangle/&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;The mighty triangle&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;why-this-exists&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/triangles-please/#why-this-exists&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Why this exists&lt;/h2&gt;
&lt;p&gt;Because the triangle is often treated as a punchline, while in reality it demands precision: timing, touch, and control of the ring. One clean hit can define a moment — and one sloppy one can ruin it.
If you’ve ever underestimated it: welcome. That’s the point.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>WhatsApp iOS Backup Viewer</title>
		<link href="https://moritzglantz.de/blog/posts/whatsapp-ios-backup-viewer/?source=feedxmllink"/>
		<updated>2025-12-03T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/whatsapp-ios-backup-viewer/</id>
		<content type="html">&lt;p&gt;When I started using an iPhone around 2020, I migrated ten years of Android WhatsApp chats via a shady app from the internet™️ to the new iPhone. This was not an official way (since that did not exist back then). It involved iTunes backups that get manipulated and being put on the phone again. The world was good! But some time after, disaster struck! ⚡️&lt;/p&gt;
&lt;h2 id=&quot;the-disaster&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/whatsapp-ios-backup-viewer/#the-disaster&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The Disaster&lt;/h2&gt;
&lt;p&gt;After some time, I noticed the old chats went missing. They seem to have noticed this migration path existed and did something to prevent it. I texted the WhatsApp support and got nothing but dumb robot replies. I can only speculate why they decided to not show migrated chats anymore. It may be because they could in theory be manipulated. If somebody knows the real reason, please tell.&lt;/p&gt;
&lt;p&gt;So I thought my old chats were gone. But I had a local iPhone backup sitting on disk, but no official way to peek inside. Then I discovered that apps like iMazing can show WhatsApp chats from backups. And they also showed the missing chats, so they were part of the backup. WhatsApp was just not showing them.&lt;/p&gt;
&lt;h2 id=&quot;the-dig&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/whatsapp-ios-backup-viewer/#the-dig&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The Dig&lt;/h2&gt;
&lt;p&gt;So I did a little digging. Where do the chats sit. What I have to do to make them visible and: can I write a tool that makes it easy to find and search old chats? And that, kids, is how I ended up coding a &lt;strong&gt;WhatsApp backup viewer&lt;/strong&gt; that runs entirely in the browser. 🥳&lt;/p&gt;
&lt;p&gt;No ads, no tracking beyond a simple hit counter, and everything stays on your machine. Browse and search your WhatsApp history, with no file leaving your computer (I know, WhatsApp chats can have some spicy stuff, you better not upload anywhere 😏).&lt;/p&gt;
&lt;p&gt;That all sounds cool, but I know my work may have flaws. Since this is sensitive data we are handling there, keep a copy elsewhere. I am not liable for data loss or other problems. This is a free hobby project and may contain errors.&lt;/p&gt;
&lt;h2 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/whatsapp-ios-backup-viewer/#features&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Load iOS backups locally:&lt;/strong&gt; Point it to your local iPhone backup (~/Library/Application Support/MobileSync/Backup/) and it the database for you (takes some resources), or if you have it, open the chat DB directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast search:&lt;/strong&gt; All chats and messages are loaded once; type to filter chats and jump to the matched message.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safe by design:&lt;/strong&gt; Files never leave your computer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/whatsapp-backup-viewer&quot; target=&quot;_blank&quot;&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/jZB2I4dyx6-2916.avif 2916w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/jZB2I4dyx6-2916.webp 2916w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/jZB2I4dyx6-2916.gif 2916w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/jZB2I4dyx6-2916.jpeg&quot; alt=&quot;Screenshot of WhatsApp iOS Backup Viewer – a dark interface with a chat list on the left and messages on the right, showing message bubbles and a search bar.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2916&quot; height=&quot;1814&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;technical-details-for-nerds&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/whatsapp-ios-backup-viewer/#technical-details-for-nerds&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Technical Details for Nerds&lt;/h2&gt;
&lt;p&gt;It’s built with &lt;strong&gt;plain HTML, CSS, and JavaScript&lt;/strong&gt;. The database work uses &lt;strong&gt;&lt;a href=&quot;https://github.com/sql-js/sql.js&quot; target=&quot;_blank&quot;&gt;sql.js&lt;/a&gt;&lt;/strong&gt; (WASM) loaded locally. No CDNs, no servers. And seriously: sql.js is so cool! I could not have done it without it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Emoji fidelity:&lt;/strong&gt; legacy emoji are mapped via to new emoji.&lt;/li&gt;
&lt;li&gt;Everything is &lt;strong&gt;fully client-side&lt;/strong&gt;, so nothing you put in there will ever leave your machine. If it helps you rescue your chat history, that’s a win—and if you feel like tipping a dollar or two, there’s a Ko‑fi link waiting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Give it a try, and if you have ideas—or find an edge-case backup—reach out on &lt;a href=&quot;https://mastodon.social/@MoritzGlantz&quot; target=&quot;_blank&quot;&gt;Mastodon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/whatsapp-backup-viewer&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;WhatsApp iOS Backup Viewer&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Metronome Web App</title>
		<link href="https://moritzglantz.de/blog/posts/metronome-web-app/?source=feedxmllink"/>
		<updated>2025-11-08T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/metronome-web-app/</id>
		<content type="html">&lt;p&gt;I wasn’t satisfied with any of the metronome apps out there. So, of course, I ended up coding one myself.&lt;/p&gt;
&lt;p&gt;I wanted a &lt;strong&gt;clean metronome&lt;/strong&gt; with no fuzz, no ads, and nothing beyond the core functionality. Just a good design that feels right. To me.
There’s a special kind of satisfaction in writing code instead of actually practicing the guitar.&lt;/p&gt;
&lt;h2 id=&quot;features&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/metronome-web-app/#features&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Features&lt;/h2&gt;
&lt;p&gt;You can &lt;strong&gt;set the tempo&lt;/strong&gt;, choose &lt;strong&gt;beats per measure&lt;/strong&gt;, and pick &lt;strong&gt;subdivisions&lt;/strong&gt; like triplets, and of course quintuplets, because &lt;a href=&quot;https://www.youtube.com/watch?v=sTS0okeZItw&quot; target=&quot;_blank&quot;&gt;why not&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;And you can &lt;a href=&quot;https://web.dev/learn/pwa/installation&quot; target=&quot;_blank&quot;&gt;install it as a web app&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/metronome&quot; target=&quot;_blank&quot;&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/Ob8tChaDXn-1804.avif 1804w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/Ob8tChaDXn-1804.webp 1804w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/Ob8tChaDXn-1804.gif 1804w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/Ob8tChaDXn-1804.jpeg&quot; alt=&quot;Screenshot of Metronome web app – A dark website with a small realistic looking metronome. A BPM cound display, a slider and +, - buttons to adjust speed, a start button, a tap tempo button and selects for beat number and subdivision number&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1804&quot; height=&quot;1438&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;technical-details-for-nerds&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/metronome-web-app/#technical-details-for-nerds&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Technical Details for Nerds&lt;/h2&gt;
&lt;p&gt;It’s built with &lt;strong&gt;just HTML, CSS, and JavaScript&lt;/strong&gt; using the &lt;strong&gt;Web Audio API&lt;/strong&gt;. No libraries, no dependencies, no external sound files.&lt;/p&gt;
&lt;p&gt;It keeps the screen awake using the &lt;strong&gt;Wake Lock API&lt;/strong&gt;, saves your settings in &lt;strong&gt;localStorage&lt;/strong&gt;, and lets you &lt;strong&gt;share links&lt;/strong&gt; with your configuration included.&lt;/p&gt;
&lt;p&gt;It’s &lt;strong&gt;fully client-side&lt;/strong&gt; and &lt;strong&gt;PWA-ready&lt;/strong&gt;, so you can install it and use it like a native app right from your browser.&lt;/p&gt;
&lt;p&gt;Give it a try, and if you have ideas or find a favorite &lt;em&gt;weird setting&lt;/em&gt;, share it with me on &lt;a href=&quot;https://mastodon.social/@MoritzGlantz&quot; target=&quot;_blank&quot;&gt;Mastodon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/metronome&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Metronome Web App&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>macOS Remove Wi-Fi Networks Without Admin Privileges</title>
		<link href="https://moritzglantz.de/blog/posts/macos-delete-wifi-networks-without-admin-privileges/?source=feedxmllink"/>
		<updated>2025-11-06T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/macos-delete-wifi-networks-without-admin-privileges/</id>
		<content type="html">&lt;p&gt;I ran into this again today:
macOS kept auto-joining an old Wi-Fi network, and every attempt to “Forget” it in &lt;strong&gt;System Settings → Wi-Fi&lt;/strong&gt; demanded an admin password.&lt;/p&gt;
&lt;p&gt;Turns out for every annoying problem, there’s a strange and unintuitive solution.&lt;/p&gt;
&lt;h2 id=&quot;the-fix&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/macos-delete-wifi-networks-without-admin-privileges/#the-fix&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The fix&lt;/h2&gt;
&lt;p&gt;Forget the Settings app.
Open &lt;strong&gt;Passwords&lt;/strong&gt; (Spotlight → “Passwords” → enter your user password).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Filter for Wi-Fi&lt;/li&gt;
&lt;li&gt;Search for the network name (SSID).&lt;/li&gt;
&lt;li&gt;Right click -&amp;gt; Forget Network.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That’s it. No admin privileges needed for this.
Next time macOS sees that network, it won’t auto-connect. No admin required.&lt;/p&gt;
&lt;p&gt;I wish I never had to find out…
Cheers!&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Mastodon Hidden Posts Stats</title>
		<link href="https://moritzglantz.de/blog/posts/mastodon-hidden-posts-stats/?source=feedxmllink"/>
		<updated>2025-10-26T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/mastodon-hidden-posts-stats/</id>
		<content type="html">&lt;p&gt;Mastodon’s filters are powerful, but also a little invisible. Once you set them up, you rarely notice how much they actually hide from your timeline. I wanted to know.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/1neaQYfl1p-2082.avif 2082w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/1neaQYfl1p-2082.webp 2082w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/1neaQYfl1p-2082.gif 2082w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/1neaQYfl1p-2082.jpeg&quot; alt=&quot;Screenshot of Mastodon Hidden Posts Stats – A dark purple website with cards for stats like how many posts have been analyzed, how manfy have been filtered, a percentage and a table with hot often the hidden keywords appear&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2082&quot; height=&quot;1448&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mastodon Hidden Posts Stats&lt;/strong&gt; is a small web app that connects to your Mastodon account and shows how many of your recent posts are filtered, and by which keywords and it also gives you some stats. Everything runs locally in your browser; no data ever leaves your device.&lt;/p&gt;
&lt;p&gt;It’s a simple way to understand the effect of your filters and maybe fine-tune them a little.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’d like to see what your own filters are doing:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/mastodon-hidden-post-stats&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Open Mastodon Hidden Posts Stats&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Force Focus Bookmarklet</title>
		<link href="https://moritzglantz.de/blog/posts/force-show-focus-bookmarklet-for-accessibility-testing/?source=feedxmllink"/>
		<updated>2025-06-14T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/force-show-focus-bookmarklet-for-accessibility-testing/</id>
		<content type="html">&lt;p&gt;Some websites don’t show any visual indicator when elements receive focus – making accessibility testing frustrating or impossible without DevTools gymnastics. I often run into this when testing keyboard navigation, and I wanted something quicker. Introducing “Force Focus”: force show keyboard focus for accessibility testing of websites with some oomph!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;👊🔲 Force Focus&lt;/strong&gt; is a little bookmarklet I built to highlight focused elements clearly – with an orange outline, and a red background. It’s inspired by the great work of &lt;a href=&quot;https://pauljadam.com/bookmarklets/focus.html&quot; target=&quot;_blank&quot;&gt;Paul J. Adam’s focus bookmarklet&lt;/a&gt;, which relies on an external script and offers a nice outline. But I needed something a bit stronger – both in terms of &lt;strong&gt;CSP resilience&lt;/strong&gt; and &lt;strong&gt;visual emphasis&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This one works &lt;strong&gt;on most sites unless CSP is extremely strict&lt;/strong&gt;, &lt;strong&gt;highlights elements even if they clip or cut off outlines&lt;/strong&gt;, and has a built-in &lt;strong&gt;toggle&lt;/strong&gt; (just click the bookmarklet again to turn it off). It also injects the styles into any same-origin iframes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you want to give it a try in your accessibility toolkit, drag this link to your bookmarks bar&lt;/strong&gt; (or just click it to test it on this site).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;javascript:(function(){const e=&amp;quot;a:focus, *:focus {outline: 3px dashed orange !important;outline-offset: 3px !important;box-shadow: 0 0 5px 3px orange !important;background-color: red !important;}&amp;quot;;function t(o){const d=o.getElementById(&amp;quot;focus-visibility-enhancer&amp;quot;);if(d){d.remove()}else{const s=o.createElement(&amp;quot;style&amp;quot;);s.id=&amp;quot;focus-visibility-enhancer&amp;quot;;s.textContent=e;o.head.appendChild(s)}}t(document);for(const n of document.querySelectorAll(&amp;quot;iframe&amp;quot;)){try{t(n.contentDocument)}catch(o){console.warn(&amp;quot;Could not toggle in iframe:&amp;quot;,n.src)}}})();&quot; class=&quot;button&quot;&gt;👊🔲 Force Focus&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Daily HTML Bot</title>
		<link href="https://moritzglantz.de/blog/posts/daily-html-mastodon-bot/?source=feedxmllink"/>
		<updated>2025-06-08T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/daily-html-mastodon-bot/</id>
		<content type="html">&lt;p&gt;Even though I work with HTML all the time, I keep coming across elements or details I’ve either forgotten or never fully noticed. Learning in small doses works well for me – so I built a little bot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Daily HTML&lt;/strong&gt; is a Mastodon bot that posts one random HTML element per day with a short explanation and a link to the spec. That’s it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’d like to follow along and refresh your HTML knowledge one tag at a time:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mastodon.social/@DailyHTML&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Follow @DailyHTML&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>macOS: Spitze Klammern und Zirkumflex vertauscht bei Keychron-Tastatur (Fix)</title>
		<link href="https://moritzglantz.de/blog/posts/macos-externes-keyboard-kleiner-groesser-vertauscht-mit-zirkumflex-und-gradzeichen/?source=feedxmllink"/>
		<updated>2025-05-03T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/macos-externes-keyboard-kleiner-groesser-vertauscht-mit-zirkumflex-und-gradzeichen/</id>
		<content type="html">&lt;p&gt;Bei externen deutschen QWERTZ-Tastaturen (z. B. Keychron K1 Max) kann es unter macOS passieren, dass die Tasten &lt;strong&gt;&amp;lt;&lt;/strong&gt; (&lt;em&gt;kleiner als&lt;/em&gt;), &lt;strong&gt;&amp;gt;&lt;/strong&gt; (&lt;em&gt;größer als&lt;/em&gt;) und &lt;strong&gt;^°&lt;/strong&gt; (&lt;em&gt;Zirkumflex&lt;/em&gt; und &lt;em&gt;Gradzeichen&lt;/em&gt;) vertauscht werden. Ursache: macOS erkennt den falschen Tastaturtyp (z. B. &lt;code&gt;43&lt;/code&gt; statt &lt;code&gt;41&lt;/code&gt;). Dadurch wird die Tastaturbelegung falsch zugeordnet und bestimmte &lt;strong&gt;Tasten erscheinen vertauscht&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In meinem Fall wird das Keychron Keyboard K1 Max mit QWERTZ-Layout immer wieder falsch erkannt – auch wenn es im macOS-eigenen Konfigurator scheinbar korrekt eingerichtet wurde. Das Problem, dass &lt;strong&gt;Mac externe Tastaturen falsch erkennt&lt;/strong&gt;, tritt offenbar häufiger bei ISO-Tastaturen auf.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;loesung&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/macos-externes-keyboard-kleiner-groesser-vertauscht-mit-zirkumflex-und-gradzeichen/#loesung&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Lösung&lt;/h2&gt;
&lt;p&gt;(Keine Garantie, bei mir hat’s geholfen)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://support.apple.com/de-de/guide/terminal/apd5265185d-f365-44cb-8b09-71a064a42125/mac&quot; target=&quot;_blank&quot;&gt;Terminal öffnen&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tastatur-Config-Datei in XML konvertieren:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo plutil -convert xml1 /Library/Preferences/com.apple.keyboardtype.plist
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Datei im Editor öffnen:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /Library/Preferences/com.apple.keyboardtype.plist
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;KeyboardType&lt;/code&gt;-Wert von &lt;code&gt;43&lt;/code&gt; zu &lt;code&gt;41&lt;/code&gt; ändern (oder umgekehrt)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Neustart&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Danach sollten &lt;strong&gt;&amp;lt;&lt;/strong&gt; (&lt;em&gt;kleiner als&lt;/em&gt;), &lt;strong&gt;&amp;gt;&lt;/strong&gt; (&lt;em&gt;größer als&lt;/em&gt;), &lt;strong&gt;^&lt;/strong&gt; (&lt;em&gt;Zirkumflex&lt;/em&gt;) und &lt;strong&gt;°&lt;/strong&gt; (&lt;em&gt;Gradzeichen&lt;/em&gt;) wieder korrekt funktionieren.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;betroffene-tastaturen&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/macos-externes-keyboard-kleiner-groesser-vertauscht-mit-zirkumflex-und-gradzeichen/#betroffene-tastaturen&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Betroffene Tastaturen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Keychron (z. B. K2, K3, K8) mit deutschem Layout&lt;/li&gt;
&lt;li&gt;Laut Recherche auch andere externe ISO-Tastaturen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;credits&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/macos-externes-keyboard-kleiner-groesser-vertauscht-mit-zirkumflex-und-gradzeichen/#credits&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Credits&lt;/h2&gt;
&lt;p&gt;Die Idee dahinter kommt aus einem &lt;a href=&quot;https://apple.stackexchange.com/questions/239395/and-keys-are-swapped/446296&quot; target=&quot;_blank&quot;&gt;Stackoverflow-Thread&lt;/a&gt;, der noch weitere Lösungsansätze enthält. Diesen Artikel gibt es hauptsächlich, damit ich die passende Lösung für mich wieder finden kann. Vielleicht hilft sie ja auch dir 😊.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;suchbegriffe-fuer-suchmaschinen-etc&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/macos-externes-keyboard-kleiner-groesser-vertauscht-mit-zirkumflex-und-gradzeichen/#suchbegriffe-fuer-suchmaschinen-etc&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Suchbegriffe für Suchmaschinen etc.&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;macOS &amp;lt; &amp;gt; ^ vertauscht&lt;/li&gt;
&lt;li&gt;Keychron QWERTZ falsch&lt;/li&gt;
&lt;li&gt;Tastaturbelegung Mac deutsch&lt;/li&gt;
&lt;li&gt;MacBook kleiner als Taste falsch&lt;/li&gt;
&lt;li&gt;Keychron Mac falsche Zeichen&lt;/li&gt;
&lt;li&gt;größer als Taste vertauscht&lt;/li&gt;
&lt;li&gt;Zirkumflex und Gradzeichen auf Mac falsch&lt;/li&gt;
&lt;/ul&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Accessibility Link Tester</title>
		<link href="https://moritzglantz.de/blog/posts/accessibility-link-tester/?source=feedxmllink"/>
		<updated>2025-04-06T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/accessibility-link-tester/</id>
		<content type="html">&lt;p&gt;When working on accessible websites, I often found myself manually testing different combinations of link attributes – &lt;code&gt;aria-label&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, pseudo-elements, and images with or without &lt;code&gt;alt&lt;/code&gt; text. That got a bit tedious. So I built a small tool to make that process easier.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/wH_l1m9RRH-2590.avif 2590w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/wH_l1m9RRH-2590.webp 2590w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/wH_l1m9RRH-2590.gif 2590w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/wH_l1m9RRH-2590.jpeg&quot; alt=&quot;Screenshot of the configurator with toggles for aria-label, title, and pseudo-elements and a preview link.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2590&quot; height=&quot;1640&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Accessibility Link Configurator / Tester&lt;/strong&gt; lets you toggle common link features on and off and instantly preview how they affect the rendered link – perfect for screen reader testing and accessibility evaluation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/accessibility-link-tester/&quot; class=&quot;button&quot;&gt;✨ Try the Link Tester ✨&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>2024</title>
		<link href="https://moritzglantz.de/blog/posts/2024/?source=feedxmllink"/>
		<updated>2024-12-26T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/2024/</id>
		<content type="html">&lt;p&gt;&#39;tis the season for “end of the year”-posts. Let’s go!&lt;/p&gt;
&lt;h2 id=&quot;in-2024-i&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/2024/#in-2024-i&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; In 2024, I…&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;…launched this blog and released 26 posts (including this one)&lt;/li&gt;
&lt;li&gt;…traveled to Singapore, New Zealand, Australia, Tokyo, Fuerteventura, the Baltic Sea, Hamburg, Berlin and Munich&lt;/li&gt;
&lt;li&gt;…&lt;a href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/&quot;&gt;changed my surname&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…streamed &lt;a href=&quot;https://wwsiv.de/twitch&quot; target=&quot;_blank&quot;&gt;99 hours with WWSIV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…released &lt;a href=&quot;https://wowirsindistvorne.show/&quot; target=&quot;_blank&quot;&gt;7 podcast episodes with WWSIV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…started freelancing more as an &lt;a href=&quot;https://moritzglantz.de/work-with-me/&quot;&gt;Accessibility Consultant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…attended the Gulaschprogrammiernacht (GPN) in Karlsruhe&lt;/li&gt;
&lt;li&gt;…did lots of construction work and renovations in an old farm house in the middle of the Palatinate Forest&lt;/li&gt;
&lt;li&gt;…released the &lt;a href=&quot;https://chromewebstore.google.com/detail/appbar-color-wizard/dlgdlhkhgegcpdccljgbeejdegnidfhf&quot; target=&quot;_blank&quot;&gt;AppBar Color Wizard Chrome Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…released the &lt;a href=&quot;https://moritzglantz.de/blog/posts/firefox-add-on-to-remove-target-blank/&quot;&gt;No Target Blank Firefox Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…released the &lt;a href=&quot;https://moritzglantz.de/blog/posts/yewtube-redirect-firefox-add-on/&quot;&gt;YewTube Redirect Firefox Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…forked and re-released &lt;a href=&quot;https://contrast-ratio.org/&quot; target=&quot;_blank&quot;&gt;Lea Verous Contrast-Ratio calculator ad-free&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…attended the Subscribe Podcaster Conference in Berlin&lt;/li&gt;
&lt;li&gt;…attended a Jacob Collier concert in Munich&lt;/li&gt;
&lt;li&gt;…attended a Marc-Uwe Kling reading in Frankfurt&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;in-2025-i-plan-to&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/2024/#in-2025-i-plan-to&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; In 2025 I plan to…&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;…do even more &lt;a href=&quot;https://moritzglantz.de/work-with-me/&quot;&gt;Accessibility and Frontend-Dev freelance work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…re-design the start page of this blog to fit with the new blog design&lt;/li&gt;
&lt;li&gt;…design the front-end of a really cool remote streaming tool which is in the making right now (I am late on this one, sorry Sarah!)&lt;/li&gt;
&lt;li&gt;…travel east&lt;/li&gt;
&lt;li&gt;…help launching accessible versions of lots of websites. Especially because the new EU-Accessibility-Act is coming this summer&lt;/li&gt;
&lt;li&gt;…finish the construction work in the Palatinate Forest&lt;/li&gt;
&lt;/ul&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>A change of seasons</title>
		<link href="https://moritzglantz.de/blog/posts/a-change-of-seasons/?source=feedxmllink"/>
		<updated>2024-11-30T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/a-change-of-seasons/</id>
		<content type="html">&lt;hr&gt;
&lt;p&gt;&lt;span lang=&quot;en&quot;&gt;English version below&lt;/span&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p lang=&quot;de&quot; class=&quot;summary&quot;&gt;
Mein Name hat sich von &lt;del&gt;Moritz Gießmann&lt;/del&gt; in &lt;strong&gt;&lt;ins&gt;Moritz Glantz&lt;/ins&gt;&lt;/strong&gt; geändert. Ich habe nicht geheiratet. Diese Seite, dieses Blog und alles was dazu gehört werden ab sofort von moritzgiessmann.de auf moritzglantz.de umgeleitet. Ebenso alle E-Mail-Adressen die diese Domain enthalten. Alle möglichen Online-Accounts werden in Zukunft auch geändert.
&lt;/p&gt;
&lt;section lang=&quot;de&quot;&gt;
&lt;h2 id=&quot;hast-du-dir-das-gut-ueberlegt&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#hast-du-dir-das-gut-ueberlegt&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Hast du dir das gut überlegt?&lt;/h2&gt;
&lt;p&gt;Ja. Viele Jahre.&lt;/p&gt;
&lt;h2 id=&quot;ist-das-nicht-viel-aufwand&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#ist-das-nicht-viel-aufwand&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Ist das nicht viel Aufwand?&lt;/h2&gt;
&lt;p&gt;Ja. Ist es. Man muss es genehmigt bekommen und eine Million Accounts müssen geändert werden. Und so &lt;s&gt;unwichtige&lt;/s&gt; Dokumente wie der Personalausweis, Reisepass, Führerschein. Und diese Website. Ja, alles auf dieser Domain auf eine Neue umzuleiten war ein technischer Spaß. Aber auch eine spannende Herausforderung.&lt;/p&gt;
&lt;h2 id=&quot;gruende&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#gruende&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Gründe&lt;/h2&gt;
&lt;p&gt;Wie oben erwähnt habe ich nicht geheiratet, sondern meinen Nachnamen in meinen Geburtsnamen ändern lassen. Die Gründe hierfür sind persönlicher Natur. Es geht dabei allgemein gesprochen um Identität und Zugehörigkeit. Ich schließe nicht aus, dass ich in ferner Zukunft öffentlich über die Details sprechen werde, aber ich bitte von Nachfragen abzusehen.&lt;/p&gt;
&lt;h2 id=&quot;schadet-die-namensaenderung-der-karriere&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#schadet-die-namensaenderung-der-karriere&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Schadet die Namensänderung der Karriere?&lt;/h2&gt;
&lt;p&gt;Keine Ahnung. Ich bin nicht so vermessen anzunehmen, dass mein Name irgendwo unentsinkbar tief verankert ist, bzw. eine Änderung großen Schaden bedeuten würde. Änderungen des Nachnamens sind in unserer Gesellschaft nichts besonderes. Nur unter diesen Umständen nicht so häufig.&lt;/p&gt;
&lt;h2 id=&quot;ich-hab-da-noch-eine-stelle-im-internet-mit-dem-alten-namen-gefunden&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#ich-hab-da-noch-eine-stelle-im-internet-mit-dem-alten-namen-gefunden&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Ich hab’ da noch eine Stelle im Internet mit dem alten Namen gefunden…&lt;/h2&gt;
&lt;p&gt;Super! Schick mir eine Mail und ich versuche es in die entsprechende Datenbank einzumassieren.&lt;/p&gt;
&lt;h2 id=&quot;wie-hast-du-das-gemacht-ich-will-auch-was-muss-man-beachten&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#wie-hast-du-das-gemacht-ich-will-auch-was-muss-man-beachten&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Wie hast du das gemacht? Ich will auch! Was muss man beachten?&lt;/h2&gt;
&lt;p&gt;Ich habe mich beim Standesamt der Stadt Karlsruhe gemeldet. Danach musste ich Formulare ausfüllen, Dokumente besorgen (Meldebescheinigung, Führungszeugnis, Geburtenregisterauszug, etc), eine Begründung schreiben und diese persönlich erklären und nochmal nachschärfen. Das ganze kostete mich ca. 450€. Ab 2025 geht &lt;a href=&quot;https://www.bmj.de/DE/themen/gesellschaft_familie/namensrecht/namensrecht_node.html&quot; target=&quot;_blank&quot;&gt;das alles mutmaßlich einfacher&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;
&lt;hr&gt;
&lt;section lang=&quot;en&quot;&gt;
&lt;h2 id=&quot;tl-dr&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#tl-dr&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; TL;DR&lt;/h2&gt;
&lt;p&gt;My name has changed from Moritz Gießmann to Moritz Glantz. I did not get married. This site, this blog and everything that goes with it will be redirected from moritzgiessmann.de to moritzglantz.de with immediate effect. Likewise all email addresses that contain this domain. Other online accounts will also be changed in the future.&lt;/p&gt;
&lt;h2 id=&quot;have-you-thought-this-through&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#have-you-thought-this-through&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Have you thought this through?&lt;/h2&gt;
&lt;p&gt;Yes. Many years.&lt;/p&gt;
&lt;h2 id=&quot;isn-t-that-a-lot-of-effort&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#isn-t-that-a-lot-of-effort&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Isn’t that a lot of effort?&lt;/h2&gt;
&lt;p&gt;Yes, it is. You have to get it approved and a million accounts have to be changed. And such &lt;s&gt;unimportant&lt;/s&gt; documents as your ID card, passport, driver’s license. And this website. Yes, redirecting everything on this domain to a new one was technical fun. But also an exciting challenge.&lt;/p&gt;
&lt;h2 id=&quot;reasons&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#reasons&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Reasons&lt;/h2&gt;
&lt;p&gt;As mentioned above, I didn’t get married but had my surname changed to my birth name. The reasons for this are personal. Generally speaking, it’s about identity and belonging. I do not rule out that I will speak publicly about the details in the distant future, but I kindly ask you to refrain from asking.&lt;/p&gt;
&lt;h2 id=&quot;will-the-name-change-damage-your-career&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#will-the-name-change-damage-your-career&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Will the name change damage your career?&lt;/h2&gt;
&lt;p&gt;I have no idea. I’m not so presumptuous as to assume that my name is deeply rooted somewhere or that a change would be very damaging. Changing your surname is nothing special in our society. Just not so common in these circumstances.&lt;/p&gt;
&lt;h2 id=&quot;i-found-another-place-on-the-internet-with-the-old-name&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#i-found-another-place-on-the-internet-with-the-old-name&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; I found another place on the Internet with the old name...&lt;/h2&gt;
&lt;p&gt;Great! Send me an e-mail and I&#39;ll try to massage it into the corresponding database.&lt;/p&gt;
&lt;h2 id=&quot;how-did-you-do-that-i-want-to-too-what-do-you-have-to-consider&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-change-of-seasons/#how-did-you-do-that-i-want-to-too-what-do-you-have-to-consider&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; How did you do that? I want to too! What do you have to consider?&lt;/h2&gt;
&lt;p&gt;I registered at the registry office of the city of Karlsruhe. Then I had to fill out forms, get documents (registration certificate, certificate of good conduct, birth register excerpt, etc.), write a statement of reasons and explain it in person and sharpen it up again. The whole thing cost me around €450. From 2025, &lt;a href=&quot;https://www.bmj.de/DE/themen/gesellschaft_familie/namensrecht/namensrecht_node.html&quot; target=&quot;_blank&quot;&gt;all this will presumably be easier&lt;/a&gt;.&lt;/p&gt;
&lt;/section&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Find Accessible WordPress Themes</title>
		<link href="https://moritzglantz.de/blog/posts/accessible-wordpress-themes/?source=feedxmllink"/>
		<updated>2024-10-06T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/accessible-wordpress-themes/</id>
		<content type="html">&lt;p&gt;I searched for accessible WordPress themes for an upcoming project, but the Google results were disappointing. Instead of relevant options, I found blog articles from snake oil accessibility overlay providers and other obscure, outdated lists.&lt;/p&gt;
&lt;p&gt;It turns out WordPress has its own method for tagging “accessible” themes. In the official WordPress theme repository, you can specify the features you want in a theme, including the “Accessibility Ready” tag. If you&#39;re just looking for themes that are considered accessible, you can stop here and check out the “Accessibility Ready” &lt;a href=&quot;https://wordpress.org/themes/tags/accessibility-ready/&quot; target=&quot;_blank&quot;&gt;themes tagged as “Accessibility Ready” in the theme repository&lt;/a&gt;. But if you&#39;re curious to learn what “Accessibility Ready” really means, keep reading.&lt;/p&gt;
&lt;h2 id=&quot;but-what-does-accessibility-ready-mean&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/accessible-wordpress-themes/#but-what-does-accessibility-ready-mean&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; But What Does “Accessibility Ready” Mean?&lt;/h2&gt;
&lt;p&gt;Unfortunately, the theme repository doesn&#39;t provide a direct link to the relevant guidelines. After some digging, I found there are three types of requirements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://make.wordpress.org/themes/handbook/review/required/#3-accessibility&quot; target=&quot;_blank&quot;&gt;WordPress Required Accessibility Features for all themes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://make.wordpress.org/themes/handbook/review/accessibility/required/&quot; target=&quot;_blank&quot;&gt;WordPress “Accessibility Ready” theme requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://make.wordpress.org/themes/handbook/review/accessibility/recommended/&quot; target=&quot;_blank&quot;&gt;WordPress “Accessibility Ready” theme recommendations&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;the-requirements&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/accessible-wordpress-themes/#the-requirements&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The Requirements&lt;/h2&gt;
&lt;p&gt;As of this writing, every theme is required to include &lt;strong&gt;skip links&lt;/strong&gt;, &lt;strong&gt;basic keyboard navigation&lt;/strong&gt;, and &lt;strong&gt;underlined links&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Accessibility Ready”&lt;/strong&gt; themes must have &lt;strong&gt;further keyboard controls&lt;/strong&gt;. &lt;strong&gt;Dropdowns&lt;/strong&gt; have to be keyboard accessible, &lt;strong&gt;focus visible&lt;/strong&gt; and no &lt;code&gt;div&lt;/code&gt;s as buttons. Furthermore &lt;strong&gt;form inputs and buttons need accessible names and labels&lt;/strong&gt;, there must be a good &lt;strong&gt;headline structure&lt;/strong&gt; and they suggest the use of landmark roles. They also want you to avoid &lt;strong&gt;repetitive link texts&lt;/strong&gt;, make sure you have &lt;strong&gt;good alt texts&lt;/strong&gt; if necessary, &lt;strong&gt;no auto start for media&lt;/strong&gt; and they explicitly forbid the usage of &lt;strong&gt;any positive tab index&lt;/strong&gt; attributes, accesskeys and &lt;code&gt;target=&amp;quot;_blank&amp;quot;&lt;/code&gt; without a warning.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;recommended&lt;/strong&gt; section only features that text should be zoomable and the removal of &lt;code&gt;title&lt;/code&gt; attributes.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/accessible-wordpress-themes/#conclusion&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Conclusion&lt;/h2&gt;
&lt;p&gt;While most “Accessibility Ready” requirements seem reasonable, I&#39;m curious about how these tests are conducted and just how strict the standards are.
After running quick accessibility tests on “Accessibility Ready” themes, I found they performed better than the average website. However, I still encountered issues with keyboard focus visibility — one of the requirements &lt;strong&gt;for all themes&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It is good to see, that WordPress has accessibility requirements for &lt;em&gt;&lt;strong&gt;all&lt;/strong&gt;&lt;/em&gt; themes. While the standards could be stricter, it’s a solid foundation. These themes don’t eliminate the need for your own accessibility tests, but starting with one of them will likely result in fewer issues.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>👩‍🦯‍➡️ Nonvisual Website Challenge</title>
		<link href="https://moritzglantz.de/blog/posts/non-visual-website-challenge/?source=feedxmllink"/>
		<updated>2024-08-21T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/non-visual-website-challenge/</id>
		<content type="html">&lt;p&gt;I just came across this nice website. It is a little treasure hunt game which you can only solve using a screen reader.&lt;/p&gt;
&lt;p&gt;If you’ve been waiting for a sign on when to use a screen reader for the first time, this is it: 🪧✨!&lt;/p&gt;
&lt;p&gt;Though there may be other ways to solve it, just try it with a screen reader. You won’t be disappointed. I promise!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nonvisualwebsite.com/&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Non visual website challenge&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;some-info-about-screen-readers&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/non-visual-website-challenge/#some-info-about-screen-readers&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Some info about screen readers:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;On macOS or iPhone/iPad use the built-in &lt;a href=&quot;https://support.apple.com/de-de/guide/voiceover/welcome/10&quot; target=&quot;_blank&quot;&gt;VoiceOver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.google.com/accessibility/android/answer/6283677&quot; target=&quot;_blank&quot;&gt;Talkback&lt;/a&gt; on Android&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.microsoft.com/en-us/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1&quot; target=&quot;_blank&quot;&gt;Windows Narrator&lt;/a&gt; should work (Windows pre-installed screenreader), if you can use &lt;a href=&quot;https://www.nvaccess.org/&quot; target=&quot;_blank&quot;&gt;NVDA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>🌈 Introducing Appbar Color Wizard for Chrome!</title>
		<link href="https://moritzglantz.de/blog/posts/appbar-color-wizard-chrome-extension/?source=feedxmllink"/>
		<updated>2024-08-12T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/appbar-color-wizard-chrome-extension/</id>
		<content type="html">&lt;p&gt;Tired of inconsistent browser title bar colors? The Appbar Color Wizard automatically checks and adds the &lt;code&gt;&amp;lt;meta name=&#39;theme-color&#39;&amp;gt;&lt;/code&gt; tag to any website, ensuring a seamless and uniform look. Perfect for enhancing your browsing experience!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://chromewebstore.google.com/detail/dlgdlhkhgegcpdccljgbeejdegnidfhf&quot; target=&quot;_blank&quot;&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/5_t3d7Xc-d-1800.avif 1800w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/5_t3d7Xc-d-1800.webp 1800w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/5_t3d7Xc-d-1800.gif 1800w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/5_t3d7Xc-d-1800.jpeg&quot; alt=&quot;Two screenshot of the apple music web app side by side: The left one has a dark brown background color and a white app bar on the top and the text &#39;before&#39; on it, the second one has a dark brown appbar with brown background and it says &#39;after&#39; &quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;899&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Theme Color Checker is a simple Chrome extension that ensures every website you visit has a title bar in the right color. If a site doesn&#39;t have this it set, the extension automatically adds it using the background color of the page. This helps provide a more consistent look and feel.&lt;/p&gt;
&lt;p&gt;The Extension is free of charge and there are no ads or tracking, but I would not mind if you bought me &lt;a href=&quot;https://ko-fi.com/J3J3JAWO1&quot; target=&quot;_blank&quot;&gt;a cup of coffee&lt;/a&gt; if it is useful to you ❤️.
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://chromewebstore.google.com/detail/dlgdlhkhgegcpdccljgbeejdegnidfhf&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Appbar Color Wizard Chrome Extension&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Get it now! 🚀&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Why u no alt text? 🫴</title>
		<link href="https://moritzglantz.de/blog/posts/why-u-no-alt-text/?source=feedxmllink"/>
		<updated>2024-08-04T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/why-u-no-alt-text/</id>
		<content type="html">&lt;p&gt;&lt;strong&gt;People often overlook adding alternative texts to images, and that&#39;s problematic. This article explores why this happens, how to identify if you have this issue, and provides possible solutions.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/rxm3KBqTvx-1736.avif 1736w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/rxm3KBqTvx-1736.webp 1736w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/rxm3KBqTvx-1736.gif 1736w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/rxm3KBqTvx-1736.png&quot; alt=&quot;Screenshot of a code snippet with and img tag - src=&#39;113742471123.jpg&#39;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1736&quot; height=&quot;488&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h2 id=&quot;why-alt-texts&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/why-u-no-alt-text/#why-alt-texts&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Why alt texts&lt;/h2&gt;
&lt;p&gt;Alternative texts are &lt;strong&gt;key for accessibility&lt;/strong&gt;, as they describe &lt;strong&gt;visual content for visually impaired&lt;/strong&gt; users and promote inclusivity across digital platforms. Alt texts are also useful when the &lt;strong&gt;image can&#39;t be shown&lt;/strong&gt;, if the &lt;strong&gt;download fails&lt;/strong&gt;, and for SEO. Many readers might already know this and add alt texts to their images. However, this group is quite small.&lt;/p&gt;
&lt;p&gt;How do I know? I did some research with a colleague and we found out, that &lt;strong&gt;over 80% of the images&lt;/strong&gt; in a specific social network &lt;strong&gt;didn’t have useful alternative texts&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-is-a-good-alt-text&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/why-u-no-alt-text/#what-is-a-good-alt-text&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; What is a good alt text?&lt;/h2&gt;
&lt;p&gt;A good alt text is &lt;strong&gt;short but clear&lt;/strong&gt;, providing a &lt;strong&gt;clear explanation of an image’s content&lt;/strong&gt; and its context within the page. It should &lt;strong&gt;avoid redundancy&lt;/strong&gt;, &lt;strong&gt;stay relevant&lt;/strong&gt;, and, if necessary, include important text within the image. If you’re unsure what to write, refer to the &lt;a href=&quot;https://www.w3.org/WAI/tutorials/images/decision-tree/&quot; target=&quot;_blank&quot;&gt;Alt Decision Tree&lt;/a&gt;. There can be cases where &lt;a href=&quot;https://www.w3.org/WAI/tutorials/images/decorative/&quot; target=&quot;_blank&quot;&gt;an empty alt text is better&lt;/a&gt; than one at all.&lt;/p&gt;
&lt;h2 id=&quot;how-to-find-out-if-you-have-a-problem&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/why-u-no-alt-text/#how-to-find-out-if-you-have-a-problem&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; How to find out if you have a problem&lt;/h2&gt;
&lt;p&gt;You run websites and have access to their data or database? Take a look at the code and see if the &lt;strong&gt;alt texts look good&lt;/strong&gt; to you. Do they exist at all? &lt;strong&gt;Find the ones that don’t&lt;/strong&gt;, and see if you can &lt;strong&gt;identify patterns&lt;/strong&gt;. In our research, the data was in markdown in a database. Many alt texts contained just the name of the image file, were empty, or had generic texts like &#39;image&#39; or &#39;screenshot&#39;. Ask developers to run a query over all content with the identified patterns. If that is not possible, you could test the sites with &lt;a href=&quot;https://chromewebstore.google.com/detail/axe-devtools-web-accessib/lhdoppojpmngadmnindnejefpokejbdd&quot; target=&quot;_blank&quot;&gt;Axe&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;why-people-might-not-add-alt-texts&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/why-u-no-alt-text/#why-people-might-not-add-alt-texts&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Why People Might Not Add alt texts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;They don’t know about the topic&lt;/li&gt;
&lt;li&gt;It seems hard to do and it takes extra time&lt;/li&gt;
&lt;li&gt;They often simply forget to include alt text&lt;/li&gt;
&lt;li&gt;Thinking it’s not needed&lt;/li&gt;
&lt;li&gt;Tech/CMS issues – Some content management systems make it hard to add alt text&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;possible-solutions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/why-u-no-alt-text/#possible-solutions&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Possible Solutions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Educate&lt;/strong&gt; – Raise awareness about the importance of alt texts through training and resources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nudge&lt;/strong&gt; – Implement reminders or warnings for users to add alt texts before publishing posts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make it easy&lt;/strong&gt; – provide guidance and tools next to the image upload&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated AI generated alt texts&lt;/strong&gt; – if all of the above fails&lt;/li&gt;
&lt;li&gt;One creative idea was to OCR text of images and check if the alt text has a similar result (thanks to &lt;a href=&quot;https://www.twitch.tv/svenjadev&quot; target=&quot;_blank&quot;&gt;Svenja&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-else&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/why-u-no-alt-text/#what-else&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; What else?&lt;/h2&gt;
&lt;p&gt;Did I miss something? Is there a silver bullet I am  unaware of? Other explanations?&lt;/p&gt;
&lt;p&gt;I’d be interested in your ideas and findings while analyzing alt texts in your network. ❤️&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Accessibility Cheat Sheet</title>
		<link href="https://moritzglantz.de/blog/posts/accessibility-cheat-sheet/?source=feedxmllink"/>
		<updated>2024-07-16T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/accessibility-cheat-sheet/</id>
		<content type="html">&lt;p&gt;Hi there! I just wanted to share my &lt;strong&gt;Accessibility Cheat Sheet&lt;/strong&gt; with you. Whether you&#39;re a &lt;strong&gt;web developer&lt;/strong&gt;, &lt;strong&gt;UX designer&lt;/strong&gt;, or simply &lt;strong&gt;passionate about creating inclusive digital experiences&lt;/strong&gt;, this guide might help you building more accessible websites.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/accessibility-cheatsheet/&quot;&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/eBaG5mPrn--2222.avif 2222w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/eBaG5mPrn--2222.webp 2222w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/eBaG5mPrn--2222.gif 2222w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/eBaG5mPrn--2222.png&quot; alt=&quot;Screenshot of the cheat sheet: Practical approaches to Universal Design for making
your website/webapp accessible to everyone. Headlines: Use semantic HTML, Provide text for non-text content, Add labels to form elements, Show where your :focus is &quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2222&quot; height=&quot;1124&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I created the cheat sheet, I wanted to provide &lt;strong&gt;easy-to-follow tips&lt;/strong&gt; and &lt;strong&gt;best practices&lt;/strong&gt; for &lt;strong&gt;improving web accessibility&lt;/strong&gt;, while keeping the &lt;strong&gt;entry barrier as low as possible&lt;/strong&gt;. Feel free to contribute via pull requests or ask questions directly on &lt;a href=&quot;https://github.com/MoritzGlantz/accessibility-cheatsheet&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And now&lt;/strong&gt;: Click, bookmark, save &amp;amp; read, and let&#39;s work together to make the web a place where everyone feels welcome and included.&lt;/p&gt;
&lt;p&gt;The Cheat Sheet is free and there are no ads or tracking, but I would not mind if you bought me &lt;a href=&quot;https://ko-fi.com/J3J3JAWO1&quot; target=&quot;_blank&quot;&gt;a cup of coffee&lt;/a&gt; if was useful to you ❤️.
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/accessibility-cheatsheet/&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Accessibility Cheat Sheet&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;p&gt;If you belong to the people who have seen it before: Yes it has been around for some time (almost 6 years), but I wanted it to have its own blog post. Because that’s what it deserves.&lt;/p&gt;
&lt;p&gt;Fun fact: It is built using &lt;code&gt;cm&lt;/code&gt; CSS units to mimic a real DINA4 sheet of paper. So if anybody ever asks what these units are for, feel free to share my cheat sheet 🙌.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Setting Up XAMPP on macOS Sonoma With Local User Folder</title>
		<link href="https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/?source=feedxmllink"/>
		<updated>2024-07-04T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/</id>
		<content type="html">&lt;p&gt;I wanted to write a compelling introduction to this post, but the truth is: I want to write down the steps for myself for future reference. If you’re interested in setting up XAMPP on macOS so that you can serve files from your user folder, follow along.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I am only using XAMPP for local testing, so this guide might have some bad security advice in it. If you read this and have security concerns, let’s talk!&lt;/p&gt;
&lt;h2 id=&quot;prerequisites&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#prerequisites&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Prerequisites&lt;/h2&gt;
&lt;p&gt;Before you begin, ensure you have the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Basic understanding of how the Terminal works&lt;/li&gt;
&lt;li&gt;Familiarity with the macOS file structure&lt;/li&gt;
&lt;li&gt;Administrator access on your Mac&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;steps&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#steps&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Steps&lt;/h2&gt;
&lt;h3 id=&quot;1-install-xampp&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#1-install-xampp&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 1. Install &lt;a href=&quot;https://www.apachefriends.org/&quot; target=&quot;_blank&quot;&gt;XAMPP&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;My version is the 8.2.4. The app is called “manager-osx” for some weird reason.&lt;/p&gt;
&lt;h3 id=&quot;2-disable-pre-installed-apache&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#2-disable-pre-installed-apache&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 2. Disable Pre-Installed Apache&lt;/h3&gt;
&lt;p&gt;macOS Sonoma has its own Apache Server which we need to disable so &lt;a href=&quot;https://stackoverflow.com/questions/4582504/xampp-apache-webserver-localhost-not-working-on-mac-os/76401114#76401114&quot; target=&quot;_blank&quot;&gt;it does not conflict with XAMPP&lt;/a&gt;. Open Terminal and run the following command to stop the existing Apache processes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo killall httpd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, start the XAMPP Apache server:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo /Applications/XAMPP/xamppfiles/bin/apachectl start
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-set-up-public-html-folder-and-test-file&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#3-set-up-public-html-folder-and-test-file&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 3. Set Up &lt;code&gt;public_html&lt;/code&gt; Folder and Test File&lt;/h3&gt;
&lt;p&gt;Create a &lt;code&gt;public_html&lt;/code&gt; folder inside your user home directory, and add an index.html file to it. This will help us test the setup later.
A folder called &lt;code&gt;public_html&lt;/code&gt; directly inside your user folder is the default foldername for Apache &lt;code&gt;userDir&lt;/code&gt; folders. It can be changed, but it is way easier if you stick to it.&lt;/p&gt;
&lt;p&gt;Run the following commands in Terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir ~/public_html/ &amp;amp;&amp;amp;
touch ~/public_html/index.html &amp;amp;&amp;amp;
echo &#39;&amp;lt;h1&amp;gt;YAY!&amp;lt;/h1&amp;gt;&#39; &amp;gt;&amp;gt; ~/public_html/index.html
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-open-config-file-from-xampp&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#4-open-config-file-from-xampp&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 4. Open Config file from XAMPP&lt;/h3&gt;
&lt;p&gt;Open XAMPP and navigate to Manage Servers -&amp;gt; Configure -&amp;gt; Open Conf File. This will open the main configuration file for Apache.&lt;/p&gt;
&lt;h3 id=&quot;5-activate-userdir-folders-in-httpd-conf&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#5-activate-userdir-folders-in-httpd-conf&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 5. Activate userDir (folders) in httpd.conf&lt;/h3&gt;
&lt;p&gt;Find the line that says &lt;code&gt;# User home directories&lt;/code&gt; and uncomment the following line to enable user directories. It should look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# User home directories
Include etc/extra/httpd-userdir.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;6-change-user-apache-runs-under-your-user&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#6-change-user-apache-runs-under-your-user&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 6. Change User Apache Runs Under Your User&lt;/h3&gt;
&lt;p&gt;Find the section that defines the user Apache runs with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;IfModule unixd_module&amp;gt;
…
User daemon
Group daemon
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Change the User to your macOS username to allow Apache to access files in your user directory:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;User yourUserName
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Note&lt;/strong&gt;: This step may pose security risks. If you know of a more secure method, please use that instead.&lt;/p&gt;
&lt;h3 id=&quot;7-restart-apache&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/setting-up-xampp-on-macos-sonoma-with-local-user-folder/#7-restart-apache&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 7. Restart Apache&lt;/h3&gt;
&lt;p&gt;Finally, restart the Apache server to apply the changes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo /Applications/XAMPP/xamppfiles/bin/apachectl restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After restarting Apache, you should be able to open http://localhost/~yourUsername/ and the page should show “YAY!“.&lt;/p&gt;
&lt;p&gt;Yay.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Get the News You Want, When You Want: An Intro to RSS Feeds</title>
		<link href="https://moritzglantz.de/blog/posts/get-the-news-you-want-when-you-want-an-intro-to-rss-feeds/?source=feedxmllink"/>
		<updated>2024-06-23T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/get-the-news-you-want-when-you-want-an-intro-to-rss-feeds/</id>
		<content type="html">&lt;p&gt;How do you get your news online? You probably use news sites or social media with algorithms that promise personalized news. However, these algorithms often prioritize sensational or extreme content. What if you could follow all your interests in one place without algorithms deciding for you? &lt;br&gt;&lt;strong&gt;You can&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;welcome-to-rss-feeds&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/get-the-news-you-want-when-you-want-an-intro-to-rss-feeds/#welcome-to-rss-feeds&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; ✨ Welcome to RSS feeds! ✨&lt;/h2&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/T33qI9Jeee-2450.avif 2450w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/T33qI9Jeee-2450.webp 2450w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/T33qI9Jeee-2450.gif 2450w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/T33qI9Jeee-2450.png&quot; alt=&quot;Screenshot of Feedly classic feed reader app on iPad showing a magazine like layout with multiple articles of different sizes. One of them: Simplest View transition multi page demo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2450&quot; height=&quot;1672&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;h2 id=&quot;what-is-rss&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/get-the-news-you-want-when-you-want-an-intro-to-rss-feeds/#what-is-rss&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; What is RSS?&lt;/h2&gt;
&lt;p&gt;RSS stands for &amp;quot;Really Simple Syndication.&amp;quot; It’s a tech that gathers updates from your favorite websites and shows them in a streamlined feed. Imagine having a custom newspaper that only features the topics you care about. Cool right?&lt;/p&gt;
&lt;h2 id=&quot;how-does-rss-work&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/get-the-news-you-want-when-you-want-an-intro-to-rss-feeds/#how-does-rss-work&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; How Does RSS Work?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Choose a Reader&lt;/strong&gt;: Pick an RSS reader to collect and display your feeds. Popular options include:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web-based&lt;/strong&gt;: &lt;a href=&quot;https://feedly.com/&quot; target=&quot;_blank&quot;&gt;Feedly&lt;/a&gt;, &lt;a href=&quot;https://www.inoreader.com/&quot; target=&quot;_blank&quot;&gt;Inoreader&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desktop&lt;/strong&gt;: &lt;a href=&quot;https://netnewswire.com/&quot; target=&quot;_blank&quot;&gt;NetNewsWire&lt;/a&gt; (MacOS), &lt;br&gt;&lt;a href=&quot;https://www.rssowl.org/&quot; target=&quot;_blank&quot;&gt;RSSOwl&lt;/a&gt; (MacOS, Linux, Windows)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mobile&lt;/strong&gt;: &lt;a href=&quot;https://www.inoreader.com/&quot; target=&quot;_blank&quot;&gt;Inoreader&lt;/a&gt;, &lt;a href=&quot;https://feedly.com/&quot; target=&quot;_blank&quot;&gt;Feedly&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Self hosted&lt;/strong&gt;: &lt;a href=&quot;https://www.freshrss.org/&quot; target=&quot;_blank&quot;&gt;FreshRSS&lt;/a&gt;, &lt;a href=&quot;https://apps.nextcloud.com/apps/news&quot; target=&quot;_blank&quot;&gt;Nextcloud News integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commandline&lt;/strong&gt;: &lt;a href=&quot;https://newsboat.org/&quot; target=&quot;_blank&quot;&gt;Newsboat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser-Plugins&lt;/strong&gt;: for &lt;a href=&quot;https://chromewebstore.google.com/detail/erweiterung-rss-abonnemen/nlbjncdgjeocebhnmkbbbdekmmmcbfjd&quot; target=&quot;_blank&quot;&gt;Chrome&lt;/a&gt; and &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/want-my-rss/&quot; target=&quot;_blank&quot;&gt;Firefox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Find Feeds&lt;/strong&gt;: Look for the RSS icon (an orange square with white radio waves: &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; version=&quot;1.1&quot; style=&quot;width: 1em; height: 1em;&quot; viewBox=&quot;0 0 256 256&quot;&gt;
&lt;defs&gt;
&lt;linearGradient x1=&quot;0.085&quot; y1=&quot;0.085&quot; x2=&quot;0.915&quot; y2=&quot;0.915&quot; id=&quot;RSSg&quot;&gt;
&lt;stop offset=&quot;0.0&quot; stop-color=&quot;#E3702D&quot;&gt;&lt;/stop&gt;
&lt;stop offset=&quot;0.1071&quot; stop-color=&quot;#EA7D31&quot;&gt;&lt;/stop&gt;
&lt;stop offset=&quot;0.3503&quot; stop-color=&quot;#F69537&quot;&gt;&lt;/stop&gt;
&lt;stop offset=&quot;0.5&quot; stop-color=&quot;#FB9E3A&quot;&gt;&lt;/stop&gt;
&lt;stop offset=&quot;0.7016&quot; stop-color=&quot;#EA7C31&quot;&gt;&lt;/stop&gt;
&lt;stop offset=&quot;0.8866&quot; stop-color=&quot;#DE642B&quot;&gt;&lt;/stop&gt;
&lt;stop offset=&quot;1.0&quot; stop-color=&quot;#D95B29&quot;&gt;&lt;/stop&gt;
&lt;/linearGradient&gt;
&lt;/defs&gt;
&lt;rect width=&quot;256&quot; height=&quot;256&quot; rx=&quot;55&quot; ry=&quot;55&quot; x=&quot;0&quot; y=&quot;0&quot; fill=&quot;#CC5D15&quot;&gt;&lt;/rect&gt;
&lt;rect width=&quot;246&quot; height=&quot;246&quot; rx=&quot;50&quot; ry=&quot;50&quot; x=&quot;5&quot; y=&quot;5&quot; fill=&quot;#F49C52&quot;&gt;&lt;/rect&gt;
&lt;rect width=&quot;236&quot; height=&quot;236&quot; rx=&quot;47&quot; ry=&quot;47&quot; x=&quot;10&quot; y=&quot;10&quot; fill=&quot;url(#RSSg)&quot;&gt;&lt;/rect&gt;
&lt;circle cx=&quot;68&quot; cy=&quot;189&quot; r=&quot;24&quot; fill=&quot;#FFF&quot;&gt;&lt;/circle&gt;
&lt;path d=&quot;M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z&quot; fill=&quot;#FFF&quot;&gt;&lt;/path&gt;
&lt;path d=&quot;M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z&quot; fill=&quot;#FFF&quot;&gt;&lt;/path&gt;
&lt;/svg&gt; ) on websites you love or try adding &lt;code&gt;/feed&lt;/code&gt; or &lt;code&gt;/rss&lt;/code&gt; to their URL. &lt;a href=&quot;https://rss.app/&quot; target=&quot;_blank&quot;&gt;Rss.app&lt;/a&gt; can generate feeds for sites which don’t have a feed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subscribe&lt;/strong&gt;: Copy the feed URL from the website and paste it into your chosen reader. Some readers, like Feedly for example, include a feed search, so you don’t have to search for the feed URLs yourself.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;why-use-rss-feeds&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/get-the-news-you-want-when-you-want-an-intro-to-rss-feeds/#why-use-rss-feeds&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Why Use RSS Feeds?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;No Algorithms&lt;/strong&gt;: Unlike social media, RSS feeds show you everything in time order. There’s no mysterious algorithm deciding what you see.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No Clutter&lt;/strong&gt;: You get pure content without ads, suggested posts, or irrelevant updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Efficiency&lt;/strong&gt;: All your favorite stuff in one place means less time searching and more time enjoying.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control&lt;/strong&gt;: You choose what you want to follow. Nothing gets buried in endless timelines.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;getting-started-is-easy&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/get-the-news-you-want-when-you-want-an-intro-to-rss-feeds/#getting-started-is-easy&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Getting Started is Easy&lt;/h2&gt;
&lt;p&gt;To start, choose an RSS reader that fits your lifestyle. For a simple, clean experience, try &lt;a href=&quot;https://feedly.com/&quot; target=&quot;_blank&quot;&gt;Feedly&lt;/a&gt;. It’s user-friendly and works on both web and mobile. After setting up, explore your favorite sites. Find their RSS feeds and add them to your reader. Before you know it, you’ll have a custom, ad-free stream of the stuff you love.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Give RSS feeds a try and take control of your online experience. Enjoy the content you want, when you want, without the noise. &lt;br&gt;Happy reading!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Simplest View Transitions multi page demo (No JavaScript)</title>
		<link href="https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/?source=feedxmllink"/>
		<updated>2024-06-20T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/</id>
		<content type="html">&lt;p&gt;Create useful and minimal page/view transitions on your site with just two lines of CSS. Enhance the user experience by making page navigation feel more fluid and intuitive. Let’s go!&lt;/p&gt;
&lt;p&gt;
	&lt;picture&gt;
		&lt;img src=&quot;https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/view-transition-demo.gif&quot; alt=&quot;Website where the border under the three navigation links moves seamlessly from one link to the next&quot;&gt;
	&lt;/picture&gt;
&lt;/p&gt;
&lt;h2 id=&quot;history&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/#history&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; History&lt;/h2&gt;
&lt;p&gt;When I first saw &lt;a href=&quot;https://jakearchibald.com/&quot; target=&quot;_blank&quot;&gt;Jake Archibald&lt;/a&gt;’s &lt;a href=&quot;https://developer.chrome.com/docs/web-platform/view-transitions&quot; target=&quot;_blank&quot;&gt;demo of native view transitions&lt;/a&gt; I immediately felt like this was gonna &lt;strong&gt;change the web for good&lt;/strong&gt;. Not only are view transitions a way to improve user experience. By maintaining context and continuity they can help &lt;strong&gt;reducing cognitive load&lt;/strong&gt; through the flow of an application.&lt;/p&gt;
&lt;p&gt;For some time, view transitions were &lt;em&gt;excuse for building everything with heavy single page application frameworks&lt;/em&gt; because if you technically never leave the page, transitioning elements from one place/size to another is easy. Is it?&lt;/p&gt;
&lt;p&gt;And do you remember the page transitions &lt;a href=&quot;https://vimeo.com/111317293&quot; target=&quot;_blank&quot;&gt;Internet Explorer had back in the day&lt;/a&gt; ? Sorry, I was getting carried away by old people stuff…&lt;/p&gt;
&lt;h3 id=&quot;what-are-view-transitions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/#what-are-view-transitions&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; What are view transitions?&lt;/h3&gt;
&lt;p&gt;View transitions are dynamic animations that &lt;strong&gt;help navigate between different screens, pages, or states&lt;/strong&gt; in an application by &lt;strong&gt;visually transitioning elements&lt;/strong&gt; in a way that &lt;strong&gt;preserves context&lt;/strong&gt; and continuity. These transitions can include &lt;strong&gt;fading, sliding, or morphing elements&lt;/strong&gt; to indicate changes, improving the user experience by making interactions &lt;strong&gt;more fluid&lt;/strong&gt; and visually coherent.&lt;/p&gt;
&lt;p&gt;In a browser context, this means that there is a possibility to &lt;strong&gt;control the appearance of an element after clicking&lt;/strong&gt; on a link until the new page is loaded. You could also animate the whole page.&lt;/p&gt;
&lt;h3 id=&quot;single-page-then-multi-page&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/#single-page-then-multi-page&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Single page then multi page&lt;/h3&gt;
&lt;p&gt;When the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API&quot; target=&quot;_blank&quot;&gt;view transitions API&lt;/a&gt; was first announced, the first implementation &lt;strong&gt;was only capable of transitioning elements on single page applications&lt;/strong&gt;. Not so useful if you ask me, since you could to that with SPAs already. But the big promise was that this API was &lt;strong&gt;coming for multi page applications&lt;/strong&gt; as well. To be honest, when I heard that &lt;a href=&quot;https://mastodon.social/@jaffathecake/110343827055705335&quot; target=&quot;_blank&quot;&gt;Jake was leaving Google&lt;/a&gt;, I thought MPA view transitions would never see the light of day.  But with the release of Chrome 125, &lt;a href=&quot;https://www.youtube.com/watch?v=eY6C_-aDdTo&amp;amp;t=42s&quot; target=&quot;_blank&quot;&gt;Cross Document View transitions are available&lt;/a&gt; in Chrome, Edge etc. they are available for testing. Though view transitions &lt;a href=&quot;https://github.com/web-platform-tests/interop/issues/437#issuecomment-1921864727&quot; target=&quot;_blank&quot;&gt;have not been selected for Interop 2024&lt;/a&gt; and so won’t appear in all major browsers soon, they’re a perfect Progressive Enhancement opportunity you don’t want to miss &lt;code&gt;&amp;lt;/sellers-voice&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;let-s-build-something&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/#let-s-build-something&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Let’s build something!&lt;/h2&gt;
&lt;p&gt;For the simplest [multi page|cross document] view transition without any JavaScript you first need at least two HTML pages with links to each other. To opt-in to view transitions, just put this snippet in your CSS:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@view-transition {
    navigation: auto;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We could be done here. Now the browser &lt;strong&gt;fades from one page to the next&lt;/strong&gt;. If you want to &lt;strong&gt;transition an element after clicking a link&lt;/strong&gt;, you simply give it the same &lt;code&gt;‌view-transition-name&lt;/code&gt; in your CSS. That is enough to make the browser know it should animate the element between its size and position when navigating around.&lt;/p&gt;
&lt;p&gt;In my case I wanted a &lt;code&gt;&amp;lt;span class=”border”&amp;gt;&lt;/code&gt;, that mimics a border under a link, to move to the active link after clicking. This &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; element is inside the currently active &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; element on every page.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.border {
    view-transition-name: navborder;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is enough for the browser to know what to do. Pretty neat, right?&lt;/p&gt;
&lt;h2 id=&quot;demo&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/#demo&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Demo&lt;/h2&gt;
&lt;p&gt;To see this in action I built a small demo with three pages. Have fun!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/multi-page-view-transitions-demo/&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;Simple view transition demo&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;simple-vs-complex&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/simplest-no-js-view-transition-multi-page-demo/#simple-vs-complex&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Simple vs. complex&lt;/h2&gt;
&lt;p&gt;This is just a simple demo of what can be done with the view transitions API. If you read the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API&quot; target=&quot;_blank&quot;&gt;MDN article&lt;/a&gt; you will see there are endless possibilities to control every last bit view transitions. You cannot only define the animation transitions, durations and affected elements. There are also JavaScript methods to do all that programmatically.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Disable the “smart” emoji suggestions in MacOS Sonoma</title>
		<link href="https://moritzglantz.de/blog/posts/disable-smart-emoji-suggestions-in-macos-sonoma/?source=feedxmllink"/>
		<updated>2024-05-15T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/disable-smart-emoji-suggestions-in-macos-sonoma/</id>
		<content type="html">&lt;p&gt;Are you also annoyed by the “smart” emoji suggestions when opening the emoji picker in MacOS Sonoma? Here’s how to fix that.&lt;/p&gt;
&lt;h2 id=&quot;what-happens&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/disable-smart-emoji-suggestions-in-macos-sonoma/#what-happens&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; What happens?&lt;/h2&gt;
&lt;p&gt;
	&lt;picture&gt;
		&lt;img src=&quot;https://moritzglantz.de/blog/posts/disable-smart-emoji-suggestions-in-macos-sonoma/smart-emoji-suggestions-macos.gif&quot; alt=&quot;Text empty editor. The word aubergine gets written (German for eggplant) and an emoji suggestion showing only the eggplant emoji shows up&quot;&gt;
	&lt;/picture&gt;
&lt;/p&gt;
&lt;p&gt;Say you’re writing a text or a text message and you open the MacOS emoji picker by pressing &lt;kbd&gt;CTRL&lt;/kbd&gt; + &lt;kbd&gt;CMD&lt;/kbd&gt; + &lt;kbd&gt;Space&lt;/kbd&gt; to add an emoji. If the last word you wrote before opening the picker was something like “sleep”, “peach” or      &lt;del&gt;“penis”&lt;/del&gt; &lt;ins&gt;“eggplant”&lt;/ins&gt;, chances are that instead of showing the emoji picker, MacOS shows you emoji suggestions first. As if it wanted to nudge you to write Egyptian hieroglyphs.&lt;/p&gt;
&lt;h2 id=&quot;solution&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/disable-smart-emoji-suggestions-in-macos-sonoma/#solution&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Solution&lt;/h2&gt;
&lt;p&gt;Since the suggestions aren’t really clever or helpful, you want to deactivate these suggestions. To do so, you need to open the Terminal app and copy 🍝 the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo defaults write /Library/Preferences/FeatureFlags/Domain/UIKit.plist emoji_enhancements -dict-add Enabled -bool NO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After that, just reboot, and the suggestions are gone for good.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(I found this solution after endless googling on &lt;a href=&quot;https://www.reddit.com/r/MacOS/comments/16wzdk9/is_there_a_way_to_turn_off_the_new_emoji/&quot; target=&quot;_blank&quot;&gt;Reddit&lt;/a&gt;, so you don’t have to)&lt;/em&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>How I escaped the LinkedIn hell</title>
		<link href="https://moritzglantz.de/blog/posts/how-i-escaped-the-linkedin-hell/?source=feedxmllink"/>
		<updated>2024-04-30T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/how-i-escaped-the-linkedin-hell/</id>
		<content type="html">&lt;p&gt;I thought about writing a post about the absurdity of LinkedIn posts, but diving deep into this special hell would give it way more attention than it deserves. But I could share my approach to leaving it behind without abandoning all the useful connections I have there.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Update 03.05.2024:&lt;/strong&gt; Unfortunately LinkedIn apparently has an algorithm to avoid empty timelines, by filling it with trash once it has no content from people you follow. This post therefore is useless. Even more than ChatGPT anticipated. Bummer.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;“Just don’t open LinkedIn” I hear you say. Yeah. Sounds easy but  it is not. At least for me. I became addicted to mindlessly scrolling through timelines, no matter its content. And LinkedIn, and especially German LinkedIn is a very special place.&lt;/p&gt;
&lt;p&gt;Instead of diving deep, here’s a list of things that helped me crawling out.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Unfollow everybody until LinkedIn only shows your own posts and sometimes the “I want to desperately show you something, but all I have is this animated flashing fake post”.&lt;/li&gt;
&lt;li&gt;Close LinkedIn and enjoy the bliss of silence.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That’s it.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: The ChatGPT based IA Writer writing assistant criticizes this article with harsh words. But this is my blog is my blog is my blog.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PPS&lt;/strong&gt;: This is it’s “Critical review”:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;While the writer expresses frustration with LinkedIn and their addiction to mindless scrolling, the piece lacks depth and insight. It begins with the promise of dissecting the absurdity of LinkedIn but quickly retreats from this exploration, leaving the reader with a sense of unfulfilled curiosity. The proposed solution, unfollowing everyone and closing the app, is simplistic and lacks nuance. Additionally, the tone comes across as dismissive, undermining the potential for meaningful discussion about the impact of social media on our lives. Overall, the piece feels like a missed opportunity to delve into a relevant and timely topic with greater depth and critical analysis.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;…ChatGPT is using the word “delve” exceptionally often. Curious 🤔&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;PPPS&lt;/strong&gt;&lt;/em&gt;: Adding this “review” makes the article even more confusing because now nobody knows what it is really about. LinkedIn or AI assistants? I guess that’s my part of keeping the Internet weird. ✨&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>A journey of a lifetime and its digital tools</title>
		<link href="https://moritzglantz.de/blog/posts/a-journey-of-a-lifetime-and-its-digital-tools/?source=feedxmllink"/>
		<updated>2024-02-10T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/a-journey-of-a-lifetime-and-its-digital-tools/</id>
		<content type="html">&lt;p&gt;During the next week I’m gonna go on the biggest journey I’ve ever been on. I’m gonna board an airplane for the first time in 5 years. I’m gonna see the other side of the world (Singapore, New Zealand, Australia and Japan) and I’m excited beyond measure!&lt;/p&gt;
&lt;h2 id=&quot;why-this-post&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-journey-of-a-lifetime-and-its-digital-tools/#why-this-post&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Why this post?&lt;/h2&gt;
&lt;p&gt;I am writing this post because I wanted to let you know that there will almost certainly be no new content here or anywhere else until my return. With maybe one exception. Every now and then I post pictures on my &lt;a href=&quot;https://www.instagram.com/AnalogueSocialBot/&quot; target=&quot;_blank&quot;&gt;Instagram account&lt;/a&gt;. I’m gonna test if I can automatically crosspost to my &lt;a href=&quot;https://mastodon.social/@MoritzGlantz&quot; target=&quot;_blank&quot;&gt;Mastodon account&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;apps-and-tools&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-journey-of-a-lifetime-and-its-digital-tools/#apps-and-tools&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Apps &amp;amp; Tools&lt;/h2&gt;
&lt;p&gt;As a digital person, I like travelling with apps that make travelling more enjoyable.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The first thing I did was download all the maps I’m gonna need for offline use on my phone. This way I can always find my way back, even if there is no cell connection. This works with Google Maps &lt;del&gt;as well as Apple Maps&lt;/del&gt;. &lt;ins&gt;Apple Maps is a completely useless when it comes to offline maps. You can download them, but as of iOS 17.3.1 you cannot, I repeat, you cannot search the downloaded maps while being offline, which makes the whole feature pointless for travelling.&lt;/ins&gt;&lt;/li&gt;
&lt;li&gt;I heard lot’s of nice things about &lt;a href=&quot;https://www.flightyapp.com/&quot; target=&quot;_blank&quot;&gt;Flighty&lt;/a&gt;, an app which helps you to track flights and get delay information etc. right when you need it.&lt;/li&gt;
&lt;li&gt;When travelling to New Zealand and Australia, &lt;a href=&quot;https://campermate.com/&quot; target=&quot;_blank&quot;&gt;CamperMate&lt;/a&gt; appears to be a nice option to find camp sites, nice places to visit and various other places of interest like supermarkets, charging stations or even WiFi access points.&lt;/li&gt;
&lt;li&gt;Speaking of WiFi: On my last trip I discovered that there are lots of free WiFi finder apps out there, which comes in handy if you have only very expensive or limited data on your phone. I tested a lot of them and I found the best were &lt;a href=&quot;https://www.wifimap.io/&quot; target=&quot;_blank&quot;&gt;WiFi Map&lt;/a&gt; and &lt;a href=&quot;https://instabridge.com/&quot; target=&quot;_blank&quot;&gt;InstaBridge&lt;/a&gt;. They both have different data sets and your mileage may vary depending on which country you travel. Instabridge somehow tries to make you buy a SIM card instead of showing you the WiFi map. It is hidden behind Menu -&amp;gt; WiFi -&amp;gt; Map.&lt;/li&gt;
&lt;li&gt;If you travel by car or camper van, you might want to find cheap gas. Gas price apps are popular in Germany, but not so in every other country. In Germany &lt;a href=&quot;https://mehr-tanken.de/apps&quot; target=&quot;_blank&quot;&gt;Mehr tanken&lt;/a&gt; works well. &lt;a href=&quot;https://www.123tanken.de/&quot; target=&quot;_blank&quot;&gt;1-2-3 Tanken&lt;/a&gt; works also in France. &lt;a href=&quot;https://www.benzinpreis-blitz.de/&quot; target=&quot;_blank&quot;&gt;Benzinpreis Blitz&lt;/a&gt; also works in Spain, Portugal and Italy, but the only one I found to be working in New Zealand is &lt;a href=&quot;https://www.gaspy.nz/&quot; target=&quot;_blank&quot;&gt;Gaspy&lt;/a&gt;. But beware. Sometimes these apps show you gas stations in the middle of nowhere. Sometimes they’re there, sometimes not.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Did I miss any good travel app you’d recommend using? Let me know!&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;entertainment-for-long-flights&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-journey-of-a-lifetime-and-its-digital-tools/#entertainment-for-long-flights&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Entertainment for long flights&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;My podcast app &lt;a href=&quot;https://pocketcasts.com/&quot; target=&quot;_blank&quot;&gt;Pocket Casts&lt;/a&gt; is full of new episodes of podcasts I like. For example 4 episodes of the “infinite” German podcast called “&lt;a href=&quot;https://www.zeit.de/serie/alles-gesagt&quot; target=&quot;_blank&quot;&gt;Alles gesagt?&lt;/a&gt;” where two journalists of the German newspaper “Die Zeit” interview their guests as long until the guest ends the podcast by saying a word they agreed on at the start of every episode. These episodes can be as long as over 6 hours, but they’re insightful and fun.&lt;/li&gt;
&lt;li&gt;One of my favourite mobile games of all time is &lt;a href=&quot;https://www.blackboxpuzzles.com/&quot; target=&quot;_blank&quot;&gt;Blackbox&lt;/a&gt;. I can’t say too much about how it’s played without giving too much away, but it is not played like normal games.&lt;/li&gt;
&lt;li&gt;Other games that got recommended to me are &lt;a href=&quot;https://www.monumentvalleygame.com/&quot; target=&quot;_blank&quot;&gt;Monument Valley&lt;/a&gt;, &lt;a href=&quot;https://apps.apple.com/de/app/kami/id710724007&quot; target=&quot;_blank&quot;&gt;Kami&lt;/a&gt; and &lt;a href=&quot;https://i-love-hue.com/&quot; target=&quot;_blank&quot;&gt;I love hue&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;let-s-go&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/a-journey-of-a-lifetime-and-its-digital-tools/#let-s-go&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Let’s go!&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Thanks for reading this blog and following me on the socials. We’ll see each other in Mai. Until then!&lt;/strong&gt;&lt;/em&gt;  ❤️&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>My thoughts on a Global Design System</title>
		<link href="https://moritzglantz.de/blog/posts/my-thoughts-on-a-global-design-system/?source=feedxmllink"/>
		<updated>2024-02-06T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/my-thoughts-on-a-global-design-system/</id>
		<content type="html">&lt;p&gt;When Brad Frost released his article “&lt;a href=&quot;https://bradfrost.com/blog/post/a-global-design-system/&quot; target=&quot;_blank&quot;&gt;a global design system&lt;/a&gt;” a few weeks ago, it reignited a thought I’ve been having for a long time. Building design systems has somehow become similar to building websites before the era of design systems: Reinventing the wheel over and over again. But does it have to be that way, or are we ready for the next step of web design evolution?&lt;/p&gt;
&lt;p&gt;What finally drove me to write this article was &lt;a href=&quot;https://chriscoyier.net/2024/02/05/thoughts-on-a-global-design-system/&quot; target=&quot;_blank&quot;&gt;Chris Coyier’s perspective on a Global Design System&lt;/a&gt; who asked himself lot’s of good questions about how a Global Design System could/would work at scale.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;blockquote&gt;
	If there was a perfect component that solved the needs of a ton of people in certain situations… wouldn’t we already be using it because the incentive is there?
 &lt;footer&gt;
    &lt;cite&gt;— &lt;a href=&quot;https://chriscoyier.net/2024/02/05/thoughts-on-a-global-design-system/#:~:text=If%20there%20was%20a%20perfect%20component&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Perfect components&lt;/a&gt;&lt;/cite&gt;
  &lt;/footer&gt;
&lt;/blockquote&gt;
&lt;p&gt;Perfect components have to become part of the platform. The best examples are &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; + &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;. Why stop there? We could have &lt;code&gt;&amp;lt;combobox&amp;gt;&lt;/code&gt; component, a &lt;code&gt;&amp;lt;card&amp;gt;&lt;/code&gt; and a &lt;code&gt;&amp;lt;floatingTextThatChangesWhenScrollingAfterClickingAButton&amp;gt;&lt;/code&gt; component if they were useful and their adoption was substantial.&lt;/p&gt;
&lt;blockquote&gt;
	It seems like the intention here is explicitly not to be HTML, but a layer on top of HTML.
 &lt;footer&gt;
    &lt;cite&gt;— &lt;a href=&quot;https://chriscoyier.net/2024/02/05/thoughts-on-a-global-design-system/#:~:text=It%20seems%20like%20the%20intention%20here%20is%20explicitly%20not%20to%20be%20HTML&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;No HTML&lt;/a&gt;&lt;/cite&gt;
  &lt;/footer&gt;
&lt;/blockquote&gt;
&lt;p&gt;I see no reason for it to be so: &lt;strong&gt;Platform, platform &amp;amp; platform&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Unfortunately the browser default styles for most of the native HTML elements look like they are from another century. And that’s because most of them are. If they’d have a good and customizable design with accessibility in mind. Why t.f. not?&lt;/p&gt;
&lt;blockquote&gt;
	Unstyled was called out as a requirement of this, because it needs to work for any organization. Coming pre-styled will clash with too many brands and put it in conflict with the goal of being as close to universally useful as possible. But many people pick a design system because of the design it offers, and would be un-interested in an unstyled system. Would themes account for this entirely? Unstyled is another door for accessibility problems, since so many are caused by CSS.
 &lt;footer&gt;
    &lt;cite&gt;— &lt;a href=&quot;https://chriscoyier.net/2024/02/05/thoughts-on-a-global-design-system/#:~:text=Unstyled%20was%20called%20out%20as%20a%20requirement&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Styled or unstyled&lt;/a&gt;&lt;/cite&gt;
  &lt;/footer&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you ask me, it should not be unstyled, but offer a variety of  variables that make customization nice and easy. Like &lt;a href=&quot;https://getbootstrap.com/docs/5.3/customize/overview/&quot; target=&quot;_blank&quot;&gt;Bootstrap does it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let’s say you have a set of components that are &lt;em&gt;perfect&lt;/em&gt;, like a very flexible grid, a good looking accordion and a dialog.&lt;/p&gt;
&lt;p&gt;How much flexibility would you gain by making decisions on elements like typeface, spacing, rounded corners, and colors? I think changing a few variables would make lots and lots of different designs possible with only little compromise on the design side of things. It would provide sufficient individuality for most modern sites. Let the artists still be the artists.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;A global design system would provide everyone with the tools to create good, accessible websites and code. Amen.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Leitfaden Barrierefreiheit für Redakteur*innen</title>
		<link href="https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/?source=feedxmllink"/>
		<updated>2024-02-01T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/</id>
		<content type="html">&lt;p&gt;Dieser Leitfaden wurde erstellt, um es Redakteur*innen leichter zu machen barrierefreie Inhalte zu erstellen. Er enthält die wichtigsten Regeln in möglichst kurzer Form. Er bildet nicht alle potentiell gültigen Regeln ab. Das komplette zugrundeliegende Regelwerk sind die &lt;a href=&quot;https://www.w3.org/WAI/WCAG22/quickref/?versions=2.2&quot; target=&quot;_blank&quot;&gt;Web Content Accessibility Guidelines (WCAG)&lt;/a&gt; (Englisch).&lt;/p&gt;
&lt;h2 id=&quot;allgemein&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#allgemein&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Allgemein&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Generell&lt;/strong&gt;&lt;/em&gt;: &lt;strong&gt;Wenn es keinen wichtigen Grund gibt, sollte nicht von den vorgegebenen Formatvorlagen eines Content Management Systems (CMS) oder Redaktionssystems abgewichen werden. Konkret: Schriften, Farben, Schriftsatz (z.B. linksbündig) werden nicht verändert, da sie bereits optimiert wurden.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;klare-und-einfache-sprache&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#klare-und-einfache-sprache&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Klare und einfache Sprache&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verwenden Sie &lt;strong&gt;einfache Sprache und Formatierung&lt;/strong&gt;, die dem Kontext angemessen ist.&lt;/li&gt;
&lt;li&gt;Schreiben Sie in &lt;strong&gt;kurzen, klaren Sätzen und Absätzen&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Vermeiden Sie die Verwendung unnötig komplexer Wörter und Ausdrücke.&lt;/li&gt;
&lt;li&gt;Erweitern Sie Akronyme bei der ersten Verwendung. Zum Beispiel: Web Content Accessibility Guidelines (WCAG).&lt;/li&gt;
&lt;li&gt;Erwägen Sie die Bereitstellung eines Glossars für Begriffe, die den Leser*innen möglicherweise nicht bekannt sind.&lt;/li&gt;
&lt;li&gt;Erwägen Sie die Verwendung von Bildern, Illustrationen, Video, Audio und Symbolen, um die Bedeutung zu verdeutlichen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weitere Informationen in der &lt;a href=&quot;https://bik-fuer-alle.de/kleine-schreibschule.html&quot; target=&quot;_blank&quot;&gt;Kleinen Schreibschule von BIK für Alle&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;textstrukturierung&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#textstrukturierung&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Textstrukturierung&lt;/h2&gt;
&lt;p&gt;Strukturieren Sie Texte in &lt;strong&gt;sinnvolle Abschnitte&lt;/strong&gt;.
Verwenden Sie &lt;strong&gt;Überschriften, Listen und Absätze&lt;/strong&gt; um Texte zu strukturieren.&lt;/p&gt;
&lt;h3 id=&quot;ueberschriftenhierarchie&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#ueberschriftenhierarchie&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Überschriftenhierarchie&lt;/h3&gt;
&lt;p&gt;Verwenden Sie Überschriften in &lt;strong&gt;aufsteigender Hierarchie&lt;/strong&gt;. Einzelne Überschriftenebenen dürfen nicht übersprungen werden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beispiel&lt;/strong&gt;: Nach einer „Überschrift Ebene 2“ kommt entweder eine weitere mit der Ebene 2, oder eine der Ebene 3.&lt;/p&gt;
&lt;h2 id=&quot;textgestaltung&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#textgestaltung&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Textgestaltung&lt;/h2&gt;
&lt;p&gt;Vermeiden Sie Blocksatz.&lt;/p&gt;
&lt;h2 id=&quot;fremdsprachen-kennzeichnen&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#fremdsprachen-kennzeichnen&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Fremdsprachen kennzeichnen&lt;/h2&gt;
&lt;p&gt;Wenn ein Text Worte oder Sätze in einer anderen Sprache enthält, müssen dieses entsprechend gekennzeichnet werden, damit Bildschirmvorleseprogramme diese in der passenden Sprache vorlesen können. Das geht in HTML mit dem lang-Attribut, oder in einem CMS mit einer entsprechenden Editor-Einstellung.&lt;/p&gt;
&lt;h2 id=&quot;alternativtexte-fuer-fotos-schaubilder-and-grafiken&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#alternativtexte-fuer-fotos-schaubilder-and-grafiken&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Alternativtexte für Fotos, Schaubilder &amp;amp; Grafiken&lt;/h2&gt;
&lt;p&gt;Grafiken und Bilder brauchen &lt;strong&gt;aussagekräftige Alternativtexte&lt;/strong&gt; um für blinde und seheingeschränkte Menschen verständlich zu sein und wahrgenommen werden zu können.&lt;/p&gt;
&lt;p&gt;Unterschiedliche Grafiken erfordern unterschiedliche Alternativ-Texte. Dabei sollte man sich die folgende Frage stellen: „Welchen Zweck erfüllt die Grafik?“&lt;/p&gt;
&lt;p&gt;Die häufigsten Fälle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Die Grafik ist nicht verlinkt und vermittelt Bildinformation (z.B. ein Foto): &lt;code&gt;alt=&amp;quot;Beschreibung des Inhalts des Bildes&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Die Grafik ist verlinkt und verweist z.B. auf einen Artikel: &lt;code&gt;alt=&amp;quot;Artikelüberschrift&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Weitere Fälle können im &lt;a href=&quot;https://www.w3.org/WAI/tutorials/images/decision-tree/&quot; target=&quot;_blank&quot;&gt;Alt-Decision-Tree(Englisch)&lt;/a&gt; nachgeschlagen werden. Weitere &lt;a href=&quot;https://bik-fuer-alle.de/alternativtexte-fuer-grafiken.html&quot; target=&quot;_blank&quot;&gt;Infos zu Alternativtexten auf Deutsch&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;eindeutige-seitentitel&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#eindeutige-seitentitel&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Eindeutige Seitentitel&lt;/h2&gt;
&lt;p&gt;Jede Webseite benötigt einen eigenen Titel, der den Inhalt der jeweiligen Seite eindeutig beschreibt und von anderen Seiten unterscheidet. Meist eignet sich dafür die Hauptüberschrift der Seite.&lt;/p&gt;
&lt;p&gt;Die wichtigsten Informationen kommen an den Anfang, z.B. den Namen der Seite vor dem Namen der Organisation. Bei Seiten, die Teil eines mehrstufigen Prozesses sind, geben Sie den aktuellen Schritt im Seitentitel an.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beispiel&lt;/strong&gt;: Bei einem Artikel names „&lt;em&gt;Das war 2022&lt;/em&gt;“ im Blog der Agentur „&lt;em&gt;Windrich &amp;amp; Sörgel&lt;/em&gt;“ hieße der Titel „&lt;em&gt;Das war 2022 - Windrich &amp;amp; Sörgel&lt;/em&gt;“.&lt;/p&gt;
&lt;h2 id=&quot;sprechende-linktexte&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#sprechende-linktexte&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Sprechende Linktexte&lt;/h2&gt;
&lt;p&gt;Linktexte müssen den &lt;strong&gt;Inhalt/Zweck des Linkziels&lt;/strong&gt; beschreiben.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zu vermeiden&lt;/strong&gt;: „hier klicken“ oder „mehr lesen“.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Besser&lt;/strong&gt;: Der Titel oder die erste Überschrift der Zielseite.
&lt;strong&gt;Bei Downloads&lt;/strong&gt;: Dateityp und -größe angeben, z.B. „Quartalszahlen 2023 (PDF, 20MB)&amp;quot;.&lt;/p&gt;
&lt;h2 id=&quot;tabellen&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#tabellen&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Tabellen&lt;/h2&gt;
&lt;p&gt;Sehbehinderte Menschen, die Bildschirmvorleseprogramme verwenden, erschließen sich Tabellen, indem sie mit der Tastatur durch die Spalten und Zeilen navigieren.
Tabellen sollten daher so einfach wie möglich gestaltet werden.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lieber zwei einfache Tabellen anstelle einer komplexen&lt;/li&gt;
&lt;li&gt;Keine leeren Zellen für zusätzlichen Abstand einzufügen&lt;/li&gt;
&lt;li&gt;Die Zeilen- und Spaltenüberschriften deutlich kennzeichnen&lt;/li&gt;
&lt;li&gt;Tabellen dürfen nur für tabellarische Inhalte (z.B. ein Stundenplan) verwendet werden und auf keinen Fall um damit Layouts zu bauen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;video-and-audio&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#video-and-audio&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Video &amp;amp; Audio&lt;/h2&gt;
&lt;p&gt;Video &amp;amp; Audioinhalte benötigen Untertitel, Transkripte, Audiodeskriptionen und Gebärdensprachenversionen um barrierefrei zu sein.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.w3.org/WAI/media/av/&quot; target=&quot;_blank&quot;&gt;Leitfaden zu audiovisuellen Medien in den WCAG (Englisch)&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;farben&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#farben&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Farben&lt;/h2&gt;
&lt;p&gt;Eigentlich sollten Sie als Redakteur*in nicht mit Farben in Berührung kommen, weil die bereitgestellten Formatvorlagen alle Fälle abdecken und bereits optimiert sind. Diese Regeln gelten für den Fall, dass sie wider Erwarten etwas Neues erfinden müssen.&lt;/p&gt;
&lt;h3 id=&quot;kontraste&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#kontraste&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Kontraste&lt;/h3&gt;
&lt;p&gt;Wenn Sie Grafiken einfügen, oder Texte einfärben, stellen Sie sicher, dass ausreichende Kontraste vorhanden sind. Wenn Vordergrund- und Hintergrundfarben in ihrer Helligkeit zu ähnlich sind, könnte der Kontrast möglicherweise zu gering sein. Hierbei handelt es sich nicht um Fotografien, sondern um Symbole, Schaubilder oder Diagramme. Nutzen Sie einen &lt;a href=&quot;https://contrast-ratio.org&quot; target=&quot;_blank&quot;&gt;Kontrast-Checker&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;farbe-nicht-als-alleiniges-unterscheidungsmerkmal&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#farbe-nicht-als-alleiniges-unterscheidungsmerkmal&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Farbe nicht als alleiniges Unterscheidungsmerkmal&lt;/h3&gt;
&lt;p&gt;Achten Sie darauf, Informationen nicht ausschließlich durch Farben zu vermitteln.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beispiel&lt;/strong&gt;: Beim Anzeigen einer Fehlermeldung oder Warnung sollte diese nicht nur durch Farbe (Gelb/Rot) zu erkennen sein, sondern auch mit einem Icon gekennzeichnet werden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Beispiel 2&lt;/strong&gt;: Bei einem Schaubild mit verschiedenen Kurven sollte die Unterscheidung zwischen den Kurven nicht nur durch Farben erfolgen, sondern auch durch unterschiedliche Darstellungsformen wie beispielsweise gestrichelte oder gepunktete Linien.&lt;/p&gt;
&lt;h2 id=&quot;tools&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#tools&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Tools&lt;/h2&gt;
&lt;p&gt;Um zu überprüfen, ob Ihre Inhalte barrierefrei sind, können Sie verschiedene Tools verwenden. Hier sind zwei Beispiele:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://sa11y.netlify.app/&quot; target=&quot;_blank&quot;&gt;Sa11y&lt;/a&gt;&lt;br&gt;
Bookmarklet, aber auch Plugin für diverse CMS (Wordpress, Joomla), das Hinweise auf Barrieren gibt.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://itmaybejj.github.io/editoria11y/demo/&quot; target=&quot;_blank&quot;&gt;Editoria11y&lt;/a&gt;&lt;br&gt;
Kann in CMS integriert werden und gibt Feedback zu möglichen Barrieren.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;quellen&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/leitfaden-barrierefreiheit-fuer-redakteurinnen/#quellen&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Quellen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.w3.org/WAI/roles/writers/&quot; target=&quot;_blank&quot;&gt;WAI: Resources for Content Writers (Englisch)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.w3.org/WAI/tips/writing/&quot; target=&quot;_blank&quot;&gt;WAI: Writing for Web Accessibility (Englisch)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.w3.org/WAI/tutorials/images/decision-tree/&quot; target=&quot;_blank&quot;&gt;WAI: An alt Decision Tree (Englisch)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bik-fuer-alle.de/webinhalte-barrierefrei-pflegen.html&quot; target=&quot;_blank&quot;&gt;Webinhalte barrierefrei pflegen - ein Leitfaden für Online-Redakteure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bik-fuer-alle.de/files/pdf/01_Kurzeinstieg%20fuer%20Redakteure.pdf&quot; target=&quot;_blank&quot;&gt;Kurzeinstieg: Barrierefreiheit für Webredakteure (PDF, 0,6MB)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.accede-web.com/wp-content/uploads/accessibility-guidelines-editors-template.pdf&quot; target=&quot;_blank&quot;&gt;Accessibility guidelines for editors (Englisch, PDF, 1,3MB)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Get rid of annoying .DS_Store files in all your Git repositories</title>
		<link href="https://moritzglantz.de/blog/posts/get-rid-of-ds-store-files-in-git-repositories-on-mac/?source=feedxmllink"/>
		<updated>2024-01-30T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/get-rid-of-ds-store-files-in-git-repositories-on-mac/</id>
		<content type="html">&lt;p&gt;Don’t you love it when every Git project you start on your Mac needs a &lt;code&gt;.gitignore&lt;/code&gt; file before anything else, because the .DS_Store files are spawning and haunting your machine like a wandering ghost from the past? 👻&lt;/p&gt;
&lt;h2 id=&quot;the-solution-global-gitignore&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/get-rid-of-ds-store-files-in-git-repositories-on-mac/#the-solution-global-gitignore&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The solution: Global &lt;code&gt;.gitignore&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;You can configure Git to &lt;em&gt;globally&lt;/em&gt; ignore certain files &lt;strong&gt;across all repositories on your system&lt;/strong&gt;. To do this, you can set up a &lt;strong&gt;global .gitignore file&lt;/strong&gt;. This file will contain patterns for files or directories that you want Git to ignore across all your projects.&lt;/p&gt;
&lt;p&gt;Here&#39;s how you can create a global &lt;code&gt;.gitignore&lt;/code&gt; file and ignore .DS_Store files:&lt;/p&gt;
&lt;p&gt;Open your terminal and create a global &lt;code&gt;.gitignore&lt;/code&gt; file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;touch ~/.gitignore_global
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Open the global &lt;code&gt;.gitignore&lt;/code&gt; file in a text editor of your choice. You can use a command-line text editor like nano or vim, or use a graphical text editor such as TextEdit or the wonderful &lt;a href=&quot;https://sindresorhus.com/plain-text-editor&quot; target=&quot;_blank&quot;&gt;Plain Text Editor&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano ~/.gitignore_global
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add the following line to the file to ignore .DS_Store files:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.DS_Store
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Save and exit the editor.
Now, configure Git to use the global &lt;code&gt;.gitignore&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git config --global core.excludesfile ~/.gitignore_global
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;That’s it!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From now on, Git will ignore any file or directory specified in your global &lt;code&gt;.gitignore&lt;/code&gt; file across all your repositories. Make sure that you don&#39;t have local .gitignore files in your repositories that conflict with the global one.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>YouTube to YewTub.be Redirect plugin</title>
		<link href="https://moritzglantz.de/blog/posts/yewtube-redirect-firefox-add-on/?source=feedxmllink"/>
		<updated>2024-01-27T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/yewtube-redirect-firefox-add-on/</id>
		<content type="html">&lt;p&gt;“YewTube Redirect”, a browser add-on that simplifies the process of redirecting YouTube links to the privacy-focused and ad-free YewTube platform. Say goodbye to ads and tracking while enjoying your favorite content hassle-free!&lt;/p&gt;
&lt;h2 id=&quot;another-day-another-plugin-add-on-extension&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/yewtube-redirect-firefox-add-on/#another-day-another-plugin-add-on-extension&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Another day, another [plugin|add-on|extension]!&lt;/h2&gt;
&lt;p&gt;Yesterday, I learned about &lt;a href=&quot;https://yewtu.be&quot; target=&quot;_blank&quot;&gt;YewTu.be&lt;/a&gt;, an alternative, privacy-focused, and ad-free front end for YouTube. It basically works like this: You take a normal YouTube link and replace the &lt;code&gt;www.youtube.com&lt;/code&gt;-part of the URL by &lt;code&gt;yewtu.be&lt;/code&gt; and land on a site that shows the video or channel, that is ad-free and does not track you. You also can subscribe to channels via RSS feed!&lt;/p&gt;
&lt;p&gt;But is that manual link replacement something a computer can do better than me? Thanks for asking! That’s why I built “YewTube Redirect”, a browser add-on that takes care of the hard work for you.&lt;/p&gt;
&lt;p&gt;It is available in the Firefox Add-On store as of now and reading for testing!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/de/firefox/addon/yewtube-redirect/&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;YewTube Redirect Firefox Add-On&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to view and contribute to the code, you can find it on &lt;a href=&quot;https://github.com/MoritzGiessmann/yewtube-redirect/&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;&lt;strong&gt;Update 29.02.2024&lt;/strong&gt;: I was made aware that the Chrome plugin may not work. I will take a look at it as soon as I can.&lt;/ins&gt;&lt;del&gt;
Theres now also a &lt;a href=&quot;https://moritzglantz.de/blog/posts/yewtube-redirect-firefox-add-on/yewtube-redirect-chrome.zip&quot; download=&quot;&quot;&gt;Chrome version&lt;/a&gt; of this plugin. It is not in the store, because Manifest v3 and stuff.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;And consider &lt;a href=&quot;https://yewtu.be/donate&quot; target=&quot;_blank&quot;&gt;donating to YewTube&lt;/a&gt;. They have server costs that your contribution can help cover.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Über die Beständigkeit von Denk-Systemen</title>
		<link href="https://moritzglantz.de/blog/posts/ueber-die-bestaendigkeit-von-denksystemen/?source=feedxmllink"/>
		<updated>2024-01-22T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/ueber-die-bestaendigkeit-von-denksystemen/</id>
		<content type="html">&lt;p&gt;Wie beständig ist unser Glaube an geordnete Strukturen? Ein Blick auf das Streben nach Ordnung und die Herausforderungen, wenn Realität nicht in vorgefertigte Kästchen passt und warum die zärtliche Umarmung des Chaos vielleicht einfach ok ist.&lt;/p&gt;
&lt;p&gt;Mein Leben hat eine sich wiederholende Konstante: &lt;strong&gt;Der Glaube an allgemeingültige, wohlgeformte Systeme&lt;/strong&gt; und deren Ordnung und Beständigkeit. Seien es Computer, Naturwissenschaften, oder Musik. Immer &lt;strong&gt;suche ich nach Regeln&lt;/strong&gt;, gehe von Gesetzmäßigkeiten aus wo oftmals gar keine sind. Zu dieser Konstante gehört auch, dass dieser Glaube für die meisten Systeme irgendwann ins Wanken gerät und oftmals komplett zerstört wird.&lt;/p&gt;
&lt;p&gt;Etwas in mir wünscht sich, dass alle Dinge geordnet, wohlgeformt und standardisiert sind um ein möglichst vorhersehbares Bild der Welt zu generieren. Der Geist sehnt sich nach Ruhe und Klarheit.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Dabei ist nur eins beständig: Der Wandel.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Je genauer man hin sieht, desto klarer wird, dass Systeme nur Kästchen sind, in die ich versuche &lt;em&gt;die Realität einzusortieren&lt;/em&gt; und sie dadurch vermeintlich besser zu verstehen. Dabei passt sie nur selten hinein. Die Kästchen geben zudem keinen Aufschluss über das Ding, das man versucht &lt;a href=&quot;https://www.youtube.com/watch?v=rZ3ETK7-ZM8&quot; target=&quot;_blank&quot;&gt;hinein zu pressen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wahl-Computer kommen durch kosmische Strahlung &lt;a href=&quot;https://en.wikipedia.org/wiki/Electronic_voting_in_Belgium#Reported_problems&quot; target=&quot;_blank&quot;&gt;aus dem Tritt&lt;/a&gt;, bei Musik findet sich &lt;a href=&quot;https://www.musicradar.com/news/why-imperfection-is-the-secret-to-making-better-music&quot; target=&quot;_blank&quot;&gt;Schönheit in der Imperfektion&lt;/a&gt; und Naturwissenschaften finden Dinge, die es laut ihren eigenen Regeln und Systemen &lt;a href=&quot;https://t3n.de/news/big-ring-diese-kosmische-megastruktur-duerfte-es-gar-nicht-geben-1602305/&quot; target=&quot;_blank&quot;&gt;nicht geben dürfte&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nur weil um ein Produkt eine schöne Verpackung, der Sensor in einem hübschen Platikkästchen versteckt ist oder wir viel Geld für etwas bezahlen, werden die Ergebnisse nicht korrekter, besser vorhersehbarer. Der Sensor im Kästchen kann trotzdem Quatsch messen, oder ein Bit flippen, Börsen-Kenner*innen irren sich und ein leicht versetzter Schlag eines Beats lässt den Song erst künstlerisch schön klingen.&lt;/p&gt;
&lt;p&gt;Warum schreibe ich das hier? Um mich selbst dran zu erinnern, dass am Ende alles ein wunderbares Chaos ist, dem man zwar in Teilen Ordnung entlocken kann, das aber trotzdem  immer die Überhand behalten wird. Und das ist ok.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Firefox Add-On to remove target=&quot;_blank&quot;</title>
		<link href="https://moritzglantz.de/blog/posts/firefox-add-on-to-remove-target-blank/?source=feedxmllink"/>
		<updated>2024-01-21T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/firefox-add-on-to-remove-target-blank/</id>
		<content type="html">&lt;p&gt;I made a firefox plugin, that ensures that when you click on links, they open in the same browser tab instead of creating new tabs, therefore removing &lt;code&gt;target=&amp;quot;_blank&amp;quot;&lt;/code&gt; from websites.&lt;/p&gt;
&lt;p&gt;There are no Chrome or Safari versions of this yet. Let me know if there is the need.&lt;/p&gt;
&lt;p&gt;This is a first draft. It removes &lt;code&gt;target=&amp;quot;_blank&amp;quot;&lt;/code&gt; on page load as well as dynamic rendered content. Let me know what you think:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/de/firefox/addon/no-target-blank/&quot; class=&quot;button ✨✨&quot; target=&quot;_blank&quot;&gt;No-Target-Blank Plugin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S.: I find the terms in Browser Plugin World confusing. There are Add-Ons, Extensions, Plugins and so forth. At least Chrome and Firefox Extensions/Add-Ons share most of the code standards.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;edit 21.01.2024 – 12:06&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.P:S: I made this after some discussions with &lt;a href=&quot;https://notiz.blog&quot; target=&quot;_blank&quot;&gt;Matthias Pfefferle&lt;/a&gt; about whether &lt;code&gt;target=&amp;quot;_blank&amp;quot;&lt;/code&gt; is a good idea or not, so all the plagued people can finally find relief.&lt;/em&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Checkbox Tetris – An AI experiment</title>
		<link href="https://moritzglantz.de/blog/posts/checkbox-tetris-ai-experiment/?source=feedxmllink"/>
		<updated>2024-01-18T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/checkbox-tetris-ai-experiment/</id>
		<content type="html">&lt;p&gt;Last night, I thought I might challenge &lt;a href=&quot;https://chat.openai.com&quot; target=&quot;_blank&quot;&gt;ChatGPT&lt;/a&gt; to create something complex. A game. A game everybody knows. Tetris, but as a website using checkboxes to form the grid and the blocks of the game.&lt;/p&gt;
&lt;p&gt;I am not sure if checkbox Tetris is a new idea. I think I might have seen something like it before, but I am not sure.&lt;/p&gt;
&lt;h2 id=&quot;stranger-in-a-strange-land&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/checkbox-tetris-ai-experiment/#stranger-in-a-strange-land&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Stranger in a strange land&lt;/h2&gt;
&lt;p&gt;To be honest, there were some strange moments while prompting. For example the robot thought it might be a good idea to hide the checkboxes with CSS. When I asked the robot how I am supposed to play a game if the playing blocks are invisible it was like shrugging and saying: “Alright, human, if you really need to see something before you play, I’m gonna give it to you,… you primate.” That’s not what it actually said, but it felt like it.&lt;/p&gt;
&lt;h2 id=&quot;the-result&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/checkbox-tetris-ai-experiment/#the-result&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The result&lt;/h2&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/nUBudivJwi-1400.avif 1400w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/nUBudivJwi-1400.webp 1400w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/nUBudivJwi-1400.gif 1400w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/nUBudivJwi-1400.jpeg&quot; alt=&quot;A tetris game inside a browser using checkboxes forming a grid. Blocks are checked checkboxes, unchecked ones are empty grid blocks. It has a button that says &#39;start game&#39;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1400&quot; height=&quot;902&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;A checkbox-based Tetris game with a score counter, arrow based controls and even a high score board that saves scores to the local storage. Does it still have &lt;s&gt;bugs&lt;/s&gt; &lt;ins&gt;happy accidents&lt;/ins&gt;? Yes. No it is not perfect. But could you have built it in three hours?&lt;/p&gt;
&lt;p&gt;The only thing I changed manually were some styles to make the grid look better and I added some text on how to play it.&lt;/p&gt;
&lt;p&gt;If you want, you can read &lt;a href=&quot;https://chat.openai.com/share/38a868e3-873c-4cea-a321-23e55b286290&quot; target=&quot;_blank&quot;&gt;the full conversation with ChatGPT&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;demo&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/checkbox-tetris-ai-experiment/#demo&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Demo!&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/checkbox-tetris/&quot; target=&quot;_blank&quot; class=&quot;button&quot;&gt;✅ Play Checkbox Tetris!&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;transformative-power&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/checkbox-tetris-ai-experiment/#transformative-power&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Transformative power&lt;/h2&gt;
&lt;p&gt;I know. You heard it a million times already. “AI is gonna change the world as we know it, yadda yadda yadda”, but whether you like it or not: A technology which is able to write code that would’ve taken somebody who did not write the same program before, days, if not weeks, &lt;strong&gt;will transform the world&lt;/strong&gt;. If you’re not using this tool, somebody else will. And they will be faster than you. Maybe not better, but faster.&lt;/p&gt;
&lt;h2 id=&quot;power-to-the-people&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/checkbox-tetris-ai-experiment/#power-to-the-people&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Power to the people&lt;/h2&gt;
&lt;p&gt;I don’t want to live in a world where monopolists have all the power, all the resources, all the knowledge. And to be honest having only a few players in this game right now, where none of them appears to be on the side of the people and 💵 appear to be the only motivation, we need to have working alternatives, which are open source and open infrastructure. And this is much worse than other industries. We’re talking about only a hand full of players here. Since I don’t believe the AI companies will change their course, AI &lt;em&gt;has to be regulated by the governments&lt;/em&gt; of the world. And they have to regulate it &lt;em&gt;real hard&lt;/em&gt;! ⚒️&lt;/p&gt;
&lt;p&gt;I wrote this post while waiting for the prompts to resolve. The longer the code became, the slower the answers came in, so I had some time to think about the unbelievable craziness that this technology brings with it.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Contrast-Ratio.org – WCAG color contrast checker ✅</title>
		<link href="https://moritzglantz.de/blog/posts/contrast-ratio-org-wcag-color-contrast-checker/?source=feedxmllink"/>
		<updated>2024-01-16T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/contrast-ratio-org-wcag-color-contrast-checker/</id>
		<content type="html">&lt;p&gt;I really really loved &lt;a href=&quot;https://lea.verou.me/&quot; target=&quot;_blank&quot;&gt;Lea Verou’s&lt;/a&gt; color contrast checker! I linked it in lots of my talks, I listed it as useful resource in lots of places and recommended it every time someone asked me about useful accessibility tools.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://color-contrast.org/&quot; target=&quot;blank&quot;&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/mQ7h2HIHXl-1400.avif 1400w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/mQ7h2HIHXl-1400.webp 1400w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/mQ7h2HIHXl-1400.gif 1400w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/mQ7h2HIHXl-1400.jpeg&quot; alt=&quot;Screenshot of contrast-ratio.org. A page that is split into two sides with different colors. It has two inputs for the two colors and a circle in the middle that shows the result, if the combination passes the WCAG criteria.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1400&quot; height=&quot;780&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is great if you want to check the contrast of background and text color against the &lt;a href=&quot;https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html&quot; target=&quot;_blank&quot;&gt;WCAG color contrast requirements&lt;/a&gt;. Just put in two colors and see the result. You can even create a link of color combinations since the two colors get added to the &lt;a href=&quot;https://contrast-ratio.org/#PapayaWhip-on-HotPink&quot; target=&quot;_blank&quot;&gt;url&lt;/a&gt; in form of a fragment identifier. So thank you Lea for this stellar work of yours. It stood the test of time! ✨&lt;/p&gt;
&lt;p&gt;But things have changed. The original page was sold, and the new owners made a SEO gateway out of the site. Don’t get me wrong, the checker is still intact, but the site now does not look like it is about the tool anymore.&lt;/p&gt;
&lt;p&gt;Fortunately the original tool was published under the MIT license and the code is still &lt;a href=&quot;https://github.com/siege-media/contrast-ratio&quot; target=&quot;_blank&quot;&gt;on GitHub&lt;/a&gt;. So I made &lt;a href=&quot;https://github.com/MoritzGiessmann/contrast-ratio&quot; target=&quot;_blank&quot;&gt;a fork&lt;/a&gt;, reverted it to the original style and published it under… &lt;br&gt;&lt;a class=&quot;button mt-1 ✨✨&quot; href=&quot;https://contrast-ratio.org&quot; target=&quot;_blank&quot;&gt;Contrast-Ratio.Org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This site will never get sold nor will there be ads on it. I just put a little &lt;a href=&quot;https://ko-fi.com/J3J3JAWO1&quot; target=&quot;_blank&quot;&gt;Ko-Fi support button&lt;/a&gt; there if you want to support me covering the domain and hosting expenses.&lt;/p&gt;
&lt;p&gt;Fun thing: This is the first time in my life I purchased a domain name and put something productive on it at the same day!&lt;/p&gt;
&lt;p&gt;All thanks go to Lea and her great work! And definitely check out her &lt;a href=&quot;https://lea.verou.me/projects/&quot; target=&quot;_blank&quot;&gt;other work&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;That’s it for now. Happy color testing!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Using AI for Accessibility: Breaking Down Barriers in Content Creation?!</title>
		<link href="https://moritzglantz.de/blog/posts/using-ai-for-accessibility/?source=feedxmllink"/>
		<updated>2024-01-13T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/using-ai-for-accessibility/</id>
		<content type="html">&lt;p&gt;Is the using AI a good idea when it comes to building accessible experiences on the web? Can tools like &lt;a href=&quot;https://chat.openai.com/&quot; target=&quot;_blank&quot;&gt;ChatGPT&lt;/a&gt; or &lt;a href=&quot;https://platform.openai.com/docs/guides/vision&quot; target=&quot;_blank&quot;&gt;Vision&lt;/a&gt; help us to build better websites and apps, or can they be considered harmful?&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/rE22Txok58-1400.avif 1400w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/rE22Txok58-1400.webp 1400w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/rE22Txok58-1400.gif 1400w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/rE22Txok58-1400.jpeg&quot; alt=&quot;Screenshot of the ice cubes mastodon iPhone client on the „add alt text“ screen. Showing a photo and an AI generated alt text which exactly describes the image beneath: A golden decorative peacock figure on a white pedestal, placed on a glass-top side table against an ornate red and gold wallpaper. A wooden wall-mounted shelf with intricate designs is visible above, and a framed mirror can be seen to the right.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1400&quot; height=&quot;785&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;What about this image? Would you consider this AI-generated alt text good? Suitable? Appropriate? Or maybe inappropriate, bad or even harmful?
This alternative text was created in seconds using the &lt;a href=&quot;https://apps.apple.com/us/app/ice-cubes-for-mastodon/id6444915884&quot; target=&quot;_blank&quot;&gt;Ice Cubes Mastodon client&lt;/a&gt; which itself uses OpenAI’s “Vision”.&lt;/p&gt;
&lt;h2 id=&quot;ai-considered-harmful&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/using-ai-for-accessibility/#ai-considered-harmful&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; AI considered harmful&lt;/h2&gt;
&lt;p&gt;I’ve seen lots of people being critical of the development of AI, even rejecting it outright. And don’t get me wrong; there are lots of examples where &lt;a href=&quot;https://front-end.social/@heydon/111743110743971774&quot; target=&quot;_blank&quot;&gt;the results of AI lead to dubious&lt;/a&gt; and even &lt;a href=&quot;https://www.washingtonpost.com/technology/interactive/2023/ai-generated-images-bias-racism-sexism-stereotypes/&quot; target=&quot;_blank&quot;&gt;horrible, biased&lt;/a&gt;, racist, misogynist and sexist results, not to speak of the environmental costs of training and using AI powered systems.&lt;/p&gt;
&lt;p&gt;Maybe you remember the hype about &lt;a href=&quot;https://v0.dev&quot; target=&quot;_blank&quot;&gt;v0.dev&lt;/a&gt; from Vercel?! Praised as a tool that could magically create “copy-paste-friendly React code” by giving it a text prompt like “webapp for create dynamic forms CRM”, it took minutes to see that it could not produce &lt;a href=&quot;https://v0.dev/t/rpaxVx1MDUM&quot; target=&quot;_blank&quot;&gt;accessible results&lt;/a&gt; &lt;a href=&quot;https://nitter.net/AshleeMBoyer/status/1702367107130720534&quot; target=&quot;_blank&quot;&gt;at all&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And how could it? Large language models like ChatGPT are just good at predicting the next word or phrase based on the input it “learned” from. When it comes to HTML, they learned from the reality out there. We have known since long before the &lt;a href=&quot;https://webaim.org/projects/million/&quot; target=&quot;_blank&quot;&gt;WebAim Million&lt;/a&gt; that the web is not in a good state as far as accessibility is concerned.&lt;/p&gt;
&lt;p&gt;But despite all the drawbacks, are there areas in which AI systems excel?&lt;/p&gt;
&lt;h2 id=&quot;lowering-the-barrier&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/using-ai-for-accessibility/#lowering-the-barrier&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Lowering the barrier&lt;/h2&gt;
&lt;p&gt;What I hear all the time, when talking to people about providing accessible content, is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“We don’t have time/resources for this”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You could argue that accessibility is important enough to make time and provide resources. To learn how to write good alternative texts and to take the time to write an easy language version of all texts. And I would agree. Accessibility should play a much more important role in all our lives. It should be the norm, nothing special. But to most people it simply is not nor will it ever be.&lt;/p&gt;
&lt;p&gt;What if we set the barrier for providing accessible content so ridiculously low, that everybody not providing alt texts felt a little ashamed of themselves, because they didn’t even find the time to press one simple button?&lt;/p&gt;
&lt;h3 id=&quot;alt-texts&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/using-ai-for-accessibility/#alt-texts&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Alt texts&lt;/h3&gt;
&lt;p&gt;There’s nothing like a handcrafted, well-written alt text. When I post a photo, I know exactly its context, why I post it, and its main motif. I can write the perfect alt text if I have the time, a good keyboard and all the knowledge. But as soon as I leave the door the display of my smartphone raises a small, but significant barrier for me. I don’t like typing long texts on a software keyboard nor, am I good at it. If I have the opportunity to let a robot do the hard work and I am just the overseer who corrects the mistakes, I am all in.&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/ndzOXXR0RT-1400.avif 1400w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/ndzOXXR0RT-1400.webp 1400w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/ndzOXXR0RT-1400.gif 1400w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/ndzOXXR0RT-1400.jpeg&quot; alt=&quot;Screenshot of using an AI for automatic alt text: https://huggingface.co/Salesforce/blip-image-captioning-large - Image-to-Text - Computation time on cpu: 2.292s- then an image which shows what the following auto generated alt-text says: people standing on a cliff watching a large wave crash over a lighthouse&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1400&quot; height=&quot;946&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;Yes, there are cases where no alt text is better than a bad one, or better than one at all. But isn’t an automatic alt text better than nothing &lt;strong&gt;most of the time&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;I’d love to hear from people who use screen readers on a daily basis. What do you think about generated alt texts?&lt;/p&gt;
&lt;h3 id=&quot;easy-language&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/using-ai-for-accessibility/#easy-language&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Easy language&lt;/h3&gt;
&lt;p&gt;Easy language is one of the pain points of many websites. For example, every government website in Germany has to be accessible. Most of them lack easy language. Can easy language provided by an AI be any good?&lt;/p&gt;
&lt;p&gt;There are models which are specifically trained to deliver easy language, but for a short test I took ChatGPT and gave it this prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Write two sentences about how ai creates easy language from text&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Its first answer:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI demonstrates proficiency in transforming complex language into easily understandable text, catering to a diverse audience. By simplifying vocabulary and sentence structures, AI facilitates a more inclusive reading experience for individuals with varying levels of linguistic proficiency.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, that sounds pretty intimidating, doesn’t it? So I asked it to…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;make this text easier&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ChatGPT:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI is really good at making hard words and sentences easy to understand, helping lots of different people read and understand things better. It takes complicated language and turns it into simpler words and sentences, making it easier for everyone to get the information they need.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;even easier&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ChatGPT:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI is great at making difficult words and sentences simple. It helps many people read and understand things better by turning hard language into easier words and sentences.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I did this in a matter of minutes. What do you think? Did it turn out any good? Would it be good enough to put it on a website? Would it be better than no easy language at all?&lt;/p&gt;
&lt;p&gt;Are there any other good examples where AI could help us more accessible websites? &lt;a href=&quot;https://mastodon.social/@MoritzGiessmann&quot; target=&quot;_blank&quot;&gt;Tell me!&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;the-human-touch&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/using-ai-for-accessibility/#the-human-touch&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; The human touch&lt;/h2&gt;
&lt;p&gt;Despite AI&#39;s capabilities, human supervision is crucial. AI models may occasionally misinterpret nuances, making human oversight essential for refining content, avoiding biases, ensuring accuracy, relevance, and cultural sensitivity.&lt;/p&gt;
&lt;p&gt;AI will not go away soon. Let’s be open to the future, while keeping a critical eye.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Samsung Smart TV Backlight turns off on black screen</title>
		<link href="https://moritzglantz.de/blog/posts/samsung-tv-backlight-turns-off-on-black-screen/?source=feedxmllink"/>
		<updated>2024-01-10T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/samsung-tv-backlight-turns-off-on-black-screen/</id>
		<content type="html">&lt;p&gt;Are you experiencing issues with the backlight of your Samsung Smart TV turning off when the screen goes black, such as during the credits of a movie? If this annoyance resonates with you, as it does with me, I might have a solution.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://moritzglantz.de/blog/posts/samsung-tv-backlight-turns-off-on-black-screen/#solution&quot;&gt;Gimme the solution already&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id=&quot;problem&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/samsung-tv-backlight-turns-off-on-black-screen/#problem&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Problem&lt;/h2&gt;
&lt;p&gt;I have an almost ten year old Samsung Smart TV (JU6550). Despite its age, it still works well, and unlike many Samsung TVs owned by people I know, it has not developed any strange issues yet (aside from the quirks it had from the beginning). I am not sure this issue was always there or if it started happening some time after buying it. Some day I started noticing, that the backlight turns off when there’s a black image for about half a second and turns back on when there’s something on the screen that isn’t pure black. For example black cut scenes, or the credits of a movie.&lt;/p&gt;
&lt;h2 id=&quot;solution&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/samsung-tv-backlight-turns-off-on-black-screen/#solution&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Solution&lt;/h2&gt;
&lt;p&gt;After fiddling around with various settings, I found out that if I set &lt;strong&gt;the brightness to 48&lt;/strong&gt; and above, the backlight won’t turn off during black scenes. This number may vary for different TV models. It is not an optimal solution since I find the brightness a little too bright on 48, but hey, it’s better than nothing.&lt;/p&gt;
&lt;h2 id=&quot;shame-on-you-samsung&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/samsung-tv-backlight-turns-off-on-black-screen/#shame-on-you-samsung&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Shame on you, Samsung&lt;/h2&gt;
&lt;p&gt;I mean. Why? How? And WHY? 🫴
That’s almost as weird as putting the menu “General” as the third last entry of a list of over 10 items (sic!).&lt;/p&gt;
&lt;p&gt;That’s all. I hope it helped.&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Cyberpunkish Firefox Theme</title>
		<link href="https://moritzglantz.de/blog/posts/cyberpunkish-firefox-theme/?source=feedxmllink"/>
		<updated>2024-01-05T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/cyberpunkish-firefox-theme/</id>
		<content type="html">&lt;p&gt;When I started using &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;VSCode&lt;/a&gt; as my main editor back in 2018 I was searching for a theme to fit my needs: high contrast, dark and not boring. The I stumbled upon the &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=max-SS.cyberpunk&quot; target=&quot;_blank&quot;&gt;VSCode Cyberpunk theme&lt;/a&gt; and started using it as a joke. Half a year later I was still using it as my main theme and the fun became serious (or as we say in German: „&lt;span lang=&quot;de&quot;&gt;Aus Spaß wurde Ernst.&lt;/span&gt;“).&lt;/p&gt;
&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://moritzglantz.de/img/D9ateDqOuf-1200.avif 1200w&quot;&gt;&lt;source type=&quot;image/webp&quot; srcset=&quot;https://moritzglantz.de/img/D9ateDqOuf-1200.webp 1200w&quot;&gt;&lt;source type=&quot;image/gif&quot; srcset=&quot;https://moritzglantz.de/img/D9ateDqOuf-1200.gif 1200w&quot;&gt;&lt;img src=&quot;https://moritzglantz.de/img/D9ateDqOuf-1200.png&quot; alt=&quot;Screenshot of firefox with a theme in purple, neon green and light green colors, high contrast, but a little odd.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1200&quot; height=&quot;882&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;After lot’s of head shaking from colleagues I knew this was not a joke anymore and I decided I needed even more these colors in my world. As a heavy Firefox user then, I decided to make a Firefox theme from the VSCode Cyberpunk theme. Check it out!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/cyberpunkish/&quot; target=&quot;_blank&quot; class=&quot;button ✨✨&quot;&gt;Cyberpunk Firefox Theme&lt;/a&gt;&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>Deploy 11ty site using rsync</title>
		<link href="https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/?source=feedxmllink"/>
		<updated>2024-01-04T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/</id>
		<content type="html">&lt;p&gt;I was in need of an automatic CLI-deployment for my &lt;a href=&quot;https://www.11ty.dev/&quot; target=&quot;_blank&quot;&gt;11ty&lt;/a&gt; blog right here and I solved it using &lt;code&gt;rsync&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;rsync&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#rsync&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Rsync?&lt;/h2&gt;
&lt;p&gt;Rsync (Remote Sync) is a command-line utility for file synchronization and data transfer between local and remote systems. &lt;code&gt;rsync&lt;/code&gt; is often used for backups, so it can for example just upload the files that have changed or delete files that are no longer existent.&lt;/p&gt;
&lt;h2 id=&quot;prerequisites&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#prerequisites&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Prerequisites&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Your system supports &lt;code&gt;rsync&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The server is &lt;a href=&quot;https://en.wikipedia.org/wiki/Secure_Shell&quot; target=&quot;_blank&quot;&gt;SSH&lt;/a&gt; capable&lt;/li&gt;
&lt;li&gt;Your server in supports &lt;code&gt;rsync&lt;/code&gt; (&lt;a href=&quot;https://uberspace.de/&quot; target=&quot;_blank&quot;&gt;Uberspace&lt;/a&gt; in my case)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;steps&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#steps&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Steps&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Make sure &lt;code&gt;rsync&lt;/code&gt; is working on your system. It should be pre-installed on MacOS and Linux. On Windows you could use &lt;a href=&quot;https://learn.microsoft.com/en-us/windows/wsl/install&quot; target=&quot;_blank&quot;&gt;WSL&lt;/a&gt; or &lt;a href=&quot;https://www.cygwin.com/packages/summary/rsync.html&quot; target=&quot;_blank&quot;&gt;Cygwin with rsync&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rsync --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This should output a version.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add a deploy step to your npm scripts&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;quot;scripts&amp;quot;: {
    &amp;quot;deploy&amp;quot;: &amp;quot;rsync -avz _site/ user@your-server:/path/to/destination&amp;quot;
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here’s an &lt;a href=&quot;https://explainshell.com/explain?cmd=rsync+-avz&quot; target=&quot;_blank&quot;&gt;explanation of the &lt;code&gt;-avz&lt;/code&gt; parameters&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Replace &lt;code&gt;user@your-server:/path/to/destination&lt;/code&gt; with your server details and destination path&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the deploy script…&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm run deploy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…and watch the magic happen! ✨&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;extra-convenience-functions&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#extra-convenience-functions&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Extra convenience functions&lt;/h2&gt;
&lt;p&gt;Since we’re all lazy, here are some convenience functions to make your life even easier.&lt;/p&gt;
&lt;h3 id=&quot;build-before-uploading&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#build-before-uploading&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Build before uploading&lt;/h3&gt;
&lt;p&gt;Just add a build step before the &lt;code&gt;rsync&lt;/code&gt; part.&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;&quot;deploy&quot;: &quot;&lt;mark&gt;npm run build &amp;&amp; &lt;/mark&gt; rsync -avz _site/ user@your-server:/path/to/&quot;&lt;/code&gt;
&lt;/pre&gt;
&lt;h3 id=&quot;clean-up-local-files-before-building&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#clean-up-local-files-before-building&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Clean up local files before building&lt;/h3&gt;
&lt;p&gt;⚠️ &lt;strong&gt;DANGER:&lt;/strong&gt; Only do this if you’re sure there are &lt;em&gt;only&lt;/em&gt; &lt;strong&gt;11ty generated files&lt;/strong&gt; inside your &lt;code&gt;_sites&lt;/code&gt; folder!&lt;/p&gt;
&lt;p&gt;Deleting the generated folder makes sure you don’t carry any old versions of CSS files or other stuff.&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;&quot;deploy&quot;: &quot;&lt;mark&gt;rm -rf _site&lt;/mark&gt; &amp;&amp; npm run build &amp;&amp; rsync -avz _site/ user@your-server:/path/to/&quot;&lt;/code&gt;
&lt;/pre&gt;
&lt;h3 id=&quot;delete-old-files-on-the-server-when-deploying&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#delete-old-files-on-the-server-when-deploying&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Delete old files on the server when deploying&lt;/h3&gt;
&lt;p&gt;⚠️ &lt;strong&gt;DANGER:&lt;/strong&gt; Only do this if you’re sure there are &lt;em&gt;only&lt;/em&gt; &lt;strong&gt;11ty generated files&lt;/strong&gt; on your remote location!&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;--delete&lt;/code&gt; parameter makes sure old files are deleted.&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;&quot;deploy&quot;: &quot;rsync -avz &lt;mark&gt;--delete&lt;/mark&gt; _site/ user@your-server:/path/to/&quot;&lt;/code&gt;
&lt;/pre&gt;
&lt;h3 id=&quot;ssh-key&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#ssh-key&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; SSH key&lt;/h3&gt;
&lt;p&gt;If you don’t want to type your password on every deployment,  you might want to set ssh keys for your connection. Here’s how that works at &lt;a href=&quot;https://lab.uberspace.de/howto_ssh-keys/&quot; target=&quot;_blank&quot;&gt;Uberspace&lt;/a&gt;, but it might work differently on other hosts.&lt;/p&gt;
&lt;h2 id=&quot;finished-version-with-everything&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/deploy-11ty-via-rsync/#finished-version-with-everything&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Finished version with everything&lt;/h2&gt;
&lt;pre&gt;
&lt;code&gt;&quot;deploy&quot;: &quot;rm -rf _site &amp;&amp; npm run build &amp;&amp; rsync -avz --delete _site/ user@your-server:/path/to/&quot;&lt;/code&gt;
&lt;/pre&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
	
	<entry>
		<title>👋 Welcome to my digital castle!</title>
		<link href="https://moritzglantz.de/blog/posts/my-digital-castle/?source=feedxmllink"/>
		<updated>2024-01-03T00:00:00Z</updated>
		<id>https://moritzglantz.de/blog/posts/my-digital-castle/</id>
		<content type="html">&lt;p&gt;Almost 10 years after I wrote the &lt;a href=&quot;https://www.dead-pixel.de/align-texts-at-the-baseline-of-different-font-webfonts/&quot; target=&quot;_blank&quot;&gt;last blog post&lt;/a&gt; on my old blog, I decided to start something new, simple and text-based. What you see right now is the first version of my new blog. It is still a little rough around the edges, but it is here, it is online and it is 🦄!&lt;/p&gt;
&lt;h2 id=&quot;introduction&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/my-digital-castle/#introduction&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; 🙋 Introduction&lt;/h2&gt;
&lt;p&gt;Since this is the first post on a new blog, you might want to know a thing about me:&lt;/p&gt;
&lt;p&gt;My name is Moritz Glantz and I live, think, develop and write in Karlsruhe, Germany. I am an Specialist for Web Accessibility and UX-Engineer with over 20 years of experience by day and a &lt;a href=&quot;https://wowirsindistvorne.show&quot; target=&quot;_blank&quot;&gt;tech-podcaster&lt;/a&gt; and &lt;a href=&quot;https://www.twitch.tv/wowirsindistvorne_dev&quot; target=&quot;_blank&quot;&gt;live-streamer&lt;/a&gt; by night.&lt;/p&gt;
&lt;p&gt;I help organizations build accessible websites by offering accessibility talks, workshops &amp;amp; trainings, accessibility reviews and developing strategies for developers and management.&lt;/p&gt;
&lt;p&gt;If that sounds like you could use my help, &lt;a href=&quot;mailto:pos%74@moritzglantz.de&quot;&gt;let’s talk&lt;/a&gt;! 💬&lt;/p&gt;
&lt;h2 id=&quot;why&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/my-digital-castle/#why&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Why&lt;/h2&gt;
&lt;p&gt;In short: because of &lt;a href=&quot;https://indieweb.org/&quot; target=&quot;_blank&quot;&gt;Indie-Web&lt;/a&gt;, the &lt;a href=&quot;https://matthiasott.com/notes/the-year-of-the-personal-website&quot; target=&quot;_blank&quot;&gt;year of the personal website&lt;/a&gt; and &lt;a href=&quot;https://notiz.blog/&quot; target=&quot;_blank&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;https://matthiasott.com/&quot; target=&quot;_blank&quot;&gt;people&lt;/a&gt; have been nudging me to do so. If that explanation is too sparse, let me know and I’ll write a post about it 😉.&lt;/p&gt;
&lt;h2 id=&quot;castle-rules-and-topics&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/my-digital-castle/#castle-rules-and-topics&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Castle rules and topics&lt;/h2&gt;
&lt;p&gt;This blog will contain posts about my work, my thoughts and the world. Against all recommendations it’ll cover of all these topics at once plus it will be bilingual. Why bilingual, you might ask? My brain works like this. The language of digital work is English. My native language is German. I mostly watch movies in English but my &lt;a href=&quot;https://wowirsindistvorne.show&quot; target=&quot;_blank&quot;&gt;web-dev podcast&lt;/a&gt; is in German and swearing works – verdammt nochmal – best in your mother tongue 😄.&lt;/p&gt;
&lt;h2 id=&quot;tech&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/my-digital-castle/#tech&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Tech&lt;/h2&gt;
&lt;p&gt;All this was achieved using great software from other people like &lt;a href=&quot;https://picocss.com/&quot; target=&quot;_blank&quot;&gt;Pico.css&lt;/a&gt; and &lt;a href=&quot;https://www.11ty.dev/&quot; target=&quot;_blank&quot;&gt;11ty&lt;/a&gt;. I’ll probably write a post about the process at some time.&lt;/p&gt;
&lt;h2 id=&quot;challenges&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/my-digital-castle/#challenges&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Challenges&lt;/h2&gt;
&lt;p&gt;I find writing long texts intimidating. Maybe that’s why I preferred writing threads on micro blogging platforms in the last years. And also maybe some of these old threads will appear here as posts, or I will post a thread first that then becomes a blog post. As you can see, I still have to find the right mode for myself. But to start something like this is exciting and we’ll see where it’ll go.&lt;/p&gt;
&lt;h2 id=&quot;thank-you&quot; tabindex=&quot;-1&quot;&gt;&lt;a class=&quot;headline-anchor&quot; href=&quot;https://moritzglantz.de/blog/posts/my-digital-castle/#thank-you&quot; aria-hidden=&quot;true&quot;&gt;#&lt;/a&gt; Thank you!&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Thanks for reading my first post! Let me know what you think. Send me an &lt;a href=&quot;mailto:pos%74@moritzglantz.de&quot;&gt;email&lt;/a&gt; if you need help with accessibility, &lt;a href=&quot;https://www.linkedin.com/in/moritz-glantz/&quot; target=&quot;_blank&quot;&gt;connect with me on LinkedIn&lt;/a&gt; if you like and consider following me on &lt;a href=&quot;https://mastodon.social/@MoritzGlantz&quot; target=&quot;_blank&quot;&gt;Mastodon&lt;/a&gt;. Let’s see what the future holds.  Until then…&lt;/strong&gt;&lt;/em&gt; ❤️&lt;/p&gt;

			&lt;img src=&quot;https://m0g1.uber.space/piwik/piwik.php?idsite=5&amp;amp;rec=1&amp;amp;source=feedxmlpixel&quot; style=&quot;border:0;display:none;&quot; alt=&quot;&quot; /&gt;
		</content>
	</entry>
</feed>
