<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: wx-yz</title>
    <description>The latest articles on DEV Community by wx-yz (@wxyz).</description>
    <link>https://dev.to/wxyz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F382312%2F1cc37368-805d-4816-b660-82dfebecb730.png</url>
      <title>DEV Community: wx-yz</title>
      <link>https://dev.to/wxyz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wxyz"/>
    <language>en</language>
    <item>
      <title>Multiple Github accounts with different certificates (Updated Sept 2020)</title>
      <dc:creator>wx-yz</dc:creator>
      <pubDate>Wed, 30 Sep 2020 20:14:08 +0000</pubDate>
      <link>https://dev.to/wxyz/multiple-github-accounts-with-different-certificates-updated-sept-2020-2960</link>
      <guid>https://dev.to/wxyz/multiple-github-accounts-with-different-certificates-updated-sept-2020-2960</guid>
      <description>&lt;p&gt;There are several blogs that outlines how to have multiple SSH certs with different github accounts and yet I had to google around after trying out a couple of them to figure out the right settings. If you're wondering how to do this, follow along. Also meant as note-to-self.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a new SSH key pair
&lt;/h2&gt;



&lt;p&gt;&lt;code&gt;$ ssh-keygen -t rsa -C "your-email@domain.com"&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Here for the email address I gave the email address generated by github that mask your real email address.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TbEPrr3S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yvw832n5ukjk8ege8nea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TbEPrr3S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yvw832n5ukjk8ege8nea.png" alt="autogen-email"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This create a private and public keypair in ~/.ssh. &lt;code&gt;id_rsa&lt;/code&gt; and &lt;code&gt;id_rsa.pub&lt;/code&gt;. Rename this to reflect the github account name. Not necessary but to keep things organized when you're working with multiple github accounts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.ssh/id_rsa_wxyz
~/.ssh/id_rsa_wxyz.pub
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Add the keys
&lt;/h2&gt;



&lt;p&gt;&lt;code&gt;$ ssh-add ~/.ssh/id_rsa_wxyz&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Check saved keys&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ ssh-add -l&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure SSH
&lt;/h2&gt;

&lt;p&gt;Edit &lt;code&gt;~/.ssh/config&lt;/code&gt;,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host github.com-wxyz
    HostName    ssh.github.com
    Port        443
    User        git
    AddKeysToAgent  yes
    IdentityFile    ~/.ssh/id_rsa_wxyz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This is where some blogs are not updated. I had to add ssh in front of github on the HostName param. Then the respective port. Otherwise it was trying to connect to port 22 and timing out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checking out repo
&lt;/h2&gt;

&lt;p&gt;When checking out github repo, the URL should reflect the Host portion followed by the github ID and the repo name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone git@github.com-wxyz:wx-yz/ballerina-lang.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Set username and email
&lt;/h2&gt;

&lt;p&gt;After cloning the repo, you might want to modify the username and email for the local repo. This is useful if you like to have different IDs/email combos for different repos. If you have one username/email combo for all your repos you probably have this as a global config&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git config user.name "wx-yz"
$ git config user.email "&amp;lt;insert autogenerated email from github"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
    </item>
    <item>
      <title>HOWTO: Compile Linux kernel (on Ubuntu, applies to any distro)</title>
      <dc:creator>wx-yz</dc:creator>
      <pubDate>Mon, 15 Jun 2020 20:57:30 +0000</pubDate>
      <link>https://dev.to/wxyz/howto-compile-linux-kernel-on-ubuntu-applies-to-any-distro-44k7</link>
      <guid>https://dev.to/wxyz/howto-compile-linux-kernel-on-ubuntu-applies-to-any-distro-44k7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c17f9oY4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7np3ajioq9f7pq1fg3rn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c17f9oY4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7np3ajioq9f7pq1fg3rn.png" alt="Happy CPUs when compiling the kernel"&gt;&lt;/a&gt;&lt;/p&gt;
Happy CPUs when compiling the kernel



