<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Terry's journal</title>
    <description>journalctl -f $(which terrywang)
</description>
    <link>http://terrywang.net/</link>
    <atom:link href="http://terrywang.net/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 16 Apr 2021 13:39:40 +1000</pubDate>
    <lastBuildDate>Fri, 16 Apr 2021 13:39:40 +1000</lastBuildDate>
    <generator>Jekyll v4.2.0</generator>
    
      <item>
        <title>On Passing the CKA Certification</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Passed the CKA (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;k8s&lt;/code&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;v1.20&lt;/code&gt;); don’t know the score. The learning journey matters more than the outcome ;-)&lt;/p&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CKA&lt;/code&gt; is my 1st IT certification in 7 years, last obtained was the CCA for XenServer 6.0 when working at Citrix (good old days).&lt;/p&gt;

&lt;p&gt;As a hands-on type of guy holding the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;spartan&lt;/code&gt; style - &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;show me the fking code / skill&lt;/code&gt; value, I am NO big fan of collecting IT certifications (badges). They don’t mean one can do the work well, let alone their productivity.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;You can most likely validate if the candidate is smart but &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NOT&lt;/code&gt; if he/she can output productivity (optional - under pressure) -_-z&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Will use this analogy to explain the reason behind getting the CKA certification:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Someone has been building for 20 years with success, he/she does NOT need a licence to be able to build, however, a proper builder licence is required so as to build LEGALLY (for self and clients).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Looking back, personally I’ve been dealing with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;k8s&lt;/code&gt; since Feb 2018 (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;v1.9.0&lt;/code&gt; using the self-hosted &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kubeadm&lt;/code&gt; flavour. I’ve never done &lt;a href=&quot;https://twitter.com/kelseyhightower&quot;&gt;@kelseyhightower&lt;/a&gt;’s &lt;a href=&quot;https://github.com/kelseyhightower/kubernetes-the-hard-way&quot;&gt;Kubernetes the hard way&lt;/a&gt;, it’s good to do but NOT necessary.&lt;/p&gt;

&lt;h3 id=&quot;preparing-for-the-exam&quot;&gt;Preparing for the exam&lt;/h3&gt;

&lt;p&gt;I’ve completed the &lt;a href=&quot;https://training.linuxfoundation.org/training/kubernetes-fundamentals/&quot;&gt;k8s fundamentals LFS258&lt;/a&gt; course (best on market) and did most of the labs, focusing on areas that I am not that familiar with, considering the fact that I’ve been working on a specific flavour of k8s on a daily basis for 2+ years.&lt;/p&gt;

&lt;h3 id=&quot;doing-the-exam&quot;&gt;Doing the exam&lt;/h3&gt;

&lt;p&gt;I managed to finished 16.5 out of 17 tasks within 2 hours, didn’t know Network Policy good enough as the gravity flavour does not use it at all. Frankly speaking, I consider the exam intense and challenging considering my skill and background.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: The PSI exam user experience did have some negative impact on efficiency, network latency was OK. It’ll be good if LFS258 course can provide a simulation exam mock at the end.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;outcome&quot;&gt;Outcome&lt;/h3&gt;

&lt;p&gt;Passed, no score card or report (it’s a flaw)…&lt;/p&gt;

&lt;p&gt;While the outcome is important, enjoy (and benefit from) the learning journey.&lt;/p&gt;

&lt;h3 id=&quot;some-thoughts&quot;&gt;Some Thoughts&lt;/h3&gt;

&lt;p&gt;the CKA certification exam is unique in may ways:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;2 hours, 17-20 hands-on tasks including k8s cluster troubleshooting and upgrade a cluster the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kubeadm&lt;/code&gt; way&lt;/li&gt;
  &lt;li&gt;all hands-on tasks are performed in a web based Terminal Emulator (1 additional tab is allowed)&lt;/li&gt;
  &lt;li&gt;access to &lt;a href=&quot;https://k8s.io/docs&quot;&gt;k8s docs&lt;/a&gt; and GitHub repos (never heard of before…)&lt;/li&gt;
  &lt;li&gt;freedom to install any package available from distro’s repo (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vim&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tmux&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jq&lt;/code&gt;, etc.) use your favourite tools to create the productivity workflow&lt;/li&gt;
  &lt;li&gt;Remotely proctored via chrome extension (via webcam + microphone), you can even request a break during the exam (I didn’t…)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;tips--tricks&quot;&gt;Tips &amp;amp; Tricks&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RTFQ&lt;/code&gt; - read the Questions carefully at least twice!&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Check context, check context, check context!!!&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Time management&lt;/li&gt;
  &lt;li&gt;develop a winning strategy to pass (make sure to get the ones you know first and correct!)&lt;/li&gt;
  &lt;li&gt;get Bash completion to work for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kubectl&lt;/code&gt; and alias it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;k&lt;/code&gt; or whatever (you don’t have to remember, all available in docs)&lt;/li&gt;
  &lt;li&gt;Know just enough &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Vim&lt;/code&gt; (or any editor that works you the best, e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nano&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;emacs&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;micro&lt;/code&gt;, etc.) to efficiently editing YAML. Create a minimal &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.vimrc&lt;/code&gt; if that can help improve productivity.&lt;/li&gt;
  &lt;li&gt;I don’t find &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tmux&lt;/code&gt; useful in the exam, don’t get me wrong, I am a tmux fan, it’s been a part of my daily productivity workflow for 10+ years, it just doesn’t add much value to the exam. If you see it mentioned elsewhere, consider it bragging -_-z&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;/h2&gt;

&lt;p&gt;I highly recommend the CKA for those who would like to pursue a career related to infrastructure, especially the popular and high demand container orchestration skill tree (and/or its ecosystem).&lt;/p&gt;

&lt;p&gt;I’ll probably do the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CK{AD,S}&lt;/code&gt; if I have the energy (incentive), and $ / time to spare.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Fun facts: As many who know me already know, I’ve been using Linux as my primary workstation OS, self-hosting countless Servers/Services since 2003 (a true &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;distro-hopper&lt;/code&gt;), consider myself a poweruser (self-claimed Linux Ninja) but I’ve never held any Linux certifications (RHCE, LPI, LFCS, LFCE, or you name it, etc.) and no plan to do so ;-)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;not-yet---resources-for-continuous-improvement--&quot;&gt;Not Yet - Resources for Continuous Improvement ;-)&lt;/h2&gt;

