<?xml version="1.0" encoding="UTF-8"?>
<!--
  llms.xml — Machine-readable site index for brianchildress.co, generated at build time.
  Schema: https://schema.org
  Canonical: https://brianchildress.co/llms.xml
  Also available: https://brianchildress.co/llms.txt (plain text)
  Sitemap: https://brianchildress.co/sitemap-index.xml
-->
<schema xmlns:schema="https://schema.org/"
        xmlns:llm="https://brianchildress.co/ns/llm">

  <!-- ==================== Person ==================== -->
  <schema:Person>
    <schema:name>Brian Childress</schema:name>
    <schema:url>https://brianchildress.co</schema:url>
    <schema:email>brian@brianchildress.co</schema:email>
    <schema:image>https://brianchildress.co/brian-childress-profile.jpg</schema:image>
    <schema:jobTitle>Software Architect and Applied AI Engineer</schema:jobTitle>
    <schema:description>Software architect and applied AI engineer with 20+ years spent untangling systems that grew faster than they were understood. Makes software simpler, safer to change, and cheaper to run.</schema:description>
    <schema:knowsAbout>Software Architecture</schema:knowsAbout>
    <schema:knowsAbout>Applied AI Engineering</schema:knowsAbout>
    <schema:knowsAbout>Release Engineering</schema:knowsAbout>
    <schema:knowsAbout>Developer Experience</schema:knowsAbout>
    <schema:knowsAbout>Cloud Cost Optimization</schema:knowsAbout>
    <schema:knowsAbout>Retrieval-Augmented Generation (RAG)</schema:knowsAbout>
    <schema:knowsAbout>AI-Assisted Development</schema:knowsAbout>
    <schema:knowsAbout>Multi-Agent Orchestration</schema:knowsAbout>
    <schema:knowsAbout>DSPy</schema:knowsAbout>
    <schema:knowsAbout>Node.js</schema:knowsAbout>
    <schema:knowsAbout>PostgreSQL</schema:knowsAbout>
    <schema:knowsAbout>Docker</schema:knowsAbout>
  </schema:Person>

  <!-- ==================== WebSite + Pages ==================== -->
  <schema:WebSite>
    <schema:name>Brian Childress</schema:name>
    <schema:url>https://brianchildress.co</schema:url>
    <schema:inLanguage>en</schema:inLanguage>
    <schema:description>Portfolio, case studies, blog, and engagement information for Brian Childress — software architect and applied AI engineer.</schema:description>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Home</schema:name>
        <schema:url>https://brianchildress.co/</schema:url>
        <schema:description>Positioning, principles, and featured work.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>About</schema:name>
        <schema:url>https://brianchildress.co/about</schema:url>
        <schema:description>Background, experience, and how the work gets done.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Projects</schema:name>
        <schema:url>https://brianchildress.co/projects</schema:url>
        <schema:description>Case studies in simplifying real systems.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Talks &amp; Podcasts</schema:name>
        <schema:url>https://brianchildress.co/talks</schema:url>
        <schema:description>Conference talks and podcast appearances.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Work With Me</schema:name>
        <schema:url>https://brianchildress.co/work-with-me</schema:url>
        <schema:description>Engagement types and how to start a conversation.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Advisory</schema:name>
        <schema:url>https://brianchildress.co/advisory</schema:url>
        <schema:description>Advisory engagement information.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Blog</schema:name>
        <schema:url>https://brianchildress.co/blog</schema:url>
        <schema:description>Writing on simplicity, architecture, and applied AI.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Testimonials</schema:name>
        <schema:url>https://brianchildress.co/testimonials</schema:url>
        <schema:description>Client and colleague testimonials.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Booking</schema:name>
        <schema:url>https://brianchildress.co/booking</schema:url>
        <schema:description>Book a call or engagement.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
    <schema:hasPart>
      <schema:WebPage>
        <schema:name>Vacation Rule</schema:name>
        <schema:url>https://brianchildress.co/resources/vacation-rule</schema:url>
        <schema:description>The vacation rule resource.</schema:description>
      </schema:WebPage>
    </schema:hasPart>
  </schema:WebSite>

  <!-- ==================== Case Studies ==================== -->
  <schema:CreativeWork>
    <schema:name>Cutting cloud spend 25% by removing, not tuning</schema:name>
    <schema:url>https://brianchildress.co/projects/cloud-cost-cut-by-deletion</schema:url>
    <schema:encodingFormat>text/html</schema:encodingFormat>
    <schema:datePublished>2024-03-02</schema:datePublished>
    <schema:description>Proved a data-persistence layer, and the SQL Server dependency behind it, could be eliminated entirely instead of optimized around.</schema:description>
    <schema:keywords>cost reduction, simplification, cloud</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/projects/cloud-cost-cut-by-deletion.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Taking a non-technical contributor&apos;s AI-built prototype to production</schema:name>
    <schema:url>https://brianchildress.co/projects/prototype-to-production</schema:url>
    <schema:encodingFormat>text/html</schema:encodingFormat>
    <schema:datePublished>2024-08-20</schema:datePublished>
    <schema:description>Modularized a working AI-built UI and wrapped it in a real dev/deploy workflow, instead of rewriting it from scratch.</schema:description>
    <schema:keywords>productionization, AI tooling, maintainability</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/projects/prototype-to-production.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Adopting AI-assisted development without losing the plot</schema:name>
    <schema:url>https://brianchildress.co/projects/ai-assisted-development-without-mess</schema:url>
    <schema:encodingFormat>text/html</schema:encodingFormat>
    <schema:datePublished>2024-06-10</schema:datePublished>
    <schema:description>Rolled out a spec-first workflow, multi-agent orchestration, and a customer-facing RAG pipeline, scaling throughput without adding headcount.</schema:description>
    <schema:keywords>applied AI, RAG, AI-assisted development, DSPy</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/projects/ai-assisted-development-without-mess.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Turning a stalled platform into one that ships daily</schema:name>
    <schema:url>https://brianchildress.co/projects/stalled-platform-daily-releases</schema:url>
    <schema:encodingFormat>text/html</schema:encodingFormat>
    <schema:datePublished>2024-01-15</schema:datePublished>
    <schema:description>Rebuilt dev environments, deploy pipelines, and monitoring for a bootstrapped SaaS platform. Releases went from weekly to multiple times a day.</schema:description>
    <schema:keywords>release engineering, platform turnaround, developer experience</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/projects/stalled-platform-daily-releases.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:CreativeWork>

  <!-- ==================== Blog Posts ==================== -->
  <schema:BlogPosting>
    <schema:name>Advice For A New Dev</schema:name>
    <schema:url>https://brianchildress.co/blog/advice-for-a-new-dev</schema:url>
    <schema:datePublished>2019-05-24</schema:datePublished>
    <schema:description>My advice for new developers entering the industry. Even if you have a few years of experience, so of this information might be helpful for you as well.</schema:description>
    <schema:keywords>career, mentoring, imposter syndrome</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/advice-for-a-new-dev.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>2020: Looking Back While Looking Forward</schema:name>
    <schema:url>https://brianchildress.co/blog/2020-looking-back-while-looking-forward</schema:url>
    <schema:datePublished>2020-12-31</schema:datePublished>
    <schema:description>What a weird strange trip it&apos;s been. I wanted to look back at this wild year, celebrate, and look forward.</schema:description>
    <schema:keywords>2020, personal, growth</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/2020-looking-back-while-looking-forward.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Making Working Remotely, Work</schema:name>
    <schema:url>https://brianchildress.co/blog/making-working-remotely-work</schema:url>
    <schema:datePublished>2016-03-26</schema:datePublished>
    <schema:description>Working from anywhere is a dream for many, here&apos;s a few things I&apos;ve learned.</schema:description>
    <schema:keywords>working remotely, caribbean life</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/making-working-remotely-work.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Bridging the Gap: How to Advise Non-Technical Leaders</schema:name>
    <schema:url>https://brianchildress.co/blog/advising-non-technical-leaders</schema:url>
    <schema:datePublished>2025-06-28</schema:datePublished>
    <schema:description>Learn how to effectively communicate technical concepts to non-technical leaders to drive better business outcomes.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/advising-non-technical-leaders.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Managing a Static Site with Dropbox</schema:name>
    <schema:url>https://brianchildress.co/blog/manage-static-site-with-dropbox</schema:url>
    <schema:datePublished>2016-06-29</schema:datePublished>
    <schema:description>Taking the complication out of static site management</schema:description>
    <schema:keywords>static site</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/manage-static-site-with-dropbox.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Angular 2 Routing Error - Exposed</schema:name>
    <schema:url>https://brianchildress.co/blog/angular-routing-error</schema:url>
    <schema:datePublished>2017-05-03</schema:datePublished>
    <schema:description>Debugging a simple Angular 2 routing error, getting down to the root cause.. a typo.</schema:description>
    <schema:keywords>Angular, Front-End</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/angular-routing-error.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Angular 2 Http Service</schema:name>
    <schema:url>https://brianchildress.co/blog/angular-http-service</schema:url>
    <schema:datePublished>2017-02-22</schema:datePublished>
    <schema:description>Creating a simple Angular 2 Http service for your Angular 2 Application</schema:description>
    <schema:keywords>Front-End, Angular, Http</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/angular-http-service.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>API Security: Broken Object Level Authorization</schema:name>
    <schema:url>https://brianchildress.co/blog/api-security-broken-object-level-authorization</schema:url>
    <schema:datePublished>2021-03-15</schema:datePublished>
    <schema:description>In this article we&apos;ll dive into the Broken Object Level Authorization (BOLA) API vulnerability.</schema:description>
    <schema:keywords>API Security, Vulnerabilities, OWASP, NodeJS, ExpressJS</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/api-security-broken-object-level-authorization.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Access the Docker Engine API from inside a Docker Container</schema:name>
    <schema:url>https://brianchildress.co/blog/access-docker-api-from-inside-docker</schema:url>
    <schema:datePublished>2020-01-08</schema:datePublished>
    <schema:description>If you need to access the Docker Engine&apos;s API from inside a container, Docker makes it really easy to do</schema:description>
    <schema:keywords>Docker, Docker API</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/access-docker-api-from-inside-docker.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Angular Modal Service</schema:name>
    <schema:url>https://brianchildress.co/blog/angular-modal-service</schema:url>
    <schema:datePublished>2017-01-23</schema:datePublished>
    <schema:description>Creating a simple modal service for your Angular 2 Application</schema:description>
    <schema:keywords>Front-End, Angular, Modal</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/angular-modal-service.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Automating a Twitter Post with JavaScript</schema:name>
    <schema:url>https://brianchildress.co/blog/automate-twitter-post-with-javascript</schema:url>
    <schema:datePublished>2020-09-17</schema:datePublished>
    <schema:description>In this article I walk through a simple JavaScript implementation to post a tweet to Twitter.</schema:description>
    <schema:keywords>Automation, JavaScript, Twitter</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/automate-twitter-post-with-javascript.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Assigning a Random Port in Node</schema:name>
    <schema:url>https://brianchildress.co/blog/assign-random-port-in-node</schema:url>
    <schema:datePublished>2019-08-26</schema:datePublished>
    <schema:keywords>Node, NodeJS, Express</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/assign-random-port-in-node.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Application With Identifier Not Found: Azure Error</schema:name>
    <schema:url>https://brianchildress.co/blog/application-with-identifier-not-found-azure-error</schema:url>
    <schema:datePublished>2021-02-22</schema:datePublished>
    <schema:description>If you&apos;ve received the AADSTS700016 error, or something similar, when integrating an application with Azure, here are the steps I&apos;ve taken to correctly configure the application.</schema:description>
    <schema:keywords>Azure, SAML, Active Directory Connections</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/application-with-identifier-not-found-azure-error.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Backup PostgreSQL Database Schema</schema:name>
    <schema:url>https://brianchildress.co/blog/backup-postgres-db-schema-in-docker</schema:url>
    <schema:datePublished>2020-07-24</schema:datePublished>
    <schema:description>If you&apos;re working with PostgreSQL (and optionally Docker) and need to backup your database schema this article will walk through a few handy scripts to backup and restore your database schema using Docker containers.</schema:description>
    <schema:keywords>Databases, Postgres, NodeJS, Docker, Backup, Restore</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/backup-postgres-db-schema-in-docker.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Changing Environment Setup in Docker Compose</schema:name>
    <schema:url>https://brianchildress.co/blog/changing-environment-setup-in-docker-compose</schema:url>
    <schema:datePublished>2019-01-18</schema:datePublished>
    <schema:description>Make switching environments easier with Docker Compose</schema:description>
    <schema:keywords>docker, docker-compose, env</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/changing-environment-setup-in-docker-compose.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Calculating NodeJS API Response Time</schema:name>
    <schema:url>https://brianchildress.co/blog/calculating-node-api-response-time</schema:url>
    <schema:datePublished>2020-01-16</schema:datePublished>
    <schema:description>In this blog post I&apos;ll show you how to create a simple response time middleware that helps give valuable information about the speed and possibly health of your NodeJS API</schema:description>
    <schema:keywords>JavaScript, NodeJS</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/calculating-node-api-response-time.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Change a Column Type in Postgres</schema:name>
    <schema:url>https://brianchildress.co/blog/change-column-type-postgres</schema:url>
    <schema:datePublished>2021-04-20</schema:datePublished>
    <schema:description>When designing a database sometimes we get it wrong, here is the command you can use to change a column type for an existing table</schema:description>
    <schema:keywords>Postgres</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/change-column-type-postgres.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Call Localhost on Host from Docker Container</schema:name>
    <schema:url>https://brianchildress.co/blog/call-localhost-on-host-from-docker-container</schema:url>
    <schema:datePublished>2021-05-11</schema:datePublished>
    <schema:description>There are times when we need to call &quot;localhost&quot; on a host from a Docker container. Here is a simple flag that allows that to happen.</schema:description>
    <schema:keywords>Docker, Localhost</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/call-localhost-on-host-from-docker-container.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Becoming a Software Architect</schema:name>
    <schema:url>https://brianchildress.co/blog/becoming-a-software-architect</schema:url>
    <schema:datePublished>2022-03-14</schema:datePublished>
    <schema:description>As your career twists and turns, one option to consider is becoming a Software Architect. This is my take on the role and the skills and experience that will set you up to succeed.</schema:description>
    <schema:keywords>Career Growth</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/becoming-a-software-architect.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Changing or Combining Local .env Files</schema:name>
    <schema:url>https://brianchildress.co/blog/changing-or-combining-local-env-files</schema:url>
    <schema:datePublished>2022-03-07</schema:datePublished>
    <schema:description>If you&apos;ve ever needed to easily switch between different .env files during local development this might be helpful.</schema:description>
    <schema:keywords>Environment Variables, Configuration Management, Secrets Management</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/changing-or-combining-local-env-files.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Cleanup Old Branches in Github</schema:name>
    <schema:url>https://brianchildress.co/blog/cleanup-old-branches-in-github</schema:url>
    <schema:datePublished>2020-04-14</schema:datePublished>
    <schema:description>In this post we&apos;ll look at a simple bash script cleanup old branches in GitHub, including a &quot;dry run&quot; feature</schema:description>
    <schema:keywords>Bash, GitHub, branch cleanup</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/cleanup-old-branches-in-github.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Coder Cruise Recap</schema:name>
    <schema:url>https://brianchildress.co/blog/coder-cruise-recap</schema:url>
    <schema:datePublished>2018-09-14</schema:datePublished>
    <schema:description>Coder Cruise 2018 was a great success, here are some of the highlights</schema:description>
    <schema:keywords>coder cruise, conference, speaking, authentication, authorization</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/coder-cruise-recap.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Configuration and Secrets Management</schema:name>
    <schema:url>https://brianchildress.co/blog/configuration-and-secrets-management</schema:url>
    <schema:datePublished>2021-03-03</schema:datePublished>
    <schema:description>An evaluation of what information should be stored where, in an effort to improve application security, maintainability, and developer efficiency.</schema:description>
    <schema:keywords>Configuration Management, Secrets Management</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/configuration-and-secrets-management.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Copy Data from Postgres to CSV File Using Docker</schema:name>
    <schema:url>https://brianchildress.co/blog/copy-data-docker-to-file</schema:url>
    <schema:datePublished>2021-03-11</schema:datePublished>
    <schema:description>If you need to export data as a .csv file from Postgres and use Docker, here is a simple command to do just that.</schema:description>
    <schema:keywords>Docker, Postgres</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/copy-data-docker-to-file.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Connect Auth0 to Azure Active Directory with SAML</schema:name>
    <schema:url>https://brianchildress.co/blog/connect-auth0-azure-active-directory</schema:url>
    <schema:datePublished>2021-03-09</schema:datePublished>
    <schema:description>Through this article I&apos;ll walk through the step required to connect Azure Active Directory to Auth0 using the SAML protocol.</schema:description>
    <schema:keywords>Auth0, Azure Active Directory, SAML</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/connect-auth0-azure-active-directory.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Convert a X.509 Certificate from Metadata</schema:name>
    <schema:url>https://brianchildress.co/blog/convert-x509-certificate-from-metadata</schema:url>
    <schema:datePublished>2021-02-20</schema:datePublished>
    <schema:description>If you need to convert a X.509 certificate to a usable format from metadata, here are some commands and tools that might help.</schema:description>
    <schema:keywords>X.509, Azure, Identity Provider, Service Provider, Auth0</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/convert-x509-certificate-from-metadata.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>CORS, You&apos;re Probably Doing it Wrong</schema:name>
    <schema:url>https://brianchildress.co/blog/cors-doing-it-wrong</schema:url>
    <schema:datePublished>2020-06-06</schema:datePublished>
    <schema:description>In this article we&apos;ll take a look at Cross Origin Resource Sharing (CORS), what it is, why we need it, and how to configure it</schema:description>
    <schema:keywords>errors, vulnerabilities, cors</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/cors-doing-it-wrong.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Database Deployments with Reduced Downtime</schema:name>
    <schema:url>https://brianchildress.co/blog/database-deployments-with-reduced-downtime</schema:url>
    <schema:datePublished>2022-06-27</schema:datePublished>
    <schema:description>Making database changes to a running application can be tricky, here are a few things to keep in mind that should reduce or eliminate downtime.</schema:description>
    <schema:keywords>Database, deployments</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/database-deployments-with-reduced-downtime.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Debugging NodeJS with Chromes Dev Tools</schema:name>
    <schema:url>https://brianchildress.co/blog/debugging-node-with-chrome-dev-tools</schema:url>
    <schema:datePublished>2018-11-20</schema:datePublished>
    <schema:description>Let&apos;s use the power of Chromes developer tools to debug a NodeJS app. We&apos;ll also look at debugging an app running in a Docker Container</schema:description>
    <schema:keywords>NodeJS, Debugging, Chrome, Dev Tools</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/debugging-node-with-chrome-dev-tools.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Deleting node_modules (or any directory really)</schema:name>
    <schema:url>https://brianchildress.co/blog/deleting-node-modules</schema:url>
    <schema:datePublished>2019-10-10</schema:datePublished>
    <schema:description>In this video I&amp;#39;ll show you a simple command to find and remove all of your node_modules folders, or any folder you have a lot of, quickly and easily.</schema:description>
    <schema:keywords>NPM, node_modules, unix</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/deleting-node-modules.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Docker Build and Run In One Command</schema:name>
    <schema:url>https://brianchildress.co/blog/docker-build-and-run-in-one-command</schema:url>
    <schema:datePublished>2019-09-13</schema:datePublished>
    <schema:description>In this video we look at 2 ways to build and run a docker image as a container in one simple command. This is useful when testing a Dockerfile, application, logic, or really any reason you might use Docker.</schema:description>
    <schema:keywords>Docker, build, run</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/docker-build-and-run-in-one-command.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Docker Compose Exited with Code 0</schema:name>
    <schema:url>https://brianchildress.co/blog/docker-compose-exited-code-0</schema:url>
    <schema:datePublished>2019-08-26</schema:datePublished>
    <schema:keywords>docker, docker-compose, error</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/docker-compose-exited-code-0.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Docker, Where&apos;s My Data?</schema:name>
    <schema:url>https://brianchildress.co/blog/docker-wheres-my-data</schema:url>
    <schema:datePublished>2020-02-26</schema:datePublished>
    <schema:description>In this blog post I&apos;ll show you a way that your data might go missing in your Docker containers when you use mounted volumes.</schema:description>
    <schema:keywords>Docker</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/docker-wheres-my-data.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Restart Single Container While Using Docker Compose</schema:name>
    <schema:url>https://brianchildress.co/blog/docker-restart-single-container-in-docker-compose</schema:url>
    <schema:datePublished>2020-07-23</schema:datePublished>
    <schema:description>In this short article we&apos;ll take a look at the command that allows you to restart a single container while using Docker Compose.</schema:description>
    <schema:keywords>Docker, restart, docker-compose</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/docker-restart-single-container-in-docker-compose.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Docker Compose Overrides</schema:name>
    <schema:url>https://brianchildress.co/blog/docker-compose-overrides</schema:url>
    <schema:datePublished>2019-09-15</schema:datePublished>
    <schema:description>We&amp;#39;ll take a look at using multiple Docker Compose files for extending the functionality of Docker and Docker Compose for development.</schema:description>
    <schema:keywords>Docker, development, Docker Compose Extend, Docker Compose</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/docker-compose-overrides.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Does this JWT make my request look big?</schema:name>
    <schema:url>https://brianchildress.co/blog/does-this-jwt-make-my-request-look-big</schema:url>
    <schema:datePublished>2019-03-20</schema:datePublished>
    <schema:description>How important is it to think about what information we store and pass in our JSON web tokens? Very! The information we store in tokens can have a lot of impact on our application’s performance and security.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/does-this-jwt-make-my-request-look-big.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Download an Entire Website Using wget</schema:name>
    <schema:url>https://brianchildress.co/blog/download-entire-website-with-wget</schema:url>
    <schema:datePublished>2021-06-01</schema:datePublished>
    <schema:description>In this post we&apos;ll look at a simple wget command to download an entire website, including all content and assets.</schema:description>
    <schema:keywords>wget</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/download-entire-website-with-wget.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Encoding / Decoding base64 Strings in the Terminal</schema:name>
    <schema:url>https://brianchildress.co/blog/encoding-decoding-base64-terminal</schema:url>
    <schema:datePublished>2021-01-22</schema:datePublished>
    <schema:description>Sometimes you need to deal with base64 strings, here are a couple commands that make it easy to encode/decode those strings using the terminal</schema:description>
    <schema:keywords>base64, Terminal</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/encoding-decoding-base64-terminal.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Using Environment Variables with Docker Compose</schema:name>
    <schema:url>https://brianchildress.co/blog/environment-variables-docker-compose</schema:url>
    <schema:datePublished>2019-11-25</schema:datePublished>
    <schema:description>A quick reference guide for using environment variables with Docker Compose.</schema:description>
    <schema:keywords>docker, docker-compose, environment variables</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/environment-variables-docker-compose.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Dynamic PostgreSQL WHERE IN Query</schema:name>
    <schema:url>https://brianchildress.co/blog/dynamic-postgres-where-in-query</schema:url>
    <schema:datePublished>2020-03-24</schema:datePublished>
    <schema:description>If you&apos;re working with arrays of data in PostgreSQL this post will walk through a quick and simple solution to create dynamic WHERE IN database queries for PostgreSQL. Some of the syntax might be helpful for other databases and libraries as well.</schema:description>
    <schema:keywords>Databases, Postgres, NodeJS, NPM, PG</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/dynamic-postgres-where-in-query.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>ESLint Out of Memory Error</schema:name>
    <schema:url>https://brianchildress.co/blog/eslint-out-of-memory-error</schema:url>
    <schema:datePublished>2021-08-18</schema:datePublished>
    <schema:description>When using ESLint with a lot of files or plugins, it&apos;s possible to cause an out of memory error, here are some tips for debugging and resolving</schema:description>
    <schema:keywords>ESLint, Troubleshooting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/eslint-out-of-memory-error.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Use Environment Variables with npx</schema:name>
    <schema:url>https://brianchildress.co/blog/environment-variables-using-npx</schema:url>
    <schema:datePublished>2021-10-19</schema:datePublished>
    <schema:description>If you use npx to execute commands and need to reference environment variables, the solution is very simple.</schema:description>
    <schema:keywords>npx, envrionment variables</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/environment-variables-using-npx.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Enabling Search in the Terminal</schema:name>
    <schema:url>https://brianchildress.co/blog/enable-search-in-terminal</schema:url>
    <schema:datePublished>2020-07-06</schema:datePublished>
    <schema:description>If you&apos;re using the terminal a lot and frequently need to use the same commands, here is a handy set of commands that give the ability to &quot;search&quot; and reuse past terminal commands.</schema:description>
    <schema:keywords>Terminal, Bash, Grep</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/enable-search-in-terminal.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Exclude Table Data from PostgreSQL Database Dump</schema:name>
    <schema:url>https://brianchildress.co/blog/exclude-table-data-postgres-dump</schema:url>
    <schema:datePublished>2021-05-04</schema:datePublished>
    <schema:description>You may want to exclude table data from specific tables during a pg_dump, here are the simple commands.</schema:description>
    <schema:keywords>Postgres</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/exclude-table-data-postgres-dump.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Find the Newest File in Directory Using NodeJS</schema:name>
    <schema:url>https://brianchildress.co/blog/find-latest-file-in-directory-in-nodejs</schema:url>
    <schema:datePublished>2020-08-03</schema:datePublished>
    <schema:description>In this article I&apos;ll walk through a simple method for finding the newest file in a directory using NodeJS.</schema:description>
    <schema:keywords>Node, FS module</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/find-latest-file-in-directory-in-nodejs.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Export PostgreSQL Database from Docker Container</schema:name>
    <schema:url>https://brianchildress.co/blog/export-database-from-docker</schema:url>
    <schema:datePublished>2020-10-19</schema:datePublished>
    <schema:description>If you want to export data (data and/or schema) from your Docker container, here&apos;s a simple command.</schema:description>
    <schema:keywords>Docker, Database, Postgres</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/export-database-from-docker.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Find a File in a Directory Using Unix Command</schema:name>
    <schema:url>https://brianchildress.co/blog/find-a-file-in-directory-in-unix</schema:url>
    <schema:datePublished>2020-07-24</schema:datePublished>
    <schema:description>In this short article we&apos;ll take a look at a command that allows you to search a directory or subdirectory for a file based on some pattern.</schema:description>
    <schema:keywords>Unix, terminal</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/find-a-file-in-directory-in-unix.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Generate Dummy Images With Node</schema:name>
    <schema:url>https://brianchildress.co/blog/generate-dummy-images-with-node</schema:url>
    <schema:datePublished>2018-10-29</schema:datePublished>
    <schema:keywords>nodejs, images, imagemagick</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/generate-dummy-images-with-node.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Find OS Version in Linux</schema:name>
    <schema:url>https://brianchildress.co/blog/find-os-version-in-linux</schema:url>
    <schema:datePublished>2019-08-03</schema:datePublished>
    <schema:keywords>linux, OS, version</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/find-os-version-in-linux.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Fuzzy Search Directory in Terminal</schema:name>
    <schema:url>https://brianchildress.co/blog/fuzzy-search-in-terminal</schema:url>
    <schema:datePublished>2020-09-08</schema:datePublished>
    <schema:description>In this article we&apos;ll look at a simple terminal command to do a &quot;fuzzy search&quot; of files and folders in a directory.</schema:description>
    <schema:keywords>Terminal</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/fuzzy-search-in-terminal.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Generate an Object from an Array of Objects</schema:name>
    <schema:url>https://brianchildress.co/blog/generate-object-from-array-of-objects</schema:url>
    <schema:datePublished>2021-09-15</schema:datePublished>
    <schema:description>If you&apos;ve ever had an array of objects, each with a unique value and wanted to deal with a single object this simple solution might help.</schema:description>
    <schema:keywords>JavaScript</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/generate-object-from-array-of-objects.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Generate a Unique Tarball</schema:name>
    <schema:url>https://brianchildress.co/blog/generate-tarball-with-backup</schema:url>
    <schema:datePublished>2016-11-01</schema:datePublished>
    <schema:description>Generating a Unique Tarball for Manual Deployment</schema:description>
    <schema:keywords>Deployment</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/generate-tarball-with-backup.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Getting Bookmarks to Work with Auth0 Login</schema:name>
    <schema:url>https://brianchildress.co/blog/getting-bookmarks-to-work-with-auth0-login</schema:url>
    <schema:datePublished>2021-02-19</schema:datePublished>
    <schema:description>Users often bookmark the Auth0 login page, but eventually that bookmark no longer works. There&apos;s a quick and easy fix.</schema:description>
    <schema:keywords>Auth0, OAuth 2</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/getting-bookmarks-to-work-with-auth0-login.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Generate JWT for Testing</schema:name>
    <schema:url>https://brianchildress.co/blog/generate-jwt-for-testing</schema:url>
    <schema:datePublished>2021-06-08</schema:datePublished>
    <schema:description>In this article we&apos;ll look at generating JSON Web Tokens (JWT) for testing purposes.</schema:description>
    <schema:keywords>API Security, JWT, Command Line</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/generate-jwt-for-testing.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>GIT: Branch is Not Fully Merged</schema:name>
    <schema:url>https://brianchildress.co/blog/git-branch-not-fully-merged</schema:url>
    <schema:datePublished>2021-05-10</schema:datePublished>
    <schema:description>There are times when you get an &quot;not fully merged&quot; error for a git branch, here is a simple command to figure out what commits have not been merged.</schema:description>
    <schema:keywords>GIT</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/git-branch-not-fully-merged.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>GIT: Force Overwrite of Local File with Remote File</schema:name>
    <schema:url>https://brianchildress.co/blog/git-force-overwrite-of-local-file-with-remote</schema:url>
    <schema:datePublished>2021-04-10</schema:datePublished>
    <schema:description>Sometimes we just need to reset a local file with what is saved in a remote repository, here are the commands you need.</schema:description>
    <schema:keywords>GIT, reset</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/git-force-overwrite-of-local-file-with-remote.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>GIT: Fatal Ambiguous Argument, Branch and Filename</schema:name>
    <schema:url>https://brianchildress.co/blog/git-fatal-ambiguous-argument-both-branch-and-filename</schema:url>
    <schema:datePublished>2021-03-26</schema:datePublished>
    <schema:description>While rare, you might run into an error when using Git version control that your branch name and a filename are the same.</schema:description>
    <schema:keywords>Git, Error</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/git-fatal-ambiguous-argument-both-branch-and-filename.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>GIT: Forget Previously Tracked File</schema:name>
    <schema:url>https://brianchildress.co/blog/git-forget-previously-tracked-file</schema:url>
    <schema:datePublished>2021-04-09</schema:datePublished>
    <schema:description>Oops, we checked in a file that we shouldn&apos;t have, here&apos;s how to tell GIT to &quot;forget&quot; about that file.</schema:description>
    <schema:keywords>GIT, reset</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/git-forget-previously-tracked-file.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Git Submodules: Error When Switching Branches</schema:name>
    <schema:url>https://brianchildress.co/blog/git-submodules-error-when-switching-branches</schema:url>
    <schema:datePublished>2021-08-19</schema:datePublished>
    <schema:description>If you&apos;ve received &apos;error: The following untracked working tree files would be overwritten by checkout&apos;, you are likely using git submodules. Here is how to get around that error.</schema:description>
    <schema:keywords>git, git submodules, troubleshooting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/git-submodules-error-when-switching-branches.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Hiding JavaScript Files in VS Code</schema:name>
    <schema:url>https://brianchildress.co/blog/hide-javascript-files-vscode</schema:url>
    <schema:datePublished>2021-07-09</schema:datePublished>
    <schema:description>Like most JavaScript developers I&apos;m writing a lot of Typescript, here are the steps to hide the JavaScript files that are compiled during the development process in VS Code.</schema:description>
    <schema:keywords>vscode, javascript, typescript</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/hide-javascript-files-vscode.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Importing Data into PostgreSQL from a CSV File</schema:name>
    <schema:url>https://brianchildress.co/blog/import-csv-into-postgres</schema:url>
    <schema:datePublished>2020-03-18</schema:datePublished>
    <schema:description>Here are the simple steps you need to import data into your Postgres Database from a .csv file. access the Docker Engine&apos;s API from inside a container, Docker makes it really easy to do</schema:description>
    <schema:keywords>Postgres, Data, CSV</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/import-csv-into-postgres.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>HTML5 Storage Timeout</schema:name>
    <schema:url>https://brianchildress.co/blog/giving-storage-a-time-to-live</schema:url>
    <schema:datePublished>2016-10-16</schema:datePublished>
    <schema:description>Adding a time to live to your storage objects</schema:description>
    <schema:keywords>Front-End</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/giving-storage-a-time-to-live.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Interview Questions to Ask, and Why?</schema:name>
    <schema:url>https://brianchildress.co/blog/interview-questions-to-ask-and-why</schema:url>
    <schema:datePublished>2020-07-14</schema:datePublished>
    <schema:description>In this article I share two approaches to conducting technical interviews. I highlight some of the things I&apos;m trying to learn from each type of question.</schema:description>
    <schema:keywords>Interviewing, technical questions</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/interview-questions-to-ask-and-why.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Importing / Exporting Data in MongoDB</schema:name>
    <schema:url>https://brianchildress.co/blog/import-export-data-in-mongodb</schema:url>
    <schema:datePublished>2019-11-10</schema:datePublished>
    <schema:description>Commands to deal with data in Mongo, mongodump, mongorestore</schema:description>
    <schema:keywords>MongoDB, mongodump, mongorestore</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/import-export-data-in-mongodb.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Incrementing Counter in Postgres</schema:name>
    <schema:url>https://brianchildress.co/blog/incrementing-counter-in-postgres</schema:url>
    <schema:datePublished>2020-03-27</schema:datePublished>
    <schema:description>If you need to increment a counter in Postgres it&apos;s really easy</schema:description>
    <schema:keywords>Postgres, Database, API Usage</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/incrementing-counter-in-postgres.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Hosting Your Single Page Application using Node and Express</schema:name>
    <schema:url>https://brianchildress.co/blog/hosting-your-single-page-application-using-node-and-express</schema:url>
    <schema:datePublished>2018-10-05</schema:datePublished>
    <schema:description>Learn how to host your single page application using Node and Express.</schema:description>
    <schema:keywords>Node, Express, Single Page Application, Web Hosting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/hosting-your-single-page-application-using-node-and-express.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>JWT | 2 Cookie Authorization - How It Works</schema:name>
    <schema:url>https://brianchildress.co/blog/jwt-2-cookie-authorization</schema:url>
    <schema:datePublished>2019-10-04</schema:datePublished>
    <schema:description>In this video we start our 2 Cookie Authorization series by explaining how the approach works and how it can help to secure our applications that use tokens.</schema:description>
    <schema:keywords>JSON Web Token, JWT, NodeJS, Express, Cookies, Authentication, Authorization</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/jwt-2-cookie-authorization.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Keeping Long JavaScript Strings Readable in Code</schema:name>
    <schema:url>https://brianchildress.co/blog/keep-long-javascript-strings-readable-in-code</schema:url>
    <schema:datePublished>2020-02-13</schema:datePublished>
    <schema:description>If you have a really long JavaScript string that is hard to deal with in your editor use string concatenation to make it manageable.</schema:description>
    <schema:keywords>JavaScript, Editors, IDE</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/keep-long-javascript-strings-readable-in-code.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Launching a Podcast</schema:name>
    <schema:url>https://brianchildress.co/blog/launching-a-podcast</schema:url>
    <schema:datePublished>2020-09-11</schema:datePublished>
    <schema:description>In this article I share why I wanted to start a podcast, launching it, and what I&apos;ve learned so far.</schema:description>
    <schema:keywords>Podcast, advice, Dev Advice Podcast</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/launching-a-podcast.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Lists I Create</schema:name>
    <schema:url>https://brianchildress.co/blog/lists-i-create</schema:url>
    <schema:datePublished>2020-05-05</schema:datePublished>
    <schema:description>In this post I&apos;ll show you some of the lists I create regularly and how I use them to achieve on what I set out to do</schema:description>
    <schema:keywords>Goal setting, Goal Tracking, Getting Stuff Done</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/lists-i-create.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Lessons Learned from Island Living</schema:name>
    <schema:url>https://brianchildress.co/blog/lessons-learned-from-island-living</schema:url>
    <schema:datePublished>2020-10-02</schema:datePublished>
    <schema:description>I think about my time living on a Caribbean Island a lot, here are a few lessons I learned during that time</schema:description>
    <schema:keywords>Island Living, Humanity</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/lessons-learned-from-island-living.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>MacOS: Git error: xcrun invalid active developer path</schema:name>
    <schema:url>https://brianchildress.co/blog/mac-os-xcrun-invalid-active-developer-path</schema:url>
    <schema:datePublished>2021-03-15</schema:datePublished>
    <schema:description>If you&apos;ve tried to run a `git` command and it failed with this error, here is a simple fix.</schema:description>
    <schema:keywords>MacOS, GIT, Xcode</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/mac-os-xcrun-invalid-active-developer-path.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Manually Run Git Hooks</schema:name>
    <schema:url>https://brianchildress.co/blog/manually-run-git-hooks</schema:url>
    <schema:datePublished>2022-04-01</schema:datePublished>
    <schema:description>Sometimes you want to manually run a Git hook, like a pre-commit hook, for testing. This can be done from the shell.</schema:description>
    <schema:keywords>Git, Git Hooks</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/manually-run-git-hooks.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Troubleshooting Major Version Upgrade: AWS Aurora</schema:name>
    <schema:url>https://brianchildress.co/blog/major-version-upgrade-aws-aurora</schema:url>
    <schema:datePublished>2021-10-12</schema:datePublished>
    <schema:description>If you need to perform a major version upgrade to your AWS Aurora instance(s), you might run into errors, here&apos;s a possible solution</schema:description>
    <schema:keywords>Troubleshooting, AWS, Aurora RDS</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/major-version-upgrade-aws-aurora.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Merge Multiple Nested Objects in JavaScript</schema:name>
    <schema:url>https://brianchildress.co/blog/merge-multiple-nested-objects-in-javascript</schema:url>
    <schema:datePublished>2020-04-15</schema:datePublished>
    <schema:description>If you need to merge multiple nested objects together here is a simple helper function with plenty of uses</schema:description>
    <schema:keywords>JavaScript, ES6, Merging, Objects</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/merge-multiple-nested-objects-in-javascript.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Merging an Upstream Repo into Your Fork</schema:name>
    <schema:url>https://brianchildress.co/blog/merging-upstream-repo-into-fork</schema:url>
    <schema:datePublished>2020-02-11</schema:datePublished>
    <schema:description>In this post we go over the commands and steps needed to update your personal fork with any upstream changes.</schema:description>
    <schema:keywords>Git, Pull Requests, Merging</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/merging-upstream-repo-into-fork.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Modify Puppeteer User Agent</schema:name>
    <schema:url>https://brianchildress.co/blog/modify-puppeteer-user-agent</schema:url>
    <schema:datePublished>2020-09-19</schema:datePublished>
    <schema:description>In this short post I&apos;ll show how to modify the Puppeteer user agent string.</schema:description>
    <schema:keywords>Puppeteer</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/modify-puppeteer-user-agent.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Multipass: Mount Host Volume</schema:name>
    <schema:url>https://brianchildress.co/blog/multipass-mount-host-volume</schema:url>
    <schema:datePublished>2021-03-12</schema:datePublished>
    <schema:description>If you&apos;re using Multipass you might need to mount a volume to gain access to resources on your host machine, here&apos;s how to do it.</schema:description>
    <schema:keywords>Multipass, Microk8s, k8s</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/multipass-mount-host-volume.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Named Parameters In Bash</schema:name>
    <schema:url>https://brianchildress.co/blog/named-parameters-in-bash</schema:url>
    <schema:datePublished>2018-10-17</schema:datePublished>
    <schema:keywords>bash, parameters, shell script</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/named-parameters-in-bash.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>NodeJS &amp;#x2F; Express Authorization Middleware</schema:name>
    <schema:url>https://brianchildress.co/blog/node-authorization-middleware</schema:url>
    <schema:datePublished>2019-09-19</schema:datePublished>
    <schema:description>In this video we build Authorization (AuthZ) middleware using Node, Express, and JSON Web Tokens (JWT). This tutorial will help you to implement simple access control into your NodeJS&amp;#x2F;Express API server. Access control can be defined based on a user&amp;#39;s Role (Role-based access control, RBAC), or attribute based access control.</schema:description>
    <schema:keywords>NodeJS, Authorization, Middleware, JSON Web Token, JWT, Access Control</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/node-authorization-middleware.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>NodeJS APIs Without Express</schema:name>
    <schema:url>https://brianchildress.co/blog/node-apis-without-express</schema:url>
    <schema:datePublished>2019-09-22</schema:datePublished>
    <schema:description>In this video we create 3 simple API endpoints in NodeJS without Express.js. We use the HTTP module from Node to serve plain text, HTML, and JSON. This is a simple, lightweight server.</schema:description>
    <schema:keywords>NodeJS, APIs, Express</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/node-apis-without-express.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Autogenerating Swagger Documentation with Node &amp; Express</schema:name>
    <schema:url>https://brianchildress.co/blog/node-swagger-autogeneration-docs</schema:url>
    <schema:datePublished>2019-09-15</schema:datePublished>
    <schema:description>In this video we walk through creating a simple NodeJS&amp;#x2F;Express API endpoint and setting auto-generating documentation using Swagger. We can then test our API using the Swagger UI.</schema:description>
    <schema:keywords>Swagger, Documentation, Automatically Generated, NodeJS, Express, Swagger UI, Swagger JSDoc</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/node-swagger-autogeneration-docs.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Node GPX to GeoJSON Convertor</schema:name>
    <schema:url>https://brianchildress.co/blog/node-gpx-geojson-convertor</schema:url>
    <schema:datePublished>2019-09-15</schema:datePublished>
    <schema:description>In this video we build a simple GPX (GPS Exchange Format) to GeoJSON converter application in NodeJS. I&amp;#39;ll walk you through each step of user input, file conversion, and output required to generate GeoJSON files for your next application.</schema:description>
    <schema:keywords>GPX, GPS, GeoJSON, NodeJS</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/node-gpx-geojson-convertor.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>NodeJS Troubleshooting Endpoint</schema:name>
    <schema:url>https://brianchildress.co/blog/nodejs-troubleshooting-endpoint</schema:url>
    <schema:datePublished>2021-05-01</schema:datePublished>
    <schema:description>There are times when you might need to know information about your running NodeJS server. Here is a simple way to create an endpoint to expose valuable system for your production NodeJS application.</schema:description>
    <schema:keywords>NodeJS, Troubleshooting, Production</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/nodejs-troubleshooting-endpoint.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Parse JSON Values Using Grep</schema:name>
    <schema:url>https://brianchildress.co/blog/parse-json-using-grep</schema:url>
    <schema:datePublished>2021-05-05</schema:datePublished>
    <schema:description>Sometimes you need to quickly find a value in a JSON object, using grep allows you to use native functionality to get the information you need.</schema:description>
    <schema:keywords>JSON, grep</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/parse-json-using-grep.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Parsing a CSV file using Bash</schema:name>
    <schema:url>https://brianchildress.co/blog/parse-csv-file-in-bash</schema:url>
    <schema:datePublished>2020-04-13</schema:datePublished>
    <schema:description>In this post we&apos;ll look at a simple bash script to parse through a .csv file and do something with the data</schema:description>
    <schema:keywords>Bash, csv</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/parse-csv-file-in-bash.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Populating a PostgreSQL Database in Docker</schema:name>
    <schema:url>https://brianchildress.co/blog/populating-postgresql-db-in-docker</schema:url>
    <schema:datePublished>2019-10-23</schema:datePublished>
    <schema:description>If you&apos;re using PostgreSQL and developing locally, here is a quick command to seed (re-seed) your database.</schema:description>
    <schema:keywords>postgres, docker</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/populating-postgresql-db-in-docker.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Prevent Nodemon from Constantly Restarting</schema:name>
    <schema:url>https://brianchildress.co/blog/prevent-nodemon-from-constantly-restarting</schema:url>
    <schema:datePublished>2020-09-18</schema:datePublished>
    <schema:description>In this short article we&apos;ll take a look at a common issue when using Nodemon to refresh files during development.</schema:description>
    <schema:keywords>NPM, Nodemon</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/prevent-nodemon-from-constantly-restarting.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Save Yourself from Yourself</schema:name>
    <schema:url>https://brianchildress.co/blog/pre-commit-hooks</schema:url>
    <schema:datePublished>2019-01-10</schema:datePublished>
    <schema:description>Using pre-commit hooks in git to avoid common mistakes and embarrassment</schema:description>
    <schema:keywords>GIT, Hooks, workflow, developer</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/pre-commit-hooks.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Puppeteer Max Timeout Error - Workaround</schema:name>
    <schema:url>https://brianchildress.co/blog/puppeteer-max-timeout-error</schema:url>
    <schema:datePublished>2020-09-23</schema:datePublished>
    <schema:description>In this short post I&apos;ll show how to get around the common max timeout error in Puppeteer.</schema:description>
    <schema:keywords>Puppeteer, Error</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/puppeteer-max-timeout-error.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Questions for the Interviewer</schema:name>
    <schema:url>https://brianchildress.co/blog/questions-for-the-interviewer</schema:url>
    <schema:datePublished>2017-05-22</schema:datePublished>
    <schema:description>Some of my favorite questions to ask an interviewer for a prospective role.</schema:description>
    <schema:keywords>Interviewing, questions</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/questions-for-the-interviewer.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Quick Performance Testing using Node</schema:name>
    <schema:url>https://brianchildress.co/blog/quick-performance-testing-using-node</schema:url>
    <schema:datePublished>2017-07-03</schema:datePublished>
    <schema:description>test</schema:description>
    <schema:keywords>&apos;Performance&apos;</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/quick-performance-testing-using-node.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Rebuild a Single Docker Container</schema:name>
    <schema:url>https://brianchildress.co/blog/rebuild-single-docker-container-docker-composemd</schema:url>
    <schema:datePublished>2019-11-11</schema:datePublished>
    <schema:description>If you use Docker Compose to manage multiple containers, networking, etc. and need to rebuild a single service or container, here are a few commands that will help.</schema:description>
    <schema:keywords>Docker, Docker compose, service, container</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/rebuild-single-docker-container-docker-composemd.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Removing Objects from Array with Duplicate Values Using .reduce()</schema:name>
    <schema:url>https://brianchildress.co/blog/remove-objects-from-array-with-duplicate-values</schema:url>
    <schema:datePublished>2020-01-29</schema:datePublished>
    <schema:description>We&apos;ll take a look at an easy way to remove objects from an Array in JavaScript using the .reduce() method</schema:description>
    <schema:keywords>JavaScript, reduce, objects, arrays</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/remove-objects-from-array-with-duplicate-values.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Renaming a Local and Remote Git Branch</schema:name>
    <schema:url>https://brianchildress.co/blog/renaming-local-and-remote-git-branch</schema:url>
    <schema:datePublished>2022-03-31</schema:datePublished>
    <schema:description>Sometimes you need to rename a Git branch, here are the simple commands rename a local or remote branch in Git using the command line.</schema:description>
    <schema:keywords>Git</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/renaming-local-and-remote-git-branch.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Reorder Columns in Postgres</schema:name>
    <schema:url>https://brianchildress.co/blog/reorder-columns-postgres</schema:url>
    <schema:datePublished>2021-04-27</schema:datePublished>
    <schema:description>Sometimes you need to reorder columns in your database to align with other data models, to show relevant data first, to satisfy your O.C.D (✋ that&apos;s me).</schema:description>
    <schema:keywords>postgres</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/reorder-columns-postgres.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Reversing the Order of a Loop in Hexo</schema:name>
    <schema:url>https://brianchildress.co/blog/reverse-order-in-hexo-loop</schema:url>
    <schema:datePublished>2019-05-17</schema:datePublished>
    <schema:keywords>hexo, for loop</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/reverse-order-in-hexo-loop.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Return to a Scroll Position on Page Refresh</schema:name>
    <schema:url>https://brianchildress.co/blog/resume-page-position-on-refresh</schema:url>
    <schema:datePublished>2020-09-20</schema:datePublished>
    <schema:description>In this short article we&apos;ll take a look at a simple way to &quot;remember&quot; a scroll position on page refresh.</schema:description>
    <schema:keywords>Scroll position, Local Storage</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/resume-page-position-on-refresh.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Reset Auto-Increment IDs in Postgres</schema:name>
    <schema:url>https://brianchildress.co/blog/reset-auto-increment-in-postgres</schema:url>
    <schema:datePublished>2021-04-18</schema:datePublished>
    <schema:keywords>Data, Postgres</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/reset-auto-increment-in-postgres.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>My Required Reading List</schema:name>
    <schema:url>https://brianchildress.co/blog/required-reading</schema:url>
    <schema:datePublished>2021-03-15</schema:datePublished>
    <schema:description>Here is a list of books that I feel are important for everyone to read</schema:description>
    <schema:keywords>Books, Audiobooks</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/required-reading.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Rotate AWS Access Keys via Script</schema:name>
    <schema:url>https://brianchildress.co/blog/rotate-aws-access-keys-script</schema:url>
    <schema:datePublished>2021-05-04</schema:datePublished>
    <schema:description>It&apos;s a good idea to rotate your AWS Access Keys regularly, here is a simple script that makes the process easy and painless.</schema:description>
    <schema:keywords>AWS, Access Keys, Bash</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/rotate-aws-access-keys-script.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Run Bash Script from Node</schema:name>
    <schema:url>https://brianchildress.co/blog/run-bash-script-from-node</schema:url>
    <schema:datePublished>2018-09-22</schema:datePublished>
    <schema:keywords>bash, node, scripts</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/run-bash-script-from-node.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Run a Function Every Time You Change Directories with Zsh</schema:name>
    <schema:url>https://brianchildress.co/blog/run-function-when-changing-directories</schema:url>
    <schema:datePublished>2020-05-20</schema:datePublished>
    <schema:description>If you have a set of tasks you do every time you change directories, e.g. changing to a new project, here is a quick way to automate those tasks.</schema:description>
    <schema:keywords>Zsh</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/run-function-when-changing-directories.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Searching GIT Logs for Sensitive Data</schema:name>
    <schema:url>https://brianchildress.co/blog/search-git-logs-for-sensitive-data</schema:url>
    <schema:datePublished>2021-01-08</schema:datePublished>
    <schema:description>If you&apos;ve ever needed to search GIT logs for specific information in a commit, here is a handy command that could help</schema:description>
    <schema:keywords>GIT, sensitive data, logs</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/search-git-logs-for-sensitive-data.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Interview: How to Work with Developers as a Scrum Master</schema:name>
    <schema:url>https://brianchildress.co/blog/scrum-how-to-work-with-devs</schema:url>
    <schema:datePublished>2022-05-26</schema:datePublished>
    <schema:description>I was recently asked to be a guest for a virtual AMA of Scrum Masters looking to improve their relationships with Developers on their teams/projects. Here are some of the questions and my thoughts.</schema:description>
    <schema:keywords>Scrum, Development, SDLC, Teamwork</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/scrum-how-to-work-with-devs.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Sending an Array of Values in a GET Request</schema:name>
    <schema:url>https://brianchildress.co/blog/sending-array-of-values-in-get-request</schema:url>
    <schema:datePublished>2022-02-15</schema:datePublished>
    <schema:description>If you need to send multiple values in a GET request here is a simple way.</schema:description>
    <schema:keywords>REST, APIs</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/sending-array-of-values-in-get-request.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Serverless Framework and Serverless Offline Error: POST Request Not Responding</schema:name>
    <schema:url>https://brianchildress.co/blog/serverless-framework-post-request-not-responding</schema:url>
    <schema:datePublished>2021-05-14</schema:datePublished>
    <schema:description>If you use the Serverless Framework and Serverless Offline Plugin for developing Serverless Functions, (e.g. AWS Lambda) you might have seen an issue recently with POST requests not responding.</schema:description>
    <schema:keywords>Serverless, Serverless Offline, NodeJS</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/serverless-framework-post-request-not-responding.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Simple Polling Solution Using setTimeout()</schema:name>
    <schema:url>https://brianchildress.co/blog/simple-polling-using-settimeout</schema:url>
    <schema:datePublished>2020-01-15</schema:datePublished>
    <schema:description>In this blog post I&apos;ll show you how to implement a simple polling solution using setTimeout() instead of setInterval()</schema:description>
    <schema:keywords>JavaScript, setInterval, setTimeout</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/simple-polling-using-settimeout.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Should I Stay Or Should I Go?</schema:name>
    <schema:url>https://brianchildress.co/blog/should-i-stay-or-should-i-go</schema:url>
    <schema:datePublished>2021-10-27</schema:datePublished>
    <schema:description>There is a time in everyone&apos;s career when they wonder if they should stay in their current role or move to a new role or company. Here are some of the things I consider when giving advice or making the decision for myself.</schema:description>
    <schema:keywords>Career growth, opportunities, resignation</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/should-i-stay-or-should-i-go.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Simplify Node Configuration With Object Assign</schema:name>
    <schema:url>https://brianchildress.co/blog/simplify-node-configuration-with-object-assign</schema:url>
    <schema:datePublished>2018-09-25</schema:datePublished>
    <schema:keywords>node, configuration, object.assign</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/simplify-node-configuration-with-object-assign.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Sort Array by Another Array</schema:name>
    <schema:url>https://brianchildress.co/blog/sort-array-by-another-array</schema:url>
    <schema:datePublished>2017-12-07</schema:datePublished>
    <schema:keywords>javascript, array, sorting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/sort-array-by-another-array.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Speaking at a Conference</schema:name>
    <schema:url>https://brianchildress.co/blog/speaking-at-a-conference</schema:url>
    <schema:datePublished>2019-05-19</schema:datePublished>
    <schema:description>So you&apos;ve been invited to speak at a conference, what do I do now? Here are some tips and tricks I&apos;ve learned from experience and other speakers</schema:description>
    <schema:keywords>speaking, conference, tips and tricks</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/speaking-at-a-conference.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Specify Python Registry</schema:name>
    <schema:url>https://brianchildress.co/blog/specify-python-registry</schema:url>
    <schema:datePublished>2020-03-31</schema:datePublished>
    <schema:description>If you need to use a specific registry when installing Python dependencies these commands could help.</schema:description>
    <schema:keywords>Python, Private Registry</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/specify-python-registry.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Start a Docker Container Without Specifying a Command</schema:name>
    <schema:url>https://brianchildress.co/blog/start-docker-container-without-specifying-a-command</schema:url>
    <schema:datePublished>2021-05-12</schema:datePublished>
    <schema:description>If you need to do some troubleshooting of a Docker container and the entrypoint or startup command you defined might be the problem, here is a quick fix to allow you to access the container to investigate.</schema:description>
    <schema:keywords>Docker, Troubleshooting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/start-docker-container-without-specifying-a-command.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Split Screen on Mac</schema:name>
    <schema:url>https://brianchildress.co/blog/split-screen-on-mac</schema:url>
    <schema:datePublished>2019-10-23</schema:datePublished>
    <schema:keywords>efficiency, shortcuts</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/split-screen-on-mac.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Tar File(s) or Directories Using the Command Line</schema:name>
    <schema:url>https://brianchildress.co/blog/tar-files-and-directories-using-command-line</schema:url>
    <schema:datePublished>2020-04-03</schema:datePublished>
    <schema:description>There are many reasons why we might need to Tar files and directories, here are a few helpful commands to get started.</schema:description>
    <schema:keywords>Tar, Compression, Command Line</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/tar-files-and-directories-using-command-line.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Testing GIT Hooks Before Actually Committing</schema:name>
    <schema:url>https://brianchildress.co/blog/test-git-hooks-before-committing</schema:url>
    <schema:datePublished>2020-07-01</schema:datePublished>
    <schema:description>If you want to use GIT hooks (pre-commit, pre-push), but want to test them before actually committing, it&apos;s really easy to do.</schema:description>
    <schema:keywords>GIT, GIT Hooks</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/test-git-hooks-before-committing.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Terraform 403: Access Denied Error</schema:name>
    <schema:url>https://brianchildress.co/blog/terraform-403-access-denied-error</schema:url>
    <schema:datePublished>2021-02-25</schema:datePublished>
    <schema:description>An easy fix for a common error when using Terraform to deploy resources using the CLI.</schema:description>
    <schema:keywords>Terraform, Terraform State</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/terraform-403-access-denied-error.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Testing a Pull Request Locally</schema:name>
    <schema:url>https://brianchildress.co/blog/testing-pull-request-locally</schema:url>
    <schema:datePublished>2020-08-28</schema:datePublished>
    <schema:description>If you want to test a pull request locally, here are a few simple commands to get setup.</schema:description>
    <schema:keywords>GIT, Pull Requests, Code Review</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/testing-pull-request-locally.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Tracing Node&apos;s Garbage Collection</schema:name>
    <schema:url>https://brianchildress.co/blog/tracing-node-garbage-collection</schema:url>
    <schema:datePublished>2020-02-21</schema:datePublished>
    <schema:description>In this blog post I&apos;ll show you a quick way to peak into Node&apos;s garbage collection.</schema:description>
    <schema:keywords>NodeJS</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/tracing-node-garbage-collection.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Treat Local GIT Repo as a Remote GIT Repo</schema:name>
    <schema:url>https://brianchildress.co/blog/treat-local-git-repo-as-a-remote-git-repo</schema:url>
    <schema:datePublished>2021-05-08</schema:datePublished>
    <schema:description>There are many reasons why you might want to use a local GIT repo like it were a remote repo, the setup is simple to get started.</schema:description>
    <schema:keywords>GIT, Local Repo, Remote Repo</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/treat-local-git-repo-as-a-remote-git-repo.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Tracking a User&apos;s Social Logins in your Database</schema:name>
    <schema:url>https://brianchildress.co/blog/tracking-users-social-logins-in-database</schema:url>
    <schema:datePublished>2020-08-31</schema:datePublished>
    <schema:description>In this article I will share an approach to managing user accounts that use OpenId Connect to login with various social platforms.</schema:description>
    <schema:keywords>OIDC, PostgreSQL, User Authentication, User Authorization</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/tracking-users-social-logins-in-database.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Troubleshooting Alpine Docker Images</schema:name>
    <schema:url>https://brianchildress.co/blog/troubleshoot-alpine-docker-images</schema:url>
    <schema:datePublished>2020-11-05</schema:datePublished>
    <schema:description>In this short article we&apos;ll take a look at a quick approach to troubleshooting issues in your Alpine Docker images.</schema:description>
    <schema:keywords>Docker, Alpine, Troubleshooting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/troubleshoot-alpine-docker-images.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Troubleshooting Network Requests using Google Chrome (Dev Tools)</schema:name>
    <schema:url>https://brianchildress.co/blog/troubleshoot-network-request-google-chrome</schema:url>
    <schema:datePublished>2020-04-26</schema:datePublished>
    <schema:description>In this blog post I&apos;ll show you a quick way to repeat or retry network requests using Google Chrome&apos;s Developer tools. This approach allows you to modify and retry requests for troubleshooting purposes.</schema:description>
    <schema:keywords>Troubleshooting, Developer Tools</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/troubleshoot-network-request-google-chrome.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Which Bash File Am I Even Using? Troubleshooting Bash Source Files</schema:name>
    <schema:url>https://brianchildress.co/blog/troubleshooting-bash-files</schema:url>
    <schema:datePublished>2020-05-14</schema:datePublished>
    <schema:description>If you&apos;ve ever battled various bash profiles to see which one is being sourced, here&apos;s a quick way to troubleshoot.</schema:description>
    <schema:keywords>Bash, Terminal, Profiles, Troubleshooting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/troubleshooting-bash-files.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Troubleshooting a Non-Running Docker Container</schema:name>
    <schema:url>https://brianchildress.co/blog/troubleshooting-stopped-docker-container</schema:url>
    <schema:datePublished>2020-05-26</schema:datePublished>
    <schema:description>In this post I&apos;ll show you a quick troubleshooting method for identifying and fixing issues in non-running Docker containers.</schema:description>
    <schema:keywords>Docker, Container, Troubleshooting</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/troubleshooting-stopped-docker-container.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Upsert in PostgreSQL Using ON CONFLICT</schema:name>
    <schema:url>https://brianchildress.co/blog/upsert-in-postgres-with-on-conflct</schema:url>
    <schema:datePublished>2020-02-19</schema:datePublished>
    <schema:description>If you need update a row in PostgreSQL if it already exists OR create a new row if it doesn&apos;t already exist, using the ON CONFLICT command will do it</schema:description>
    <schema:keywords>PostgreSQL, Databases, Querying</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/upsert-in-postgres-with-on-conflct.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Update JSON File with Bash Using NodeJS</schema:name>
    <schema:url>https://brianchildress.co/blog/update-json-file-in-bash-with-node</schema:url>
    <schema:datePublished>2022-02-22</schema:datePublished>
    <schema:description>In this short post I&apos;ll show you a quick way to make simple edits to a .json file from the command line or using bash and NodeJS.</schema:description>
    <schema:keywords>Bash, JSON, NodeJS</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/update-json-file-in-bash-with-node.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Updating GIT credentials in Command Line</schema:name>
    <schema:url>https://brianchildress.co/blog/update-git-credentials-command-line</schema:url>
    <schema:datePublished>2020-08-05</schema:datePublished>
    <schema:description>If you&apos;ve seen an &apos;Authentication failed for https://____.git error, here&apos;s a quick command to update your credentials through the command line.</schema:description>
    <schema:keywords>GIT, Authentication, Terminal</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/update-git-credentials-command-line.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Update an Object Using the Spread Operator</schema:name>
    <schema:url>https://brianchildress.co/blog/update-object-using-the-spread-operator-javascript</schema:url>
    <schema:datePublished>2021-04-13</schema:datePublished>
    <schema:description>If you want to extend or override values in an object, using the spread operator in JavaScript can help</schema:description>
    <schema:keywords>JavaScript, ES6</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/update-object-using-the-spread-operator-javascript.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Useful AWS Snippets</schema:name>
    <schema:url>https://brianchildress.co/blog/useful-aws-snippets</schema:url>
    <schema:datePublished>2018-08-14</schema:datePublished>
    <schema:keywords>aws, snippets</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/useful-aws-snippets.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Useful Command Line Snippets</schema:name>
    <schema:url>https://brianchildress.co/blog/useful-command-line-snippets</schema:url>
    <schema:datePublished>2018-09-11</schema:datePublished>
    <schema:keywords>unix, snippets</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/useful-command-line-snippets.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Useful Docker Snippets</schema:name>
    <schema:url>https://brianchildress.co/blog/useful-docker-snippets</schema:url>
    <schema:datePublished>2017-08-19</schema:datePublished>
    <schema:keywords>docker, snippets, containers</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/useful-docker-snippets.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Useful Git Snippets</schema:name>
    <schema:url>https://brianchildress.co/blog/useful-git-snippets</schema:url>
    <schema:datePublished>2021-04-05</schema:datePublished>
    <schema:description>A collection of useful GIT commands and snippets</schema:description>
    <schema:keywords>git, snippets</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/useful-git-snippets.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Useful Postgres / PSQL Commands</schema:name>
    <schema:url>https://brianchildress.co/blog/useful-postgres-psql-commands</schema:url>
    <schema:datePublished>2020-01-29</schema:datePublished>
    <schema:description>List of often used commands when working with PostgreSQL OR SQL in general</schema:description>
    <schema:keywords>PostgreSQL</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/useful-postgres-psql-commands.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Troubleshooting AWS EC2 by Reviewing the UserData Script</schema:name>
    <schema:url>https://brianchildress.co/blog/user-data-script-location</schema:url>
    <schema:datePublished>2018-10-26</schema:datePublished>
    <schema:keywords>aws, ec2, troubleshooting, userdata</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/user-data-script-location.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Using Variables with Sed in Bash</schema:name>
    <schema:url>https://brianchildress.co/blog/using-variables-with-sed</schema:url>
    <schema:datePublished>2020-01-12</schema:datePublished>
    <schema:description>If you need to use sed to handle some find and replace functionality of text, here are some ways to make your commands more maintainable over time.</schema:description>
    <schema:keywords>Sed, Bash</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/using-variables-with-sed.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Tools I Use</schema:name>
    <schema:url>https://brianchildress.co/blog/uses</schema:url>
    <schema:datePublished>2021-03-11</schema:datePublished>
    <schema:description>This is a list of the tools that I use regularly to help make me more efficient and effective.</schema:description>
    <schema:keywords>Tools, Platforms</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/uses.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Variables in package.json</schema:name>
    <schema:url>https://brianchildress.co/blog/variables-in-package-json</schema:url>
    <schema:datePublished>2018-10-31</schema:datePublished>
    <schema:keywords>npm, variables, package.json</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/variables-in-package-json.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Variables in Bash Alias</schema:name>
    <schema:url>https://brianchildress.co/blog/variables-in-bash-alias</schema:url>
    <schema:datePublished>2020-12-19</schema:datePublished>
    <schema:description>Using variables in bash aliases is easy to do, here&apos;s how</schema:description>
    <schema:keywords>Bash, alias</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/variables-in-bash-alias.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Variables in Markdown</schema:name>
    <schema:url>https://brianchildress.co/blog/variables-in-markdown</schema:url>
    <schema:datePublished>2020-11-03</schema:datePublished>
    <schema:description>In this short article we&apos;ll take a look at a how we can use variables in Markdown documents.</schema:description>
    <schema:keywords>Markdown</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/variables-in-markdown.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>VS Code Shortcuts</schema:name>
    <schema:url>https://brianchildress.co/blog/vscode-shortcuts</schema:url>
    <schema:datePublished>2021-07-14</schema:datePublished>
    <schema:description>If you use VS Code, here are some handy shortcuts that might help make your development life a little easier.</schema:description>
    <schema:keywords>VS Code</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/vscode-shortcuts.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Vulnerabilities Explained - Injection</schema:name>
    <schema:url>https://brianchildress.co/blog/vulnerabilities-explained-injection</schema:url>
    <schema:datePublished>2020-07-06</schema:datePublished>
    <schema:description>In this article we&apos;ll take a look at different types of common injections and how they exist in code.</schema:description>
    <schema:keywords>OWASP, injection, SQL injection, OS Command Injection, errors, vulnerabilities</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/vulnerabilities-explained-injection.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>Version with Angular CLI</schema:name>
    <schema:url>https://brianchildress.co/blog/version-with-angular-cli</schema:url>
    <schema:datePublished>2018-08-22</schema:datePublished>
    <schema:keywords>angular, angular cli</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/version-with-angular-cli.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>
  <schema:BlogPosting>
    <schema:name>What Does it Mean to be a Senior Developer?</schema:name>
    <schema:url>https://brianchildress.co/blog/what-does-it-mean-to-be-a-senior-developer</schema:url>
    <schema:datePublished>2021-03-05</schema:datePublished>
    <schema:description>Let&apos;s break down some of the qualities that determine if a person is a senior developer.</schema:description>
    <schema:keywords>Seniority, Experience</schema:keywords>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
    <schema:associatedMedia>
      <schema:MediaObject>
        <schema:contentUrl>https://brianchildress.co/blog/what-does-it-mean-to-be-a-senior-developer.md</schema:contentUrl>
        <schema:encodingFormat>text/markdown</schema:encodingFormat>
      </schema:MediaObject>
    </schema:associatedMedia>
  </schema:BlogPosting>

  <!-- ==================== Talks & Podcasts ==================== -->
  <schema:CreativeWork>
    <schema:name>Nation Conferences - December 2024</schema:name>
    <schema:url>https://brianchildress.co/talks/conference-nation-conferences-connected-world</schema:url>
    <schema:datePublished>2024-12-28</schema:datePublished>
    <schema:genre>conference</schema:genre>
    <schema:description>Thriving in a Connected World - Exploring how businesses and technology leaders can succeed in our increasingly connected world, leveraging connectivity while managing complexity and maintaining security.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Blue Ridge Ruby 2024</schema:name>
    <schema:url>https://brianchildress.co/talks/conference-blue-ridge-ruby-2024</schema:url>
    <schema:datePublished>2024-07-31</schema:datePublished>
    <schema:genre>conference</schema:genre>
    <schema:description>Simplicity is the foundation of successful software development. This talk explores how keeping things simple leads to better software, more maintainable codebases, and teams that can move faster without breaking things. Presented at Blue Ridge Ruby conference.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Nation Conferences 2024</schema:name>
    <schema:url>https://brianchildress.co/talks/conference-nation-conferences-simplicity</schema:url>
    <schema:datePublished>2024-08-15</schema:datePublished>
    <schema:genre>conference</schema:genre>
    <schema:description>Simplicity is the foundation of successful software development. This talk explores how keeping things simple leads to better software, more maintainable codebases, and teams that can move faster without breaking things.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Agile Mindset Consulting</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-agile-mindset-consulting</schema:url>
    <schema:datePublished>2022-05-26</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Scrum Power Hour - How to Build a Successful Relationship Between Scrum Masters and Developers. Exploring the dynamics of effective collaboration between Scrum Masters and development teams for better project outcomes.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Bankedoutt Radio Show</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-bankedoutt-radio</schema:url>
    <schema:datePublished>2023-11-03</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Brian Childress Interview - A wide-ranging conversation covering career journey, technology trends, leadership insights, and lessons learned from years of experience in software development and architecture.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: ArtificialIntelligencePodcast</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-artificial-intelligence-podcast</schema:url>
    <schema:datePublished>2024-09-23</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>AI-Proof Your Business - Strategies for preparing your business for the AI revolution, understanding how to implement AI effectively, and future-proofing your technology infrastructure and processes.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Biz Help For You - Candy Messer</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-biz-help-for-you</schema:url>
    <schema:datePublished>2024-05-15</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>How to Make Smart Tech Decisions for Your Business - Practical framework for making informed technology decisions that align with business goals, budget, and long-term strategy.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Coffee, Chaos, &amp; Cashflow</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-coffee-chaos-cashflow</schema:url>
    <schema:datePublished>2025-03-27</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Helping Non-Technical Leaders Succeed in Tech - A discussion about bridging the gap between business leadership and technology, helping non-technical leaders navigate the complex world of software development and technology strategy.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: The CTO Show With Mehmet</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-cto-show-mehmet</schema:url>
    <schema:datePublished>2023-07-27</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>From Enthusiast to Expert - A conversation about the journey from technology enthusiast to fractional CTO, sharing insights on career growth, technical leadership, and building expertise in software architecture.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: The CTO Show With Mehmet #181</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-cto-show-mehmet-181</schema:url>
    <schema:datePublished>2024-01-13</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>From Enthusiast to Expert - Episode 181 - A follow-up conversation diving deeper into the fractional CTO role, sharing experiences, challenges, and successes in helping companies with technology leadership.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Financial Freedom #534</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-financial-freedom-534</schema:url>
    <schema:datePublished>2023-11-03</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Navigating the Tech Terrain - Episode 534 exploring the technology landscape, helping business leaders understand and navigate technical decisions, trends, and challenges in today&apos;s digital world.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Financial Freedom with Dr. Christopher Loo</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-financial-freedom-dr-christopher-loo</schema:url>
    <schema:datePublished>2023-09-27</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Tech Talk - Bridging Business and Technology. A conversation about connecting business objectives with technical implementation, helping leaders make informed technology decisions that drive business value.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Guide to HR</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-guide-to-hr</schema:url>
    <schema:datePublished>2023-12-21</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Scaling Made Simple - Expert advice on scaling technology organizations, building effective teams, and implementing systems that grow with your business without adding unnecessary complexity.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: The First Customer</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-first-customer</schema:url>
    <schema:datePublished>2024-03-06</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>How to Tackle Tech Complexity to Scale Your Business - Strategies for managing technical complexity while scaling, simplifying systems, and making technology decisions that support sustainable growth.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: The Liquid Lunch Project</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-liquid-lunch-project</schema:url>
    <schema:datePublished>2024-02-14</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Small Business, Big Tech - Navigating the Digital Landscape - Helping small businesses understand and implement technology solutions, making sense of the digital transformation without overwhelming complexity.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Mission Driven</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-mission-driven</schema:url>
    <schema:datePublished>2024-02-21</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Simplify to Scale - Tackling Software Complexity - How simplification is the key to successful scaling, removing unnecessary complexity, and building systems that grow sustainably with your business.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Paperback Expert</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-paperback-expert</schema:url>
    <schema:datePublished>2024-01-02</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Designing Your Data for Business Success - A deep dive into data architecture and how to structure your data to support business objectives, improve decision-making, and enable scalable growth.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Open Tech Talks</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-open-tech-talks</schema:url>
    <schema:datePublished>2024-01-29</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Tech Advisor Insights - Making the Right Calls for Your Startup - Guidance for startups on making critical technology decisions, from choosing the right stack to hiring technical talent and planning for growth.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Payback Time</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-payback-time</schema:url>
    <schema:datePublished>2024-01-19</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>How to Scale a Tech Company - Strategies and best practices for scaling technology companies, from technical infrastructure to team growth, addressing common challenges and proven solutions.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Personal Brand Blueprint</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-personal-brand-blueprint</schema:url>
    <schema:datePublished>2025-07-29</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>From Non-Technical Beginnings to Fractional CTO Success - The journey of building a personal brand in technology, transitioning from non-technical beginnings to becoming a successful fractional CTO, and lessons learned along the way.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Play Big Faster</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-play-big-faster</schema:url>
    <schema:datePublished>2024-01-27</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>The Tech Help You Didn&apos;t Know You Needed - Uncovering hidden technology challenges and solutions that businesses often overlook, providing practical advice for leveraging technology effectively.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Peter Witham</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-peter-witham</schema:url>
    <schema:datePublished>2023-09-15</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Keeping Software Simple - A discussion about the importance of simplicity in software development, avoiding over-engineering, and building maintainable systems that solve real business problems.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Scale Architects</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-scale-architects</schema:url>
    <schema:datePublished>2024-05-24</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>The Secret to Scaling Through Technology - Episode 166 revealing key strategies for leveraging technology to scale your business effectively, avoiding common pitfalls and building for sustainable growth.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Small Steps Big Wins with Sue Saller</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-small-steps-big-wins</schema:url>
    <schema:datePublished>2023-12-19</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Quit the W-2 and Didn&apos;t Look Back - Sharing the journey of leaving traditional employment to pursue entrepreneurship and fractional CTO work, including lessons learned and advice for others considering the leap.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Software Oasis</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-software-oasis</schema:url>
    <schema:datePublished>2024-03-01</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>API &amp; Security Specialist - Discussion about API design, security best practices, and building robust, secure software systems that protect user data and business assets.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Timothy Hughes</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-timothy-hughes</schema:url>
    <schema:datePublished>2023-12-01</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Understanding Software&apos;s Hidden Challenges - Exploring the often-invisible challenges in software development, from technical debt to organizational issues, and how to address them proactively.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: The Tech Leader&apos;s Playbook</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-tech-leaders-playbook</schema:url>
    <schema:datePublished>2023-12-22</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Tech Companies Aren&apos;t Just Failing - They&apos;re Collapsing - An in-depth look at why tech companies fail and what leaders can do to prevent catastrophic collapse. Exploring common pitfalls and strategies for sustainable growth.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Tech Leaders</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-tech-leaders-spotlight</schema:url>
    <schema:datePublished>2024-03-12</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Spotlight Series - Featured in the Tech Leaders Spotlight Series, sharing insights on technology leadership, building effective teams, and driving innovation in software development.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Brian Childress</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-top-technical-questions</schema:url>
    <schema:datePublished>2024-05-08</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Top Technical Questions from Founders - Answering the most common and critical technical questions that founders ask, providing practical guidance on technology decisions, architecture, and team building.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: Work at Home RockStar</schema:name>
    <schema:url>https://brianchildress.co/talks/podcast-work-at-home-rockstar</schema:url>
    <schema:datePublished>2024-02-27</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>The Grit Behind Tech Success - Professional Mastery and Integrity - Discussing the importance of professional integrity, continuous learning, and the determination required to succeed in technology leadership.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>All Things Open 2018</schema:name>
    <schema:url>https://brianchildress.co/talks/talk-all-things-open-2018</schema:url>
    <schema:datePublished>2018-10-22</schema:datePublished>
    <schema:genre>conference</schema:genre>
    <schema:description>As our applications grow in complexity, application security needs to change to keep pace. Using real-world examples we will explore new implementations for front-end user authorization and authentication best practices. We’ll go beyond the basics of determining if a user is logged in, and discuss using JSON Web Tokens (JWT) for authentication. By examining security vulnerabilities lurking in most web applications we will demonstrate strategies to implement new security patterns using today’s hottest JavaScript frameworks (Angular, React, Vue). You’ll find unique ways to differentiate users by roles or security groups, changing the user experience. We’ll discuss ways to control a user’s access down to a single data point by moving our authorization model to the component level. &lt;br/&gt;&lt;br/&gt; &lt;em&gt;Key areas we’ll cover&lt;/em&gt; &lt;ul&gt;&lt;li&gt;JSON Web Token (JWT) best practices&lt;/li&gt;&lt;li&gt;Route and Component level authorization&lt;/li&gt;&lt;li&gt;Role based user access&lt;/li&gt;&lt;li&gt;Vulnerabilities in modern web apps&lt;/li&gt;</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Coder Cruise 2018</schema:name>
    <schema:url>https://brianchildress.co/talks/talk-coder-cruise-2018</schema:url>
    <schema:datePublished>2018-08-30</schema:datePublished>
    <schema:genre>conference</schema:genre>
    <schema:description>As our applications grow in complexity, application security needs to change to keep pace. Using real-world examples we will explore new implementations for front-end user authorization and authentication best practices. We’ll go beyond the basics of determining if a user is logged in, and discuss using JSON Web Tokens (JWT) for authentication. By examining security vulnerabilities lurking in most web applications we will demonstrate strategies to implement new security patterns using today’s hottest JavaScript frameworks (Angular, React, Vue). You’ll find unique ways to differentiate users by roles or security groups, changing the user experience. We’ll discuss ways to control a user’s access down to a single data point by moving our authorization model to the component level. &lt;br/&gt;&lt;br/&gt; &lt;em&gt;Key areas we’ll cover&lt;/em&gt; &lt;ul&gt;&lt;li&gt;JSON Web Token (JWT) best practices&lt;/li&gt;&lt;li&gt;Route and Component level authorization&lt;/li&gt;&lt;li&gt;Role based user access&lt;/li&gt;&lt;li&gt;Vulnerabilities in modern web apps&lt;/li&gt;</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>ForwardJS Ottawa 2019</schema:name>
    <schema:url>https://brianchildress.co/talks/talk-forward-js-ottawa-2019</schema:url>
    <schema:datePublished>2019-04-10</schema:datePublished>
    <schema:genre>conference</schema:genre>
    <schema:description>As our applications grow in complexity, application security needs to change to keep pace. Using real-world examples we will explore new implementations for front-end user authorization and authentication best practices. We’ll go beyond the basics of determining if a user is logged in, and discuss using JSON Web Tokens (JWT) for authentication. By examining security vulnerabilities lurking in most web applications we will demonstrate strategies to implement new security patterns using today’s hottest JavaScript frameworks (Angular, React, Vue). You’ll find unique ways to differentiate users by roles or security groups, changing the user experience. We’ll discuss ways to control a user’s access down to a single data point by moving our authorization model to the component level. &lt;br/&gt;&lt;br/&gt; &lt;em&gt;Key areas we’ll cover&lt;/em&gt; &lt;ul&gt;&lt;li&gt;JSON Web Token (JWT) best practices&lt;/li&gt;&lt;li&gt;Route and Component level authorization&lt;/li&gt;&lt;li&gt;Role based user access&lt;/li&gt;&lt;li&gt;Vulnerabilities in modern web apps&lt;/li&gt;</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Open Source 101 2019</schema:name>
    <schema:url>https://brianchildress.co/talks/talk-open-source-101-2019</schema:url>
    <schema:datePublished>2019-04-18</schema:datePublished>
    <schema:genre>conference</schema:genre>
    <schema:description>Do your tests keep you up at night? In this talk we’ll remove the mystery and fear around testing by understanding what a good test looks like. Through real world examples we’ll explore ways to improve your overall test coverage by identifying key areas in your application, unique edge cases and more. We’ll use some uncommon tools and approaches, like mutation testing, to literally test our tests and produce a much better test result. I’ll show you ways to test that actually matter. You will be able to tell a good test from a bad one and know which type of test to use for each scenario</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Podcast: The Future of the Future</schema:name>
    <schema:url>https://brianchildress.co/talks/talk-podcast-the-future-of-the-future-2023</schema:url>
    <schema:datePublished>2023-03-21</schema:datePublished>
    <schema:genre>podcast</schema:genre>
    <schema:description>Join me to learn this, and more, as I interview Brian Childress, a seasoned Software Architect with more than 15 years of experience leading projects and helping companies get software development right.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>RVA.JS Meetup, March 2022</schema:name>
    <schema:url>https://brianchildress.co/talks/talk-rvajs-2022</schema:url>
    <schema:datePublished>2022-03-01</schema:datePublished>
    <schema:genre>meetup</schema:genre>
    <schema:description>As our applications grow in complexity, application security needs to change to keep pace. Using real-world examples we will explore new implementations for front-end user authorization and authentication best practices. We&apos;ll go beyond the basics of determining if a user is logged in, and discuss using JSON Web Tokens (JWT) for authentication. By examining security vulnerabilities lurking in most web applications we will demonstrate strategies to implement new security patterns using today&apos;s hottest JavaScript frameworks (Angular, React, Vue). You&apos;ll find unique ways to differentiate users by roles or security groups, changing the user experience. We&apos;ll discuss ways to control a user&apos;s access down to a single data point by moving our authorization model to the component level. &lt;br/&gt;&lt;br/&gt; &lt;em&gt;Key areas we&apos;ll cover:&lt;/em&gt; &lt;ul&gt;&lt;li&gt;JSON Web Token (JWT) best practices&lt;/li&gt;&lt;li&gt;Route and Component level authorization&lt;/li&gt;&lt;li&gt;Role based user access&lt;/li&gt;&lt;li&gt;Vulnerabilities in modern web apps&lt;/li&gt;</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>
  <schema:CreativeWork>
    <schema:name>Webinar: Tintash - 5-Step Tech Stack Audit</schema:name>
    <schema:url>https://brianchildress.co/talks/webinar-tintash-tech-stack-audit</schema:url>
    <schema:datePublished>2025-08-20</schema:datePublished>
    <schema:genre>webinar</schema:genre>
    <schema:description>5-Step Tech Stack Audit - A comprehensive framework for auditing your technology stack, identifying technical debt, security vulnerabilities, and opportunities for optimization and improvement.</schema:description>
    <schema:author><schema:Person><schema:name>Brian Childress</schema:name></schema:Person></schema:author>
  </schema:CreativeWork>

  <!-- ==================== Testimonials ==================== -->
  <schema:Review>
    <schema:reviewBody>Brian&apos;s ability to simplify a tangled system while keeping the team shipping was the best investment we made all year.</schema:reviewBody>
    <schema:author>
      <schema:Person>
        <schema:name>Jane Doe</schema:name>
        <schema:jobTitle>VP of Engineering, Acme Co</schema:jobTitle>
      </schema:Person>
    </schema:author>
    <schema:itemReviewed>
      <schema:Person><schema:name>Brian Childress</schema:name></schema:Person>
    </schema:itemReviewed>
  </schema:Review>
  <schema:Review>
    <schema:reviewBody>He cut our cloud costs by 25% not by adding tools, but by deleting what we didn&apos;t need. That kind of judgment is rare.</schema:reviewBody>
    <schema:author>
      <schema:Person>
        <schema:name>Mark Alvarez</schema:name>
        <schema:jobTitle>CTO, Northwind Systems</schema:jobTitle>
      </schema:Person>
    </schema:author>
    <schema:itemReviewed>
      <schema:Person><schema:name>Brian Childress</schema:name></schema:Person>
    </schema:itemReviewed>
  </schema:Review>
  <schema:Review>
    <schema:reviewBody>Working with Brian moved us from weekly to daily releases without the usual chaos. He explains tradeoffs clearly and the team trusted his calls.</schema:reviewBody>
    <schema:author>
      <schema:Person>
        <schema:name>Priya Natarajan</schema:name>
        <schema:jobTitle>Director of Product, Fenwick Labs</schema:jobTitle>
      </schema:Person>
    </schema:author>
    <schema:itemReviewed>
      <schema:Person><schema:name>Brian Childress</schema:name></schema:Person>
    </schema:itemReviewed>
  </schema:Review>
  <schema:Review>
    <schema:reviewBody>Brian brought AI-assisted development into our workflow without losing the plot. Thoughtful, pragmatic, and easy to work with.</schema:reviewBody>
    <schema:author>
      <schema:Person>
        <schema:name>Tom Bergstrom</schema:name>
        <schema:jobTitle>Head of Engineering, Solvo</schema:jobTitle>
      </schema:Person>
    </schema:author>
    <schema:itemReviewed>
      <schema:Person><schema:name>Brian Childress</schema:name></schema:Person>
    </schema:itemReviewed>
  </schema:Review>

  <!-- ==================== LLM Discovery ==================== -->
  <llm:index>
    <llm:plainText>https://brianchildress.co/llms.txt</llm:plainText>
    <llm:sitemap>https://brianchildress.co/sitemap-index.xml</llm:sitemap>
    <llm:markdownNote>Every blog post and project case study is also available as plain Markdown at the same URL path with a .md extension appended (e.g. /blog/some-post.md).</llm:markdownNote>
  </llm:index>

</schema>