<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>RushDynamics Blog</title>
    <link>https://blog.rushdynamics.com/</link>
    <description>Minimal Hugo blog theme with light and dark mode support</description>
    <language>en-us</language>
    <item>
      <title>My AI Stack: A Unified Gateway Architecture</title>
      <link>https://blog.rushdynamics.com/posts/2026-03-18-my-ai-stack-a-unified-gateway-architecture/</link>
      <guid>https://blog.rushdynamics.com/posts/2026-03-18-my-ai-stack-a-unified-gateway-architecture/</guid>
      <pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;This post covers the architecture of my AI infrastructure, built around &lt;a href=&#34;https://openwebui.com&#34;&gt;OpenWebUI (OWUI)&lt;/a&gt; as a unified API gateway. The core insight is simple: &lt;strong&gt;applications should point to a model name/alias, not a specific backend or model name&lt;/strong&gt;. This lets me swap out the underlying LLM engine and model without touching any application configuration.&lt;/p&gt;
&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;
&lt;p&gt;The infrastructure spans multiple servers, each serving a specific role:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Host&lt;/th&gt;
          &lt;th&gt;IP&lt;/th&gt;
          &lt;th&gt;Role&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;DGX Spark Cluster (2 node)&lt;/td&gt;
          &lt;td&gt;10.0.0.11/12&lt;/td&gt;
          &lt;td&gt;vLLM (rarely llama.cpp or Ollama)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Unraid&lt;/td&gt;
          &lt;td&gt;10.0.0.10&lt;/td&gt;
          &lt;td&gt;OWUI, Kokoro, Ollama on-demand (dual 5060ti 16GB)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Dev Server&lt;/td&gt;
          &lt;td&gt;10.0.0.8&lt;/td&gt;
          &lt;td&gt;LLM Dev - single 5060ti 16GB &amp;amp; 256gb RAM&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;traffic-flow&#34;&gt;Traffic Flow&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Traefik → llm.mywebsite.com → OWUI
                     ↓
    ┌─────────────────────────────────────────┐
    │         Workspace Models                │
    │   &amp;#34;coder&amp;#34; → MiniMax-M2.5                │
    │   &amp;#34;agent&amp;#34; → MiniMax-M2.5                │
    │   &amp;#34;micro&amp;#34; → Qwen3.5-27b                 │
    └─────────────────────────────────────────┘
                      ↓
    ┌───────────────────────────────────────────────┐
    │           LLM Engine Backends                 │
    │  vLLM (10.0.0.11, 10.0.0.12)                  │
    │  Ollama (10.0.0.10, 10.0.0.8)                 │
    │  llama.cpp (10.0.0.11, 10.0.0.12)             │
    └───────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Applications (OpenCode, Cline, Roo, Kilo, OpenCLAW, etc.) all point to the same endpoint: &lt;code&gt;llm.mywebsite.com&lt;/code&gt;. They specify either the &amp;ldquo;coder&amp;rdquo; model or the &amp;ldquo;agent&amp;rdquo; model. OWUI handles routing to whichever backend is currently serving that model.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a Home Lab Kubernetes Cluster with GitOps</title>
      <link>https://blog.rushdynamics.com/posts/2026-03-07-building-a-home-lab-kubernetes-cluster-with-gitops/</link>
      <guid>https://blog.rushdynamics.com/posts/2026-03-07-building-a-home-lab-kubernetes-cluster-with-gitops/</guid>
      <pubDate>Sat, 07 Mar 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;This post covers the architecture of my home lab Kubernetes cluster built on Raspberry Pi hardware. The cluster is powered by K3s and fully managed through GitOps using ArgoCD. Every piece of infrastructure is defined in code and reconciled automatically from git.&lt;/p&gt;
&lt;h2 id=&#34;hardware-topology&#34;&gt;Hardware Topology&lt;/h2&gt;
&lt;p&gt;The cluster consists of four Raspberry Pi nodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control Planes&lt;/strong&gt; (server nodes): 10.0.0.31, 10.0.0.32, 10.0.0.33&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worker Node&lt;/strong&gt;: 10.0.0.34&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Virtual IP (kube-vip)&lt;/strong&gt;: 10.0.0.30&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All four nodes run workloads - the control plane nodes are not tainted and can schedule applications in addition to running the Kubernetes control plane. This provides additional capacity for running services. kube-vip provides a single virtual IP (10.0.0.30) for the API server in an HA configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recovering Old Blog Posts with Wayback Machine and OpenClaw</title>
      <link>https://blog.rushdynamics.com/posts/2026-02-23-recovering-old-blog-posts-with-wayback-machine-and-openclaw/</link>
      <guid>https://blog.rushdynamics.com/posts/2026-02-23-recovering-old-blog-posts-with-wayback-machine-and-openclaw/</guid>
      <pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;I recently decided to recover some old blog posts I had lost when I abandoned WordPress years ago. Using the &lt;a href=&#34;https://web.archive.org&#34;&gt;Wayback Machine&lt;/a&gt;, I was able to retrieve snapshots of my old blog from 2017-2018.&lt;/p&gt;
