<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Robert Bost</title>
    <link>https://bost.dev/</link>
    <description>Recent content on Robert Bost</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>en-us</language>
    <copyright>2025 Robert Bost</copyright>
    <lastBuildDate>Mon, 13 Jul 2026 10:42:33 -0600</lastBuildDate>
    <atom:link href="https://bost.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>When Answers Have Zero Latency</title>
      <link>https://bost.dev/posts/when-answers-have-zero-latency/</link>
      <pubDate>Mon, 13 Jul 2026 10:42:33 -0600</pubDate>
      <guid>https://bost.dev/posts/when-answers-have-zero-latency/</guid>
      <description>&lt;p&gt;What happens when an AI can give us a good answer with effectively zero latency?&lt;/p&gt;
&lt;p&gt;I do not mean literally zero milliseconds. Physics will continue to be annoying. I mean that the time between asking a question and getting a useful answer becomes too small to matter. The answer arrives quickly enough that waiting for it no longer affects what we do next.&lt;/p&gt;
&lt;p&gt;The obvious consequence is faster generation. Emails, code, plans, product ideas, contracts, and analysis all appear nearly instantly. But generation is only one part of the change. An AI can also evaluate its answer, find weaknesses, produce alternatives, test them, and repeat the process. If each pass approaches zero latency, then the entire loop begins to collapse:&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://bost.dev/about/</link>
      <pubDate>Mon, 02 Jun 2025 14:18:06 -0600</pubDate>
      <guid>https://bost.dev/about/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m Robert Bost, a software engineer at Red Hat specializing in Linux systems, cloud platforms, and open source infrastructure. My work focuses on building reliable cloud-native environments and writing the software that helps teams understand and operate complex systems.&lt;/p&gt;
&lt;p&gt;At Red Hat, I support internal teams through technical enablement, troubleshooting, and scalable solution development. I stay close to both the code and the systems.&lt;/p&gt;
&lt;p&gt;This blog is where I share what I&amp;rsquo;m building, learning, and exploring — from backend code and architecture to automation and tooling.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quikey Release 0.1.3</title>
      <link>https://bost.dev/posts/release-0_1_3/</link>
      <pubDate>Sun, 22 Nov 2020 00:07:35 +0000</pubDate>
      <guid>https://bost.dev/posts/release-0_1_3/</guid>
      <description>&lt;p&gt;Quikey 0.1.3 was released today and includes interactive editing and removal of phrases. This solves the problem with having to know the phrase name/key at time of edit or removal. It also solve a problem where typing the phrase name/key itself performs the text expansion!&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a brief demo showing the new feature: &lt;a href=&#34;https://asciinema.org/a/FWxBE5bolPRW75eYsD78xvVUC&#34;&gt;https://asciinema.org/a/FWxBE5bolPRW75eYsD78xvVUC&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In addition to the new feature above, the &lt;code&gt;--help&lt;/code&gt; output is now more helpful. Also, you can no longer create a phrase name/key that is an empty since that led to zero usability of your keyboard.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quikey Release 0.1.2</title>
      <link>https://bost.dev/posts/release-0_1_2/</link>
      <pubDate>Thu, 13 Aug 2020 02:07:59 +0000</pubDate>
      <guid>https://bost.dev/posts/release-0_1_2/</guid>
      <description>&lt;p&gt;Quikey 0.1.2 was released yesterday and includes the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A feature to import from &lt;a href=&#34;https://github.com/autokey/autokey&#34;&gt;AutoKey&lt;/a&gt;. See &lt;code&gt;qk keyimport --help&lt;/code&gt; for a quick reference on how to use.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/bostrt/quikey/pull/37&#34;&gt;Autostart for the Quikey daemon&lt;/a&gt; so there&amp;rsquo;s no need to run &lt;code&gt;qk start&lt;/code&gt; after a reboot or login. This should work on GNOME, Xfce, KDE, and other desktop environments following the XDG Desktop Entry standard.&lt;/li&gt;
&lt;li&gt;Added a lot of &lt;a href=&#34;https://github.com/bostrt/quikey/pull/34&#34;&gt;unit tests&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A few more minor bug fixes.&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Auto Key Import</title>
      <link>https://bost.dev/posts/auto-key-import/</link>
      <pubDate>Thu, 16 Jul 2020 03:14:11 +0000</pubDate>
      <guid>https://bost.dev/posts/auto-key-import/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s some good work being done &lt;a href=&#34;https://github.com/bostrt/quikey/pull/42&#34;&gt;here&lt;/a&gt; to add import functionality for &lt;a href=&#34;https://github.com/autokey/autokey&#34;&gt;AutoKey&lt;/a&gt; users. This should ease migration for someone with a large AutoKey database. Of course, AutoKey has way more functionality than Quikey so we&amp;rsquo;ll only be importing key phrases (no mouse or scripting will be migrated).&lt;/p&gt;
