<?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>DEV Community: Sri-Ni, Thirumalaa Srinivas</title>
    <description>The latest articles on DEV Community by Sri-Ni, Thirumalaa Srinivas (@srini).</description>
    <link>https://dev.to/srini</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%2F211972%2F6edff2ec-71d4-4e67-afdb-f3d963c1a1ff.jpeg</url>
      <title>DEV Community: Sri-Ni, Thirumalaa Srinivas</title>
      <link>https://dev.to/srini</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srini"/>
    <language>en</language>
    <item>
      <title>Delete git tags local and remote.</title>
      <dc:creator>Sri-Ni, Thirumalaa Srinivas</dc:creator>
      <pubDate>Thu, 16 Sep 2021 02:30:20 +0000</pubDate>
      <link>https://dev.to/srini/delete-git-tags-local-and-remote-4ag9</link>
      <guid>https://dev.to/srini/delete-git-tags-local-and-remote-4ag9</guid>
      <description>&lt;h2&gt;
  
  
  These may come in real handy when setting up code commit infrastructure.
&lt;/h2&gt;




&lt;p&gt;I was setting up code commit conventions, change log and release infrastructure in React &amp;amp; Angular codebases. It used the following things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code commit conventions for message formatting.&lt;/li&gt;
&lt;li&gt;Version bumping and change log with &lt;code&gt;standard-release&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Setting up and/or updating &lt;code&gt;README.md&lt;/code&gt; and &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While doing this, many tags were created for testing in the branch. I wanted to avoid having all those future tags in the repo.&lt;/p&gt;

&lt;p&gt;Hence, I needed to do the following.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;List all the tags meant for future releases.&lt;/li&gt;
&lt;li&gt;Delete them in the local branch.&lt;/li&gt;
&lt;li&gt;Delete them in the remote branch.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  LIST
&lt;/h2&gt;

&lt;h3&gt;
  
  
  List all the tags
&lt;/h3&gt;

&lt;p&gt;List all the tags, plus with matching pattern.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;--list&lt;/span&gt;

&lt;span class="c"&gt;# Matching a pattern&lt;/span&gt;
git tag &lt;span class="nt"&gt;--list&lt;/span&gt; &lt;span class="s1"&gt;'v*'&lt;/span&gt;
&lt;span class="c"&gt;# The above matches tags starting with the letter "v"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  DELETE
&lt;/h2&gt;

&lt;p&gt;Delete the tags in the local and remote branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-d&lt;/span&gt; TAG1 TAG2 TAG3

&lt;span class="c"&gt;# or&lt;/span&gt;

git tag &lt;span class="nt"&gt;--delete&lt;/span&gt; TAG1 TAG2 TAG3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remote
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;-d&lt;/span&gt; TAG1 TAG2 TAG3

&lt;span class="c"&gt;# or&lt;/span&gt;

git push origin &lt;span class="nt"&gt;--delete&lt;/span&gt; TAG1 TAG2 TAG3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;The above commands will come in handy in a lot of different situations.&lt;/p&gt;

&lt;p&gt;Best!&lt;/p&gt;

&lt;p&gt;Srini @ RoverHead&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>gittag</category>
      <category>cli</category>
    </item>
    <item>
      <title>[screencast] What is nvm (node version manager)? How to use it? </title>
      <dc:creator>Sri-Ni, Thirumalaa Srinivas</dc:creator>
      <pubDate>Tue, 09 Jun 2020 02:43:35 +0000</pubDate>
      <link>https://dev.to/srini/what-is-nvm-how-to-use-it-2acj</link>
      <guid>https://dev.to/srini/what-is-nvm-how-to-use-it-2acj</guid>
      <description>&lt;h1&gt;
  
  
  nvm is Node Version Manager.