&lt;p&gt;Best free Training I’ve come across, from Gravitational: &lt;a href=&quot;https://github.com/gravitational/workshop&quot;&gt;gravitational/workshop&lt;/a&gt;
Deep dive into k8s networking, RBAC, security, logging, monitoring, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://learnk8s.io/&quot;&gt;learnk8s.io&lt;/a&gt; Full package ;-) (paid, well worth it)&lt;/p&gt;

&lt;p&gt;Reference: Original Posted on &lt;a href=&quot;https://www.linkedin.com/posts/terrywan9_cka-certified-kubernetes-administrator-was-activity-6787926229262716928-3Pcv&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;EOL&lt;/p&gt;
</description>
        <pubDate>Wed, 14 Apr 2021 13:00:00 +1000</pubDate>
        <link>http://terrywang.net/2021/04/14/on-passing-the-cka.html</link>
        <guid isPermaLink="true">http://terrywang.net/2021/04/14/on-passing-the-cka.html</guid>
        
        <category>Linux</category>
        
        <category>IT</category>
        
        <category>k8s</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>vmtouch The Virtual Memory Toucher</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Everyone loves &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;touch&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vmtouch&lt;/code&gt;&lt;/strong&gt; is the virtual memory toucher, portable file system cache diagnostics and control.&lt;/p&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;

&lt;p&gt;OS kernel takes care of filesystem cache, generated from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;read&lt;/code&gt; / &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;write&lt;/code&gt;. However, users don’t have much fine-grained control over what files / directories to cache / drop when more memory is needed to run new applications.&lt;/p&gt;

&lt;p&gt;Take the Linux kernel exposes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/proc/sys/vm/drop_caches&lt;/code&gt; for privileged users to signal the kernel to drop clean caches, as well as reclaimable slab objects like dentries and inodes to free up memory.&lt;/p&gt;

&lt;p&gt;You only do&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;free pagecache
 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo 1 &amp;gt; /proc/sys/vm/drop_caches&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;free reclaimable slab objects (includes dentries and inodes)
 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo 2 &amp;gt; /proc/sys/vm/drop_caches&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;free slack objects and page cache
 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo 3 | sudo tee /proc/sys/vm/drop_caches&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;See Documentation &lt;a href=&quot;https://www.kernel.org/doc/Documentation/sysctl/vm.txt&quot;&gt;sysctl/vm.txt&lt;/a&gt; for more info.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vmtouch&lt;/code&gt; offers more flexible and granular control over what files, directories (can be recursive) to load into memory. It is also possible to evict files from the cache.&lt;/p&gt;

&lt;p&gt;Files loaded by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vmtouch&lt;/code&gt; get locked into memory and stay there until system is restarted or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vmtouch&lt;/code&gt; is terminated. It’s fun to use.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Keep in mind that the poweer of shooting yourself in the foot is in your own hands. Use it wisely and carefully.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;NOTE: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vmtouch&lt;/code&gt; is for page cache. If you are looking for solution to manage browser profile(s) in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tmpfs&lt;/code&gt; / &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ramfs&lt;/code&gt; and periodically sync back to disk, take a U-turn and look at &lt;a href=&quot;https://github.com/graysky2/profile-sync-daemon&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;profile-sync-daemon&lt;/code&gt; AKA &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;psd&lt;/code&gt; &lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 08 Feb 2021 18:09:00 +1100</pubDate>
        <link>http://terrywang.net/2021/02/08/vmtouch-the-virtual-memory-toucher.html</link>
        <guid isPermaLink="true">http://terrywang.net/2021/02/08/vmtouch-the-virtual-memory-toucher.html</guid>
        
        <category>Linux</category>
        
        <category>IT</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>Time to Go All In for Podman</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Docker Compose&lt;/code&gt; support lands in Podman 3.0.0 (dev as of 3rd Feb, GA soon). It can finally work seamlessly with Docker Compose as drop-in replacement to orchestrate containers.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: Initial support, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rootless&lt;/code&gt; not yet supported.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;