&lt;p&gt;Hope everyone is staying safe, healthy, and active. &amp;lt;3&lt;/p&gt;</description>
    </item>
    <item>
      <title>Start of Quikey Blog</title>
      <link>https://bost.dev/posts/start-of-quikey-blog/</link>
      <pubDate>Thu, 12 Mar 2020 01:17:38 +0000</pubDate>
      <guid>https://bost.dev/posts/start-of-quikey-blog/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll be hosting a blog here to track development of an application I develop called &lt;a href=&#34;https://github.com/bostrt/quikey&#34;&gt;Quikey&lt;/a&gt;, a keyboard macro tool. Content on this blog will be about new and old features, design, and future plans for Quikey.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update #3 on Pocket-Sized Satellite Tracker</title>
      <link>https://bost.dev/posts/update-on-pocket-sized-satellite-tracker-2/</link>
      <pubDate>Thu, 10 May 2018 01:06:58 +0000</pubDate>
      <guid>https://bost.dev/posts/update-on-pocket-sized-satellite-tracker-2/</guid>
      <description>&lt;p&gt;I haven&amp;rsquo;t updated much on the satellite tracker but I figured I would make the repo public since it is just sitting there at the moment. :)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/bostrt/sattrack&#34;&gt;https://github.com/bostrt/sattrack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/bostrt/libpredict-arduino-lib&#34;&gt;https://github.com/bostrt/libpredict-arduino-lib&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I plan to work on this some more before upcoming DEF CON 26.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update #2 on Pocket-Sized Satellite Tracker</title>
      <link>https://bost.dev/posts/update-on-pocket-sized-satellite-tracker-1/</link>
      <pubDate>Fri, 27 Oct 2017 23:11:52 +0000</pubDate>
      <guid>https://bost.dev/posts/update-on-pocket-sized-satellite-tracker-1/</guid>
      <description>&lt;p&gt;Things are progressing nicely on the satellite tracker. The following is functional:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/la1k/libpredict/&#34;&gt;libpredict&lt;/a&gt; modified to work on &lt;a href=&#34;https://www.adafruit.com/product/2772&#34;&gt;Adafruit Feather M0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.adafruit.com/product/3295&#34;&gt;Real-time clock&lt;/a&gt; with battery backup complete&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.adafruit.com/product/1895&#34;&gt;Storage&lt;/a&gt; for configs complete&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.amazon.com/Diymall-Serial-128x64-Display-Arduino/dp/B01HHOETIA&#34;&gt;OLED display&lt;/a&gt; working and displaying data calculated by libpredict&lt;/li&gt;
&lt;li&gt;USB Serial interface for configuring location, callsign, TLE&amp;rsquo;s, and time (in case RTC loses battery power)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;current-tasks&#34;&gt;Current tasks&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Develop a dev pcb to replace bread-board. Just something that all the breakout boards above solder onto&lt;/li&gt;
&lt;li&gt;Finish display graphics&lt;/li&gt;
&lt;li&gt;code-cleanup&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;screenshot--photos&#34;&gt;Screenshot &amp;amp; Photos&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Serial interface&lt;/em&gt;&lt;img alt=&#34;Screenshot from 2017-10-28 11-10-24.png&#34; loading=&#34;lazy&#34; src=&#34;https://bost.dev/wp-content/uploads/2017/10/screenshot-from-2017-10-28-11-10-24.png&#34;&gt; &lt;em&gt;All components&lt;/em&gt;&lt;img alt=&#34;IMG_20171028_105906851.jpg&#34; loading=&#34;lazy&#34; src=&#34;https://bost.dev/wp-content/uploads/2017/10/img_20171028_105906851.jpg&#34;&gt; &lt;em&gt;Polar chart that will display relative satellite position&lt;/em&gt;&lt;img alt=&#34;IMG_20171028_105938349.jpg&#34; loading=&#34;lazy&#34; src=&#34;https://bost.dev/wp-content/uploads/2017/10/img_20171028_105938349.jpg&#34;&gt; &lt;em&gt;Missing photo of the satellite position data due to being in middle of display code rewrite.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update on Pocket-Sized Satellite Tracker</title>
      <link>https://bost.dev/posts/update-on-pocket-sized-satellite-tracker/</link>
      <pubDate>Thu, 28 Sep 2017 00:35:06 +0000</pubDate>
      <guid>https://bost.dev/posts/update-on-pocket-sized-satellite-tracker/</guid>
      <description>&lt;p&gt;After some fighting with &lt;a href=&#34;https://github.com/la1k/libpredict/&#34;&gt;libpredict&lt;/a&gt;, I found that I am going to need a microcontroller with better floating-point support. The Atmega series of microcontrollers do not have an &lt;a href=&#34;https://en.wikipedia.org/wiki/Floating-point_unit&#34;&gt;FPU&lt;/a&gt; which means any floating-point support is hard (either inaccurate, slow, or hacked).&lt;/p&gt;
