<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Devops on Miro&#39;s World</title>
    <link>https://miroadamy.com/categories/devops/</link>
    <description>Recent content in Devops on Miro&#39;s World</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© 2026 Miro Adamy</copyright>
    <lastBuildDate>Thu, 01 Oct 2026 00:00:00 +0200</lastBuildDate><atom:link href="https://miroadamy.com/categories/devops/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Catching up: Offsite Backups That Let Me Sleep</title>
      <link>https://miroadamy.com/posts/2026-10-01-offsite-backups-with-restic-and-hetzner/</link>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0200</pubDate>
      
      <guid>https://miroadamy.com/posts/2026-10-01-offsite-backups-with-restic-and-hetzner/</guid>
      <description>&lt;p&gt;Consolidating a digital life onto one NAS has an ugly side effect: everything now burns in the same fire. In the previous posts I described how I moved decades of files, photos and documents onto a single &lt;a href=&#34;https://www.synology.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Synology&lt;/a&gt; box at home. This post is about the second half of that story - getting a copy of it out of the house, encrypted, in a way that lets me sleep.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Picking the provider&#xA;    &lt;div id=&#34;picking-the-provider&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#picking-the-provider&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The first lesson was that where a company keeps its servers and where it is registered are two different things. &lt;a href=&#34;https://www.backblaze.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Backblaze&lt;/a&gt; has European data centers, but it is a Californian company, and the US CLOUD Act follows the company, not the building. For a family archive I wanted a European company in a European data center.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Catching up: Tailscale Everywhere</title>
      <link>https://miroadamy.com/posts/2026-09-29-tailscale-everywhere/</link>
      <pubDate>Tue, 29 Sep 2026 00:00:00 +0200</pubDate>
      
      <guid>https://miroadamy.com/posts/2026-09-29-tailscale-everywhere/</guid>
      <description>&lt;p&gt;Seven devices, two of them NAS boxes, and a laptop that travels with me. For years, reaching any of them from outside the house was a small project every time. In July 2026 I put all of them on one private network, and the day every machine got one name that works from anywhere, half of my runbooks got shorter.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Why a mesh VPN&#xA;    &lt;div id=&#34;why-a-mesh-vpn&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#why-a-mesh-vpn&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;My home fleet is not big, but it is spread out: two MacBooks, an iPhone, an iPad, a &lt;a href=&#34;https://www.apple.com/mac-mini/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Mac mini&lt;/a&gt; that is always on and serves as a small home hub, and two &lt;a href=&#34;https://www.synology.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Synology&lt;/a&gt; NAS boxes, an old one and a new one.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to monitor Bitbucket user and group permissions with API</title>
      <link>https://miroadamy.com/posts/2021-02-18-bitbucket-user-groups/</link>
      <pubDate>Thu, 18 Feb 2021 13:00:00 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2021-02-18-bitbucket-user-groups/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;How to manage users and groups in Bitbucket&#xA;    &lt;div id=&#34;how-to-manage-users-and-groups-in-bitbucket&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-to-manage-users-and-groups-in-bitbucket&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Use case&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;p&gt;I want to maintain users and groups and their access to repositories in an organization in Bitbucket.&#xA;To make sure I do not miss newly changed admin access, I want to use the Bitbucket API to retrieve the list of permissions on repository basis and on user/group bases.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to mirror Github and Bitbucket repositories</title>
      <link>https://miroadamy.com/posts/2021-02-17-mirroring-repos/</link>
      <pubDate>Wed, 17 Feb 2021 13:00:00 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2021-02-17-mirroring-repos/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Mirroring large number of GitHub or Bitbucket repositories&#xA;    &lt;div id=&#34;mirroring-large-number-of-github-or-bitbucket-repositories&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#mirroring-large-number-of-github-or-bitbucket-repositories&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Use case&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;p&gt;I want to create local clone of a large number of repositories from an organization in GitHub / Bitbucket.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Assumptions&#xA;    &lt;div id=&#34;assumptions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#assumptions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;user has SSH key registered with the GH / BB - can clone using ssh protocol&lt;/li&gt;&#xA;&lt;li&gt;user has successfully cloned at least one repo from command line before (the /etc/hosts contains host entries for BB and GH)&lt;/li&gt;&#xA;&lt;li&gt;user has modern version of Python 3 installed (3.6 or better)&lt;/li&gt;&#xA;&lt;li&gt;user has local installation of a reasonably modern Git&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Steps&#xA;    &lt;div id=&#34;steps&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#steps&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;First I use the &lt;code&gt;./bb-repo-links.sh&lt;/code&gt; and &lt;code&gt;./gh-repo-links.sh&lt;/code&gt; to generate list of repositories.&#xA;See these blog articles: &lt;a href=&#34;https://miroadamy.com/posts/2021-02-15-bitbucket-list-repos/&#34; &gt;How to list repositories in Bitbucket&lt;/a&gt; and &lt;a href=&#34;https://miroadamy.com/posts/2021-02-16-github-list-repos/&#34; &gt;How to list repositories in github&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to list Github repositories and users</title>
      <link>https://miroadamy.com/posts/2021-02-16-github-list-repos/</link>
      <pubDate>Tue, 16 Feb 2021 13:00:00 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2021-02-16-github-list-repos/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;How to list repositories in GitHub&#xA;    &lt;div id=&#34;how-to-list-repositories-in-github&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-to-list-repositories-in-github&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;p&gt;I want to maintain repositories in an organization in GitHub.  To make sure I do not miss newly added ones,&#xA;I want to use API access to retrieve the list of repositories in the organization.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Setup&#xA;    &lt;div id=&#34;setup&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#setup&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;GitHub requires a token to access the API.  This token is stored in an environment variable&#xA;&lt;code&gt;github_token&lt;/code&gt; and can be generated in the user profile section - settings - developer settings.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to list Bitbucket repositories and users</title>
      <link>https://miroadamy.com/posts/2021-02-15-bitbucket-list-repos/</link>
      <pubDate>Mon, 15 Feb 2021 13:00:00 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2021-02-15-bitbucket-list-repos/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;How to list repositories in Bitbucket&#xA;    &lt;div id=&#34;how-to-list-repositories-in-bitbucket&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-to-list-repositories-in-bitbucket&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Use case&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;p&gt;I want to maintain repositories in an organization in Bitbucket. To make sure I do not miss newly added ones,&#xA;I want to use API access to retrieve the list of all repositories in the organization.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Setup&#xA;    &lt;div id=&#34;setup&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#setup&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Bitbucket requires a username and password to access the API. This information is stored in the environment variables&#xA;&lt;code&gt;BBUSER&lt;/code&gt; and &lt;code&gt;BBPASSWORD&lt;/code&gt;. The &lt;code&gt;BBPASSWORD&lt;/code&gt; should be an access token / app password defined in the &lt;code&gt;App passwords&lt;/code&gt; section&#xA;of the user settings:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Documenting multi-repository projects</title>
      <link>https://miroadamy.com/posts/2020-11-23-documentation-multi-repo/</link>
      <pubDate>Mon, 23 Nov 2020 13:00:00 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2020-11-23-documentation-multi-repo/</guid>
      <description>&lt;p&gt;This blog post is a de-powerpointized version of a brownbag session in Pivotree. The goal&#xA;was to increase awareness of tools and techniques for information / knowledge capture in the projects, specifically focusing on producing quality documentation so that everybody in project can access it and contribute to it,&#xA;not only developers. We wanted to look at the tools that would allow engineers keep using their tools of trade&#xA;(without impact on developer’s productivity) and at the same time make the information available without&#xA;duplication of work to increase re-findability of information.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Reference Architecture as a Code</title>
      <link>https://miroadamy.com/posts/2020-08-07-architecture-as-a-code/</link>
      <pubDate>Mon, 10 Aug 2020 13:00:00 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2020-08-07-architecture-as-a-code/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Many shapes of Architecture&#xA;    &lt;div id=&#34;many-shapes-of-architecture&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#many-shapes-of-architecture&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;According to the &lt;a href=&#34;https://martinfowler.com/architecture/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;wise people&lt;/a&gt;, an architecture is the shared understanding that the expert developers/system builders/maintainers have of the system design. It&amp;rsquo;s purpose is to maximize the&#xA;probability that the decisions you have to make early in a project are the right ones. It is sort of a blueprint for the future system and captures parts, relations, boundaries, constraints.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Accessing Terraform cloud Module registry programatically</title>
      <link>https://miroadamy.com/posts/2020-05-14-accessing-tfcloud-api/</link>
      <pubDate>Thu, 14 May 2020 21:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2020-05-14-accessing-tfcloud-api/</guid>
      <description>&lt;p&gt;First step is to get your personal token. Log on to Terraform Cloud, go to &lt;a href=&#34;https://app.terraform.io/app/settings/tokens&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://app.terraform.io/app/settings/tokens&lt;/a&gt; and generate new token.&lt;/p&gt;&#xA;&lt;p&gt;Note: it is important to save the token to safe place - this is only time you will see it.&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;token&#34;&#xA;    src=&#34;https://miroadamy.com/images/terraform-token.png&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Export the token:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;TFE_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;THE-TOKEN-VALUE&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The documentation for Terraform API is &lt;a href=&#34;https://www.terraform.io/docs/cloud/api/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;It is OK documentation but not the greatest one, however. There are two versions of the API - v1 and v2 and this is not clearly described. It could also used better examples.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Using SSH keys with multiple Bitbucket accounts</title>
      <link>https://miroadamy.com/posts/2020-05-12-bitbucket-keys/</link>
      <pubDate>Tue, 12 May 2020 22:34:38 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2020-05-12-bitbucket-keys/</guid>
      <description>&lt;p&gt;I have been using Bitbucket since 2012, long before my company moved from in-house hosted server running Gitolite and in-house instances of FishEye and Crucible to cloud based source control on Bitbucket Cloud. As legacy I was using my personal login with my gmail account as my Bitbucket identity.&lt;/p&gt;&#xA;&lt;p&gt;With merge of 3 companies in 2018 and rebranding as Pivotree, we are in process of streamlining the identity management and using SSO for identification. Time has come to split my personal identity and work identity.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>History of Faith</title>
      <link>https://miroadamy.com/posts/2020-03-31-history-of-faith/</link>
      <pubDate>Tue, 31 Mar 2020 11:24:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2020-03-31-history-of-faith/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;The beginnings&#xA;    &lt;div id=&#34;the-beginnings&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#the-beginnings&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Once upon a time - actually, in late 2017-early 2018 - there was a QA/DevOps engineer named José who liked containers, Docker and worked for a company named Thinkwrap (that soon would become Pivotree) in Valencia, Spain.&lt;/p&gt;&#xA;&lt;p&gt;José was responsible (among other things) for setting up integration and QA environments for multiple Hybris projects. Such environment, when being built in traditional way (from physical servers or VMs), normally requires quite a few pieces:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Kubectl client and server version mismatch</title>
      <link>https://miroadamy.com/posts/2020-01-19-kubectl-version/</link>
      <pubDate>Sun, 19 Jan 2020 11:12:38 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2020-01-19-kubectl-version/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Accessing Rancher cluster&#xA;    &lt;div id=&#34;accessing-rancher-cluster&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#accessing-rancher-cluster&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;I was doing update on Kubernetes cluster I had not touch in a while when I noticed weird behaviour:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the output of get command was incomplete&lt;/li&gt;&#xA;&lt;li&gt;the -o wide option had no effect on the command output&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;(IP addresses are masked)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  .kube git:(master) ✗ kubectl --kubeconfig dropship-dev-uat get nodes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAME                                             AGE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip-172-xx-xx-xx.ca-central-1.compute.internal    613d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip-172-xx-xx-xx.ca-central-1.compute.internal    628d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip-172-xx-xx-xx.ca-central-1.compute.internal    558d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;and&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Rancher CLI vs kubectl</title>
      <link>https://miroadamy.com/posts/2020-01-18-rancher-cli/</link>
      <pubDate>Sat, 18 Jan 2020 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2020-01-18-rancher-cli/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Accessing Rancher cluster&#xA;    &lt;div id=&#34;accessing-rancher-cluster&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#accessing-rancher-cluster&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;After creation, you can access the K8s cluster running Rancher by saving the config file available from the console and using standard &lt;code&gt;kubectl&lt;/code&gt; command&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://miroadamy.com/images/rancher-console-1.png&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl --kubeconfig ./quickstart.kubeconfig get pods --all-namespaces&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAMESPACE       NAME                                      READY   STATUS      RESTARTS   AGE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cattle-system   cattle-cluster-agent-5c98cb979f-bbhxf     1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cattle-system   cattle-node-agent-dwnxk                   1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cattle-system   kube-api-auth-d4zgq                       1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ingress-nginx   default-http-backend-67cf578fc4-grmsw     1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ingress-nginx   nginx-ingress-controller-mpnmb            1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     canal-jw85q                               2/2     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     coredns-5c59fd465f-47q5z                  1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     coredns-autoscaler-d765c8497-sm5xf        1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     metrics-server-64f6dffb84-bp864           1/1     Running     0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     rke-coredns-addon-deploy-job-95qnk        0/1     Completed   0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     rke-ingress-controller-deploy-job-brv7w   0/1     Completed   0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     rke-metrics-addon-deploy-job-tvt89        0/1     Completed   0          5d23h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kube-system     rke-network-plugin-deploy-job-7rqcr       0/1     Completed   0          5d23h&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The same information (and much more) is available using rancher CLI.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>On harvesting credit card numbers and passwords</title>
      <link>https://miroadamy.com/posts/2019-12-11-hackernoon/</link>
      <pubDate>Wed, 11 Dec 2019 21:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2019-12-11-hackernoon/</guid>
      <description>&lt;p&gt;This is the scariest thing I have read since spring 2018:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;written by @david.gilbertson.&lt;/p&gt;&#xA;&lt;p&gt;It pretty sure what he describes is actually happening, has been happening before he described it and will be happening going on - just obviously not in the named module. The ecosystem of Node modules is so vast and so unstable that considerable number of project do not do enough to catch behaviour like this.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building Hugo as well on GitLab pages</title>
      <link>https://miroadamy.com/posts/2019-11-23-gitlab-hugo/</link>
      <pubDate>Sat, 23 Nov 2019 22:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2019-11-23-gitlab-hugo/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Parallel building challenges&#xA;    &lt;div id=&#34;parallel-building-challenges&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#parallel-building-challenges&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Unlike Github, Gitlab considers Hugo blogs first class citizens and does not impose any restrictions on repo naming.&lt;/p&gt;&#xA;&lt;p&gt;I had 3 challenges to overcome related to co-existence of GH and GL versions:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;I need to use same repo for both GH and GL&lt;/li&gt;&#xA;&lt;li&gt;the submodule link for &lt;code&gt;public&lt;/code&gt; does not work on GL&lt;/li&gt;&#xA;&lt;li&gt;the site root is different - I have no custom domain forward for GitLab&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Using same repo&#xA;    &lt;div id=&#34;using-same-repo&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#using-same-repo&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To separate the GH and GL, I have added 2 remotes to repo and special branch &lt;code&gt;gitlab-pages&lt;/code&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Current Hugo setup on Github Pages</title>
      <link>https://miroadamy.com/posts/2019-11-22-hugo-setup/</link>
      <pubDate>Fri, 22 Nov 2019 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2019-11-22-hugo-setup/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;How does the blog setup and publishing work&#xA;    &lt;div id=&#34;how-does-the-blog-setup-and-publishing-work&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-does-the-blog-setup-and-publishing-work&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Before I forget, here is how the current configuration works.&lt;/p&gt;&#xA;&lt;p&gt;There are two repositories at play:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;source repo - &lt;a href=&#34;https://github.com/miroadamy/miroadamy.com&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/miroadamy/miroadamy.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;github pages repo (== GHPR) - &lt;a href=&#34;https://github.com/miroadamy/miroadamy.github.io&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/miroadamy/miroadamy.github.io&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The blog source repo contains only source files (.md, static media etc).&#xA;This repo has usual submodules under the &lt;code&gt;/themes&lt;/code&gt; - e.g. &lt;code&gt;/themes/even&lt;/code&gt; which is one currently used.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>From Jekyll to Hugo</title>
      <link>https://miroadamy.com/posts/2019-11-20-from-jekyll-to-hugo/</link>
      <pubDate>Wed, 20 Nov 2019 23:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2019-11-20-from-jekyll-to-hugo/</guid>
      <description>&lt;p&gt;I have decided to consolidate all piecemeal versions of my blogpost uder one roof and at the same to do these four things&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;technology upgrade - from Jekyll to Hugo&lt;/li&gt;&#xA;&lt;li&gt;visual refresh of the page&lt;/li&gt;&#xA;&lt;li&gt;review tagging and categorization&lt;/li&gt;&#xA;&lt;li&gt;merge hidden posts from Wikis to one place&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Why Hugo replaced Jekyll&#xA;    &lt;div id=&#34;why-hugo-replaced-jekyll&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#why-hugo-replaced-jekyll&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The version 3 of my blog (see below for a bit of history) has been hosted on &lt;a href=&#34;https://pages.github.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Github pages&lt;/a&gt; and using the default static site generators - &lt;a href=&#34;https://jekyllrb.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jekyll&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>All Day DevOps 2019</title>
      <link>https://miroadamy.com/posts/2019-11-07-all-day-devops/</link>
      <pubDate>Thu, 07 Nov 2019 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2019-11-07-all-day-devops/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;All Day DevOps 2019 - Notes&#xA;    &lt;div id=&#34;all-day-devops-2019---notes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#all-day-devops-2019---notes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;I have attended the All Day Devops - &lt;a href=&#34;https://www.alldaydevops.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://www.alldaydevops.com/&lt;/a&gt; on 06 Nov 2019 - an event that runs for 24 hours and has multiple tracks of content organized in 4 blocks.&lt;/p&gt;&#xA;&lt;p&gt;The tracks:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Keynotes&lt;/li&gt;&#xA;&lt;li&gt;Cultural Change&lt;/li&gt;&#xA;&lt;li&gt;DevSecOps&lt;/li&gt;&#xA;&lt;li&gt;SRE&lt;/li&gt;&#xA;&lt;li&gt;CI/CD&lt;/li&gt;&#xA;&lt;li&gt;Everything Cloud&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The complete list is here: &lt;a href=&#34;https://www.alldaydevops.com/2019-live-schedule&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://www.alldaydevops.com/2019-live-schedule&lt;/a&gt; - the play button points to the block video.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>AWS Inspection</title>
      <link>https://miroadamy.com/posts/2019-10-03-aws-inspection/</link>
      <pubDate>Thu, 03 Oct 2019 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2019-10-03-aws-inspection/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Bunch of one-liners for AWS&#xA;    &lt;div id=&#34;bunch-of-one-liners-for-aws&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bunch-of-one-liners-for-aws&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;.. so that I find them faster next time&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws --output=json ec2 describe-instances | jq -r &amp;#39;.Reservations[].Instances[] | &amp;#34;\n&amp;#34; + .InstanceId + &amp;#34;  :  &amp;#34; + .KeyName + &amp;#34;  =&amp;gt;  &amp;#34; + .PublicIpAddress + &amp;#34; | &amp;#34; + .PublicDnsName,  .Tags[] as $tt | &amp;#34;  ... &amp;#34; + $tt.Key +&amp;#34;:&amp;#34;+ $tt.Value&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-instances | jq &amp;#39;.Reservations[].Instances[] | .InstanceId + &amp;#34;  :  &amp;#34; + .Placement.AvailabilityZone + &amp;#34;  =&amp;gt;  &amp;#34; + .PublicIpAddress&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws iam list-group-policies --group-name kops&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-vpcs | jq &amp;#39;.Vpcs[] | .VpcId + &amp;#34; &amp;#34; + .CidrBlock&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws iam list-users | jq &amp;#39;.Users[].UserName&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws --output=json --region=ca-central-1 ec2 describe-vpcs | jq -r &amp;#39;.Vpcs[] | .VpcId + &amp;#34; &amp;#34; + .CidrBlock,.Tags[] as $tt | &amp;#34;  .. &amp;#34; + $tt.Key +&amp;#34;:&amp;#34;+$tt.Value&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-vpcs | jq -e --raw-output &amp;#39;.Vpcs[] | &amp;#34;\n&amp;#34; + .VpcId + &amp;#34;  :  &amp;#34; + .CidrBlock,  .Tags[] as $tt | &amp;#34;  ... &amp;#34; + $tt.Key +&amp;#34;:&amp;#34;+ $tt.Value&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-subnets | jq -e --raw-output &amp;#39;.Subnets[] | &amp;#34;\n&amp;#34; + .VpcId + &amp;#34;  :  &amp;#34; + .CidrBlock +&amp;#34; : &amp;#34; + .AvailabilityZone,  .Tags[] as $tt | &amp;#34;  ... &amp;#34; + $tt.Key +&amp;#34;:&amp;#34;+ $tt.Value&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 authorize-security-group-ingress --group-id sg-bfa45bd4 --protocol tcp --port 31672 --cidr 204.101.219.210/31&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;How many instances of each type do I have, and in what states?&#xA;    &lt;div id=&#34;how-many-instances-of-each-type-do-i-have-and-in-what-states&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-many-instances-of-each-type-do-i-have-and-in-what-states&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Considering buying reserved instances or thinking about migrating to a newly introduced class?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-instances | jq -r &amp;#34;[[.Reservations[].Instances[]|{ state: .State.Name, type: .InstanceType }]|group_by(.state)|.[]|{state: .[0].state, types: [.[].type]|[group_by(.)|.[]|{type: .[0], count: ([.[]]|length)}] }]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What CIDRs have Ingress Access to which Ports?&#xA;    &lt;div id=&#34;what-cidrs-have-ingress-access-to-which-ports&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-cidrs-have-ingress-access-to-which-ports&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# This is helpful when you need to perform a survey or audit of your system boundaries. While such a task isn’t ever “easy”, it can go more smoothly with with a summary:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-security-groups | jq &amp;#39;[ .SecurityGroups[].IpPermissions[] as $a | { &amp;#34;ports&amp;#34;: [($a.FromPort|tostring),($a.ToPort|tostring)]|unique, &amp;#34;cidr&amp;#34;: $a.IpRanges[].CidrIp } ] | [group_by(.cidr)[] | { (.[0].cidr): [.[].ports|join(&amp;#34;-&amp;#34;)]|unique }] | add&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Which Services am I using?&#xA;    &lt;div id=&#34;which-services-am-i-using&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#which-services-am-i-using&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ce get-cost-and-usage --time-period Start=2019-08-01,End=2019-08-31  --granularity MONTHLY --metrics UsageQuantity --group-by Type=DIMENSION,Key=SERVICE | jq &amp;#39;.ResultsByTime[].Groups[] | select(.Metrics.UsageQuantity.Amount &amp;gt; 0) | .Keys[0]&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# How much they cost&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ce get-cost-and-usage --time-period Start=2019-08-01,End=2019-08-31  --granularity MONTHLY --metrics USAGE_QUANTITY BLENDED_COST  --group-by Type=DIMENSION,Key=SERVICE | jq &amp;#39;[ .ResultsByTime[].Groups[] | select(.Metrics.BlendedCost.Amount &amp;gt; &amp;#34;0&amp;#34;) | { (.Keys[0]): .Metrics.BlendedCost } ] | sort_by(.Amount) | add&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Instances running&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-instances | jq -r &amp;#34;[[.Reservations[].Instances[]|{ state: .State.Name, type: .InstanceType }]|group_by(.state)|.[]|{state: .[0].state, types: [.[].type]|[group_by(.)|.[]|{type: .[0], count: ([.[]]|length)}] }]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;CIDR access to ports&#xA;    &lt;div id=&#34;cidr-access-to-ports&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cidr-access-to-ports&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws ec2 describe-security-groups | jq &amp;#39;[ .SecurityGroups[].IpPermissions[] as $a | { &amp;#34;ports&amp;#34;: [($a.FromPort|tostring),($a.ToPort|tostring)]|unique, &amp;#34;cidr&amp;#34;: $a.IpRanges[].CidrIp } ] | [group_by(.cidr)[] | { (.[0].cidr): [.[].ports|join(&amp;#34;-&amp;#34;)]|unique }] | add&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Lambda runtimes&#xA;    &lt;div id=&#34;lambda-runtimes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#lambda-runtimes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws lambda list-functions | jq &amp;#34;.Functions | group_by(.Runtime)|[.[]|{ runtime:.[0].Runtime, functions:[.[]|.FunctionName] }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Memory size&#xA;    &lt;div id=&#34;memory-size&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#memory-size&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws lambda list-functions | jq &amp;#34;.Functions | group_by(.Runtime)|[.[]|{ (.[0].Runtime): [.[]|{ name: .FunctionName, timeout: .Timeout, memory: .MemorySize }] }]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Lambda Environment variables&#xA;    &lt;div id=&#34;lambda-environment-variables&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#lambda-environment-variables&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws lambda list-functions | jq -r &amp;#39;[.Functions[]|{name: .FunctionName, env: .Environment.Variables}]|.[]|select(.env|length &amp;gt; 0)&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description>
      
    </item>
    
    <item>
      <title>Gitbits</title>
      <link>https://miroadamy.com/posts/2019-01-14-gitbits/</link>
      <pubDate>Mon, 14 Jan 2019 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2019-01-14-gitbits/</guid>
      <description>&lt;p&gt;Two small utilities I have places into &lt;code&gt;~/bin&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;git-attic&#xA;    &lt;div id=&#34;git-attic&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#git-attic&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Source: &lt;a href=&#34;https://github.com/maximeh/dotfiles/blob/master/common/.bin/git-attic&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/maximeh/dotfiles/blob/master/common/.bin/git-attic&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# git-attic [-M] [PATH] - list deleted files of Git repositories&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Use -M to not show renamed files, and other git-log options as you like.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git log --raw --no-renames --date=short --format=&amp;#34;%h %cd&amp;#34; &amp;#34;$@&amp;#34; |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  awk &amp;#39;/^[0-9a-f]/ { commit=$1; date=$2 }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       /^:/ &amp;amp;&amp;amp; $5 == &amp;#34;D&amp;#34; { print date, commit &amp;#34;^:&amp;#34; $6 }&amp;#39; |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  less&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Example&#xA;    &lt;div id=&#34;example&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#example&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  kubernetes-the-hard-way git:(master) ✗ git log --raw --no-renames --date=short --format=&amp;#34;%h %cd&amp;#34; &amp;#34;$@&amp;#34; |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  awk &amp;#39;/^[0-9a-f]/ { commit=$1; date=$2 }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       /^:/ &amp;amp;&amp;amp; $5 == &amp;#34;D&amp;#34; { print date, commit &amp;#34;^:&amp;#34; $6 }&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-20 374e8d9^:docs/using-rst/pdp-template-rst.rst&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/admin-csr.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/admin-key.pem&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/admin.csr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/admin.pem&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/ca-config.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/ca-csr.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/ca-key.pem&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/ca.csr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/ca.pem&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2019-11-17 7911114^:src/certificates/copy-certificates-to-servers.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;git trail&#xA;    &lt;div id=&#34;git-trail&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#git-trail&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;I cannot remember where is this one from :-(&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>AWS Certified Developer - Associate</title>
      <link>https://miroadamy.com/posts/2018-11-28-aws/</link>
      <pubDate>Sun, 28 Oct 2018 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2018-11-28-aws/</guid>
      <description>&lt;p&gt;Got the second certification today&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.certmetrics.com/amazon/public/badge.aspx?i=2&amp;amp;t=c&amp;amp;d=2018-11-28&amp;amp;ci=AWS00261816&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://www.certmetrics.com/amazon/public/badge.aspx?i=2&amp;t=c&amp;d=2018-11-28&amp;ci=AWS00261816&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://miroadamy.com/images/aws-dev.png&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Useful tool for Dockerhub</title>
      <link>https://miroadamy.com/posts/2018-10-24-dockerhub-tool/</link>
      <pubDate>Wed, 24 Oct 2018 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2018-10-24-dockerhub-tool/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Skopeo&#xA;    &lt;div id=&#34;skopeo&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#skopeo&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;I have stumbled upon this tool: &lt;a href=&#34;https://github.com/containers/skopeo&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/containers/skopeo&lt;/a&gt; - command line tools for manipulation with Docker images and Docker image registries.&lt;/p&gt;&#xA;&lt;p&gt;It can work with OCI images as well as the original Docker v2 images.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Installation&#xA;    &lt;div id=&#34;installation&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#installation&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install skopeo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Usage&#xA;    &lt;div id=&#34;usage&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#usage&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  deploy-2018-10-24 skopeo --override-os=linux inspect docker://docker.io/fedora&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Name&amp;#34;: &amp;#34;docker.io/library/fedora&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Digest&amp;#34;: &amp;#34;sha256:b41cd083421dd7aa46d619e958b75a026a5d5733f08f14ba6d53943d6106ea6d&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;RepoTags&amp;#34;: [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;20&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;21&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;22&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;23&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;24&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;25&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;26-modular&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;26&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;27&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;28&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;29&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;branched&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;heisenbug&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;latest&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;modular&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;rawhide&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Created&amp;#34;: &amp;#34;2018-09-07T19:20:02.809176076Z&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;DockerVersion&amp;#34;: &amp;#34;17.06.2-ce&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Labels&amp;#34;: null,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Architecture&amp;#34;: &amp;#34;amd64&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Os&amp;#34;: &amp;#34;linux&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;Layers&amp;#34;: [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;sha256:565884f490d9ec697e519c57d55d09e268542ef2c1340fd63262751fa308f047&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;It works with protected repos as well - as long as creds are provided&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>AWS Certified Solution Architect - Associate</title>
      <link>https://miroadamy.com/posts/2018-06-07-aws/</link>
      <pubDate>Thu, 07 Jun 2018 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2018-06-07-aws/</guid>
      <description>&lt;p&gt;Step 1 done.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.certmetrics.com/amazon/public/badge.aspx?i=1&amp;amp;t=c&amp;amp;d=2018-06-06&amp;amp;ci=AWS00261816&amp;amp;fbclid=IwAR2K8B4FyKWVstBZXCXn5GhYX9iRyB4U2q8l2ROrM_16m-rlclioalnp0O4&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://www.certmetrics.com/amazon/public/badge.aspx?i=1&amp;t=c&amp;d=2018-06-06&amp;ci=AWS00261816&amp;fbclid=IwAR2K8B4FyKWVstBZXCXn5GhYX9iRyB4U2q8l2ROrM_16m-rlclioalnp0O4&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://miroadamy.com/images/aws-csa-a.png&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;And now dilemma: go deeper into AWS or look around what Google and Azure have to offer ?&lt;/p&gt;&#xA;&lt;p&gt;So many clouds, so little time &amp;hellip;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Blog of the day - Tapas Forever</title>
      <link>https://miroadamy.com/posts/2018-06-03-botd/</link>
      <pubDate>Thu, 07 Jun 2018 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2018-06-03-botd/</guid>
      <description>&lt;p&gt;Fellow Canadian describes his path to Spain&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tapasforever.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://tapasforever.com/&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Creating Kubernetes Cluster in AWS from scratch with kops</title>
      <link>https://miroadamy.com/posts/2018-05-07-k8s-from-scratch-kops/</link>
      <pubDate>Mon, 07 May 2018 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2018-05-07-k8s-from-scratch-kops/</guid>
      <description>&lt;p&gt;This describes creation of K8s cluster in AWS environment from scratch as done for microservices based eCommerce project.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pre-requisites&#xA;    &lt;div id=&#34;pre-requisites&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pre-requisites&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;AWS account access - IAM with Admin privileges&lt;/li&gt;&#xA;&lt;li&gt;AWS CLI installed - &lt;a href=&#34;https://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;CLI credentials (secret key + api Key) - &lt;a href=&#34;https://docs.aws.amazon.com/cli/latest/reference/iam/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://docs.aws.amazon.com/cli/latest/reference/iam/index.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Kubectl and Kops local install&#xA;** see &lt;a href=&#34;https://github.com/kubernetes/kops&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/kubernetes/kops&lt;/a&gt; and &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Test of access&#xA;    &lt;div id=&#34;test-of-access&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#test-of-access&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  etc git:(feature/kubernetes) aws --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aws-cli/1.11.180 Python/3.6.4 Darwin/17.5.0 botocore/1.7.38&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  etc git:(feature/kubernetes) kubectl version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Client Version: version.Info{Major:&amp;#34;1&amp;#34;, Minor:&amp;#34;10&amp;#34;, GitVersion:&amp;#34;v1.10.1&amp;#34;, GitCommit:&amp;#34;d4ab47518836c750f9949b9e0d387f20fb92260b&amp;#34;, GitTreeState:&amp;#34;clean&amp;#34;, BuildDate:&amp;#34;2018-04-13T22:27:55Z&amp;#34;, GoVersion:&amp;#34;go1.9.5&amp;#34;, Compiler:&amp;#34;gc&amp;#34;, Platform:&amp;#34;darwin/amd64&amp;#34;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Server Version: version.Info{Major:&amp;#34;1&amp;#34;, Minor:&amp;#34;9&amp;#34;, GitVersion:&amp;#34;v1.9.3&amp;#34;, GitCommit:&amp;#34;d2835416544f298c919e2ead3be3d0864b52323b&amp;#34;, GitTreeState:&amp;#34;clean&amp;#34;, BuildDate:&amp;#34;2018-02-07T11:55:20Z&amp;#34;, GoVersion:&amp;#34;go1.9.2&amp;#34;, Compiler:&amp;#34;gc&amp;#34;, Platform:&amp;#34;linux/amd64&amp;#34;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  etc git:(feature/kubernetes) kops version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Version 1.9.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  etc git:(feature/kubernetes) aws --profile twfulfill-miro iam list-users | jq &amp;#39;.Users[].UserName&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.. DELETED ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;twfulfillment.prod.miro.adamy&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;....&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Set the environment variables&#xA;    &lt;div id=&#34;set-the-environment-variables&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#set-the-environment-variables&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;These will be used by subsequent kops / aws commands&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>VisualVM inside Docker container</title>
      <link>https://miroadamy.com/posts/2017-11-23-visual-vm/</link>
      <pubDate>Thu, 23 Nov 2017 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2017-11-23-visual-vm/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;The idea / motivation&#xA;    &lt;div id=&#34;the-idea--motivation&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#the-idea--motivation&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In order to run VisualVM from predefined configuration you need to point the app to the user directory. This directory takes about 20MB, but 90% of the the content is actually generated or repeated.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  4devops-visualvm git:(master) du -sh tw-sl/*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;244K    tw-sl/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7.3M    tw-sl/modules&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 52K    tw-sl/repository&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0K    tw-sl/update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;104K    tw-sl/update_tracking&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 11M    tw-sl/var&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  4devops-visualvm git:(master) du -sh tw-wool/*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;248K    tw-wool/config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7.2M    tw-wool/modules&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 60K    tw-wool/repository&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.0K    tw-wool/update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;104K    tw-wool/update_tracking&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 11M    tw-wool/var&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  4devops-visualvm git:(master) du -sh tw-wool&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 19M    tw-wool&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The only part that is specific and worthy of maintaining in the Git repo is repository&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Install AWS CLI on Mac</title>
      <link>https://miroadamy.com/posts/2017-11-14-install-aws-cli-mac/</link>
      <pubDate>Tue, 14 Nov 2017 14:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2017-11-14-install-aws-cli-mac/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Install AWS CLI on Mac&#xA;    &lt;div id=&#34;install-aws-cli-on-mac&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#install-aws-cli-on-mac&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;The Mac comes with Python 2.7 and no pip&lt;/p&gt;&#xA;&lt;p&gt;This guide recommends upgrade to Python 3 which I want to avoid: &lt;a href=&#34;http://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html&lt;/a&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Unsuccesfull path - keep the Python 2.7&#xA;    &lt;div id=&#34;unsuccesfull-path---keep-the-python-27&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#unsuccesfull-path---keep-the-python-27&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ pip --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zsh: command not found: pip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ sudo easy_install pip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Password:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Searching for pip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Reading https://pypi.python.org/simple/pip/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Best match: pip 9.0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Downloading https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Processing pip-9.0.1.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Writing /tmp/easy_install-QnLLJp/pip-9.0.1/setup.cfg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Running pip-9.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-QnLLJp/pip-9.0.1/egg-dist-tmp-03hMh7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: &amp;#39;python_requires&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  warnings.warn(msg)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;.coveragerc&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;.mailmap&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;.travis.yml&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;.landscape.yml&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;pip/_vendor/Makefile&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;tox.ini&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;dev-requirements.txt&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;warning: no previously-included files found matching &amp;#39;appveyor.yml&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no previously-included directories found matching &amp;#39;.github&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no previously-included directories found matching &amp;#39;.travis&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no previously-included directories found matching &amp;#39;docs/_build&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no previously-included directories found matching &amp;#39;contrib&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no previously-included directories found matching &amp;#39;tasks&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no previously-included directories found matching &amp;#39;tests&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;creating /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Extracting pip-9.0.1-py2.7.egg to /Library/Python/2.7/site-packages&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Adding pip 9.0.1 to easy-install.pth file&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing pip script to /usr/local/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing pip2.7 script to /usr/local/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing pip2 script to /usr/local/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installed /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Processing dependencies for pip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Finished processing dependencies for pip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ pip --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip 9.0.1 from /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ pip install awscli --upgrade --user&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting awscli&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading awscli-1.11.185-py2.py3-none-any.whl (1.2MB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 1.2MB 1.1MB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting colorama&amp;lt;=0.3.7,&amp;gt;=0.2.5 (from awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading colorama-0.3.7-py2.py3-none-any.whl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting s3transfer&amp;lt;0.2.0,&amp;gt;=0.1.9 (from awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading s3transfer-0.1.11-py2.py3-none-any.whl (54kB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 61kB 6.2MB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting botocore==1.7.43 (from awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading botocore-1.7.43-py2.py3-none-any.whl (3.7MB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 3.7MB 363kB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting docutils&amp;gt;=0.10 (from awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading docutils-0.14-py2-none-any.whl (543kB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 552kB 2.4MB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting rsa&amp;lt;=3.5.0,&amp;gt;=3.1.2 (from awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading rsa-3.4.2-py2.py3-none-any.whl (46kB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 51kB 5.9MB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting PyYAML&amp;lt;=3.12,&amp;gt;=3.10 (from awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading PyYAML-3.12.tar.gz (253kB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 256kB 3.5MB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting futures&amp;lt;4.0.0,&amp;gt;=2.2.0; python_version == &amp;#34;2.6&amp;#34; or python_version == &amp;#34;2.7&amp;#34; (from s3transfer&amp;lt;0.2.0,&amp;gt;=0.1.9-&amp;gt;awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading futures-3.1.1-py2-none-any.whl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting jmespath&amp;lt;1.0.0,&amp;gt;=0.7.1 (from botocore==1.7.43-&amp;gt;awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading jmespath-0.9.3-py2.py3-none-any.whl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting python-dateutil&amp;lt;3.0.0,&amp;gt;=2.1 (from botocore==1.7.43-&amp;gt;awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 194kB 4.5MB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting pyasn1&amp;gt;=0.1.3 (from rsa&amp;lt;=3.5.0,&amp;gt;=3.1.2-&amp;gt;awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading pyasn1-0.3.7-py2.py3-none-any.whl (63kB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    100% |████████████████████████████████| 71kB 7.8MB/s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Collecting six&amp;gt;=1.5 (from python-dateutil&amp;lt;3.0.0,&amp;gt;=2.1-&amp;gt;botocore==1.7.43-&amp;gt;awscli)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Downloading six-1.11.0-py2.py3-none-any.whl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installing collected packages: colorama, futures, jmespath, docutils, six, python-dateutil, botocore, s3transfer, pyasn1, rsa, PyYAML, awscli&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Running setup.py install for PyYAML ... done&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Successfully installed PyYAML-3.12 awscli-1.11.185 botocore-1.7.43 colorama-0.3.7 docutils-0.14 futures-3.1.1 jmespath-0.9.3 pyasn1-0.3.7 python-dateutil-2.6.1 rsa-3.4.2 s3transfer-0.1.11 six-1.11.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ aws --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zsh: command not found: aws&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ sw_vers&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ProductName:    Mac OS X&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ProductVersion: 10.13.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BuildVersion:   17B48&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;This does not work.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Storing sensitive information in Git</title>
      <link>https://miroadamy.com/posts/2017-05-15-sensitive-git/</link>
      <pubDate>Wed, 17 May 2017 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2017-05-15-sensitive-git/</guid>
      <description>&lt;p&gt;The purpose of this is to evaluate options and suggest possible approaches for handling the sensitive information in Git repositories such as database credentials, API credentials, passwords, keys, certificates etc. Joel asked this question a few weeks ago - this is part of Milos&amp;rsquo;s security awareness program.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;The issue&#xA;    &lt;div id=&#34;the-issue&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#the-issue&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Git repos store in cleartext all credentials, that may also be including PROD credentials.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Managing code in remote SVN repo</title>
      <link>https://miroadamy.com/posts/2017-05-10-remote-svn/</link>
      <pubDate>Wed, 10 May 2017 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2017-05-10-remote-svn/</guid>
      <description>&lt;p&gt;This is based on J.&amp;rsquo;s&amp;rsquo; question in Slack:&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;Do we have some customer where we are moving a git repo to svn in an automated fashion&#xA;I just need to move the git repo into svn periodically nightly&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;p&gt;The setup (as I understand it):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;on client side we have a worktree that is Git repository&lt;/li&gt;&#xA;&lt;li&gt;the files needs to be copied to SVN regularly&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Options&#xA;    &lt;div id=&#34;options&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#options&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Use git-svn bridge&#xA;    &lt;div id=&#34;use-git-svn-bridge&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#use-git-svn-bridge&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Git client allows to &amp;ldquo;pretend&amp;rdquo; it is SVN and pull/push against remote SVN repo&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Process for transferring Git repo from Gitolite to Bitbucket</title>
      <link>https://miroadamy.com/posts/2016-11-02-pensieve-to-bitbucket/</link>
      <pubDate>Wed, 02 Nov 2016 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-11-02-pensieve-to-bitbucket/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Task&#xA;    &lt;div id=&#34;task&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#task&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Transfer full Git history (all branches, tags, etc) to Bitbucket so that development can continue from there&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;User setup&#xA;    &lt;div id=&#34;user-setup&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#user-setup&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;List all keys in Gitolite&lt;/li&gt;&#xA;&lt;li&gt;must have access to Gitolite admin interface&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd $ADMIN_HOME/pensieve/PRJ-admin/gitolite-admin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) ll keydir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total 144K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- 1 miro 401 Jun 29  2015 alter.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- 1 miro 397 Jun 29  2015 codereview.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- 1 miro 400 Apr 18  2016 hybris.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- 1 miro 400 Apr 19  2016 hybris2.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r----- 1 miro 398 Mar 30  2016 irae.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;... DELETED ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- 1 miro 401 Jun 29  2015 miro.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- 1 miro 411 Jun 29  2015 tkuser.jenkins0.pub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- 1 miro 411 Jun 29  2015 tkuser.jenkins2.pub&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;These will be split to 5 usergroups&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Update all local branches in Git repo</title>
      <link>https://miroadamy.com/posts/2016-09-05-git-update-all-local-branches/</link>
      <pubDate>Mon, 05 Sep 2016 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-09-05-git-update-all-local-branches/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Update all local branches in Git repo&#xA;    &lt;div id=&#34;update-all-local-branches-in-git-repo&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#update-all-local-branches-in-git-repo&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Issue: The git pull updates just one current branch.&lt;/p&gt;&#xA;&lt;p&gt;In DevOps I am following many Git repos and need to keep up to date for all local branches.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;git ffwd-update command&#xA;    &lt;div id=&#34;git-ffwd-update-command&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#git-ffwd-update-command&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Source: &lt;a href=&#34;http://stackoverflow.com/questions/4318161/can-git-pull-all-update-all-my-local-branches&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://stackoverflow.com/questions/4318161/can-git-pull-all-update-all-my-local-branches&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create file named git-ffwd-update somewhere on the path (in my case &lt;code&gt;~/bin&lt;/code&gt;)&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Learning resources for Linux and Command line</title>
      <link>https://miroadamy.com/posts/2016-05-30-linux-resources/</link>
      <pubDate>Mon, 30 May 2016 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-05-30-linux-resources/</guid>
      <description>&lt;p&gt;This quick summary to answer Megha Maiya&amp;rsquo;s question - I am adding to the Wiki in case it can be expanded later&#xA;useful for somebody else:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;expanded later&lt;/li&gt;&#xA;&lt;li&gt;useful for somebody else&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Free resources&#xA;    &lt;div id=&#34;free-resources&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#free-resources&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;There is HUGE amount of resources available for Linux and Unix out there. The issue is select those reasonably good&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;List of lists: &lt;a href=&#34;https://github.com/learnbyexample/scripting_course/blob/master/Linux_curated_resources.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/learnbyexample/scripting_course/blob/master/Linux_curated_resources.md&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://ryanstutorials.net/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://ryanstutorials.net/&lt;/a&gt;, specially &lt;a href=&#34;http://ryanstutorials.net/linuxtutorial/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://ryanstutorials.net/linuxtutorial/&lt;/a&gt; and &lt;a href=&#34;http://ryanstutorials.net/linuxtutorial/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://ryanstutorials.net/linuxtutorial/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.tutorialspoint.com/unix/unix-getting-started.htm&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://www.tutorialspoint.com/unix/unix-getting-started.htm&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;(bash scripting) - &lt;a href=&#34;https://bash.cyberciti.biz/guide/Main_Page&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://bash.cyberciti.biz/guide/Main_Page&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;free book - &lt;a href=&#34;http://unixmages.com/ufbm.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://unixmages.com/ufbm.pdf&lt;/a&gt; - very beginner friendly&lt;/li&gt;&#xA;&lt;li&gt;list of free books: &lt;a href=&#34;http://www.dailyartisan.com/news/open-source-e-books-for-linux/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://www.dailyartisan.com/news/open-source-e-books-for-linux/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Eli The computer guy - &lt;a href=&#34;https://www.youtube.com/playlist?list=PLD6B6473ACF32C59D&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://www.youtube.com/playlist?list=PLD6B6473ACF32C59D&lt;/a&gt; (I like this one)&lt;/li&gt;&#xA;&lt;li&gt;YouTube channel - ultimate Linux tutorials - &lt;a href=&#34;https://www.youtube.com/channel/UCn58SGUDUnUHRYKyNffHQrQ&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://www.youtube.com/channel/UCn58SGUDUnUHRYKyNffHQrQ&lt;/a&gt;&#xA;(from a generous Indian guy sharing his experience with the world for free. Not ideal audio quality, could use some editing - bot has lots of content)&lt;/li&gt;&#xA;&lt;li&gt;EDX courses - &lt;a href=&#34;https://www.edx.org/school/linuxfoundationx&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://www.edx.org/school/linuxfoundationx&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.tutorialspoint.com/listtutorials/linux/basic-concepts/1&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://www.tutorialspoint.com/listtutorials/linux/basic-concepts/1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Wikibooks - &lt;a href=&#34;https://en.wikibooks.org/wiki/LPI_Linux_Certification&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://en.wikibooks.org/wiki/LPI_Linux_Certification&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Hands On&#xA;    &lt;div id=&#34;hands-on&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#hands-on&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Reading books and watching videos will have very little impact without trying things out.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Native OS-X Docker (Beta) - not quite there yet</title>
      <link>https://miroadamy.com/posts/2016-05-17-docker-osx/</link>
      <pubDate>Tue, 17 May 2016 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-05-17-docker-osx/</guid>
      <description>&lt;p&gt;I was intrigued by convenience of using Docker natively on Mac, without dealing with differences localhost != dockerhost, so I subscribed for Beta and installed it.&lt;/p&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Good news 1&#xA;    &lt;div id=&#34;good-news-1&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#good-news-1&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;It can coexist with previous Docker installation (mostly) - see the note at the end. As long as you do not try to run native Docker and docker-machine at the same time, things coexist.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Starting ACC (ATG Control Centre) on OS-X</title>
      <link>https://miroadamy.com/posts/2016-03-24-acc-on-osx/</link>
      <pubDate>Thu, 24 Mar 2016 12:57:35 -0500</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-03-24-acc-on-osx/</guid>
      <description>&lt;p&gt;Copy the installation of ACC for respective version from a Linux VM:&lt;/p&gt;&#xA;&lt;img src=&#34;https://miroadamy.com/images/2014-10-02_17-14-04.png&#34; width=&#34;400&#34; /&gt;&#xA;&lt;p&gt;The startup script in bin/startClient will fail, because it cannot determine which Java to use to run the app.&lt;/p&gt;&#xA;&lt;p&gt;It is trying to determine Unix flavour, failing that defaults to Solaris and ends up with invalid settings.&lt;/p&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Fix&#xA;    &lt;div id=&#34;fix&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#fix&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Set the variable JAVA_VM to path to executable command on your system.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Git project statistic tool</title>
      <link>https://miroadamy.com/posts/2016-03-20-gitinspector/</link>
      <pubDate>Sun, 20 Mar 2016 12:57:35 -0500</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-03-20-gitinspector/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Git project statistic tool&#xA;    &lt;div id=&#34;git-project-statistic-tool&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#git-project-statistic-tool&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Python based, requires Python 2.6+&lt;/p&gt;&#xA;&lt;p&gt;Works OOTB on Mac&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Installation&#xA;    &lt;div id=&#34;installation&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#installation&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Download TAR from &lt;a href=&#34;https://github.com/ejwa/gitinspector&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Github&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;unzipped to /opt&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ll /opt/gitinspector-0.3.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total 52K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; miro  &lt;span class=&#34;m&#34;&gt;999&lt;/span&gt; Jul &lt;span class=&#34;m&#34;&gt;29&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2013&lt;/span&gt; DESCRIPTION.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; miro  32K Jun &lt;span class=&#34;m&#34;&gt;14&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2013&lt;/span&gt; LICENSE.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; miro   &lt;span class=&#34;m&#34;&gt;78&lt;/span&gt; Jul  &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2013&lt;/span&gt; MANIFEST.in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; miro  &lt;span class=&#34;m&#34;&gt;681&lt;/span&gt; Jan &lt;span class=&#34;m&#34;&gt;13&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2014&lt;/span&gt; README.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;45&lt;/span&gt; miro 1.5K Mar &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2015&lt;/span&gt; gitinspector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; miro 1.9K Jan &lt;span class=&#34;m&#34;&gt;14&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2014&lt;/span&gt; setup.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--  &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; miro  &lt;span class=&#34;m&#34;&gt;110&lt;/span&gt; Jul &lt;span class=&#34;m&#34;&gt;27&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2013&lt;/span&gt; stdeb.cfg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;create symlink from ~/bin (or from whatever directory on $PATH)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /opt/gitinspector-0.3.2/gitinspector/gitinspector.py ~/bin/gitinspector.py&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~  ll ~/bin &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep gitin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lrwxr-xr-x &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; miro   &lt;span class=&#34;m&#34;&gt;52&lt;/span&gt; Mar &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; 16:06 gitinspector.py -&amp;gt; /opt/gitinspector-0.3.2/gitinspector/gitinspector.py&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Example&#xA;    &lt;div id=&#34;example&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#example&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Look at scala sources - &lt;a href=&#34;mailto:git@github.com&#34; &gt;git@github.com&lt;/a&gt;:scala/scala.git&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fixing docker-machine error after upgrade</title>
      <link>https://miroadamy.com/posts/2016-03-16-docker-machine-error-after-upgrade/</link>
      <pubDate>Wed, 16 Mar 2016 12:57:35 -0500</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-03-16-docker-machine-error-after-upgrade/</guid>
      <description>&lt;p&gt;I had to upgrade docker toolbox on Yosemite to get latest docker-compose additions.&lt;/p&gt;&#xA;&lt;p&gt;After installing the new package, I was not able to connect to docker machine:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ docker-machine status&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Stopped&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ docker-machine start default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Starting &amp;#34;default&amp;#34;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(default) Check network to re-create if needed...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(default) Waiting for an IP...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Machine &amp;#34;default&amp;#34; was started.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Waiting for SSH to be available...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Detecting the provisioner...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~ docker-machine env default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host &amp;#34;192.168.99.100:2376&amp;#34;: tls: DialWithDialer timed out&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You can attempt to regenerate them using &amp;#39;docker-machine regenerate-certs [name]&amp;#39;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Be advised that this will trigger a Docker daemon restart which will stop running containers.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;Regenerating the certificates did not solve the problem. Neither did reboot.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Accessing internal AWS servers directly from Mac</title>
      <link>https://miroadamy.com/posts/2016-02-18-access-aws-servers/</link>
      <pubDate>Thu, 18 Feb 2016 00:57:35 -0500</pubDate>
      
      <guid>https://miroadamy.com/posts/2016-02-18-access-aws-servers/</guid>
      <description>&lt;p&gt;Motivation for this hack is my unwillingness to suffer the pain of using Windows UI just to access BCC, ACC or other ATG tools requiring non command-line interface.&lt;/p&gt;&#xA;&lt;p&gt;The credit for finding out about approach is blog post by James McOrmond - VPN over SSH - who is using this neat trick from Linux for quite some time.&lt;/p&gt;&#xA;&lt;p&gt;The software mentioned &lt;a href=&#34;https://github.com/apenwarr/sshuttle&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/apenwarr/sshuttle&lt;/a&gt; supposedly works on OS-X, however, it has not been updated for 4-5 years and would not function for me (OS-X Yosemite).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Docker - getting started</title>
      <link>https://miroadamy.com/posts/2015-12-11-docker-starting/</link>
      <pubDate>Fri, 11 Dec 2015 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2015-12-11-docker-starting/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;After the reboot&#xA;    &lt;div id=&#34;after-the-reboot&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#after-the-reboot&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Client:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Version:      1.9.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; API version:  1.21&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Go version:   go1.4.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Git commit:   a34a1d5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Built:        Fri Nov 20 17:56:04 UTC 2015&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; OS/Arch:      darwin/amd64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cannot connect to the Docker daemon. Is the docker daemon running on this host?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) docker-machine active&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;No active host found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) docker-machine env default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error checking TLS connection: default is not running. Please start it in order to use the connection settings&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) docker-machine start&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error: Expected to get one or more machine names as arguments&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) docker-machine start default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(default) Starting VM...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) docker-machine env default&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;export DOCKER_TLS_VERIFY=&amp;#34;1&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;export DOCKER_HOST=&amp;#34;tcp://192.168.99.100:2376&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;export DOCKER_CERT_PATH=&amp;#34;/Users/miro/.docker/machine/machines/default&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;export DOCKER_MACHINE_NAME=&amp;#34;default&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Run this command to configure your shell:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# eval &amp;#34;$(docker-machine env default)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) eval &amp;#34;$(docker-machine env default)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  gitolite-admin git:(master) docker version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Client:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Version:      1.9.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; API version:  1.21&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Go version:   go1.4.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Git commit:   a34a1d5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Built:        Fri Nov 20 17:56:04 UTC 2015&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; OS/Arch:      darwin/amd64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Server:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Version:      1.9.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; API version:  1.21&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Go version:   go1.4.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Git commit:   a34a1d5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Built:        Fri Nov 20 17:56:04 UTC 2015&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; OS/Arch:      linux/amd64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Useful guide&#xA;    &lt;div id=&#34;useful-guide&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#useful-guide&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://viget.com/extend/how-to-use-docker-on-os-x-the-missing-guide&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://viget.com/extend/how-to-use-docker-on-os-x-the-missing-guide&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Starting ACC in VM</title>
      <link>https://miroadamy.com/posts/2015-07-15-acc-in-vm/</link>
      <pubDate>Wed, 15 Jul 2015 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2015-07-15-acc-in-vm/</guid>
      <description>&lt;p&gt;The ACC is installed in default location: &lt;code&gt;~/ATG/ACC11.1&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;This does not work OOTB. You must set 2 additional ENV properties&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd ~/ATG/ACC11.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;export ACC_HOME=`pwd`&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;export JAVA_VM=/usr/java/jdk1.7.0_51//bin/java&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bin/startClient &amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Starting from dyn/admin&#xA;    &lt;div id=&#34;starting-from-dynadmin&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#starting-from-dynadmin&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The start in separate VM works OK.&lt;/p&gt;&#xA;&lt;p&gt;Start in server VM brings errors message very often complaining of malformed Help URL.&#xA;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://miroadamy.com/images/acc-1.png&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;The issue is documented here: &lt;a href=&#34;http://stackoverflow.com/questions/20868244/how-to-fix-malformed-help-url-while-opening-acc-atg&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://stackoverflow.com/questions/20868244/how-to-fix-malformed-help-url-while-opening-acc-atg&lt;/a&gt; - for JBOSS.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to truncate Git history</title>
      <link>https://miroadamy.com/posts/2015-15-07-git-history/</link>
      <pubDate>Tue, 14 Jul 2015 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2015-15-07-git-history/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;The general idea&#xA;    &lt;div id=&#34;the-general-idea&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#the-general-idea&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Parameter: tag or sha1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout --orphan temp $1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &amp;#34;Truncated history&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git rebase --onto temp $1 master&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch -D temp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;Requires Git 1.8+&lt;/p&gt;&#xA;&lt;p&gt;Works well for mostly linear history (aka Git used for diff-ing of the catalog feeds).&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;How it works&#xA;    &lt;div id=&#34;how-it-works&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-it-works&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Starting repo (training):&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to get information about all ATG components</title>
      <link>https://miroadamy.com/posts/2015-07-12-component-report/</link>
      <pubDate>Sun, 12 Jul 2015 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2015-07-12-component-report/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;How to get information about all ATG Nucleus components&#xA;    &lt;div id=&#34;how-to-get-information-about-all-atg-nucleus-components&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-to-get-information-about-all-atg-nucleus-components&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Dyn Admin has useful feature - Configuration reporter: &lt;a href=&#34;http://localhost:8080/dyn/admin/atg/dynamo/admin/en/config-reporter-property-representation1.jhtml&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://localhost:8080/dyn/admin/atg/dynamo/admin/en/config-reporter-property-representation1.jhtml&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://miroadamy.com/images/da-1.jpeg&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;There are two variations of the report: Property representation report - PRR (shorter version) and Bean representation report (BRR). The PRR does not report properties that have default values, while BRR is reporting current values of all properties. Compare the sizes&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to fix Jenkins build issues related to Git connectivity</title>
      <link>https://miroadamy.com/posts/2015-06-18-jenkins-git/</link>
      <pubDate>Thu, 18 Jun 2015 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2015-06-18-jenkins-git/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Symptoms:&#xA;    &lt;div id=&#34;symptoms&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#symptoms&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;build fails&lt;/li&gt;&#xA;&lt;li&gt;cannot checkout / connect to GIT&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Validate this is the case&#xA;    &lt;div id=&#34;validate-this-is-the-case&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#validate-this-is-the-case&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ssh to jenkins2&lt;/li&gt;&#xA;&lt;li&gt;assume identity of jenkins user (VERY IMPORTANT)&lt;/li&gt;&#xA;&lt;li&gt;go to &lt;code&gt;/home/projects/workspace/PROJECTNAME&lt;/code&gt; directory&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This directory is repository clone. Try &amp;lsquo;git status&amp;rsquo; in that directory. If you see something like&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to solve &#39;Agent admitted failure to sign using the key&#39;</title>
      <link>https://miroadamy.com/posts/2015-05-22-ssh-issue/</link>
      <pubDate>Fri, 22 May 2015 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2015-05-22-ssh-issue/</guid>
      <description>&lt;p&gt;After re-creating the SSH key, I got the above error from Gitolite.&lt;/p&gt;&#xA;&lt;p&gt;Full trace:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  TWC  ssh -v thinkwrap@pensieve.thinkwrap.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Reading configuration data /etc/ssh/ssh_config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Applying options for *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Connecting to pensieve.thinkwrap.com [24.137.198.18] port 22.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Connection established.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: identity file /home/thinkwrap/.ssh/identity type -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: identity file /home/thinkwrap/.ssh/identity-cert type -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: identity file /home/thinkwrap/.ssh/id_rsa type 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: identity file /home/thinkwrap/.ssh/id_rsa-cert type -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: identity file /home/thinkwrap/.ssh/id_dsa type -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: identity file /home/thinkwrap/.ssh/id_dsa-cert type -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: match: OpenSSH_5.3 pat OpenSSH*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Enabling compatibility mode for protocol 2.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Local version string SSH-2.0-OpenSSH_5.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_KEXINIT sent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_KEXINIT received&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: kex: server-&amp;gt;client aes128-ctr hmac-md5 none&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: kex: client-&amp;gt;server aes128-ctr hmac-md5 none&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024&amp;lt;1024&amp;lt;8192) sent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_KEX_DH_GEX_INIT sent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Host &amp;#39;pensieve.thinkwrap.com&amp;#39; is known and matches the RSA host key.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Found key in /home/thinkwrap/.ssh/known_hosts:2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: ssh_rsa_verify: signature correct&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_NEWKEYS sent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: expecting SSH2_MSG_NEWKEYS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_NEWKEYS received&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_SERVICE_REQUEST sent&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: SSH2_MSG_SERVICE_ACCEPT received&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Next authentication method: gssapi-keyex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: No valid Key exchange context&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Next authentication method: gssapi-with-mic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Unspecified GSS failure.  Minor code may provide more information&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Credentials cache file &amp;#39;/tmp/krb5cc_500&amp;#39; not found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Unspecified GSS failure.  Minor code may provide more information&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Credentials cache file &amp;#39;/tmp/krb5cc_500&amp;#39; not found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Unspecified GSS failure.  Minor code may provide more information&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Unspecified GSS failure.  Minor code may provide more information&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Credentials cache file &amp;#39;/tmp/krb5cc_500&amp;#39; not found&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Next authentication method: publickey&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Offering public key: /home/thinkwrap/.ssh/id_rsa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Remote: Forced command: /home/thinkwrap/gitolite/src/gitolite-shell miro.adamy+ATG11-TrainingVM&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Remote: Port forwarding disabled.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Remote: X11 forwarding disabled.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Remote: Agent forwarding disabled.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Remote: Pty allocation disabled.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Server accepts key: pkalg ssh-rsa blen 277&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Agent admitted failure to sign using the key.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Trying private key: /home/thinkwrap/.ssh/identity&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Trying private key: /home/thinkwrap/.ssh/id_dsa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debug1: Next authentication method: password&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;thinkwrap@pensieve.thinkwrap.com&amp;#39;s password:&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;Solution&#xA;    &lt;div id=&#34;solution&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#solution&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;log-out, log on&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fixing the shutdown problem with JBoss</title>
      <link>https://miroadamy.com/posts/2015-04-11-jboss-shutdown/</link>
      <pubDate>Sat, 11 Apr 2015 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2015-04-11-jboss-shutdown/</guid>
      <description>&lt;p&gt;Observed at QA environment. During automated shutdown sequence, the exception was thrown:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ bin/gdi-qa-com1.sh stop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JBOSS_CMD_STOP = java -classpath /opt/jboss/jboss-as/bin/shutdown.jar:/opt/jboss/jboss-as/client/jnet.jar org.jboss.Shutdown --shutdown --user=admin --password=admin -s jnp://0.0.0.0:1099&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Exception in thread &amp;#34;main&amp;#34; javax.naming.CommunicationException: Could not obtain connection to any of these urls: 0.0.0.0:1099 [Root exception is javax.naming.CommunicationException: Failed to connect to server /0.0.0.0:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /0.0.0.0:1099 [Root exception is java.net.ConnectException: Connection refused]]]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1763)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:693)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at javax.naming.InitialContext.lookup(InitialContext.java:392)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jboss.Shutdown.main(Shutdown.java:219)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Caused by: javax.naming.CommunicationException: Failed to connect to server /0.0.0.0:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /0.0.0.0:1099 [Root exception is java.net.ConnectException: Connection refused]]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:335)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1734)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ... 4 more&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server /0.0.0.0:1099 [Root exception is java.net.ConnectException: Connection refused]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:305)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ... 5 more&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Caused by: java.net.ConnectException: Connection refused&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at java.net.PlainSocketImpl.socketConnect(Native Method)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:211)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at java.net.Socket.connect(Socket.java:529)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:97)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:82)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:301)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ... 5 more&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;To watch the log: tail -f /var/log/atg/gdi-qa-com1.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The conflict of 1099 between Endeca and ATG was resolved according &lt;code&gt;Fixing port conflict on 1099 between out-of-the-box Endeca and JBOSS&lt;/code&gt; - the actual port was 11199&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ATG Repository structure visualizer</title>
      <link>https://miroadamy.com/posts/2014-11-04-atg-repo-visualizer/</link>
      <pubDate>Tue, 04 Nov 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-11-04-atg-repo-visualizer/</guid>
      <description>&lt;p&gt;The groovy script does parse the XML files (scraped from dyn-admin, or output of the XML combine) and produces file in the syntax of Plant UML - &lt;a href=&#34;http://plantuml.sourceforge.net&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://plantuml.sourceforge.net&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; if (args.size() == 0) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    println &amp;#34;Usage: groovy extractItems.groovy XMLFILE-IN-GSA-FORMAT.xml&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    System.exit(1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def gsaFile = new XmlSlurper().parseText(new File(args[0]).text)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def desc = gsaFile.&amp;#39;item-descriptor&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;def processItemDescriptor(myDesc) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    def info = [:]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    def tables = []&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    def props = [:]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    def descriptors = [:]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    for (table in myDesc.table) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        String tableName = table.@name.text()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        tables += tableName&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        // collect table&amp;#39;s properties&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        for (prop in table.property) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            String name = &amp;#34;${prop.@name.text()}(${tableName})&amp;#34;.replaceAll(/[ -]/, &amp;#39;_&amp;#39;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            props[name] = [:]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            if (&amp;#34;${prop.@&amp;#39;required&amp;#39;.text()}&amp;#34; != &amp;#34;&amp;#34;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                props[name][&amp;#39;required&amp;#39;] = &amp;#34;${prop.@&amp;#39;required&amp;#39;.text()}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            if (&amp;#34;${prop.@&amp;#39;hidden&amp;#39;.text()}&amp;#34; != &amp;#34;&amp;#34;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                props[name][&amp;#39;hidden&amp;#39;] = &amp;#34;${prop.@&amp;#39;hidden&amp;#39;.text()}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            if (&amp;#34;${prop.@&amp;#39;item-type&amp;#39;.text()}&amp;#34; != &amp;#34;&amp;#34;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                props[name][&amp;#39;item-type&amp;#39;] = &amp;#34;${prop.@&amp;#39;item-type&amp;#39;.text()}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                descriptors[&amp;#34;${prop.@name.text()}&amp;#34;] = &amp;#34;${prop.@&amp;#39;item-type&amp;#39;.text().replaceAll(/[ -]/, &amp;#39;_&amp;#39;)}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    info[&amp;#39;tables&amp;#39;] = tables&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    // scan for properties outside of tables&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    for (prop in myDesc.property) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        String name = &amp;#34;${prop.@name.text()}&amp;#34;.replaceAll(/[ -]/, &amp;#39;_&amp;#39;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        props[name] = [:]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        if (&amp;#34;${prop.@&amp;#39;item-type&amp;#39;.text()}&amp;#34; != &amp;#34;&amp;#34;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            props[name][&amp;#39;item-type&amp;#39;] = &amp;#34;${prop.@&amp;#39;item-type&amp;#39;.text()}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    info[&amp;#39;properties&amp;#39;] = props&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    info[&amp;#39;descriptors&amp;#39;] = descriptors&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return info&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;println &amp;#34;Got ${desc.size()} item-descriptors&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;println &amp;#34;@startuml&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;for (idesc in desc) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    def info = processItemDescriptor(idesc)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    def name = &amp;#34;${idesc.@name.text().replaceAll(/[ -]/, &amp;#39;_&amp;#39;)}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    println &amp;#34;\nclass  ${name} {&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    for (p in info.tables)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        println &amp;#34;\t&amp;#34;+p&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    println &amp;#34;..&amp;#34;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    for (p in info.properties)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        println &amp;#34;\t&amp;#34;+p&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    println &amp;#34;}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    for (p in info.descriptors?.keySet())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        println &amp;#34;\t ${name} *-- ${info.descriptors[p]} : ${p}&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;println &amp;#34;@enduml&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The generation (requires installed dot tools)&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Dealing with &#39;Java Runtime SE 6&#39; required error</title>
      <link>https://miroadamy.com/posts/2014-10-14-java6required/</link>
      <pubDate>Tue, 14 Oct 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-10-14-java6required/</guid>
      <description>&lt;p&gt;When trying to start DBeaver (&lt;a href=&#34;http://dbeaver.jkiss.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://dbeaver.jkiss.org&lt;/a&gt;) I got this&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://miroadamy.com/images/java6-1.png&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;I do have Java 7 installed:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  Contents  java -version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;java version &amp;#34;1.7.0_55&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Java(TM) SE Runtime Environment (build 1.7.0_55-b13)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  Contents  which java&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;java is /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/bin/java&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;java is /usr/bin/java&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;which should be a superset. But it is not.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Solution&#xA;    &lt;div id=&#34;solution&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#solution&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Oracle seems to screw up the PLIST capabilities in JAva7 install&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Gitbits - Get committer lists</title>
      <link>https://miroadamy.com/posts/2014-09-29-gitbits/</link>
      <pubDate>Mon, 29 Sep 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-09-29-gitbits/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;With emails (Unix only)&#xA;    &lt;div id=&#34;with-emails-unix-only&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#with-emails-unix-only&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  dev1 git:(miro-ui) ✗ git log --raw | grep &amp;#34;^Author: &amp;#34; | sort | uniq -c&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      9 Author: Brendan Smith &amp;lt;Brendan.Smith@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     22 Author: Kai Cheng &amp;lt;kai.cheng@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     97 Author: Miro Adamy &amp;lt;miro.adamy@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     49 Author: Training VM &amp;lt;training-vm@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     24 Author: Your Name &amp;lt;your.name@thinkwrap.com&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;Pure git&#xA;    &lt;div id=&#34;pure-git&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pure-git&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  dev1 git:(miro-ui) ✗ git shortlog -sen&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    97  Miro Adamy &amp;lt;miro.adamy@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    49  Training VM &amp;lt;training-vm@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    24  Your Name &amp;lt;your.name@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    22  Kai Cheng &amp;lt;kai.cheng@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     9  Brendan Smith &amp;lt;Brendan.Smith@thinkwrap.com&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;Mailmap option to consolidate the variety of authors&#xA;    &lt;div id=&#34;mailmap-option-to-consolidate-the-variety-of-authors&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#mailmap-option-to-consolidate-the-variety-of-authors&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Before (no mailmap)&#xA;    &lt;div id=&#34;before-no-mailmap&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#before-no-mailmap&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 609  milos hanzel &amp;lt;milos.hanzel@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 361  brant maahs &amp;lt;brant.maahs@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  69  Sullivan Tseng &amp;lt;sullivantseng@gmail.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  42  sullivan tseng &amp;lt;sullivan.tseng@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  17  milos.hanzel &amp;lt;milos.hanzel@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   2  Miro Adamy &amp;lt;miro.adamy@thinkwrap.com&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;Generating the mailman start&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to access shared folder in Linux guest in VirtualBox</title>
      <link>https://miroadamy.com/posts/2014-09-23-shared-folder/</link>
      <pubDate>Tue, 23 Sep 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-09-23-shared-folder/</guid>
      <description>&lt;p&gt;Make sure the VBOx extensions are installed.&lt;/p&gt;&#xA;&lt;p&gt;Go here for details:&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Add share&#xA;    &lt;div id=&#34;add-share&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#add-share&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In VirtualBox, Device add transient shared folder:&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;https://miroadamy.com/images/virt-box.png&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;This one has made available path /Users/Shared/ATG-11 under the name ATG-11&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Mount it&#xA;    &lt;div id=&#34;mount-it&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#mount-it&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mount -t vboxsf ATG-11 /media&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ll /media/Unix/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total 19M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x. 1 root  408 Sep 12 16:02 ATG11-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x. 1 root  272 Sep 12 16:02 ATG11-docs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-rw-r--. 1 root  675 May 13 23:46 atg-platform-mac.userlibraries&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-rw-r--. 1 root  787 May 13 23:17 atg-platform-vm.userlibraries&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rwxr--r--. 1 root  19M Feb 15  2013 jrebel-5.1.3-nosetup.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--. 1 root 1020 May 15 15:36 jrebel.lic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r--. 1 root  582 May 15 14:58 rebel.xml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x. 1 root  272 Apr  6 01:33 security&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x. 1 root  306 Jun  9 22:34 servers&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rwxr--r--. 1 root  349 Dec 17  2013 users.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x. 1 root  340 Sep  3 16:10 xrebel&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description>
      
    </item>
    
    <item>
      <title>logstash - known error</title>
      <link>https://miroadamy.com/posts/2014-09-16-logstash-error/</link>
      <pubDate>Tue, 16 Sep 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-09-16-logstash-error/</guid>
      <description>&lt;p&gt;I have been trying to make this work for about 1.5 hr.&#xA;Looks like there is open bug - &lt;a href=&#34;https://logstash.jira.com/browse/LOGSTASH-703&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://logstash.jira.com/browse/LOGSTASH-703&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Helpful link: &lt;a href=&#34;https://groups.google.com/forum/#!topic/logstash-users/sZM03po7HJE&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://groups.google.com/forum/#!topic/logstash-users/sZM03po7HJE&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;What should work:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   match =&amp;gt; [&amp;#34;message&amp;#34;, &amp;#34;regex to parse severity&amp;#34;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   match =&amp;gt; [&amp;#34;message&amp;#34;, &amp;#34;regex to parse server IP&amp;#34;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   match =&amp;gt; [&amp;#34;message&amp;#34;, &amp;#34;regex to parse user&amp;#34;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;What needs to be done instead&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You _should_ be able to do exactly what you listed at the bottom of your email, &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;except that you&amp;#39;d need `break_on_match =&amp;gt; false` so that it would parse each snippet for each message &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;instead of just parsing the first one that matches. &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Unfortunately, due to a bug (https://logstash.jira.com/browse/LOGSTASH-703), &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;this doesn&amp;#39;t work when you&amp;#39;re matching against the same field in each match expression (&amp;#34;message&amp;#34; in your case). &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;I was hoping to take a stab at fixing this bug (as several others have mentioned an interest in doing), &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;but got distracted and haven&amp;#39;t done it yet. It shouldn&amp;#39;t be terribly hard to fix, just needs some time.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;As a work-around, the following should work, but unfortunately the way that your tag_on_failure &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;will end up working will be different &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;because you have multiple Grok filters that could fail independently. &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;It&amp;#39;s probably slightly less efficient to do it this way because the event has to pass &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;from one filter to the next through the pipeline, &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;but my guess (based on absolutely no empirical data) is that it isn&amp;#39;t significantly slower &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;because the same work would need to be done by Regex either way, &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;there&amp;#39;s just more LogStash in the mix this way.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   match =&amp;gt; [&amp;#34;message&amp;#34;, &amp;#34;regex to parse severity&amp;#34;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   match =&amp;gt; [&amp;#34;message&amp;#34;, &amp;#34;regex to parse server IP&amp;#34;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   match =&amp;gt; [&amp;#34;message&amp;#34;, &amp;#34;regex to parse user&amp;#34;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~Greg Mefford&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description>
      
    </item>
    
    <item>
      <title>Recreate txt base graph generator</title>
      <link>https://miroadamy.com/posts/2014-09-09-redo-graph/</link>
      <pubDate>Tue, 09 Sep 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-09-09-redo-graph/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Graphviz&#xA;    &lt;div id=&#34;graphviz&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#graphviz&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This time using brew&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  DPS  brew install graphviz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;==&amp;gt; Downloading https://downloads.sf.net/project/machomebrew/Bottles/graphviz-2.38.0.mavericks.bottle.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;######################################################################## 100.0%&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;==&amp;gt; Pouring graphviz-2.38.0.mavericks.bottle.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;🍺  /usr/local/Cellar/graphviz/2.38.0: 469 files, 68M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  DPS  dot -V&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dot - graphviz version 2.38.0 (20140413.2041)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  DPS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Schema Spy&#xA;    &lt;div id=&#34;schema-spy&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#schema-spy&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;From &lt;a href=&#34;http://sourceforge.net/projects/schemaspy/files/schemaspy/SchemaSpy%205.0.0/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://sourceforge.net/projects/schemaspy/files/schemaspy/SchemaSpy%205.0.0/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;To &lt;code&gt;/opt/diagram&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Run:&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;diagram  java -jar ./schemaSpy_5.0.0.jar -cp .:/Users/miro/lib/jdbc/mysql-connector-java-5.1.26-bin.jar -t mysql -o library -host localhost -u training -db training_dev01 -p training&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Better dynadmin</title>
      <link>https://miroadamy.com/posts/2014-09-04-better-dynadmin/</link>
      <pubDate>Thu, 04 Sep 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-09-04-better-dynadmin/</guid>
      <description>&lt;p&gt;Source of the fix is &lt;a href=&#34;https://github.com/jc7447/BetterDynAdmin&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://github.com/jc7447/BetterDynAdmin&lt;/a&gt;.&#xA;This is to capture the installation process and provide backup in case the tool disappears.&lt;/p&gt;&#xA;&lt;p&gt;The pages generated by DynAdmin are actually not coming from a JSP or JHTML pages. The HTML you see is generated by hardcoded servlets. Each Nucleus component has assigned Admin servet, which is called when DynAdmin is trying to render the page.&lt;/p&gt;&#xA;&lt;p&gt;The improvent here are user scripts - running inside Firefox or Chrome, utilizing infrastructure provided by Greasemonkey extension (FF) or Tampermonkey (Chrome).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Tutorial on Elastic</title>
      <link>https://miroadamy.com/posts/2014-08-28-elastic-tutorial/</link>
      <pubDate>Thu, 28 Aug 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-08-28-elastic-tutorial/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Running elastic&#xA;    &lt;div id=&#34;running-elastic&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#running-elastic&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;(see Elastic search and Kibana - getting started)&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;Use case: building a employee directory for Megacorp&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;ul&gt;&#xA;&lt;li&gt;each document - type of &amp;rsquo;employee&#39;&lt;/li&gt;&#xA;&lt;li&gt;everything in megacorp index&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Populating&#xA;    &lt;div id=&#34;populating&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#populating&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Delete the `megacorp` index in case it already exists&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DELETE /megacorp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Index document 1, type &amp;#34;employee&amp;#34;, in the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# &amp;#34;megacorp&amp;#34; index&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PUT /megacorp/employee/1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;first_name&amp;#34; : &amp;#34;John&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;last_name&amp;#34; :  &amp;#34;Smith&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;age&amp;#34; :        25,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;about&amp;#34; :      &amp;#34;I love to go rock climbing&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;interests&amp;#34;: [ &amp;#34;sports&amp;#34;, &amp;#34;music&amp;#34; ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Index two more documents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PUT /megacorp/employee/2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;first_name&amp;#34; :  &amp;#34;Jane&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;last_name&amp;#34; :   &amp;#34;Smith&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;age&amp;#34; :         32,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;about&amp;#34; :       &amp;#34;I like to collect rock albums&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;interests&amp;#34;:  [ &amp;#34;music&amp;#34; ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PUT /megacorp/employee/3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;first_name&amp;#34; :  &amp;#34;Douglas&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;last_name&amp;#34; :   &amp;#34;Fir&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;age&amp;#34; :         35,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;about&amp;#34;:        &amp;#34;I like to build cabinets&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;interests&amp;#34;:  [ &amp;#34;forestry&amp;#34; ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;In server&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Elastic search and Kibana - getting started</title>
      <link>https://miroadamy.com/posts/2014-08-27-es1/</link>
      <pubDate>Wed, 27 Aug 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-08-27-es1/</guid>
      <description>&lt;p&gt;#Installation:&lt;/p&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_installing_elasticsearch.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L -O http://download.elasticsearch.org/PATH/TO/VERSION.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;unzip elasticsearch-$VERSION.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd  elasticsearch-$VERSION&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;Marvel is management plugin - console about cluster. Install:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./bin/plugin -i elasticsearch/marvel/latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# disable data collection for local cluster&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;echo &amp;#39;marvel.agent.enabled: false&amp;#39; &amp;gt;&amp;gt; ./config/elasticsearch.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;Test&#xA;    &lt;div id=&#34;test&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#test&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Startup log:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  elasticsearch-1.3.2  bin/elasticsearch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:08,325][INFO ][node                     ] [Joe Fixit] version[1.3.2], pid[59610], build[dee175d/2014-08-13T14:29:30Z]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:08,325][INFO ][node                     ] [Joe Fixit] initializing ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:08,338][INFO ][plugins                  ] [Joe Fixit] loaded [marvel], sites [marvel, kopf]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:10,905][INFO ][marvel.agent             ] [Joe Fixit] collecting disabled by settings&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:11,020][INFO ][node                     ] [Joe Fixit] initialized&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:11,021][INFO ][node                     ] [Joe Fixit] starting ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:11,131][INFO ][transport                ] [Joe Fixit] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.179.121:9300]}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:11,148][INFO ][discovery                ] [Joe Fixit] elasticsearch/nNgRXlHARHCPutTq7dZXWg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:14,160][INFO ][cluster.service          ] [Joe Fixit] new_master [Joe Fixit][nNgRXlHARHCPutTq7dZXWg][Miros-MacBook-Pro-2.local][inet[/192.168.179.121:9300]], reason: zen-disco-join (elected_as_master)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:14,181][INFO ][http                     ] [Joe Fixit] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.179.121:9200]}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:14,181][INFO ][node                     ] [Joe Fixit] started&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:17:14,726][INFO ][gateway                  ] [Joe Fixit] recovered [4] indices into cluster_state&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[2014-08-27 11:18:00,491][INFO ][cluster.service          ] [Joe Fixit] added {[logstash-Miros-MacBook-Pro-2.local-59618-4086][Eh5YjUFxSIWIn4xK45xu0w][Miros-MacBook-Pro-2.local][inet[/192.168.179.121:9301]]{client=true, data=false},}, reason: zen-disco-receive(join from node[[logstash-Miros-MacBook-Pro-2.local-59618-4086][Eh5YjUFxSIWIn4xK45xu0w][Miros-MacBook-Pro-2.local][inet[/192.168.179.121:9301]]{client=true, data=false}])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Installed some pluggins - marvel, kopf ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  ~  curl &amp;#39;http://localhost:9200/?pretty&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;status&amp;#34; : 200,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;name&amp;#34; : &amp;#34;Sea Urchin&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;version&amp;#34; : {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;number&amp;#34; : &amp;#34;1.3.2&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;build_hash&amp;#34; : &amp;#34;dee175dbe2f254f3f26992f5d7591939aaefd12f&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;build_timestamp&amp;#34; : &amp;#34;2014-08-13T14:29:30Z&amp;#34;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;build_snapshot&amp;#34; : false,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;lucene_version&amp;#34; : &amp;#34;4.9&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;tagline&amp;#34; : &amp;#34;You Know, for Search&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The sense console allows to avoid using curl and do it from browser: - &amp;lt;http://localhost:9200/_plugin/marvel/sense/ &amp;gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Finding out the class in ATG installation</title>
      <link>https://miroadamy.com/posts/2014-08-26-find-class/</link>
      <pubDate>Tue, 26 Aug 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-08-26-find-class/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Java approach&#xA;    &lt;div id=&#34;java-approach&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#java-approach&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Use the real time search with this JAR - &lt;a href=&#34;https://jarscan.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://jarscan.com/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;➜  scripts git:(authoring) ✗ java -jar ~/bin/jarscan.jar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=========================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;JarScan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;written by Geoff Yaworski&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gyaworski@hotmail.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Version 2.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=========================&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Usage: java -jar jarscan.jar [-help | /?]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    [-dir directory name]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    [-zip]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    [-showProgress]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &amp;lt;-files | -class | -package&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &amp;lt;search string 1&amp;gt; [search string 2]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    [search string n]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Help:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -help or /?           Displays this message.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -dir                  The directory to start searching&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        from default is &amp;#34;.&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -zip                  Also search Zip files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -showProgress         Show a running count of files read in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -files or -class      Search for a file or Java class&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        contained in some library.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        i.e. HttpServlet&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -package              Search for a Java package&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        contained in some library.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        i.e. javax.servlet.http&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  search string         The file or package to&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        search for.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        i.e. see examples above&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;example&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to install Chrome in Centos 6.5</title>
      <link>https://miroadamy.com/posts/2014-04-04-install-chrome-centos6/</link>
      <pubDate>Fri, 04 Apr 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-04-04-install-chrome-centos6/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;How to install Chrome in Centos 6.5&#xA;    &lt;div id=&#34;how-to-install-chrome-in-centos-65&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-to-install-chrome-in-centos-65&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Step 1. Add Google Yum Repository&#xA;    &lt;div id=&#34;step-1-add-google-yum-repository&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#step-1-add-google-yum-repository&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Create a new yum repository using below instructions.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt; sudo vim /etc/yum.repos.d/google.repo&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add following content to this file&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[google]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name=Google&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;baseurl=http://dl.google.com/linux/rpm/stable/$basearch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;enabled=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpgcheck=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Step 2: Install/Update Google Chrome&#xA;    &lt;div id=&#34;step-2-installupdate-google-chrome&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#step-2-installupdate-google-chrome&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Richard Lloid provided an shell script to grab libraries from a more recent Linux distro, put them in a tree (/opt/google/chrome/lib) exclusively picked up by Google Chrome and then you can indeed run Google Chrome on CentOS 6.4 or later. &lt;a href=&#34;http://chrome.richardlloyd.org.uk/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Read More&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Gitolite permissions setup</title>
      <link>https://miroadamy.com/posts/2014-04-02-gitolite-permissions/</link>
      <pubDate>Wed, 02 Apr 2014 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2014-04-02-gitolite-permissions/</guid>
      <description>&lt;p&gt;This documents how to enforce the Gitolite permission to make LIVE branch writeable only by team leads&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;How gitolite works&#xA;    &lt;div id=&#34;how-gitolite-works&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-gitolite-works&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Repository permission structure&#xA;    &lt;div id=&#34;repository-permission-structure&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#repository-permission-structure&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This is general format of repo definition&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;REPO NAME&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   rule line&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   rule line&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;for example&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@staff          =   dilbert alice wally bob&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;repo foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    RW+         =   dilbert     # line 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    RW+ dev     =   alice       # line 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -           =   wally       # line 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    RW  temp/   =   @staff      # line 4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    R           =   ashok       # line 5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The Rule line has format:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Difference between matching and simple Git push</title>
      <link>https://miroadamy.com/posts/2013-12-31-difference-between-matching-and-simple-git-push/</link>
      <pubDate>Tue, 31 Dec 2013 16:41:38 -0500</pubDate>
      
      <guid>https://miroadamy.com/posts/2013-12-31-difference-between-matching-and-simple-git-push/</guid>
      <description>&lt;p&gt;I started to see this message in some of my Git environments&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Git 2.0 from &amp;#39;matching&amp;#39; to &amp;#39;simple&amp;#39;. To squelch this message&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;and maintain the current behavior after the default changes, use:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global push.default matching&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;To squelch this message and adopt the new behavior now, use:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config --global push.default simple&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;This is collection of information gathered from Stackoverflow, Git docs and various internet sources.&#xA;Putting it together so that I do not have to google it again.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Installing and running &#39;naked&#39; hybris platform</title>
      <link>https://miroadamy.com/posts/2012-08-17-install-hybris/</link>
      <pubDate>Fri, 17 Aug 2012 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2012-08-17-install-hybris/</guid>
      <description>&lt;h1 class=&#34;relative group&#34;&gt;Installing and running &amp;ldquo;naked&amp;rdquo; hybris platform&#xA;    &lt;div id=&#34;installing-and-running-naked-hybris-platform&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#installing-and-running-naked-hybris-platform&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Log of an exercise to install and start the Hybris without all those fancy modules&lt;/p&gt;&#xA;&lt;p&gt;Starting point: &lt;code&gt;hybris-platform-4.7.1.zip&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Install point: &lt;code&gt;/opt/hybris-platform/hybris-platform-4.7.1&lt;/code&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Start (with HSQLdb)&#xA;    &lt;div id=&#34;start-with-hsqldb&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#start-with-hsqldb&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~ $ cd /opt/hybris-platform/hybris-platform-4.7.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hybris-platform-4.7.1 $ cd bin/platform/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;platform $ pwd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/opt/hybris-platform/hybris-platform-4.7.1/bin/platform&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;platform $ . ./setantenv.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Setting ant home to: /opt/hybris-platform/hybris-platform-4.7.1/bin/platform/apache-ant-1.8.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Apache Ant(TM) version 1.8.2 compiled on April 21 2011&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;platform $ ant clean all | tee ant-clean-all.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;=&amp;gt; Select &lt;code&gt;develop&lt;/code&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Gitolite Administration Guide</title>
      <link>https://miroadamy.com/posts/2012-08-06-gitilite-admin/</link>
      <pubDate>Mon, 06 Aug 2012 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2012-08-06-gitilite-admin/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;How to setup new client&#xA;    &lt;div id=&#34;how-to-setup-new-client&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#how-to-setup-new-client&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;You need to be &lt;strong&gt;pensieve admin&lt;/strong&gt; to do this.&#xA;You will have to login as service user (non-host account) and su to root.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;create new Linux user on pensieve&lt;/li&gt;&#xA;&lt;li&gt;setup gitolite:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;git clone &amp;lt;git://github.com/sitaramc/gitolite&amp;gt;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;mkdir bin; export PATH=$PATH:~/bin&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;gitolite/install -ln&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;add own public key to gitolite to get access to gilotile-admin repo (note the naming restrictions!!)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;gitolite setup -pk miro.pub&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;get public key for the client account admin and add it (there can be multiple admins)&lt;/li&gt;&#xA;&lt;li&gt;clone the gitolite-admin repo from workstation whose pub key was added&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;git clone &amp;lt;client@pensieve.thinkwrap&amp;gt;.[com:gitolite-admin.git](http://comgitolite-admin.git/)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;add the key to the repo&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;cd gitolite-admin&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;cp ~/mykey.pub keydir&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;vim conf/gitolite conf&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;add the newly added account admit to repos, create new repos if required&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;All gitolite installs are independent so modification in one hosting user have zero impact on others.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Using Gitolite for code sharing setup</title>
      <link>https://miroadamy.com/posts/2012-06-21-gitolite-setup/</link>
      <pubDate>Thu, 21 Jun 2012 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2012-06-21-gitolite-setup/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;General setup of code sharing host&#xA;    &lt;div id=&#34;general-setup-of-code-sharing-host&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#general-setup-of-code-sharing-host&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The code sharing host (&lt;strong&gt;Pensieve&lt;/strong&gt;) is dedicated Linux server in DMZ, accessible from external locations as well as from internal network&#xA;(dual homed) - for the build server access.&lt;/p&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Main features&#xA;    &lt;div id=&#34;main-features&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#main-features&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;multiple users&lt;/li&gt;&#xA;&lt;li&gt;each user represent a client:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;e.g. users client1&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Users are separated by Unix permissions:&#xA;    &lt;div id=&#34;users-are-separated-by-unix-permissions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#users-are-separated-by-unix-permissions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;access rights to /home/USER are 0700 - no access except the dedicated user&lt;/li&gt;&#xA;&lt;li&gt;only ThinkWrap has root access or sudo access&lt;/li&gt;&#xA;&lt;li&gt;the access via ssh for the user is blocked - the user client1 cannot log in using ssh and get shell, only use git to pull or push changes&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Inside each user, there are multiple projects.&#xA;    &lt;div id=&#34;inside-each-user-there-are-multiple-projects&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#inside-each-user-there-are-multiple-projects&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;These projects will have multiple repositiories and will follow the naming convention:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Configuring permanent time updates for Linux</title>
      <link>https://miroadamy.com/posts/2011-02-03-linux-time/</link>
      <pubDate>Thu, 03 Feb 2011 11:22:48 +0800</pubDate>
      
      <guid>https://miroadamy.com/posts/2011-02-03-linux-time/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;1) make sure the DNS works&#xA;    &lt;div id=&#34;1-make-sure-the-dns-works&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#1-make-sure-the-dns-works&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo vi /etc/resolv.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /etc/resolv.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nameserver 208.67.222.222&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nameserver 208.67.220.220&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nameserver 192.168.16.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;2) check that you have ntpd installed&#xA;    &lt;div id=&#34;2-check-that-you-have-ntpd-installed&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#2-check-that-you-have-ntpd-installed&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;cat /etc/ntp.conf&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;3) make it work in all&#xA;    &lt;div id=&#34;3-make-it-work-in-all&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#3-make-it-work-in-all&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/sbin/chkconfig --list | grep ntpd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /sbin/chkconfig --level 2345 ntpd on&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;4) Initial sync&#xA;    &lt;div id=&#34;4-initial-sync&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#4-initial-sync&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;sudo /usr/sbin/ntpdate pool.ntp.org&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Unit testing debt</title>
      <link>https://miroadamy.com/posts/2008-05-19-unit-testing-debt/</link>
      <pubDate>Mon, 19 May 2008 23:44:17 -0400</pubDate>
      
      <guid>https://miroadamy.com/posts/2008-05-19-unit-testing-debt/</guid>
      <description>&lt;p&gt;I had the pleasure to listen very interesting podcast where Scott Hanselman and Quetzal Bradley discussed unit testing named &#34;&lt;a href=&#34;http://www.hanselminutes.com/default.aspx?showID=121&#34; target=&#34;_blank&#34;&gt;Testing after Unit Tests&lt;/a&gt;&#34;. To increase the Google Karma of the information discussed I have decided to rehash and sum up few main ideas of this discussion.&lt;/p&gt;&#xA;&lt;p&gt;Quetzal introduced the idea of &#34;negative coverage&#34; - meaning that if you have 88 % test coverage, you should not see this as something positive you have achieved, but as something missing (you miss 12 % of completion) - thus the title of this post.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
