<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Alyss 💜</title>
    <description>The latest articles on Forem by Alyss 💜 (@preciselyalyss).</description>
    <link>https://forem.com/preciselyalyss</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F16966%2Faf781131-6145-44f0-bf9d-b16a221dddea.jpg</url>
      <title>Forem: Alyss 💜</title>
      <link>https://forem.com/preciselyalyss</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/preciselyalyss"/>
    <language>en</language>
    <item>
      <title>Unofficial guide to Slack literacy: communication in a remote-first world</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Tue, 18 Jan 2022 19:19:40 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/unofficial-guide-to-slack-literacy-navigating-communication-in-a-remote-first-world-dbd</link>
      <guid>https://forem.com/preciselyalyss/unofficial-guide-to-slack-literacy-navigating-communication-in-a-remote-first-world-dbd</guid>
      <description>&lt;p&gt;Before landing my first job in tech, I’d already been well acquainted with IRC, ventrilo, and message boards. With a career came Campfire (Basecamp) and then Slack launched in August 2013. Slack, for the purposes of this post, is used as a proxy for asynchronous chat platforms/tooling. Such software has become ubiquitous to the daily toil for knowledge workers and expands into professional, personal, and hobby communities. &lt;/p&gt;

&lt;h2&gt;
  
  
  Basic rules of etiquette
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Unless you’ve formally discussed the use of &lt;code&gt;@channel&lt;/code&gt; or &lt;code&gt;@here&lt;/code&gt; on your team and there’s a shared understanding of when to use it, err on the side of never using it. I’ve personally found this notification used more frequently among sales teams or within groups where most users do not have a desktop app installed and access through a browser instead.&lt;/li&gt;
&lt;li&gt;When sending a direct or private message, send a single message with your request. (e.g. Hello! Can you share any updates on the Apollo project?) There are individuals who may prefer an opening salutation or some kind of friendly watercooler banter but the point of async communication is you don’t have to sit around waiting to have a conversation to get a question answered. If you’re working across time zones, you can also consider &lt;a href="https://slack.com/help/articles/1500012915082-Schedule-messages-to-send-later" rel="noopener noreferrer"&gt;scheduling a message&lt;/a&gt; to send.&lt;/li&gt;
&lt;li&gt;Set your own boundaries. Slack has a &lt;a href="https://slack.com/help/articles/214908388-Pause-notifications-with-Do-Not-Disturb" rel="noopener noreferrer"&gt;notification schedule feature&lt;/a&gt; and Do Not Disturb (when you may want to focus or go on vacation).
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fis92ct9u3h2zjg7kvvqr.png" alt="notification schedule in slack profile settings"&gt;
&lt;/li&gt;
&lt;li&gt;Finally: Set a profile photo, pronouns, and name pronunciation*.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;*Enterprise slack plans have more configurable profile fields, like name pronunciation. This may not be available in your slack experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intermediate skills
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mentions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;If an individual isn’t in the channel or private message, using their tag or handle will not notify them. For a channel in slack, a message will appear asking if you’d like to invite or notify them (or do nothing).&lt;/li&gt;
&lt;li&gt;@ mentions can be disruptive. If you’d like to mention a person without notifying them, placing their name or handle in backtick/code blocks (e.g. &lt;code&gt;@preciselyalyss&lt;/code&gt;). You can do this when you aren’t sure if they are in a channel but still want to reduce noise/distractions.&lt;/li&gt;
&lt;li&gt;If you are interacting via a private message, you don’t need to tag/@ mention participants. They will be notified by default. In a private group DM, you can further configure your notification settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Channels
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Read descriptions and pinned messages for a channel if you aren’t sure how to interact. Rules of engagement may be documented or the best way to engage with a particular team. &lt;/li&gt;
&lt;li&gt;Organize slack channels with the sections feature&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reactji + Emoji
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Reactji are highly cultural. We have over 10k custom slack emoji at GitHub. Sometimes these gain more traction, like Atlassian popularized chompy when HipChat shipped with the character in the default emoji set. Chompy was used when posting that lunch was available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feg2tgu7p1ab9wdwr4rx3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feg2tgu7p1ab9wdwr4rx3.gif" alt="cartoon character chewing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most platforms allow you to configure a default skin tone of the core emoji set. Please think about this. Even leaving the default to yellow should be a deliberate choice, in my opinion. More reading &lt;a href="https://firstmonday.org/ojs/index.php/fm/article/view/10060/8048" rel="noopener noreferrer"&gt;here&lt;/a&gt; and &lt;a href="https://arxiv.org/pdf/2105.05887.pdf" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Threads
&lt;/h3&gt;

