<?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" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[MaxLogic Substack: Tech Zone]]></title><description><![CDATA[Collection of Technical Reference Articles]]></description><link>https://maxlogic.substack.com/s/tech-zone</link><image><url>https://substackcdn.com/image/fetch/$s_!p8yR!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78fb2094-4b4d-4068-8771-dd6587d4228c_100x100.png</url><title>MaxLogic Substack: Tech Zone</title><link>https://maxlogic.substack.com/s/tech-zone</link></image><generator>Substack</generator><lastBuildDate>Tue, 09 Jun 2026 02:51:54 GMT</lastBuildDate><atom:link href="https://maxlogic.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Christiaan Lok]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[maxlogic@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[maxlogic@substack.com]]></itunes:email><itunes:name><![CDATA[Maxlogic]]></itunes:name></itunes:owner><itunes:author><![CDATA[Maxlogic]]></itunes:author><googleplay:owner><![CDATA[maxlogic@substack.com]]></googleplay:owner><googleplay:email><![CDATA[maxlogic@substack.com]]></googleplay:email><googleplay:author><![CDATA[Maxlogic]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[S3 Buckets in Maximo Automation Scripts - Cloud Object Storage (COS)]]></title><description><![CDATA[Automation script to run reports and store as an attachment within an S3 bucket]]></description><link>https://maxlogic.substack.com/p/s3-buckets-in-maximo-automation-scripts</link><guid isPermaLink="false">https://maxlogic.substack.com/p/s3-buckets-in-maximo-automation-scripts</guid><dc:creator><![CDATA[Joshua Conneely]]></dc:creator><pubDate>Tue, 26 Sep 2023 09:30:20 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Within this article we will expand on <a href="https://bportaluri.com/2019/09/script-run-report-save-as-attachment.html">this article</a> by Bruno Portaluri to run and store reports as Maximo attachments within an S3 bucket. </p><p>Using the Cloud Object Storage (COS) <a href="https://bportaluri.com/wp-content/MaximoJavaDocs7612/com/ibm/tivoli/maximo/cos/COSApi.html">API </a>within a Maximo automation script is a powerful way to extend the functionality of your Maximo environment and automate tasks related to storage, data retrieval, and external integrations. The COS API allows you to interact with cloud-based object storage systems, such as Amazon S3 or IBM Cloud Object Storage, directly from your Maximo environment.</p><p><strong>1. Storage and Retrieval of Attachments:</strong></p><ul><li><p>Automatically store attachments associated with Maximo records, such as work orders, assets, or service requests, in a COS bucket.</p></li><li><p>Retrieve attachments from COS and associate them with Maximo records when needed.</p></li></ul><p><strong>2. Integration with External Systems:</strong></p><ul><li><p>You can upload data files generated by Maximo processes to COS and make them accessible to other applications or departments.</p></li><li><p>Maximo automation scripts can download data from COS for further processing or analysis, allowing you to integrate Maximo with data analytics or reporting tools.</p></li></ul><p><strong>3. Data Backup and Archiving:</strong></p><p>Using the COS API, you can automate the process of backing up critical Maximo data to a secure cloud storage environment. This ensures data durability and simplifies disaster recovery efforts.</p><h3>Maximo Automation Script Example - Storing Reports in COS (S3 Bucket)</h3><p>Once your Maximo system is <a href="https://www.ibm.com/docs/en/maximo-manage/continuous-delivery?topic=documents-configuring-system-properties-s3">configured for S3 storage</a>, you can initialise an instance of the COSApi class within your automation scripts. The below example uses the uploadFile() method to store a new file within our S3 bucket.</p><pre><code>from com.ibm.tivoli.maximo.report.birt.admin import ReportAdminServiceRemote as ReportAdmin
from com.ibm.tivoli.maximo.report.birt.runtime import ReportParameterData
from psdi.server import MXServer
from com.ibm.tivoli.maximo.cos import COSApi

# ----------------------------------------
# Initialise paramters for runReport call
## report
## app
## params
## file
#-----------------------------------------

userInfo=MXServer.getMXServer().getSystemUserInfo()