&lt;/h1&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Xy0W0niKPg4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>nvm</category>
      <category>node</category>
      <category>npm</category>
      <category>screencast</category>
    </item>
    <item>
      <title>Angular SSG using Scully (tutorial).</title>
      <dc:creator>Sri-Ni, Thirumalaa Srinivas</dc:creator>
      <pubDate>Sun, 31 May 2020 21:41:43 +0000</pubDate>
      <link>https://dev.to/srini/angular-ssg-using-scully-4m16</link>
      <guid>https://dev.to/srini/angular-ssg-using-scully-4m16</guid>
      <description>&lt;h2&gt;
  
  
  Build a blog or markdown docs SSG within your Angular application using Scully.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://scully.io/" rel="noopener noreferrer"&gt;Scully&lt;/a&gt; is a fairly recent SSG to join the JAMStack landscape.&lt;br&gt;
It's biggest differentiator is that it is built for Angular projects.&lt;/p&gt;
&lt;h1&gt;
  
  
  &lt;a href="https://peaceful-minsky-29a1a1.netlify.app" rel="noopener noreferrer"&gt;&lt;code&gt;Demo with Netlify&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;h3&gt;
  
  
  &lt;a href="https://www.frntndr.com/2020/05/angular-ssg-using-scully./" rel="noopener noreferrer"&gt;Original Blog Post&lt;/a&gt;
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sri-ni" rel="noopener noreferrer"&gt;
        sri-ni
      &lt;/a&gt; / &lt;a href="https://github.com/sri-ni/ng-app-scully-blog-docs" rel="noopener noreferrer"&gt;
        ng-app-scully-blog-docs
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Angular app using Scully to make docs and blog.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;iframe src="https://stackblitz.com/edit/angular-ivy-scully-blog?" width="100%" height="500"&gt;
&lt;/iframe&gt;
&lt;/p&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%2Fi%2F8hsor9ggtpaxk11sju3v.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%2Fi%2F8hsor9ggtpaxk11sju3v.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng add @scullyio/init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Usage
&lt;/h1&gt;

&lt;p&gt;This is based on the type of Angular project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature-driven app
&lt;/h2&gt;

&lt;p&gt;Scully can be useful to add docs or even a blog to it.&lt;br&gt;
Maybe even pre-rendered pieces of the app can provide the speed, improving the User Experience.&lt;/p&gt;
&lt;h2&gt;
  
  
  Website
&lt;/h2&gt;

&lt;p&gt;We'll, your Angular built website gets the blazing speed of SSG pre-rendered HTML and CSS.&lt;/p&gt;
&lt;h1&gt;
  
  
  System Tooling
&lt;/h1&gt;

&lt;p&gt;This is not specific to Angular or Scully.&lt;br&gt;
It is tooling that you would need for modern web development.&lt;/p&gt;
&lt;h2&gt;
  
  
  Install NPX
&lt;/h2&gt;

&lt;p&gt;We need to install npm package runner for binaries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; npx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install NVM
&lt;/h2&gt;

&lt;p&gt;nvm is a version manager for node. It enables switching between various versions per terminal shell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/nvm-sh/nvm#installing-and-updating" rel="noopener noreferrer"&gt;Github installation instructions&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ensure Node version
&lt;/h2&gt;

&lt;p&gt;At the time of this writing, I recommend &lt;code&gt;node&lt;/code&gt; version &lt;code&gt;12.16.3&lt;/code&gt; and it's latest &lt;code&gt;npm&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;nvm &lt;span class="nb"&gt;install &lt;/span&gt;12.16.3

node &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;#12.16.3&lt;/span&gt;

nvm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--latest-npm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install the Angular CLI
&lt;/h2&gt;

&lt;p&gt;Install it in the global scope.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @angular/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a new Angular app
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng new my-scully-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add routing during the interactive CLI prompts.&lt;/p&gt;

&lt;p&gt;Add routing for existing apps if there isn't one in place, using the command below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng generate module app-routing &lt;span class="nt"&gt;--flat&lt;/span&gt; &lt;span class="nt"&gt;--module&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Alternative method
&lt;/h3&gt;

&lt;p&gt;Single line command to use the cli and create the app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-p&lt;/span&gt; @angular/cli@next ng new blogpostdemo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Add Scully
&lt;/h2&gt;