&lt;p&gt;The story is a bit wild, considering it was my first eye-opening experience with OpenClaw.&lt;/p&gt;
&lt;p&gt;Many years ago, I had a blog that I abandoned, and then later deleted. Recently, I had installed OpenClaw and wanted to test its powers. So, while walking laps at the gym, I sent it a task asking it to look at the way back machine for my blog and pull out all the posts. After some troubleshooting to get web_fetch and browser usage working, it starts off on the task. About 5 minutes goes by, and it reports that it has retrieved all the blog post and dropped them in my Obsidian notes. I Open up Obsidian from my phone and there they are nicely organized.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning OpenClaw and fighting local LLMs</title>
      <link>https://blog.rushdynamics.com/posts/2026-02-20-learning-openclaw-and-fighting-local-llms/</link>
      <guid>https://blog.rushdynamics.com/posts/2026-02-20-learning-openclaw-and-fighting-local-llms/</guid>
      <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
      <description>&lt;h1 id=&#34;learning-openclaw-and-fighting-local-llms&#34;&gt;Learning OpenClaw and fighting local LLMs&lt;/h1&gt;
&lt;p&gt;I&amp;rsquo;ve spent the last several days deep in the world of OpenClaw, and it’s not intuitive. Story time for the struggles, and why Qwen3-Coder-Next has been an absolute dream.&lt;/p&gt;
&lt;h2 id=&#34;the-dream&#34;&gt;The Dream&lt;/h2&gt;
&lt;p&gt;I wanted to run a local LLM that could power OpenClaw with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reliable tool usage&lt;/li&gt;
&lt;li&gt;Long context handling (128K+)&lt;/li&gt;
&lt;li&gt;Consistent reasoning without suffering from reasoning drift, looking at you gpt-oss&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I started with the two &amp;ldquo;best&amp;rdquo; models I could find: &lt;strong&gt;GPT-OSS:120B&lt;/strong&gt; and &lt;strong&gt;GLM-4.7-Flash&lt;/strong&gt; that could run on a NVIDIA GB10 (128gb memory )&lt;/p&gt;</description>
    </item>
    <item>
      <title>ASUS GX10 (DGX Spark) – Initial Workloads and Benchmarks</title>
      <link>https://blog.rushdynamics.com/posts/2025-11-11-asus-gx10-dgx-spark-initial-workloads-and-benchmarks/</link>
      <guid>https://blog.rushdynamics.com/posts/2025-11-11-asus-gx10-dgx-spark-initial-workloads-and-benchmarks/</guid>
      <pubDate>Tue, 11 Nov 2025 00:00:00 +0000</pubDate>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The ASUS GX10, the Asus version of the &lt;strong&gt;DGX Spark&lt;/strong&gt; with the GB10. is NVIDIA’s newest entry for AI‑focused workstations. In this post I walk through the initial setup (including a Docker hiccup), early power‑draw measurements, and some baseline CPU benchmark numbers.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;docker-setup--fixing-a-buildkit-crash&#34;&gt;Docker Setup – Fixing a BuildKit Crash&lt;/h2&gt;
&lt;p&gt;Out of the box Docker was installed, but it failed to start with the following error:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;error initializing buildkit: error creating buildkit instance: invalid database
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A quick search of the NVIDIA developer forums turned up a fix:&lt;/p&gt;</description>
    </item>
    <item>
      <title>GB10 - ASUS GX10 (DGX Spark) Has Arrived</title>
      <link>https://blog.rushdynamics.com/posts/2025-11-07-gb10-asus-gx10-dgx-spark-has-arrived/</link>
      <guid>https://blog.rushdynamics.com/posts/2025-11-07-gb10-asus-gx10-dgx-spark-has-arrived/</guid>
      <pubDate>Fri, 07 Nov 2025 00:00:00 +0000</pubDate>
      <description>&lt;link rel=&#34;stylesheet&#34; href=&#34;https://blog.rushdynamics.com/lightbox/lightbox.css&#34;&gt;