&lt;p&gt;I found that some of the ARM Cortex processors do indeed have an FPU and their also come in  similar form as Arduinos or other development boards:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Adafruit Feather M0 Basic Proto - ATSAMD21 Cortex M0&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-shop.adafruit.com/970x728/2772-01.jpg&#34;&gt;&lt;a href=&#34;https://www.adafruit.com/product/2772&#34;&gt;https://www.adafruit.com/product/2772&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Beginning Pocket-Sized Satellite Tracking</title>
      <link>https://bost.dev/posts/beginning-pocket-sized-satellite-tracking/</link>
      <pubDate>Fri, 15 Sep 2017 23:07:30 +0000</pubDate>
      <guid>https://bost.dev/posts/beginning-pocket-sized-satellite-tracking/</guid>
      <description>&lt;p&gt;A couple months ago, I worked on putting a &lt;a href=&#34;https://bost.dev/2017/07/22/flyby-satellite-tracking-on-raspberry-pi/&#34;&gt;satellite tracking application on a Raspberry Pi&lt;/a&gt;. This worked okay but I have to use a keyboard to select the satellite I want to track before going outside to find it. I also have to lug around an external battery outside which isn&amp;rsquo;t fun. I could really use something more compact.&lt;/p&gt;
&lt;p&gt;Hard Requirements&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Screen + Buttons&lt;/li&gt;
&lt;li&gt;Tracking multiple satellites (not hundreds, just a few)&lt;/li&gt;
&lt;li&gt;Display Azimuth&lt;/li&gt;
&lt;li&gt;Display Elevation&lt;/li&gt;
&lt;li&gt;Display transponder frequency with Doppler shift&lt;/li&gt;
&lt;li&gt;Polar plot (sky plot)&lt;/li&gt;
&lt;li&gt;Button to switch between satellites&lt;/li&gt;
&lt;li&gt;Ability to set the time and timezone on device (RTC required)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Soft Requirements&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flyby Satellite Tracking on Raspberry Pi</title>
      <link>https://bost.dev/posts/flyby-satellite-tracking-on-raspberry-pi/</link>
      <pubDate>Sat, 22 Jul 2017 03:23:35 +0000</pubDate>
      <guid>https://bost.dev/posts/flyby-satellite-tracking-on-raspberry-pi/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;qth&#34; loading=&#34;lazy&#34; src=&#34;https://bost.dev/wp-content/uploads/2017/07/qth.png&#34;&gt;&lt;a href=&#34;https://github.com/la1k/flyby&#34;&gt;Flyby&lt;/a&gt; is a satellite tracking application that runs in a terminal (no GUI required). I wanted to run it on my Raspberry Pi that has a display attached to it so I can carry it outside with me when tracking amateur satellites. This is much easier to move around than a laptop or even my phone where I have to keep the screen from going to sleep or touching something on the screen.Setting up Flyby on a Raspberry Pi was a bit of a challenge but it is now working fine. Here’s my setup steps:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing mod_serverheader</title>
      <link>https://bost.dev/posts/introducing-mod-serverheader/</link>
      <pubDate>Sun, 19 Mar 2017 03:20:52 +0000</pubDate>
      <guid>https://bost.dev/posts/introducing-mod-serverheader/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/bostrt/mod_serverheader&#34;&gt;mod_serverheader project site&lt;/a&gt; In my work, I have seen people performing security scans, going through audits, and stumbling upon information they wish they could hide about their webservers.&lt;/p&gt;
&lt;p&gt;One of the simplest questions that comes up over-and-over is regarding the Server header in Apache HTTPD responses; the thing with the arrows are pointing to below:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# curl -I http://localhost/
HTTP/1.1 200 OK
Date: Tue, 28 Feb 2017 20:56:24 EST
Server: Apache/2.4.25 (Fedora) OpenSSL/1.0.2k-fips  ◀◀◀◀◀◀◀◀
Content-Type: text/html; charset=UTF-8
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There are a couple ways to reduce what is disclosed in the Server header.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ModSecurity 2.9.x in 5 minutes</title>
      <link>https://bost.dev/posts/modsecurity-x-in-minutes/</link>
      <pubDate>Wed, 01 Mar 2017 04:18:17 +0000</pubDate>
      <guid>https://bost.dev/posts/modsecurity-x-in-minutes/</guid>
      <description>&lt;p&gt;There are just a few fundamental pieces to learn in order to get started with ModSecurity.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Phases&lt;/li&gt;
&lt;li&gt;Actions and Rules&lt;/li&gt;
&lt;li&gt;Collections&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;phases&#34;&gt;Phases&lt;/h2&gt;
&lt;p&gt;There are 5 phases of request processing in ModSecurity &lt;a href=&#34;https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Processing_Phases&#34;&gt;1&lt;/a&gt;. You can hook into any one these phases using the &lt;code&gt;phase&lt;/code&gt; keyword when writing ModSecurity Actions and Rules. The 5 phases occur in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Request Headers Phase&lt;/li&gt;
&lt;li&gt;Request Body Phase&lt;/li&gt;
&lt;li&gt;Response Headers Phase&lt;/li&gt;
&lt;li&gt;Response Body Phase&lt;/li&gt;
&lt;li&gt;Logging Phase&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As you pass through the phases, you can still access the information from the previous phases. So, if you are not sure where to begin, start with Logging Phase 5.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