&lt;p&gt;What is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;podman&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;Daemonless container engine for managing OCI compliant containers on Linux.&lt;/p&gt;

&lt;p&gt;For a long time, missing Docker Compose equivalent feature (to orchestrate multiple containers on single container runtime host) is a deal-breaker.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;podman-compose&lt;/code&gt; script is an option but it’s nowhere near drop-in replacement. Lost count on how many times I had to modify the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose.yml&lt;/code&gt; file to make it work.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Docker CE&lt;/code&gt; had been working well for my use cases for a long time (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Dockerfile&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Compose&lt;/code&gt;, etc.).&lt;/p&gt;

&lt;p&gt;Reason why I started using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;podman&lt;/code&gt;: Fedora 31 onwoards, Docker CE started to hit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cgroup v2&lt;/code&gt; support issue, the removal of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-ce&lt;/code&gt; from official DNF repo ative package / repo issues (lag behind).&lt;/p&gt;

&lt;p&gt;Enable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;podman.socket&lt;/code&gt; which implements Docker REST API and exposes a UNIX domain socket as backend, to provide feature parity (still daemonless?) ;-)&lt;/p&gt;

&lt;p&gt;It can also generate YAML (and systemd units) to streamline the workflow to migrate from dev to production, from workstation to single host container runtime engine and/or production k8s clusters.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: Not all distributions provides &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;podman-compose&lt;/code&gt; package (Arch / Manjaro and Fedora do AFAIK).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Podman&lt;/code&gt; alone cannot replace Docker CE. You’ll need the complete next generation container toolchain: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Podman&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Buildah&lt;/code&gt; (building OCI container images), &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Skopeo&lt;/code&gt; (working with remote contianer registries).&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 03 Feb 2021 18:23:00 +1100</pubDate>
        <link>http://terrywang.net/2021/02/03/time-to-all-in-for-podman.html</link>
        <guid isPermaLink="true">http://terrywang.net/2021/02/03/time-to-all-in-for-podman.html</guid>
        
        <category>Linux</category>
        
        <category>IT</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>The Fall of CentOS</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Oracle Linux&lt;/code&gt; (run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RHCK&lt;/code&gt;) as free RHEL alternative.&lt;/p&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;

&lt;p&gt;Goodbye &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CentOS&lt;/code&gt;, well done IBM (Red Hat).&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;There will be NO CentOS 9.&lt;/li&gt;
  &lt;li&gt;No updates for CentOS 8 after 31 December 2021.&lt;/li&gt;
  &lt;li&gt;No updates for CentOS 7 after 30 June 2024.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CentOS Steam&lt;/code&gt; will be the only release using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CentOS&lt;/code&gt; badge moving forward, sitting in between Fedora (cutting edge) and RHEL (production stability), as a development rolling branch for RHEL.&lt;/p&gt;

&lt;p&gt;Oracle Linux is&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;completely free to use, distribute and upgrade&lt;/li&gt;
  &lt;li&gt;application binary compatible with RHEL whether running the Unbreakable Enterprise Kernel or Red Hat compatible kernel.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;see the &lt;a href=&quot;https://www.oracle.com/a/ocom/docs/027617.pdf&quot;&gt;FAQ&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;Funny enough, I have been maintaining Oracle Linux {5,6,7,8} VM images since I started using Vagrant as a part of the development &amp;amp; test workflow. Looks like it has paid off (facepalm), the switch is painless.&lt;/p&gt;

&lt;p&gt;It’s a great opportunity for Oracle Linux to recovery lost territory, look forward to seeing the rise of Oracle Linux, ironically, thanks to IBM &amp;amp; Red Hat.&lt;/p&gt;

&lt;p&gt;I don’t believe people would refuse to use &lt;strong&gt;free&lt;/strong&gt; (&amp;amp; reliable, with good docs) Oracle Linux simply because they dislike (hate) Oracle (the company), same applies to VirtualBox.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;The best tools are the ones that do what you want at the best cost.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As long as it does the job, who cares about the logo.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;Shut up and get the work done.&quot;&lt;/code&gt; - Linus Torvalds&lt;/p&gt;

&lt;h2 id=&quot;2020-12-14-update&quot;&gt;2020-12-14 update&lt;/h2&gt;

&lt;p&gt;Founder of CentOS started a new RHEL rebuild called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rocky Linux&lt;/code&gt;, aiming to be a community driven, enterprise grade production ready Linux distribution.&lt;/p&gt;