&lt;p&gt;Add the scully package to your app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng add @scullyio/init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Initialize a blog module
&lt;/h2&gt;

&lt;p&gt;Add a blog module to the app.&lt;br&gt;
It will provide some defaults along with creating a &lt;code&gt;blog&lt;/code&gt; folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g @scullyio/init:blog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Initialize any custom markdown module
&lt;/h2&gt;

&lt;p&gt;Alternatively, in order to control the folder, module name, route etc.&lt;br&gt;
you can use the following command and respond to the interactive prompts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g @scullyio/init:markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, I added a &lt;code&gt;docs&lt;/code&gt; module. It will create a &lt;code&gt;docs&lt;/code&gt; folder as a sibling to the &lt;code&gt;blog&lt;/code&gt; folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Angular Material
&lt;/h2&gt;

&lt;p&gt;Let's add the Angular material library for a more compelling visual experience.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng add @angular/material
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Add a new blog post
&lt;/h2&gt;

&lt;p&gt;Add a new blog post and provide the name of the file as a command line option.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g @scullyio/init:post &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;post-title&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use the following command to create new posts.&lt;br&gt;
There will be couple prompts for title and target folder for the post.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g @scullyio/init:post
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, two posts were created for the &lt;code&gt;blog&lt;/code&gt; and &lt;code&gt;docs&lt;/code&gt; each.&lt;/p&gt;

&lt;p&gt;Add the content to your blog or docs posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup the rendering layout for the app
&lt;/h2&gt;

&lt;p&gt;Using the material library added, generate a &lt;code&gt;main-nav&lt;/code&gt; component for the app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng generate @angular/material:navigation main-nav
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setup the markup and typescript as below for the &lt;code&gt;main-nav&lt;/code&gt; component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BreakpointObserver&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Breakpoints&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@angular/cdk/layout&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Observable&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rxjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;shareReplay&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rxjs/operators&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ScullyRoutesService&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@scullyio/ng-lib&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;app-main-nav&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./main-nav.component.html&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;styleUrls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./main-nav.component.scss&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainNavComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;isHandset$&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Observable&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;breakpointObserver&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Breakpoints&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Handset&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;matches&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="nf"&gt;shareReplay&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;breakpointObserver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BreakpointObserver&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;mat-sidenav-container&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sidenav-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;mat-sidenav&lt;/span&gt;
    &lt;span class="na"&gt;#drawer&lt;/span&gt;
    &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sidenav"&lt;/span&gt;
    &lt;span class="na"&gt;fixedInViewport&lt;/span&gt;
    &lt;span class="na"&gt;[attr.role]=&lt;/span&gt;&lt;span class="s"&gt;"(isHandset$ | async) ? 'dialog' : 'navigation'"&lt;/span&gt;
    &lt;span class="na"&gt;[mode]=&lt;/span&gt;&lt;span class="s"&gt;"(isHandset$ | async) ? 'over' : 'side'"&lt;/span&gt;
    &lt;span class="na"&gt;[opened]=&lt;/span&gt;&lt;span class="s"&gt;"(isHandset$ | async) === false"&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;mat-toolbar&amp;gt;&lt;/span&gt;Menu&lt;span class="nt"&gt;&amp;lt;/mat-toolbar&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;mat-nav-list&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;mat-list-item&lt;/span&gt; &lt;span class="na"&gt;[routerLink]=&lt;/span&gt;&lt;span class="s"&gt;"'blog'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Blog&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;mat-list-item&lt;/span&gt; &lt;span class="na"&gt;[routerLink]=&lt;/span&gt;&lt;span class="s"&gt;"'docs'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Docs&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mat-nav-list&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/mat-sidenav&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;mat-sidenav-content&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;mat-toolbar&lt;/span&gt; &lt;span class="na"&gt;color=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt;
        &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;
        &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"Toggle sidenav"&lt;/span&gt;
        &lt;span class="na"&gt;mat-icon-button&lt;/span&gt;
        &lt;span class="na"&gt;(click)=&lt;/span&gt;&lt;span class="s"&gt;"drawer.toggle()"&lt;/span&gt;
        &lt;span class="na"&gt;*ngIf=&lt;/span&gt;&lt;span class="s"&gt;"isHandset$ | async"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mat-icon&lt;/span&gt; &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"Side nav toggle icon"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;menu&lt;span class="nt"&gt;&amp;lt;/mat-icon&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;App Blog Docs&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mat-toolbar&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;router-outlet&amp;gt;&amp;lt;/router-outlet&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/mat-sidenav-content&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/mat-sidenav-container&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setup the Blog component
