<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Stephen Cross</title>
    <link>https://stephencross.site/posts/</link>
    <description>Recent content in Posts on Stephen Cross</description>
    <generator>Hugo</generator>
    <language>en-ca</language>
    <lastBuildDate>Tue, 11 Nov 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://stephencross.site/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Controlling BRmesh Lights with Home Assistant and ESPHome</title>
      <link>https://stephencross.site/posts/brmesh-esphome-homeassistant/</link>
      <pubDate>Tue, 11 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/brmesh-esphome-homeassistant/</guid>
      <description>&lt;img src=&#34;brmeshledfloodlight.webp&#34; alt=&#34;BRmesh LED Floodlights&#34;&gt;&lt;p&gt;I bought some Bluetooth enabled LED lights a while ago that use the BRmesh app to control them. I was hoping I could easily add them to my Home Assistant, but it took a bit more effort than I originally anticipated.&lt;/p&gt;&#xA;&lt;p&gt;BRmesh is based on the Broadlink Fastcon BLE protocol. Control messages are sent exclusively via BLE broadcast advertisements, rather than via BLE GATT connections that are typically used for structured, bidirectional data exchange with devices.&lt;/p&gt;</description>
    </item>
    <item>
      <title>keeenv - populate env vars from KeePass</title>
      <link>https://stephencross.site/posts/keeenv/</link>
      <pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/keeenv/</guid>
      <description>&lt;img src=&#34;banner.webp&#34; alt=&#34;&#34; width=&#34;100%&#34; style=&#34;center&#34;&gt;&lt;p&gt;I created &lt;a href=&#34;https://github.com/scross01/keeenv&#34;&gt;keeenv&lt;/a&gt; so that I can conveniently populate environment variables directly from &lt;a href=&#34;https://keepassxc.org/&#34;&gt;KeePassXC&lt;/a&gt; and run tools that use them from the command line, without resorting to the fairly common, but seems wildly insecure, practice of placing the credentials and API keys in plain text configuration and dotenv files, or pasting them directly into the console.&lt;/p&gt;&#xA;&lt;p&gt;Using keeenv credentials remain securely encrypted within the KeePass database, only extracted when needed. Potential issues of accidentally checking in credentials files to source control, or saving them on insecure shared storage are avoided. An added advantage is the credentials are stored just once in a single source of truth, and fetched dynamically so if a password or api key changes the new value is set on the next run.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TODOseq plugin for Obsidian</title>
      <link>https://stephencross.site/posts/todoseq/</link>
      <pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/todoseq/</guid>
      <description>&lt;img src=&#34;todoseq.webp&#34; alt=&#34;TODOseq&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/scross01/obsidian-todoseq&#34;&gt;TODOseq&lt;/a&gt; (to-do-seek) is a task management plugin for Obsidian that uses keyword based task declarations in the Obsidian markdown pages, similar to how tasks are declared in Logseq and Org Mode.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;17 Oct 2025&lt;/strong&gt; - TODOseq is now available as an Obsidian Community Plugin &lt;a href=&#34;https://obsidian.md/plugins?id=todoseq&#34;&gt;https://obsidian.md/plugins?id=todoseq&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The plugin scans your Obsidian Vault for tasks declared using task keywords and collects them into a single task list view.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Example Tasks.md&#xA;- TODO this is a task&#xA;- TODO this is another task&#xA;- DOING this is an active task&#xA;- DONE this is a completed task&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;img src=&#34;image1.webp&#34; alt=&#34;a list of tasks in the TODOseq view&#34;&gt;&lt;p&gt;Clicking on the task description will navigate to the page and location where the task is declared.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Taskwarrior with Todoist</title>
      <link>https://stephencross.site/posts/taskwarrior-todoist/</link>
      <pubDate>Mon, 28 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/taskwarrior-todoist/</guid>
      <description>&lt;img src=&#34;banner.webp&#34; alt=&#34;Todoist -&amp;gt; Bugwarrior -&amp;gt; Taskwarrior&#34;&gt;&lt;p&gt;In order to expand my usage of &lt;a href=&#34;https://taskwarrior.org/?ref=stephencross.site&#34;&gt;Taskwarrior&lt;/a&gt; to be a consolidated view of tasks and issues across multiple productivity services, I recently contributed a new &lt;a href=&#34;https://www.todoist.com/home?ref=stephencross.site&#34;&gt;Todoist&lt;/a&gt; plugin to &lt;a href=&#34;https://bugwarrior.readthedocs.io/en/latest/?ref=stephencross.site&#34;&gt;Bugwarrior&lt;/a&gt; to manage the task synchronization.&lt;/p&gt;&#xA;&lt;p&gt;I previously covered how I use &lt;a href=&#34;https://stephencross.site/using-taskwarrior-with-logseq/&#34;&gt;Taskwarrior and Bugwarrior with Logseq&lt;/a&gt;. With the addition of the Todoist support I can now get a more complete prioritized view of both personal and work tasks in a single list. I also use &lt;a href=&#34;https://kdheepak.com/taskwarrior-tui/?ref=stephencross.site&#34;&gt;taskwarrior-tui&lt;/a&gt; to navigate the task list, which maybe I&amp;rsquo;ll cover in more detail in a future post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>searxngr - SearXNG from the command line</title>
      <link>https://stephencross.site/posts/searxngr/</link>
      <pubDate>Mon, 30 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/searxngr/</guid>
      <description>&lt;img src=&#34;searxngr.webp&#34; alt=&#34;searxngr&#34;&gt;&lt;p&gt;Inspired by similar tools like &lt;code&gt;ddgr&lt;/code&gt; and &lt;code&gt;googler&lt;/code&gt; I decided to create &lt;a href=&#34;https://github.com/scross01/searxngr?ref=stephencross.site&#34;&gt;&lt;code&gt;searxngr&lt;/code&gt;&lt;/a&gt;, a command-line interface (CLI) tool that allows you to perform web searches using &lt;a href=&#34;https://docs.searxng.org/?ref=stephencross.site&#34;&gt;SearXNG&lt;/a&gt; directly from your terminal. It provides rich-formatted search results with support for various search categories and advanced filtering options.&lt;/p&gt;&#xA;&lt;h2 id=&#34;first-you-need-a-searxng-host&#34;&gt;First you need a SearXNG host&lt;/h2&gt;&#xA;&lt;p&gt;SearXNG is a free internet metasearch engine which aggregates results from multiple sources. While there are publicly available SearXNG instances, I&amp;rsquo;ve not tested them with this tool, your mileage may vary.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting started with Oracle Cloud Generative AI using Python</title>
      <link>https://stephencross.site/posts/oracle-genai-python/</link>
      <pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/oracle-genai-python/</guid>
      <description>&lt;p&gt;Did you know Oracle Cloud Infrastructure hosts LLMs for Meta Lllama and Cohere Command-R. If you have an OCI subscription (not Free Tier) you can interact with them in the &lt;a href=&#34;https://cloud.oracle.com/ai-service/generative-ai/playground?region=uk-london-1&#34;&gt;Generative API Playground&lt;/a&gt;. The models are only available in select regions, so you need to be subscribed to one of Brazil East (Sao Paulo), Germany Central (Frankfurt). Japan Central (Osaka), UK South (London) or US Midwest (Chicago).&lt;/p&gt;&#xA;&lt;p&gt;See the &lt;a href=&#34;https://docs.oracle.com/en-us/iaas/Content/generative-ai/pretrained-models.htm&#34;&gt;Pretrained Foundational Models in Generative AI&lt;/a&gt; documentation for the latest list of supported models and regions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get started running Oracle Autonomous Database Free Container Image 23ai on Ubuntu 24.04 with Podman</title>
      <link>https://stephencross.site/posts/oracle-adb-23ai-podman/</link>
      <pubDate>Sun, 29 Sep 2024 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/oracle-adb-23ai-podman/</guid>
      <description>&lt;img src=&#34;adb-launchpad.webp&#34; alt=&#34;Oracle Database Actions Launchpad running from the Autonomous Database Free Container Image 23ai&#34;&gt;&lt;p&gt;Oracle Database Actions Launchpad running from the Autonomous Database Free Container Image 23ai&lt;/p&gt;&#xA;&lt;p&gt;Did you know that Oracle Autonomous Database is available as a free download you can run on your local machine or a self hosted server. To be clear, this is the &lt;em&gt;not&lt;/em&gt; the &lt;a href=&#34;https://www.oracle.com/cloud/free/&#34;&gt;OCI Always Free Tier&lt;/a&gt; version of Autonomous Database, but a &lt;a href=&#34;https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-database-container-free.html#GUID-8DC5820A-8910-4E20-B8FE-8271542B3BEA&#34;&gt;free&lt;/a&gt; (as in beer) downloadable version you can run locally for:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Taskwarrior with Logseq</title>
      <link>https://stephencross.site/posts/taskwarrior-logseq/</link>
      <pubDate>Fri, 16 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/taskwarrior-logseq/</guid>
      <description>&lt;img src=&#34;banner.webp&#34; alt=&#34;Logseq -&amp;gt; bugwarrior -&amp;gt; Taskwarrior&#34; width=&#34;100%&#34; class=&#34;center&#34;&gt;&lt;p&gt;I use &lt;a href=&#34;https://logseq.com/&#34;&gt;Logseq&lt;/a&gt; as my daily journaling application, and I love how easy it is to quickly capture free form TODO items when I’m taking meeting notes, doing planning, and capturing thoughts to come back to later.&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-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TODO [#C] complete the quarterly project status report for #ProjectX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;One benefit of using Logseq is that you can easily capture tasks inline with related notes. However, this approach can also make it difficult to get an overview of all your tasks at once, as they&amp;rsquo;re scattered across multiple pages of notes. To address this issue, Logseq offers a powerful feature for creating dynamic queries across the knowledge graph. But, crafting a query that displays tasks in a concise and prioritized list can be tricky, especially due to the complexity of the underlying Clojure-based Datalog syntax.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring Klipper with Prometheus and Grafana</title>
      <link>https://stephencross.site/posts/klipper-prometheus-grafana/</link>
      <pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/klipper-prometheus-grafana/</guid>
      <description>&lt;img src=&#34;image1.webp&#34; alt=&#34;Example dashboard&#34;&gt;&lt;p&gt;Unless you work in high-tech or IT you may not be familiar with &lt;a href=&#34;https://prometheus.io/&#34;&gt;Prometheus&lt;/a&gt; or &lt;a href=&#34;https://grafana.com/&#34;&gt;Grafana&lt;/a&gt;. These are a couple of open source monitoring and visualization tools commonly used together in cloud native applications and used by some of the largest corporations and cloud vendors to monitor applications and infrastructure.&lt;/p&gt;&#xA;&lt;p&gt;For this article I’m going to cover how I use these two tools for monitoring metrics from my Ender3 v2 running &lt;a href=&#34;https://www.klipper3d.org/&#34;&gt;Klipper&lt;/a&gt; firmware. Whether your running a single 3D printer like me, or an entire print farm, hopefully you will find this useful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Must-Have Creality Ender-3 V2 Modifications</title>
      <link>https://stephencross.site/posts/ender-3v2-mods/</link>
      <pubDate>Sat, 03 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://stephencross.site/posts/ender-3v2-mods/</guid>
      <description>&lt;img src=&#34;image1.webp&#34; alt=&#34;Metal Bowden Extruder with Capricorn PTFE Tube&#34;&gt;&lt;p&gt;One of the first things I found with the 3D printing community is there is a lot of information on modding the printers with upgraded parts to add function and improve build quality, particularly for the Creality Ender 3 series of printers. While some folks go to extremes with both functional and cosmetic changes, I’ve kept my modding constrained to what I consider the most essential functional upgrades to my Ender-3 V2, for a hobbyist style use, printing mostly with PLA plus some TPU and PETG.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
