<?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: sarvsav</title>
    <description>The latest articles on DEV Community by sarvsav (@sarvsav).</description>
    <link>https://dev.to/sarvsav</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%2F1560508%2F3240b94b-2e0a-453e-8bb3-f33ca63accd2.jpg</url>
      <title>DEV Community: sarvsav</title>
      <link>https://dev.to/sarvsav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sarvsav"/>
    <language>en</language>
    <item>
      <title>Day007 - Random posts under TIL</title>
      <dc:creator>sarvsav</dc:creator>
      <pubDate>Sun, 20 Oct 2024 19:34:15 +0000</pubDate>
      <link>https://dev.to/sarvsav/day007-random-posts-under-til-442m</link>
      <guid>https://dev.to/sarvsav/day007-random-posts-under-til-442m</guid>
      <description>&lt;h2&gt;
  
  
  Topics:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;GoReleaser&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>go</category>
      <category>goreleaser</category>
      <category>release</category>
      <category>ci</category>
    </item>
    <item>
      <title>Day006 - Random posts under TIL</title>
      <dc:creator>sarvsav</dc:creator>
      <pubDate>Sat, 19 Oct 2024 18:29:22 +0000</pubDate>
      <link>https://dev.to/sarvsav/day006-random-posts-under-til-3gml</link>
      <guid>https://dev.to/sarvsav/day006-random-posts-under-til-3gml</guid>
      <description>&lt;h2&gt;
  
  
  Topics:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Couple approved HomeOps driven by k8s&lt;/li&gt;
&lt;li&gt;LetsEncrypt&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Couple approved HomeOps driven by k8s&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to explore more about k8s and would like to setup at your home, these 2 repos are the good resource.&lt;br&gt;
Wife approved HomeOps driven by Kubernetes and GitOps using Flux - &lt;a href="https://github.com/onedr0p/home-ops" rel="noopener noreferrer"&gt;onedr0p/home-ops&lt;/a&gt;&lt;br&gt;
Husband-approved geeked homelab k8s cluster deployed on 🍏 Mac Minis with Talos Linux; automated via Flux, Renovate and GitHub Actions 🤖 - &lt;a href="https://github.com/buroa/k8s-gitops" rel="noopener noreferrer"&gt;buroa/k8s-gitops&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These repos are updated with latest technologies and follow the gitops flow for easy traceability and maintainability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. LetsEncrypt&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://letsencrypt.org/" rel="noopener noreferrer"&gt;LetsEncrypt&lt;/a&gt;: A nonprofit Certificate Authority providing TLS certificates to 450 million websites.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>k8s</category>
      <category>homeops</category>
      <category>ssl</category>
    </item>
    <item>
      <title>Day005 - Random posts under TIL</title>
      <dc:creator>sarvsav</dc:creator>
      <pubDate>Fri, 18 Oct 2024 21:14:01 +0000</pubDate>
      <link>https://dev.to/sarvsav/day005-random-posts-under-til-1ooc</link>
      <guid>https://dev.to/sarvsav/day005-random-posts-under-til-1ooc</guid>
      <description>&lt;h2&gt;
  
  
  Topics
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Best practices in Python&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Best practices in Python&lt;/strong&gt;&lt;br&gt;
Read this article on &lt;a href="https://levelup.gitconnected.com/stop-making-your-python-projects-like-it-was-15-years-ago-125436b470a5" rel="noopener noreferrer"&gt;Writing Python Scripts in modern way&lt;/a&gt; by Bryson Meiling and it is very insightful. In summary, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;use pyproject.toml instead of requirements.txt.&lt;/li&gt;
&lt;li&gt;Use uv for virtual environment.&lt;/li&gt;
&lt;li&gt;Use type hints.&lt;/li&gt;
&lt;li&gt;Add raises section to the docstrings.&lt;/li&gt;
&lt;li&gt;Use pydantic models.&lt;/li&gt;
&lt;li&gt;Use linter and formatter like Ruff.&lt;/li&gt;
&lt;li&gt;Use pytest.&lt;/li&gt;
&lt;li&gt;Use orjson instead of json.&lt;/li&gt;
&lt;li&gt;Always use fstring.&lt;/li&gt;
&lt;li&gt;Use pathlib instead of os.path.&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://typer.tiangolo.com/" rel="noopener noreferrer"&gt;Typer&lt;/a&gt; instead of argparse.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>coding</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Day004 - Random posts under TIL</title>
      <dc:creator>sarvsav</dc:creator>
      <pubDate>Thu, 17 Oct 2024 19:23:56 +0000</pubDate>
      <link>https://dev.to/sarvsav/day004-random-posts-under-til-52lj</link>
      <guid>https://dev.to/sarvsav/day004-random-posts-under-til-52lj</guid>
      <description>&lt;h2&gt;
  
  
  Topics:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Question: How to write better tests?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Question: How to write better tests?&lt;/strong&gt;&lt;br&gt;