&lt;p&gt;Ubuntu 20.04 comes with Linux kernel 5.4.0-37. I had to reboot every time my machine wake up from sleep to fix screen flickering issues. Latest stable kernel (5.7.2) fixed this issue for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notes,
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It's easy to start with a working config and test the kernel first&lt;/li&gt;
&lt;li&gt;If it's working, move on to remove things you don't need. This will result in a smaller kernel&lt;/li&gt;
&lt;li&gt;Kernel modules built against the running kernel have to be recompiled. Notably Nvidia drivers and VirtualBox&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Steps to compile the kernel,
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Download latest stable from kernel.org&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unzip&lt;br&gt;
&lt;code&gt;➜ tar xf linux-5.7.2.tar.xz &amp;amp;&amp;amp; cd linux-5.7.2&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy existing config (make things easy) &lt;br&gt;
&lt;code&gt;➜ cp /boot/config-$(uname -r) .config&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use terminal based configuration tool &lt;br&gt;
&lt;code&gt;➜ make menuconfig&lt;/code&gt;&lt;br&gt;
If you have relatively recent hardware, this step will take most of your time. Add/remove stuff based on your hardware&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compile the kernel with Clang (Remove CC for compiling with gcc - the default C compiler) &lt;br&gt;
&lt;code&gt;make CC=clang -j12&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the kernel &lt;br&gt;
&lt;code&gt;sudo make install&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update grub &lt;br&gt;
&lt;code&gt;sudo update-grub&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reboot &lt;br&gt;
&lt;code&gt;sudo reboot&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>linux</category>
      <category>kernel</category>
      <category>notetoself</category>
    </item>
    <item>
      <title>Playing with Windows Subsystem for Linux (WSL)</title>
      <dc:creator>wx-yz</dc:creator>
      <pubDate>Thu, 14 May 2020 00:01:43 +0000</pubDate>
      <link>https://dev.to/wxyz/playing-with-windows-subsystem-for-linux-wsl-hio</link>
      <guid>https://dev.to/wxyz/playing-with-windows-subsystem-for-linux-wsl-hio</guid>
      <description>&lt;p&gt;Windows 10 comes with Windows Subsystem for Linux which provides a seamless experience for running Windows and Linux at the same time. Seamless being the keyword here. Allowing 1) run Windows commands using Linux 2) Run Linux commands through Windows 3) Run HTTP services and access as if everything is accessible through localhost etc. This can be handy if you're a developer and want to work on both Windows and Linux without jumping hoops through VMs.&lt;/p&gt;

&lt;h1&gt;
  
  
  Enable WSL
&lt;/h1&gt;

&lt;p&gt;First, you need to enable the WSL. Settings &amp;gt; Turn Windows features on or off &amp;gt; Windows Subsystem for Linux. Click OK and restart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmbeapz0tr0cmg9yvw801.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmbeapz0tr0cmg9yvw801.png" alt="Enable WSL Windows feature"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Install a Linux distribution
&lt;/h1&gt;

&lt;p&gt;Next you have to install a Linux distribution from the Windows Store. Let's install Ubuntu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fckfl531burs7xna2zwfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fckfl531burs7xna2zwfh.png" alt="Install Ubuntu from Windows Store"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the installation, click on Launch and it's going to set up the distro and create a user. You will be asked to enter a username and a password. This will be the Linux user account that'll be used to login.&lt;/p&gt;

&lt;p&gt;At this point we have a working Linux system. You can install all other Linux packages necessary for development through apt-get.&lt;/p&gt;

&lt;h1&gt;
  
  
  Install Windows Terminal (optional)
&lt;/h1&gt;

&lt;p&gt;The new Windows Terminal provides quick access to multiple shells with a tabbed interface. You can install this through Windows Store. Here we're going to install it through &lt;a href="https://chocolatey.org/" rel="noopener noreferrer"&gt;Chocolatey&lt;/a&gt; (a popular package manager for Windows).&lt;/p&gt;