try:
    bytes = ReportAdmin.runReport(userInfo, report, app, params, file, ReportAdmin.OUTPUT_FORMAT_PDF)

    # write the output to S3 bucket
    cos=COSApi()
    cos.uploadFile(BUCKET_NAME,file,'application/pdf',bytes)
    
except Exception as e:
    # Handle error
    
# ----------------------------------------
# Code for creation of DOCLINKS object
#-----------------------------------------
</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="566" height="377.37193126022913" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3259,&quot;width&quot;:4888,&quot;resizeWidth&quot;:566,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;tuxedo cat inside bucket&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="tuxedo cat inside bucket" title="tuxedo cat inside bucket" srcset="https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1526636355180-fe37f8ce86cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzNnx8YnVja2V0fGVufDB8fHx8MTY5NTY1MjU4NXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@frommarwool">From Marwool</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://maxlogic.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://maxlogic.substack.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[Infrastructure as Code (IaC) with terraform]]></title><description><![CDATA[In today's rapidly evolving technology landscape, traditional ways of provisioning and managing infrastructure don't deliver the speed and efficiency that modern enterprises demand.]]></description><link>https://maxlogic.substack.com/p/infrastructure-as-code-iac-with-terraform</link><guid isPermaLink="false">https://maxlogic.substack.com/p/infrastructure-as-code-iac-with-terraform</guid><dc:creator><![CDATA[Maxlogic]]></dc:creator><pubDate>Fri, 07 Jul 2023 18:35:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/649b225b-4d6b-4e01-845a-10a06ad5727b_2400x1254.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In today's rapidly evolving technology landscape, traditional ways of provisioning and managing infrastructure don't deliver the speed and efficiency that modern enterprises demand. Manual configurations, custom scripts, and inconsistent environments slow down operations and contribute to errors. HashiCorp's Terraform has emerged as an industry-standard solution for these challenges by offering infrastructure as code (IaC), bringing the same workflow as application development to infrastructure management.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N0X7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N0X7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 424w, https://substackcdn.com/image/fetch/$s_!N0X7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 848w, https://substackcdn.com/image/fetch/$s_!N0X7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!N0X7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N0X7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31319,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N0X7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 424w, https://substackcdn.com/image/fetch/$s_!N0X7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 848w, https://substackcdn.com/image/fetch/$s_!N0X7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!N0X7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde5f5e15-6db6-4b30-896d-1d5103da51b9_2400x1254.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>What is Terraform?</strong></p><p>Terraform is an open-source Infrastructure as Code (IaC) tool developed by HashiCorp. It provides a consistent, declarative language to describe and provision infrastructure, replacing the manual, error-prone default approach.</p><p>This powerful tool supports a vast range of cloud providers like Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, IBM Cloud, and many others, including on-premises and hybrid cloud environments. Terraform's flexible nature can manage anything from low-level components like compute instances, storage, and networking to high-level components such as DNS entries, SaaS features, etc.</p><p><strong>Key Concepts of Terraform</strong></p><p><em>Infrastructure as Code (IaC)</em></p><p>Infrastructure as code is the cornerstone of Terraform. IaC transforms infrastructure specifications into a format that is both human-readable and machine-consumable, which improves productivity, simplifies infrastructure changes, and enhances visibility across teams. With IaC, teams can manage infrastructure as if it were software code. They can use version control systems, test the infrastructure systematically, and track changes over time, ensuring consistency and repeatability.</p><p><em>Execution Plans</em></p><p>Terraform generates an execution plan detailing what will happen when you run your code. It gives you a glimpse into the future, telling you what will be created, updated, or deleted. This functionality allows teams to understand the impact of their changes and helps to prevent undesirable outcomes, providing a significant advantage over traditional scripting.</p><p><em>Resource Graph</em></p><p>Terraform builds a resource graph, which represents the dependencies between all the resources within an infrastructure. This graph ensures the correct order of resource creation, updates, and deletion. Terraform also parallelizes the creation and modification of non-dependent resources, increasing speed and efficiency.</p><p><em>Change Automation</em></p><p>Terraform's change automation capabilities handle the lifecycle of your infrastructure. They ensure that all changes occur in a controlled manner, prevent configuration drift, and maintain infrastructure stability. This feature contributes significantly to operational efficiency, as it automates tasks that would traditionally require substantial manual effort.</p><p><strong>Benefits of Terraform</strong></p><p><em>Terraform is Platform Agnostic</em></p><p>One of the major strengths of Terraform is its ability to manage multi-cloud and heterogeneous environments. You can use the same toolset, syntax, and concepts across AWS, Azure, Google Cloud, IBM Cloud, and other providers. This multi-platform support makes Terraform a single source of truth for your entire infrastructure.</p><p><em>Improved Collaboration and Governance</em></p><p>Terraform configuration files can be shared and collaborated on, like any other codebase, which makes teamwork easier and more efficient. By using version control systems, teams can track the history of changes, maintain different versions, and revert if necessary. Additionally, Terraform integrates with HashiCorp's Sentinel, a policy as code framework, to enforce fine-grained, logic-based policy decisions, providing an extra layer of governance.</p><p><em>Scalability and Efficiency</em></p><p>Terraform scales efficiently as your infrastructure grows, managing thousands of resources across multiple cloud providers without performance degradation. It also streamlines infrastructure management, reducing the amount of manual work, and thereby freeing up teams to focus on more strategic tasks.</p><p><strong>Conclusion</strong></p><p>In an era defined by rapid digital transformation, the need for efficient, scalable, and reliable infrastructure management solutions is paramount. Terraform, with its infrastructure as code approach, offers a powerful, flexible solution to these needs, driving operational efficiency and reducing errors. By embracing Terraform and IaC, organizations can ensure they are well-positioned to meet the infrastructure demands of the modern enterprise.</p>]]></content:encoded></item><item><title><![CDATA[A Birds Eye Look at Docker and RedHat Quay]]></title><description><![CDATA[Get up and running with Docker and RedHat Quay]]></description><link>https://maxlogic.substack.com/p/an-in-depth-look-at-docker-and-redhat</link><guid isPermaLink="false">https://maxlogic.substack.com/p/an-in-depth-look-at-docker-and-redhat</guid><dc:creator><![CDATA[Maxlogic]]></dc:creator><pubDate>Sat, 01 Jul 2023 14:52:47 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0e6b20fe-150a-4e0f-8396-7c510afaf9e0_400x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Docker and RedHat Quay play vital roles in the contemporary tech landscape, offering robust solutions for application containerization and secure private image repositories. Maxlogic, for instance, has found immense value in RedHat Quay for maintaining their private images securely.</p><h2><strong>Docker: Your Tool for Efficient Containerization</strong></h2><p>Docker simplifies the deployment of applications by containerizing them - bundling together the app with its associated dependencies and libraries. This makes Docker an essential tool for developers and system administrators.</p><h3><strong>Docker Installation on Windows</strong></h3><p>Here's a step-by-step guide for Docker installation on Windows:</p><ol><li><p>Visit Docker's official website at <strong><a href="https://www.docker.com/products/docker-desktop">https://www.docker.com/products/docker-desktop</a></strong>.</p></li><li><p>Click "Get Docker" to download the Docker Desktop installer.</p></li><li><p>Open the downloaded installer and follow the prompts to install Docker Desktop.</p></li><li><p>After the installation, restart your computer for Docker Desktop to run smoothly.</p></li></ol><p>To confirm the successful installation, open the command prompt and type <code>docker --version</code>. Docker's version will be displayed if it is installed correctly.</p><h3><strong>Docker Installation on macOS</strong></h3><p>For macOS users, the installation process is quite straightforward:</p><ol><li><p>Head over to <strong><a href="https://www.docker.com/products/docker-desktop">https://www.docker.com/products/docker-desktop</a></strong>.</p></li><li><p>Click "Get Docker" to begin the Docker Desktop download.</p></li><li><p>Open the downloaded Docker.dmg file, and drag the Docker.app into your Applications folder.</p></li><li><p>Double-click Docker.app to start Docker. A whale icon will appear in your top status bar, indicating Docker is running.</p></li><li><p>Verify the installation by opening a terminal and typing <code>docker --version</code>. The Docker version will be displayed if the installation was successful.</p></li></ol><h2><strong>RedHat Quay: Safe House for Maxlogic's Private Images</strong></h2><p>RedHat Quay, a project by RedHat, is a private container registry that stores, builds, and deploys container images securely. It's known for its robust security features and multi-tenancy support, making it an ideal choice for enterprises like Maxlogic, which uses Quay for managing their private images.</p><h3><strong>Getting Started with RedHat Quay</strong></h3><p>To begin using Quay with Docker, follow these steps:</p><ol><li><p>Visit Quay.io and sign in.</p></li><li><p>Click on "Create New Repository" and assign a name to your repository.</p></li><li><p>Log in to your Quay account via Docker by running <code>docker login quay.io</code> in the command-line interface.</p></li><li><p>Input your Quay username and password.</p></li><li><p>Now, you can tag your local images with the repository you created in Quay and push them using <code>docker push</code>.</p></li></ol><p>As an illustration, if your repository is named <code>myrepo</code> and your Docker image is named <code>myimage</code>, you can use these commands:</p><pre><code>docker tag myimage quay.io/username/myrepo docker push quay.io/username/myrepo</code></pre><p>Remember to replace <code>username</code> with your Quay username.</p><p>After this, the image can be pulled from any Docker-enabled machine with an internet connection using <code>docker pull quay.io/username/myrepo</code>.</p><h2><strong>Conclusion</strong></h2><p>In today's technology-driven world, Docker and RedHat Quay stand as critical tools for efficient software development and deployment. Docker provides an excellent solution for containerization, and RedHat Quay, being the secure repository for Maxlogic's private images, offers a reliable way to manage Docker images. With proficiency in these tools, developers and administrators alike can ensure the delivery of secure and reliable software applications.</p>]]></content:encoded></item><item><title><![CDATA[Embracing the Future of Continuous Delivery: Unfolding Tekton and OpenShift Pipelines]]></title><description><![CDATA[Unveiling Tekton: The New Age Framework]]></description><link>https://maxlogic.substack.com/p/embracing-the-future-of-continuous</link><guid isPermaLink="false">https://maxlogic.substack.com/p/embracing-the-future-of-continuous</guid><dc:creator><![CDATA[Maxlogic]]></dc:creator><pubDate>Sat, 01 Jul 2023 14:38:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a9d5913b-74e1-412c-a8bc-6f2b2c119322_500x344.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A brainchild of the Continuous Delivery Foundation (CDF), Tekton has rapidly risen to prominence in the realm of Continuous Integration/Continuous Delivery (CI/CD). This open-source, Kubernetes-native framework marks a pivotal turning point in software development, providing a robust platform for automating and streamlining DevOps processes. By exploring the multitude of functionalities offered by Tekton and its integration with OpenShift, it's apparent why they're making waves in the ever-evolving domain of DevOps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dW_8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dW_8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 424w, https://substackcdn.com/image/fetch/$s_!dW_8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 848w, https://substackcdn.com/image/fetch/$s_!dW_8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 1272w, https://substackcdn.com/image/fetch/$s_!dW_8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dW_8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png" width="1456" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:235244,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dW_8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 424w, https://substackcdn.com/image/fetch/$s_!dW_8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 848w, https://substackcdn.com/image/fetch/$s_!dW_8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 1272w, https://substackcdn.com/image/fetch/$s_!dW_8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e3393-c1ff-4c7f-9b45-ffb23d0afbe4_3001x962.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2><strong>Exploring Tekton: The Cornerstone of CI/CD Automation</strong></h2><p>Conceived by Google in 2019, Tekton represents the embodiment of modern, cloud-native principles in the realm of CI/CD. Tekton allows developers to encapsulate CI/CD pipelines as code, affirming the Infrastructure as Code (IaC) principle and fostering streamlined workflows.</p><p>A defining aspect of Tekton is its native integration with Kubernetes. Capitalizing on Kubernetes' resources and control plane, Tekton pipelines can operate on any platform supporting Kubernetes. This ensures vendor agnosticism, empowering developers with the liberty to select platforms based on their unique requirements.</p><h2><strong>OpenShift Pipelines: Bridging the Gap with Tekton</strong></h2><p>With OpenShift Pipelines, a feature offered by the Red Hat OpenShift container platform, Tekton's vast potential is further harnessed, delivering an unrivaled CI/CD experience. OpenShift Pipelines extends the Kubernetes-native functionality of Tekton, providing an all-encompassing, ready-to-use CI/CD solution. It facilitates the creation and execution of pipelines directly from the OpenShift console, presenting an intuitive user interface to manage pipeline workflows.</p><p>The core architecture of OpenShift Pipelines is constructed upon Tekton's components, ensuring it capitalizes on Tekton's agility, extensibility, and portability. Furthermore, OpenShift Pipelines embodies the philosophy of configuration as code, augmenting the synergy of development and operations within the OpenShift ecosystem.</p><h2><strong>Delving into Tekton's Key Concepts</strong></h2><p>Tekton's modularity is expressed through its well-structured concepts:</p><ul><li><p><strong>Pipelines</strong>: Pipelines symbolize the sequence of tasks depicting the execution flow for your CI/CD process. They form the skeletal framework of your CI/CD workflow in Tekton.</p></li><li><p><strong>Tasks</strong>: Tasks are discrete procedures within your CI/CD process. Each task is comprised of steps executed in a specific sequence.</p></li><li><p><strong>Steps</strong>: Steps represent a chain of commands executed within a specific task. Steps within a task are executed in the same container to ensure shared process namespace and access to shared volumes.</p></li><li><p><strong>PipelineResources</strong>: These are the inputs (like Git repositories) and outputs (like image registry) associated with pipeline tasks.</p></li><li><p><strong>Trigger</strong>: Tekton Triggers facilitate pipeline instantiation in response to events, for instance, a Git push event.</p></li></ul><h2><strong>Advantages of Tekton and OpenShift Pipelines</strong></h2><h3><strong>Cloud-Native and Kubernetes-Native</strong></h3><p>Tekton, being a Kubernetes-native framework, leverages all functionalities of Kubernetes, like scalability, robustness, security, and portability. Tekton Pipelines function as Kubernetes Pods, guaranteeing each pipeline step its own container, thus optimizing resource allocation. OpenShift Pipelines extends these capabilities, providing a unified, user-friendly interface for managing and executing pipelines.</p><h3><strong>Flexibility</strong></h3><p>Tekton is tailored to coexist with an extensive ecosystem of CI/CD tools. It seamlessly melds with existing tools and platforms, empowering developers to design and supervise complex delivery pipelines. OpenShift Pipelines, built on Tekton, simplifies this integration by offering a holistic platform for deploying and managing applications.</p><h3><strong>Open Source</strong></h3><p>As open-source projects, both Tekton and OpenShift Pipelines capitalize on the shared knowledge and continuous contributions from a global community of developers. This constant evolution guarantees consistent updates, enriching these platforms with new features and capabilities.</p><h3><strong>Extensibility</strong></h3><p>Tekton's extensibility enables developers to define bespoke task types and resources using Kubernetes Custom Resource Definitions (CRDs). OpenShift Pipelines taps into this extensibility, allowing developers to customize their CI/CD pipelines in line with their specific needs.</p><h2><strong>The Future of CI/CD with Tekton and OpenShift Pipelines</strong></h2><p>As organizations increasingly align themselves with a cloud-native ethos, the relevance of Tekton and OpenShift Pipelines is magnified. Their flexibility, extensibility, and Kubernetes-native capabilities make these platforms an enticing proposition for the automation and management of CI/CD pipelines. By harnessing the potential of Tekton and OpenShift Pipelines, developers can focus on their primary task of coding, reducing the overhead of pipeline management, thereby enhancing productivity and hastening the release cycle. More Info:</p><p><a href="https://tekton.dev/">Tekton</a></p><p><a href="https://docs.openshift.com/container-platform/4.10/cicd/pipelines/understanding-openshift-pipelines.html">OpenShift Pipelines</a></p>]]></content:encoded></item><item><title><![CDATA[How to Install GitHub Command Line (gh)]]></title><description><![CDATA[A guide for Windows and Mac OS users.]]></description><link>https://maxlogic.substack.com/p/how-to-install-github-command-line</link><guid isPermaLink="false">https://maxlogic.substack.com/p/how-to-install-github-command-line</guid><dc:creator><![CDATA[Maxlogic]]></dc:creator><pubDate>Sat, 01 Jul 2023 14:25:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!d0xj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>GitHub provides a convenient command-line interface called <code>gh</code> that allows you to interact with GitHub repositories directly from your terminal. This article will guide you through the process of installing the GitHub CLI on both Windows and Mac operating systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d0xj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d0xj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 424w, https://substackcdn.com/image/fetch/$s_!d0xj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 848w, https://substackcdn.com/image/fetch/$s_!d0xj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 1272w, https://substackcdn.com/image/fetch/$s_!d0xj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d0xj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1123236,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!d0xj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 424w, https://substackcdn.com/image/fetch/$s_!d0xj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 848w, https://substackcdn.com/image/fetch/$s_!d0xj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 1272w, https://substackcdn.com/image/fetch/$s_!d0xj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bbadb99-5180-4503-a517-953b9d81de30_1200x640.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Requirements</strong></h3><p>Ensure that you have the following installed on your system:</p><ol><li><p><strong>Git:</strong> GitHub CLI requires Git (version 2.28 or higher).</p></li><li><p><strong>Operating System:</strong> Windows 7 or later, macOS X Mojave or later.</p></li></ol><h2><strong>Installing on Windows</strong></h2><h4>Step 1: Download the GitHub CLI</h4><p>To start, navigate to the GitHub CLI releases page at <strong><a href="https://github.com/cli/cli/releases/latest">https://github.com/cli/cli/releases/latest</a></strong>. Here, you will find the latest release of GitHub CLI. Download the MSI file appropriate for your system (32-bit or 64-bit).</p><h4>Step 2: Run the Installer</h4><p>Once the MSI file has been downloaded, locate it on your system and double-click to run the installer.</p><h4>Step 3: Follow the Installation Wizard</h4><p>The installation wizard will guide you through the installation process. You can leave all settings at their defaults and click "Next" to proceed through the prompts.</p><h4>Step 4: Complete the Installation</h4><p>Once the installation is complete, click on the "Finish" button. You will now be able to use GitHub CLI from your terminal.</p><h2><strong>Installing on macOS</strong></h2><h4>Step 1: Open Terminal</h4><p>Navigate to your Applications folder, then Utilities, and open Terminal.</p><h4>Step 2: Install Homebrew (if not installed)</h4><p>Homebrew is a package manager for macOS that makes it easy to install a variety of software. If you don't have it installed already, you can install it by pasting the following command into your terminal and pressing <code>Enter</code>:</p><pre><code>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</code></pre><h4>Step 3: Install GitHub CLI</h4><p>Once you have Homebrew installed, you can install GitHub CLI by entering the following command into your terminal:</p><pre><code>brew install gh</code></pre><p>After running this command, Homebrew will automatically download and install the GitHub CLI.</p><h2><strong>Verifying the Installation</strong></h2><p>For both Windows and macOS, you can verify that GitHub CLI has been correctly installed by opening a new terminal window and typing the following command:</p><pre><code>gh --version</code></pre><p>If the installation was successful, you should see the version of GitHub CLI that you installed displayed in the terminal.</p><h2><strong>Conclusion</strong></h2><p>Now that you have GitHub CLI installed on your system, you can begin to use it to manage your repositories, create pull requests, and perform many other tasks directly from your terminal, without having to navigate to the GitHub website. For a full list of commands and features, be sure to check out the official GitHub CLI manual at <strong><a href="https://cli.github.com/manual/">https://cli.github.com/manual/</a></strong>.</p>]]></content:encoded></item></channel></rss>