Not much for today. Posted the below question on reddit.&lt;/p&gt;

&lt;p&gt;What if I write unit test or system test in wrong pattern, will it lead to bad codebase too? Learning how to write good tests is also a skill, and it takes time to learn that skill. However, if I need to follow deadlines, I cann't spend much time in learning test skill, so I may write bad pattern while writing test. Will it lead it to double efforts in the future as the code base is also built around that test. Or what is the best way to start a project. For example, chicago vs london unit testing to understand which one is good choice, I need time to learn it. Most of the tests are end up in TDD with just 2 cases to show that I have 100% coverage, though I am not sure if it is true or not. Kindly share your advice on how can I improve it as not testing even writing optimize test is also required.&lt;/p&gt;

</description>
      <category>go</category>
      <category>unittest</category>
      <category>testing</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Day003 - Random posts under TIL</title>
      <dc:creator>sarvsav</dc:creator>
      <pubDate>Wed, 16 Oct 2024 19:48:18 +0000</pubDate>
      <link>https://dev.to/sarvsav/day003-random-posts-under-til-3fh7</link>
      <guid>https://dev.to/sarvsav/day003-random-posts-under-til-3fh7</guid>
      <description>&lt;h2&gt;
  
  
  Topics:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Bookmarks manager&lt;/li&gt;
&lt;li&gt;Observability (from zero to hero)&lt;/li&gt;
&lt;li&gt;Cyphernetes&lt;/li&gt;
&lt;li&gt;Comment all entries in crontab&lt;/li&gt;
&lt;li&gt;starship&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Bookmarks manager&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/sissbruecker/linkding" rel="noopener noreferrer"&gt;Linkding&lt;/a&gt; - A self hosted bookmarks manager with minimal design and easy to setup using &lt;code&gt;docker&lt;/code&gt;. If you are interested to design your own bookmarks manager, then there are tips by user &lt;a href="https://www.reddit.com/user/iheartrms/" rel="noopener noreferrer"&gt;I&amp;lt;3RMS&lt;/a&gt; on writing a good bookmark manager under this &lt;a href="https://www.reddit.com/r/selfhosted/comments/xnas90/turn_github_into_a_bookmark_manager/" rel="noopener noreferrer"&gt;reddit post&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Bookmark dedupe - I often bookmark all of my tabs because I'm afraid of losing them all when Firefox crashes (rare but happens).
2. Automatic weeding out of pages that have gone 404 or domains expired etc or just generally not retrievable anymore.
3. Automatic grouping by topic and sorting by date added.
4. Auto bookmark a tab that has been open for more than x days because it's probably something important to me.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Observability (from zero to hero)&lt;/strong&gt;&lt;br&gt;
Whenever writing a log message, it should answer &lt;code&gt;why&lt;/code&gt; not &lt;code&gt;what&lt;/code&gt;. There is a good write up by Abhishek Veeramalla on observability. It covers broad topics and detailed description about it using &lt;code&gt;Go&lt;/code&gt;. Details can be found &lt;a href="https://github.com/iam-veeramalla/observability-zero-to-hero" rel="noopener noreferrer"&gt;here&lt;/a&gt;. It covers below topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day 1: Introduction to Observability&lt;/li&gt;
&lt;li&gt;Day 2: Prometheus - Setting Up Monitoring&lt;/li&gt;
&lt;li&gt;Day 3: Metrics and PromQL in Prometheus&lt;/li&gt;
&lt;li&gt;Day 4: Instrumentation and Custom Metrics&lt;/li&gt;
&lt;li&gt;Day 5: Logging with EFK Stack&lt;/li&gt;
&lt;li&gt;Day 6: Distributed Tracing with Jaeger&lt;/li&gt;
&lt;li&gt;Day 7: OpenTelemetry – Setting Up Unified Observability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Cyphernetes by Avital Tamir&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/AvitalTamir/cyphernetes" rel="noopener noreferrer"&gt;Cyphernetes&lt;/a&gt; - A Kubernetes Query Language. &lt;/p&gt;

&lt;p&gt;Turn your boring kubectl shell commands&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="c"&gt;# Select all zero-scaled Deployments in all namespaces,&lt;/span&gt;
&lt;span class="c"&gt;# find all Ingresses routing to these deployments -&lt;/span&gt;
&lt;span class="c"&gt;# for each Ingress change it's ingress class to 'inactive':&lt;/span&gt;

