<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>TIL on cge.dev</title>
    <link>https://cge.dev/tags/til/</link>
    <description>Recent content in TIL on cge.dev</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 24 Aug 2026 15:13:12 -0700</lastBuildDate>
    <atom:link href="https://cge.dev/tags/til/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ditch the Segger RTT Viewer app!</title>
      <link>https://cge.dev/posts/ditch-segger-rtt-viewer/</link>
      <pubDate>Thu, 11 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://cge.dev/posts/ditch-segger-rtt-viewer/</guid>
      <description>&lt;div class=&#34;notice note&#34;&gt;&#xA;  &lt;div class=&#34;notice-title&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;notice-content&#34;&gt;This post is part of a new series of short-form posts titled &lt;strong&gt;&lt;a href=&#34;https://cge.dev/series/today-i-learned/&#34; &gt;Today I learned&lt;/a&gt;&lt;/strong&gt;. These posts are intended to be short and more informal—my goal is for you to learn one thing quickly.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Segger&amp;rsquo;s &lt;a href=&#34;https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Real Time Transfer (RTT)&lt;/a&gt; feels like magic 🪄, but their RTT viewer application feels like you&amp;rsquo;re stuck back in the 1980&amp;rsquo;s 📟.&lt;/p&gt;&#xA;&lt;p&gt;For example: fonts are not configurable, there&amp;rsquo;s a clunky line-based input, and it only works with Latin1 (ISO/IEC 8859-1) encoded strings. If your device is sending UTF-8 characters to the RTT console, you get garbled output for multi-byte characters.&lt;/p&gt;</description>
    </item>
    <item>
      <title>USB-over-IP in Docker Containers</title>
      <link>https://cge.dev/posts/usb-over-ip-in-docker-containers/</link>
      <pubDate>Fri, 06 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://cge.dev/posts/usb-over-ip-in-docker-containers/</guid>
      <description>&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&lt;a href=&#34;images/usb-docker.webp&#34;&gt;&#xA;  &lt;img src=&#34;images/usb-docker.webp&#34; alt=&#34;usb-docker&#34; class=&#34;center&#34; /&gt;&#xA;&lt;/a&gt;&#xA;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://cge.dev/series/today-i-learned/&#34; &gt;Today I learned&lt;/a&gt;&lt;/strong&gt; Docker recently introduced &lt;a href=&#34;https://docs.docker.com/desktop/features/usbip/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;USB/IP protocol support&lt;/a&gt; in Docker Desktop version &lt;a href=&#34;https://docs.docker.com/desktop/release-notes/#4350&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;4.35.0&lt;/a&gt;. Since Docker containers do not support native USB passthrough, this feature makes it possible for Docker containers to remotely access USB devices attached to a machine running Docker Desktop. This is exciting because it opens the door to using Docker containers for embedded development workflows that need to access real hardware via USB.&lt;/p&gt;&#xA;&lt;p&gt;There is a great introductory article on the Golioth blog by founder and CEO Jonathan Beri, where he describes how he worked with the Docker team to integrate USB/IP support into Docker Desktop. The article walks through setting up a USB/IP server and how to connect to USB devices from a Docker container running in Docker Desktop.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Array initialization with ranges in C</title>
      <link>https://cge.dev/posts/array-initialization-with-ranges-in-c/</link>
      <pubDate>Mon, 01 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://cge.dev/posts/array-initialization-with-ranges-in-c/</guid>
      <description>&lt;div class=&#34;notice note&#34;&gt;&#xA;  &lt;div class=&#34;notice-title&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-sticky-note&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;Note&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;notice-content&#34;&gt;This post is part of a new series of short-form posts titled &lt;strong&gt;&lt;a href=&#34;https://cge.dev/series/today-i-learned/&#34; &gt;Today I learned&lt;/a&gt;&lt;/strong&gt;. These posts are intended to be short and more informal—my goal is for you to learn one thing quickly.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://cge.dev/series/today-i-learned/&#34; &gt;Today I learned&lt;/a&gt;&lt;/strong&gt; there is a &lt;a href=&#34;https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNU C extension&lt;/a&gt; for &lt;a href=&#34;https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;designated initializers&lt;/a&gt; that makes it possible to initialize a &lt;em&gt;range&lt;/em&gt; of elements in an array.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&lt;a href=&#34;images/range-example.webp&#34;&gt;&#xA;  &lt;img src=&#34;images/range-example.webp&#34; alt=&#34;range-example&#34; class=&#34;center&#34; /&gt;&#xA;&lt;/a&gt;&#xA;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;If you happen to be using GCC (or another compatible compiler that supports this GNU extension, like Clang), you can specify a &lt;em&gt;range&lt;/em&gt; (&lt;code&gt;[first ... last]&lt;/code&gt;) in the designated initializer list.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