&lt;script src=&#34;https://blog.rushdynamics.com/lightbox/lightbox.js&#34;&gt;&lt;/script&gt;

&lt;h2 id=&#34;unboxing&#34;&gt;Unboxing&lt;/h2&gt;
&lt;p&gt;My &lt;strong&gt;DGX Spark&lt;/strong&gt;&amp;hellip; &lt;em&gt;cough&lt;/em&gt;&amp;hellip; I mean &lt;strong&gt;ASUS GX10&lt;/strong&gt; – has finally arrived, and it looks beautiful.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;./1.jpeg&#34; class=&#34;lightbox&#34; title=&#34;DGX Spark thumbnail&#34;&gt;&lt;img src=&#34;./1_small.jpeg&#34; alt=&#34;DGX Spark thumbnail&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The box is surprisingly heavy. After unpacking I realized the weight comes mainly from the machine itself. The chassis is less flashy than the original DGX Spark, but the top panel has a subtle iridescent sheen that’s very appealing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;./2.jpeg&#34; class=&#34;lightbox&#34; title=&#34;DGX Spark thumbnail&#34;&gt;&lt;img src=&#34;./2_small.jpeg&#34; alt=&#34;DGX Spark thumbnail&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;./3.jpeg&#34; class=&#34;lightbox&#34; title=&#34;DGX Spark thumbnail&#34;&gt;&lt;img src=&#34;./3_small.jpeg&#34; alt=&#34;DGX Spark thumbnail&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;./4.jpeg&#34; class=&#34;lightbox&#34; title=&#34;DGX Spark thumbnail&#34;&gt;&lt;img src=&#34;./4_small.jpeg&#34; alt=&#34;DGX Spark thumbnail&#34; /&gt;&lt;/a&gt;
&lt;a href=&#34;./5.jpeg&#34; class=&#34;lightbox&#34; title=&#34;DGX Spark thumbnail&#34;&gt;&lt;img src=&#34;./5_small.jpeg&#34; alt=&#34;DGX Spark thumbnail&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Simple Package Update Saved My Months of Debugging</title>
      <link>https://blog.rushdynamics.com/posts/2025-11-05-simple-package-update-saved-months-debugging/</link>
      <guid>https://blog.rushdynamics.com/posts/2025-11-05-simple-package-update-saved-months-debugging/</guid>
      <pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;For months I was plagued with a maddening issue. Every time I used the Ollama API through OpenWebUI (OWUI) behind Traefik, the response streams would get interrupted mid-flight, breaking the JSON parsing on the receiving end. It worked fine going direct, but behind my ingress? Broken. Every. Single. Time.&lt;/p&gt;
&lt;p&gt;What followed was months of troubleshooting that took me through every layer of my stack, only to be saved by the most mundane fix imaginable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>No Better Time Than Yesterday</title>
      <link>https://blog.rushdynamics.com/posts/2025-10-12-no-better-time-than-yesterday/</link>
      <guid>https://blog.rushdynamics.com/posts/2025-10-12-no-better-time-than-yesterday/</guid>
      <pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;After a decade of silence, I&amp;rsquo;m back at the keyboard, ready to share what I&amp;rsquo;ve been building, breaking, and rebuilding. 🛠️&lt;/p&gt;
&lt;p&gt;My last blog(s) was a ghost, pun intended, of its former self; abandoned on WordPress, then Ghost, relics I think belong in the past. After years of dealing with self hosting, losing personal time spent debugging, upgrading, and migration; I deleted them without a second thought.&lt;/p&gt;
&lt;p&gt;Enter Hugo, CI, and Git. The trifecta that&amp;rsquo;s turned blogging from a chore into a joy. No more manual updates, no more worrying about server downtime, just write, commit, and watch it deploy. 🚀&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Self-Hosted Stack with VirtualBox</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2018-06-12-my-self-hosted-stack-with-virtualbox/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2018-06-12-my-self-hosted-stack-with-virtualbox/</guid>
      <pubDate>Tue, 12 Jun 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My self-hosted setup runs on VirtualBox hosted on Windows Server 2016, &lt;em&gt;fight me&lt;/em&gt;, where I run a mix of Ubuntu and Windows Server virtual machines to power my home services.&lt;/p&gt;