&lt;/h2&gt;

&lt;p&gt;Let's setup the component to enable rendering of the &lt;code&gt;blog&lt;/code&gt; posts.&lt;/p&gt;

&lt;p&gt;We need the &lt;code&gt;ScullyRoutesService&lt;/code&gt; to be injected into the component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;OnInit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ViewEncapsulation&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ScullyRoutesService&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@scullyio/ng-lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app-blog&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./blog.component.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;styleUrls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./blog.component.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;preserveWhitespaces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;encapsulation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ViewEncapsulation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Emulated&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BlogComponent&lt;/span&gt; &lt;span class="kr"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;OnInit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;ngOnInit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="nx"&gt;routerService&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ScullyRoutesService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To render the listing of the available posts use the injected &lt;code&gt;ScullyRoutesService&lt;/code&gt;. Check the &lt;code&gt;.available$&lt;/code&gt; and iterate them. The &lt;code&gt;route&lt;/code&gt; has multiple properties that can be used.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;&amp;lt;scully-content&amp;gt;&lt;/code&gt; is needed to render the markdown content when the route of the blog is activated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Blog&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;*ngFor=&lt;/span&gt;&lt;span class="s"&gt;"let route of routerService.available$ | async "&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;*ngIf=&lt;/span&gt;&lt;span class="s"&gt;"route.route.indexOf('blog') !== -1"&lt;/span&gt; &lt;span class="na"&gt;[routerLink]=&lt;/span&gt;&lt;span class="s"&gt;"route.route"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{route.title}}&lt;span class="nt"&gt;&amp;lt;/a&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;scully-content&amp;gt;&amp;lt;/scully-content&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure the routing module &lt;code&gt;blog-routing.module.ts&lt;/code&gt; looks similar to the below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;RouterModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@angular/router&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BlogComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./blog.component&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BlogComponent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:slug&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BlogComponent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
  &lt;span class="na"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BlogRoutingModule&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setup the Docs component
&lt;/h2&gt;

&lt;p&gt;Let's setup the component to enable rendering of the &lt;code&gt;docs&lt;/code&gt; posts.&lt;/p&gt;

&lt;p&gt;This would be similar to the setup of the &lt;code&gt;blog&lt;/code&gt; module above.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;OnInit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ViewEncapsulation&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ScullyRoutesService&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@scullyio/ng-lib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;app-docs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;templateUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./docs.component.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;styleUrls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./docs.component.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;preserveWhitespaces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;encapsulation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ViewEncapsulation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Emulated&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DocsComponent&lt;/span&gt; &lt;span class="kr"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;OnInit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;ngOnInit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="nx"&gt;routerService&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ScullyRoutesService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Docs&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;*ngFor=&lt;/span&gt;&lt;span class="s"&gt;"let route of routerService.available$ | async "&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;*ngIf=&lt;/span&gt;&lt;span class="s"&gt;"route.route.indexOf('docs') !== -1"&lt;/span&gt; &lt;span class="na"&gt;[routerLink]=&lt;/span&gt;&lt;span class="s"&gt;"route.route"&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;{{route.title}}&lt;span class="nt"&gt;&amp;lt;/a&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;scully-content&amp;gt;&amp;lt;/scully-content&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure the routing module &lt;code&gt;docs-routing.module.ts&lt;/code&gt; looks similar to the below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;RouterModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@angular/router&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;DocsComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./docs.component&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;:doc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DocsComponent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DocsComponent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
  &lt;span class="na"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;RouterModule&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DocsRoutingModule&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build and Serve