&lt;p&gt;In the meantime, Senior Directory of Oracle Linux &amp;amp; Virtualization wrote an interesting &lt;a href=&quot;https://blogs.oracle.com/linux/need-a-stable,-rhel-compatible-alternative-to-centos-three-reasons-to-consider-oracle-linux&quot;&gt;blog post&lt;/a&gt; with the intention to attract CentOS refugees as soon as possible by throwing the &lt;a href=&quot;https://github.com/oracle/centos2ol&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;centos2ol&lt;/code&gt;&lt;/a&gt; 1-click switch script ;-)&lt;/p&gt;

&lt;p&gt;Oracle Linux has been tracking RHEL releases consistently (since 2006), faster than CentOS, making it a better option if the Oracle Logo is not a concern.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;errata typiclly within 24 hours&lt;/li&gt;
  &lt;li&gt;minor releases within 5 business days&lt;/li&gt;
  &lt;li&gt;major releases within 3 months&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2 kernel options&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;RHCK (100% RHEL)&lt;/li&gt;
  &lt;li&gt;UEK (more modern kernel tracking mainline - &lt;a href=&quot;https://github.com/oracle/linux-uek&quot;&gt;UEK source code&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Supports workloads on both x86 and ARM systems, hip.&lt;/p&gt;

&lt;p&gt;ISO images, Vagrant Boxes, container images and Raspberry Pi disk images can be directly downloaded from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;---&amp;gt;&lt;/code&gt; &lt;a href=&quot;https://yum.oracle.com/oracle-linux-isos.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;YUM&lt;/code&gt;&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;References&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.redhat.com/en/blog/faq-centos-stream-updates&quot;&gt;CentOS Stream Updates - FAQ&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.redhat.com/en/blog/centos-stream-building-innovative-future-enterprise-linux&quot;&gt;CentOS Stream is the future of CentOS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=CentOS-8-Ending-For-Stream&quot;&gt;Phoronix coverage&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cyberciti.biz/linux-news/centos-linux-8-will-end-in-2021-and-shifts-focus-to-centos-stream/&quot;&gt;nixCraft coverage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 09 Dec 2020 14:00:00 +1100</pubDate>
        <link>http://terrywang.net/2020/12/09/the-fall-of-centos.html</link>
        <guid isPermaLink="true">http://terrywang.net/2020/12/09/the-fall-of-centos.html</guid>
        
        <category>Linux</category>
        
        <category>IT</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>kitty tweaks for macOS</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kitty&lt;/code&gt; has become my preferred secondary Terminal Emulator on macOS.&lt;/p&gt;

&lt;p&gt;To make it as productive as it is under Linux, and in line with muscle memory tweaks are needed, add the following in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.config/kitty.conf&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;macos_option_as_alt &lt;span class=&quot;nb&quot;&gt;yes
&lt;/span&gt;map alt+left send_text all &lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;1b&lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;62
map alt+right send_text all &lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;1b&lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;66
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;
&lt;hr /&gt;

&lt;p&gt;Personally I started using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kitty&lt;/code&gt; on Linux as an alternative to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Konsole&lt;/code&gt; as it’s light-weight, featureful and GPU accelerated (offload rendering to GPU).&lt;/p&gt;

&lt;p&gt;I still use other terminal emulaters like, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Guake&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tilix&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GNOME Terminal&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alacritty&lt;/code&gt;, etc. under different scenarios but &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kitty&lt;/code&gt; has really grown on me.&lt;/p&gt;

&lt;p&gt;See the full list &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;---&amp;gt;&lt;/code&gt; &lt;a href=&quot;https://sites.google.com/site/imterry/computer/tools&quot;&gt;Productivity Tools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adopting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kitty&lt;/code&gt; on macOS has its own challenges, yes, it’s the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;⌥&lt;/code&gt; option key.&lt;/p&gt;

&lt;p&gt;Primary terminal emulator &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iTerm2&lt;/code&gt;, I’ve been using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Nature Text Editing&lt;/code&gt; key presets with left &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;⌥&lt;/code&gt; option mapping to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Esc+&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That way &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;⌥ + ←/→&lt;/code&gt; behaves the same as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alt + b/f&lt;/code&gt;, in line with Bash / readline key bindings &lt;strong&gt;which has already become a part of my muscal memory.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To do the same for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kitty&lt;/code&gt;, in its config file &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/.config/kitty.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use Option as alt&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;macos_option_as_alt &lt;span class=&quot;nb&quot;&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;At the bottm append the following 2 key mappings and restart kitty, pat, pat ;-)&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;map alt+left send_text all &lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;1b&lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;62
map alt+right send_text all &lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;1b&lt;span class=&quot;se&quot;&gt;\x&lt;/span&gt;66
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now behaviours of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;⌥ + ←/→&lt;/code&gt; are in line with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;⌥ (alt) + b/f&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make kitty productive again ;-) Have fun petting kitty.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reference: https://github.com/kovidgoyal/kitty/issues/838&lt;/p&gt;