&lt;h2 id=&#34;why-virtualbox&#34;&gt;Why VirtualBox?&lt;/h2&gt;
&lt;p&gt;VirtualBox has been great for my self-hosted needs, people might say it&amp;rsquo;s &amp;ldquo;not production grade&amp;rdquo;, but neither is my home server. The VMs are incredibly portable, I can copy them to an external drive or move them to another machine with minimal hassle. This makes backup and recovery straightforward, and maintenance windows become much easier to manage.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PoSH VirtualBox Shutdown All Running VMs</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2018-05-23-posh-virtualbox-shutdown-all-running-vms/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2018-05-23-posh-virtualbox-shutdown-all-running-vms/</guid>
      <pubDate>Wed, 23 May 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A script to gracefully shutdown all VirtualBox VMs before host shutdown. This is useful when you want to power down your host machine without manually closing each VM, the script sends an ACPI power button signal to each running VM, giving them time to shut down cleanly.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Get running VMs and put into a list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$VMman&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Program Files\Oracle\VirtualBox\VBoxManage.exe&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$VMlist&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VMman&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;runningvms&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$VMnames&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Collections&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ArrayList&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$VMnames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Clear&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Remove UUID from VM list and create new array with just VM names.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VMuuid&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VMlist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$VMstring&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VMuuid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;substring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VMuuid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;IndexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$VMname&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VMstring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Trim&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$VMnames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VMname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#ACPI Shutdown each VM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VM&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VMnames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VMman&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;controlvm&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$VM&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;acpipowerbutton&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Start-Sleep&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Shell Update Script for Debian / Ubuntu</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2018-04-25-shell-update-script-for-debian-ubuntu/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2018-04-25-shell-update-script-for-debian-ubuntu/</guid>
      <pubDate>Wed, 25 Apr 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update script to automate Debian system updates. You can set this up as a cron job to run on a schedule, or run it manually. For unattended updates (like starting via SSH), use TMUX to keep the script running in the background so it continues even after you disconnect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PoSH – CPU Stress Test</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2018-04-23-posh-cpu-stress-test/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2018-04-23-posh-cpu-stress-test/</guid>
      <pubDate>Mon, 23 Apr 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A script to stress test CPU on locked-down networks without internet access. I used this after hardware upgrades on servers that were physically separated from the internet - it runs a PowerShell job per thread/logical CPU to max out utilization. Press Enter to stop the test and clean up the jobs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress Behind Apache Reverse Proxy</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2018-04-18-wordpress-behind-apache-reverse-proxy/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2018-04-18-wordpress-behind-apache-reverse-proxy/</guid>
      <pubDate>Wed, 18 Apr 2018 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to configure WordPress behind an Apache reverse proxy with SSL. I wanted to pull my sites out of the cloud and self-host them, which meant using a reverse proxy to manage multiple domains behind a single IP address.&lt;/p&gt;
