<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.0">Jekyll</generator><link href="https://saltyvagrant.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://saltyvagrant.com/" rel="alternate" type="text/html" /><updated>2023-10-23T16:26:30+01:00</updated><id>https://saltyvagrant.com/feed.xml</id><title type="html">SaltyVagrant</title><subtitle>A site of devops educational material.</subtitle><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><entry><title type="html">DevOps ‘for Beginners’: Lab 005</title><link href="https://saltyvagrant.com/2022/10/05/devops-for-beginners_005.html" rel="alternate" type="text/html" title="DevOps ‘for Beginners’: Lab 005" /><published>2022-10-05T00:00:00+01:00</published><updated>2022-10-05T00:00:00+01:00</updated><id>https://saltyvagrant.com/2022/10/05/devops-for-beginners_005</id><content type="html" xml:base="https://saltyvagrant.com/2022/10/05/devops-for-beginners_005.html">&lt;p&gt;&lt;a id='x1-2r1'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 13  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;DevOps ‘for Beginners’ stream.&lt;/span&gt; &lt;!--  l. 19  --&gt;
&lt;p class='noindent'&gt;&lt;span class='ecrm-0900'&gt;New topic: Basic programming.&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 21  --&gt;
&lt;p class='indent'&gt;&lt;span class='ecrm-0900'&gt;Discuss coding versus programming versus software engineering. Why&lt;/span&gt; &lt;span class='ecrm-0900'&gt;this is important.&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 23  --&gt;
&lt;p class='indent'&gt;&lt;span class='ecrm-0900'&gt;Then some basics using Bash scripts, Lua, and Python as examples.&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 25  --&gt;
&lt;p class='indent'&gt;&lt;span class='ecrm-0900'&gt;Note: This will be the most basic introduction BUT hopefully we’ll&lt;/span&gt; &lt;span class='ecrm-0900'&gt;set you on the right course from the start!&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;div class='tcolorbox boxnote' id='tcolobox-1'&gt;
&lt;div class='tcolorbox-title'&gt;&lt;!--  l. 53  --&gt;
&lt;p class='indent'&gt;Schedule Details&lt;/p&gt;
&lt;/div&gt;
&lt;div class='tcolorbox-content'&gt;
&lt;div class='tabular'&gt;
&lt;table id='TBL-2' class='tabular'&gt;
&lt;colgroup id='TBL-2-1g'&gt;
&lt;col id='TBL-2-1' /&gt;
&lt;col id='TBL-2-2' /&gt;&lt;/colgroup&gt;
&lt;tr id='TBL-2-1-' style='vertical-align:baseline;'&gt;
&lt;td style='white-space:nowrap; text-align:right;' id='TBL-2-1-1' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Venue:&lt;/span&gt;&lt;/td&gt;
&lt;td style='white-space:nowrap; text-align:left;' id='TBL-2-1-2' class='td11'&gt;&lt;a href='https://www.twitch.tv/thesaltyvagrant'&gt;Twitch&lt;/a&gt; or &lt;a href='https://youtu.be/Ti_6MTWKfVs'&gt;YouTube&lt;/a&gt; (yes, I going to try simultaneous streaming)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id='TBL-2-2-' style='vertical-align:baseline;'&gt;
&lt;td style='white-space:nowrap; text-align:right;' id='TBL-2-2-1' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Time:&lt;/span&gt;&lt;/td&gt;
&lt;td style='white-space:nowrap; text-align:left;' id='TBL-2-2-2' class='td11'&gt;Thursday 6&lt;sup class='textsuperscript'&gt;&lt;span class='ecrm-0900'&gt;th&lt;/span&gt;&lt;/sup&gt; October 2022 @ 18:00 UTC&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!--  l. 35  --&gt;
&lt;p class='indent'&gt;In this stream we will introduce basic coding for DevOps.&lt;/p&gt;
&lt;!--  l. 37  --&gt;
&lt;p class='indent'&gt;If you want to follow along with the lab you should install the following tools:&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;&lt;a href='https://git-scm.com/book/en/v2/Getting-Started-Installing-Git'&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.vagrantup.com/docs/installation'&gt;Vagrant&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.virtualbox.org/wiki/Downloads'&gt;Virtualbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 45  --&gt;
&lt;p class='indent'&gt;Then clone the lab&lt;span class='footnote-mark'&gt;&lt;a id='fn1x0-bk' href='#fn1x0'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-3f1'&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;pre class='fancyvrb' id='fancyvrb1'&gt;&lt;a id='x1-8r1'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;1&lt;/span&gt;&lt;span class='ectt-1000'&gt;git clone https://gitlab.com/saltyvagrant.classes/pfs-material.git&lt;/span&gt; 
&lt;a id='x1-10r2'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;2&lt;/span&gt;&lt;span class='textcolor-007f00'&gt;&lt;span class='ectt-1000'&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span class='ectt-1000'&gt; pfs-material&lt;/span&gt; 
&lt;a id='x1-12r3'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;3&lt;/span&gt;&lt;span class='ectt-1000'&gt;vagrant up&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-1000'&gt;&lt;/a&gt;Social&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-1000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id='x1-1001r2'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 61  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-20002'&gt;&lt;/a&gt;Social Media&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 61  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Reddit &lt;a class='url' href='https://www.reddit.com/user/saltyvagrant'&gt;&lt;span class='ectt-1000'&gt;https://www.reddit.com/user/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;YouTube &lt;a class='url' href='https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw'&gt;&lt;span class='ectt-1000'&gt;https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Twitter &lt;a class='url' href='https://twitter.com/saltyvagrant'&gt;&lt;span class='ectt-1000'&gt;https://twitter.com/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Email &lt;a href='mailto:saltyvagrant@gmail.com'&gt;saltyvagrant@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='footnotes'&gt;&lt;!--  l. 45  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a id='fn1x0' href='#fn1x0-bk'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;This will take a while to run as it is setting up a substantial development environment. It&lt;/span&gt; &lt;span class='ecrm-0800'&gt;will seem to freeze showing ‘Running Salt Highstate’, be patient as this can take several minutes&lt;/span&gt; &lt;span class='ecrm-0800'&gt;even on a fast network/machine, the install pulls several Docker images (among other&lt;/span&gt; &lt;span class='ecrm-0800'&gt;things).&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="announcement" /><summary type="html">TL;DR DevOps ‘for Beginners’ stream. New topic: Basic programming. Discuss coding versus programming versus software engineering. Why this is important. Then some basics using Bash scripts, Lua, and Python as examples. Note: This will be the most basic introduction BUT hopefully we’ll set you on the right course from the start!</summary></entry><entry><title type="html">DevOps ‘for Beginners’: Lab 004</title><link href="https://saltyvagrant.com/2022/09/23/devops-for-beginners_004.html" rel="alternate" type="text/html" title="DevOps ‘for Beginners’: Lab 004" /><published>2022-09-23T00:00:00+01:00</published><updated>2022-09-23T00:00:00+01:00</updated><id>https://saltyvagrant.com/2022/09/23/devops-for-beginners_004</id><content type="html" xml:base="https://saltyvagrant.com/2022/09/23/devops-for-beginners_004.html">&lt;p&gt;&lt;a id='x1-2r1'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 13  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;DevOps ‘for Beginners’ stream.&lt;/span&gt; &lt;!--  l. 19  --&gt;
&lt;p class='noindent'&gt;&lt;span class='ecrm-0900'&gt;This stream went off track somewhat into a more general DevOps&lt;/span&gt; &lt;span class='ecrm-0900'&gt;discussion, but I think it’s still worth watching.&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;div id='tcolobox-1' class='tcolorbox boxnote'&gt;
&lt;div class='tcolorbox-title'&gt;&lt;!--  l. 45  --&gt;
&lt;p class='indent'&gt;Schedule Details&lt;/p&gt;
&lt;/div&gt;
&lt;div class='tcolorbox-content'&gt;
&lt;div class='tabular'&gt;
&lt;table id='TBL-2' class='tabular'&gt;
&lt;colgroup id='TBL-2-1g'&gt;
&lt;col id='TBL-2-1' /&gt;
&lt;col id='TBL-2-2' /&gt;&lt;/colgroup&gt;
&lt;tr id='TBL-2-1-' style='vertical-align:baseline;'&gt;
&lt;td id='TBL-2-1-1' class='td11' style='white-space:nowrap; text-align:right;'&gt;&lt;span class='ecbx-1000'&gt;Venue:&lt;/span&gt;&lt;/td&gt;
&lt;td id='TBL-2-1-2' class='td11' style='white-space:nowrap; text-align:left;'&gt;&lt;a href='https://www.twitch.tv/thesaltyvagrant'&gt;Twitch&lt;/a&gt; or &lt;a href='https://youtu.be/IB3IZExO3Dw'&gt;YouTube&lt;/a&gt; (yes, I going to try simultaneous streaming)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id='TBL-2-2-' style='vertical-align:baseline;'&gt;
&lt;td id='TBL-2-2-1' class='td11' style='white-space:nowrap; text-align:right;'&gt;&lt;span class='ecbx-1000'&gt;Time:&lt;/span&gt;&lt;/td&gt;
&lt;td id='TBL-2-2-2' class='td11' style='white-space:nowrap; text-align:left;'&gt;Thursday 29&lt;sup class='textsuperscript'&gt;&lt;span class='ecrm-0900'&gt;th&lt;/span&gt;&lt;/sup&gt; September 2022 @ 18:00 UTC&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!--  l. 29  --&gt;
&lt;p class='indent'&gt;If you want to follow along with the lab you should install the following tools:&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;&lt;a href='https://git-scm.com/book/en/v2/Getting-Started-Installing-Git'&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.vagrantup.com/docs/installation'&gt;Vagrant&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.virtualbox.org/wiki/Downloads'&gt;Virtualbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 37  --&gt;
&lt;p class='indent'&gt;Then clone the lab tag that starts this lab&lt;span class='footnote-mark'&gt;&lt;a id='fn1x0-bk' href='#fn1x0'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-3f1'&gt;&lt;/a&gt; and start the lab.&lt;/p&gt;
&lt;pre id='fancyvrb1' class='fancyvrb'&gt;&lt;a id='x1-8r1'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;1&lt;/span&gt;&lt;span class='ectt-1000'&gt;git clone --branch lab004 https://gitlab.com/svstreams/cicd.git&lt;/span&gt; 
&lt;a id='x1-10r2'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;2&lt;/span&gt;&lt;span class='textcolor-007f00'&gt;&lt;span class='ectt-1000'&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span class='ectt-1000'&gt; cicd&lt;/span&gt; 
&lt;a id='x1-12r3'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;3&lt;/span&gt;&lt;span class='ectt-1000'&gt;vagrant up&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-1000'&gt;&lt;/a&gt;Topics Covered&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-1000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 50  --&gt;
&lt;p class='noindent'&gt;Broad discussion of DevOps as a career.&lt;/p&gt;
&lt;!--  l. 54  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-2000'&gt;&lt;/a&gt;Availability&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-2000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class='center'&gt;&lt;!--  l. 57  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;!--  l. 57  --&gt;
&lt;p class='noindent'&gt;&lt;iframe allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture' frameborder='0' width='560' src='https://www.youtube.com/embed/IB3IZExO3Dw' height='315'&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!--  l. 61  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-3000'&gt;&lt;/a&gt;Social&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-3000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id='x1-3001r2'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 66  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-40002'&gt;&lt;/a&gt;Social Media&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 66  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Reddit &lt;a href='https://www.reddit.com/user/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.reddit.com/user/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;YouTube &lt;a href='https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Twitter &lt;a href='https://twitter.com/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://twitter.com/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Email &lt;a href='mailto:saltyvagrant@gmail.com'&gt;saltyvagrant@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='footnotes'&gt;&lt;!--  l. 37  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a id='fn1x0' href='#fn1x0-bk'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;You will be warned about being on a Detached Head, don’t panic this is expected.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="stream" /><summary type="html">TL;DR DevOps ‘for Beginners’ stream. This stream went off track somewhat into a more general DevOps discussion, but I think it’s still worth watching.</summary></entry><entry><title type="html">DevOps ‘for Beginners’: Lab 003</title><link href="https://saltyvagrant.com/2022/09/16/devops-for-beginners_003.html" rel="alternate" type="text/html" title="DevOps ‘for Beginners’: Lab 003" /><published>2022-09-16T00:00:00+01:00</published><updated>2022-09-16T00:00:00+01:00</updated><id>https://saltyvagrant.com/2022/09/16/devops-for-beginners_003</id><content type="html" xml:base="https://saltyvagrant.com/2022/09/16/devops-for-beginners_003.html">&lt;p&gt;&lt;a id='x1-2r1'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 13  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;DevOps ‘for Beginners’ stream.&lt;/span&gt; &lt;!--  l. 19  --&gt;
&lt;p class='noindent'&gt;&lt;span class='ecrm-0900'&gt;This stream was a Lab continuing the introduction of the ‘backbone’ of&lt;/span&gt; &lt;span class='ecrm-0900'&gt;DevOps, the CI/CD pipeline.&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;div class='tcolorbox boxnote' id='tcolobox-1'&gt;
&lt;div class='tcolorbox-title'&gt;&lt;!--  l. 46  --&gt;
&lt;p class='indent'&gt;Schedule Details&lt;/p&gt;
&lt;/div&gt;
&lt;div class='tcolorbox-content'&gt;
&lt;div class='tabular'&gt;
&lt;table class='tabular' id='TBL-2'&gt;
&lt;colgroup id='TBL-2-1g'&gt;
&lt;col id='TBL-2-1' /&gt;
&lt;col id='TBL-2-2' /&gt;&lt;/colgroup&gt;
&lt;tr style='vertical-align:baseline;' id='TBL-2-1-'&gt;
&lt;td style='white-space:nowrap; text-align:right;' id='TBL-2-1-1' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Venue:&lt;/span&gt;&lt;/td&gt;
&lt;td style='white-space:nowrap; text-align:left;' id='TBL-2-1-2' class='td11'&gt;&lt;a href='https://www.twitch.tv/thesaltyvagrant'&gt;Twitch&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style='vertical-align:baseline;' id='TBL-2-2-'&gt;
&lt;td style='white-space:nowrap; text-align:right;' id='TBL-2-2-1' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Time:&lt;/span&gt;&lt;/td&gt;
&lt;td style='white-space:nowrap; text-align:left;' id='TBL-2-2-2' class='td11'&gt;Thursday 22 &lt;sup class='textsuperscript'&gt;&lt;span class='ecrm-0900'&gt;nd&lt;/span&gt;&lt;/sup&gt; September 2022 @ 18:00 UTC&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!--  l. 28  --&gt;
&lt;p class='indent'&gt;In this stream we picked up from where we left of last week.&lt;/p&gt;
&lt;!--  l. 30  --&gt;
&lt;p class='indent'&gt;If you want to follow along with the lab you should install the following tools:&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;&lt;a href='https://git-scm.com/book/en/v2/Getting-Started-Installing-Git'&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.vagrantup.com/docs/installation'&gt;Vagrant&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.virtualbox.org/wiki/Downloads'&gt;Virtualbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 38  --&gt;
&lt;p class='indent'&gt;Then clone the lab tag that starts this lab&lt;span class='footnote-mark'&gt;&lt;a href='#fn1x0' id='fn1x0-bk'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-3f1'&gt;&lt;/a&gt; and start the lab.&lt;/p&gt;
&lt;pre class='fancyvrb' id='fancyvrb1'&gt;&lt;a id='x1-8r1'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;1&lt;/span&gt;&lt;span class='ectt-1000'&gt;git clone --branch lab003 https://gitlab.com/svstreams/cicd.git&lt;/span&gt; 
&lt;a id='x1-10r2'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;2&lt;/span&gt;&lt;span class='textcolor-007f00'&gt;&lt;span class='ectt-1000'&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span class='ectt-1000'&gt; cicd&lt;/span&gt; 
&lt;a id='x1-12r3'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;3&lt;/span&gt;&lt;span class='ectt-1000'&gt;vagrant up&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-1000'&gt;&lt;/a&gt;Topics Covered&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-1000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Basic CI pipeline&lt;/li&gt;
&lt;li class='itemize'&gt;CI for release versus CD for deploy&lt;/li&gt;
&lt;li class='itemize'&gt;Concourse pipeline, resources, tasks, and scripts&lt;/li&gt;
&lt;li class='itemize'&gt;Docker (and using &lt;a href='https://github.com/wagoodman/dive'&gt;dive&lt;/a&gt; to inspect images)&lt;/li&gt;
&lt;li class='itemize'&gt;Designing your CI build&lt;/li&gt;
&lt;li class='itemize'&gt;GitLab (following GitHeb fail)&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 62  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-2000'&gt;&lt;/a&gt;Availability&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-2000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class='center'&gt;&lt;!--  l. 65  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;!--  l. 65  --&gt;
&lt;p class='noindent'&gt;&lt;iframe width='560' src='https://www.youtube.com/embed/qD2Ijw5SITY' height='315' frameborder='0' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture'&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!--  l. 69  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-3000'&gt;&lt;/a&gt;Social&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-3000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id='x1-3001r2'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 74  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-40002'&gt;&lt;/a&gt;Social Media&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 74  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Reddit &lt;a class='url' href='https://www.reddit.com/user/saltyvagrant'&gt;&lt;span class='ectt-1000'&gt;https://www.reddit.com/user/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;YouTube &lt;a class='url' href='https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw'&gt;&lt;span class='ectt-1000'&gt;https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Twitter &lt;a class='url' href='https://twitter.com/saltyvagrant'&gt;&lt;span class='ectt-1000'&gt;https://twitter.com/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Email &lt;a href='mailto:saltyvagrant@gmail.com'&gt;saltyvagrant@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='footnotes'&gt;&lt;!--  l. 38  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn1x0-bk' id='fn1x0'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;You will be warned about being on a Detached Head, don’t panic this is expected.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="stream" /><summary type="html">TL;DR DevOps ‘for Beginners’ stream. This stream was a Lab continuing the introduction of the ‘backbone’ of DevOps, the CI/CD pipeline.</summary></entry><entry><title type="html">DevOps ‘for Beginners’: Lab 002</title><link href="https://saltyvagrant.com/2022/09/12/devops-for-beginners_002.html" rel="alternate" type="text/html" title="DevOps ‘for Beginners’: Lab 002" /><published>2022-09-12T00:00:00+01:00</published><updated>2022-09-12T00:00:00+01:00</updated><id>https://saltyvagrant.com/2022/09/12/devops-for-beginners_002</id><content type="html" xml:base="https://saltyvagrant.com/2022/09/12/devops-for-beginners_002.html">&lt;p&gt;&lt;a id='x1-2r1'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 13  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;DevOps ‘for Beginners’ stream.&lt;/span&gt; &lt;!--  l. 19  --&gt;
&lt;p class='noindent'&gt;&lt;span class='ecrm-0900'&gt;This stream is was a Lab continuing the introduction of the ‘backbone’&lt;/span&gt; &lt;span class='ecrm-0900'&gt;of DevOps, the CI/CD pipeline.&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;div class='tcolorbox boxnote' id='tcolobox-1'&gt;
&lt;div class='tcolorbox-title'&gt;&lt;!--  l. 46  --&gt;
&lt;p class='indent'&gt;Schedule Details&lt;/p&gt;
&lt;/div&gt;
&lt;div class='tcolorbox-content'&gt;
&lt;div class='tabular'&gt;
&lt;table id='TBL-2' class='tabular'&gt;
&lt;colgroup id='TBL-2-1g'&gt;
&lt;col id='TBL-2-1' /&gt;
&lt;col id='TBL-2-2' /&gt;&lt;/colgroup&gt;
&lt;tr style='vertical-align:baseline;' id='TBL-2-1-'&gt;
&lt;td style='white-space:nowrap; text-align:right;' id='TBL-2-1-1' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Venue:&lt;/span&gt;&lt;/td&gt;
&lt;td style='white-space:nowrap; text-align:left;' id='TBL-2-1-2' class='td11'&gt;&lt;a href='https://www.twitch.tv/thesaltyvagrant'&gt;Twitch&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style='vertical-align:baseline;' id='TBL-2-2-'&gt;
&lt;td style='white-space:nowrap; text-align:right;' id='TBL-2-2-1' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Time:&lt;/span&gt;&lt;/td&gt;
&lt;td style='white-space:nowrap; text-align:left;' id='TBL-2-2-2' class='td11'&gt;Thursday 15 &lt;sup class='textsuperscript'&gt;&lt;span class='ecrm-0900'&gt;th&lt;/span&gt;&lt;/sup&gt; September 2022 @ 18:00 UTC&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!--  l. 28  --&gt;
&lt;p class='indent'&gt;In this stream we picked up from where we left of the previous week.&lt;/p&gt;
&lt;!--  l. 30  --&gt;
&lt;p class='indent'&gt;If you want to follow along with the lab you should install the following tools:&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;&lt;a href='https://git-scm.com/book/en/v2/Getting-Started-Installing-Git'&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.vagrantup.com/docs/installation'&gt;Vagrant&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.virtualbox.org/wiki/Downloads'&gt;Virtualbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 38  --&gt;
&lt;p class='indent'&gt;Then clone the lab tag that starts this lab&lt;span class='footnote-mark'&gt;&lt;a href='#fn1x0' id='fn1x0-bk'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-3f1'&gt;&lt;/a&gt; and start the lab.&lt;/p&gt;
&lt;pre class='fancyvrb' id='fancyvrb1'&gt;&lt;a id='x1-8r1'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;1&lt;/span&gt;&lt;span class='ectt-1000'&gt;git clone --branch lab002 https://gitlab.com/svstreams/cicd.git&lt;/span&gt; 
&lt;a id='x1-10r2'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;2&lt;/span&gt;&lt;span class='textcolor-007f00'&gt;&lt;span class='ectt-1000'&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span class='ectt-1000'&gt; cicd&lt;/span&gt; 
&lt;a id='x1-12r3'&gt;&lt;/a&gt;&lt;span class='ecrm-0600'&gt;3&lt;/span&gt;&lt;span class='ectt-1000'&gt;vagrant up&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-1000'&gt;&lt;/a&gt;Topics Covered&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-1000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Bash scripting (refactoring)&lt;/li&gt;
&lt;li class='itemize'&gt;Passing environment variables to Vagrant&lt;/li&gt;
&lt;li class='itemize'&gt;Concourse CI pipelines and tasks&lt;/li&gt;
&lt;li class='itemize'&gt;Docker&lt;/li&gt;
&lt;li class='itemize'&gt;Sphinx (and the Sphinx container)&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 62  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-2000'&gt;&lt;/a&gt;Availability&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-2000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class='center'&gt;&lt;!--  l. 66  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;!--  l. 66  --&gt;
&lt;p class='noindent'&gt;&lt;iframe src='https://www.youtube.com/embed/lW4ivW8tK20' height='315' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture' width='560' frameborder='0'&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!--  l. 71  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-3000'&gt;&lt;/a&gt;Social&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-3000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id='x1-3001r2'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 76  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-40002'&gt;&lt;/a&gt;Social Media&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 76  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Reddit &lt;a href='https://www.reddit.com/user/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.reddit.com/user/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;YouTube &lt;a href='https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Twitter &lt;a href='https://twitter.com/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://twitter.com/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Email &lt;a href='mailto:saltyvagrant@gmail.com'&gt;saltyvagrant@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class='footnotes'&gt;&lt;!--  l. 38  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn1x0-bk' id='fn1x0'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;You will be warned about being on a Detached Head, don’t panic this is expected.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="stream" /><summary type="html">TL;DR DevOps ‘for Beginners’ stream. This stream is was a Lab continuing the introduction of the ‘backbone’ of DevOps, the CI/CD pipeline.</summary></entry><entry><title type="html">DevOps ‘for Beginners’: Lab 001</title><link href="https://saltyvagrant.com/2022/09/06/devops-for-beginners_001.html" rel="alternate" type="text/html" title="DevOps ‘for Beginners’: Lab 001" /><published>2022-09-06T00:00:00+01:00</published><updated>2022-09-06T00:00:00+01:00</updated><id>https://saltyvagrant.com/2022/09/06/devops-for-beginners_001</id><content type="html" xml:base="https://saltyvagrant.com/2022/09/06/devops-for-beginners_001.html">&lt;p&gt;&lt;a id='x1-2r1'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 13  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;DevOps ‘for Beginners’ stream.&lt;/span&gt; &lt;!--  l. 19  --&gt;
&lt;p class='noindent'&gt;&lt;span class='ecrm-0900'&gt;This stream will be a Lab introducing the ‘backbone’ of DevOps, the&lt;/span&gt; &lt;span class='ecrm-0900'&gt;CI/CD pipeline.&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;div id='tcolobox-1' class='tcolorbox boxnote'&gt;
&lt;div class='tcolorbox-title'&gt;&lt;!--  l. 37  --&gt;
&lt;p class='indent'&gt;Schedule Details&lt;/p&gt;
&lt;/div&gt;
&lt;div class='tcolorbox-content'&gt;
&lt;div class='tabular'&gt;
&lt;table id='TBL-2' class='tabular'&gt;
&lt;colgroup id='TBL-2-1g'&gt;
&lt;col id='TBL-2-1' /&gt;
&lt;col id='TBL-2-2' /&gt;&lt;/colgroup&gt;
&lt;tr id='TBL-2-1-' style='vertical-align:baseline;'&gt;
&lt;td id='TBL-2-1-1' style='white-space:nowrap; text-align:right;' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Venue:&lt;/span&gt;&lt;/td&gt;
&lt;td id='TBL-2-1-2' style='white-space:nowrap; text-align:left;' class='td11'&gt;&lt;a href='https://www.twitch.tv/thesaltyvagrant'&gt;Twitch&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id='TBL-2-2-' style='vertical-align:baseline;'&gt;
&lt;td id='TBL-2-2-1' style='white-space:nowrap; text-align:right;' class='td11'&gt;&lt;span class='ecbx-1000'&gt;Time:&lt;/span&gt;&lt;/td&gt;
&lt;td id='TBL-2-2-2' style='white-space:nowrap; text-align:left;' class='td11'&gt;Thursday 8 &lt;sup class='textsuperscript'&gt;&lt;span class='ecrm-0900'&gt;th&lt;/span&gt;&lt;/sup&gt; September 2022 @ 18:00 UTC&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!--  l. 28  --&gt;
&lt;p class='indent'&gt;In this stream we will start a lab session and start discussing the backbone to DevOps, the CI/CD pipeline.&lt;/p&gt;
&lt;!--  l. 30  --&gt;
&lt;p class='indent'&gt;If you want to follow along with the lab you should install the following tools:&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;&lt;a href='https://git-scm.com/book/en/v2/Getting-Started-Installing-Git'&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.vagrantup.com/docs/installation'&gt;Vagrant&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;&lt;a href='https://www.virtualbox.org/wiki/Downloads'&gt;Virtualbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-1000'&gt;&lt;/a&gt;Topics Covered&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-1000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Basic Vagrant&lt;/li&gt;
&lt;li class='itemize'&gt;Introduction to Infrastructure as Code and the importance of idempotence&lt;/li&gt;
&lt;li class='itemize'&gt;Bash scripting&lt;/li&gt;
&lt;li class='itemize'&gt;sed&lt;/li&gt;
&lt;li class='itemize'&gt;Docker and docker-compose&lt;/li&gt;
&lt;li class='itemize'&gt;Concourse-CI&lt;/li&gt;
&lt;li class='itemize'&gt;Ports, port forwarding&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 55  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-2000'&gt;&lt;/a&gt;Availability&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-2000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class='center'&gt;&lt;!--  l. 58  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;!--  l. 58  --&gt;
&lt;p class='noindent'&gt;&lt;iframe allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture' width='560' frameborder='0' src='https://www.youtube.com/embed/-MJ55H9Fylw' height='315'&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!--  l. 62  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-3000'&gt;&lt;/a&gt;Social&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-3000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id='x1-3001r2'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 67  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-40002'&gt;&lt;/a&gt;Social Media&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 67  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Reddit &lt;a href='https://www.reddit.com/user/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.reddit.com/user/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;YouTube &lt;a href='https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Twitter &lt;a href='https://twitter.com/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://twitter.com/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Email &lt;a href='mailto:saltyvagrant@gmail.com'&gt;saltyvagrant@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="stream" /><summary type="html">TL;DR DevOps ‘for Beginners’ stream. This stream will be a Lab introducing the ‘backbone’ of DevOps, the CI/CD pipeline.</summary></entry><entry><title type="html">DevOps ‘for Beginners’</title><link href="https://saltyvagrant.com/2022/08/31/devops-for-beginners.html" rel="alternate" type="text/html" title="DevOps ‘for Beginners’" /><published>2022-08-31T00:00:00+01:00</published><updated>2022-08-31T00:00:00+01:00</updated><id>https://saltyvagrant.com/2022/08/31/devops-for-beginners</id><content type="html" xml:base="https://saltyvagrant.com/2022/08/31/devops-for-beginners.html">&lt;p&gt;&lt;a id='x1-2r1'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 13  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;Presentation introducing DevOps ‘for Beginners’ stream.&lt;/span&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;p&gt;&lt;a id='x1-3r2'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 23  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-10002'&gt;&lt;/a&gt;What do we mean ‘DevOps’?&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 23  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;DevOps&lt;/li&gt;
&lt;li class='itemize'&gt;DevOps Engineer&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 31  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-2000'&gt;&lt;/a&gt;Definitions&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-2000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 35  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h4 class='subsectionHead'&gt;&lt;a id='x1-3000'&gt;&lt;/a&gt;DevOps&lt;/h4&gt;
&lt;p&gt;&lt;a id='x1-3001r3'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 39  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-40003'&gt;&lt;/a&gt;DevOps&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 39  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Coined in 2009&lt;/li&gt;
&lt;li class='itemize'&gt;A philosophy of integrating Development and Operations&lt;/li&gt;
&lt;li class='itemize'&gt;Often a Cargo Cult&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 46  --&gt;
&lt;p class='noindent'&gt;DevOps lore is that DevOps as we recognise it today was born of a conference talk given by John Allspaw and Paul Hammond titled “10+ Deploys per Day: Dev and Ops Cooperation at Flickr”.&lt;/p&gt;
&lt;!--  l. 48  --&gt;
&lt;p class='indent'&gt;A significant problem is organisations that for DevOps cargo cults. Cargo cults arise from a sort of sympathetic magic thinking. Native islanders during the war witnessed soldiers build airstrips, control towers, radar dishes, etc. They saw food and manufactured goods delivered by aircraft. Once the soldiers left the aircraft stopped landing and the flow of goods stopped. The islanders built facsimiles of the radar equipment, built airstrips, and control towers in preparation for the
hoped for return of aircraft along with all they brought. Obviously no aircraft came. The islanders reproduced the form without understanding the function.&lt;/p&gt;
&lt;!--  l. 50  --&gt;
&lt;p class='indent'&gt;Similarly organisations often reproduce the form of DevOps (they create a DevOps team with people holding the title DevOps Engineer) but failing to appreciate the function of DevOps these efforts seldom realise the gains promised.&lt;/p&gt;
&lt;!--  l. 53  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h4 class='subsectionHead'&gt;&lt;a id='x1-5000'&gt;&lt;/a&gt;DevOps Engineer&lt;/h4&gt;
&lt;p&gt;&lt;a id='x1-5001r4'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 57  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-60004'&gt;&lt;/a&gt;DevOps Engineer&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 57  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Job title&lt;/li&gt;
&lt;li class='itemize'&gt;NOT agreed upon, but commonly includes:
&lt;ul class='itemize2'&gt;
&lt;li class='itemize'&gt;Maintain CI/CD&lt;/li&gt;
&lt;li class='itemize'&gt;Care and feeding of infrastructure&lt;/li&gt;
&lt;li class='itemize'&gt;Communicate/coordinate across lifecycle&lt;/li&gt;
&lt;li class='itemize'&gt;Metrics collection and analysis&lt;/li&gt;
&lt;li class='itemize'&gt;Broad knowledge&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 70  --&gt;
&lt;p class='noindent'&gt;DevOps beginner is sometimes seen as an oxymoron. This is, I suspect, because people define “DevOps Engineer” as “someone with broad experience of IT systems over many years”. Under this definition one can only agree. However these same people will often council people wanting to start a career in DevOps to first work in development or operations, which to me sounds like advice on beginning DevOps.&lt;/p&gt;
&lt;!--  l. 72  --&gt;
&lt;p class='indent'&gt;Can you step straight into a DevOps Engineer role? Evidence from people who have done just this suggests it is possible, but also very rare. These ‘Junior DevOps Engineer’ roles are sort of apprenticeships.&lt;/p&gt;
&lt;!--  l. 76  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h4 class='subsectionHead'&gt;&lt;a id='x1-7000'&gt;&lt;/a&gt;Core Skills&lt;/h4&gt;
&lt;p&gt;&lt;a id='x1-7001r5'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 80  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-80005'&gt;&lt;/a&gt;Problem Solving&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 80  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;!--  l. 80  --&gt;
&lt;p class='noindent'&gt;&lt;span class='ecbx-1000'&gt;Problem Solving&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 80  --&gt;
&lt;p class='noindent'&gt;The principal skill of any IT professional, but above all in a DevOps Engineer role, is &lt;span class='ecti-1000'&gt;problem solving&lt;/span&gt; .&lt;/p&gt;
&lt;!--  l. 85  --&gt;
&lt;p class='noindent'&gt;Not any specific technology (trust me, they all date). Learn to think! &lt;a id='x1-8001r6'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Identify the problem&lt;/li&gt;
&lt;li class='itemize'&gt;Figure out possible solutions&lt;/li&gt;
&lt;li class='itemize'&gt;Liaise with domain experts&lt;/li&gt;
&lt;li class='itemize'&gt;Plan and execute solution in controlled manner&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 96  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-9000'&gt;&lt;/a&gt;What this stream is about&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-9000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id='x1-9001r7'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 101  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-100007'&gt;&lt;/a&gt;Why this stream?&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 101  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Use the fundamentals&lt;/li&gt;
&lt;li class='itemize'&gt;Teach the ‘hard parts’&lt;/li&gt;
&lt;li class='itemize'&gt;Problem solving&lt;/li&gt;
&lt;li class='itemize'&gt;Research (finding things out)&lt;/li&gt;
&lt;li class='itemize'&gt;Constructive play (experiment)&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 110  --&gt;
&lt;p class='noindent'&gt;There are, as people pointed out, plenty a ‘structured video courses’ but these do not teach what I believe to be the important skills. You certainly need to invest time learning at least the basics in a wide variety of the disciplines. Recognise though that it is impossible to be an expert in all areas. Learn enough that you can communicate clearly with domain experts.&lt;/p&gt;
&lt;!--  l. 112  --&gt;
&lt;p class='indent'&gt;The ‘hard parts’ are, by definition hard to teach but important to learn. The best way, IMHO, is practice, practice, practice.&lt;/p&gt;
&lt;!--  l. 114  --&gt;
&lt;p class='indent'&gt;Research: Asking the right (sort) of question. Where to look. How to read.&lt;/p&gt;
&lt;!--  l. 119  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-11000'&gt;&lt;/a&gt;Availability&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-11000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class='center'&gt;&lt;!--  l. 122  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;!--  l. 122  --&gt;
&lt;p class='noindent'&gt;&lt;iframe width='560' height='315' frameborder='0' src='https://www.youtube.com/embed/UnxVX5qrVuc' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture'&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!--  l. 127  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-12000'&gt;&lt;/a&gt;Social&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-12000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id='x1-12001r8'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 132  --&gt;
&lt;p class='noindent'&gt;&lt;span class='likeparagraphHead'&gt;&lt;a id='x1-130008'&gt;&lt;/a&gt;Social Media&lt;/span&gt;  &lt;/p&gt;
&lt;!--  l. 132  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Reddit &lt;a href='https://www.reddit.com/user/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.reddit.com/user/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;YouTube &lt;a href='https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw' class='url'&gt;&lt;span class='ectt-1000'&gt;https://www.youtube.com/channel/UCjZc6ngNGEIVbFfSWmZDmlw&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Twitter &lt;a href='https://twitter.com/saltyvagrant' class='url'&gt;&lt;span class='ectt-1000'&gt;https://twitter.com/saltyvagrant&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li class='itemize'&gt;Email &lt;a href='mailto:saltyvagrant@gmail.com'&gt;saltyvagrant@gmail.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="presentation" /><category term="stream" /><summary type="html">TL;DR Presentation introducing DevOps ‘for Beginners’ stream.</summary></entry><entry><title type="html">Core Concepts: Entropy</title><link href="https://saltyvagrant.com/2022/02/04/core-concepts-entropy.html" rel="alternate" type="text/html" title="Core Concepts: Entropy" /><published>2022-02-04T00:00:00+00:00</published><updated>2022-02-04T00:00:00+00:00</updated><id>https://saltyvagrant.com/2022/02/04/core-concepts-entropy</id><content type="html" xml:base="https://saltyvagrant.com/2022/02/04/core-concepts-entropy.html">&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;Examining the core concept of entropy.&lt;/span&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;!--  l. 15  --&gt;
&lt;p class='indent'&gt;&lt;/p&gt;
&lt;!--  l. 19  --&gt;
&lt;p class='indent'&gt;Without the input of effort things tend to decay.&lt;/p&gt;
&lt;!--  l. 21  --&gt;
&lt;p class='indent'&gt;My home requires constant attention. The garden requires attention (at minimum to stop it becoming an overgrown wilderness that would prevent me getting to the front door). Inside it needs regular cleaning and periodic maintenance. If a home is lived in it will degrade without someone maintaining it.&lt;/p&gt;
&lt;!--  l. 23  --&gt;
&lt;p class='indent'&gt;IT systems suffer a similar fate. Without a constant input of effort systems will degrade as changes are applied. This is commonly called ‘bit rot’ in software circles. The proposition is that without taking time to focus exclusively on opposing this entropy our system will degrade, eventually resulting in higher costs to change and maintain the system or worse catastrophic failure.&lt;/p&gt;
&lt;!--  l. 25  --&gt;
&lt;p class='indent'&gt;The essential point being ‘focus exclusively’. This is a central tenet of agile methodologies. Refactoring is a separate activity to development (new features) or correction (bug fixing). The principal objective of refactoring is to take a piece of existing code and improve it &lt;span class='ecti-1000'&gt;without changing its function&lt;/span&gt;.&lt;/p&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="concept" /><summary type="html">TL;DR Examining the core concept of entropy.</summary></entry><entry><title type="html">Core Concepts: Contingency</title><link href="https://saltyvagrant.com/2022/02/01/core-concepts-contingency.html" rel="alternate" type="text/html" title="Core Concepts: Contingency" /><published>2022-02-01T00:00:00+00:00</published><updated>2022-02-01T00:00:00+00:00</updated><id>https://saltyvagrant.com/2022/02/01/core-concepts-contingency</id><content type="html" xml:base="https://saltyvagrant.com/2022/02/01/core-concepts-contingency.html">&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;Examining the core concept of contingency.&lt;/span&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;!--  l. 15  --&gt;
&lt;p class='indent'&gt;&lt;/p&gt;
&lt;!--  l. 19  --&gt;
&lt;p class='indent'&gt;“It depends!”&lt;/p&gt;
&lt;!--  l. 21  --&gt;
&lt;p class='indent'&gt;This is perhaps the simplest yet most important, and arguably most useful, of our core concepts. My go to response is “it depends”, which can admittedly be irritating but is almost universally true.&lt;/p&gt;
&lt;!--  l. 23  --&gt;
&lt;p class='indent'&gt;Regardless of the problem under consideration &lt;a href='/2021/06/02/core-concepts-context.html'&gt;context&lt;/a&gt; will play a significant part in determining a suitable solution. Consequently, any answer is likely to depend upon the context in which the problem presents itself.&lt;/p&gt;
&lt;!--  l. 25  --&gt;
&lt;p class='indent'&gt;Questions of the form, “Which tool is best for X”, “What training/certification is best to pursue for Y”, “Should I use technology Z” can all be answered with “it depends”. Simply put, more information is required before any sensible answer can be provided.&lt;/p&gt;
&lt;!--  l. 27  --&gt;
&lt;p class='indent'&gt;To make matters worse, today’s good answer may be tomorrow’s bad answer. Context changes; new technology becomes available, old technology is no longer supported, new organisational goals are set, new regulations are imposed, different skill pools become available making these skills comparatively inexpensive (making the cost of moving to technology relevant to those skills favourable).&lt;/p&gt;
&lt;!--  l. 29  --&gt;
&lt;p class='indent'&gt;The only inevitability is change and that “it depends” will continue to be an important consideration.&lt;/p&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="concept" /><summary type="html">TL;DR Examining the core concept of contingency.</summary></entry><entry><title type="html">Clarifying the Goals of our CI/CD Pipeline for Video Processing</title><link href="https://saltyvagrant.com/2021/06/07/clarify-goals.html" rel="alternate" type="text/html" title="Clarifying the Goals of our CI/CD Pipeline for Video Processing" /><published>2021-06-07T00:00:00+01:00</published><updated>2021-06-07T00:00:00+01:00</updated><id>https://saltyvagrant.com/2021/06/07/clarify-goals</id><content type="html" xml:base="https://saltyvagrant.com/2021/06/07/clarify-goals.html">&lt;!--  l. 13  --&gt;
&lt;p class='indent'&gt;&lt;/p&gt;
&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;In this article we take a step back, clear our heads, and start&lt;/span&gt; &lt;span class='ecrm-0900'&gt;over focussing on the motivations behind the video processor application.&lt;/span&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;!--  l. 23  --&gt;
&lt;p class='indent'&gt;In the &lt;a href='/2021/04/06/video-processing-pipeline.html'&gt;last article&lt;/a&gt; I vomited my initial thoughts about a ‘video processing’ pipeline onto your screen. This was a cathartic process (for me) but not a particularly useful one for the project as a whole. In this article we start behaving a little more professionally.&lt;/p&gt;
&lt;!--  l. 25  --&gt;
&lt;p class='indent'&gt;We have a very broad definition of what we want to achieve; given some video sources, some target upload environments, and some details about how to assemble videos and upload details (descriptions, titles, etc.) magically transform the bits and upload them. How can we refine this very nebulous idea into actionable requirements.&lt;/p&gt;
&lt;!--  l. 27  --&gt;
&lt;p class='indent'&gt;If I were working solo and the project were only every to be used by me, I’d most likely start hacking away. Of course, a few weeks from now future me would curse past me as an idiot. The code would be questionable, in all likelihood I’d have only a few (if any) tests, the system would most likely be a freakish Frankenstein’s monster. It most likely would do the job but would be a bitch to change and when things go wrong (and they will) future me will mutter that past me was a crappy
coder and should be fired immediately.&lt;/p&gt;
&lt;!--  l. 29  --&gt;
&lt;p class='indent'&gt;Is this because I’m a shitty coder? Maybe. I think I’m a fairly average coder. I try to write clear code but invariably when I ‘just hack out’ a working solution I end up regretting it in the long run.&lt;/p&gt;
&lt;!--  l. 31  --&gt;
&lt;p class='indent'&gt;The following may seem overkill for a one man project but the truth is one man projects that are worthwhile will most likely be used by more people than you guess, and once the project becomes more widely used you’re probably going to regret skipping these early steps. Besides there are always at least two people who use your project; you now and future you. If you now avoids work then future you will suffer.&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-1000'&gt;&lt;/a&gt;Figuring our what to make&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-1000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 38  --&gt;
&lt;p class='noindent'&gt;Before hacking out code it’s probably a good idea to figure our what we want to make. Not in the vague way we did in the last article but in more specific detail, detail sufficient that we &lt;span class='ecti-1000'&gt;could&lt;/span&gt; involve others in implementing a solution.&lt;/p&gt;
&lt;!--  l. 40  --&gt;
&lt;p class='indent'&gt;Defining ‘what to make’ is an ongoing process not a step. It is a simple truth that whenever you think you’ve specified everything your system should do, you find something new. This is particularly true as you start implementing the system. In fact anyone who has ever worked on system development will know that the final system seldom implements the initial requirements and only those initial requirements.&lt;/p&gt;
&lt;!--  l. 42  --&gt;
&lt;p class='indent'&gt;This said, we need to start somewhere, so we need some initial requirements to get the ball rolling.&lt;/p&gt;
&lt;!--  l. 44  --&gt;
&lt;p class='indent'&gt;From whence requirements?&lt;/p&gt;
&lt;!--  l. 46  --&gt;
&lt;p class='indent'&gt;Someone must have an itch to scratch. If no one has a problem, or at least a want, then no project would exist. Step one is therefore to identify stakeholders from whom we will extract some initial requirements.&lt;/p&gt;
&lt;!--  l. 49  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-2000'&gt;&lt;/a&gt;Stakeholders&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-2000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 52  --&gt;
&lt;p class='noindent'&gt;Much has been written on stakeholders. Here’s my simple method for identifying stakeholders.&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Who is going to be pissed off when your system fails their expectations?&lt;/li&gt;
&lt;li class='itemize'&gt;What external systems are going to break when your system fails?&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 59  --&gt;
&lt;p class='indent'&gt;We have one clear stakeholder on this project ‘me’ but to make the following process clearer I will wear a number of hats and break ‘me’ into multiple stakeholders according to those hats. Here are my initial thoughts on the stakeholder roles.&lt;/p&gt;
&lt;dl class='description'&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;sponsor&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;Typically the person fighting for the project (and funding); the person with a problem to solve, in this case me.&lt;/dd&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;customer&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;Typically the person paying for the project. Again, in this case, me.&lt;/dd&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;videographer&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;Films videos.&lt;/dd&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;video editor&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;Take videographer’s output and cuts it into one or more ‘finished’ videos.&lt;/dd&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;copywriter&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;Writes ancillary materials (e.g. video titles, descriptions, etc.) intended for publishing with the videos.&lt;/dd&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;publisher&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;Takes finished videos and ancillary materials and uploads them to target platforms.&lt;/dd&gt;
&lt;/dl&gt;
&lt;!--  l. 70  --&gt;
&lt;p class='indent'&gt;Are these &lt;span class='ecti-1000'&gt;all&lt;/span&gt; the stakeholders? Probably not. Do you agree with the stakeholders and their descriptions? Probably not. Does this matter? Nope.&lt;/p&gt;
&lt;!--  l. 72  --&gt;
&lt;p class='indent'&gt;As with everything in system development stakeholder identification is iterative and contingent (change depending on current circumstance).&lt;/p&gt;
&lt;div class='tcolorbox boxnote' id='tcolobox-1'&gt;
&lt;div class='tcolorbox-title'&gt;&lt;!--  l. 87  --&gt;
&lt;p class='indent'&gt;Basic truth&lt;/p&gt;
&lt;/div&gt;
&lt;div class='tcolorbox-content'&gt;&lt;!--  l. 75  --&gt;
&lt;p class='indent'&gt;&lt;/p&gt;
&lt;blockquote class='quote'&gt;&lt;!--  l. 76  --&gt;
&lt;p class='noindent'&gt;It is easier to criticize than to create.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--  l. 79  --&gt;
&lt;p class='indent'&gt;This notion is exemplified by Cunningham’s Law:&lt;/p&gt;
&lt;blockquote class='quote'&gt;&lt;!--  l. 81  --&gt;
&lt;p class='noindent'&gt;The best way to get the right answer on the internet is not to ask a question; it’s to post the wrong answer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!--  l. 84  --&gt;
&lt;p class='indent'&gt;For our purposes this means the most effective way to solicit opinions it not to ask ‘so, what do you want from the system?’ The best thing to do is say, ‘we’re going to…’ and wait for the opinions on why you’re wrong to flood in.&lt;/p&gt;
&lt;!--  l. 86  --&gt;
&lt;p class='indent'&gt;So, presented with a list of stakeholders you will rapidly be told of all the people you missed (or why stakeholder X is wrong).&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!--  l. 89  --&gt;
&lt;p class='indent'&gt;The important point at this stage is to identify ‘some’ stakeholders and start the rest of our process. Generally this initial list of stakeholders is obvious. A good starting list will include:&lt;/p&gt;
&lt;dl class='description'&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;sponsor&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;The person(s) who fought for the project.&lt;/dd&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;customer&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;The person(s) who are paying the bills.&lt;/dd&gt;
&lt;dt class='description'&gt;&lt;span class='ecbx-1000'&gt;users&lt;/span&gt;&lt;/dt&gt;
&lt;dd class='description'&gt;This one is more tricky. Users are typically the people who interact directly with the system, but sometimes you want to include indirect users who interact with the direct users. For example, the direct user might be the help desk operator, the indirect user might be someone who calls the help desk. The point here being that the needs of the indirect user might influence the direct user’s needs so including the indirect user in conversations may prompt the direct user into an ‘aha,
oh yeah we sometimes need that’ moment.&lt;/dd&gt;
&lt;/dl&gt;
&lt;!--  l. 99  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-3000'&gt;&lt;/a&gt;Goals&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-3000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 102  --&gt;
&lt;p class='noindent'&gt;Hang on, didn’t we say we wanted to identify stakeholders so we could extract some initial requirements? Why is this section title ‘Goals’ and not ‘Requirements’?&lt;/p&gt;
&lt;!--  l. 104  --&gt;
&lt;p class='indent'&gt;Stakeholders are motivated by their goals and the system we are creating will satisfy those goals. Apart from getting stakeholders to identify the problem to be solved this goal process starts to set the boundaries of our system. Goals provide the ‘why’ for our system. If there is not ‘why’ for your system then there is no reason to build it.&lt;/p&gt;
&lt;!--  l. 106  --&gt;
&lt;p class='indent'&gt;Once we have some goals we can start eliciting requirements and relating those requirements to the goals. Any requirement that we cannot trace back to a goal is suspect as it probably isn’t solving any problem stakeholders identified and is therefore either unproductive work or, worse, it will detrimental.&lt;/p&gt;
&lt;!--  l. 108  --&gt;
&lt;p class='indent'&gt;How are goals different from requirements? One of my goals is ‘earn income from online videos’. I can achieve this goal many different ways, I may even be doing this without the new system but the goal expresses a motivation. How might I achieve this goal? One way is to include advertisements in my videos. ‘Insert advertisement into video’ is something I want to do in order to achieve my goal ‘earn income from video’. Goals are ‘why’, requirements are ‘what’.&lt;/p&gt;
&lt;!--  l. 110  --&gt;
&lt;p class='indent'&gt;Hurrah! We have a requirement! Well…No. ‘Insert advertisement into video’ is a capability we want the system to have but not yet a requirement. Capabilities express business impact, the ‘how’ our system will satisfy the ‘why’. Requirements express ‘what’ our system must do to deliver the capability ‘how’, to satisfy the stakeholder’s (‘who’) goals (‘why’). This is the impact mapping concept defined described Gojko Adzik[&lt;a href='#cite.0@adzic:2012'&gt;Adž12&lt;/a&gt;].&lt;/p&gt;
&lt;!--  l. 112  --&gt;
&lt;p class='indent'&gt;Anyway, back to goals. Having established our current list of stakeholders our first task is to extract some initial goals (again, as with getting our stakeholder list, these goals are only our ‘current goals list’—they will change over time).&lt;/p&gt;
&lt;!--  l. 114  --&gt;
&lt;p class='indent'&gt;Extracting goals is a bit like being a small child. We constantly ask, ‘Why?’ until we start to get silly answers.&lt;/p&gt;
&lt;!--  l. 116  --&gt;
&lt;p class='indent'&gt;Suppose I offer ‘add adverts to my videos’ as a goal.&lt;/p&gt;
&lt;!--  l. 118  --&gt;
&lt;p class='indent'&gt;‘Why do you want to add adverts?’&lt;/p&gt;
&lt;!--  l. 120  --&gt;
&lt;p class='indent'&gt;‘Advertisers pay for the ads’&lt;/p&gt;
&lt;!--  l. 122  --&gt;
&lt;p class='indent'&gt;‘So you insert adverts to make money? Why?’&lt;/p&gt;
&lt;!--  l. 124  --&gt;
&lt;p class='indent'&gt;‘Income from video adverts allows us to make more videos’&lt;/p&gt;
&lt;!--  l. 126  --&gt;
&lt;p class='indent'&gt;‘Why make more videos?’&lt;/p&gt;
&lt;!--  l. 128  --&gt;
&lt;p class='indent'&gt;‘Making videos generates income and allows me to pay bills and make profits’&lt;/p&gt;
&lt;!--  l. 131  --&gt;
&lt;p class='indent'&gt;Okay, we’re now heading into ‘silly’ territory. Is our goal ‘pay bills and make profits’. Well, yes, with my business owner hat on this is the basic goal, ‘make profit’. What about as a video editor? Creating multiple versions of a final video (one for each target platform) each differing only by the specific advert shown is a pain in the ass so my goal conversation is a bit different with the video editor hat on. Once again, starting with a stated goal, ‘add adverts to videos’.&lt;/p&gt;
&lt;!--  l. 133  --&gt;
&lt;p class='indent'&gt;‘Why do you want to add adverts?’&lt;/p&gt;
&lt;!--  l. 135  --&gt;
&lt;p class='indent'&gt;‘Well, I don’t &lt;span class='ecti-1000'&gt;want&lt;/span&gt; to add them, but given the need to add them I want to make the process simple’&lt;/p&gt;
&lt;!--  l. 137  --&gt;
&lt;p class='indent'&gt;‘Why?’&lt;/p&gt;
&lt;!--  l. 139  --&gt;
&lt;p class='indent'&gt;‘Because it’s a fairly mechanical, non-creative part of my job. It’s boring.’&lt;/p&gt;
&lt;!--  l. 141  --&gt;
&lt;p class='indent'&gt;‘So it would be fair to say your goal, for this system, is to offload boring mechanical tasks?’&lt;/p&gt;
&lt;!--  l. 143  --&gt;
&lt;p class='indent'&gt;‘Yeah, free up more creative time by eliminating the mechanical tasks associated with inserting ads.’&lt;/p&gt;
&lt;!--  l. 145  --&gt;
&lt;p class='indent'&gt;Bingo! We have a winner. The video editor’s goal is to ‘free up creative time by eliminating the mechanical tasks associated with inserting tasks’.&lt;/p&gt;
&lt;!--  l. 147  --&gt;
&lt;p class='indent'&gt;Will our system do this? Well, it better, at least in part. The final system may not eliminate &lt;span class='ecti-1000'&gt;all&lt;/span&gt; the editor’s mechanical tasks but it should eliminate at least &lt;span class='ecti-1000'&gt;some&lt;/span&gt; and it certainly must not add more manual tasks.&lt;/p&gt;
&lt;!--  l. 149  --&gt;
&lt;p class='indent'&gt;Why not continue asking why? ‘Why do you want to free up creative time?’ seems silly to me. The video editors job is adding value to the output using their creative skills. Asking ‘why?’ here will only lead us down the ‘I make money being creative’ line and if you pursue any line of reasoning to the extreme you will end up with one goal ‘make money’, or you pass out the other side into why people exchange their time and skills for money; ‘pay the mortgage’, ‘pay food bills’, etc. and this
is obviously not going to help developing the system.&lt;/p&gt;
&lt;!--  l. 151  --&gt;
&lt;p class='indent'&gt;We are seeking the goals relevant to this stakeholder concerning this system.&lt;/p&gt;
&lt;!--  l. 153  --&gt;
&lt;p class='indent'&gt;Is this mechanical ‘why?’ asking approach going to extract all the good goals? Nope. As with everything else these goals are just our starting point. As we proceed we will find some goals are not useful, some goals are actually not the base goal and we need to mine deeper, and we will almost certainly add more goals. Your current list of stakeholder goals provides a scaffold for discovering more detail about the system you are to develop.&lt;/p&gt;
&lt;!--  l. 155  --&gt;
&lt;p class='indent'&gt;Don’t get hung up trying to find &lt;span class='ecti-1000'&gt;all&lt;/span&gt; the goals (this is as futile as trying to list all the requirements up front). Get a list of goals sufficient for the next steps and move on, there will be ample opportunity (indeed need) to change this list as the project proceeds. As a general rule, the bigger the project, the more time you will spend identifying the initial stakeholder and goals lists.&lt;/p&gt;
&lt;!--  l. 157  --&gt;
&lt;p class='indent'&gt;If you discover a stakeholder with no goals for this system, they’re not a stakeholder.&lt;/p&gt;
&lt;!--  l. 159  --&gt;
&lt;p class='indent'&gt;You may uncover a goal that reveals additional stakeholders. ‘graphic designer’ is not on my initial list of stakeholders. When I uncovered ‘free up creative time’ in conversation with the video editor this reminded me that there are other creatives involved, one of whom is the graphic designer (they create various elements of the final video but specific to this project they design the title cards to be inserted). A new stakeholder means another round of goal elicitation.&lt;/p&gt;
&lt;!--  l. 161  --&gt;
&lt;p class='indent'&gt;At this point you may be wondering, ‘hang on, given that this process is trying to establish requirements for a system that does not exist yet, how can I ask stakeholders about there goals for this system? You know, the system that does not exist?’ Well, recall that in the first article I came up with a rough idea for a new system? That’s the basis on which I’m building these initial stakeholder and goal lists. We’re saying, ‘if a system like this existed which of your goals would it help
solve?’&lt;/p&gt;
&lt;!--  l. 163  --&gt;
&lt;p class='indent'&gt;If your stakeholder mentions one of their goals but it is not relevant to this project, note it down anyway as it may well spin off another project. Similarly you will often hear stakeholders saying, ‘oh, it would be great to have a system that X’ but X is not related to the current project. While it may not be useful at this point to track this back to a goal it is certainly worthwhile making a note of it as it may lead to other projects.&lt;/p&gt;
&lt;!--  l. 165  --&gt;
&lt;p class='indent'&gt;Projects get started for all sorts of reasons but one thing is certain, they never start with a full list of requirements. The project sponsor is typically the person who has a problem to be addressed (the person with the itch) and they must articulate that itch to the people involved in solving the problem (the stakeholders) in such a way that the stakeholders can express their goals for the solution.&lt;/p&gt;
&lt;!--  l. 169  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-4000'&gt;&lt;/a&gt;Capture&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-4000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 172  --&gt;
&lt;p class='noindent'&gt;We’re doing good work here. We have some stakeholders and some goals. One of the things we need to do is capture this information. We need to capture it so that we can keep everyone involved (for now the stakeholders and team extracting the goals) up to speed. The format needs to be accessible to everyone involved (it’s pointless to create a document that only your team understands, the document needs to be understood by all stakeholders too).&lt;/p&gt;
&lt;!--  l. 174  --&gt;
&lt;p class='indent'&gt;This common understanding raises an important point; common language. If I say “module” what springs to mind? If you are a programmer you may have several mental models for “module”, if you manufacture spacecraft your mental model(s) will be entirely different. If we are working with an organisation developing software to support designing and building spacecraft we need to be clear on what “module” means in any given context. To do this we start a glossary and share this with all
involved in the project so we all have a common reference on the meaning of words.&lt;/p&gt;
&lt;!--  l. 176  --&gt;
&lt;p class='indent'&gt;We now have three things to capture.&lt;/p&gt;
&lt;ul class='itemize1'&gt;
&lt;li class='itemize'&gt;Stakeholders&lt;/li&gt;
&lt;li class='itemize'&gt;Goals&lt;/li&gt;
&lt;li class='itemize'&gt;Glossary&lt;/li&gt;
&lt;/ul&gt;
&lt;!--  l. 184  --&gt;
&lt;p class='indent'&gt;What format should be use? I always favour simple text or text markup because my developer brain sees this as the easiest for me to mangle into different output formats but I am in the minority on most projects and we tend to use other formats such as spreadsheets (MSExcel) or other Microsoft proprietary formats. Bottom line, try to capture all project information in as flexible a format as possible while making it available in formats that all stakeholders find acceptable&lt;span class='footnote-mark'&gt;&lt;a href='#fn1x0' id='fn1x0-bk'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-4001f1'&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!--  l. 186  --&gt;
&lt;p class='indent'&gt;Of course we might also keep documentation in a Content Management System (CMS)&lt;span class='footnote-mark'&gt;&lt;a href='#fn2x0' id='fn2x0-bk'&gt;&lt;sup class='textsuperscript'&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-4002f2'&gt;&lt;/a&gt; of some sort, even a wiki&lt;span class='footnote-mark'&gt;&lt;a href='#fn3x0' id='fn3x0-bk'&gt;&lt;sup class='textsuperscript'&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-4003f3'&gt;&lt;/a&gt;, with the caveat that we must be cautious about versioning and expectations around control of content. This is a popular choice for
technical documentation, less so for other forms of documentation.&lt;/p&gt;
&lt;!--  l. 188  --&gt;
&lt;p class='indent'&gt;That said, this is my project, so we’ll use text files. Specifically we will use LaTeX markup for general documentation (I use it for this website too). These text documents will be processed into various forms for presentation. LaTeX format is generally simple enough for anyone to edit but I acknowledge it can be complex at times and off putting for some (then again few will want to edit documents directly&lt;span class='footnote-mark'&gt;&lt;a href='#fn4x0' id='fn4x0-bk'&gt;&lt;sup class='textsuperscript'&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-4004f4'&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;!--  l. 192  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h3 class='sectionHead'&gt;&lt;a id='x1-5000'&gt;&lt;/a&gt;Housekeeping&lt;/h3&gt;
&lt;p&gt;&lt;a id='x1-5000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 195  --&gt;
&lt;p class='noindent'&gt;Another thing we will start immediately is capturing these documents in a version control tool. Again, there are many to choose from but I’m going to be a boring conformist and use Git. This is good for you too as you can access the documents at &lt;a href='https://gitlab.com/python-utils2/vproc' class='url'&gt;&lt;span class='ectt-1000'&gt;https://gitlab.com/python-utils2/vproc&lt;/span&gt;&lt;/a&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn5x0' id='fn5x0-bk'&gt;&lt;sup class='textsuperscript'&gt;5&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-5001f5'&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!--  l. 197  --&gt;
&lt;p class='indent'&gt;Keeping project assets in a version control tool is important but so too is ensuring each document has it’s release version identified. This is something of a rabbit-hole, to avoid overcomplicating this article I will discuss document control elsewhere. For now I will rely on the document’s title and last modified date and time as a unique identity.&lt;/p&gt;
&lt;h2 class='likechapterHead'&gt;&lt;a id='x1-6000'&gt;&lt;/a&gt;References&lt;/h2&gt;
&lt;!--  l. 200  --&gt;
&lt;p class='noindent'&gt;&lt;a id='likesection.6'&gt;&lt;/a&gt;&lt;a id='Q1-1-7'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;dl class='thebibliography'&gt;
&lt;dt id='X0-adzic:2012' class='thebibliography'&gt;[Adž12]&lt;/dt&gt;
&lt;dd id='bib-1' class='thebibliography'&gt;&lt;!--  l. 200  --&gt;
&lt;p class='noindent'&gt;&lt;a id='cite.0@adzic:2012'&gt;&lt;/a&gt;Gojko Adžić. &lt;span class='ecti-1000'&gt;Impact Mapping: Making a Big Impact with Software&lt;/span&gt; &lt;span class='ecti-1000'&gt;Products and Projects&lt;/span&gt;. Ed. by Marjory Bisset. Provoking Thoughts, 2012. &lt;span class='eccc1000-'&gt;&lt;span class='small-caps'&gt;isbn&lt;/span&gt;&lt;/span&gt;: 0955683645.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class='footnotes'&gt;&lt;!--  l. 184  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn1x0-bk' id='fn1x0'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;That said, I’ve seen far too many consultant documents produced in PowerPoint. There is&lt;/span&gt; &lt;span class='ecrm-0800'&gt;a special place reserved in Hell for these people.&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 186  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn2x0-bk' id='fn2x0'&gt;&lt;sup class='textsuperscript'&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;A system for managing content, typically presented online as a web site.&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 186  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn3x0-bk' id='fn3x0'&gt;&lt;sup class='textsuperscript'&gt;3&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;A form of CMS with a more open editing structure.&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 188  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn4x0-bk' id='fn4x0'&gt;&lt;sup class='textsuperscript'&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;In my experience most stakeholders are content to scan documentation in order to pass&lt;/span&gt; &lt;span class='ecrm-0800'&gt;comment but rarely do they want to edit it directly and even those who insist on an editable&lt;/span&gt; &lt;span class='ecrm-0800'&gt;format don’t contribute to the actual edit.&lt;/span&gt;&lt;/p&gt;
&lt;!--  l. 195  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a href='#fn5x0-bk' id='fn5x0'&gt;&lt;sup class='textsuperscript'&gt;5&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;Yeah, I know,&lt;/span&gt; &lt;span class='inline-cmd'&gt;&lt;span class='ecrm-0800'&gt;vproc&lt;/span&gt;&lt;/span&gt; &lt;span class='ecrm-0800'&gt;is a shitty name but this can be changed later.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="CI/CD" /><summary type="html">TL;DR In this article we take a step back, clear our heads, and start over focussing on the motivations behind the video processor application.</summary></entry><entry><title type="html">Core Concepts: Context</title><link href="https://saltyvagrant.com/2021/06/02/core-concepts-context.html" rel="alternate" type="text/html" title="Core Concepts: Context" /><published>2021-06-02T00:00:00+01:00</published><updated>2021-06-02T00:00:00+01:00</updated><id>https://saltyvagrant.com/2021/06/02/core-concepts-context</id><content type="html" xml:base="https://saltyvagrant.com/2021/06/02/core-concepts-context.html">&lt;div class='abstract'&gt;&lt;span class='ecbx-0900'&gt;TL;DR&lt;/span&gt; &lt;span class='ecrm-0900'&gt;Examining the core concept of context&lt;/span&gt;
&lt;hr /&gt;&lt;/div&gt;
&lt;!--  more  --&gt;
&lt;!--  l. 15  --&gt;
&lt;p class='indent'&gt;&lt;/p&gt;
&lt;!--  l. 20  --&gt;
&lt;p class='indent'&gt;Context is everything.&lt;/p&gt;
&lt;!--  l. 22  --&gt;
&lt;p class='indent'&gt;Context can change the meaning of a word: ‘&lt;a href='https://en.wikipedia.org/wiki/Michael_Jordan'&gt;Michael Jordan&lt;/a&gt; is tall’ vs. ‘The &lt;a href='https://en.wikipedia.org/wiki/Burj_Khalifa'&gt;Burj Khalifa&lt;/a&gt; is tall’.&lt;/p&gt;
&lt;!--  l. 24  --&gt;
&lt;p class='indent'&gt;Context is vitally important but often overlooked (especially by online ‘experts’ answering questions on Reddit/StackOveflow etc.). Expressing absolute opinion as fact, for example, ‘use GitHub Actions for your CI/CD’. Okay, but this presupposes your workflow is GitHub centred, that you are content to invest in GitHub, lock-in to GitHub, make yourself subject to rule changes and changes to GitHub charging. This is not to say you should &lt;span class='ecti-1000'&gt;not&lt;/span&gt; use GitHub
Actions, I’m just saying that absolute statements like this should be treated with caution&lt;span class='footnote-mark'&gt;&lt;a id='fn1x0-bk' href='#fn1x0'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;a id='x1-2f1'&gt;&lt;/a&gt; as they seldom consider context.&lt;/p&gt;
&lt;h4 class='subsectionHead'&gt;&lt;a id='x1-1000'&gt;&lt;/a&gt;Examples&lt;/h4&gt;
&lt;p&gt;&lt;a id='x1-1000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 29  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h5 class='subsubsectionHead'&gt;&lt;a id='x1-2000'&gt;&lt;/a&gt;Problem Solving&lt;/h5&gt;
&lt;p&gt;&lt;a id='x1-2000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 32  --&gt;
&lt;p class='noindent'&gt;Before starting to solve a problem we need to establish the context in which the problem manifested. What were the circumstances? Was there unusual activity (e.g. more user activity, some unusual process load like a backup restore)? Had a release been recently deployed?&lt;/p&gt;
&lt;!--  l. 34  --&gt;
&lt;p class='indent'&gt;Once we have established the context in which the problem occurred we need the context in which we are to solve the problem. Time frame? Available resources (people, money, etc.). Workflow (can we push a change immediately, can we ‘tinker’ with production systems directly, do we need specific personnel to authorise work).&lt;/p&gt;
&lt;!--  l. 36  --&gt;
&lt;p class='indent'&gt;In real situations a lot of these things, both situation and solution contexts, will be known or at least informally established.&lt;/p&gt;
&lt;!--  l. 38  --&gt;
&lt;p class='noindent'&gt;&lt;/p&gt;
&lt;h5 class='subsubsectionHead'&gt;&lt;a id='x1-3000'&gt;&lt;/a&gt;Feature Building&lt;/h5&gt;
&lt;p&gt;&lt;a id='x1-3000doc'&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--  l. 41  --&gt;
&lt;p class='noindent'&gt;When developing a new feature (even a whole system) contexts similar to those required of problem solving need to be established.&lt;/p&gt;
&lt;!--  l. 43  --&gt;
&lt;p class='indent'&gt;Not only basics such as available resources (time, money, people, etc.) but also existing systems (both IT and business) form the context of the new feature/system.&lt;/p&gt;
&lt;!--  l. 45  --&gt;
&lt;p class='indent'&gt;It is no use developing the worlds greatest accounting package when a simple off-the-shelf package will suffice. Using a SaaS provider may not be an option for secret internal projects.&lt;/p&gt;
&lt;div class='footnotes'&gt;&lt;!--  l. 24  --&gt;
&lt;p class='indent'&gt;&lt;span class='footnote-mark'&gt;&lt;a id='fn1x0' href='#fn1x0-bk'&gt;&lt;sup class='textsuperscript'&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class='ecrm-0800'&gt;This caution should be increased if the user making the statement attempts to establish&lt;/span&gt; &lt;span class='ecrm-0800'&gt;expertise using statements like ‘I’ve working in IT for 20 years’. This ‘appeal to authority’ in no&lt;/span&gt; &lt;span class='ecrm-0800'&gt;way makes the statement right.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</content><author><name>Mark Bools</name><email>saltyvagrant@gmail.com</email></author><category term="concept" /><summary type="html">TL;DR Examining the core concept of context</summary></entry></feed>