kubectl get deployments &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; json | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.items[] | select(.spec.replicas == 0) | \
[.metadata.namespace, .metadata.name, (.spec.selector | to_entries | map("\(.key)=\(.value)") | \
join(","))] | @tsv'&lt;/span&gt; | &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; ns dep selector&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;kubectl get services &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ns&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; json | &lt;span class="se"&gt;\&lt;/span&gt;
jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;--arg&lt;/span&gt; selector &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$selector&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s1"&gt;'.items[] | select((.spec.selector | to_entries | \
map("\(.key)=\(.value)") | join(",")) == $selector) | .metadata.name'&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; svc&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;kubectl get ingresses &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ns&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; json | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;--arg&lt;/span&gt; svc &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$svc&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s1"&gt;'.items[] | \
select(.spec.rules[].http.paths[].backend.service.name == $svc) | .metadata.name'&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
xargs &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; kubectl patch ingress &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ns&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;json &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="s1"&gt;'[{"op": "replace", "path": "/spec/ingressClassName", "value": "inactive"}]'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Into magical declarative syntax&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="c"&gt;# Do the same thing!&lt;/span&gt;

MATCH &lt;span class="o"&gt;(&lt;/span&gt;d:Deployment&lt;span class="o"&gt;)&lt;/span&gt;-&amp;gt;&lt;span class="o"&gt;(&lt;/span&gt;s:Service&lt;span class="o"&gt;)&lt;/span&gt;-&amp;gt;&lt;span class="o"&gt;(&lt;/span&gt;i:Ingress&lt;span class="o"&gt;)&lt;/span&gt;
WHERE d.spec.replicas&lt;span class="o"&gt;=&lt;/span&gt;0
SET i.spec.ingressClassName&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"inactive"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can be installed using below command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/avitaltamir/cyphernetes/cmd/cyphernetes@latest 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Comment all entries in crontab&lt;/strong&gt;&lt;br&gt;
To disable all entries in crontab:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;crontab &lt;span class="nt"&gt;-l&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print "# "$1}'&lt;/span&gt; | crontab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. starship&lt;/strong&gt;&lt;br&gt;
Starship written in rust is the minimal, blazing-fast, and infinitely customizable prompt for any shell! You can download from &lt;a href="https://starship.rs/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. The video by Andrew gives a detailed explanation on configuring the starship.&lt;/p&gt;

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

&lt;p&gt;Thank you for reading and supporting. Kindly like it, if you find it helpful.&lt;/p&gt;

</description>
      <category>observability</category>
      <category>go</category>
      <category>kubernetes</category>
      <category>cli</category>
    </item>
    <item>
      <title>Day002 - Random posts under TIL</title>
      <dc:creator>sarvsav</dc:creator>
      <pubDate>Tue, 15 Oct 2024 19:14:16 +0000</pubDate>
      <link>https://dev.to/sarvsav/day002-random-posts-under-til-j2l</link>
      <guid>https://dev.to/sarvsav/day002-random-posts-under-til-j2l</guid>
      <description>&lt;h2&gt;
  
  
  Topics:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;JSONCrack&lt;/li&gt;