&lt;/h2&gt;

&lt;p&gt;Build the app for development or production.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng build
&lt;span class="c"&gt;# or&lt;/span&gt;
ng build &lt;span class="nt"&gt;--prod&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build the static file assets using the scully script.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run scully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Serve using a web server like &lt;code&gt;http-server&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;&lt;span class="nb"&gt;cd &lt;/span&gt;dist/static

http-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, use the scully serve script.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run scully serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can simplify the above with a consolidated &lt;code&gt;npm&lt;/code&gt; script in &lt;code&gt;package.json&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scully:all"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ng build &amp;amp;&amp;amp; npm run scully &amp;amp;&amp;amp; npm run scully serve"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"scully:all:prod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ng build --prod &amp;amp;&amp;amp; npm run scully &amp;amp;&amp;amp; npm run scully serve"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"scully:build:prod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ng build --prod &amp;amp;&amp;amp; npm run scully"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Additional Notes
&lt;/h2&gt;

&lt;p&gt;As an alternative to interactive prompts, you can use command line options to add a new markdown module.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ng g @scullyio/init:markdown &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;articles &lt;span class="nt"&gt;--slug&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;article  &lt;span class="nt"&gt;--source-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"article"&lt;/span&gt; &lt;span class="nt"&gt;--route&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"article"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Shortcomings...
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The biggest one is I haven't been able to find a way to render the post listing on one route / component, with a drill down method to view the post in separate route / component.&lt;/li&gt;
&lt;li&gt;On the listing, until the post route is triggered, the following content is rendered. This experience could be improved.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sorry, could not parse static page content
This might happen if you are not using the static generated pages.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://scully.io/" rel="noopener noreferrer"&gt;Scully&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/blog/2019/12/17/building-an-angular-jamstack-app-with-scully/" rel="noopener noreferrer"&gt;Building an Angular Jamstack App with Scully&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://owlypixel.com/exploring-blog-feature-with-scully-angular-static-site-generator/" rel="noopener noreferrer"&gt;Exploring Blogging With Scully - the Angular Static Site Generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://snipcart.com/blog/angular-static-site-generator-scully" rel="noopener noreferrer"&gt;Scully Tutorial: A Static Site Generator for Angular Websites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://indepth.dev/scully-the-first-static-site-generator-for-angular/" rel="noopener noreferrer"&gt;Scully, the First Static Site Generator for Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://unicorn-utterances.com/posts/making-an-angular-blog-with-scully/" rel="noopener noreferrer"&gt;Building an Angular Blog With Scully&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>angular</category>
      <category>scully</category>
      <category>ssg</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>Web Bytes - Shadow DOM</title>
      <dc:creator>Sri-Ni, Thirumalaa Srinivas</dc:creator>
      <pubDate>Wed, 30 Oct 2019 02:56:54 +0000</pubDate>
      <link>https://dev.to/srini/web-bytes-shadow-dom-1e87</link>
      <guid>https://dev.to/srini/web-bytes-shadow-dom-1e87</guid>
      <description>&lt;h2&gt;
  
  
  What is Shadow DOM and why is it important?
&lt;/h2&gt;

&lt;p&gt;Web components have a key concept of encapsulation. &lt;br&gt;
Keep the html markup, css styling and js behavior separate from the rest of the page code.&lt;br&gt;
This enables to keep the DOM and code clean.&lt;/p&gt;

&lt;p&gt;The Shadow DOM enables attachment of a hidden DOM structure to a visible page DOM element.&lt;/p&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%2Fwho6ptybuhg1fr37nowi.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%2Fwho6ptybuhg1fr37nowi.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;
  
  
  Photo by Daniel Cheung on Unsplash
&lt;/h6&gt;


&lt;h2&gt;
  
  
  Key Concepts
&lt;/h2&gt;

