<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[force push]]></title><description><![CDATA[Musings and how-to's by Johanan Idicula, a software developer]]></description><link>https://forcepush.tech</link><generator>GatsbyJS</generator><lastBuildDate>Thu, 26 Feb 2026 22:30:02 GMT</lastBuildDate><item><title><![CDATA[Triggering Cloudflare Cache Purging with Netlify's Post-Deploy Hooks and a Google Cloud Function in Go]]></title><link>https://forcepush.tech/triggering-cloudflare-cache-purging-with-netlifys-post-deploy-hooks-and-a-google-cloud-function-in-go</link><guid isPermaLink="false">https://forcepush.tech/triggering-cloudflare-cache-purging-with-netlifys-post-deploy-hooks-and-a-google-cloud-function-in-go</guid><pubDate>Wed, 27 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had been putting off some gnarly dependency upgrades for over a year and finally got around to it last week, after a few false starts of…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/triggering-cloudflare-cache-purging-with-netlifys-post-deploy-hooks-and-a-google-cloud-function-in-go&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Go Package CI/CD with GitHub Actions]]></title><link>https://forcepush.tech/go-package-ci-cd-with-git-hub-actions</link><guid isPermaLink="false">https://forcepush.tech/go-package-ci-cd-with-git-hub-actions</guid><pubDate>Sat, 15 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a previous post, I wrote about how I implemented CI/CD checks and autoreleases for the Python implementation of my random-standup program…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/go-package-ci-cd-with-git-hub-actions&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Python Package CI/CD with GitHub Actions]]></title><link>https://forcepush.tech/python-package-ci-cd-with-git-hub-actions</link><guid isPermaLink="false">https://forcepush.tech/python-package-ci-cd-with-git-hub-actions</guid><pubDate>Sun, 09 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a previous post, I alluded to having pure CI/CD checks and autoreleases for my random-standup program. I wanted to ensure that: Each…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/python-package-ci-cd-with-git-hub-actions&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Writing a Simple CLI Program: Python vs Go]]></title><link>https://forcepush.tech/writing-a-simple-cli-program-python-vs-go</link><guid isPermaLink="false">https://forcepush.tech/writing-a-simple-cli-program-python-vs-go</guid><pubDate>Sat, 01 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As I mentioned in a previous post, I&apos;m currently the Scrum Master of the DND Digital HR AppDev team. One of my duties is running the daily…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/writing-a-simple-cli-program-python-vs-go&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Why TOML?]]></title><link>https://forcepush.tech/why-toml</link><guid isPermaLink="false">https://forcepush.tech/why-toml</guid><pubDate>Sat, 01 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Config files should be readable and editable by both humans and machines. What defines this? A format with a clear specification (for the…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/why-toml&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Bank Error in Your Favour: Collect $500M]]></title><link>https://forcepush.tech/bank-error-in-your-favour-collect-500-m</link><guid isPermaLink="false">https://forcepush.tech/bank-error-in-your-favour-collect-500-m</guid><pubDate>Thu, 18 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Disclaimer: I am not a lawyer. I am not providing financial advice of any kind. This post only shares my opinions on the costs of poorly…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/bank-error-in-your-favour-collect-500-m&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[How the DND Digital HR AppDev Team Does Scrum Rituals]]></title><link>https://forcepush.tech/how-the-dnd-digital-hr-app-dev-team-does-scrum-rituals</link><guid isPermaLink="false">https://forcepush.tech/how-the-dnd-digital-hr-app-dev-team-does-scrum-rituals</guid><pubDate>Tue, 02 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My team in DND Civilian HR rotates the Scrum Master responsibilities among team members interested in taking on the role. I finished a 2…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/how-the-dnd-digital-hr-app-dev-team-does-scrum-rituals&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Missives to the Future: On Commit Messages and Maintainability]]></title><link>https://forcepush.tech/missives-to-the-future-on-commit-messages-and-maintainability</link><guid isPermaLink="false">https://forcepush.tech/missives-to-the-future-on-commit-messages-and-maintainability</guid><pubDate>Tue, 10 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2021 Update I&apos;m now using Conventional Commits. You should too. Read on to find out why.

My team works on tools to streamline civilian HR…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/missives-to-the-future-on-commit-messages-and-maintainability&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Best Practices in Bash]]></title><link>https://forcepush.tech/best-practices-in-bash</link><guid isPermaLink="false">https://forcepush.tech/best-practices-in-bash</guid><pubDate>Sat, 24 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I do some consultation work with a Université de Montréal lab writing open-source qMRI software. The software is yet to be released, but we…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/best-practices-in-bash&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Beth Aitman on writing effective documentation at LeadDev Berlin 2019]]></title><link>https://forcepush.tech/beth-aitman-on-writing-effective-documentation-at-lead-dev-berlin-2019</link><guid isPermaLink="false">https://forcepush.tech/beth-aitman-on-writing-effective-documentation-at-lead-dev-berlin-2019</guid><pubDate>Fri, 21 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I recently re-read Joel Chippindale&apos;s fantastic post about telling stories through your commits and I noticed that it was actually part of a…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/beth-aitman-on-writing-effective-documentation-at-lead-dev-berlin-2019&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[The Great Gatsby Migration]]></title><link>https://forcepush.tech/the-great-gatsby-migration</link><guid isPermaLink="false">https://forcepush.tech/the-great-gatsby-migration</guid><pubDate>Thu, 06 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;ve read my blog before, you might have noticed something looks a bit different now... the fonts are slicker, site loading is faster…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/the-great-gatsby-migration&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Modular Programming in C]]></title><link>https://forcepush.tech/modular-programming-in-c</link><guid isPermaLink="false">https://forcepush.tech/modular-programming-in-c</guid><pubDate>Thu, 14 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today I&apos;m going to demonstrate the concept of modular programming in C. Together, we&apos;ll build a simple integer arithmetic calculator. By…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/modular-programming-in-c&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Hello World!]]></title><link>https://forcepush.tech/hello-world</link><guid isPermaLink="false">https://forcepush.tech/hello-world</guid><pubDate>Wed, 13 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I&apos;ve been wanting to get this going for a while, and now that the &apos;rona is upon us, I finally have time to do so! Over the next few weeks, I…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://forcepush.tech/hello-world&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item></channel></rss>