<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>syslinx.org</title>
    <link>https://www.syslinx.org/</link>
    <description>Recent content on syslinx.org</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 10 Apr 2026 12:46:02 +0200</lastBuildDate>
    <atom:link href="https://www.syslinx.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Trip Planner for SOTA</title>
      <link>https://www.syslinx.org/blog/2026/trip-planner-for-sota/</link>
      <pubDate>Fri, 10 Apr 2026 12:46:02 +0200</pubDate>
      <guid>https://www.syslinx.org/blog/2026/trip-planner-for-sota/</guid>
      <description>&lt;p&gt;My home QTH is in Duisburg, NRW. There are no mountains nearby. The Sauerland is about an hour away, the nearest 10-point summit over two hours. If you want several high-pointers close enough together for a multi-activation day, you are looking at the Thuringian Forest, the Black Forest, or the Alps, all of which are four to six hours of driving.&lt;/p&gt;&#xA;&lt;p&gt;That makes trip planning an optimisation problem. Straight-line distance on a map is not a reliable guide to drive time, and a cluster of summits that looks useful may contain mostly expired references. So I put together a script to do the maths properly. It was written with help from Claude (Anthropic), mostly as a way to iterate quickly on the data pipeline and routing logic. The code is on &lt;a href=&#34;https://codeberg.org/ituri/sota-trip-planner&#34;&gt;Codeberg&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Optimize Video Playback in Firefox on Linux</title>
      <link>https://www.syslinx.org/blog/2025/optimize-video-playback-in-firefox-on-linux/</link>
      <pubDate>Mon, 01 Sep 2025 12:59:09 +0200</pubDate>
      <guid>https://www.syslinx.org/blog/2025/optimize-video-playback-in-firefox-on-linux/</guid>
      <description>&lt;p&gt;In between re-installing Arch on my Thinkpad T14s, I noticed some issues when using Firefox to watch videos on YouTube: After just a few minutes, my fans would spin up to an extent that quickly became very annoying.&lt;/p&gt;&#xA;&lt;p&gt;Upon researching a solution, I came across &lt;a href=&#34;https://github.com/Eratas/rapidfox&#34;&gt;RapidFox&lt;/a&gt;, which is a guide that explains some helpful parameters for Firefox tweaking. There, I found &lt;code&gt;dom.media.webcodecs.h265.enabled&lt;/code&gt;, which was set to &lt;code&gt;false&lt;/code&gt;. Turning it on enables hardware-accelerated H.265 decoding which seems to result in a much lower CPU usage, helping to keep the fans quiet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Summer SOTA trip</title>
      <link>https://www.syslinx.org/blog/2025/summer-sota-trip/</link>
      <pubDate>Fri, 22 Aug 2025 21:23:08 +0200</pubDate>
      <guid>https://www.syslinx.org/blog/2025/summer-sota-trip/</guid>
      <description>&lt;p&gt;At the beginning of August, I took some time to activate a few SOTA summits in southeastern Germany and in the northern part of France. Conveniently, all of the peaks were also located in one or more POTA parks.&lt;/p&gt;&#xA;&lt;p&gt;Rather than providing a detailed log for each activation, I wanted to share a few personal impressions and memories from these summits.&lt;/p&gt;&#xA;&lt;h2 id=&#34;dmbw-640--blößling-1310m&#34;&gt;&lt;a href=&#34;https://sotl.as/summits/DM/BW-640&#34;&gt;DM/BW-640 – Blößling (1310m)&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I parked near the quarry in Bernau-Wacht and began my ascent along a rather monotonous mountain road. Aside from the final stretch — where the path narrows and winds through fields of blueberries — the hike was fairly uneventful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixing the sound on my ThinkPad T14s Gen2</title>
      <link>https://www.syslinx.org/blog/2025/fixing-the-sound-on-my-thinkpad-t14s-gen2/</link>
      <pubDate>Thu, 31 Jul 2025 11:58:45 +0200</pubDate>
      <guid>https://www.syslinx.org/blog/2025/fixing-the-sound-on-my-thinkpad-t14s-gen2/</guid>
      <description>&lt;p&gt;Speakers on most ThinkPads are not known for their audiophile quality. However, the sound on my ThinkPad T14s Gen 2 was &lt;em&gt;really&lt;/em&gt; terrible on Linux; much more so than on Windows.&lt;/p&gt;&#xA;&lt;p&gt;The issue here is that the settings and drivers for Dolby Audio are not available as open source. Your best bet is to try and recreate the sound using certain equalizer settings. I have spent some time researching the best program for that and even more time on finding the best settings for my ThinkPad.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SOTA cluster notifications on Mac OS and Linux</title>
      <link>https://www.syslinx.org/blog/2025/sota-cluster-notifications-on-mac-os-and-linux/</link>
      <pubDate>Tue, 03 Jun 2025 12:44:27 +0200</pubDate>
      <guid>https://www.syslinx.org/blog/2025/sota-cluster-notifications-on-mac-os-and-linux/</guid>
      <description>&lt;p&gt;I wrote a small Python script that fetches data from the SOTA API and sends notifications once a new SOTA activator is spotted on the cluster.&lt;/p&gt;&#xA;&lt;p&gt;Thanks to &lt;a href=&#34;https://www.qrz.com/db/DF5WC&#34;&gt;Ullrich (DF5WC)&lt;/a&gt; for helping me get this script running on Linux as well!&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; requests&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; time&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; os&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; platform&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;API_URL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://api2.sota.org.uk/api/spots/10/all&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CHECK_INTERVAL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;60&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# seconds&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# List the modes you want to be notified about (case-insensitive)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;modes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SSB&amp;#34;&lt;/span&gt;]  &lt;span style=&#34;color:#75715e&#34;&gt;# Example: [&amp;#34;SSB&amp;#34;, &amp;#34;CW&amp;#34;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fetch_spots&lt;/span&gt;():&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;Fetch the latest spots from the SOTA API.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        resp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; requests&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(API_URL)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        resp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;raise_for_status()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; resp&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;json()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;except&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; e:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        print(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error fetching spots:&amp;#34;&lt;/span&gt;, e)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; []&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;notify&lt;/span&gt;(title, message):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;Send a notification using the appropriate system command.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    current_os &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; platform&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;system()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; current_os &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Darwin&amp;#34;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# macOS notification&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;system(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&amp;#39;osascript -e &amp;#39;display notification &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;message&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; with title &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;title&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#39; &amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; current_os &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Linux&amp;#34;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Linux notification (requires notify-send)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;system(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&amp;#39;notify-send &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;title&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;message&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        print(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Notification: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;title&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; - &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;message&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;():&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    seen &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; set()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    desired_modes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [m&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;upper() &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; m &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; modes]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        spots &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; fetch_spots()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; spot &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; spots:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            mode &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mode&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;upper()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; mode &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; desired_modes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# Create a unique spot ID to avoid duplicate notifications&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                spot_id &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;timeStamp&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;_&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;activatorCallsign&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;_&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;summitCode&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; spot_id &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; seen:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    callsign &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;activatorCallsign&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Unknown&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    freq &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;frequency&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Unknown&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    summit &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;summitCode&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    comment &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; spot&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;comments&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#75715e&#34;&gt;# Avoid showing &amp;#39;None&amp;#39; or empty comments in the notification&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; comment &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        comment &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    msg &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;callsign&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; on &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;freq&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; kHz (&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;summit&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; comment:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        msg &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;comment&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    notify(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;New &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;mode&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; station in SOTA Cluster&amp;#34;&lt;/span&gt;, msg)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    seen&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;add(spot_id)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Limit memory usage by keeping only the last 1000 spot IDs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(seen) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            seen &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; set(list(seen)[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;:])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sleep(CHECK_INTERVAL)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; __name__ &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    main()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://www.syslinx.org/about/</link>
      <pubDate>Tue, 15 Apr 2025 12:28:26 +0200</pubDate>
      <guid>https://www.syslinx.org/about/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.syslinx.org/images/about.jpg&#34; data-lightbox=&#34;gallery&#34;&gt;&#xA;  &lt;img src=&#34;https://www.syslinx.org/images/about.jpg&#34; alt=&#34;POTA activation&#34;&gt;&#xA;&lt;/a&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;I began my ham radio journey in August 2024, when I received my novice license.&lt;/p&gt;&#xA;&lt;p&gt;Initially, I had planned to study for Germany’s newly introduced N-class license, which is similar to the US Technician license and restricts operation to the 10m, 2m, and 70cm bands with a maximum of 10W EIRP. However, I soon realized that it would be more worthwhile to go straight for the proper novice class license (Class E). I continued my studies and passed the exam in August 2024. With my callsign &lt;em&gt;DO8PHK&lt;/em&gt;, I was then able to operate on 160m, 80m, 15m, 10m, as well as VHF (2m) and UHF (70cm).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://www.syslinx.org/contact/</link>
      <pubDate>Tue, 15 Apr 2025 12:28:26 +0200</pubDate>
      <guid>https://www.syslinx.org/contact/</guid>
      <description>&lt;p&gt;For details on how to contact me, see my &lt;a href=&#34;https://www.qrz.com/db/da2pk&#34;&gt;QRZ.com page&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SOTA in neutral territory</title>
      <link>https://www.syslinx.org/blog/2025/sota-in-neutral-territory/</link>
      <pubDate>Tue, 15 Apr 2025 09:04:19 +0200</pubDate>
      <guid>https://www.syslinx.org/blog/2025/sota-in-neutral-territory/</guid>
      <description>&lt;p&gt;On Easter Monday I used a short trip to Belgium as an excuse to activate &lt;a href=&#34;https://sotl.as/summits/ON/ON-026&#34;&gt;ON/ON-026 (Le Mont d&amp;rsquo;Henri-Chapelle)&lt;/a&gt;. Similar to my previous activation I had to fight against bad HF conditions. The ionosphere had been in a terrible state over the last few weeks, even leading to visible auroras in northern Germany, and today was no exception.&lt;/p&gt;&#xA;&lt;p&gt;I brought my beloved Elecraft KX-2 with the bigger, higher voltage battery, so I could boost the total power to 12W instead of the regular 10W the KX-2 delivers with my smaller batteries. Joking aside, I even had my Yaesu FL-110 PA as a backup in case conditions got even worse than expected. In the end, I didn&amp;rsquo;t need the PA and I got a total of 5 QSOs in just over 30 minutes, one more than the 4 required to activate a summit. (2x EA, 2x OH, 1x YO).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Springtime POTA</title>
      <link>https://www.syslinx.org/blog/2025/springtime-pota/</link>
      <pubDate>Fri, 11 Apr 2025 09:04:19 +0200</pubDate>
      <guid>https://www.syslinx.org/blog/2025/springtime-pota/</guid>
      <description>&lt;p&gt;On 11th April 2025 I decided to activate three new parks in my area. Contrary to my usual preferred mode of transportation, I took the car to carry along my heavy but trustworthy Yaesu FT-710. With a K-Index of 3.7 I decided it would be best to bring work with 100 instead of 10W power.&lt;/p&gt;&#xA;&lt;p&gt;My first park was &lt;a href=&#34;https://pota.app/#/park/DE-0999&#34;&gt;DE-0999 Latumer Bruch mit Buersbach, Stadtgräben und Wasserwerk Flora and Fauna Reserve&lt;/a&gt; which turned out to be crossed by &lt;a href=&#34;https://pota.app/#/park/DE-0602&#34;&gt;DE-0602 ( Nordrheinische Jakobswege National Historic Trail)&lt;/a&gt; at different corners of the park. Finding a suitable location both accessible by car and offering the possibility of a 2fer wasn&amp;rsquo;t so easy after all. I ended up close to a highway right at the border of the park which produced annyoing QRM on the 40m band.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