&lt;p&gt;Other &lt;a href=&quot;https://sites.google.com/site/imterry/computer/tools&quot;&gt;Terminal Emulators&lt;/a&gt; I use from time to time, still quite like some of them (e,g, drop-down style like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Guake&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tilda&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 23 Jul 2020 16:00:00 +1000</pubDate>
        <link>http://terrywang.net/2020/07/23/kitty-tweaks-for-macos.html</link>
        <guid isPermaLink="true">http://terrywang.net/2020/07/23/kitty-tweaks-for-macos.html</guid>
        
        <category>Linux</category>
        
        <category>Productivity</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>iproute2 &amp; systemd output in JSON format</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Didn’t notice &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ip&lt;/code&gt; provided by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iproute2&lt;/code&gt; supports output in JSON format until I read about the &lt;a href=&quot;https://blog.kellybrazil.com/2019/11/26/bringing-the-unix-philosophy-to-the-21st-century/&quot;&gt;motivation&lt;/a&gt; behind &lt;a href=&quot;https://github.com/kellyjonbrazil/jc&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jc&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Example&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ip &lt;span class=&quot;nt&quot;&gt;-j&lt;/span&gt; a | jq
ip &lt;span class=&quot;nt&quot;&gt;-j&lt;/span&gt; r | jq
ip &lt;span class=&quot;nt&quot;&gt;-j&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;link&lt;/span&gt; | jq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;
&lt;hr /&gt;

&lt;p&gt;Must have JSON CLI utils for more productivity:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jq&lt;/code&gt; - who doesn’t know? &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sed&lt;/code&gt; for JSON data&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/tomnomnom/gron&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gron&lt;/code&gt;&lt;/a&gt; - makes JSON greppable. Super useful for people like me who cannot figure out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jq&lt;/code&gt; filters by simply looking at JSON code, get enlightened by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gron&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gron --ungron&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;jc&lt;/code&gt; - ideal for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;COMMAND | jc PARSER [OPTIONS]&lt;/code&gt; use cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iproute2&lt;/code&gt;, some &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemd&lt;/code&gt; provided &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*ctl&lt;/code&gt; command supports JSON output format as well. Most commonly used ones&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;journalctl&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# systemctl status&lt;/span&gt;
systemctl status sshd.service &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; json
systemctl status &lt;span class=&quot;nt&quot;&gt;-l&lt;/span&gt; sshd.service &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; json

&lt;span class=&quot;c&quot;&gt;# journalctl&lt;/span&gt;
journalctl &lt;span class=&quot;nt&quot;&gt;--since&lt;/span&gt; yesterday &lt;span class=&quot;nt&quot;&gt;--output&lt;/span&gt; json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Have fun processing JSON with turbocharged productivity ;-)&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 09 Jun 2020 18:00:00 +1000</pubDate>
        <link>http://terrywang.net/2020/06/09/iproute2-systemd-output-in-json.html</link>
        <guid isPermaLink="true">http://terrywang.net/2020/06/09/iproute2-systemd-output-in-json.html</guid>
        
        <category>Linux</category>
        
        <category>Productivity</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>Make Windows Productive Again with WSL 2</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Windows Terminal&lt;/code&gt; (Terminal Emulator) + &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ubuntu&lt;/code&gt; (20.04 latest LTS) via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WSL&lt;/code&gt; 2 + &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;winget&lt;/code&gt; makes Windows 10 productive for Linux / macOS power users.&lt;/p&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;
&lt;hr /&gt;

&lt;p&gt;I was given a Dell Latitude 5300 2-in-1 by a customer for a project. First impression: the build quality is not bad. What? it can be flipped to be a tablet, but no pencil (can’t find it attached).&lt;/p&gt;

&lt;p&gt;It runs Windows 10, hmm…&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;BIOS is secured with password.&lt;/li&gt;
  &lt;li&gt;No local Administrator priviledge.&lt;/li&gt;
  &lt;li&gt;VPN needs to stay ON.&lt;/li&gt;
  &lt;li&gt;Seamless Active Directory integration and SSO.&lt;/li&gt;
  &lt;li&gt;Tight Domain security policies enforced.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: tight security control - &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;give users no choice&lt;/code&gt; makes a lot of sense for a non-IT company, which can efficiently reduce helpdesk workload and operational cost.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I planned to install Ubuntu 20.04 in WSL 2 to run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ansible&lt;/code&gt; (which does not support Windows as control node) before getting the laptop.&lt;/p&gt;