&lt;p&gt;On the Apache Reverse Proxy:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;IfModule&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;mod_ssl.c&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;*:443&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ServerName&lt;/span&gt; domain.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ServerAlias&lt;/span&gt; www.domain.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;RequestHeader&lt;/span&gt; set X-Forwarded-Proto &lt;span class=&#34;s2&#34;&gt;&amp;#34;https&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ProxyPreserveHost&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;On&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/var/www/html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ProxyPass&lt;/span&gt; /.well-known !
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ProxyPass&lt;/span&gt; / http://1.2.3.4/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ProxyPassReverse&lt;/span&gt; / http://1.2.3.4/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;SSLCertificateFile&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/Path/to/your/key/fullchain.pem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;SSLCertificateKeyFile&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/Path/to/your/key/privkey.pem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Include&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/etc/letsencrypt/options-ssl-apache.conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;RewriteCond&lt;/span&gt; %{SERVER_PORT} &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;RewriteRule&lt;/span&gt; ^(.*)$ https://%{ENV:URI}/$1 [L,R=301]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;SSLProxyEngine&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;On&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/IfModule&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On WordPress, install the plugin &amp;ldquo;SSL Insecure Content Fixer&amp;rdquo; and configure it appropriately.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell – Yes and No Prompt with If and Else</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-05-12-powershell-yes-and-no-prompt-with-if-and-else/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-05-12-powershell-yes-and-no-prompt-with-if-and-else/</guid>
      <pubDate>Fri, 12 May 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Prompt the user with a Yes/No dialog and take different actions based on their answer. Useful for interactive PowerShell scripts where you need user confirmation before proceeding with an action.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Popup&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ComObject&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Wscript&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Shell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Answer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Hello User, make a choice&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Title of window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;If&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Answer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-eq&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;#insert commands that you want to take place if YES is selected&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;You Clicked Yes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;#insert commands that you want to take place if NO is selected&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;You Clicked NO&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell – Open Excel Document</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-05-09-powershell-open-excel-document/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-05-09-powershell-open-excel-document/</guid>
      <pubDate>Tue, 09 May 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Open a Microsoft Excel document using PowerShell. Useful for automating report generation or data processing workflows where you need to open an existing workbook.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ExcelDoc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\test\test.xlsx&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c&#34;&gt;#document to open&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Excel&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ComObject&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Excel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Excel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Visible&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;$true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$workbook&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$Excel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Workbooks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ExcelDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell – Popup Window</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-04-23-powershell-popup-window/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-04-23-powershell-popup-window/</guid>
      <pubDate>Sun, 23 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Display a popup window with an OK button using PowerShell. The script pauses until the user clicks OK. Useful for alerting users when a script completes or to draw attention to important information during automation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Popup&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ComObject&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Wscript&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Shell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Popup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Hello User, click ok&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Title of window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell – Delete Files</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-04-20-powershell-delete-files/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-04-20-powershell-delete-files/</guid>
      <pubDate>Thu, 20 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Silently delete a file without presenting errors if they occur. Helpful for cleanup scripts where the file may or may not exist, and you don&amp;rsquo;t want error messages cluttering the output.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$ErrorActionPreference&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;silentlycontinue&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Remove-Item&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\test\test.txt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell – Start Application By Name</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-04-15-powershell-start-application-by-name/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-04-15-powershell-start-application-by-name/</guid>
      <pubDate>Sat, 15 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Start an application by its short name. Useful in environments where application directories may not be unified across machines, or when you want to launch a well-known app like Outlook without specifying the full path.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Start-Process&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Outlook&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell – Launch Application By File</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-04-14-powershell-launch-application-by-file/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-04-14-powershell-launch-application-by-file/</guid>
      <pubDate>Fri, 14 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Launch an application by directly calling the file path. Use this to open a specific file with its associated application, or to call an executable by its full path.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$App1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\test\test.txt&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c&#34;&gt;#application or file you want opened&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Start-Process&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-FilePath&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$App1&lt;/span&gt;  &lt;span class=&#34;c&#34;&gt;#open file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PowerShell – Copy File</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-04-05-powershell-copy-file/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-04-05-powershell-copy-file/</guid>
      <pubDate>Wed, 05 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Copy a file from one location to another. The first version simply copies the file if the destination doesn&amp;rsquo;t exist. The second version also checks if the destination directory exists and creates it if needed before copying.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$File1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\test1\test.txt&amp;#34;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;# File you want to move&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$File2&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\test\test.txt&amp;#34;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;# Place to move file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;If&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(!(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;test-path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$file2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Copy-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$File1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$File2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This version also checks if the destination directory exists and creates it if needed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>PowerShell – Create Directory</title>
      <link>https://blog.rushdynamics.com/posts/old_blog/2017-04-04-powershell-create-directory/</link>
      <guid>https://blog.rushdynamics.com/posts/old_blog/2017-04-04-powershell-create-directory/</guid>
      <pubDate>Tue, 04 Apr 2017 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This is a recovered post from my old blog. &lt;a href=&#34;https://blog.rushdynamics.com/posts/old_blog/2026-03-18-recovering-old-blog-posts/&#34;&gt;See how we recovered these posts using the Wayback Machine and AI tooling.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Create a directory after checking if it already exists. A common pattern in PowerShell automation - check first to avoid errors when the directory might already be there.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$dir&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\test&amp;#34;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;#Directory you want to make or check if exist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;If&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(!(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;test-path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ItemType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Force&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$dir&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://blog.rushdynamics.com/pages/about/</link>
      <guid>https://blog.rushdynamics.com/pages/about/</guid>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <description>&lt;p&gt;DevSecOps &amp;amp; Platform Engineer | Kubernetes | Air Force Veteran&lt;/p&gt;
&lt;p&gt;Evan Rush is a DevSecOps and Platform Engineer specializing in Kubernetes platform engineering, GitOps workflows, and CI/CD pipeline automation. With expertise in RKE2, ArgoCD, Helm, and Terraform, he designs secure, scalable infrastructure for AI datacenters at NVIDIA, previously building enterprise software factories for government clients at Booz Allen Hamilton. A US Air Force veteran who built, managed, and supported infrastructure delivering services to Intelligence, Surveillance, and Reconnaissance missions.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>