&lt;p&gt;There are no universally agreed rules that I’ve observed on Threads yet. They are still fairly new feature to several platforms. It can help with multi-threaded conversations but does change the notification location or reduce visibility in some cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Writing styles
&lt;/h3&gt;

&lt;p&gt;Chat is a highly informal medium and written communication can be fraught with opportunities to miscommunicate and misunderstand. It is possible to reduce the risks but never fully mitigate them. If you're unsure of the tone something was written in, ask.&lt;/p&gt;

&lt;p&gt;Some rules I follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If there’s a context-loaded word, like DevOps, I try to define what usage I’m intending when discussing in chat.&lt;/li&gt;
&lt;li&gt;Incorporating &lt;a href="https://fourminutebooks.com/nonviolent-communication-summary/" rel="noopener noreferrer"&gt;non-violent communication&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Explicit requests vs implied. “Can you do x?” instead of “X needs to get done”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consider cultural-specific communication&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do I have teammates that wouldn’t understand this reference?&lt;/li&gt;
&lt;li&gt;Is this a necessary reference if it does exclude people who don’t understand and should I explain it?&lt;/li&gt;
&lt;li&gt;Is there potentially ambiguous or inflammatory meaning? (e.g. Gifs or images referencing Winnie the Pooh when speaking with China-based colleagues could have an unintended impact)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re interested in further improving your remote-first skills, &lt;a href="https://yougotthis.io/talks/" rel="noopener noreferrer"&gt;You Got This&lt;/a&gt; is a community event series with even more educational content to dive into.&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Install Groovy with ZSH (plus automation in Jira &amp; Confluence)</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Wed, 22 Aug 2018 15:48:18 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/install-groovy-with-zsh-plus-automation-in-jira--confluence-nji</link>
      <guid>https://forem.com/preciselyalyss/install-groovy-with-zsh-plus-automation-in-jira--confluence-nji</guid>
      <description>&lt;p&gt;&lt;strong&gt;Full disclosure&lt;/strong&gt;: I work for Atlassian. As a result, I spend a great deal of time creating, updating, and reading Confluence pages. While Confluence server and cloud both have APIs which can be used to programmatically update/create pages, Adaptavist created an app called &lt;a href="https://marketplace.atlassian.com/apps/1215215/scriptrunner-for-confluence"&gt;ScriptRunner&lt;/a&gt; which makes this easier with built-in scripts and pre-written logic. My end-goal is to automate some common, reoccuring tasks either by checking a Jira issue for updates or another confluence page. Most Atlassian applications are written in Java and ScriptRunner uses a flavor of Java called Groovy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: install Groovy on OS X
&lt;/h2&gt;

&lt;p&gt;For Homebrew users:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;groovy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For MacPorts users:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;port &lt;span class="nb"&gt;install &lt;/span&gt;groovy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Set Groovy_home environment variable
&lt;/h2&gt;