&lt;p&gt;Start an administrative PowerShell and execute this powershell-fu (taken from &lt;a href="https://chocolatey.org/install" rel="noopener noreferrer"&gt;https://chocolatey.org/install&lt;/a&gt;). Skip this step if you already have Chocolatey.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Set-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Bypass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Scope&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Force&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;System.Net.ServicePointManager&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;SecurityProtocol&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;System.Net.ServicePointManager&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;SecurityProtocol&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-bor&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;3072&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;New-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;System.Net.WebClient&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DownloadString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://chocolatey.org/install.ps1'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2wm1pb1zp47dobs98esl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2wm1pb1zp47dobs98esl.png" alt="Install Chocolatey"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type in&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;&amp;gt; choco install microsoft-windows-terminal&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 to install the new terminal. Reboot.&lt;/p&gt;
&lt;h1&gt;
  
  
  Running Windows commands in Linux
&lt;/h1&gt;

&lt;p&gt;After installing Docker Desktop for Windows and enabling Kubernetes, you can run the .exe (any .exe for that matter) directly within Ubuntu.&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;&amp;gt; docker.exe run hello-world&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fevyo20reb7mw1x0ze6w3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fevyo20reb7mw1x0ze6w3.png" alt="Running Windows commands in Linux"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Running Linux commands from Windows
&lt;/h1&gt;

&lt;p&gt;Using the wsl command in Windows you can run any Linux command within a Windows command shell / powershell. Such as&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;&amp;gt; wsl lsb_release -a&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw7fx47y2ndlqjqjgrl6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw7fx47y2ndlqjqjgrl6g.png" alt="Run Linux commands through wsl"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Redirect output of a Windows command to a Linux command (piping)
&lt;/h1&gt;

&lt;p&gt;You can also run one command in Windows and pipe the output to a command in Ubuntu which is very nice.&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;&amp;gt; Invoke-RestMethod http://www.mocky.io/v2/5ebc6fec3100007e005b0b67 | ConvertTo-Json -Depth 5 | wsl jq&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzuumot2i91j6kahwgu3e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzuumot2i91j6kahwgu3e.png" alt="Pipe output of one command to another"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Using localhost to access services
&lt;/h1&gt;

&lt;p&gt;Another convenience is you can use localhost for accessing services launched from  either Windows, Linux, docker or kubernetes. As you can see below,&lt;/p&gt;

&lt;h2&gt;
  
  
  Start service in Windows, access from Linux
&lt;/h2&gt;

&lt;p&gt;Starting up a simple Java service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvf58x13ocpi9zi1049da.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvf58x13ocpi9zi1049da.png" alt="Start Java service in Windows"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accessing the service from Linux. We're just using localhost and the port 9090 (which my sample service is listening on)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F26y8lqmnt13y4ovvrxro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F26y8lqmnt13y4ovvrxro.png" alt="Accessing the service from Linux"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start a service in Linux, access it from Windows
&lt;/h2&gt;

&lt;p&gt;Let's create a simple Ruby on Rails project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; rails new blog
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;blog
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; rails server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F25cokp4nb6qw4fqaqt2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F25cokp4nb6qw4fqaqt2a.png" alt="Start rails server"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Access from browser in Windows,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4afodh6kcxpygao7npfg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4afodh6kcxpygao7npfg.png" alt="Access rails app from Windows"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy an app in Kubernetes
&lt;/h2&gt;

&lt;p&gt;I've installed &lt;a href="https://www.docker.com/products/docker-desktop" rel="noopener noreferrer"&gt;Docker Desktop for Windows&lt;/a&gt; (Edge) and have enabled Kubernetes. After that docker.exe and kubectl.exe can be executed from PowerShell as well as within Ubuntu without having to do anything.&lt;/p&gt;

&lt;p&gt;Let's use following example app that runs Wordpress with MySQL on K8S to test out - &lt;a href="https://github.com/kubernetes/examples/tree/master/mysql-wordpress-pd" rel="noopener noreferrer"&gt;https://github.com/kubernetes/examples/tree/master/mysql-wordpress-pd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frl0826ecrj81ozodvig0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frl0826ecrj81ozodvig0.png" alt="Deploying K8S app"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After we deploy everything the app is available through localhost:80 (look at output of kubectl.exe get services wordpress)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fklve349rlapnh6ohmg84.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fklve349rlapnh6ohmg84.png" alt="Access wordpress"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  In conclusion
&lt;/h1&gt;

&lt;p&gt;WSL provide a nicer way of working with Linux without having to go through the trouble of installing VirtualBox, then installing a guest Linux OS, setup file share and access the system through an SSH server.&lt;/p&gt;

&lt;p&gt;Seamless integration works really well when working with standalone commands, interactively piping from one tool-set to the other, working with simple HTTP services and working with containers on Kubernetes.&lt;/p&gt;

</description>
      <category>wsl</category>
      <category>windows</category>
    </item>
  </channel>
</rss>
