<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>fdi.sk</title>
    <link>/</link>
    <description>Recent content on fdi.sk</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>© Simeon Miteff</copyright>
    <lastBuildDate>Sat, 23 Aug 2025 00:00:00 +1000</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>My year-long quest to debug a single TCP connection</title>
      <link>/posts/tcpinfo/</link>
      <pubDate>Sat, 23 Aug 2025 00:00:00 +1000</pubDate>
      <guid>/posts/tcpinfo/</guid>
      <description>After my year-long quest to debug a mysterious and faulty TCP connection, I created go-tcpinfo. It&amp;rsquo;s a Go library for safely getting TCP_INFO metrics from the Linux kernel, built to provide the deep observability needed to solve such issues.</description>
    </item>
    <item>
      <title>Extracting a rotten Bluetooth</title>
      <link>/posts/blueteeth/</link>
      <pubDate>Tue, 30 Jul 2024 00:00:00 +1000</pubDate>
      <guid>/posts/blueteeth/</guid>
      <description>I remove the unreliable Bluetooth module from my cheap ELM327 (clone) OBD-II scan tool and add good-old wired USB.</description>
    </item>
    <item>
      <title>Waking up a 23-year old GPS module</title>
      <link>/posts/jupiter/</link>
      <pubDate>Mon, 28 Mar 2022 00:00:00 +1000</pubDate>
      <guid>/posts/jupiter/</guid>
      <description>The adventure of bringing an early consumer GPS module (23 years old!) to life and connecting it to a Raspberry Pi to make a stratum-1 NTP server. Bonus: some reflections on tech that was built to last.</description>
    </item>
    <item>
      <title>Adventures in abstraction with Rust&#39;s embedded-hal</title>
      <link>/posts/embedded-life/</link>
      <pubDate>Mon, 11 Oct 2021 00:00:00 +1000</pubDate>
      <guid>/posts/embedded-life/</guid>
      <description>An experiment with Rust&amp;rsquo;s embedded-hal abstraction: I have a common implementation of Game Of Life rendering to an OLED display on three different platforms: an SDL simulator on my desktop, and via I2C on Raspberry Pi running Linux, and bare metal on an STM32 ARM Cortex-M.</description>
    </item>
    <item>
      <title>Fixing a reject mains voltage sensor</title>
      <link>/posts/wrong-opamp/</link>
      <pubDate>Tue, 24 Aug 2021 00:00:00 +1000</pubDate>
      <guid>/posts/wrong-opamp/</guid>
      <description>I tell a story (mostly with photos) about replacing my incorrectly assembled ZMPT101B mains voltage sensor module by replacing an incorrect op-amp after figuring out what the correct part is (through some internet sleuthing).</description>
    </item>
    <item>
      <title>Calibrating a Ruideng RD6006 power supply</title>
      <link>/posts/riden-cal/</link>
      <pubDate>Sat, 03 Jul 2021 00:00:00 +1000</pubDate>
      <guid>/posts/riden-cal/</guid>
      <description>I work out how to save RD6006 power supply calibration register values (by sniffing serial port output from the RDTech Windows software) and then write two Python scripts: one to adjust the calibration and another to check it by sweeping through the output voltage range, measure and then plot actual output values.</description>
    </item>
    <item>
      <title>Conway&#39;s Game of Life in Verilog and C&#43;&#43;</title>
      <link>/posts/life/</link>
      <pubDate>Mon, 22 Jun 2020 00:00:00 +1300</pubDate>
      <guid>/posts/life/</guid>
      <description>A story about implementing Conway&amp;rsquo;s Game Of Life while learning the Verilog hardware description language. I do a performance comparison between a hand-implemented C++ version and a simulator generated with the fantastic Verilator. Along the way there is some Python bashing and a minor existential crisis. Fun times!</description>
    </item>
  </channel>
</rss>