&lt;p&gt;You are welcome to do this entirely in zsh, but I manually added it to my &lt;code&gt;~/.zshrc&lt;/code&gt; file. Another note is I have Sublime set up to launch from the command line. If you prefer vim, emacs, or another text editor, you will need to substitute references to &lt;code&gt;subl&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;subl ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within &lt;code&gt;~/.zshrc&lt;/code&gt;, I'm adding the following variable export and comment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Add Groovy Home path
export GROOVY_HOME="$(/usr/local/opt/groovy/libexec)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save this file, then you can close it once you're done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Run a test to check your Groovy install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;groovy-test &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;groovy-test
subl hello.groovy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, add a test script to the empty file you just created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;//hello.groovy&lt;/span&gt;
&lt;span class="n"&gt;println&lt;/span&gt; &lt;span class="s"&gt;"hello, world"&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arg&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;args&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;println&lt;/span&gt; &lt;span class="s"&gt;"Argument:"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;arg&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// this is a comment&lt;/span&gt;
&lt;span class="cm"&gt;/* a block comment, commenting out an alternative to above:
this.args.each{ arg -&amp;gt; println "hello, ${arg}"}
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save this file, then you can close it once you're done.&lt;/p&gt;

&lt;p&gt;Run it with the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;groovy hello.groovy MyName yourName HisName
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Start using Groovy to automate tasks in Jira or Confluence
&lt;/h2&gt;

&lt;p&gt;As I mentioned before, Adaptavist offers some built-in scripts but I find my needs are more complex. There are some good examples floating around the web to help get started.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/jechlin/cf9ccb524918993872d5"&gt;Create Confluence page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://scriptrunner-docs.connect.adaptavist.com/confluencecloud/script-listeners.html#_examples"&gt;ScriptRunner examples for Confluence Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitbucket.org/Adaptavist/scriptrunner-samples/overview"&gt;ScriptRunner samples for Bitbucket, Bamboo, Confluence, and Jira&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.coyotecrk.com/best-practices-scriptrunner-behaviours/"&gt;Best practices for ScriptRunner behaviors for Jira&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>zsh</category>
    </item>
    <item>
      <title>3 Secrets to Improve your Travel Experience</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Tue, 17 Jul 2018 22:19:59 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/3-secrets-to-improve-your-travel-experience-ih4</link>
      <guid>https://forem.com/preciselyalyss/3-secrets-to-improve-your-travel-experience-ih4</guid>
      <description>&lt;p&gt;In more than two decades of travel, I've packed hundreds of times and flown hundreds of thousands of miles. With all those WiFi-less flights, I have had time to iterate on my travel strategy (if you can call haphazardly planning a strategy). &lt;/p&gt;

&lt;p&gt;If you are looking for ways to improve your airplane travel experience, I've included my favorite tips to foist on unsuspecting friends and coworkers like how to get more out of your suitcase real estate, avoiding a rat's nest of electronic cables, and how to look fresh-faced (and hydrated) after a long flight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pack like you're going to have to do it again
&lt;/h2&gt;

&lt;p&gt;Packing is a necessary evil of travel. Whether you pack two hours before your flight or two days before with a checklist, you can improve your experience with a couple of additions to your travel kit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Packing cubes in practice
&lt;/h3&gt;

&lt;p&gt;The best packing improvements I've experienced have had little to do with the bag itself. If you take nothing else away from this post, get yourself some &lt;a href="https://thewirecutter.com/reviews/best-packing-cubes/" rel="noopener noreferrer"&gt;packing cubes&lt;/a&gt;. My first purchase was for The Wirecutter's top recommendation, Eagle Creek Pack-It cube set. After my significant other commandeered those, I upgraded to Eagle Creek's Pack-It Specter Compression cube set.Most of my outfits end up in the full-sized cube. I find the half-cube works great for underwear, socks, and bras. I have rarely found the quarter-cube useful, so I leave it out or use it for toiletries.&lt;/p&gt;

&lt;p&gt;Packing cubes really shine once you start unpacking at your hotel. Finding the shirt you want no longer requires unpacking half your suitcase. Repacking is a breeze since you’re placing the cubes back into your suitcase as opposed to refolding and figuring out what tetris-solution you came up with originally.&lt;/p&gt;

&lt;p&gt;Packing cubes aren't just for your suitcase either. I put one in my carry-on with a spare change of clothes and a hoodie. If your bag is lost or the plane is freezing, then you have everything you need for a day.&lt;/p&gt;

&lt;h3&gt;
  
  
  "Please stow all large electronic devices..."
&lt;/h3&gt;

&lt;p&gt;How many electronic devices are in your carry-on? Maybe a Switch (plus games), a kindle, a laptop, and bluetooth headphones. If your experience is anything like mine, you left your kindle on scanning for wifi or entertained yourself by reading reddit on your phone for the last hour before your flight boards. Now that you're facing a 3+ hour plane ride without wifi and dead or dying devices, it's time to untangle the mass of cables at the bottom of your backpack.&lt;/p&gt;

&lt;p&gt;Forget. That. Start by getting yourself a cord organizer. It is way easier to take in and out of your carry-on. While you're at it, get a &lt;a href="https://thewirecutter.com/reviews/best-usb-battery-packs/" rel="noopener noreferrer"&gt;backup battery&lt;/a&gt;. Most USB ports on planes output 0.5 amps, but many phones use some form of quick charge and require 2 amps or more. Besides, &lt;a href="https://lifehacker.com/make-your-own-usb-condom-for-added-security-when-char-1751213671" rel="noopener noreferrer"&gt;you don't know where that USB has been&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you're reading this, drink some water
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb37qf2k7kozgactyqwhy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb37qf2k7kozgactyqwhy.jpg" alt="Desert in Morocoo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Doesn't matter if it's a one-hour puddle hop or an 18-hour trans-pacific flight, planes dehydrate everyone. With climate control, the relative humidity on planes can get as low as 4%. The Boeing 787 and Airbus A350 can achieve 10-15% (or more). By exchanging some of the metal components with carbon fiber, they can support greater humidity without reducing the life of the plane due to corrosion. All that said, 10-15% relative humidity is still drier than the Sahara. &lt;/p&gt;

&lt;h3&gt;
  
  
  Reduce &amp;amp; reuse
&lt;/h3&gt;

&lt;p&gt;Walk into any airport in the US, and you're bound to see a 20oz bottle of water for $2.50 or more. If you're passing through Chicago's O'Hare, it is closer to $3.40. Don't worry, you won't be shelling out for those. For $9-15, you can get a &lt;a href="https://www.amazon.com/Platypus-DuoLock-SoftBottle-Collapsible-Bottle/dp/B078JVYKKH/" rel="noopener noreferrer"&gt;collapsible water bottle&lt;/a&gt;. Take it through security, pack it in your bag, or clip it on to a strap. &lt;/p&gt;

&lt;p&gt;An increasing number of airports have bottle-filling stations. Swing by one before boarding and try to avoid caffeine/alcohol on the flight. For longer trips, you might want a second water bottle, or you can make friends with the flight attendants. &lt;/p&gt;

&lt;h3&gt;
  
  
  Transepidermal water loss or "why you need a plane skincare routine."
&lt;/h3&gt;

&lt;p&gt;Remember the paltry humidity levels on planes? Well, your skin hates it. Transepidermal water loss (TEWL) is when water passes from the dermis through the epidermis and evaporates from the skin's surface. Low humidity conditions increase the rate that our skin loses moisture through TEWL. Basically, you're going to come off that plane looking just as jet-lagged as you feel.&lt;/p&gt;

&lt;p&gt;The best way to combat this is with a combination of humectants (hydrator) and occlusives (moisture seal). I won't dive into the nitty-gritty of skincare science, but here are a couple recommendations to take in your carry-on for your next flight:&lt;/p&gt;

&lt;p&gt;Hydrators&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://theordinary.com/product/rdn-natural-moisturizing-factors-ha-30ml" rel="noopener noreferrer"&gt;The Ordinary's Natural Moisturizing Factors + HA&lt;/a&gt;, $5.80 + shipping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moisture seals&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vaseline&lt;/li&gt;
&lt;li&gt;Shea butter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combination&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.etudehouse.com/int/en/index.php/skincare/cream/etude-house-honey-cera-cream.html" rel="noopener noreferrer"&gt;Etude House Honey Cera Cream&lt;/a&gt;, $24 + shipping&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/CeraVe-Ointment-Hyaluronic-Ceramides-Protecting/dp/B016F3MESG?th=1" rel="noopener noreferrer"&gt;Cerave Healing Ointment w/ Hyaluronic Acid and Ceramides&lt;/a&gt;, $8.50 + shipping&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Happier traveling!
&lt;/h2&gt;

&lt;p&gt;Trekking through airports, past security, and into a new city is exhilarating and exhausting.  A few mindful inclusions can improve the quality of the experience. For your next vacation, family reunion, or business trip, try out my recommendations then sit back and enjoy.  &lt;/p&gt;

</description>
      <category>career</category>
      <category>travel</category>
      <category>selfcare</category>
    </item>
    <item>
      <title>Explain BigInt Like I'm Five</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Fri, 25 May 2018 18:18:18 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/explain-bigint-like-im-five-5c66</link>
      <guid>https://forem.com/preciselyalyss/explain-bigint-like-im-five-5c66</guid>
      <description></description>
      <category>explainlikeimfive</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Nevertheless, Alyss 💜 Coded</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Thu, 08 Mar 2018 05:09:53 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/nevertheless-alyss--coded--2dp6</link>
      <guid>https://forem.com/preciselyalyss/nevertheless-alyss--coded--2dp6</guid>
      <description></description>
    </item>
    <item>
      <title>Stress Way Less: Building Psychological Safety at Work</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Wed, 24 Jan 2018 15:16:03 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/stress-way-less-building-psychological-safety-at-work-28fh</link>
      <guid>https://forem.com/preciselyalyss/stress-way-less-building-psychological-safety-at-work-28fh</guid>
      <description>&lt;h2&gt;
  
  
  What does psychological safety mean?
&lt;/h2&gt;

&lt;p&gt;My own familiarity with the phrase "psychological safety" started when I read &lt;a href="http://charlesduhigg.com/books/smarter-faster-better/"&gt;Smarter Better Faster: The Secrets To Being Productive in Life and Business&lt;/a&gt; by Charles Duhigg. He references research that &lt;a href="https://rework.withgoogle.com/blog/how-to-foster-psychological-safety/"&gt;Google&lt;/a&gt; started on a quest to create a more productive team. The increased discussion of psychological safety illustrates the community's recognition that there is something wrong and there is desire to elicit change. &lt;strong&gt;But, what does that make "psychological safety" other than our latest buzz phrase?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Psychological safety is defined as the combination of trust between coworkers, and an environment in which that trust can be acted upon.&lt;/p&gt;

&lt;p&gt;In the healthcare and aviation industries, this is often referred to as "&lt;a href="https://www.faa.gov/about/initiatives/cp/"&gt;just culture&lt;/a&gt;". The U.S. Federal Aviation Administration defines this as, "A culture…that has both an expectation of, and an appreciation for, self-disclosure of errors. A 'just culture' allows for due consideration of honest mistakes, especially in a complex system like the National Airspace System (NAS). But even unintentional errors can have a serious adverse impact on safety, and so we must ensure that the underlying safety concern is fixed in all cases."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thought exercise:&lt;/strong&gt; what would a hospital visit look like if patient charts were mixed up? Now, think about what would happen if patient charts were mixed up but a hospital employee wasn't willing to admit what happened? It is a scary thought and tech is touching more than just healthcare these days.&lt;/p&gt;

&lt;p&gt;The thought experiment encourages you to consider the worst case scenario which frames the benefits psychological safety can convey. The tech industry is in desperate need of something to disturb the status quo of unhealthy work environments. Productivity has been in a &lt;a href="http://www.nber.org/papers/w21556"&gt;slump globally&lt;/a&gt; and fostering psychological safety could create an environment where innovation can further blossom. Psychological safety is foundational to improve workplace relationships and mental health.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with building trust
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://katiewetherbee.com/2011/03/04/effective-communication-part-2-avoiding-assumptions/"&gt;Assumptions in communication&lt;/a&gt; can provide a plethora of roadblocks to finding common ground. Before jumping into how we go about building trust, I'd like to set a shared vocabulary (from &lt;a href="http://www.talentsmart.com/products/emotional-intelligence-2.0/"&gt;Emotional Intelligence 2.0&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-awareness&lt;/strong&gt;: the ability to accurately perceive your own emotions in the moment and understand your tendencies across situations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-management&lt;/strong&gt;: the ability to use your awareness of your emotions to stay flexible and direct your behavior positively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social awareness&lt;/strong&gt;: the ability to accurately pick up on emotions in other people and understand what is really going on with them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relationship management&lt;/strong&gt;: the application of social awareness, self-awareness, and self-management to manage interactions successfully.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Establishing trust among peers
&lt;/h3&gt;

&lt;p&gt;Can you depend on your teammates? Trust falls at corporate retreats don't count. Do you leave a meeting and think, "I'm going to have to follow up with them to make sure that gets done"? Or is there a teammate that dazzles you with their ability to respond to every email they get? The former doesn't feel dependable and the latter does. Understanding where your loss of trust comes from is one part self-awareness and one part social awareness. This can breed resentment if you feel you have to do extra work just to make sure someone else does their job.&lt;/p&gt;

&lt;p&gt;When you no longer feel you can trust your coworkers, productivity and your ability to collaborate breaks down. How can this cycle be disrupted? At an individual level, you can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Keep your word &lt;/strong&gt;— and if you can't, say it sooner rather than later. Your teammates can help you out if you sound the signal early that you need help completing the work, whatever the reason may be. Knowing earlier will also help them fit this into their schedule in a more optimal manner than if they'd found out at the last minute about this extra task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tell the truth &lt;/strong&gt;— this doesn't mean "tough love". Your perspective of events is not the universal truth and creating a culture of safety requires recognizing that. Truth must be measured by the words we use and not just the message we intend to convey as it may have an impact to the contrary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be transparent &lt;/strong&gt;— sometimes two different people have two different end goals in mind, especially in collaboration or when it comes to corporate alignment. Be up front. Your teammates can't read your mind and they certainly can't help you reach that goal if you don't tell them what it is.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be willing &lt;/strong&gt;— to help, to mentor, to listen, et al. Don't do it because of what you can get out of the interaction; do it because that makes someone's job easier or their day better.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Setting clear expectations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pop quiz!&lt;/strong&gt; If you had to write your job description in 10 minutes, could you do it? You can't reference the job description you were hired under and you can't ask for input. Would the end product of this exercise match the job description you were hired under? Chances are this is a challenge and the output wouldn't match.&lt;/p&gt;

&lt;p&gt;If you can't clearly define what your job description and responsibilities are, chances are that your coworkers can't either. Teammates and coworkers may have pretty good ideas, but this sets up teams and organizations for assumptions based on non-uniform expectations. How can you hope to build trust based on expectations that aren't communicated? People managers should work with their direct reports to:&lt;/p&gt;

&lt;h3&gt;
  
  
  Communicate &amp;amp; enable desired behaviors
&lt;/h3&gt;

&lt;p&gt;Don't neglect emotional intelligence in favor of performance metrics. Both are important to the success of your organization and/or team. Complement this by tailoring employee assessments to individual behavior. A quiet introvert won't necessarily respond or improve when told to assert themselves in meetings. If you are struggling with the goals your manager sets, discuss it with them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understand role accountability and discuss expectations
&lt;/h3&gt;

&lt;p&gt;It is possible for two or more people to have one or the same role, depending on what they do. Discuss what work you're accountable for and expected to complete. Clear expectations will help you have consistent communication and manage work relationships through addressing assumptionsyour peers may form. It will also help set a shared vocabulary you can use with your manager to discuss progress or difficulties in your role.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set realistic goals and reasses
&lt;/h3&gt;

&lt;p&gt;Goals should be guided by your responsibilities. If you (or your employee) aren't meeting goals, talk about it. Not everyone talks about when they feel overwhelmed or when there are personal matters outside of work that may impact their performance. Check in with your manager and your teammates. It is great practice for improving self-awareness.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be accessible
&lt;/h3&gt;

&lt;p&gt;You can't be everywhere at once and, if you're managing people, you may have more than one report. When peers have feedback about your employee or questions about their role, make time to listen. You can support your employee by addressing these questions, setting appropriate expectations about their role, or listening to praise (or concerns) their peers may have.&lt;/p&gt;

&lt;p&gt;It boils down to building social awareness and helping your employees manage their relationships with teammates. If you feel this list is a little shallow, I would agree, but I don't feel like I can do it justice in this post. Some great tools exist to support accomplishing these goals such as the &lt;a href="https://www.praxisframework.org/library/responsibility-assignment-matrix"&gt;RA(S)CI model&lt;/a&gt; and &lt;a href="http://hrweb.mit.edu/performance-development/goal-setting-developmental-planning/smart-goals"&gt;SMART(E) goals&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The story of company culture
&lt;/h2&gt;

&lt;p&gt;Clarity is more than a well-written job description; &lt;a href="http://www.gallup.com/services/182216/state-american-manager-report.aspx"&gt;Gallup&lt;/a&gt; has found that it also depends on employees understanding how their work aligns with the organization's mission and business goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Another thought exercise: can you give your company's &lt;a href="http://sfp.ucdavis.edu/files/163926.pdf"&gt;&lt;strong&gt;30 second elevator pitch&lt;/strong&gt;&lt;/a&gt;?&lt;/strong&gt; Toyota, as an example, focuses on vehicle safety as &lt;a href="http://sfp.ucdavis.edu/files/163926.pdf"&gt;their ultimate goal&lt;/a&gt;. That sounds pretty compelling to a consumer: you may prefer cars that help me stay safe on the road. As an employee, you could consider that the marketing we are doing should always support that ultimate goal. It can have a different primary message, but that "Safety" message should be present. As an engineer, you would know your &lt;a href="https://www.wikiwand.com/en/Performance_indicator"&gt;KPIs&lt;/a&gt;(key performance indicators) will focus predominantly on the safety of what you design and why your performance is measured that way.&lt;/p&gt;

&lt;p&gt;What I have learned is that this is also how the best products and companies are built. &lt;a href="https://www.goodreads.com/book/show/69242.Made_to_Stick"&gt;Made to Stick&lt;/a&gt; discusses it in-depth. When the modus operandi is clear from the Executive level to every other corner of the company, you get Southwest Airlines and the success the Palm Pilot saw when PDAs just weren't working for consumers. &lt;/p&gt;

&lt;p&gt;Start telling a &lt;a href="https://hbr.org/2016/03/how-to-build-a-strategic-narrative"&gt;strategic narrative&lt;/a&gt;. Company leaders should support this narrative with &lt;a href="https://gothamculture.com/2015/02/26/great-leaders-must-tell-better-stories/"&gt;great stories&lt;/a&gt; of what is happening within the organization and not just their own team. Talk about successes and how teams within the organization came together to accomplish the bigger picture. Employees can anchor against this and better understand the value of their work and the work of their teammates.&lt;/p&gt;

&lt;p&gt;This article was originally posted on &lt;a href="https://medium.com/@Alyss/creating-psychological-safety-part-1-ac9aa733fa9b"&gt;Medium&lt;/a&gt;, but has since been revised. &lt;/p&gt;

</description>
      <category>culture</category>
      <category>career</category>
      <category>devops</category>
      <category>workplace</category>
    </item>
    <item>
      <title>Slate, Swagger, and Silos - A Documentation Rebuild Story</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Tue, 28 Nov 2017 19:40:22 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/slate-swagger-and-silos---a-documentation-rebuild-story-bif</link>
      <guid>https://forem.com/preciselyalyss/slate-swagger-and-silos---a-documentation-rebuild-story-bif</guid>
      <description>&lt;p&gt;In 2016, I migrated the API and front-end documentation of an e-commerce platform from Contentful to &lt;a href="https://github.com/lord/slate" rel="noopener noreferrer"&gt;Slate&lt;/a&gt; as my first solo (and major) ruby project. At the time it was migrated, there were probably around 20 API endpoints documented and none of which had a swagger spec. Not only were there APIs, but there were TWO front-end frameworks that needed to be contained within the same site. My intent of this post is to discuss the specific problems this project posed, how they were tackled, and some constraints. If you are investigating static sites or Slate as a documentation solution, I hope you find value in my experiences. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffby40tja4ybtgilu3ntr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffby40tja4ybtgilu3ntr.png" alt="screenshot of slate api documentation" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Problems
&lt;/h2&gt;

&lt;p&gt;As with any product, I had a wishlist of improvements. But it is easy for your eyes to be bigger than your stomach. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6lkck6x3cezftkeu71x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6lkck6x3cezftkeu71x.jpg" alt="young puppy eating from an overflowing dog food bowl" width="335" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Information architecture was atrocious. Users tended to bookmark pages more than suffer the structure.&lt;/li&gt;
&lt;li&gt;API resource pages were split and not linked to each other.&lt;/li&gt;
&lt;li&gt;No search, making the above problems even worse.&lt;/li&gt;
&lt;li&gt;Code samples existed only in SDKs and clients hosted on github.&lt;/li&gt;
&lt;li&gt;Basic getting started information was buried&lt;/li&gt;
&lt;li&gt;Load time was meh. &lt;/li&gt;
&lt;li&gt;Updating content required a user seat. &lt;/li&gt;
&lt;li&gt;No SAML/SSO which mattered for a company that managed off- and on-boarding through LDAP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That list doesn't seem so bad, but with the curse of knowledge, I knew there was more to each than meets the eye. Having the luxury of experiencing Twilio's API documentation, it was tough knowing the high standard it would be compared to.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Will the code samples have syntax highlighting? &lt;/li&gt;
&lt;li&gt;Is the search site wide or only in-page content?&lt;/li&gt;
&lt;li&gt;How will access be handled?&lt;/li&gt;
&lt;li&gt;How do I manage the IA (information architecture)? Can it be easily updated?&lt;/li&gt;
&lt;li&gt;What is the learning curve for new admins?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solutions feat. Slate
&lt;/h2&gt;

&lt;p&gt;Out of the box, Slate has only a single page. The index page is typically used by other Slate forks as a landing page (for multiple endpoints) or as a feet-first introduction to the API with a header acting as the introduction. Given the nature of API and front-end documentation, I needed to use this as a landing page.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fle5hltw35ul552rwzzx3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fle5hltw35ul552rwzzx3.png" alt="screenshot of navigation bar and hero image" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Information Architecture
&lt;/h3&gt;

&lt;p&gt;Since Slate is based on middleman, the directory structure felt pretty straight forward. I could create subdirectories such as &lt;code&gt;/api&lt;/code&gt;, create a new &lt;code&gt;index.html&lt;/code&gt; within that, and boom: localhost:4567/api/. The main issues I ran into when working with this were three-fold:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The information architecture could easily become convoluted from a user or developer side. With two major API versions, I needed &lt;code&gt;/api/v2/&lt;/code&gt; and &lt;code&gt;/api/v3/&lt;/code&gt;. On top of that, there are 25 resources or more (not including subresources) to cover in the documentation. I had to decide which was the lesser of two evils: a very long page (but one with search and side-nav) or many subdirectories and landing pages. &lt;/li&gt;
&lt;li&gt;[Lesson learned way later] Pages with a lot of content can have some interesting issues in Slate. Specifically, using the navigation, some content wouldn't show up until you refreshed but the page had fully loaded. The way I had Slate deployed was via github pages, so the site was pre-built with static html. There was no JS or back-end nonsense that should have prevented rendering. I never figured this one out. &lt;/li&gt;
&lt;li&gt;If I wanted multiple pages within the same subdirectory, it was relatively easy to name the file something like &lt;code&gt;api-endpoint.html&lt;/code&gt; instead of &lt;code&gt;index.html&lt;/code&gt;. The issue I had with this was relatively minor, but the final html rendering between various gems didn't like this in a few places (tables). It also hampered the search effectiveness without a federated search like Algolia. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Speed
&lt;/h3&gt;

&lt;p&gt;There is no room to complain about speed with Slate. It is self-contained and only as bloated as you end up making it. At the time that I'm writing this, the dev branch for Slate has a way to pre-render the side navigation. During the migration work, it primarily used javascript. In testing the page speeds using Chrome Developer Tools and a variety of site speed tools, I noticed one page was an outlier. After wrangling further with DevTools, I was able to get a javascript profile of the page load which helped me identify the javascript functions that were taking the longest. &lt;/p&gt;

&lt;p&gt;In my attempt to have every endpoint on the same page by version (&lt;code&gt;/api/v2/&lt;/code&gt;), the js generating the side-nav was taking ages. It totaled about 1s+ on desktop. I &lt;a href="https://www.slideshare.net/AlyssNoland/prerendering-with-nokogiri-75792512" rel="noopener noreferrer"&gt;presented&lt;/a&gt; a bit on using Nokogiri for pre-rendering the table of contents as I had worked on it asynchronous from Lord (Slate's creator). After implementing the &lt;a href="https://github.com/sparklemotion/nokogiri" rel="noopener noreferrer"&gt;Nokogiri&lt;/a&gt; pre-rendering, load times were 👌. By changing the ToC (table of contents) build function from client-side to sorta-server-side, the greatest damage was mitigated. &lt;/p&gt;

&lt;h3&gt;
  
  
  Search
&lt;/h3&gt;

&lt;p&gt;As a static site, there was no full-site search but Slate did have in-page search with &lt;a href="https://lunrjs.com/" rel="noopener noreferrer"&gt;lunr.js&lt;/a&gt;. My only change was to the highlighting feature. I noticed with large pages, there was a significant feeling of lag after a single character had been typed. Increasing this to three characters was more likely to be relevant to the user without impacting their experience. &lt;/p&gt;

&lt;p&gt;Since leaving the company where I implemented this, they will also be incorporating Algolia as a federated search across multiple sites. It is a great solution and would've worked well with Slate using &lt;a href="https://community.algolia.com/docsearch/" rel="noopener noreferrer"&gt;DocSearch&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Swagger, meet Slate
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27tkb5b4tyvk19uqt2ld.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27tkb5b4tyvk19uqt2ld.jpg" alt="two businessmen shake hands" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
During the development process, the company I was working for was in the midst of building a new major API version. This API version featured Swagger specs for each endpoint (and I was overjoyed for that). This presented an interesting project. &lt;/p&gt;

&lt;p&gt;In the past, every API update was documented by hand. I had done this by reading PHP and others had done this by talking to the engineers or digging through Jira tickets and pull requests. Swagger offered a consistent format, an existing editor that provided documentation and examples, and had an ecosystem to support it. With primary contributions from a product manager that loves code, we ended up using &lt;a href="https://github.com/Mermade/widdershins" rel="noopener noreferrer"&gt;Widdershins&lt;/a&gt; to consume the swagger file and output Slate-compatible markdown. Widdershins also helped create code samples using &lt;a href="http://olado.github.io/doT/index.html" rel="noopener noreferrer"&gt;doT.js&lt;/a&gt; for templating. &lt;/p&gt;

&lt;p&gt;If you're working with Slate or evaluating it and have questions, feel free to ping me regarding them. 🕺&lt;/p&gt;

&lt;p&gt;Thank you to &lt;a href="https://twitter.com/elanatee" rel="noopener noreferrer"&gt;Elana&lt;/a&gt; and &lt;a href="https://twitter.com/TheNickWalsh" rel="noopener noreferrer"&gt;Nick&lt;/a&gt; for helping with final editing on this post.&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>api</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Explain Artifacts (Deployment) Like I'm Five</title>
      <dc:creator>Alyss 💜</dc:creator>
      <pubDate>Thu, 02 Nov 2017 18:11:42 +0000</pubDate>
      <link>https://forem.com/preciselyalyss/explain-artifacts-deployment-like-im-five-48c</link>
      <guid>https://forem.com/preciselyalyss/explain-artifacts-deployment-like-im-five-48c</guid>
      <description></description>
      <category>explainlikeimfive</category>
      <category>discuss</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