&lt;p&gt;It took a week to get approval to be given &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Power User&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then the fun began&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Added the domain user to local Administrators group (opted out for helpdesk as a result) - this needs to be repeated after each power cycle (domain security poilicy).&lt;/li&gt;
  &lt;li&gt;Installed Windows Terminal&lt;/li&gt;
  &lt;li&gt;Enabled WSL 2&lt;/li&gt;
  &lt;li&gt;Failed to install Ubuntu 20.04 from MicroSoft Store (not provisioned yet based on error message - &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PUR - not augumented&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;Installed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;winget&lt;/code&gt; (instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scoop&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Store doesn’t sell, one can still install from Ubuntu 20.04 focal wsl &lt;a href=&quot;https://cloud-images.ubuntu.com/focal/current/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rootfs tarball&lt;/code&gt;&lt;/a&gt;, fine ;-)&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# wsl --import &amp;lt;DistributionName&amp;gt; &amp;lt;InstallLocation&amp;gt; &amp;lt;FileName&amp;gt;&lt;/span&gt;

PS C:&lt;span class=&quot;se&quot;&gt;\U&lt;/span&gt;sers&lt;span class=&quot;se&quot;&gt;\t&lt;/span&gt;wang&lt;span class=&quot;se&quot;&gt;\D&lt;/span&gt;ownloads&amp;gt; wsl &lt;span class=&quot;nt&quot;&gt;--import&lt;/span&gt; Ubuntu-20.04 &lt;span class=&quot;s1&quot;&gt;'C:\Users\twang\wsl\ubuntu'&lt;/span&gt; C:&lt;span class=&quot;se&quot;&gt;\U&lt;/span&gt;sers&lt;span class=&quot;se&quot;&gt;\t&lt;/span&gt;wang&lt;span class=&quot;se&quot;&gt;\D&lt;/span&gt;ownloads&lt;span class=&quot;se&quot;&gt;\f&lt;/span&gt;ocal-server-cloudimg-amd64-wsl.rootfs.tar.gz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: the default login is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;root&lt;/code&gt;, bad even for WSL use case. Create a new user and launch WSL as non-root user:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# create user&lt;/span&gt;
useradd &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-U&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; /bin/bash terry

&lt;span class=&quot;c&quot;&gt;# password-less sudo&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'terry ALL=(ALL) NOPASSWD:ALL'&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;sudo tee&lt;/span&gt; /etc/sudoers.d/terry &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;sudo chmod &lt;/span&gt;0440 /etc/sudoers.d/terry

&lt;span class=&quot;c&quot;&gt;# launch as user&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# wsl -u terry&lt;/span&gt;
wsl &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; Ubuntu-20.04 &lt;span class=&quot;nt&quot;&gt;-u&lt;/span&gt; terry
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Set Ubuntu Focal as default&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;wsl &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; Ubuntu-20.04
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;winget&lt;/code&gt; works well (early stage) as basic package manager installing required software.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;winget &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;terminal
winget &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;winscp

&lt;span class=&quot;c&quot;&gt;# winget search &amp;lt;keyword&amp;gt;&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# winget show&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# winget source list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;winget&lt;/code&gt; is known to be a AppGet fork, hopefully with Microsoft backed development, I won’t doubt that it’ll soon become &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;homebrew&lt;/code&gt; equivalent existence on Windows. Good for users, &lt;a href=&quot;https://news.ycombinator.com/item?id=23331287&quot;&gt;sad for AppGet&lt;/a&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scoop&lt;/code&gt; (may still have its place to install CLI utils) and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Chocolatey&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;know-just-enough-wsl-to-be-productive&quot;&gt;Know Just Enough WSL to be Productive&lt;/h2&gt;

&lt;p&gt;Fun facts&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Windows &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%userprofile%&lt;/code&gt; is mounted as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/mnt/c/Users/&amp;lt;username&amp;gt;&lt;/code&gt; as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FSTYPE&lt;/code&gt; —&amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drvfs&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\\wsl$&lt;/code&gt; leads to the parent directory of the list of Linux distributions installed.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;In Windows Terminal &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;explorer.exe .&lt;/code&gt; launches Windows Explorer in current working directory.&lt;/p&gt;

    &lt;blockquote&gt;
      &lt;p&gt;Equivalent to&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;open .&lt;/code&gt; on macOS&lt;/li&gt;
        &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xdg-open .&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dolphin .&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;other_file_manager .&lt;/code&gt; on Linux.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/blockquote&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Copying files from Windows to Linux (WSL 2), produces weird &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;filename&amp;gt;.Zone.Identifier&lt;/code&gt; files (NTFS related &lt;a href=&quot;https://github.com/microsoft/WSL/issues/4609&quot;&gt;bug&lt;/a&gt;) which it should not, wtf…&lt;/p&gt;

    &lt;p&gt;Never mind, just get rid of it &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;find ~ -type f -iname '*.Identifier' -exec rm -rfv {} +&lt;/code&gt;&lt;/p&gt;

    &lt;p&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fd&lt;/code&gt; if more comfortable with it ;-)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Don’t forget to symlink to Windows &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%userprofile%&lt;/code&gt; to make life in WSL easier&lt;/p&gt;
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; &lt;span class=&quot;nb&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-sf&lt;/span&gt; /mnt/c/Users/&amp;lt;username&amp;gt; ~/userprofile

 &lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~/userprofile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Overall Windows Terminal user experience is OK, it has huge room for improvements though, long way to go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Last but not least&lt;/strong&gt;, Linux in WSL 2 is NOT real Linux virtual machne. It is highly customised light-weight Hyper-V VM running customised kernel (Ubuntu 20.04 uses &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4.4.0&lt;/code&gt;). It doesn’t use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemd&lt;/code&gt; as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;init&lt;/code&gt; to initialise userspace, as a result none of the systemd &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*ctl&lt;/code&gt; commands works. Some other GNU or open source utils may not work either, compatibility will improve for sure.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Ubuntu in WSL is definitely NOT perfect.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It definitely won’t replace Linux on workstations and laptops for me in any sense, however, I won’t look back at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cygwin&lt;/code&gt; or running Linux VM using VirtualBox if I have to use Windows machines to get things done and deliver.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: Cygwin popularity declines with the rise of WSL. It is still the preferred choice for people running Windows 7 or older who needs quick &amp;amp; dirty light-weight &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POSIX&lt;/code&gt;-compatible programming and runtime environment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 02 Jun 2020 14:00:00 +1000</pubDate>
        <link>http://terrywang.net/2020/06/02/make-windows-productive-again.html</link>
        <guid isPermaLink="true">http://terrywang.net/2020/06/02/make-windows-productive-again.html</guid>
        
        <category>Linux</category>
        
        <category>Productivity</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>404 day, stay 200</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;It’s 404 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Not Found&lt;/code&gt; day of the year &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2020&lt;/code&gt; (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;404 * 5&lt;/code&gt;), everyone stay 200 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;OK&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;date&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-I&lt;/span&gt;
2020-04-04
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;
&lt;hr /&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl &lt;span class=&quot;nt&quot;&gt;-LIs&lt;/span&gt; who.is/responsible/4/covid-19
...
Server: Vanish
...
HTTP/1.1 404 Not Found
...

&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl &lt;span class=&quot;nt&quot;&gt;-LIs&lt;/span&gt; 2020.life/family/stay?status&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;safe&amp;amp;condition&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;healthy
...
Server: FeelingLucky
...
HTTP/2 200 OK
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 04 Apr 2020 15:43:00 +1100</pubDate>
        <link>http://terrywang.net/2020/04/04/404-day-stay-200.html</link>
        <guid isPermaLink="true">http://terrywang.net/2020/04/04/404-day-stay-200.html</guid>
        
        <category>Linux</category>
        
        <category>Lifestyle</category>
        
        
        <category>Lifestyle</category>
        
      </item>
    
      <item>
        <title>sysctl drop_caches is write-only since Linux 5.5</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;terry@n54l:~&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; /proc/sys/vm/drop_caches
&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt;: /proc/sys/vm/drop_caches: Permission denied

terry@n54l:~&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt;
root@n54l:~# &lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; /proc/sys/vm/drop_caches
&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt;: /proc/sys/vm/drop_caches: Permission denied
root@n54l:~# &lt;span class=&quot;nb&quot;&gt;whoami
&lt;/span&gt;root

&lt;span class=&quot;c&quot;&gt;# WTF?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Since Linux 5.5, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drop_caches&lt;/code&gt; has become write-only (mode bits &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0200&lt;/code&gt;) to avoid confusions when operating at scale.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://kernelnewbies.org/Linux_5.5&quot;&gt;Kernel Newbies Linux 5.5&lt;/a&gt;: make &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drop_caches&lt;/code&gt; sysctl write-only &lt;a href=&quot;https://git.kernel.org/linus/204cb79ad42f015312a5bbd7012d09c93d9b46fb&quot;&gt;commit&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;main&quot;&gt;main()&lt;/h2&gt;
&lt;hr /&gt;

&lt;p&gt;From the git &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=204cb79ad42f015312a5bbd7012d09c93d9b46fb&quot;&gt;commit&lt;/a&gt;: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;kernel: sysctl: make drop_caches write-only&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drop_caches&lt;/code&gt; mode bits changed from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0644&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0200&lt;/code&gt; which means &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;write-only&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Justification&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Currently, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drop_caches&lt;/code&gt; proc file and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sysctl&lt;/code&gt; read back the last value written, suggesting this is somehow a stateful setting instead of a one-time command.  Make it write-only, like e.g &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;compact_memory&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It makes sense, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;drop_caches&lt;/code&gt; is one-off command, stateless. It really confuses if operating at scale, I’ve been in that boat before (many times).&lt;/p&gt;

&lt;p&gt;Author explained a bit more with real world experience:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;While mitigating a VM problem at scale in our fleet, there was confusion about whether writing to this file will permanently switch the kernel into a non-caching mode.

This influences the decision making in a tense situation, where tens of people are trying to fix tens of thousands of affected machines: Do we need a rollback strategy? What are the performance implications of operating in a non-caching state for several days?

It also caused confusion when the kernel team said we may need to write the file several times to make sure it's effective (&quot;But it already reads back 3?&quot;).
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;another-sysctl-syscall-fun-fact&quot;&gt;Another sysctl syscall fun fact&lt;/h2&gt;

&lt;p&gt;Came across this in Linux 5.5(https://kernelnewbies.org/Linux_5.5) change log&lt;/p&gt;

&lt;p&gt;Remove the sysctl system call (deprecated a long time ago) &lt;a href=&quot;https://git.kernel.org/linus/61a47c1ad3a4dc6882f01ebdc88138ac62d0df03&quot;&gt;commit&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;This system call has been deprecated almost since it was introduced.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;In a survey of the linux distributions I can no longer find any of them that enable CONFIG_SYSCTL_SYSCALL. The only indication that I can find that anyone might care is that a few of the defconfigs in the kernel enable CONFIG_SYSCTL_SYSCALL However this appears in only 31 of 414 defconfigs in the kernel, so I suspect this symbols presence is simply because it is harmless to include rather than because it is necessary.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;As there appear to be no users of the sysctl system call, remove the code. As this removes one of the few uses of the internal kernel mount of proc I hope this allows for even more simplifications of the proc filesystem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I decided to do a validation on the distributions I use daily. As you can see below, obviously Arch Linux, Fedora were fine, but Ubuntu, hmm… ;-)&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# fedora 31&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;PRETTY_NAME&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Fedora 31 (Thirty One)&quot;&lt;/span&gt;
root@n54l:/boot# &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;CONFIG_SYSCTL_SYSCALL config-&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# arch&lt;/span&gt;
terry@netbook:~&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;PRETTY_NAME /etc/os-release
&lt;span class=&quot;nv&quot;&gt;PRETTY_NAME&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Arch Linux&quot;&lt;/span&gt;
terry@netbook:~&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;zcat /proc/config.gz | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;CONFIG_SYSCTL_SYSCALL

&lt;span class=&quot;c&quot;&gt;# ubuntu 18.04&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;PRETTY_NAME /etc/os-release
&lt;span class=&quot;nv&quot;&gt;PRETTY_NAME&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Ubuntu 18.04.4 LTS&quot;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;CONFIG_SYSCTL_SYSCALL /boot/config-&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;CONFIG_SYSCTL_SYSCALL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;y
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 03 Apr 2020 15:52:00 +1100</pubDate>
        <link>http://terrywang.net/2020/04/03/sysctl-drop_caches_write-only.html</link>
        <guid isPermaLink="true">http://terrywang.net/2020/04/03/sysctl-drop_caches_write-only.html</guid>
        
        <category>Linux</category>
        
        <category>Lifestyle</category>
        
        
        <category>Technology</category>
        
      </item>
    
      <item>
        <title>systemctl isolate home.target &amp;&amp; systemctl restart blog.service</title>
        <description>&lt;h2 id=&quot;tldr&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TL;DR&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;I am resurrecting self-hosted personal blog, tweets are often &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;instant spark of thoughts&lt;/code&gt; like spring, quick fun but hard to search and reference when needed. Contents and opinions of value should be saved and stored properly, in a better form, static pages are simple, indexable, searchable and can be easily hosted&lt;/p&gt;

&lt;p&gt;So &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh&lt;/code&gt;, let me &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;touch&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;terry@terry.im:~&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt;
root@terry.im:~# systemctl isolate home.target
root@terry.im:~# systemctl restart blog.service
root@terry.im:~# &lt;span class=&quot;nb&quot;&gt;whoami
&lt;/span&gt;root

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;main&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;main()&lt;/code&gt;&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;Year 2020 turned out to be beyond most people’s wildest imagination. It’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;404&lt;/code&gt; * 5, the whole world has been turned upside down by the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;COVID-19&lt;/code&gt; outbreak. The world has &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NOT&lt;/code&gt; seen a pandemic at this scale since the 1918 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;H1N1&lt;/code&gt; pandemic.&lt;/p&gt;

&lt;p&gt;For Sydney (Australia), even worse, hit by the devastating bush fire across the country, worst in 30+ years, along with drought, followed by flood. Elements of magic: fire, water, earth, lightning, thunder… Human beings are so small in front of nature, let us show respect and be in awe of Mother Nature.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;NOTE: 404 has special meaning for people live inside the GFW (or massive censorship), it can represent disappeared key words, posts (content of any type) or even human being.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pulling all tweets, sync using cron job, or download and load archives periodically sounds viable. However, there is no good front-end UI (people like Linus and myself, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;look up&lt;/code&gt;, hmmm… can’t do UI). Indexing tweets using Elastic Search, visualise and analyse using Kibana sounds funky but apparently an overkill for someone who’s no one.&lt;/p&gt;

&lt;p&gt;So, shorter blog posts, higher frequency &amp;amp; quality is the way to go. Furthermore, as the master of self-hosted blog with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;root&lt;/code&gt; of underlying infrastructure, I am the real owner of my thoughts (contents). &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo 404 &amp;gt; /dev/null&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Everyone (with extended family and loved ones) stay &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;200&lt;/code&gt; (OK), stay healthy &amp;amp; safe.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EOF&lt;/code&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 02 Apr 2020 20:49:18 +1100</pubDate>
        <link>http://terrywang.net/2020/04/02/systemctl-restart-blog.service.html</link>
        <guid isPermaLink="true">http://terrywang.net/2020/04/02/systemctl-restart-blog.service.html</guid>
        
        <category>Linux</category>
        
        <category>Lifestyle</category>
        
        
        <category>Technology</category>
        
      </item>
    
  </channel>
</rss>