&lt;p&gt;Shadow DOM tree structure is just like a regular DOM tree, but hidden.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shadow host&lt;/strong&gt;: The visible DOM tree node that connects to the shadow DOM tree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow tree&lt;/strong&gt;: The shadow DOM tree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow boundary&lt;/strong&gt;: The perimeter that separates the visible DOM from the shadown DOM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow root&lt;/strong&gt;: The root node inside the hidden shadow DOM tree.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Illustration
&lt;/h3&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%2Fu2rtvojngismgx3tcnol.png" 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%2Fu2rtvojngismgx3tcnol.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Analogy
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;regular DOM is like the minifigure of stormtrooper&lt;/strong&gt; being tossed up in the air. It's individual pieces like nodes are visible and the tree structure is conspicuous.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;shadow DOM is like the classic action figure style stormtrooper&lt;/strong&gt;. It's nodes are fused and abstracted and the tree structure is not conspicuous.   &lt;/p&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%2F3e4lu819s6azrfw7k7ea.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%2F3e4lu819s6azrfw7k7ea.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;
  
  
  Photo by Daniel Cheung on Unsplash
&lt;/h6&gt;


&lt;h2&gt;
  
  
  Famous Example
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;video&lt;/strong&gt; element has default browser controls, with various controls abstracted from view using the shadow DOM.&lt;/p&gt;
&lt;h2&gt;
  
  
  Practical Applications
&lt;/h2&gt;

&lt;p&gt;Encapsulating styles and behavior helps in developing components and component libraries that can be dropped into and used in various applications.&lt;/p&gt;


&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;Shadow DOM can be created in &lt;code&gt;open&lt;/code&gt; or &lt;code&gt;closed&lt;/code&gt; modes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// can be manipulated by outer context js&lt;/span&gt;
&lt;span class="nx"&gt;Element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attachShadow&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;open&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// or &lt;/span&gt;

&lt;span class="c1"&gt;// cannot be manipulated by outer context js&lt;/span&gt;
&lt;span class="nx"&gt;Element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;attachShadow&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;closed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shadow DOM nodes can be manipulated using regular DOM APIs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;Element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;class&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;some-class&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;Element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Closure
&lt;/h2&gt;

&lt;p&gt;This fast article is intended to clarify and bolster web technology fundamentals.&lt;/p&gt;

&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM" rel="noopener noreferrer"&gt;MDN: Using shadow DOM&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>webdev</category>
      <category>shadowdom</category>
      <category>fundamentals</category>
    </item>
    <item>
      <title>HELP your Code Review</title>
      <dc:creator>Sri-Ni, Thirumalaa Srinivas</dc:creator>
      <pubDate>Thu, 29 Aug 2019 22:11:06 +0000</pubDate>
      <link>https://dev.to/srini/help-your-code-review-i0p</link>
      <guid>https://dev.to/srini/help-your-code-review-i0p</guid>
      <description>&lt;h3&gt;
  
  
  Code Reviews are a wonderful opportunity to connect with your team, technology and product.
&lt;/h3&gt;

&lt;h1&gt;
  
  
  HELP is acronym for Humor, Energy, Learning, Patience
&lt;/h1&gt;

&lt;p&gt;The Version Control Systems that I have been using in recent years are Github (Microsoft) and Bitbucket (Atlassian).&lt;br&gt;
Creating Pull Requests (PRs) to do Code Review has never been easier using the tools from either of these VCS offerings.&lt;/p&gt;

&lt;p&gt;The code review is one those things that are most susceptible to procrastination and de-prioritization. &lt;br&gt;
This can be such a missed opportunity, if one is not aware and awake.&lt;br&gt;
Reviewing code on your next availability helps unblock the feature and the dev team. It should be considered of highest priority.&lt;br&gt;
Setup Agile Dev Process Workflows to help enable this. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is the place to learn, spend energy, practice patience, express humor and connect with your team.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  My PR review process
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Pull branch.
2. Setup locally and run.
3. Happy path features.
4. Test it out thoroughly.
5. Look at the diff in the PR.
6. Read the code.
7. Walk through the code with a debugger.
8. Keep documenting comments in the PR during steps `3-7`.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;h2&gt;
  
  
  Humor
&lt;/h2&gt;

