<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nick Janetakis</title>
    <description>Hi, I'm Nick. I'm a full stack developer and teacher who focuses on building and deploying web apps. Take a look at my blog or courses.</description>
    <link>https://nickjanetakis.com</link>
    <atom:link href="https://nickjanetakis.com/atom.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Tue, 20 Feb 2024 06:47:43 -0500</pubDate>
    <lastBuildDate>Tue, 20 Feb 2024 06:47:43 -0500</lastBuildDate>
    <generator>Jekyll v3.8.1</generator>
    
      <item>
        <title>Build Git Tagged Multi-Arch Docker Images with GitHub Actions</title>
        <description>Automate building and pushing Docker images that support both AMD64 and ARM64 CPU architectures.</description>
        <pubDate>Tue, 20 Feb 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/build-git-tagged-multi-arch-docker-images-with-github-actions</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/build-git-tagged-multi-arch-docker-images-with-github-actions</guid>
        
        <category>docker</category>
        
      </item>
    
      <item>
        <title>Build Multi-CPU Architecture Docker Images with Buildx</title>
        <description>This can be handy to support both AMD64 and ARM64 CPU architectures. Build images for X platforms with one command.</description>
        <pubDate>Tue, 13 Feb 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/build-multi-cpu-architecture-docker-images-with-buildx</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/build-multi-cpu-architecture-docker-images-with-buildx</guid>
        
        <category>docker</category>
        
      </item>
    
      <item>
        <title>Hiding User Input in a Shell Script</title>
        <description>This could be useful when asking users to input passwords, API tokens or anything you don't want printed to the screen.</description>
        <pubDate>Tue, 06 Feb 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/hiding-user-input-in-a-shell-script</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/hiding-user-input-in-a-shell-script</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Never Underestimate Support and Knowing your Customer</title>
        <description>I had a recent interaction with a security and surveillance camera supplier that left me pleasantly surprised.</description>
        <pubDate>Tue, 30 Jan 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/never-underestimate-support-and-knowing-your-customer</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/never-underestimate-support-and-knowing-your-customer</guid>
        
        <category>dev-business</category>
        
      </item>
    
      <item>
        <title>Color Your Shell Prompt Red If the Last Command Threw an Error</title>
        <description>We'll cover examples that work with both bash and zsh. We'll go with red for errors and your default color for non-errors.</description>
        <pubDate>Tue, 23 Jan 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/color-your-shell-prompt-red-if-the-last-command-threw-an-error</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/color-your-shell-prompt-red-if-the-last-command-threw-an-error</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Difference between Double Ampersand and Semicolon in a Shell Script</title>
        <description>Sometimes they appear to do the same thing but there is quite a big difference between both solutions.</description>
        <pubDate>Tue, 16 Jan 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/difference-between-double-ampersand-and-semicolon-in-a-shell-script</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/difference-between-double-ampersand-and-semicolon-in-a-shell-script</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Troubleshooting Steps for When a Vim Plugin Is Not Working</title>
        <description>Most of the time things go smoothly but what happens if you add a plugin to your config and it doesn't work?</description>
        <pubDate>Tue, 09 Jan 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/troubleshooting-steps-for-when-a-vim-plugin-is-not-working</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/troubleshooting-steps-for-when-a-vim-plugin-is-not-working</guid>
        
        <category>vim</category>
        
      </item>
    
      <item>
        <title>Docker Tip #96: See How Long a Container Ran For</title>
        <description>This could be handy if you're running multi-hour commands and want to see how long they took afterwards.</description>
        <pubDate>Tue, 02 Jan 2024 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/docker-tip-96-see-how-long-a-container-ran-for</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/docker-tip-96-see-how-long-a-container-ran-for</guid>
        
        <category>docker</category>
        
      </item>
    
      <item>
        <title>Automate Suspending Kubernetes Cron Jobs with find and sed</title>
        <description>Treat yourself by automating mundane tasks like setting a bunch of YAML properties from true to false and vice versa.</description>
        <pubDate>Tue, 26 Dec 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/automate-suspending-kubernetes-cron-jobs-with-find-and-sed</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/automate-suspending-kubernetes-cron-jobs-with-find-and-sed</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Getting Celery to Work with Python 3.12 and Flask 3.0</title>
        <description>You may need to make a slight modification to your create_celery_app function when updating to Python 3.12.</description>
        <pubDate>Tue, 19 Dec 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/getting-celery-to-work-with-python-312-and-flask-3</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/getting-celery-to-work-with-python-312-and-flask-3</guid>
        
        <category>flask</category>
        
      </item>
    
      <item>
        <title>Get the MD5 Hash of a File with OpenSSL</title>
        <description>This is a fairly compatible way that works on most distros of Linux and macOS without needing extra dependencies.</description>
        <pubDate>Tue, 12 Dec 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/get-the-md5-hash-of-a-file-with-openssl</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/get-the-md5-hash-of-a-file-with-openssl</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Git Cherry Pick Examples to Apply Hot Fixes and Security Patches</title>
        <description>Cherry picking lets you apply 1 or more commits from one branch to another, it shouldn't be abused but it does have its place.</description>
        <pubDate>Tue, 05 Dec 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/git-cherry-pick-examples-to-apply-hot-fixes-and-security-patches</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/git-cherry-pick-examples-to-apply-hot-fixes-and-security-patches</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Help Find and Remove Hard Coded Passwords and Secrets in a Project</title>
        <description>It's never fun to accidentally leak secrets in git committed files. Here's a few ways to help address them in your code base.</description>
        <pubDate>Tue, 28 Nov 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/help-find-and-remove-hard-coded-passwords-and-secrets-in-a-project</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/help-find-and-remove-hard-coded-passwords-and-secrets-in-a-project</guid>
        
        <category>flask</category>
        
        <category>ruby-on-rails</category>
        
      </item>
    
      <item>
        <title>Count All Git Commits in a Repo</title>
        <description>This could be useful to compare activity across multiple repos.</description>
        <pubDate>Tue, 21 Nov 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/count-all-git-commits-in-a-repo</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/count-all-git-commits-in-a-repo</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Customize FZF's CTRL + T Binding with FZF_CTRL_T_OPTS to Preview Files</title>
        <description>This lets us quickly preview files in less or whatever tool you prefer.</description>
        <pubDate>Tue, 14 Nov 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/customize-fzf-ctrl-t-binding-to-preview-files</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/customize-fzf-ctrl-t-binding-to-preview-files</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Validate File Types by Reading the First Few Bytes of a File</title>
        <description>Easily confirm if a file is really a jpg, png, gz or whatever file you want. We'll use the od command line tool or Python and Ruby.</description>
        <pubDate>Tue, 07 Nov 2023 00:00:00 -0500</pubDate>
        <link>https://nickjanetakis.com/blog/validate-file-types-by-reading-the-first-few-bytes-of-a-file</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/validate-file-types-by-reading-the-first-few-bytes-of-a-file</guid>
        
        <category>flask</category>
        
        <category>linux</category>
        
        <category>ruby-on-rails</category>
        
      </item>
    
      <item>
        <title>Get Video Duration in Seconds Using FFmpeg / FFprobe</title>
        <description>We'll get the value back in seconds as well as HH:MM:SS if you prefer.</description>
        <pubDate>Tue, 31 Oct 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/get-video-duration-in-seconds-with-ffmpeg-ffprobe</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/get-video-duration-in-seconds-with-ffmpeg-ffprobe</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Install the Latest Version of Docker Compose v2</title>
        <description>This can be handy for brand new releases that haven't been pushed to your operating system's package manager or Docker Desktop yet.</description>
        <pubDate>Tue, 24 Oct 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/install-the-latest-version-of-docker-compose-v2</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/install-the-latest-version-of-docker-compose-v2</guid>
        
        <category>docker</category>
        
      </item>
    
      <item>
        <title>Delete Lines That Match a Pattern or the Opposite Pattern Using sed</title>
        <description>This could be useful to remove unwanted lines in a file or output, such as processing a file and writing out a new file to analyze.</description>
        <pubDate>Tue, 17 Oct 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/delete-lines-that-match-a-pattern-or-the-opposite-pattern-using-sed</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/delete-lines-that-match-a-pattern-or-the-opposite-pattern-using-sed</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Expand Tilde to Home Directory When Reading User Input in Bash</title>
        <description>A common use case is to ask a user to define a path using a tilde but you want that to really be their home directory path.</description>
        <pubDate>Tue, 10 Oct 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/expand-tilde-to-home-directory-when-reading-user-input-in-bash</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/expand-tilde-to-home-directory-when-reading-user-input-in-bash</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Modifying Shell Arguments with the set Command</title>
        <description>This could be handy to dynamically adjust the arguments of a program based on whatever custom condition or criteria you need.</description>
        <pubDate>Tue, 03 Oct 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/modifying-shell-arguments-with-the-set-command</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/modifying-shell-arguments-with-the-set-command</guid>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Ignore Sudo in a Shell Script If You're Running as Root</title>
        <description>This can be used to run a command as root outside and inside of Docker where sudo might not be available.</description>
        <pubDate>Tue, 26 Sep 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/ignore-sudo-in-a-shell-script-if-you-are-running-as-root</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/ignore-sudo-in-a-shell-script-if-you-are-running-as-root</guid>
        
        <category>docker</category>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Reduce Docker Images by 20 MB by Verifying APT Packages without gnupg</title>
        <description>When working with package sources you can pass the plain text asc key into signed-by instead of a binary gpg key.</description>
        <pubDate>Tue, 19 Sep 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/reduce-docker-images-by-20mb-by-verifying-apt-packages-without-gnupg</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/reduce-docker-images-by-20mb-by-verifying-apt-packages-without-gnupg</guid>
        
        <category>docker</category>
        
        <category>linux</category>
        
      </item>
    
      <item>
        <title>Never Underestimate Making Pull Requests to Update Documentation</title>
        <description>Even the smallest contributes are often welcome and they could lead to internal discussions that promote change.</description>
        <pubDate>Tue, 12 Sep 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/never-underestimate-making-pull-requests-to-update-documentation</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/never-underestimate-making-pull-requests-to-update-documentation</guid>
        
        <category>docker</category>
        
        <category>open-source</category>
        
      </item>
    
      <item>
        <title>Beware of Dangling Backslashes in RUN Commands in Your Dockerfile</title>
        <description>This can cause pull errors that may lead you down the wrong path or cause fun and exciting errors with anything you're running afterwards.</description>
        <pubDate>Tue, 05 Sep 2023 00:00:00 -0400</pubDate>
        <link>https://nickjanetakis.com/blog/beware-of-dangling-backslashes-in-run-commands-in-your-dockerfile</link>
        <guid isPermaLink="true">https://nickjanetakis.com/blog/beware-of-dangling-backslashes-in-run-commands-in-your-dockerfile</guid>
        
        <category>docker</category>
        
      </item>
    
  </channel>
</rss>
