<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tech |</title><link>https://eson-dev.github.io/tags/tech/</link><atom:link href="https://eson-dev.github.io/tags/tech/index.xml" rel="self" type="application/rss+xml"/><description>Tech</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 21 Feb 2021 00:00:00 +0000</lastBuildDate><image><url>https://eson-dev.github.io/media/icon_hu_51b0eba646ebd5b3.png</url><title>Tech</title><link>https://eson-dev.github.io/tags/tech/</link></image><item><title>Improving WFH Setup with OBS Virtual Camera</title><link>https://eson-dev.github.io/blog/obs-virtual-camera/</link><pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/obs-virtual-camera/</guid><description>&lt;p&gt;Working from home has become the &lt;em&gt;new normal&lt;/em&gt; as the global COVID-19 pandemic situation continues. Apart from work, we are also using video calls more and more to stay in touch with friends and family.&lt;/p&gt;
&lt;p&gt;Joining work meetings with webcam on is becoming normal and it certainly helps with communication - facial expression, body language, nodding and other visual cues are helpful apart from voice. It is also pleasing to see the faces of co-workers whom we haven&amp;rsquo;t met in person for a long time.&lt;/p&gt;
&lt;p&gt;However, not everyone has a nice background and we also want to protect the privacy of our family members at home. Most video call applications (such as Microsoft Teams or Zoom) provide virtual backgrounds, or the ability to blur your background. Depending on your webcam and the actual environment, the effect might or might not be satisfactory.&lt;/p&gt;
&lt;p&gt;I decided to buy a
(green screen) so that I can &lt;em&gt;play&lt;/em&gt; with OBS Virtual Camera and still be able to store the green screen to save space.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Collapsible green screen"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_eec9530f07262230.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_a36807b2253c0a65.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_bbb4dc6e4e756949.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/green-screen_hu_eec9530f07262230.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;To improve video quality, I&amp;rsquo;ve also upgraded to a
, and I&amp;rsquo;m very happy with the image quality. (It also comes with an attachable privacy shutter)&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Logitech Brio"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_89a639a04d349746.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_6a2aeeb3c27698e1.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_e450c767acdd6f50.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/logitech-brio_hu_89a639a04d349746.webp"
width="760"
height="613"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Furthermore, this is also one of the few webcams which support Windows Hello Face sign in. See how it works:&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9YjiZjWttWQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br/&gt;
To make use of the green screen, I use OBS Virtual Camera like most people. You can find a lot of tutorials online with details. I&amp;rsquo;ll do a quick run-down here with my personal setup.&lt;/p&gt;
&lt;p&gt;First of all, with the webcam already added as a &amp;ldquo;Video Capture Device&amp;rdquo; in OBS, simply add a &amp;ldquo;Chroma Key&amp;rdquo; filter to the camera. The green screen is visible when the filter is hidden.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Green screen visible when OBS filter is hidden"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_1d1f7565f5d3d3ee.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_328f4dd4ed7ca208.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_9842354f57eb34aa.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/filter-hidden_hu_1d1f7565f5d3d3ee.webp"
width="760"
height="667"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;br/&gt;
Next, add an image or media source (video) to the scene in OBS and they will be displayed within the chromakey area.
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="OBS Scene with Image and Media"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_cfc34c7154ed3697.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_4daea5a2bc1051ac.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_5a4f6ee5189ca25d.webp 675w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/obs-scene_hu_cfc34c7154ed3697.webp"
width="675"
height="169"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;How it looks with a static image (of Singapore &amp;#x1f1f8;&amp;#x1f1ec;):
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="OBS Screenshot"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_26d895a0ba7eda5d.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_f3808bc55f94cb3b.webp 480w, https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_10b6bca2357c50aa.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/featured_hu_26d895a0ba7eda5d.webp"
width="760"
height="412"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;For some extra fun, download a loopable short video online and let it play in loop:&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZGKM1rALlVg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br/&gt;
With everything setup, simply click Start Virtual Camera under the Controls.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Start Virtual Camera"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/start-virtual-camera_hu_ecdaf4843311a58f.webp 283w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/start-virtual-camera_hu_ecdaf4843311a58f.webp"
width="283"
height="171"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Back in the video call application (Teams in this example), select &amp;ldquo;OBS Virutal Camera&amp;rdquo; instead of Logitech Brio:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Select OBS Virtual Camera"
srcset="https://eson-dev.github.io/blog/obs-virtual-camera/select-camera_hu_193ac7063bbe9209.webp 320w, https://eson-dev.github.io/blog/obs-virtual-camera/select-camera_hu_1befa49166e02ffa.webp 415w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/obs-virtual-camera/select-camera_hu_193ac7063bbe9209.webp"
width="415"
height="179"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>My Work From Home Setup</title><link>https://eson-dev.github.io/blog/wfh-setup/</link><pubDate>Sat, 20 Jun 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/wfh-setup/</guid><description>&lt;p&gt;Like many others, I have been working from home since March 18&lt;sup&gt;th&lt;/sup&gt; due to the COVID-19 pandemic. Fortunately, as a software developer, all my work can be done on a computer, remoting into the workstation in office. In the past, I had also worked from home occassionally so my VPN is already setup way ahead.&lt;/p&gt;
&lt;p&gt;I thank my past self for building a good desktop PC (mostly for gaming though &amp;#x1f606;) which make the transition to fully &lt;em&gt;WFH&lt;/em&gt; a lot more comfortable.&lt;/p&gt;
&lt;p&gt;Most of my &amp;ldquo;gears&amp;rdquo; were shipped from Singapore when I moved to Montreal in 2017. I self-built this PC back in 2011, it&amp;rsquo;s almost 10 years old. Over the years, I have upgraded/replaced many components except the CPU and motherboard.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel Core i5-2400 CPU (Sandy Bridge)&lt;/li&gt;
&lt;li&gt;24 GB DDR3 RAM&lt;/li&gt;
&lt;li&gt;Zotac GeForce RTX 2060 6GB GDDR6 Graphic Card&lt;/li&gt;
&lt;li&gt;Total 700 GB SSD&lt;/li&gt;
&lt;li&gt;Total 7 TB HDD&lt;/li&gt;
&lt;li&gt;EVGA 650W fully modular PSU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the displays, I have two Dell monitors with a
pairing with an older 23&amp;quot; U2311H. Both are the &lt;em&gt;UltraSharp&lt;/em&gt; series from Dell, using In-plane Switching (IPS) panels which make the color looks really great. I also prefer this type of stands which allow height adjustment.
&lt;/p&gt;
&lt;p&gt;&amp;#x1f4a1; Tip: Workspace ergonomics suggests that the main monitor should be placed at the center with about an arm&amp;rsquo;s length away from the body, instead of a &lt;code&gt;/\&lt;/code&gt; shape.&lt;/p&gt;
&lt;p&gt;&amp;#x1f4a1; Tip: You can use both screens for Remote Desktop by checking the &amp;ldquo;Use all my monitors for the remote session&amp;rdquo; box.
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Remote Desktop Use all monitors"
srcset="https://eson-dev.github.io/blog/wfh-setup/rdp-all-monitors_hu_277f47c69d62fdf6.webp 320w, https://eson-dev.github.io/blog/wfh-setup/rdp-all-monitors_hu_e5d7d4035448bd98.webp 407w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/wfh-setup/rdp-all-monitors_hu_277f47c69d62fdf6.webp"
width="407"
height="282"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;To maximize space, I bought two
which not only allow me to set the monitors on eye level, but also to slot in the keyboard and mouse under it whenever I need more space.&lt;/p&gt;
&lt;p&gt;For typing, I am using the
. Its simple design takes away the unnecessary gaming function keys and gets the job done. It is using Cherry MX Blue mechanical switches so there is the unavoidable clicking sound during typing. (My Logitech G710+ keyboard with less noisy MX Brown switches is still stuck in the office, unfortunately &amp;#x1f613;)&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Cougar 600K Mechanical Gaming Keyboard"
srcset="https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_b63bdd9f62ee7004.webp 320w, https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_48b5067d6ca91075.webp 480w, https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_103a75b236122cfb.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/wfh-setup/cougar-600k_hu_b63bdd9f62ee7004.webp"
width="760"
height="485"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The mouse and headphones are two new additions to my setup, bought during this WFH period, to replace their predecessors which were not as comfortable.&lt;/p&gt;
&lt;p&gt;The
has a simple design and works comfortably for my hand size. The side buttons are always a &lt;em&gt;must&lt;/em&gt; to me because they allow me to easily navigate back and forward (in browser, explorer, IDE etc.). It also has a light that changes color (configurable).
&lt;/p&gt;
&lt;p&gt;The
has a noise-canceling microphone that is 360° adjustable. It allows me to speak much clearly during calls. As a plus point, it can also be plugged into a PS4 controller.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t usually turn on video during work calls but I do have an
sitting on top of the Dell U2311H monitor, ready to serve when needed. It also has a built-in microphone.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Last but not least, a very comfortable chair - the
. Mine is the 2016 series bought in Singapore. It is made by a company founded in Singapore, and now they have expanded to Europe and North America.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t need my all-in-one Canon MX727 (seen in picture above) for work, but it is always useful when I need to scan and print documents.&lt;/p&gt;
&lt;p&gt;WFH is going be the &amp;ldquo;new normal&amp;rdquo; for developers like us, and I am ready.&lt;/p&gt;
&lt;p&gt;Now I just need a hair cut. &amp;#x1f487;&amp;zwj;&amp;#x2642;&amp;#xfe0f;&lt;/p&gt;</description></item><item><title>ConFoo Montreal 2020</title><link>https://eson-dev.github.io/blog/confoo-2020/</link><pubDate>Sat, 29 Feb 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/confoo-2020/</guid><description>&lt;p&gt;I&amp;rsquo;ve had the opportunity to attend
at Hotel Bonaventure Montréal this week.
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="View from Hotel Bonaventure Montreal"
srcset="https://eson-dev.github.io/blog/confoo-2020/hotel_hu_13f4770b0315dce7.webp 320w, https://eson-dev.github.io/blog/confoo-2020/hotel_hu_466b1f28f7cbc67a.webp 480w, https://eson-dev.github.io/blog/confoo-2020/hotel_hu_23a2c39ad908bc51.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/hotel_hu_13f4770b0315dce7.webp"
width="760"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="what-is-confoo"&gt;What is ConFoo?&lt;/h3&gt;
&lt;p&gt;
is a nonprofit organization founded by
. In 18 years, the event has evolved from a PHP conference to include all web technologies and related topics.&lt;/p&gt;
&lt;p&gt;All the topics this year are listed
and the presentation slides were uploaded by the organizer at this Github repository:
&amp;#x1f60d;&lt;/p&gt;
&lt;h3 id="the-presentations"&gt;The Presentations&lt;/h3&gt;
&lt;p&gt;The presentation on Go and Kubernetes were most related to my current job, and they were super popular with the rooms fully packed. Sadly there was only one single session on Go.&lt;/p&gt;
&lt;p&gt;It was also nice to see some cool things in Python 3 since I&amp;rsquo;ve been coding using Python 2.7 for the past 3 years. Even though the chance of me switching to Python 3 at work remains low.&lt;/p&gt;
&lt;p&gt;For historical reason, the conference is mostly on web technologies with a lot of them on PHP (which I didn&amp;rsquo;t attend any). Besides those, there were many talks on various JavaScript topics. It&amp;rsquo;s interesting to know that we now have browser API to get battery status and connect to Bluetooth devices; you can also build an indie platformer game (like
) running at 60fps and publish on Steam.&lt;/p&gt;
&lt;p&gt;
from Google looks promising and I am eager to try it out. It looks like an attempt from Google to promote
.&lt;/p&gt;
&lt;h3 id="the-swag-stuff-we-all-get"&gt;The Swag (Stuff We All Get)&lt;/h3&gt;
&lt;p&gt;Every participant get a goodie bag with some stickers and magnets in it.
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="SWAGs from ConFoo 2020"
srcset="https://eson-dev.github.io/blog/confoo-2020/swag_hu_60b967c999be8d1f.webp 320w, https://eson-dev.github.io/blog/confoo-2020/swag_hu_c101119b62a5de20.webp 480w, https://eson-dev.github.io/blog/confoo-2020/swag_hu_bb1ea55b962756ca.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/swag_hu_60b967c999be8d1f.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Of course, food, drinks and lots of coffee &amp;#x2615; to keep us awake&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="One of the main course"
srcset="https://eson-dev.github.io/blog/confoo-2020/food_hu_5723281f0e91fd6e.webp 320w, https://eson-dev.github.io/blog/confoo-2020/food_hu_b197f1d611006a4.webp 480w, https://eson-dev.github.io/blog/confoo-2020/food_hu_52c3a41dbc3997a4.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/food_hu_5723281f0e91fd6e.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;hellip; plus community cocktail &amp;#x1f37b; with retro games &amp;#x1f3ae; after a long day.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Party"
srcset="https://eson-dev.github.io/blog/confoo-2020/party_hu_a4ac348ce69536b2.webp 320w, https://eson-dev.github.io/blog/confoo-2020/party_hu_a1c16e933dd43a.webp 480w, https://eson-dev.github.io/blog/confoo-2020/party_hu_2f4d8d3342277177.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/party_hu_a4ac348ce69536b2.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Thank you Confoo, the event sponsors, and my employer for sending me to attend. Until next time!&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="ConFoo Montreal 2020 Event Sponsors"
srcset="https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_6f920a7c371c2ce.webp 320w, https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_c95b840034357484.webp 480w, https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_265215fb97f4d822.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/confoo-2020/sponsors_hu_6f920a7c371c2ce.webp"
width="760"
height="428"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Why and How I Built This Website</title><link>https://eson-dev.github.io/blog/this-site/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate><guid>https://eson-dev.github.io/blog/this-site/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update 2026-01-25&lt;/strong&gt;: This was originally written in February 2020.
As of January 2026, Academic theme for Hugo is no longer available.
This website has since been rebuilt with
.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Hello and welcome! You probably found this website from my
or other social media profiles.&lt;/p&gt;
&lt;h3 id="why-esondev"&gt;Why eson.dev?&lt;/h3&gt;
&lt;p&gt;For years, I have always wanted to own a personal website. Back when I was living in Singapore, I even reserved the hostname &lt;code&gt;eson.sg&lt;/code&gt; for many years without hosting anything &amp;#x1f605;. I was still building up my career and LinkedIn is the best place to display my skills and experience.&lt;/p&gt;
&lt;p&gt;In 2019, I found that &lt;code&gt;.dev&lt;/code&gt; has become a top-level domain, as
. A quick search showed that &lt;code&gt;eson.dev&lt;/code&gt; is still available and I purchased the domain in no time. I wanted to use it as an alternative to my LinkedIn profile and give it a more personal touch, to showcase my experience and game projects, and maybe write some articles to share some tips and tricks.&lt;/p&gt;
&lt;h3 id="deciding-the-tech-to-use"&gt;Deciding the tech to use&lt;/h3&gt;
&lt;p&gt;After owning the domain name, it was time to decide on the technology to build the site on. A long time ago, I learnt website building with just HTML and JavaScript using
(it was also a period when
was prominent) &amp;#x1f602;. Of course, we are living in 2020 now and there are so many ways to create your own website without even writing a single line of HTML.&lt;/p&gt;
&lt;p&gt;I tried out with the GitHub&amp;rsquo;s own
project. It uses
as the site generator. For some reasons, I didn&amp;rsquo;t really like Jekyll. Soon after that I discovered
as an alternative (it&amp;rsquo;s also written in Go and I use Go every day at work) and decided to give it a try, and it fits my needs. While searching for a theme on Hugo, I found Academic (&lt;em&gt;link no longer available&lt;/em&gt; ❌) and it looks fantastic!&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Academic"
srcset="https://eson-dev.github.io/blog/this-site/academic_hu_c13c87dbd13d2b02.webp 320w, https://eson-dev.github.io/blog/this-site/academic_hu_cfbef7c8857112ab.webp 480w, https://eson-dev.github.io/blog/this-site/academic_hu_ff2748a7d156ea02.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://eson-dev.github.io/blog/this-site/academic_hu_c13c87dbd13d2b02.webp"
width="760"
height="241"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;By following Academic&amp;rsquo;s installation guide, I was able to setup
to automatically build and deploy my changes, and the first version of my website was published in less than 10 minutes! The best of all is that I am able to use the Starter (free) tier of Netlify to host my website and tie it to my custom domain
.&lt;/p&gt;
&lt;h3 id="keeping-it-updated"&gt;Keeping it updated&lt;/h3&gt;
&lt;p&gt;Now that the Netlify pipeline has been setup, I simply have to push my changes to the Github repository, and everything will be &lt;em&gt;automagically&lt;/em&gt; built and deployed live by Netlify in less than a minute. Sweet! &amp;#x1f389;&lt;/p&gt;</description></item></channel></rss>