<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>André Klein Dot Net</title>
	<atom:link href="https://andreklein.net/feed/" rel="self" type="application/rss+xml" />
	<link>https://andreklein.net/</link>
	<description>Prose, Code &#38; Poetry</description>
	<lastBuildDate>Sat, 18 Apr 2026 00:09:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://andreklein.net/wp-content/uploads/2013/05/ak-150x150.gif</url>
	<title>André Klein Dot Net</title>
	<link>https://andreklein.net/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to Create a Global Color Picker Hotkey in KDE Plasma (Without Widgets)</title>
		<link>https://andreklein.net/how-to-create-a-global-color-picker-hotkey-in-kde-plasma-without-widgets/</link>
					<comments>https://andreklein.net/how-to-create-a-global-color-picker-hotkey-in-kde-plasma-without-widgets/#respond</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 22:06:14 +0000</pubDate>
				<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22637</guid>

					<description><![CDATA[<p>If you need a color picker regularly enough but not every five minutes, keeping a widget on your panel 24/7 may be overkill. I prefer a global hotkey that triggers a picker and stays hidden otherwise. And we can hook right into the default KDE color picker, no need for additional packages. The Solution: KWin [&#8230;]</p>
<p>The post <a href="https://andreklein.net/how-to-create-a-global-color-picker-hotkey-in-kde-plasma-without-widgets/">How to Create a Global Color Picker Hotkey in KDE Plasma (Without Widgets)</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>If you need a color picker regularly enough but not every five minutes, keeping a widget on your panel 24/7 may be overkill.</p>
<p>I prefer a global hotkey that triggers a picker and stays hidden otherwise. And we can hook right into the default KDE color picker, no need for additional packages.</p>
<div id="attachment_22639" style="width: 325px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2026/04/colorpicker.png"><img decoding="async" aria-describedby="caption-attachment-22639" class="wp-image-22639 size-full" src="https://andreklein.net/wp-content/uploads/2026/04/colorpicker.png" alt="" width="315" height="40" srcset="https://andreklein.net/wp-content/uploads/2026/04/colorpicker.png 315w, https://andreklein.net/wp-content/uploads/2026/04/colorpicker-300x38.png 300w" sizes="(max-width: 315px) 100vw, 315px" /></a><p id="caption-attachment-22639" class="wp-caption-text">the default widget is minimalist, but still distracting</p></div>
<h2>The Solution: KWin D-Bus</h2>
<p>We can do this by tapping directly into the KWin compositor using D-Bus. It&#8217;s fast and just works.</p>
<p><code><br />
dbus-send --print-reply --dest=org.kde.KWin /ColorPicker org.kde.kwin.ColorPicker.pick<br />
</code></p>
<p>This will run the color picker. Pick a spot and click. As you will see it returns a uint32 (a big number), and we&#8217;ll need to convert that to a Hex code in the next step.</p>
<p><a href="https://andreklein.net/wp-content/uploads/2026/04/dbus.png"><img fetchpriority="high" decoding="async" class="alignnone size-large wp-image-22640" src="https://andreklein.net/wp-content/uploads/2026/04/dbus-1024x152.png" alt="" width="1024" height="152" srcset="https://andreklein.net/wp-content/uploads/2026/04/dbus-1024x152.png 1024w, https://andreklein.net/wp-content/uploads/2026/04/dbus-300x44.png 300w, https://andreklein.net/wp-content/uploads/2026/04/dbus-768x114.png 768w, https://andreklein.net/wp-content/uploads/2026/04/dbus.png 1270w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<h2>The One-Liner</h2>
<p><strong>For Wayland:</strong></p>
<p><code><br />
dbus-send --print-reply --dest=org.kde.KWin /ColorPicker org.kde.kwin.ColorPicker.pick | awk '/uint32/ {printf "#%06x\n", $2 % 16777216}' | wl-copy<br />
</code></p>
<p>This will run the color picker, convert the uint32 to hex and shove it straight into your clipboard, ready to be pasted.</p>
<p><strong>For X11:</strong><br />
Swap wl-copy for xclip -selection clipboard.</p>
<h2>Set the Global Hotkey</h2>
<p>Don&#8217;t wrap this in a shell script unless you have to. KDE can handle this natively:</p>
<ul>
<li>Open System Settings &gt; Shortcuts.</li>
<li>Go to Commands and click Add New.</li>
<li>Name: Global Color Picker.</li>
<li>Command: Paste the one-liner above.</li>
<li>Shortcut: Assign your favorite combo (e.g., Meta+Shift+C).</li>
<li>Hit Apply.</li>
</ul>
<p>And there you go. No wasted visual space. Just instant color pickings whenever you need it.</p>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/how-to-create-a-global-color-picker-hotkey-in-kde-plasma-without-widgets/">How to Create a Global Color Picker Hotkey in KDE Plasma (Without Widgets)</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/how-to-create-a-global-color-picker-hotkey-in-kde-plasma-without-widgets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The End-Boss of Linux Formatting: RTL Annotations in PDF</title>
		<link>https://andreklein.net/the-end-boss-of-linux-formatting-rtl-annotations-in-pdf/</link>
					<comments>https://andreklein.net/the-end-boss-of-linux-formatting-rtl-annotations-in-pdf/#respond</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Sun, 08 Mar 2026 14:38:13 +0000</pubDate>
				<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22615</guid>

					<description><![CDATA[<p>Getting RTL (right-to-left) language annotations to render correctly in Linux PDF apps is the absolute end-boss of formatting. It doesn&#8217;t matter which app you use—Okular, Master PDF Editor, or whatever else is in the repos—they all seem to have a vendetta against the &#8220;wrong side of the road&#8221; languages like Hebrew, Arabic, Farsi, Urdu, Pashto, [&#8230;]</p>
<p>The post <a href="https://andreklein.net/the-end-boss-of-linux-formatting-rtl-annotations-in-pdf/">The End-Boss of Linux Formatting: RTL Annotations in PDF</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Getting RTL (right-to-left) language annotations to render correctly in Linux PDF apps is the absolute end-boss of formatting. It doesn&#8217;t matter which app you use—Okular, Master PDF Editor, or whatever else is in the repos—they all seem to have a vendetta against the &#8220;wrong side of the road&#8221; languages like Hebrew, Arabic, Farsi, Urdu, Pashto, etc.</p>
<p>As soon as I try to paste in an annotation saying, for example, &#8220;שלום&#8221; (shalom), it looks alright in the modal, although the left alignment is already an early warning sign that this isn&#8217;t fully parsed as RTL text:</p>
<p><a href="https://andreklein.net/wp-content/uploads/2026/03/modal.png"><img decoding="async" class="alignnone size-full wp-image-22616" src="https://andreklein.net/wp-content/uploads/2026/03/modal.png" alt="" width="864" height="471" srcset="https://andreklein.net/wp-content/uploads/2026/03/modal.png 864w, https://andreklein.net/wp-content/uploads/2026/03/modal-300x164.png 300w, https://andreklein.net/wp-content/uploads/2026/03/modal-768x419.png 768w" sizes="(max-width: 864px) 100vw, 864px" /></a></p>
<p>But as soon as I hit &#8220;OK&#8221;? It flips. It renders as &#8220;םולש&#8221; (molash).</p>
<p><a href="https://andreklein.net/wp-content/uploads/2026/03/render.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-22617" src="https://andreklein.net/wp-content/uploads/2026/03/render.png" alt="" width="485" height="173" srcset="https://andreklein.net/wp-content/uploads/2026/03/render.png 485w, https://andreklein.net/wp-content/uploads/2026/03/render-300x107.png 300w" sizes="auto, (max-width: 485px) 100vw, 485px" /></a></p>
<p>I work with Hebrew PDF documents constantly, and this has been a consistent blight on my otherwise happy Linux life. I even went so far as to try patching Okular (my favorite PDF app, if you couldn&#8217;t tell), but my C++ skills weren&#8217;t enough to defeat the beast.</p>
<p>And then it hit me. The glorious solution to this annoying problem. It is hacky as hell. In fact, it is such a gloriously dirty fix that one might almost call it elegant.</p>
<h2>The RTL Fixer Script</h2>
<p>I present to you the RTL Fixer: four lines (three if you’re a minimalist who hates notifications) of glorious letter reversal.</p>
<p><code>#!/bin/bash<br />
content=$(wl-paste)<br />
reversed=$(echo "$content" | rev)<br />
echo -n "$reversed" | wl-copy<br />
notify-send "Clipboard reversed" "$reversed"</code></p>
<p>What does it do? Exactly what it says on the tin. It takes whatever is in your clipboard, reverses the character order, and shoves it back into the clipboard.</p>
<h2>The Workflow</h2>
<p>Once bound to a hotkey (I use Alt+R), the workflow is seamless:</p>
<ul>
<li>Type your RTL text.</li>
<li>Select and copy it. (CTRL+A, CTRL+C)</li>
<li>Hit Alt+R.</li>
<li>Paste it. (CTRL+V)</li>
</ul>
<p>Enjoy your correctly rendered RTL text. (Of course, if you hate this 4-hotkey-pronged workflow, you could easily chain them, but for the sake of this post, let&#8217;s keep it simple.)</p>
<p>It works because the PDF viewer is going to reverse the letters anyway, so we’re just preemptively reversing them so they land in the &#8220;wrong&#8221; order, which makes them look right. It’s double-negative logic for the digital age.</p>
<p>And there you have it. Finally! RTL annotations in Linux PDF apps. Just as the good Lord intended. Well, strike that. The PDF format is clearly the devil’s work.</p>
<h2>The &#8220;Legacy&#8221; Edition (X11)</h2>
<p>I see you over there, still clinging to Xorg like a comforting, slightly buggy security blanket. If you aren’t on Wayland yet, the wl-clipboard tools won&#8217;t help you. You&#8217;ll need xclip installed.</p>
<p>Your version of the &#8220;dirty fix&#8221; looks like this:</p>
<p><code>#!/bin/bash<br />
content=$(xclip -selection clipboard -o)<br />
reversed=$(echo "$content" | rev)<br />
echo -n "$reversed" | xclip -selection clipboard<br />
notify-send "Clipboard reversed" "$reversed"</code></p>
<p>Same logic, different plumbing.</p>
<h2>A Small Warning for the Multiline-Enthusiasts</h2>
<p>Because we are using the rev command, this script is a &#8220;dumb&#8221; character-by-character flipper. It works flawlessly for single lines or short phrases. However, if you try to reverse a three-paragraph manifesto, it will reverse the entire string: meaning your last line will become your first line, and your brain will melt trying to read it.</p>
<p>Stick to one line at a time, and you’ll be golden.</p>
<p>Anyway, perhaps this will help someone else out there in the struggle. Or perhaps the PDF reader maintainers will eventually fix the BiDi engine.</p>
<p>Then again, I&#8217;m not holding my breath. The Venn diagram of &#8220;Linux Desktop Users&#8221; and &#8220;RTL-enjoyers&#8221; is probably not a massive circle.</p>
<p>In the meantime, I will keep calm and hit Alt+R.</p>
<p>Molash&#8230; I mean, <strong>Shalom</strong>.</p>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/the-end-boss-of-linux-formatting-rtl-annotations-in-pdf/">The End-Boss of Linux Formatting: RTL Annotations in PDF</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/the-end-boss-of-linux-formatting-rtl-annotations-in-pdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Taming WSL into a Tactical Workbench For A Terminal-First Workflow</title>
		<link>https://andreklein.net/taming-wsl-into-a-tactical-workbench-for-a-terminal-first-workflow/</link>
					<comments>https://andreklein.net/taming-wsl-into-a-tactical-workbench-for-a-terminal-first-workflow/#respond</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Sat, 07 Feb 2026 15:47:41 +0000</pubDate>
				<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22475</guid>

					<description><![CDATA[<p>[drop_cap]L[/drop_cap]ast year, I moved to CachyOS on my laptop. I expected a different Kernel. I was ready to do some things differently. What I didn&#8217;t expect was a total disruption of my workflow. Not just on that Linux machine, but across any other machine I would touch afterward. Once you get familiar with Linux&#8217;s terminal-first [&#8230;]</p>
<p>The post <a href="https://andreklein.net/taming-wsl-into-a-tactical-workbench-for-a-terminal-first-workflow/">Taming WSL into a Tactical Workbench For A Terminal-First Workflow</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://andreklein.net/wp-content/uploads/2026/02/90s.webp"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-22486" src="https://andreklein.net/wp-content/uploads/2026/02/90s.webp" alt="" width="900" height="663" srcset="https://andreklein.net/wp-content/uploads/2026/02/90s.webp 900w, https://andreklein.net/wp-content/uploads/2026/02/90s-300x221.webp 300w, https://andreklein.net/wp-content/uploads/2026/02/90s-768x566.webp 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a></p>
<p>[drop_cap]L[/drop_cap]ast year, I moved to <a href="https://andreklein.net/2025-the-year-of-the-linux-desktop-for-me-anyway/">CachyOS</a> on my laptop. I expected a different Kernel. I was ready to do some things differently. What I didn&#8217;t expect was a total disruption of my workflow. Not just on that Linux machine, but across any other machine I would touch afterward.</p>
<p>Once you get familiar with Linux&#8217;s terminal-first approach and you&#8217;ve tasted the speed of a GPU-accelerated terminal and a shell that doesn&#8217;t fight you, going back to a standard Windows setup just feels &#8230; wrong.</p>
<p>I tried to reverse-engineer that workflow on Windows. I tried WezTerm, Starship on Git Bash, and native TUIs. I failed. Between terminal escape codes screaming into my mouse movements and Windows eating my AltGr keys, I realized the truth: Native Windows and <em>truly</em> &#8220;terminal-first&#8221; workflows are like water and oil (unless you enjoy working with Powershell. But that&#8217;s a totally different story).</p>
<h2>Elevating The Subsystem</h2>
<p>Just when I was ready to fold and relegate my TUIs to my Arch rig, I was ready for one last Hallelujah: <strong>WSL2</strong>.</p>
<p>Yeah, I know. By default, WSL is not the best experience. It’s a superior OS running inside an inferior one, burdened by a translation layer designed for trouble. But after a day of chipping away at the friction, I found a stack that almost makes me forget that I&#8217;m on a Windows machine and not mashing away at Kitty on CachyOS.</p>
<h2>Lobotomizing the WSL</h2>
<p>By default, WSL is slow because it scans your entire Windows <code>$PATH</code>—thousands of folders of legacy garbage. The trick is to cut the cord in <code>/etc/wsl.conf</code>:</p>
<p><code>[interop]<br />
appendWindowsPath = false</code></p>
<p>Setting this to <code>false</code> drastically reduces shell initialization time because WSL stops crawling through your Windows binaries.</p>
<p>To stop WSL from becoming a memory parasite, I also added some performance flags. First of all, we shutdown the virtual machine after an hour of idle, so it doesn&#8217;t keep hogging resources forever:</p>
<p><code>[wsl2]<br />
# Automatically shut down the WSL VM after 1 hour of inactivity<br />
vmIdleTimeout=3600000</code></p>
<p>Next, we add this tweak to our <code>%USERPROFILE%\.wslconfig</code> (that&#8217;s on the host system, not the WSL box) to make the RAM-usage a bit &#8220;smarter&#8221;:</p>
<p><code>[experimental]<br />
# Give RAM back to Windows as soon as Linux stops using it<br />
autoMemoryReclaim=gradual</code></p>
<h2>GPU-Accelerated Goodness</h2>
<p>I settled on Alacritty for the terminal. Unlike WezTerm it plays nice with my weird German keyboard layout, e.g. AltGr+Q = @ and Shift+7 = /, and delivers the raw speed I need for my TUI development workflows.</p>
<p>But first of all we need to get a cleaner start. Let&#8217;s edit <code>alacritty.toml</code>:</p>
<p><code>[terminal.shell]<br />
program = "C:\\Windows\\System32\\wsl.exe"<br />
args = ["-d", "Ubuntu", "--cd", "~", "fish", "--login"]</code></p>
<p>Launching with<code> --cd ~</code> ensures we start in the Linux home directory, not the<code>/mnt/c/</code> mount which is a slow and sad reminder that Linux is just a tenant on this system.</p>
<p>If the colors are off, because they probably are, we can explicitly request the full truecolor goodness like this:</p>
<p><code>[env]<br />
TERM = "alacritty"<br />
COLORTERM = "truecolor"</code></p>
<p>Once everything is done, you should get a crisp and clean terminal experience on WSL. Here&#8217;s a quick screenshot:</p>
<p><a href="https://andreklein.net/wp-content/uploads/2026/02/ls.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-22590" src="https://andreklein.net/wp-content/uploads/2026/02/ls.png" alt="" width="999" height="627" srcset="https://andreklein.net/wp-content/uploads/2026/02/ls.png 999w, https://andreklein.net/wp-content/uploads/2026/02/ls-300x188.png 300w, https://andreklein.net/wp-content/uploads/2026/02/ls-768x482.png 768w" sizes="auto, (max-width: 999px) 100vw, 999px" /></a></p>
<p>Theme is the ever-goated TokyoNight, font is Delugia (which has excellent icon support) and just overall pleasant to look at. Shell is Fish+Tide. For those sweet <code>ls</code> colors you see in the screenshot above I stole some aliases from the excellent <a href="https://github.com/CachyOS/cachyos-fish-config/blob/main/cachyos-config.fish">CachyOS fish.config</a>, most notably:</p>
<p><code>alias ls='eza -al --color=always --group-directories-first --icons'<br />
alias la='eza -a --color=always --group-directories-first --icons'<br />
alias ll='eza -l --color=always --group-directories-first --icons'<br />
alias lt='eza -aT --color=always --group-directories-first --icons'<br />
alias l.="eza -a | grep -e '^\.'"<br />
</code></p>
<p>Since we are replacing <code>ls</code> with <code>eza</code> you need to <code>sudo apt install eza</code> on Ubuntu.</p>
<p>In the same vein, I also applied CachyOS&#8217;s replacement (slightly modified) for <code>man</code> so we can get actual nice-looking manuals:</p>
<p><code>set -x MANROFFOPT "-c"<br />
set -x MANPAGER "sh -c 'col -bx | batcat -l man -p'"</code></p>
<p>For this to work you need <code>sudo apt install bat</code> on Ubuntu. And then typing <code>man git</code> will give you something like this:</p>
<p><a href="https://andreklein.net/wp-content/uploads/2026/02/man.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-22595" src="https://andreklein.net/wp-content/uploads/2026/02/man.png" alt="" width="983" height="625" srcset="https://andreklein.net/wp-content/uploads/2026/02/man.png 983w, https://andreklein.net/wp-content/uploads/2026/02/man-300x191.png 300w, https://andreklein.net/wp-content/uploads/2026/02/man-768x488.png 768w" sizes="auto, (max-width: 983px) 100vw, 983px" /></a></p>
<h2>Fixing Shell Colors, Path and Browser on WSL</h2>
<p>If for whatever reason you get the &#8220;muddy color&#8221; problem where WSL doesn&#8217;t recognize Alacritty&#8217;s capabilities, you can force it in <code>config.fish</code>:</p>
<p><code># Force Alacritty identity and TrueColor<br />
set -gx TERM alacritty<br />
set -gx COLORTERM truecolor</code></p>
<p>Once everything is set correctly <code>$TERM</code> and <code>$COLORTEM</code> should return the correct values:</p>
<p><a href="https://andreklein.net/wp-content/uploads/2026/02/Screenshot-2026-02-08-234938.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-22538" src="https://andreklein.net/wp-content/uploads/2026/02/Screenshot-2026-02-08-234938.png" alt="" width="764" height="193" srcset="https://andreklein.net/wp-content/uploads/2026/02/Screenshot-2026-02-08-234938.png 764w, https://andreklein.net/wp-content/uploads/2026/02/Screenshot-2026-02-08-234938-300x76.png 300w" sizes="auto, (max-width: 764px) 100vw, 764px" /></a></p>
<h2>The Bottom Line</h2>
<p>By effectively decoupling WSL from Windows you can genuinely improve performance and make it feel a lot more like a native Linux environment. Add a modern terminal like Alacritty with truecolor support, a user-friendly shell like Fish and you&#8217;re officially on your way to making the terminal-first workflow on Windows significantly <del>suck less</del> more palatable.</p>
<p>Since I&#8217;ve been doing lots of terminal-centric work lately, I can now seamlessly switch between my Linux and Windows rig. Same look, same commands, same muscle memory. And when I launch Alacritty now and start bashing away, it almost feels like Linux is no <em>sub</em>system at all, but the dominant driver.</p>
<p>Last but not least, to top off the TerminalCeption, here&#8217;s a screenshot of me writing the draft for this post in <a href="https://github.com/burninc0de/helowrite">HeloWrite</a> on the very stack (WSL-Alacritty-Fish) described in thist post:</p>
<p><a href="https://andreklein.net/wp-content/uploads/2026/02/writing.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-22567" src="https://andreklein.net/wp-content/uploads/2026/02/writing.png" alt="" width="771" height="547" srcset="https://andreklein.net/wp-content/uploads/2026/02/writing.png 771w, https://andreklein.net/wp-content/uploads/2026/02/writing-300x213.png 300w, https://andreklein.net/wp-content/uploads/2026/02/writing-768x545.png 768w" sizes="auto, (max-width: 771px) 100vw, 771px" /></a></p>
<p>UPDATE: once I had all of this working, I deleted the whole Ubuntu WSL instance and replaced it with a proper ArchLinux WSL install. Look and feel are the same, but using pacman and AUR on Windows is just so much fun. Almost a sacrilege. Even getting native Windows NVIDIA drivers passed through to CUDA-enabled FastWhisper on this Arch box just works.</p>
<p>Whodathunk.</p>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/taming-wsl-into-a-tactical-workbench-for-a-terminal-first-workflow/">Taming WSL into a Tactical Workbench For A Terminal-First Workflow</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/taming-wsl-into-a-tactical-workbench-for-a-terminal-first-workflow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to get VS Code &#8220;Native Tabs&#8221; on KDE Plasma (Linux)</title>
		<link>https://andreklein.net/vs-code-native-tabs-linux-kde/</link>
					<comments>https://andreklein.net/vs-code-native-tabs-linux-kde/#comments</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 11:38:10 +0000</pubDate>
				<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22446</guid>

					<description><![CDATA[<p>[drop_cap]W[/drop_cap]hen you&#8217;re juggling three repos in VS Code and a dozen browser tabs, Alt+Tab becomes a game of Russian Roulette. You’re looking for your frontend, but you end up staring at a Slack notification or a half-finished email. MacOS users get Native Tabs in VS Code. On Linux/Windows? You get one instance per workspace and [&#8230;]</p>
<p>The post <a href="https://andreklein.net/vs-code-native-tabs-linux-kde/">How to get VS Code &#8220;Native Tabs&#8221; on KDE Plasma (Linux)</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>[drop_cap]W[/drop_cap]hen you&#8217;re juggling three repos in VS Code and a dozen browser tabs, Alt+Tab becomes a game of Russian Roulette. You’re looking for your frontend, but you end up staring at a Slack notification or a half-finished email.</p>
<p>MacOS users get <strong>Native Tabs</strong> in VS Code. On Linux/Windows? You get one instance per workspace and a mess of groupings on your taskbar.</p>
<p>I didn&#8217;t want a new OS; I just wanted a quick way to visualize and switch in between open workspaces.</p>
<h2>The Solution: A Focused Taskbar</h2>
<p>The native KDE Plasma Task Manager is powerful. You can customize it infinitely, drop it into top panel, massage appearance until it has a &#8220;tab-like&#8221; feel, but it lacks one crucial feature: <strong>Application Filtering. </strong>By default, the taskbar will always show <em>all</em> and <em>any</em> open tasks.</p>
<p>I hacked together a version that lets you &#8220;pin&#8221; specific apps to a dedicated panel. This creates a &#8220;Dev Mode&#8221; bar in the corner of your screen that mimics the VS Code native tabs feeling by showing only your active development tools. And it&#8217;s not limited to VS Code. You can create &#8220;tabs&#8221; like this for any combination of apps. Want to show only your active terminals and browser? Only file managers? No problem. Just filter.</p>
<div id="attachment_22449" style="width: 1034px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2026/02/code-tabs.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22449" class="wp-image-22449 size-large" src="https://andreklein.net/wp-content/uploads/2026/02/code-tabs-1024x547.png" alt="" width="1024" height="547" srcset="https://andreklein.net/wp-content/uploads/2026/02/code-tabs-1024x547.png 1024w, https://andreklein.net/wp-content/uploads/2026/02/code-tabs-300x160.png 300w, https://andreklein.net/wp-content/uploads/2026/02/code-tabs-768x410.png 768w, https://andreklein.net/wp-content/uploads/2026/02/code-tabs.png 1421w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><p id="caption-attachment-22449" class="wp-caption-text">Who needs &#8220;native&#8221; tabs when you can get a custom taskbar?</p></div>
<ul>
<li>Only show whatever you tasks you actually need for your workflow</li>
<li>Filter by single instances like &#8220;code&#8221; or combinations like &#8220;zed,firefox&#8221;</li>
<li>Minimal task bar without hover previews, audio bubbles, etc.</li>
<li>Keep the &#8220;unrelated&#8221; junk (Slack, Spotify, Mail) in your main taskbar.</li>
</ul>
<div class="cta"><strong>Get the code:</strong><br />
<a href="https://github.com/burninc0de/kde-filtered-taskbar">github.com/burninc0de/kde-filtered-taskbar</a></div>
<h2>Quickstart</h2>
<p>Here&#8217;s a quick way to get the plasmoid, copy it to your .local/share and restart plasma:</p>
<p><code>git clone https://github.com/burninc0de/kde-filtered-taskbar.git<br />
cd kde-filtered-taskbar<br />
./install.sh</code>After that, right-click any panel, click &#8220;Add Widgets,&#8221; and search for Filtered Taskbar.</p>
<div>&#8211;</div>
<p>The post <a href="https://andreklein.net/vs-code-native-tabs-linux-kde/">How to get VS Code &#8220;Native Tabs&#8221; on KDE Plasma (Linux)</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/vs-code-native-tabs-linux-kde/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>HeloWrite: A Minimalist Terminal Word Processor for Writers</title>
		<link>https://andreklein.net/helowrite-terminal-word-processor/</link>
					<comments>https://andreklein.net/helowrite-terminal-word-processor/#respond</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Sun, 01 Feb 2026 19:53:04 +0000</pubDate>
				<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22366</guid>

					<description><![CDATA[<p>[drop_cap]W[/drop_cap]riting is hard. It&#8217;s messy, unresolved, chaotic. You scrape scenes out of your skull and massage syntactical turds until they shine (or get thrown out in the next rewrite). Code is different. Something either works or it doesn&#8217;t. Problems usually have clear paths to solutions. Prose has no linter. You can&#8217;t pre-compile a plot-twist to [&#8230;]</p>
<p>The post <a href="https://andreklein.net/helowrite-terminal-word-processor/">HeloWrite: A Minimalist Terminal Word Processor for Writers</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://andreklein.net/wp-content/uploads/2026/02/helowrite.png"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-22441" src="https://andreklein.net/wp-content/uploads/2026/02/helowrite-1024x742.png" alt="" width="1024" height="742" srcset="https://andreklein.net/wp-content/uploads/2026/02/helowrite-1024x742.png 1024w, https://andreklein.net/wp-content/uploads/2026/02/helowrite-300x217.png 300w, https://andreklein.net/wp-content/uploads/2026/02/helowrite-768x556.png 768w, https://andreklein.net/wp-content/uploads/2026/02/helowrite.png 1288w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>[drop_cap]W[/drop_cap]riting is hard. It&#8217;s messy, unresolved, chaotic. You scrape scenes out of your skull and massage syntactical turds until they shine (or get thrown out in the next rewrite).</p>
<p>Code is different. Something either works or it doesn&#8217;t. Problems usually have clear paths to solutions.</p>
<p>Prose has no linter. You can&#8217;t pre-compile a plot-twist to catch continuity leaks.</p>
<p>So this week, after making solid progress with my new book, I “relaxed” by building a writing tool in my spare time. The irony isn&#8217;t lost on me.</p>
<h2>The Calm of The Void</h2>
<p>Staring at a white page sucks. First step? Make it not white. Stop shining a flashlight into your retinas while trying to uncork the unconscious. Next, ditch the Microsoft kitchen-sink ribbons of colorful icons and formatting gizmos. Stop pretending you are a typesetter and fiddling with font sizes instead of dredging up dirt on your characters.</p>
<p>In short, remove everything else except the words.</p>
<p>I&#8217;ve always been a huge fan of this type of minimalist approach.</p>
<p>The less I see, the better. For years I&#8217;ve bounced between minimalist word processors: WriteMonkey, iAwriter, FocusWriter—always configured the same way: dark background, generous horizontal padding to spare my eyes the long left-to-right trek, a clean mono/duospace font, and a subtle word counter tucked in a corner that only shows when idle.</p>
<p>Notifications off, music on, deep dive. That&#8217;s the only way to play this game.</p>
<p>This weekend I thought: why not follow this minimalist approach, but strip it down even further, in the shape of a terminal-based tool. TUIs (terminal user interfaces) are all the rage these days (think ClaudeCode, OpenCode, etc.) and I admit&#8212;it’s fun in a deliberately discordant way!</p>
<p>No graphics. No animations. No gamification or &#8220;engagement&#8221; loops. Just the brutal, high-contrast reality of text.</p>
<p>I built HeloWrite in Python with the Textual library (great starter). Here&#8217;s a screenshot of the distraction-free mode, and yes, there ain&#8217;t much to see, which is precisely the point:</p>
<div id="attachment_22443" style="width: 1034px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2026/02/nu1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22443" class="wp-image-22443 size-large" src="https://andreklein.net/wp-content/uploads/2026/02/nu1-1024x625.png" alt="" width="1024" height="625" srcset="https://andreklein.net/wp-content/uploads/2026/02/nu1-1024x625.png 1024w, https://andreklein.net/wp-content/uploads/2026/02/nu1-300x183.png 300w, https://andreklein.net/wp-content/uploads/2026/02/nu1-768x469.png 768w, https://andreklein.net/wp-content/uploads/2026/02/nu1.png 1262w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><p id="caption-attachment-22443" class="wp-caption-text">No formatting tools. No markdown previews. Just words.</p></div>
<h2>The Secret Sauce: Performance &amp; Paranoia</h2>
<p>I realized halfway through Sunday that I wasn’t just building this for the &#8220;aesthetic.&#8221; I was building it because I’m tired of waiting for my tools to catch up to my brain. Many modern writing apps are resource hogs. They have &#8220;loading&#8221; states awkwardly disguised by splash screens. They index. They bloat.</p>
<p>HeloWrite has a cold start so fast it feels like it was never closed. We’re talking 0.5 seconds from hitting Enter to a blinking cursor. And that’s running from source—no pre-compiled binaries, no bloat, just raw Python and the void.</p>
<p>And then there&#8217;s the Git workflow. You can set your Obsidian vault dir (or any repo for that matter) in the settings and git to your heart&#8217;s content. Push and pull individual files or chapters as you work on them and get version control for your writing. Never lose a line again. Send it all to the vault, while you write.</p>
<p>Don&#8217;t use git? No problem. Auto-save is built in as well. But if you are a writer (or a developer), you&#8217;ll probably spam <code>Ctrl+S</code> anyway. Just in case, right?</p>
<div id="attachment_22531" style="width: 948px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2026/02/settings-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22531" class="size-full wp-image-22531" src="https://andreklein.net/wp-content/uploads/2026/02/settings-1.png" alt="" width="938" height="805" srcset="https://andreklein.net/wp-content/uploads/2026/02/settings-1.png 938w, https://andreklein.net/wp-content/uploads/2026/02/settings-1-300x257.png 300w, https://andreklein.net/wp-content/uploads/2026/02/settings-1-768x659.png 768w" sizes="auto, (max-width: 938px) 100vw, 938px" /></a><p id="caption-attachment-22531" class="wp-caption-text">the settings screen (F3)</p></div>
<h2>Code and Corkboards</h2>
<p>There are tons of amazing code editors out there. Vim fanatics can rice their configs until the heat death of the universe. Emacs people have basically built an operating system. Developers are spoiled for choice when it comes to terminal-based workflows.</p>
<p>Writers? Not so much.</p>
<p>We get word processors designed by committee, skeuomorphic corkboards, or minimalist apps that cost $50, do less than Notepad and still somehow end up feeling heavy.</p>
<p>I wanted something different. Something that understood the writer&#8217;s brain, but had the heart of a code editor.</p>
<p>I&#8217;ve tried other terminal-based word processors like WordGrinder, and while I loved the concept, the workflow never quite seemed clicked with me. So I just built my own, tuned exactly to the quirks of a lifetime of writing.</p>
<h2>Begin Jump Prep</h2>
<p>HeloWrite, pronounced &#8220;<em>hee-lo</em>&#8221; and named after Karl “Helo” Agathon from Battlestar Galactica, is completely free open-source software. It includes:</p>
<ul>
<li>Fully distraction-free mode with an out-of-the-way word counter</li>
<li>On the fly adjustable horizontal padding to cut eye strain</li>
<li>Many popular custom color themes including cursor styling</li>
<li>Granular git push and pull commands</li>
</ul>
<blockquote><p>“I fell in love with a machine. That&#8217;s stupid. So just call me an idiot, and let&#8217;s be done with it.” — Karl Agathon</p></blockquote>
<div style="width: 1288px;" class="wp-video"><video class="wp-video-shortcode" id="video-22366-1" width="1288" height="954" preload="metadata" controls="controls"><source type="video/mp4" src="https://andreklein.net/wp-content/uploads/2026/02/helowrite.mp4?_=1" /><source type="video/mp4" src="https://andreklein.net/wp-content/uploads/2026/02/helowrite.mp4?_=1" /><a href="https://andreklein.net/wp-content/uploads/2026/02/helowrite.mp4">https://andreklein.net/wp-content/uploads/2026/02/helowrite.mp4</a></video></div>
<p><a href="https://github.com/burninc0de/helowrite"><img decoding="async" class="alignleft" src="https://img.shields.io/badge/github-repo-blue?logo=github" alt="github" /></a></p>
<p>Clone, fork or hack here: <a href="https://github.com/burninc0de/helowrite">burninc0de/helowrite</a></p>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/helowrite-terminal-word-processor/">HeloWrite: A Minimalist Terminal Word Processor for Writers</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/helowrite-terminal-word-processor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://andreklein.net/wp-content/uploads/2026/02/helowrite.mp4" length="1453287" type="video/mp4" />

			</item>
		<item>
		<title>Modern App Icons Missing on Win11? How a 10-Year-Old Registry Key Ghosted My Taskbar Icons</title>
		<link>https://andreklein.net/modern-app-icons-missing-on-win11-how-a-10-year-old-registry-ghosted-my-taskbar-icons/</link>
					<comments>https://andreklein.net/modern-app-icons-missing-on-win11-how-a-10-year-old-registry-ghosted-my-taskbar-icons/#comments</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 16:17:51 +0000</pubDate>
				<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22344</guid>

					<description><![CDATA[<p>If you’re reading this, you’re in the bad place. You’ve already googled &#8220;Windows 11 taskbar icons missing,&#8221; and you’ve spent the last three hours performing the standard Microsoft-sanctioned rituals that never actually work. Certain icons just refuse to show up on taskbar. Regardless of whether they are pinned or just currently running. And yes, like [&#8230;]</p>
<p>The post <a href="https://andreklein.net/modern-app-icons-missing-on-win11-how-a-10-year-old-registry-ghosted-my-taskbar-icons/">Modern App Icons Missing on Win11? How a 10-Year-Old Registry Key Ghosted My Taskbar Icons</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p data-path-to-node="4"><span class="">If you’re reading this,</span><span class=""> you’re in the bad place.</span><span class=""> You’ve already googled &#8220;Windows 11 taskbar icons missing,</span><span class="">&#8221; and you’ve spent the last three hours performing the standard Microsoft-sanctioned rituals that never actually work. </span></p>
<p data-path-to-node="4"><a href="https://andreklein.net/wp-content/uploads/2026/01/missing.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-22345" src="https://andreklein.net/wp-content/uploads/2026/01/missing.png" alt="" width="427" height="225" srcset="https://andreklein.net/wp-content/uploads/2026/01/missing.png 427w, https://andreklein.net/wp-content/uploads/2026/01/missing-300x158.png 300w" sizes="auto, (max-width: 427px) 100vw, 427px" /></a></p>
<p data-path-to-node="4">Certain icons just refuse to show up on taskbar. Regardless of whether they are pinned or just currently running.</p>
<p data-path-to-node="4"><span class="">And yes, like you I&#8217;ve tried it all ever since I &#8220;upgraded&#8221; my main rig to Windows 11. </span>You know the drill:</p>
<ul>
<li><strong>The Icon Cache Nuke</strong>: Deleting IconCache.db until your fingers bleed.</li>
<li><strong>The Last Straw</strong>: Staring at a progress bar for sfc /scannow, DISM, and chkdsk while they tell you &#8220;No integrity violations found&#8221;, even though your taskbar clearly looks like a redacted CIA document.</li>
</ul>
<p>Notice how it’s only the &#8220;Modern&#8221; apps? Notepad++, random EXEs, and Photoshop look fine, but Settings, Calculator, Notepad and the Clock have checked out and left behind empty, hollow squares.</p>
<p>Spoiler alert: Your system isn&#8217;t &#8220;corrupted.&#8221; It’s just being haunted by a legacy ghost. If (like me) you’re on a machine with years of arcane cruft, some ancient shell extension may be fighting the Windows 11 UWP icon pipeline over PNG rendering, and you’re caught in the crossfire.</p>
<h2>The Problem: Legacy Bloat vs. Modern &#8220;Security&#8221;</h2>
<p>Old-school EXEs usually have icons embedded in their binaries. The modern Windows shell stack (used by UWP apps) relies on a specific pipeline to render icons. If you ever installed software that added custom PNG thumbnail handlers back in 2016, you’ve got a conflict that the &#8220;Modern&#8221; shell can&#8217;t handle. It sees the hijack, panics, and gives you a blank square.</p>
<h2>The Real Fix (The Registry Scalpel)</h2>
<p>If you want to stop the madness and actually get your Clock, Calculator, and Settings icons back, forget about running SFC scans. Here&#8217;s what finally fixed it for me, in case anyone else struggles with the same issue:</p>
<p>Open Regedit (Win + R, regedit).</p>
<ol>
<li>Navigate to HKEY_CLASSES_ROOT\.png\shellex</li>
<li>Look for a GUID key like {E357FCCD-A995-4576-B01F-234630154E96}. This is an old shell extension for thumbnails.</li>
<li>Right-click the shellex folder and rename it to shellexOLD or just nuke it.</li>
<li>Restart explorer.exe.</li>
</ol>
<p>By renaming that key, you stripped away the legacy shell extensions that were intercepting PNG rendering. You greenlit Windows 11 to use its native, internal logic to draw those UWP icons.</p>
<p>Thanks to <a href="https://learn.microsoft.com/en-us/answers/questions/3242843/windows-10-icons-missing-for-uwp-apps?page=2#answers">Anonymous</a> for finally pointing me in the right direction after months of looking into this on and off.</p>
<p>P.S. To the engineers at Microsoft: If your &#8220;Modern&#8221; resource loader can be defeated by a single registry key from 2016, maybe it’s time to stop adding &#8220;AI&#8221; to the Start menu and start making sure the frellin&#8217; Clock works.</p>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/modern-app-icons-missing-on-win11-how-a-10-year-old-registry-ghosted-my-taskbar-icons/">Modern App Icons Missing on Win11? How a 10-Year-Old Registry Key Ghosted My Taskbar Icons</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/modern-app-icons-missing-on-win11-how-a-10-year-old-registry-ghosted-my-taskbar-icons/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>AI Isn’t Killing Learning. Our Standards Were Already on Life Support</title>
		<link>https://andreklein.net/ai-isnt-killing-learning-our-standards-were-already-on-life-support/</link>
					<comments>https://andreklein.net/ai-isnt-killing-learning-our-standards-were-already-on-life-support/#comments</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Fri, 05 Dec 2025 12:26:54 +0000</pubDate>
				<category><![CDATA[Musings]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22325</guid>

					<description><![CDATA[<p>[drop_cap]Y[/drop_cap]ou’ve probably seen that Current Affairs piece making the rounds, the one that declares higher education dead because “students use AI to write papers, professors use AI to grade them, degrees become meaningless, and tech companies make fortunes.” It’s a catchy obituary. And yeah, AI panic is having a moment. Programmers sneer at “vibe-coding,” artists [&#8230;]</p>
<p>The post <a href="https://andreklein.net/ai-isnt-killing-learning-our-standards-were-already-on-life-support/">AI Isn’t Killing Learning. Our Standards Were Already on Life Support</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="attachment_22330" style="width: 1034px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/12/brooksnewpupil.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22330" class="wp-image-22330 size-large" src="https://andreklein.net/wp-content/uploads/2025/12/brooksnewpupil-1024x616.jpg" alt="" width="1024" height="616" srcset="https://andreklein.net/wp-content/uploads/2025/12/brooksnewpupil-1024x616.jpg 1024w, https://andreklein.net/wp-content/uploads/2025/12/brooksnewpupil-300x180.jpg 300w, https://andreklein.net/wp-content/uploads/2025/12/brooksnewpupil-768x462.jpg 768w, https://andreklein.net/wp-content/uploads/2025/12/brooksnewpupil-1536x923.jpg 1536w, https://andreklein.net/wp-content/uploads/2025/12/brooksnewpupil.jpg 1655w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><p id="caption-attachment-22330" class="wp-caption-text">Thomas Brooks &#8211; The New Pupil (1854). Wikimedia Commons.</p></div>
<p>[drop_cap]Y[/drop_cap]ou’ve probably seen that <a href="https://www.currentaffairs.org/news/ai-is-destroying-the-university-and-learning-itself">Current Affairs</a> piece making the rounds, the one that declares higher education dead because “students use AI to write papers, professors use AI to grade them, degrees become meaningless, and tech companies make fortunes.”</p>
<p>It’s a catchy obituary. And yeah, AI panic is having a moment. Programmers sneer at “<a href="https://andreklein.net/vibe-coding-is-just-copy-pasting-from-stackoverflow-with-extra-steps-and-a-better-ui/">vibe-coding</a>,” artists rage at image generators, and now academics are convinced ChatGPT is the final nail in the coffin of human learning. When factory jobs vanished to automation, knowledge workers mostly yawned. Now the machines are coming for their gigs too, and suddenly it’s existential.</p>
<p><a href="https://www.youtube.com/watch?t=2003&amp;v=mfv0V1SxbNA&amp;feature=youtu.be">Linus Torvalds</a> put it bluntly in a recent interview: &#8220;that genie is out of the bottle.&#8221; No amount of wishing will stuff it back in. We’re all going to have to live with this new reality.</p>
<p>I’m a writer, an educator, and a developer—three professions currently getting torched by generative AI—and I’m not scared. I’m genuinely excited.</p>
<p>This whole freakout feels eerily familiar. Remember when Wikipedia launched and every teacher warned us never to trust “the internet”? The same generation that preached that gospel now doom-scrolls rage-bait and falls for foreign disinformation campaigns. The pattern is unmistakable: new tool arrives → disrupts old hierarchies → experts clutch pearls → tool wins anyway.</p>
<blockquote class="pull alignleft"><p>AI didn’t break education. It just held up a mirror we’d spent twenty years trying to avoid.</p></blockquote>
<p>Here’s the part no one wants to say out loud: institutional education has been coasting on fumes for decades. When I was studying to become a high school teacher, I got so fed up with standardized testing and fossilized curricula that I dropped out and started my own language-teaching business. That was ten years ago. Walk into most classrooms today and you’ll see the same worksheets, the same “summarize in your own words” assignments, the same obsession with memorizing facts that Google rendered obsolete in 2004.</p>
<p>We pretended the internet didn’t exist, then we pretended smartphones didn’t exist, and we kept designing assessments that rewarded regurgitation over reasoning. Of course students plug those assignments into ChatGPT. The surprise isn’t that they’re doing it, it’s that we built an entire system that made it the rational choice.</p>
<p>AI didn’t break education. It just held up a mirror we’d spent twenty years trying to avoid.</p>
<p>So here we are, at an actual crossroads. One path is easy: ban AI, block it on school networks, run plagiarism detectors that are already obsolete, and keep shouting that the kids are cheating. The other path is harder: accept that the tool is here to stay and figure out how to make it work for us instead of against us.</p>
<p>I still remember my high-school math teacher confiscating calculators because “you won’t always have one in real life.” We now carry devices in our pockets more powerful than the computers that put humans on the moon. Telling students they can’t use AI because “you need to know it yourself” is the modern version of that same lazy argument.</p>
<p>Brains were never meant to be Wikipedia. Recalling disconnected facts on command has never been a meaningful proxy for intelligence. Real thinking—creativity, insight, synthesis—happens when we connect ideas, spot patterns, and wrestle with complexity. Funny thing: that’s exactly what large language models are starting to do.</p>
<p>So maybe, just maybe, we should stop treating AI like the enemy and start treating it like the most powerful tutor humanity has ever built.</p>
<p>A couple of starting points for anyone willing to experiment:</p>
<ul>
<li><strong>Turn AI into a Socratic sparring partner</strong>. Instead of asking it for answers, lay out your reasoning and dare it to tear holes in your logic. Use every response to sharpen the next prompt. That back-and-forth is where real learning happens.</li>
<li><strong>Flip assessment from product to process</strong>. Stop grading the polished essay or the “correct” answer. Start grading the prompt history, the iterations, the dead ends, the moments the student pushed back against the model or combined three different outputs into something new. The artifact no longer matters; the visible thinking does. AI can’t fake intellectual courage or curiosity, at least not yet.</li>
<li><strong>Let teachers become learning-experience designers</strong>. With a few good prompts, even non-coders can generate interactive exercises, simulations, and adaptive quizzes tailored to their students, without waiting for admin to cut six-figure deals with software vendors. The barrier to building great tools just dropped to zero.</li>
</ul>
<p>So yeah, if your homework assignments can be completed better and faster by a large language model, they were probably busywork to begin with. That’s not a tragedy; it’s an invitation.</p>
<p>Education isn’t dying. It’s being forced to evolve for the first time in a century. We can fight that evolution and lose, or we can lead it.</p>
<p>I know which side I’m on.</p>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/ai-isnt-killing-learning-our-standards-were-already-on-life-support/">AI Isn’t Killing Learning. Our Standards Were Already on Life Support</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/ai-isnt-killing-learning-our-standards-were-already-on-life-support/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Vibe Coding Is Just Copy-Pasting From StackOverflow With Extra Steps (and a Better UI)</title>
		<link>https://andreklein.net/vibe-coding-is-just-copy-pasting-from-stackoverflow-with-extra-steps-and-a-better-ui/</link>
					<comments>https://andreklein.net/vibe-coding-is-just-copy-pasting-from-stackoverflow-with-extra-steps-and-a-better-ui/#respond</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Thu, 27 Nov 2025 16:16:13 +0000</pubDate>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22226</guid>

					<description><![CDATA[<p>[drop_cap]N[/drop_cap]ot so long ago, when you hit a weird bug, the ritual was always the same: Google the error message → pray to the old gods → land on a 2012 StackOverflow thread answered by someone named DenverCoder9. If the stars aligned, there was a code snippet that almost fit. You copied it, pasted it, [&#8230;]</p>
<p>The post <a href="https://andreklein.net/vibe-coding-is-just-copy-pasting-from-stackoverflow-with-extra-steps-and-a-better-ui/">Vibe Coding Is Just Copy-Pasting From StackOverflow With Extra Steps (and a Better UI)</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="attachment_22237" style="width: 669px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/spaget.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22237" class="wp-image-22237 size-full" src="https://andreklein.net/wp-content/uploads/2025/11/spaget.jpg" alt="" width="659" height="407" srcset="https://andreklein.net/wp-content/uploads/2025/11/spaget.jpg 659w, https://andreklein.net/wp-content/uploads/2025/11/spaget-300x185.jpg 300w" sizes="auto, (max-width: 659px) 100vw, 659px" /></a><p id="caption-attachment-22237" class="wp-caption-text">Enjoy your copypasta responsibly</p></div>
<p>[drop_cap]N[/drop_cap]ot so long ago, when you hit a weird bug, the ritual was always the same: Google the error message → pray to the old gods → land on a 2012 StackOverflow thread answered by someone named <a href="https://xkcd.com/979/">DenverCoder9</a>. If the stars aligned, there was a code snippet that almost fit. You copied it, pasted it, changed three variable names, ran the tests, and shipped it.</p>
<p>The LeetCode monks and ivory-tower purists sneered and called it cheating. We all still did it. Every single one of us.</p>
<p>Fast-forward to now: StackOverflow is a ghost town. It peaked around 2014-2017, got a brief &#8220;dead cat bounce&#8221; when half the planet decided coding beat doomscrolling during lockdown, then fell off a cliff the month ChatGPT dropped.</p>
<div id="attachment_22227" style="width: 1010px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/stacko.webp"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22227" class="size-full wp-image-22227" src="https://andreklein.net/wp-content/uploads/2025/11/stacko.webp" alt="" width="1000" height="590" srcset="https://andreklein.net/wp-content/uploads/2025/11/stacko.webp 1000w, https://andreklein.net/wp-content/uploads/2025/11/stacko-300x177.webp 300w, https://andreklein.net/wp-content/uploads/2025/11/stacko-768x453.webp 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></a><p id="caption-attachment-22227" class="wp-caption-text"><a href="https://blog.pragmaticengineer.com/are-llms-making-stackoverflow-irrelevant/">Gergely Orosz@pragmaticengineer.com</a></p></div>
<p>Sure, someone will say &#8220;correlation ≠ causation.&#8221; Sure, Jan.</p>
<p>Point is, AI now solves the exact same problem StackOverflow used to solve—just faster, friendlier, and without the top comment asking why you&#8217;re writing bad code in the first place.</p>
<p>The discourse, meanwhile, has gone full tribal.</p>
<p>Camp 1: &#8220;We&#8217;re one prompt away from Aunt Margaret shipping production-grade e-commerce apps from her hot tub.&#8221; Camp 2: &#8220;It&#8217;s all soulless slop. Real engineers compile their own kernels with hand-rolled assembly.&#8221;</p>
<p>I&#8217;m blissfully agnostic. A tool is a tool. If it ships features faster, I&#8217;m using it.</p>
<p>So I spent the last few months mainlining every shiny new &#8220;agentic&#8221; coding toy: Cursor, Windsurf, Kiro, Antigravity. They&#8217;re… fine. Sometimes they fix a hairy refactor in ten seconds flat. Sometimes they go rogue, rewrite your entire auth layer at 3 a.m., or just sit there blinking &#8220;Sorry, I can&#8217;t do that, Dave [<em>furiously deletes and re-creates the file</em>].&#8221;</p>
<p>Net result? Still dramatically faster than wandering the post-apocalyptic wasteland of outdated answers, up-vote gaming, and &#8220;works on my machine&#8221; non-solutions.</p>
<p>And here&#8217;s the part nobody wants to say out loud:</p>
<p>These models were trained on every public GitHub repo, every blog tutorial, every abandoned &#8220;next big thing&#8221; from 2013, and yes—probably your cringe university projects too. &#8220;Vibe coding&#8221; is just the AI doing the old Google → StackOverflow → copy-paste → pray cycle for you, then handing you the result with variable names swapped and folder structure intact.</p>
<p>It&#8217;s not creating new knowledge. It&#8217;s regurgitating, remixing, and serving the spaghetti on a silver platter.</p>
<p>Which means the entire &#8220;is vibe-coding good or bad?&#8221; debate is missing the forest for the trees.</p>
<p>We&#8217;ve always built software by standing on the shoulders of giants, copy-pasting their homework, and tweaking it until it works. AI just automated the copy-paste part and added a chat window.</p>
<p>The game hasn&#8217;t changed. The tools just got faster.</p>
<p>You still need to know exactly what the software is supposed to do. You still need to read the generated code and spot when it&#8217;s high on its own hypeium. You still own the production incidents when the AI builds something beautiful, fast, and completely wrong.</p>
<p>So vibe-code all you want. Prompt like a poet. Let the agents run wild.</p>
<p>Just don&#8217;t kid yourself that it&#8217;s fundamentally different from what we&#8217;ve been doing for the last twenty years.</p>
<p>It&#8217;s the same Frankenstein dance. We just swapped the rusty scalpel for a robotic surgeon. The monster still needs <em>you</em> to tell it where to bite.</p>
<p>P.S. Isn&#8217;t copy-pasting someone else&#8217;s code and tweaking it tantamount to theft? Why, yes, certainly:</p>
<blockquote><p>“Plagiarism is an ugly word for what, in rock and roll, is a natural and necessary — even admirable — tendency, and that is to steal. Theft is the engine of progress, and should be encouraged, even celebrated, provided the stolen idea has been advanced in some way.</p>
<p>“To advance an idea is to steal something from someone and make it so cool and covetable that someone then steals it from you.”<cite><a href="https://www.theredhandfiles.com/originality-hard-to-obtain/">Nick Cave</a></cite></p></blockquote>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/vibe-coding-is-just-copy-pasting-from-stackoverflow-with-extra-steps-and-a-better-ui/">Vibe Coding Is Just Copy-Pasting From StackOverflow With Extra Steps (and a Better UI)</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/vibe-coding-is-just-copy-pasting-from-stackoverflow-with-extra-steps-and-a-better-ui/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>I Built My Own Damn Crossposter Because Social Media Is a Fragmented Hellscape</title>
		<link>https://andreklein.net/socialsox/</link>
					<comments>https://andreklein.net/socialsox/#comments</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 20:16:54 +0000</pubDate>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22186</guid>

					<description><![CDATA[<p>Social media is so insanely fragmented right now it&#8217;s honestly comical. Remember 2009? (15 years ago &#8230; how?) I joined Twitter and it felt like the future. Even Facebook—yes, Facebook—was kinda usable back then. Real humans having real conversations instead of performing for the algorithm. Now? It&#8217;s just oceans of AI slop, engagement-farming rage bait, [&#8230;]</p>
<p>The post <a href="https://andreklein.net/socialsox/">I Built My Own Damn Crossposter Because Social Media Is a Fragmented Hellscape</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="attachment_22199" style="width: 1027px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/1017px-Pieter_Brueghel_the_Elder_-_The_Dutch_Proverbs_-_Google_Art_Project.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22199" class="size-full wp-image-22199" src="https://andreklein.net/wp-content/uploads/2025/11/1017px-Pieter_Brueghel_the_Elder_-_The_Dutch_Proverbs_-_Google_Art_Project.jpg" alt="" width="1017" height="720" srcset="https://andreklein.net/wp-content/uploads/2025/11/1017px-Pieter_Brueghel_the_Elder_-_The_Dutch_Proverbs_-_Google_Art_Project.jpg 1017w, https://andreklein.net/wp-content/uploads/2025/11/1017px-Pieter_Brueghel_the_Elder_-_The_Dutch_Proverbs_-_Google_Art_Project-300x212.jpg 300w, https://andreklein.net/wp-content/uploads/2025/11/1017px-Pieter_Brueghel_the_Elder_-_The_Dutch_Proverbs_-_Google_Art_Project-768x544.jpg 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></a><p id="caption-attachment-22199" class="wp-caption-text">Pieter Brueghel the Elder &#8211; The Dutch Proverbs, Public Domain</p></div>
<p class="font-claude-response-body whitespace-normal break-words">Social media is so insanely fragmented right now it&#8217;s honestly comical.</p>
<p class="font-claude-response-body whitespace-normal break-words">Remember 2009? (15 years ago &#8230; how?) I joined Twitter and it felt like the future. Even Facebook—yes, Facebook—was kinda usable back then. Real humans having real conversations instead of performing for the algorithm.</p>
<p class="font-claude-response-body whitespace-normal break-words">Now? It&#8217;s just oceans of AI slop, engagement-farming rage bait, and ads disguised as your uncle&#8217;s vacation photos.</p>
<p class="font-claude-response-body whitespace-normal break-words">I basically quit posting anywhere except the occasional &#8220;new book dropped&#8221; flex. Everything else got funneled into my newsletter because at least there I control the signal-to-noise ratio.</p>
<p class="font-claude-response-body whitespace-normal break-words">But newsletters are for business, mostly. What about all the dumb little asides, half-baked ideas, cool side projects, and random musings that don&#8217;t justify the whole &#8220;create campaign&#8221; spiel? Where do those go in 2025 without drowning in garbage?</p>
<p class="font-claude-response-body whitespace-normal break-words">So I did a lap around the current landscape:</p>
<ul>
<li class="font-claude-response-body whitespace-normal break-words"><strong>Facebook</strong>: AI-generated shrimp Jesuses (prawn Jesuses? Jesi?), boomer minion memes, and ads. Hard pass.</li>
<li class="font-claude-response-body whitespace-normal break-words"><strong>Twitter</strong> (it&#8217;s still Twitter, fight me): completely unusable vanilla, but if you slap on a few aggressive blocklists and <a href="https://chromewebstore.google.com/detail/clean-twitter/lbbfmkbgembfbohdadeggdcgdkmfdmpb?hl=en&amp;pli=1">extensions</a>, the programming/game-dev/indie-maker circles are still alive and kicking. You just have to dodge the daily outrage theater, but that&#8217;s par for the course these days.</li>
<li class="font-claude-response-body whitespace-normal break-words"><strong>Mastodon</strong>: the whole-foods co-op of social media. Kinda plain oatmeal energy, but honest, no ads, and every once in a while you stumble into a genuinely great thread about open-source tools or language learning.</li>
<li class="font-claude-response-body whitespace-normal break-words"><strong>Bluesky</strong>: I only poked my head in recently. The Discover tab is 95% sports and politics no matter how many times you smash &#8220;show less.&#8221; It&#8217;s like cat hair: inexplicably persistent. And no, I&#8217;m not building an infinite mute-word list for every football player and parliament member on earth, sorry.</li>
</ul>
<p class="font-claude-response-body whitespace-normal break-words">Everything else (TikTok, Instagram Reels, etc.) is just flickering slot machines for your dopamine receptors. We&#8217;re not even gonna talk about those.</p>
<p class="font-claude-response-body whitespace-normal break-words"><strong>The core problem</strong>: back in the day there were two big rooms—Facebook and Twitter—and basically everyone you knew was in one of them. Now the internet has shattered into ideological shards and everyone&#8217;s scattered across different platforms like post-divorcees who refuse to be in the same room.</p>
<p class="font-claude-response-body whitespace-normal break-words">Some thoughts belong on Twitter, some feel more Bluesky-ish, some are too nerdy for anywhere except Mastodon. Juggling logins, tabs, and different posting UIs feels like a second unpaid job. Context-switching tax is real and it sucks.</p>
<p class="font-claude-response-body whitespace-normal break-words">My personal rule: I don&#8217;t care where the good people are, I&#8217;ll go there. But I&#8217;m not gonna live in five apps.</p>
<p class="font-claude-response-body whitespace-normal break-words"><strong>So I built the laziest possible thing that solves my exact problem.</strong></p>
<p class="font-claude-response-body whitespace-normal break-words">It&#8217;s a tiny Electron app (oxymoron? ha!) with a Node.js backend (no db needed) that lets me post text and images to Twitter, Bluesky, and Mastodon from one box. No browser tabs. No copying and pasting. No logging in anywhere ever again.</p>
<p class="font-claude-response-body whitespace-normal break-words">Run the app → type stuff → pick platforms → hit send → close the app and forget social media exists until someone actually @s me.</p>
<p class="font-claude-response-body whitespace-normal break-words">Yes, I know Buffer exists. Yes, I know about Postiz and the rest. They&#8217;re great. They also either cost money the second you breathe on them or require self-hosting a small moon base. I just wanted something that costs exactly $0 and runs with one click.</p>
<p class="font-claude-response-body whitespace-normal break-words">I call it <strong>SocialSox</strong>, and the icon is literally a pair of socks, because social media mostly stinks in 2025, but sometimes you don&#8217;t wanna go barefoot.</p>
<p class="font-claude-response-body whitespace-normal break-words"><del>The repo is currently held together with hopes, dreams, and a disturbing amount of duct tape, but if a few people are actually interested I&#8217;ll tidy it up and throw it on GitHub. Let me know in the comments.</del></p>
<p><strong>UPDATE</strong>: Cleaned up the repo and open-sourced it. You can grab it here: <a href="https://github.com/burninc0de/socialsox/">github.com/burninc0de/socialsox</a></p>
<p class="font-claude-response-body whitespace-normal break-words">Until then, I&#8217;m back to posting a couple of times a week, except now I can do it from one place and immediately return to my cave.</p>
<p class="font-claude-response-body whitespace-normal break-words">Sayonara.</p>
<p>P.S. Twitter’s API is stingier than Scrooge McDuck. Polling for replies more than once an hour will either bankrupt you or exhaust your free tier before lunch. User discretion is advised.</p>
<p><strong>UPDATE</strong>: I just <a href="https://github.com/burninc0de/socialsox/">reworked</a> the layout and added a mixed Home Feed for Bluesky and Mastodon. Now you can see the whole discordant mess in one glance.</p>
<p>Twitter/X is still being a daisy about their API, so you can still yell into their void, you just won&#8217;t hear the echo (rate limits, you know the drill). Honestly? That’s probably a net positive for your mental health.</p>
<p><a href="https://andreklein.net/wp-content/uploads/2025/11/homefeed.png"><img loading="lazy" decoding="async" class="alignnone size-large wp-image-22472" src="https://andreklein.net/wp-content/uploads/2025/11/homefeed-1024x755.png" alt="" width="1024" height="755" srcset="https://andreklein.net/wp-content/uploads/2025/11/homefeed-1024x755.png 1024w, https://andreklein.net/wp-content/uploads/2025/11/homefeed-300x221.png 300w, https://andreklein.net/wp-content/uploads/2025/11/homefeed-768x566.png 768w, https://andreklein.net/wp-content/uploads/2025/11/homefeed.png 1289w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>But for the platforms that actually play nice, you now get all your hashtags and follows in one clean, infinitely scrolling desktop stream. No &#8220;smart&#8221; algorithm nonsense—just a linear feed that doesn&#8217;t treat you like a lab rat.</p>
<p>My favorite new feature: Mastodon language filtering. Mastodon still doesn&#8217;t filter followed hashtags by language by default (seriously, why?). In SocialSox, you can now:</p>
<ul>
<li>Kill the noise: Click a language code next to a post to instantly filter it out.</li>
<li>Prune the garden: Explicitly whitelist the languages you actually speak in Settings.</li>
<li>Nuke the corpo-spam: Mute the &#8220;brand voice&#8221; accounts on the fly.</li>
</ul>
<p>Using this as my daily driver, I’ve already stumbled onto more interesting stuff than I have in three years of browser-scrolling. It’s socials without the noise. Who knew?</p>
<p>&#8211;</p>
<p>The post <a href="https://andreklein.net/socialsox/">I Built My Own Damn Crossposter Because Social Media Is a Fragmented Hellscape</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/socialsox/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Strawberry 2.0: The Hebrew Letter That Breaks Every AI</title>
		<link>https://andreklein.net/strawberry-2-0-the-hebrew-letter-that-breaks-every-ai/</link>
					<comments>https://andreklein.net/strawberry-2-0-the-hebrew-letter-that-breaks-every-ai/#comments</comments>
		
		<dc:creator><![CDATA[André Klein]]></dc:creator>
		<pubDate>Sat, 22 Nov 2025 23:46:35 +0000</pubDate>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[tinker]]></category>
		<guid isPermaLink="false">https://andreklein.net/?p=22147</guid>

					<description><![CDATA[<p>The better AI models become at certain things the more fun it is to find things they horribly fail at. My new favorite low brow &#8220;benchmark&#8221;: draw the Hebrew letter Aleph in SVG format. It should be pretty simple in practice. Three lines: one long diagonal, one shorter curved line at the bottom (with optional [&#8230;]</p>
<p>The post <a href="https://andreklein.net/strawberry-2-0-the-hebrew-letter-that-breaks-every-ai/">Strawberry 2.0: The Hebrew Letter That Breaks Every AI</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="attachment_22148" style="width: 810px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/א.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22148" class="size-full wp-image-22148" src="https://andreklein.net/wp-content/uploads/2025/11/א.png" alt="" width="800" height="400" srcset="https://andreklein.net/wp-content/uploads/2025/11/א.png 800w, https://andreklein.net/wp-content/uploads/2025/11/א-300x150.png 300w, https://andreklein.net/wp-content/uploads/2025/11/א-768x384.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><p id="caption-attachment-22148" class="wp-caption-text">Reference: The letter Aleph in two different styles: traditional &#8220;serif&#8221;-style, and more modern sans-serif</p></div>
<p>The better AI models become at certain things the more fun it is to find things they horribly fail at. My new favorite low brow &#8220;benchmark&#8221;: draw the Hebrew letter Aleph in SVG format. It should be pretty simple in practice. Three lines: one long diagonal, one shorter curved line at the bottom (with optional &#8220;foot&#8221;) and another curved one top right.</p>
<p>Let&#8217;s start off with our everyman AI, the OG that unleashed this whole generative AI wave in late 2022: ChatGPT or &#8220;Geppetto&#8221;, as I like to call it. I asked it to complete the task and it immediately replied:</p>
<blockquote><p>Here&#8217;s a clean, scalable SVG of the Hebrew letter א (aleph)<cite>ChatGPT</cite></p></blockquote>
<div id="attachment_22154" style="width: 833px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/chatgpt.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22154" class="size-full wp-image-22154" src="https://andreklein.net/wp-content/uploads/2025/11/chatgpt.png" alt="" width="823" height="767" srcset="https://andreklein.net/wp-content/uploads/2025/11/chatgpt.png 823w, https://andreklein.net/wp-content/uploads/2025/11/chatgpt-300x280.png 300w, https://andreklein.net/wp-content/uploads/2025/11/chatgpt-768x716.png 768w" sizes="auto, (max-width: 823px) 100vw, 823px" /></a><p id="caption-attachment-22154" class="wp-caption-text">the letter Aleph according to ChatGPT</p></div>
<p>An absolute fail. Not just &#8220;rest-of-the-owl&#8221; territory, but utter madness. No further questions, your honor.</p>
<p>Let&#8217;s see what our boy Gemini came up with. Interestingly its first response was: &#8220;If you upgrade your subscription, I can create it for you today.&#8221; And when I politely (&#8220;nah bruh&#8221;) declined it finally busted out its crayons and declared:</p>
<blockquote><p>This structure contains the SVG definition of the Aleph. The path data traces the three main strokes of the letter. We use a bold, round stroke to mimic a brush<cite>Gemini</cite></p></blockquote>
<div id="attachment_22156" style="width: 622px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/gemini.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22156" class="size-full wp-image-22156" src="https://andreklein.net/wp-content/uploads/2025/11/gemini.png" alt="" width="612" height="671" srcset="https://andreklein.net/wp-content/uploads/2025/11/gemini.png 612w, https://andreklein.net/wp-content/uploads/2025/11/gemini-274x300.png 274w" sizes="auto, (max-width: 612px) 100vw, 612px" /></a><p id="caption-attachment-22156" class="wp-caption-text">What is that, a wet noodle?</p></div>
<p>A literal turd. I mean, you can kind of see what is was going for &#8230; kind of. At least there are three lines. But I think we can consider this a solid fail as well.</p>
<p>Next up, what did trusty old Claude have to offer? In perfect over-confident manner it declared:</p>
<blockquote><p>I&#8217;ve created an SVG of the Hebrew letter aleph (א). It shows the traditional form with three distinct strokes &#8211; the upper right diagonal, the central diagonal connecting them, and the lower left diagonal. The letter has a distinctive shape that&#8217;s been used in Hebrew writing for thousands of years.<cite>Claude</cite></p></blockquote>
<p>Wow, that sounds promising. Let&#8217;s open that SVG it painted:</p>
<div id="attachment_22158" style="width: 773px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/claude.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22158" class="wp-image-22158 size-full" src="https://andreklein.net/wp-content/uploads/2025/11/claude.png" alt="" width="763" height="705" srcset="https://andreklein.net/wp-content/uploads/2025/11/claude.png 763w, https://andreklein.net/wp-content/uploads/2025/11/claude-300x277.png 300w" sizes="auto, (max-width: 763px) 100vw, 763px" /></a><p id="caption-attachment-22158" class="wp-caption-text">is that a turd emoji or the Adobe logo?</p></div>
<p>I mean, it&#8217;s &#8230; bold, I&#8217;ll give old Claude <em>that</em>. But it has very little similarity with the actual letter Aleph.</p>
<p>After the Big Three had gloriously and spectacularly failed us, I thought it may be a good idea to let Grok 4 try its hand.</p>
<p>And of course it overpromised as well:</p>
<blockquote><p>Here is a complete brush-stroke calligraphy style drawing of the Hebrew letter א (Aleph) as if it&#8217;s being handwritten with an ink brush. It gives a very organic, calligraphic feel with subtle brush texture and flow.<cite>Grok</cite></p></blockquote>
<div id="attachment_22159" style="width: 823px" class="wp-caption alignnone"><a href="https://andreklein.net/wp-content/uploads/2025/11/grok.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-22159" class="size-large wp-image-22159" src="https://andreklein.net/wp-content/uploads/2025/11/grok-813x1024.png" alt="" width="813" height="1024" srcset="https://andreklein.net/wp-content/uploads/2025/11/grok-813x1024.png 813w, https://andreklein.net/wp-content/uploads/2025/11/grok-238x300.png 238w, https://andreklein.net/wp-content/uploads/2025/11/grok-768x967.png 768w, https://andreklein.net/wp-content/uploads/2025/11/grok.png 830w" sizes="auto, (max-width: 813px) 100vw, 813px" /></a><p id="caption-attachment-22159" class="wp-caption-text">&#8220;long cat&#8221; Aleph</p></div>
<p>Honestly, this is probably my favorite, because it looks so utterly comical, like these inflatable tube men you see flapping around in front of second-hand car dealerships. But yeah, another failure for sure.</p>
<p>I&#8217;m genuinely curious why all models dropped the ball here. Three simple lines. Not enough data perhaps? Too much variety in existing datasets from ancient scrolls to modern Hebrew print? At first I thought that the problem was the format: SVG, unlike jpg or png, contains actual path data and AI can&#8217;t really fall back on its &#8220;fuzzy context&#8221; strength. Every line has to be perfect. No blending and blurring like it does in rasterized image generation.</p>
<p>So I tried to let it create some complex shapes like bicycles in SVG format and these all turned out surprisingly well, despite having a lot more complexity than the three lines of the Aleph.</p>
<p>Whatever the reasons ultimately may be, this is now my &#8220;strawberry&#8221; test. And it&#8217;s just too much fun.</p>
<p>The post <a href="https://andreklein.net/strawberry-2-0-the-hebrew-letter-that-breaks-every-ai/">Strawberry 2.0: The Hebrew Letter That Breaks Every AI</a> appeared first on <a href="https://andreklein.net">André Klein Dot Net</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://andreklein.net/strawberry-2-0-the-hebrew-letter-that-breaks-every-ai/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