&lt;li&gt;adr-er (architectural decision records)&lt;/li&gt;
&lt;li&gt;Hangman game by Patrik&lt;/li&gt;
&lt;li&gt;Battle Tested Golang&lt;/li&gt;
&lt;li&gt;Change default shell of OpenSSH in Windows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. JSONCrack&lt;/strong&gt;&lt;br&gt;
A wonderful tool for visualizing your JSON data in form of graphs or connected nodes. JSONCrack is written in typescript and available on &lt;a href="https://github.com/AykutSarac/jsoncrack.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Moreover, these graphs are interactive in nature. There is also a VS Code editor extension available on the marked place named &lt;a href="https://marketplace.visualstudio.com/items?itemName=AykutSarac.jsoncrack-vscode" rel="noopener noreferrer"&gt;JSON Crack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. ard-er by Kevin Ard&lt;/strong&gt;&lt;br&gt;
Architectural decision records by Kevin is MIT Licensed and written in &lt;code&gt;Go&lt;/code&gt;. The project is hosted on GitHub named: &lt;a href="https://github.com/therealkevinard/adr-er" rel="noopener noreferrer"&gt;adr-er&lt;/a&gt;. Based on GitHub adr organization:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An Architectural Decision (AD) is a justified design choice that addresses a functional or non-functional requirement that is architecturally significant. An Architecturally Significant Requirement (ASR) is a requirement that has a measurable effect on the architecture and quality of a software and/or hardware system. An Architectural Decision Record (ADR) captures a single AD and its rationale; the collection of ADRs created and maintained in a project constitute its decision log. All these are within the topic of Architectural Knowledge Management (AKM), but ADR usage can be extended to design and other decisions (“any decision record”).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;More details can be found &lt;a href="https://adr.github.io/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This project is good motivation to learn about TUI apps also.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Hang_an ga_e by Patrik&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a tutorial by Patrik on YouTube on how to write a Hangman using Go.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/30l3vYcGt4A"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Battle tested Golang&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go is simple, and maintenance is minimal. It provides backward compatibilty.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Boring is good. Boring is stable. Boring means being able to focus on your work, not on what's different about Go. - Go Blog&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Look at this article about &lt;a href="https://dev.to/eminetto/new-in-go-121-toolchains-5gn0"&gt;Go toolchains by Elton Minetto&lt;/a&gt; that got introduced in Go 1.21.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Change default shell of OpenSSH in Windows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Windows with all the power of bash would be a great experience. By installing &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;GitBash&lt;/a&gt; on windows, we can have most of the default tooling available. However, while doing ssh to the machine using OpenSSH, you will endup in Powershell. To change the default shell to gitbash you need to update the key &lt;code&gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShell&lt;/code&gt; and detailed post can be found &lt;a href="https://github.com/PowerShell/Win32-OpenSSH/wiki/DefaultShell" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading and supporting. Kindly like it, if you find it helpful.&lt;/p&gt;

</description>
      <category>json</category>
      <category>go</category>
      <category>adr</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Day001 - Random posts under TIL</title>
      <dc:creator>sarvsav</dc:creator>
      <pubDate>Mon, 14 Oct 2024 19:27:49 +0000</pubDate>
      <link>https://dev.to/sarvsav/day01-random-posts-on-til-44d1</link>
      <guid>https://dev.to/sarvsav/day01-random-posts-on-til-44d1</guid>
      <description>&lt;h2&gt;
  
  
  Topics:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;LogSeq&lt;/li&gt;
&lt;li&gt;Style Guides&lt;/li&gt;
&lt;li&gt;Bash Commands&lt;/li&gt;
&lt;li&gt;Dazel&lt;/li&gt;
&lt;li&gt;Jenkins and Gerrit (testing latest patchset)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. LogSeq - Notes taking app.&lt;/strong&gt;&lt;br&gt;
Notes taking is a good habit, and I was using &lt;a href="https://obsidian.md/" rel="noopener noreferrer"&gt;obsidian&lt;/a&gt; for a very long time, and today I across a new tool named &lt;a href="https://logseq.com/" rel="noopener noreferrer"&gt;logseq&lt;/a&gt;.&lt;br&gt;
They are complimentary to each other and I will use them for journaling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Style Guides&lt;/strong&gt;&lt;br&gt;
While taking notes, it is a good habit to learn about styling. A note with styles are better to read. It's good to follow one, instead of develop a new one. I would be going to use the below style guide for &lt;code&gt;Go&lt;/code&gt; programming and &lt;code&gt;markdown&lt;/code&gt; for notes taking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://google.github.io/styleguide/docguide/style.html" rel="noopener noreferrer"&gt;Markdown style guide by Google &lt;/a&gt;&lt;br&gt;
&lt;a href="https://google.github.io/styleguide/go/" rel="noopener noreferrer"&gt;Go Programming style guide by Google&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/uber-go/guide/blob/master/style.md" rel="noopener noreferrer"&gt;Go Programming style guide by Uber&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Bash - How to create a file name with today's date and time?&lt;/strong&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;touch&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +&lt;span class="s2"&gt;"%Y_%m_%d_%I_%M_%p"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;.log"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. dazel&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/nadirizr/dazel" rel="noopener noreferrer"&gt;Dazel&lt;/a&gt; - Run Google's bazel inside a docker container via a seamless proxy. Bazel is a nice build tool and with help of dazel, we can easily run it without installing anything. Written in python and easy to install.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Jenkins and Gerrit&lt;/strong&gt;&lt;br&gt;
Scenario: Need to test your pipeline repo code changes in real environment. Add a new parameter named your_awesome_repo_refspec and use this refspec in gitscm while cloning the repo and test it against the rest of the code on your real jenkins agent. You can read the detailed article here on &lt;a href="https://sarvsav.medium.com/jenkins-gerrit-test-your-unmerged-patchstet-before-submitting-d59e0d9776ad" rel="noopener noreferrer"&gt;my medium post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading and supporting. Kindly like it, if you find it helpful.&lt;/p&gt;

</description>
      <category>todayilearned</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
