<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Lone C++ Coder's Blog</title><link>https://www.lonecpluspluscoder.com/</link><description>Recent content on The Lone C++ Coder's Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 01 Mar 2026 11:31:00 -0500</lastBuildDate><atom:link href="https://www.lonecpluspluscoder.com/index.xml" rel="self" type="application/rss+xml"/><item><title>We're using the wrong measure for LLM productivity</title><link>https://www.lonecpluspluscoder.com/post/2026-03-01-wrong-measure-llms/</link><pubDate>Sun, 01 Mar 2026 11:31:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/post/2026-03-01-wrong-measure-llms/</guid><description>&lt;p&gt;I&amp;rsquo;ve been spending a bit of time on LinkedIn lately after finally stopping my use of Xitter (you can find me on Mastodon instead). One of the tropes that I see being uncritically spouted over and over again is &amp;ldquo;I&amp;rsquo;m sooooooo productive, by spending $gazillion in LLM credits a day I&amp;rsquo;ll generate my new product at 50,000 lines of code day&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;While I&amp;rsquo;m applauding your effort to build a new, much needed product to fill a gaping hole in the market place, I&amp;rsquo;m sorry my dude (because it&amp;rsquo;s almost always a dude), but all you&amp;rsquo;re doing is generating technical debt at high velocity for a brief amount of time. Jon Bentley pointed out in his essays that turned into the book &amp;ldquo;Programming Pearls&amp;rdquo; (look it up) back in the 1980s that confusing, I&amp;rsquo;m sorry, measuring productivity by looking at the lines of code written is All The Wrong Measurements.&lt;/p&gt;</description></item><item><title>If you get this error from Time Machine on Samba, check available disk space</title><link>https://www.lonecpluspluscoder.com/post/2024-07-07-timemachine-on-samba/</link><pubDate>Sun, 07 Jul 2024 20:31:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/post/2024-07-07-timemachine-on-samba/</guid><description>&lt;p&gt;I&amp;rsquo;ve been using Samba with the &lt;code&gt;time machine&lt;/code&gt; setting for years to back up the couple of Macs I own. I&amp;rsquo;ve recently been running into issues with Time Machine backups erroring out with &lt;code&gt;&amp;quot;The network backup disk does not support the required capabilities&amp;quot;&lt;/code&gt;. Poking around the Internet didn&amp;rsquo;t really point at an obvious culprit until I found some mumblings about this potentially begin a disk space issue.&lt;/p&gt;
&lt;p&gt;Bingo!&lt;/p&gt;
&lt;p&gt;While the Samba server had more than enough disk space left, I had set the maximum Time Machine volume size to 3.5TB using the setting &lt;code&gt;fruit:time machine max size = 3.5T&lt;/code&gt;. Bumping this up to 4.5T magically made Time Maching backups work immediatly.&lt;/p&gt;</description></item><item><title>Don't forget to set the home directory for Emacs on Windows</title><link>https://www.lonecpluspluscoder.com/2023/11/05/install-set-emacs-homedir-windows/</link><pubDate>Sun, 05 Nov 2023 11:03:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2023/11/05/install-set-emacs-homedir-windows/</guid><description>&lt;p&gt;I&amp;rsquo;m currently rebuilding my main Windows machine after it had become close to unusable. Given that I upgraded it multiple times from Windows 7 all the way to Windows 11 without ever reinstalling the OS, this shouldn&amp;rsquo;t have come as a major surprise. Either way, this is the reason for the sudden outburst of Windows related posts so I can go and refer to my blog as my Internet Notes repository.&lt;/p&gt;</description></item><item><title>How to install WSL on Windows 11 without a default distribution</title><link>https://www.lonecpluspluscoder.com/2023/11/04/install-wsl-without-distribution/</link><pubDate>Sat, 04 Nov 2023 14:03:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2023/11/04/install-wsl-without-distribution/</guid><description>&lt;p&gt;On my Windows machine, I&amp;rsquo;ve mostly moved from using separate virtual machine products like Hyper-V or Virtualbox to have access to a Linux machine to using WSL. The PC is dual-boot with a separate Linux install anyway, but sometimes I just want to quickly fire up a Linux machine, take care of a couple of quick tasks and go back to Windows.&lt;/p&gt;
&lt;p&gt;WSL installs Ubuntu by default, but I tend to want a different distribution like OpenSUSE, Fedora etc. To not end up with a &amp;ldquo;spare&amp;rdquo; Ubuntu install, you can eitehr install WSL on a fresh Windows install without specifying a distributuion using &lt;code&gt;wsl --install --no-distribution&lt;/code&gt; or by installing a different distribution immediately using &lt;code&gt;wsl --install -d &amp;lt;distro name&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>How to build/upgrade emacs-mac using homebrew</title><link>https://www.lonecpluspluscoder.com/2022/10/22/homebrew-emacs-mac-cask-from-source/</link><pubDate>Sat, 22 Oct 2022 15:10:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2022/10/22/homebrew-emacs-mac-cask-from-source/</guid><description>&lt;p&gt;In the time honored tradition of using one&amp;rsquo;s blog as an Internet-enabled notepad, here&amp;rsquo;s a quick not on how I build GNU Emacs on macOS using homebrew and the emacs-mac port cask:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;brew upgrade -s railwaycat/emacsmacport/emacs-mac --with-mac-metal --with-imagemagick --with-native-comp --with-modern-icon --with-natural-title-bar&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This - amongst other features - turns on some experimental macOS-relevant features and most importantly, the optional native compilation of Elisp code.&lt;/p&gt;</description></item><item><title>Migrating source code from RCS to Mercurial</title><link>https://www.lonecpluspluscoder.com/2022/03/12/migrating-source-from-rcs-to-mercurial/</link><pubDate>Sat, 12 Mar 2022 19:47:03 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2022/03/12/migrating-source-from-rcs-to-mercurial/</guid><description>&lt;p&gt;Version control system migrations are a fact of life for developers in any longer lived codebase. In fact, I&amp;rsquo;ve had a hand in quite a few migrations as newer, more workable version control systems became available. Also, like a lot of developers, I&amp;rsquo;ve got fragments of source code dating back quite some years floating around on various servers and development machines of mine. Not necessarily code that is still being used, but still code that I don&amp;rsquo;t want to just delete forever. Some of the oldest code I have uses &lt;a href="https://www.gnu.org/software/rcs/"&gt;RCS&lt;/a&gt; for source control and hasn&amp;rsquo;t been touched for a long, long time. As my machines generally don&amp;rsquo;t have anything as old as RCS installed for version control, I decided this might be a good time to migrate the code to my version control system of choice, &lt;a href="https://www.mercurial-scm.org/"&gt;Mercurial&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How can I pin dependent packages when using use-package?</title><link>https://www.lonecpluspluscoder.com/2022/02/20/can-i-pin-dependent-packages-use-package/</link><pubDate>Sun, 20 Feb 2022 21:15:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2022/02/20/can-i-pin-dependent-packages-use-package/</guid><description>&lt;p&gt;I&amp;rsquo;ve been trying to up my &lt;code&gt;use-package&lt;/code&gt; game recently and converted my hand rolled package check and installer to &lt;code&gt;use-package&lt;/code&gt;. I usually prefer to use packages from &lt;code&gt;melpa-stable&lt;/code&gt; so I pin the default package source used by &lt;code&gt;use-package&lt;/code&gt; to &lt;code&gt;melpa-stable&lt;/code&gt; and override it where necessary That&amp;rsquo;s working well in general and looks something like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(&lt;span style="color:#366"&gt;setq&lt;/span&gt; &lt;span style="color:#033"&gt;use-package-always-pin&lt;/span&gt; &lt;span style="color:#c30"&gt;&amp;#34;melpa-stable&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(&lt;span style="color:#366"&gt;use-package&lt;/span&gt; &lt;span style="color:#033"&gt;js2-mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#366"&gt;:ensure&lt;/span&gt; &lt;span style="color:#360"&gt;t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#366"&gt;:defer&lt;/span&gt; &lt;span style="color:#360"&gt;t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#366"&gt;:custom&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#366"&gt;progn&lt;/span&gt; (&lt;span style="color:#033"&gt;js-indent-level&lt;/span&gt; &lt;span style="color:#f60"&gt;2&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#033"&gt;js2-include-node-externs&lt;/span&gt; &lt;span style="color:#360"&gt;t&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(&lt;span style="color:#366"&gt;use-package&lt;/span&gt; &lt;span style="color:#033"&gt;kotlin-mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#366"&gt;:ensure&lt;/span&gt; &lt;span style="color:#360"&gt;t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#366"&gt;:pin&lt;/span&gt; &lt;span style="color:#033"&gt;melpa&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;So in other words, if I&amp;rsquo;m on a machine that doesn&amp;rsquo;t have &lt;code&gt;js2-mode&lt;/code&gt; and &lt;code&gt;kotlin-mode&lt;/code&gt; installed, &lt;code&gt;use-package&lt;/code&gt; will install &lt;code&gt;js2-mode&lt;/code&gt; from &lt;code&gt;melpa-stable&lt;/code&gt; and &lt;code&gt;kotlin-mode&lt;/code&gt; from &lt;code&gt;melpa&lt;/code&gt;. So far, so good.&lt;/p&gt;</description></item><item><title>Another quick Isso setup tweak</title><link>https://www.lonecpluspluscoder.com/2022/02/17/another-quick-isso-setup-tweak/</link><pubDate>Thu, 17 Feb 2022 17:19:54 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2022/02/17/another-quick-isso-setup-tweak/</guid><description>&lt;p&gt;While I was implementing a few more changes on my web server - mostly adding the sorely needed blacklistd configuration for sshd - I noticed that NGINX&amp;rsquo;s log was showing occasional errors when trying to contact the &lt;a href="https://posativ.org/isso/"&gt;Isso&lt;/a&gt; process. They all had one thing in common, namely that they were all trying to contact ISSO via IPV6 as the server has both stacks enabled. Turns out that isso only listens on an IPV4 socket and I could not find an obvious way to get it to listen on both.&lt;/p&gt;</description></item><item><title>Using Elliptical curve cryptography for TLS with Postfix, Dovecot and nginx</title><link>https://www.lonecpluspluscoder.com/2022/01/08/ecdsa-with-postfix-dovecot-and-nginx/</link><pubDate>Sat, 08 Jan 2022 17:42:08 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2022/01/08/ecdsa-with-postfix-dovecot-and-nginx/</guid><description>&lt;p&gt;I may have mentioned this before - I do run my own virtual servers for important services (basically email and my web presence). I do this mostly for historic reasons and also because I&amp;rsquo;m not a huge fan of using centralised services for all of the above. The downside is that you pretty much have to learn at least about basic security. Over the 20+ years I&amp;rsquo;ve been doing this, the Internet hasn&amp;rsquo;t exactly become a less hostile place. Anyway, Elliptic Curve Certificates, what about them?&lt;/p&gt;</description></item><item><title>Unborking my ISSO comments system and making it more resilient</title><link>https://www.lonecpluspluscoder.com/2021/11/27/fixed-isso-comments-and-made-more-resilient/</link><pubDate>Sat, 27 Nov 2021 16:00:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2021/11/27/fixed-isso-comments-and-made-more-resilient/</guid><description>&lt;p&gt;First, I apologise for not noticing that the comments had been broken for a while. This was entirely my fault and not fault of &lt;a href="https://posativ.org/isso/"&gt;ISSO&lt;/a&gt;, which I&amp;rsquo;m still super happy with as a self-hosted comments system. So in this post I&amp;rsquo;m going to describe what went wrong, and also how I made the system a little more resilient at the same time.&lt;/p&gt;
&lt;h2 id="first-what-did-go-wrong"&gt;First, what did go wrong?&lt;/h2&gt;
&lt;p&gt;My web server is using &lt;a href="http://www.freebsd.org/"&gt;FreeBSD&lt;/a&gt; as its OS, with a bunch of software installed via FreeBSD&amp;rsquo;s ports system. For those not that familiar with FreeBSD&amp;rsquo;s ports, the system essentially acts like a rolling distribution. As a result, you sometimes have to upgrade tools, especially languages like Perl, Ruby, and in this case, Python. A little while ago, the default Python version on FreeBSD was upgraded from Python 3.7 to Python 3.8, and I eventually followed along with that upgrade. ISSO is run out of a &lt;code&gt;virtualenv&lt;/code&gt; as a regular user and the &lt;code&gt;virtualenv&lt;/code&gt; was still using Python 3.7, but I decided I didn&amp;rsquo;t want to keep multiple Python versions on this machine. So, I upgraded the version in the &lt;code&gt;virtualenv&lt;/code&gt; to 3.8 as well. So far, so good, especially as ISSO seemed to restart without issue.&lt;/p&gt;</description></item><item><title>Upgrading my OpenBSD WireGuard server to in-kernel WireGuard</title><link>https://www.lonecpluspluscoder.com/2021/10/31/openbsd-wireguard-upgrade-to-in-kernel/</link><pubDate>Sun, 31 Oct 2021 19:00:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2021/10/31/openbsd-wireguard-upgrade-to-in-kernel/</guid><description>&lt;p&gt;I&amp;rsquo;ve blogged about &lt;a href="https://www.lonecpluspluscoder.com/2019/12/27/building-an-openbsd-wireguard-server/"&gt;putting together a WireGuard server using OpenBSD a couple of years back&lt;/a&gt;. The main purpose of the server was to ensure a slightly more secure connection when I was on hotel WiFi. Of course thanks to the pandemic, I have barely travelled in the past couple of years so the server was mostly dormant. In fact, I kept VM turned off for most of the time. The VPN server was set up on OpenBSD 6.6, which was the last release that supported user mode WireGuard and didn&amp;rsquo;t have an in-kernel implementation. It was finally time to change that as part of an upgrade to OpenBSD 7.0.&lt;/p&gt;</description></item><item><title>Migrating from my trusty 2009 Mac Pro to a 2020 Mac Mini M1</title><link>https://www.lonecpluspluscoder.com/2021/09/23/migrating-from-2009-mac-pro-to-2020-mac-mini-m1/</link><pubDate>Thu, 23 Sep 2021 19:00:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2021/09/23/migrating-from-2009-mac-pro-to-2020-mac-mini-m1/</guid><description>&lt;p&gt;I&amp;rsquo;ve been using a 2009 cheesegrater Mac Pro for quite a while now. I bought it used quite a while ago - around 2013 if I remember correctly - and it&amp;rsquo;s been serving as my main photo/video/general programming workhorse, although the latter tasks have been taken over mostly by a Linux machine housed in the infamous &lt;a href="https://www.lonecpluspluscoder.com/2021/09/21/wrapping-up-nzxt-h1-saga/"&gt;NZXT H1 case&lt;/a&gt;. It&amp;rsquo;s been upgraded a lot during its life - now has the latest 6 core Xeon these machines support including the upgrade to 2010 firmware, USB 3.0 ports, PCIe SATA cards to get SATA-3 and a PCIe NVMe card, plus a Mac-flashed AMD RX580. Nevertheless, it was showing more and more signs of getting long in tooth. Plus some of the software that I&amp;rsquo;m using really would like to use macOS 10.15, which this Mac Pro doesn&amp;rsquo;t support unless I effectively turn it into a Hackintosh. Combine that with distinct signs of the machine getting geriatric and I decided that I was time for a replacement. But what?&lt;/p&gt;</description></item><item><title>Wrapping up the NZXT H1 recall saga</title><link>https://www.lonecpluspluscoder.com/2021/09/21/wrapping-up-nzxt-h1-saga/</link><pubDate>Tue, 21 Sep 2021 21:00:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2021/09/21/wrapping-up-nzxt-h1-saga/</guid><description>&lt;p&gt;As I mentioned in my &lt;a href="https://www.lonecpluspluscoder.com/post/2021-05-16-nzxt-h1-saga-continued/"&gt;post from a few months ago&lt;/a&gt;, I had received the temporary fix in the form of the nylon screws and nuts from NZXT. At that point in time, NZXT&amp;rsquo;s customer support was not able to tell me when to expect the &amp;ldquo;real&amp;rdquo; fix, namely the updated PCIe riser.&lt;/p&gt;
&lt;p&gt;I ended up contacting them again towards the end of July to see what the status was and apparently, my request had somehow fallen through the cracks. To the credit of NZXT&amp;rsquo;s customer support, after I reached out to them I received the riser within a few days.&lt;/p&gt;</description></item><item><title>Automatically enabling multiple Emacs minor modes via a major mode hook</title><link>https://www.lonecpluspluscoder.com/2021/09/07/emacs-enable-multiple-minor-modes-from-major-mode/</link><pubDate>Tue, 07 Sep 2021 19:15:00 +0000</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2021/09/07/emacs-enable-multiple-minor-modes-from-major-mode/</guid><description>&lt;p&gt;In Emacs, I usually end up enabling the same set of minor modes when I use one of my &amp;ldquo;writing modes&amp;rdquo;, namely modes like markdown-mode and org-mode. Enabling a single minor mode automatically is generally pretty easy via the appropriate mode hook, but enabling more than one minor mode requires one more level of indirection. Of course it does, because everything in computer science requires one more level of indirection :).&lt;/p&gt;</description></item><item><title>TIL that org-mode has an exporter for ODT</title><link>https://www.lonecpluspluscoder.com/2021/08/25/til-org-mode-odt-exporter/</link><pubDate>Wed, 25 Aug 2021 21:00:00 -0500</pubDate><author>Timo Geusch</author><guid>https://www.lonecpluspluscoder.com/2021/08/25/til-org-mode-odt-exporter/</guid><description>&lt;p&gt;I&amp;rsquo;m by no means an Emacs &lt;a href="https://orgmode.org"&gt;org-mode&lt;/a&gt; power user - in fact, anything but - but I do use org-mode a lot for note taking and also when I need an outliner to try and arrange ideas in a suitable manner. It excels at both, and usually does what I need including exporting to HTML. Exporting to HTML covers about 90% of my use cases. As much as I&amp;rsquo;d like to, LaTeX does not feature in my needs, but I needed to export an org-mode file for use with Microsoft Word. While there is no exporter directing into docx format, Microsoft Word can read ODT (OpenDocument Text) and guess what, org-mode does include an exporter for ODT. Problem solved, and I hope this information helps if you&amp;rsquo;re running into the same problem.&lt;/p&gt;</description></item></channel></rss>