&lt;p&gt;There is enough seriousness to go around in this world.&lt;br&gt;
Using humor tastefully has several advantages. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Humor is Human.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Using self-deprecating humor unites and calms.&lt;/li&gt;
&lt;li&gt;Reduces anxiety and lets out steam.&lt;/li&gt;
&lt;li&gt;It makes you approachable, kind and human.&lt;/li&gt;
&lt;li&gt;People like humor and respond better to you.&lt;/li&gt;
&lt;li&gt;Excellent icebreaker to help connect with the person.&lt;/li&gt;
&lt;li&gt;Solid way to warm up in the code review. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Practical Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Share some honest stream-of-conscious self-deprecating humor.&lt;/li&gt;
&lt;li&gt;Use emojis, for sure!&lt;/li&gt;
&lt;li&gt;Some witty comments within reason. Nudge don't poke or provoke.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Energy
&lt;/h2&gt;

&lt;p&gt;Thank the developer for they have shared the work, onus, load etc.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Be thankful for the work done.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is your chance to show your sincerity, inner energy and raw passion for the work that you do.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Show your thoughtfulness, sincerity and energy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Practical Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Put in honest time (timebox/pomodoro).&lt;/li&gt;
&lt;li&gt;Use phrases like &lt;code&gt;To the best of my knowledge&lt;/code&gt;, &lt;code&gt;given my timebox on this&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Read every single line.&lt;/li&gt;
&lt;li&gt;Be genuine in your thoughts and feedback. &lt;/li&gt;
&lt;li&gt;Provide background, reasons and ask for thoughts. &lt;/li&gt;
&lt;li&gt;Look for solidity and structure.&lt;/li&gt;
&lt;li&gt;Learn to let go wherever you can.&lt;/li&gt;
&lt;li&gt;Share the work load with some code commits (nudges).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Learning
&lt;/h2&gt;

&lt;p&gt;There is always something new to learn, re-learn and learn with fresh perspectives.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learning is Forever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sharing a relevant quote from one of my favorites.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"There's a little bit of asshole in every nice guy, and there's a little bit of genius in every moron." #RDJ&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Practical Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Channel humility and admit to ignorance.&lt;/li&gt;
&lt;li&gt;Use phrases like &lt;code&gt;What am I missing?&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;Keep an eye out for learning something new.&lt;/li&gt;
&lt;li&gt;Identify opportunities to set up standards and automate them (lint rules, pre-commit hooks etc). &lt;/li&gt;
&lt;li&gt;Find opportunities to apply a new methodology, pattern, service or function.&lt;/li&gt;
&lt;li&gt;If you think hard and broad, there is always something to learn.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Patience
&lt;/h2&gt;

&lt;p&gt;No one likes to work with an insensitive person lacking empathy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No such thing as too much patience.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unless you are wired chill and bohemian, being patient is a muscle to develop. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lead with Love.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Practical Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start by placing some good faith.&lt;/li&gt;
&lt;li&gt;Use phrases like &lt;code&gt;Can we give it another go-around&lt;/code&gt;, &lt;code&gt;What are your thoughts on this?&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Think and care about the person. &lt;/li&gt;
&lt;li&gt;Visualize talking to them face-to-face and share thoughts.&lt;/li&gt;
&lt;li&gt;Learn, practice and set yourself to genuinely care for this person.&lt;/li&gt;
&lt;li&gt;Admitting mistakes during review can never be understated.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Hope ya'll find this mindshare useful.
&lt;/h2&gt;

&lt;p&gt;It helps me flush my thoughts and serves as self-reference.&lt;/p&gt;




&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://twitter.com/rdjquotes/status/606024677652185089?lang=en"&gt;"There's a little bit of asshole in every nice guy, and there's a little bit of genius in every moron." #RDJ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.inc.com/anne-gherini/what-a-self-deprecating-sense-of-humor-says-about-your-eq.html"&gt;What a Self-Deprecating Sense of Humor Says About Your EQ&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>codereview</category>
      <category>dev</category>
      <category>pullrequest</category>
    </item>
  </channel>
</rss>
