<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sonng9800</title>
    <link>https://sonnguyen9800.com/vi/</link>
    <description>Blog của Sơn</description>
    <generator>Hugo</generator>
    <language>vi-vn</language>
    <lastBuildDate>Sat, 25 Jul 2026 19:00:00 +0700</lastBuildDate>
    <atom:link href="https://sonnguyen9800.com/vi/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Nhớ thương mùi hương Trám</title>
      <link>https://sonnguyen9800.com/other/tr%C3%A1m---m%E1%BB%B9-v%E1%BB%8B-nh%C3%A2n-gian/</link>
      <pubDate>Sat, 25 Jul 2026 19:00:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/tr%C3%A1m---m%E1%BB%B9-v%E1%BB%8B-nh%C3%A2n-gian/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/tr%C3%A1m---m%E1%BB%B9-v%E1%BB%8B-nh%C3%A2n-gian/image-1_hu_d790c864e6857609.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/tr%C3%A1m---m%E1%BB%B9-v%E1%BB%8B-nh%C3%A2n-gian/image-1_hu_6447aa2c7d5cddbd.webp 640w, https://sonnguyen9800.com/other/tr%C3%A1m---m%E1%BB%B9-v%E1%BB%8B-nh%C3%A2n-gian/image-1_hu_ef9e21a90f71a338.webp 960w, https://sonnguyen9800.com/other/tr%C3%A1m---m%E1%BB%B9-v%E1%BB%8B-nh%C3%A2n-gian/image-1_hu_d790c864e6857609.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1799&#34; height=&#34;1220&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Có ai là người Việt Nam mà không vui lên khi thấy bạn bè năm châu yêu thích bát phở Bò, khi thấy họ nhâm nhi một ly cà phê trứng beo béo mà thơm lừng? Thấy hai chữ &lt;em&gt;banhmi&lt;/em&gt; kiêu hãnh xuất hiện trên những mặt báo thế giới? Đúng thật, chẳng ai giấu nổi niềm sung sướng khi ấy. Tuy nhiên, với những người sành ăn, với những tay thích chu du bốn bể, thích ngắm nghía những nơi không ai ngắm, thích cần mẫn đào xới ở những chốn lạ lùng, hoang vu, nơi rừng thiên nước độc, cốt để kiếm tìm những hương vị mới. Họ hẳn sẽ hơi buồn đấy. Ấy là vì cứ mỗi khi nhắc đến các món mỹ thực của xứ ta, họ hẳn là phải bồn chồn, phải nuối tiếc, phải đau đáu trăn trở. Vì lẽ gì mà họ tâm tư? Ấy là vì họ nhận ra một sự thật phũ phàng rằng ngoài phở, ngoài cafe, ngoài những món tiêu biểu mang danh quốc thực ấy vẫn là hằng ha sa số những của ngon vật lạ ngoài kia, những thứ mà chẳng bao giờ được đoái hoài trong những nhà hàng &lt;em&gt;Michelin&lt;/em&gt; mang tiếng là danh giá. Chẳng ai thèm sục sạo tìm kiếm những hương vị ấy cả, để rồi chúng chỉ được biết đến trong bóng tối. Trong những bữa cơm gia đình rau cà đơn sơ mà giản dị. Trong những sớm tháng mười khi Hà Nội trời đất đượm mùi hoa sữa, đượm mùi tình yêu và ngan ngát mùi gió thu yên ả. Quả Trám theo tôi là một món như thế đấy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unity Dev, Font Fallback not working!</title>
      <link>https://sonnguyen9800.com/tip/unity-dev-font-fallback-not-working/</link>
      <pubDate>Wed, 18 Jun 2025 11:23:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/unity-dev-font-fallback-not-working/</guid>
      <description>&lt;p&gt;Currently in a Unity Project. The current FontAsset lacks important character (e.g Sign Symbol, basic glyph such as &amp;ldquo;/&amp;rdquo; or &amp;ldquo;:&amp;quot;).&lt;/p&gt;&#xA;&lt;p&gt;However, the Unity game not showing the fallback character. We wonder why that happens and fortunately we solved how the bug happens. The issue is simple, the special character that is not supposed to be existed inside the first Font Asset &lt;strong&gt;do exist&lt;/strong&gt;. But they are &lt;em&gt;&amp;ldquo;invisible&amp;rdquo;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Thus, fallback font did not work simply the character technically do exist! I found the bug somewhat interesting, and worth to note it down. So I write this note to summarize how to fix.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Shanzhai and Art Ownership in the age of AI</title>
      <link>https://sonnguyen9800.com/other/on-shangzai-or-art-ownership-in-the-age-of-ai/</link>
      <pubDate>Fri, 28 Mar 2025 13:00:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/on-shangzai-or-art-ownership-in-the-age-of-ai/</guid>
      <description>&lt;p&gt;Just a few days ago, &lt;strong&gt;OpenAI&lt;/strong&gt; released a new image-generation model. This time the model shook the internet again. Social media and the internet quickly got flooded with meme and images generated from the new AI model. Most of them are classic memes but remade in the style of &lt;em&gt;Ghibi movie&lt;/em&gt; or casual photos filtered in the same style.&#xA;&lt;img src=&#34;https://sonnguyen9800.com/other/on-shangzai-or-art-ownership-in-the-age-of-ai/image-1_hu_9c925e3b340a2313.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/on-shangzai-or-art-ownership-in-the-age-of-ai/image-1_hu_9c925e3b340a2313.webp 640w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;753&#34; height=&#34;251&#34; alt=&#34;An example&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;The quality of them is very good. Some might say this is the best image-generation model so far. Although images filtered in Ghibi style now take over the internet, the model has much more capability. It’s not hard to find other versions of real-life photos filtered in South Park style (another famous cartoon series), or simply do image modification job that real-life graphics designer often does: like replace human face, change objects in the photo, etc. …&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tech Journal - Develop Unity package INSIDE a Unity Project</title>
      <link>https://sonnguyen9800.com/misc/tech-journal---flow-to-develop-unity-package-inside-unity-project/</link>
      <pubDate>Thu, 13 Mar 2025 11:19:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/tech-journal---flow-to-develop-unity-package-inside-unity-project/</guid>
      <description>&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;&#xA;&lt;p&gt;I encountered a funny problem when coding a Unity Game. To increase the reusability while making game, I also develop a &lt;strong&gt;Framework&lt;/strong&gt;. This framework would be an &lt;em&gt;Unity Package&lt;/em&gt;. The thing is that the GAME itself also relies on the framework, which basically mean that I &lt;strong&gt;cannot modify and update the framework directly&lt;/strong&gt;. So, what is the work arround?&lt;/p&gt;&#xA;&lt;h2 id=&#34;problem-statement&#34;&gt;Problem Statement&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/misc/tech-journal---flow-to-develop-unity-package-inside-unity-project/image_hu_9b294ebdd5f1729.webp&#34; srcset=&#34;https://sonnguyen9800.com/misc/tech-journal---flow-to-develop-unity-package-inside-unity-project/image_hu_9b294ebdd5f1729.webp 640w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;821&#34; height=&#34;402&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;foundation&#34;&gt;Foundation&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The game is refered as FAW (Codename)&lt;/li&gt;&#xA;&lt;li&gt;The framework is SysiphusFramework.&lt;/li&gt;&#xA;&lt;li&gt;I am &lt;strong&gt;NOT&lt;/strong&gt; the only one working at the game. Because of the, SysiphusFramework exists as a &lt;strong&gt;UnityPackage&lt;/strong&gt; that is added to Unity Project through &lt;code&gt;git url&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;By doing so, the &lt;code&gt;framework&lt;/code&gt; itself is part of the game (inside &lt;code&gt;FAW Folder&lt;/code&gt;). However, it now stays in &lt;code&gt;Library&lt;/code&gt; (not &lt;code&gt;Assets&lt;/code&gt; folder), thus we &lt;strong&gt;cannot modify it&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;So, as a developer who are making the framework, how to edit it?&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;&#xA;&lt;h3 id=&#34;ideas&#34;&gt;Ideas&lt;/h3&gt;&#xA;&lt;p&gt;The logic is to create a &lt;code&gt;DEFINITION&lt;/code&gt; (in Unity Editor). In the &lt;code&gt;Editor&lt;/code&gt;, we now refer the &lt;code&gt;DEFINITION&lt;/code&gt; as &lt;code&gt;USE_GIT_FRAMEWORK&lt;/code&gt;. If &lt;code&gt;USE_GIT_FRAMEWORK&lt;/code&gt; existed, then the project would &lt;strong&gt;remove&lt;/strong&gt; the package from the library. Developers of the package now would have to clone the actual &lt;code&gt;git repository&lt;/code&gt; of the framework into the project (into &lt;code&gt;Assets&lt;/code&gt; folder) to make update.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic on Csharp delegates, and more ...</title>
      <link>https://sonnguyen9800.com/dev/csharp-delegate-func-and-action/</link>
      <pubDate>Mon, 10 Mar 2025 00:20:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/csharp-delegate-func-and-action/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/csharp-delegate-func-and-action/thumbnail_hu_ec031c780312fa3b.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/csharp-delegate-func-and-action/thumbnail_hu_6a4a5c8869b2fed2.webp 640w, https://sonnguyen9800.com/dev/csharp-delegate-func-and-action/thumbnail_hu_4843b34caeb6c053.webp 960w, https://sonnguyen9800.com/dev/csharp-delegate-func-and-action/thumbnail_hu_ec031c780312fa3b.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5688&#34; height=&#34;3713&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Csharp is crazy powerful, however, I have trouble in understanding its &lt;code&gt;delegate&lt;/code&gt; and delegates&amp;rsquo;s implementation, including &lt;code&gt;Action&lt;/code&gt;, &lt;code&gt;EventHandler&lt;/code&gt;, &lt;code&gt;Func&lt;/code&gt;. Therefore, this post is written to summarized all of these. I would give each the definition and some analysis.&lt;/p&gt;&#xA;&lt;h5 id=&#34;a-delegate&#34;&gt;A. Delegate&lt;/h5&gt;&#xA;&lt;p&gt;&lt;code&gt;Delegate&lt;/code&gt; is simply a reference to a method. The example that gives the best illustration on the application of &lt;code&gt;delegate&lt;/code&gt; is a UI Button. Whatever framework, engine or libraries you use, the &lt;code&gt;UIButton&lt;/code&gt; you create must have the ability to trigger callback method.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I Stop Worrying and Love Data-Oriented Programming!</title>
      <link>https://sonnguyen9800.com/dev/how-i-stop-worrying-and-love-data-oriented-programming/</link>
      <pubDate>Sat, 08 Mar 2025 14:00:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/how-i-stop-worrying-and-love-data-oriented-programming/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/how-i-stop-worrying-and-love-data-oriented-programming/thumbnail_hu_ec031c780312fa3b.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/how-i-stop-worrying-and-love-data-oriented-programming/thumbnail_hu_6a4a5c8869b2fed2.webp 640w, https://sonnguyen9800.com/dev/how-i-stop-worrying-and-love-data-oriented-programming/thumbnail_hu_4843b34caeb6c053.webp 960w, https://sonnguyen9800.com/dev/how-i-stop-worrying-and-love-data-oriented-programming/thumbnail_hu_ec031c780312fa3b.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5688&#34; height=&#34;3713&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Game development should be full of cheerfulness, making game should not be a hassle. But every developer in this field know that game architecture should never be underestimated. Coding new features, build one mechanics upon older mechanic means letting one foot down to the &lt;em&gt;River of Styx&lt;/em&gt;!&lt;/p&gt;&#xA;&lt;p&gt;“&lt;em&gt;Code should be extensible but not easy to modify&lt;/em&gt;” - one said (this is one of pillars of &lt;strong&gt;SOLID&lt;/strong&gt; principle), but it’s easier said than done. Code scaling is a nightmare, like an old &lt;em&gt;Lovecraftian&lt;/em&gt; novel where at first they are just ugly creatures, which appear shadowy, blurry and obscured, yet every one dare to go one step further into abyss immediately recognize the figures to be an old god: messy, chaotic, armed with tentacles and leaves an impression of a &lt;em&gt;chthonic being&lt;/em&gt;!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leetcode Fighter: Array &amp; Hashing Finalized</title>
      <link>https://sonnguyen9800.com/tip/leetcode-fighter---the-rest-of-array--hashing/</link>
      <pubDate>Mon, 20 Jan 2025 12:00:53 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/leetcode-fighter---the-rest-of-array--hashing/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---the-rest-of-array--hashing/image_hu_31b4c4fa81d16542.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---the-rest-of-array--hashing/image_hu_846b0fb4bf4b8ffa.webp 640w, https://sonnguyen9800.com/tip/leetcode-fighter---the-rest-of-array--hashing/image_hu_31b4c4fa81d16542.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1041&#34; height=&#34;852&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Finally I solved all other problem in &amp;ldquo;Array &amp;amp; Hashing&amp;rdquo; section of Neetcode. Here is a quick breakdown of solution. Begin with &amp;ldquo;Encode &amp;amp; Decode&amp;rdquo; string.&lt;/p&gt;&#xA;&lt;h3 id=&#34;encode--decode-string&#34;&gt;Encode &amp;amp; Decode String&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Design an algorithm to encode a list of strings to a single string. The encoded string is then decoded back to the original list of strings.&#xA;&#xA;Please implement encode and decode&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;analysis--solution&#34;&gt;Analysis &amp;amp; Solution&lt;/h4&gt;&#xA;&lt;p&gt;The first approach would be to divide the string by &lt;strong&gt;a&lt;/strong&gt; special character. However, given that the prerequisite clearly states that each string can be anything in UTF-8. No special character is safe to use. Then, I thought about using a hashmap that store every character, their frequency and position. But then it no helpful when decoding the long hashmap into seperate string. I got lost in the mindset to &lt;em&gt;transform&lt;/em&gt; the string into something else, pure numeric or some shit like that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leetcode Fighter: Top K Frequent Elements</title>
      <link>https://sonnguyen9800.com/tip/leetcode-fighter---top-k-frequent-elements/</link>
      <pubDate>Tue, 24 Dec 2024 12:00:53 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/leetcode-fighter---top-k-frequent-elements/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---top-k-frequent-elements/image_hu_31b4c4fa81d16542.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---top-k-frequent-elements/image_hu_846b0fb4bf4b8ffa.webp 640w, https://sonnguyen9800.com/tip/leetcode-fighter---top-k-frequent-elements/image_hu_31b4c4fa81d16542.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1041&#34; height=&#34;852&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;top-k-frequent-elements&#34;&gt;Top K Frequent Elements&lt;/h3&gt;&#xA;&lt;h4 id=&#34;problem-statement&#34;&gt;Problem Statement&lt;/h4&gt;&#xA;&lt;p&gt;Given an integer array &lt;code&gt;nums&lt;/code&gt; and an integer &lt;code&gt;k&lt;/code&gt;, return the &lt;code&gt;k&lt;/code&gt; most frequent elements within the array.&lt;/p&gt;&#xA;&lt;p&gt;The test cases are generated such that the answer is always &lt;strong&gt;unique&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You may return the output in &lt;strong&gt;any order&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Example 1:&lt;/em&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Input: nums = [1,2,2,3,3,3], k = 2&#xA;Output: [2,3]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Example 2:&lt;/em&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Input: nums = [7,7], k = 1&#xA;Output: [7]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;constraints&#34;&gt;Constraints:&lt;/h5&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1 &amp;lt;= nums.length &amp;lt;= 10^4.&#xA;-1000 &amp;lt;= nums[i] &amp;lt;= 1000&#xA;1 &amp;lt;= k &amp;lt;= number of distinct elements in nums.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;a-short-analysis&#34;&gt;A short analysis&lt;/h4&gt;&#xA;&lt;p&gt;The problem super interesting. To be honest, I couldn&amp;rsquo;t figure out how to do until I read the second hint from Neetcode, that suggest grouping number &lt;em&gt;based on their frequency&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leetcode Fighter: Group Anagrams</title>
      <link>https://sonnguyen9800.com/tip/leetcode-fighter---group-anagram/</link>
      <pubDate>Tue, 26 Nov 2024 16:00:53 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/leetcode-fighter---group-anagram/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---group-anagram/image_hu_31b4c4fa81d16542.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---group-anagram/image_hu_846b0fb4bf4b8ffa.webp 640w, https://sonnguyen9800.com/tip/leetcode-fighter---group-anagram/image_hu_31b4c4fa81d16542.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1041&#34; height=&#34;852&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;problem-statement&#34;&gt;Problem Statement&lt;/h4&gt;&#xA;&lt;p&gt;Given an array of strings strs, group all anagrams together into sublists. You may return the output in any order.&lt;/p&gt;&#xA;&lt;p&gt;An anagram is a string that contains the exact same characters as another string, but the order of the characters can be different.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Example 1:&lt;/em&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Input: strs = [&amp;ldquo;act&amp;rdquo;,&amp;ldquo;pots&amp;rdquo;,&amp;ldquo;tops&amp;rdquo;,&amp;ldquo;cat&amp;rdquo;,&amp;ldquo;stop&amp;rdquo;,&amp;ldquo;hat&amp;rdquo;]&#xA;Output: [[&amp;ldquo;hat&amp;rdquo;],[&amp;ldquo;act&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;],[&amp;ldquo;stop&amp;rdquo;, &amp;ldquo;pots&amp;rdquo;, &amp;ldquo;tops&amp;rdquo;]]&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;Example 2:&lt;/em&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Input: strs = [&amp;ldquo;x&amp;rdquo;]&#xA;Output: [[&amp;ldquo;x&amp;rdquo;]]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leetcode Fighter: Two Sum</title>
      <link>https://sonnguyen9800.com/tip/leetcode-fighter---two-sum/</link>
      <pubDate>Tue, 19 Nov 2024 08:51:53 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/leetcode-fighter---two-sum/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---two-sum/image_hu_31b4c4fa81d16542.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---two-sum/image_hu_846b0fb4bf4b8ffa.webp 640w, https://sonnguyen9800.com/tip/leetcode-fighter---two-sum/image_hu_31b4c4fa81d16542.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1041&#34; height=&#34;852&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-sum&#34;&gt;Two Sum&lt;/h2&gt;&#xA;&lt;h3 id=&#34;problem-statement&#34;&gt;Problem Statement&lt;/h3&gt;&#xA;&lt;p&gt;Given an array of integers nums and an integer target, return the indices i and j such that &lt;code&gt;nums[i] + nums[j] == target and i != j&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You may assume that every input has exactly one pair of indices i and j that satisfy the condition.&lt;/p&gt;&#xA;&lt;p&gt;Return the answer with the smaller index first.&lt;/p&gt;&#xA;&lt;p&gt;Example 1:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Input:&#xA;nums = [3,4,5,6], target = 7&#xA;Output: [0,1]&#xA;Explanation: nums[0] + nums[1] == 7, so we return [0, 1].&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leetcode Fighter: Is Anagram</title>
      <link>https://sonnguyen9800.com/tip/leetcode-fighter---is-anagram/</link>
      <pubDate>Tue, 19 Nov 2024 08:51:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/leetcode-fighter---is-anagram/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---is-anagram/image_hu_31b4c4fa81d16542.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/leetcode-fighter---is-anagram/image_hu_846b0fb4bf4b8ffa.webp 640w, https://sonnguyen9800.com/tip/leetcode-fighter---is-anagram/image_hu_31b4c4fa81d16542.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1041&#34; height=&#34;852&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;is-anagram&#34;&gt;Is Anagram&lt;/h1&gt;&#xA;&lt;h2 id=&#34;a-short-analysis&#34;&gt;A short analysis&lt;/h2&gt;&#xA;&lt;p&gt;This problem is fairly simple, I would quote the original problem from neetcode.io below. Link: &lt;a href=&#34;https://neetcode.io/problems/is-anagram&#34;&gt;https://neetcode.io/problems/is-anagram&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Given two strings s and t, return true if the two strings are anagrams of each other, otherwise return false.&lt;/p&gt;&#xA;&lt;p&gt;An anagram is a string that contains the exact same characters as another string, but the order of the characters can be different.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Leetcode Fighter: Leetcode and GoLang</title>
      <link>https://sonnguyen9800.com/tip/leetcode-on-go/</link>
      <pubDate>Tue, 19 Nov 2024 08:50:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/leetcode-on-go/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/leetcode-on-go/image_hu_31b4c4fa81d16542.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/leetcode-on-go/image_hu_846b0fb4bf4b8ffa.webp 640w, https://sonnguyen9800.com/tip/leetcode-on-go/image_hu_31b4c4fa81d16542.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1041&#34; height=&#34;852&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Recently, I started solving basic Leetcode question. However, there are so many problem and I don&amp;rsquo;t think doing all of them in consequence would be effective. Fortunately, Neetcode kindly provides a program path for Leetcode for free. The link can be visited here: &lt;a href=&#34;https://neetcode.io/roadmap&#34;&gt;https://neetcode.io/roadmap&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;At the same time, I was looking for another language for backend system. The one made me interested is &lt;strong&gt;Golang&lt;/strong&gt;, thus I thought this could be one arrow for two targets, practicing Golang while solving &amp;amp; learning on algorithm and analysis. Hell yeah. I couldn&amp;rsquo;t think of anything better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tech Journal - VSCode, Extension, Debugging Error</title>
      <link>https://sonnguyen9800.com/misc/tech-journal---vscode-extension-debugging-error/</link>
      <pubDate>Fri, 15 Nov 2024 01:00:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/tech-journal---vscode-extension-debugging-error/</guid>
      <description>&lt;p&gt;For the last few days I challenged myself to craft a small, lightweight extension on VScode. This is a tool I customized to ease some of the pain I had when working with Roblox. Getting used to VSCode Extension is fun - I have to admin. The API is clean and sharp, however, something had happened &amp;hellip;&lt;/p&gt;&#xA;&lt;h5 id=&#34;problem&#34;&gt;Problem&lt;/h5&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Some unwanted behavior occur&lt;/li&gt;&#xA;&lt;li&gt;I have to add &lt;code&gt;code breakpoint&lt;/code&gt; to debug the extension but it not work. The &lt;code&gt;breakpoint&lt;/code&gt; is unbound&lt;/li&gt;&#xA;&lt;li&gt;Printing on console is no work as well.&lt;/li&gt;&#xA;&lt;li&gt;However, the extension did running. Albeit, all the modifications I made seem to have no effect to fix the &lt;em&gt;unwanted behavior&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What&amp;rsquo;s the heck is happening?&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Csharp - Covariance and Contravariance</title>
      <link>https://sonnguyen9800.com/dev/on-csharp---covariance-and-contravariance/</link>
      <pubDate>Wed, 12 Jun 2024 21:53:30 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/on-csharp---covariance-and-contravariance/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/on-csharp---covariance-and-contravariance/Capture_hu_d0d13acc8b440691.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/on-csharp---covariance-and-contravariance/Capture_hu_d0d13acc8b440691.webp 640w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;680&#34; height=&#34;329&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Recently I decided to teach myself some &lt;strong&gt;C#&lt;/strong&gt; knowledge that I found my self lacking, including but not limited to &lt;code&gt;Task&lt;/code&gt; (&lt;code&gt;Concurrency&lt;/code&gt;), &lt;code&gt;delegates&lt;/code&gt; and some &lt;em&gt;Design Patterns&lt;/em&gt;. While reading books, I encountered two concepts that sound pretty weird. They are &lt;em&gt;Covariance&lt;/em&gt; and &lt;em&gt;Contravariance&lt;/em&gt;. What are these?&lt;/p&gt;&#xA;&lt;h5 id=&#34;problem&#34;&gt;Problem&lt;/h5&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I didn&amp;rsquo;t find any good translation to Vietnamese of these two concepts.&lt;/li&gt;&#xA;&lt;li&gt;The first result from Google indicates that Covariance is related to statistic?&lt;/li&gt;&#xA;&lt;li&gt;So, what are they?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h5 id=&#34;definition&#34;&gt;Definition&lt;/h5&gt;&#xA;&lt;p&gt;Below here &lt;em&gt;my own&lt;/em&gt; definition for some keywords:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Concurrency with C Sharp</title>
      <link>https://sonnguyen9800.com/tip/concurrency-with-c-sharp/</link>
      <pubDate>Sat, 08 Jun 2024 12:27:02 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/concurrency-with-c-sharp/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/concurrency-with-c-sharp/thumbnail_hu_ec031c780312fa3b.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/concurrency-with-c-sharp/thumbnail_hu_6a4a5c8869b2fed2.webp 640w, https://sonnguyen9800.com/tip/concurrency-with-c-sharp/thumbnail_hu_4843b34caeb6c053.webp 960w, https://sonnguyen9800.com/tip/concurrency-with-c-sharp/thumbnail_hu_ec031c780312fa3b.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5688&#34; height=&#34;3713&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;After a while coding in C#, I think myself need to train hard on Concurrency. After, this is such a powerful concept but I never tried to grasp the ideas properly.&lt;/p&gt;&#xA;&lt;p&gt;I started teaching myself about Concurrency in C# using the book &lt;code&gt;Concurrency in C#: Cookbook&lt;/code&gt;. This short article will summarize some practices and snipplets that I found useful.&lt;/p&gt;&#xA;&lt;h4 id=&#34;some-quick-notes&#34;&gt;Some quick notes:&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Avoid &lt;code&gt;async void&lt;/code&gt; (should be &lt;code&gt;async Task&lt;/code&gt; )&lt;/li&gt;&#xA;&lt;li&gt;Use &lt;code&gt;Task&amp;lt;T&amp;gt;&lt;/code&gt; rather than &lt;code&gt;ValueTask&amp;lt;T&amp;gt;&lt;/code&gt; (if possible)&lt;/li&gt;&#xA;&lt;li&gt;Becareful with &lt;code&gt;ConfigureAwait()&lt;/code&gt; and its implementation on UI Threads.&lt;/li&gt;&#xA;&lt;li&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;1-visualize-for-iprogresst-and-task&#34;&gt;1. Visualize for &lt;code&gt;IProgress&amp;lt;T&amp;gt; and Task&lt;/code&gt;&lt;/h4&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;public static async Task MethodProgress(IProgress&amp;lt;double&amp;gt; progress = null){&#xA;    bool done = false;&#xA;    double percentageComplete = 0;&#xA;    while (!done){&#xA;        progress?.Report(percentageComplete);&#xA;        percentageComplete += 0.15;&#xA;        if (percentageComplete &amp;gt;= 1)&#xA;            break;&#xA;        await Task.Delay(TimeSpan.FromMilliseconds(40));   &#xA;    }&#xA;}&#xA;&#xA;public static async Task TestProgress()&#xA;{&#xA;    var progress = new Progress&amp;lt;double&amp;gt;();&#xA;&#xA;    progress.ProgressChanged += (sender, args) =&amp;gt;&#xA;    {&#xA;        Console.WriteLine($&amp;#34;Progress: {args}%&amp;#34;);&#xA;&#xA;    };&#xA;    await MethodProgress(progress);&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;2-using-taskwhenall&#34;&gt;2. Using Task.WhenAll()&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The book author explicitly advice to use array (non &lt;code&gt;IEnumerable&lt;/code&gt; instead) so he convert all to array first.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;async Task&amp;lt;string&amp;gt; DownloadAllAsync(HttpClient client,&#xA; IEnumerable&amp;lt;string&amp;gt; urls)&#xA;{&#xA; // Define the action to do for each URL.&#xA; var downloads = urls.Select(url =&amp;gt; client.GetStringAsync(url));&#xA; // Note that no tasks have actually started yet&#xA; // because the sequence is not evaluated.&#xA; // Start all URLs downloading simultaneously.&#xA; Task&amp;lt;string&amp;gt;[] downloadTasks = downloads.ToArray();&#xA; // Now the tasks have all started.&#xA; // Asynchronously wait for all downloads to complete.&#xA; string[] htmlPages = await Task.WhenAll(downloadTasks);&#xA; return string.Concat(htmlPages);&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;3-progressing-tasks-in-order-of-completion&#34;&gt;3. Progressing tasks in order of completion&lt;/h4&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;public static async Task AwaitAndProgressAysn(Task&amp;lt;int&amp;gt; task){&#xA;    int result = await task;&#xA;    Console.WriteLine(result);&#xA;}&#xA;&#xA;public static async Task ProgressTasksAsyn2()&#xA;{&#xA;    Task&amp;lt;int&amp;gt; taskA = DelayAndReturnAsyn(1);&#xA;    var taskB = DelayAndReturnAsyn(2);&#xA;    var taskC = DelayAndReturnAsyn(5);&#xA;    var taskD = DelayAndReturnAsyn(3);&#xA;&#xA;    var tasks = new[] { taskA, taskB, taskC, taskD };&#xA;    IEnumerable&amp;lt;Task&amp;gt; taskQuery = from t in tasks select AwaitAndProgressAysn(t);&#xA;    Task[] processingTasks = taskQuery.ToArray();&#xA;    await Task.WhenAll(processingTasks);&#xA;}&#xA;&#xA;// Using Nito.AsynEx to have .OrderByCompletion()&#xA;public static async Task ProgressTasksAsyn3()&#xA;{&#xA;    Task&amp;lt;int&amp;gt; taskA = DelayAndReturnAsyn(1);&#xA;    var taskB = DelayAndReturnAsyn(2);&#xA;    var taskC = DelayAndReturnAsyn(5);&#xA;    var taskD = DelayAndReturnAsyn(3);&#xA;&#xA;    var tasks = new[] { taskA, taskB, taskC, taskD };&#xA;    foreach (var task in tasks.OrderByCompletion())&#xA;    {&#xA;        var result = await task;&#xA;        Console.WriteLine(result);&#xA;    }&#xA;}&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Tech Journal - .Deleting Encrypts. files accidently remove $HOME in Linux mint </title>
      <link>https://sonnguyen9800.com/misc/tech-journal---.encryptfs-files-causing-trouble/</link>
      <pubDate>Sat, 18 May 2024 10:05:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/tech-journal---.encryptfs-files-causing-trouble/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/misc/tech-journal---.encryptfs-files-causing-trouble/thumbnail_hu_ec031c780312fa3b.webp&#34; srcset=&#34;https://sonnguyen9800.com/misc/tech-journal---.encryptfs-files-causing-trouble/thumbnail_hu_6a4a5c8869b2fed2.webp 640w, https://sonnguyen9800.com/misc/tech-journal---.encryptfs-files-causing-trouble/thumbnail_hu_4843b34caeb6c053.webp 960w, https://sonnguyen9800.com/misc/tech-journal---.encryptfs-files-causing-trouble/thumbnail_hu_ec031c780312fa3b.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5688&#34; height=&#34;3713&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s say that you realized that 150GB of your hard drive had been used up in some sort of &lt;strong&gt;.encryptf&lt;/strong&gt; files of your Linux Machine. This is already too much. You read article about this from &lt;a href=&#34;https://wiki.archlinux.org/title/ECryptfs&#34;&gt;https://wiki.archlinux.org/title/ECryptfs&lt;/a&gt; to make sure that the file can be deleted safely.&lt;/p&gt;&#xA;&lt;p&gt;As it said below&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;3.2 Removal of encryption&#xA;There are no special steps involved, if you want to remove your private directory. Make sure it is un-mounted and delete the respective lower directory (e.g. ~/.Private/), along with all the encrypted files. After also removing the related encryption signatures and configuration in ~/.ecryptfs/, all is gone.&#xA;If you were using the #Ubuntu tools to setup a single directory encryption, you can directly follow the steps detailed by:&#xA;$ ecryptfs-setup-private &amp;ndash;undo&#xA;and follow the instructions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Đọc Neil Jamieson: Để Hiểu Việt Nam</title>
      <link>https://sonnguyen9800.com/other/doc-neil-jamieson-understand-vietnam/</link>
      <pubDate>Sat, 11 May 2024 17:00:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/doc-neil-jamieson-understand-vietnam/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/doc-neil-jamieson-understand-vietnam/cover_hu_3c1d66157a2667fa.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/doc-neil-jamieson-understand-vietnam/cover_hu_3c1d66157a2667fa.webp 300w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;300&#34; height=&#34;450&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Đọc về lịch sử là điều không dễ, đọc về chính lịch sử của nước mình đôi khi còn khó hơn. Khó vì đôi khi chính bản thân mình, mặc định coi những gì mình và dân tộc mình trải qua là hiển nhiên. Vì là hiển nhiên nên mình không coi chúng là đặc biệt. Hay nói cách khác là mình không nhận ra những gì mà dân tộc mình trước đây vốn có nhưng không biết là chúng vốn tồn tại. Thành ra việc đọc sử của nước ta nhưng được viết bởi một người nước ngoài, trong trường hợp này là &lt;strong&gt;Neil Jamieson&lt;/strong&gt; – một nhà văn hóa và xã hội học từng công tác tại miền Nam Việt Nam, lại tỏ ra cực kỳ hiệu quả. Góc nhìn mới mẻ và phương pháp lập luận Tây Phương của Neil, cộng vào kinh nghiệm nghiên cứu và học tập tại Việt Nam đã giúp tác giả viết nên &lt;em&gt;Understanding Vietnam&lt;/em&gt;, một cuốn sách rất đáng đọc và hấp dẫn.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enabling Hardware Encoding in Jellyfin with NVIDIA GPU</title>
      <link>https://sonnguyen9800.com/misc/enable-hardware-coding-in-jellyfin-with-nvidia-gpu/</link>
      <pubDate>Thu, 09 May 2024 19:23:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/enable-hardware-coding-in-jellyfin-with-nvidia-gpu/</guid>
      <description>&lt;h5 id=&#34;problem&#34;&gt;Problem&lt;/h5&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;My Docker Jellyfin running on an i3-9100F CPU is too slow in encoding movies.&lt;/li&gt;&#xA;&lt;li&gt;The server has an NVIDIA 1600 GPU, so I must utilize the power of this beast.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This quick journal summarizes the key points and steps to be done to use an NVIDIA GPU on a Dockerized Jellyfin server.&lt;/p&gt;&#xA;&lt;h5 id=&#34;solution&#34;&gt;Solution&lt;/h5&gt;&#xA;&lt;h6 id=&#34;install-nvidi-toolkit&#34;&gt;Install NVIDI Toolkit&lt;/h6&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Follow this guide: &lt;a href=&#34;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html&#34;&gt;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Update NVIDIA driver and follow the above guide&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;modify-jellyfin-docker-composeyml-file&#34;&gt;Modify Jellyfin &lt;code&gt;docker-compose.yml&lt;/code&gt; file&lt;/h6&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  jellyfin:&#xA;    image: linuxserver/jellyfin:10.8.11&#xA;    container_name: jellyfin&#xA;    environment:&#xA;      - PUID=1000&#xA;      - PGID=1000&#xA;      - TZ=UTC&#xA;      - NVIDIA_VISIBLE_DEVICES=all&#xA;      - NVIDIA_DRIVER_CAPABILITIES=compute,utility,video&#xA;    volumes:&#xA;      - jellyfin-config:/config&#xA;      - torrent-downloads:/data&#xA;    &#xA;    devices:&#xA;      - /dev/dri:/dev/dri&#xA;      - /dev/nvidiactl:/dev/nvidiactl&#xA;      - /dev/nvidia0:/dev/nvidia0&#xA;      - /dev/nvidia-modeset:/dev/nvidia-modeset&#xA;    deploy:&#xA;      resources:&#xA;        reservations:&#xA;          devices:&#xA;            - driver: nvidia&#xA;              capabilities: [gpu]&#xA;    ports:&#xA;      - 2284:8096&#xA;      - 7359:7359/udp&#xA;      - 8920:8920&#xA;    restart: always&#xA;    networks:&#xA;      - media-stack-network&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;Run command:&#xA;&lt;code&gt;ck$ sudo usermod -aG video $USER&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Restart the docker service&lt;/li&gt;&#xA;&lt;li&gt;Confirm if GPU had been detected in the docker environment by below command:&#xA;&lt;code&gt;$ docker exec -it jellyfin nvidia-smi&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h6 id=&#34;enable-hardware-acceleration-in-jellyfin-dashboard&#34;&gt;Enable Hardware Acceleration in Jellyfin Dashboard&lt;/h6&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/misc/enable-hardware-coding-in-jellyfin-with-nvidia-gpu/image_hu_4158675d84c81069.webp&#34; srcset=&#34;https://sonnguyen9800.com/misc/enable-hardware-coding-in-jellyfin-with-nvidia-gpu/image_hu_af952be016eea6cc.webp 640w, https://sonnguyen9800.com/misc/enable-hardware-coding-in-jellyfin-with-nvidia-gpu/image_hu_4158675d84c81069.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1403&#34; height=&#34;791&#34; alt=&#34;alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tech Journal - Firebase and Unity, Remote Config keep fetching wrong data</title>
      <link>https://sonnguyen9800.com/misc/tech-journal---firebase-and-unity-remote-config-keep-fetching-wrong-data/</link>
      <pubDate>Wed, 08 May 2024 18:06:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/tech-journal---firebase-and-unity-remote-config-keep-fetching-wrong-data/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/misc/tech-journal---firebase-and-unity-remote-config-keep-fetching-wrong-data/thumbnail_hu_ec031c780312fa3b.webp&#34; srcset=&#34;https://sonnguyen9800.com/misc/tech-journal---firebase-and-unity-remote-config-keep-fetching-wrong-data/thumbnail_hu_6a4a5c8869b2fed2.webp 640w, https://sonnguyen9800.com/misc/tech-journal---firebase-and-unity-remote-config-keep-fetching-wrong-data/thumbnail_hu_4843b34caeb6c053.webp 960w, https://sonnguyen9800.com/misc/tech-journal---firebase-and-unity-remote-config-keep-fetching-wrong-data/thumbnail_hu_ec031c780312fa3b.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5688&#34; height=&#34;3713&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Admit it, &lt;strong&gt;Unity&lt;/strong&gt; is too &lt;em&gt;bloated&lt;/em&gt;. The software/engine had envolved into a monstrous being with gross tentacles and ugly mouth, not very different from a &lt;em&gt;Lovecraftian&lt;/em&gt; being. &lt;strong&gt;Google&lt;/strong&gt; is facing the same problem. And when the two merged together we have something worse than &lt;em&gt;Cronenberg demon-lord&lt;/em&gt;. By that don&amp;rsquo;t forget to mention the whole mess, love-hat relationship between Unity and Gradle as well, when sometime one of the two caused crazy build-related issues that just so unintelligible. This is, first and foremost, the disadvantage when developer use too many complex, abstract level software and wrapper. Secondly, this gives us more motivation to ditch both Google (yup! we ditched Google Drive and host our own Cloud instead!) and go further away from Unity as well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reup - Về Ông Bình Vôi</title>
      <link>https://sonnguyen9800.com/misc/reup-ong-binh-voi-la-ai/</link>
      <pubDate>Sat, 04 May 2024 12:45:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/reup-ong-binh-voi-la-ai/</guid>
      <description>&lt;p&gt;I am reading the book &amp;ldquo;&lt;strong&gt;Understanding Vietnam&lt;/strong&gt;&amp;rdquo;. I am quite interested with poet of the past days like Le Dat and Phan Khoi. When reading the book, there is a funny poem quoted:&lt;/p&gt;&#xA;&lt;div style=&#34;text-align: center;&#34;&gt;&#xA;&#xA;Human Lives, which can attain a hundred years,&#xA;&lt;/br&gt;&#xA;Are like pots of lime&#xA;&lt;/br&gt;&#xA;The longer the life, the more mediocrity&#xA;&lt;/br&gt;&#xA;The longer the life, the smaller one becomes.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;I don&amp;rsquo;t know what is &amp;ldquo;pots of lime&amp;rdquo; (In English translation), So i tried to find the original poem in Vietnamese. Amazed from what I found, i decided to quote &amp;amp; reup the full poem here for future retrospect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Founding a Company - A Journal and Devlog</title>
      <link>https://sonnguyen9800.com/other/founding-a-company---a-journal-and-devlog/</link>
      <pubDate>Fri, 03 May 2024 23:04:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/founding-a-company---a-journal-and-devlog/</guid>
      <description>&lt;p&gt;Me and another colleagues decided to create our own game since last December. The game basic feature is incompleted. We both have a full time job. However, he really want to sign up a company (he is the type of person who want to do many things at onced - like me). Hence I dedicided to join him. Also, it is true that I always want to found a Game Development Studio myself. After all, I had spent three years in the industry and working hard under other&amp;rsquo;s design is never my wanna be models.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tech Journal - Docker failed to mount drive</title>
      <link>https://sonnguyen9800.com/misc/tech-journal---docker-failed-to-mount/</link>
      <pubDate>Thu, 29 Feb 2024 10:53:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/tech-journal---docker-failed-to-mount/</guid>
      <description>&lt;h5 id=&#34;problem&#34;&gt;Problem&lt;/h5&gt;&#xA;&lt;p&gt;I have a container (lissy93/dashy) and another one (jellyfin) that is running normally using docker-compose. The docker-compose file looks similar to this&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;// Welcome to Dashy! To get started, run `docker compose up -d`&#xA;// You can configure your container here, by modifying this file&#xA;version: &amp;#34;3.8&amp;#34;&#xA;services:&#xA;  dashy:&#xA;    container_name: Dashy&#xA;&#xA;    # Pull latest image from DockerHub&#xA;    image: lissy93/dashy&#xA;&#xA;    # To build from source, replace &amp;#39;image: lissy93/dashy&amp;#39; with &amp;#39;build: .&amp;#39;&#xA;    # build: .&#xA;&#xA;    # Or, to use a Dockerfile for your archtecture, uncomment the following&#xA;    # context: .&#xA;    # dockerfile: ./docker/Dockerfile-arm32v7&#xA;&#xA;    # You can also use an image with a different tag, or pull from a different registry, e.g:&#xA;    # image: ghcr.io/lissy93/dashy or image: lissy93/dashy:arm64v8&#xA;&#xA;    # Pass in your config file below, by specifying the path on your host machine&#xA;    volumes:&#xA;      - /home/username/dashy/config.yml:/app/public/conf.yml&#xA;&#xA;&#xA;    # Set port that web service will be served on. Keep container port as 80&#xA;    ports:&#xA;      - 2280:80&#xA;&#xA;    # Set any environmental variables&#xA;    environment:&#xA;      - NODE_ENV=production&#xA;    # Specify your user ID and group ID. You can find this by running `id -u` and `id -g`&#xA;    #  - UID=1000&#xA;    #  - GID=1000&#xA;&#xA;    # Specify restart policy&#xA;    restart: always&#xA;&#xA;    # Configure healthchecks&#xA;    healthcheck:&#xA;      test: [&amp;#39;CMD&amp;#39;, &amp;#39;node&amp;#39;, &amp;#39;/app/services/healthcheck&amp;#39;]&#xA;      interval: 1m30s&#xA;      timeout: 10s&#xA;      retries: 3&#xA;      start_period: 40s&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and this (jellyfin)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Batch Convert Unity Scene into Prefab</title>
      <link>https://sonnguyen9800.com/tip/batch-convert-unity-scene-into-prefab/</link>
      <pubDate>Sun, 14 Jan 2024 10:50:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/batch-convert-unity-scene-into-prefab/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/tip/batch-convert-unity-scene-into-prefab/thumbnail_hu_ec031c780312fa3b.webp&#34; srcset=&#34;https://sonnguyen9800.com/tip/batch-convert-unity-scene-into-prefab/thumbnail_hu_6a4a5c8869b2fed2.webp 640w, https://sonnguyen9800.com/tip/batch-convert-unity-scene-into-prefab/thumbnail_hu_4843b34caeb6c053.webp 960w, https://sonnguyen9800.com/tip/batch-convert-unity-scene-into-prefab/thumbnail_hu_ec031c780312fa3b.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5688&#34; height=&#34;3713&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Motivation: You have 100 Scene, each with multiple game objects. Some game object should be exported into a prefab. How can you do it quick?&lt;/p&gt;&#xA;&lt;p&gt;Below is code snippet for quick reference&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&#xA;&#xA;&#xA;public class Tool: EditorWindow&#xA;{&#xA;    [MenuItem(&amp;#34;Tool/Create Prefab&amp;#34;, false, -10)]&#xA;    private static void CreatePrefab(UnityEditor.MenuCommand command)&#xA;    {&#xA;&#xA;        GameObject selectedOb = (GameObject)command.context;&#xA;        Transform selectedTransform = selectedOb.transform;&#xA;        GameObject rootObject = selectedTransform.root.gameObject;&#xA;&#xA;        string path = EditorUtility.SaveFilePanel(&amp;#34;Save Prefab&amp;#34;, &amp;#34;Assets/MyPrefabs&amp;#34;, rootObject.name, &amp;#34;prefab&amp;#34;);&#xA;&#xA;        if (!string.IsNullOrEmpty(path))&#xA;        {&#xA;            path = FileUtil.GetProjectRelativePath(path);&#xA;            GameObject obj = selectedOb;&#xA;            PrefabUtility.SaveAsPrefabAssetAndConnect(obj, path, InteractionMode.UserAction);&#xA;        }&#xA;    }&#xA;&#xA;    private static string _path_to_all_level_scenes = &amp;#34;&amp;#34;;&#xA;    private static string _path_to_all_bosslevel_scenes = &amp;#34;&amp;#34;;&#xA;    private static string _path_to_level_prefab_dest = &amp;#34;&amp;#34;;&#xA;    private static string _path_to_bosslevel_prefab_dest = &amp;#34;&amp;#34;;&#xA;&#xA;&#xA;    [MenuItem(&amp;#34;Tool/Create Prefab(s)&amp;#34;, false, -10)]&#xA;&#xA;    private static void CreateAllLevelPrefabs()&#xA;    {&#xA;        string[] files = Directory.GetFiles(_path_to_all_level_scenes, &amp;#34;*.unity&amp;#34;);&#xA;&#xA;        foreach (string file in files)&#xA;        {&#xA;            // string sceneName = Path.GetFileNameWithoutExtension(file);&#xA;            ProcessSceneToPrefab(file, _path_to_level_prefab_dest);&#xA;        }&#xA;    }&#xA;&#xA;    [MenuItem(&amp;#34;Tool/Create Prefab(s) - Boss Level&amp;#34;, false, -10)]&#xA;&#xA;    private static void CreateAllBossLevelPrefabs()&#xA;    {&#xA;        string[] files = Directory.GetFiles(_path_to_all_bosslevel_scenes, &amp;#34;*.unity&amp;#34;);&#xA;&#xA;        foreach (string file in files)&#xA;        {&#xA;            // string sceneName = Path.GetFileNameWithoutExtension(file);&#xA;            ProcessSceneToPrefab(file, _path_to_bosslevel_prefab_dest);&#xA;        }&#xA;    }&#xA;&#xA;    private static void ProcessSceneToPrefab(string path_to_scene, string destination)&#xA;    {&#xA;        int count = EditorSceneManager.sceneCount;&#xA;&#xA;        for (int i = 0; i &amp;lt; count; i++)&#xA;        {&#xA;            Scene sceneI = SceneManager.GetSceneAt(i);&#xA;            Debug.LogError(&amp;#34;Remove scene: &amp;#34; + sceneI.name);&#xA;            if (sceneI.buildIndex != SceneManager.GetActiveScene().buildIndex)&#xA;            {&#xA;                EditorSceneManager.UnloadSceneAsync(sceneI);&#xA;            }&#xA;        }&#xA;&#xA;&#xA;        Scene scene = EditorSceneManager.OpenScene(path_to_scene, OpenSceneMode.Single);&#xA;        //var allObjects = &#xA;        //GameObject myGameObject = GameObject.Find(&amp;#34;GameController&amp;#34;);&#xA;&#xA;        //if (myGameObject != null)&#xA;        //{&#xA;        //    string prefabPath = destination + &amp;#34;/&amp;#34; + scene.name + &amp;#34;.prefab&amp;#34;;&#xA;        //    PrefabUtility.SaveAsPrefabAsset(myGameObject, prefabPath);&#xA;        //}&#xA;        GameObject root = new GameObject(&amp;#34;PrefabRoot&amp;#34;);&#xA;&#xA;        var allGameObjectsInScene = GameObject.FindObjectsOfType&amp;lt;Transform&amp;gt;();&#xA;        foreach (var t in allGameObjectsInScene)&#xA;        {&#xA;            if (t.name == &amp;#34;Directional Light&amp;#34;)&#xA;                continue;&#xA;            if (t.name == &amp;#34;Canvas&amp;#34;)&#xA;                continue;&#xA;            if (t.name == &amp;#34;Main Camera&amp;#34;)&#xA;                continue;&#xA;            if (t.name == &amp;#34;AudioManager&amp;#34;)&#xA;                continue;&#xA;            if (t.parent == null)&#xA;            {&#xA;                t.parent = root.transform;&#xA;                continue;&#xA;            }&#xA;&#xA;        }&#xA;        // Save the prefab&#xA;        string path = destination + &amp;#34;/&amp;#34; + scene.name + &amp;#34;.prefab&amp;#34;;&#xA;        if (!string.IsNullOrEmpty(path))&#xA;        {&#xA;           // path = FileUtil.GetProjectRelativePath(path);&#xA;          //  PrefabUtility.SaveAsPrefabAssetAndConnect(root, path, InteractionMode.UserAction);&#xA;            PrefabUtility.SaveAsPrefabAsset(root, path);&#xA;&#xA;        }&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Ngọt Thơm vị Cà-ri Nhật</title>
      <link>https://sonnguyen9800.com/other/ngot-thom-vi-ca-ri-nhat/</link>
      <pubDate>Tue, 12 Dec 2023 22:40:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/ngot-thom-vi-ca-ri-nhat/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/ngot-thom-vi-ca-ri-nhat/img1_hu_ae48bc07b0e7c923.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/ngot-thom-vi-ca-ri-nhat/img1_hu_f3f73e44a98536ff.webp 640w, https://sonnguyen9800.com/other/ngot-thom-vi-ca-ri-nhat/img1_hu_d84ec28fc689f55c.webp 960w, https://sonnguyen9800.com/other/ngot-thom-vi-ca-ri-nhat/img1_hu_ae48bc07b0e7c923.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;2250&#34; height=&#34;1341&#34; alt=&#34;Japanese Curry&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Lần đầu tiên tôi biết đến cái món Curry (Cà-ri) Nhật Bản là từ một cuốn truyện tranh. Thuở ấy Việt Nam internet còn chưa phổ cập. Khi đó thường vào dịp cuối tháng và phải vào đúng ngày thứ bảy. Hôm ấy nếu may mắn thì bố tôi sẽ mua cho tôi một cuốn truyện tranh. Truyện về một chú mèo máy béo ú đến từ tương lai, quay ngược về quá khứ thế kỷ 20 để giúp đỡ cho một cậu học sinh hậu đậu. Cái món Curry Nhật Bản xuất hiện lần đầu với tôi như thế đấy. Kể cũng lạ, giữa những trang truyện với đầy thứ máy móc siêu việt, mỗi thứ một phép lạ, thì hình ảnh của đĩa curry vẫn được ông tác giả chăm chút một cách cẩn thận. Nét vẽ của các tác giả Nhật Bản thời ấy thì đẹp một cách đơn giản nhưng đặc trưng. Tác giả kinh điển thời kỳ ấy là Osamu Tezuka, có lẽ ông là một trong những người đầu tiên vẽ nhân vật theo kiểu mũm mĩm, tay chân tròn trịa, gần giống với phim hoạt hình Âu Mỹ thời điểm ấy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Review về Nhân Gian Thất Cách (Ft. Zizek, Hayao Miyazaki)</title>
      <link>https://sonnguyen9800.com/other/review-ve-nhan-gian-that-cach-ft-zizek-hayao-miyazaki/</link>
      <pubDate>Wed, 22 Nov 2023 22:10:28 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/review-ve-nhan-gian-that-cach-ft-zizek-hayao-miyazaki/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/review-ve-nhan-gian-that-cach-ft-zizek-hayao-miyazaki/pic_hu_fddbdde5e9a3e02d.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/review-ve-nhan-gian-that-cach-ft-zizek-hayao-miyazaki/pic_hu_c2c4f7933f7f993.webp 640w, https://sonnguyen9800.com/other/review-ve-nhan-gian-that-cach-ft-zizek-hayao-miyazaki/pic_hu_fddbdde5e9a3e02d.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1280&#34; height=&#34;853&#34; alt=&#34;Osamu Dazai&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tôi không thường đọc văn học Nhật, một phần vì không biết bắt đầu từ đâu. Tôi có thử qua Murakami nhưng cuốn duy nhất mà tôi thấy thích lại là &lt;strong&gt;“Tôi nghĩ gì khi nói về Chạy bộ”&lt;/strong&gt;. Cái lối văn chương của Murakami là một thứ văn chương kỳ quái, ma mị và vì lẽ đó mà tôi xin nói thật là tôi sợ. Cái lối văn ấy, tôi gọi đùa với mấy đứa em, là lối văn viết cho sướng cái bút của nhà văn, còn đối với độc giả thì đọc cái lối văn ấy để thấy sướng cái thú đọc. Đọc văn khi ấy là đọc cho cái khoái chí khi đọc, còn khi đọc xong thì chẳng thể đúc rút ra cái gì. Đấy là hồi tôi còn cứng nhắc, còn logic và bảo thủ thì nghĩ thế. Giờ thì bớt bớt nhưng cái nỗi bực tức với Murakami thì vẫn còn đó.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Self-hosting Immich – A Google Photo Alternative or an Erotic journey to the Abyss?</title>
      <link>https://sonnguyen9800.com/dev/self-hosting-immich-a-heroic-adventure-or-an-erotic-dark-tale/</link>
      <pubDate>Thu, 26 Oct 2023 01:08:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/self-hosting-immich-a-heroic-adventure-or-an-erotic-dark-tale/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/self-hosting-immich-a-heroic-adventure-or-an-erotic-dark-tale/image-1_hu_3920633604ad3c8c.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/self-hosting-immich-a-heroic-adventure-or-an-erotic-dark-tale/image-1_hu_62e29ffb656a47ff.webp 640w, https://sonnguyen9800.com/dev/self-hosting-immich-a-heroic-adventure-or-an-erotic-dark-tale/image-1_hu_3920633604ad3c8c.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1024&#34; height=&#34;1024&#34; alt=&#34;Alt text&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Once upon a time, there was a man who believed in the power of authority and unity. This man sold his soul to &lt;em&gt;the-god-whose-name-should-not-be-spoken&lt;/em&gt;, in favor of a small gift: the power of &lt;em&gt;The Great Knowledge&lt;/em&gt; – in which the man now can have his own Book Library, that can be compared to the great &lt;em&gt;Library of Alexandria&lt;/em&gt;, which had been burned not once, not twice, but at least three times. Granted the power of wisdom and knowledge, but the man wants more. He asked God for more power. The Lord said:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reup - Một vài ý nghĩ về thơ</title>
      <link>https://sonnguyen9800.com/misc/reup-mot-vai-y-nghi-ve-tho/</link>
      <pubDate>Fri, 22 Sep 2023 11:30:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/reup-mot-vai-y-nghi-ve-tho/</guid>
      <description>&lt;p&gt;I spent the whole day searching for this essay online but found no useful link. I was quite deseprate so that I even thought of visiting some library for the original magazine where the original article was printed. Fortunately, a very great, young, brilliant essayist in Spiderum kindly share me the link.&lt;/p&gt;&#xA;&lt;p&gt;His/her account was: &amp;ldquo;Paracetamol Hôn Môi Xa&amp;rdquo; (@trinhnnattuan). His/her link was given below, which I guess to be his/her website&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reup - Tư cách trí thức Việt Nam</title>
      <link>https://sonnguyen9800.com/misc/reup-tu-cach-tri-thuc-vietnam/</link>
      <pubDate>Sun, 06 Aug 2023 14:20:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/reup-tu-cach-tri-thuc-vietnam/</guid>
      <description>&lt;p&gt;A long analysis on Vietname intellectuals and cultures that I read 10 years ago. The bullet point / most important takeaway is that the need for a clear distinguish between the thinkers and the politician in Vietnamese society. This article had influenced me for a pretty long time.&lt;/p&gt;&#xA;&lt;p&gt;I re-up it here, in case the main website got shutdown or something bad happend. You can visit the original link below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reup - Suy nghĩ về Triết</title>
      <link>https://sonnguyen9800.com/misc/reup-suy-nghi-ve-triet/</link>
      <pubDate>Sun, 30 Jul 2023 22:20:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/reup-suy-nghi-ve-triet/</guid>
      <description>&lt;p&gt;A very well-put, short essay on Philosophy in general and Philosophy of South Vietnam before 1975. The article was amazing, in fact, so good that have to reup it here in case the website collapsed or some bad thing happend. You can visit the original link here: &lt;a href=&#34;https://tapchitriet.com/?p=598&#34;&gt;https://tapchitriet.com/?p=598&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The author was Như Hạnh (Prof. Nguyễn Tự Cường).&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;suy-nghi-vê-triêt-va-nghi-lai-vê-triêt-tai-nam-viêt-nam-trươc-1975&#34;&gt;Suy nghĩ về triết và nghĩ lại về triết tại (Nam) Việt Nam trước 1975&lt;/h3&gt;&#xA;&lt;p&gt;Như Hạnh&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Art Of Loving (Erich Fromm) - Study Note</title>
      <link>https://sonnguyen9800.com/misc/the-art-of-loving-erich-fromm---study-note/</link>
      <pubDate>Wed, 12 Jul 2023 22:30:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/the-art-of-loving-erich-fromm---study-note/</guid>
      <description>&lt;p&gt;I finished &amp;ldquo;&lt;strong&gt;The Art of Loving&lt;/strong&gt;&amp;rdquo; several months ago. To be honest, the book left me unsatisfied, bored, and overall quite disappointed. However, as a reader, I feel the need &amp;amp; responsibility to, at least, make a short study note and talk about some great points that I take from the book.&lt;/p&gt;&#xA;&lt;p&gt;This is not a review, a summary, or something similar, just my personal study note. Read it but be aware of the fact that I, as the writer, don&amp;rsquo;t recommend this one. It is not because of the quality, quite different, the book is a good read, but I simply don&amp;rsquo;t find it interesting &amp;ldquo;enough&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tech Journal - GCloud, Disk Problem and More</title>
      <link>https://sonnguyen9800.com/misc/tech-journal---gcloud-disk-problem-and-more/</link>
      <pubDate>Sun, 09 Jul 2023 09:25:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/tech-journal---gcloud-disk-problem-and-more/</guid>
      <description>&lt;p&gt;My book server has a serious bug last night. The server crashed and cannot recovered automatically. Why this happended and how to resolve it? I write down this note to summarize the steps I took to fix the issue.&lt;/p&gt;&#xA;&lt;h4 id=&#34;1-finding-the-problem-ssh-to-the-vm&#34;&gt;1. Finding the problem: SSH to the VM&lt;/h4&gt;&#xA;&lt;p&gt;&amp;ndash; I tried to ssh connect using the default ssh-in-browser (google cloud), unfortunately, the connection failed multipletime.&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash; I tried to troubleshoot it by the default troubleshoot button in the ssh-in-browser. The troubleshoot stuck at testing &amp;ldquo;connectivity&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chuyện về sư Tuệ Hà</title>
      <link>https://sonnguyen9800.com/other/chuyen-ve-su-tue-ha/</link>
      <pubDate>Wed, 05 Jul 2023 21:28:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/chuyen-ve-su-tue-ha/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/chuyen-ve-su-tue-ha/image_hu_2f7721457dd900a4.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/chuyen-ve-su-tue-ha/image_hu_2f7721457dd900a4.webp 640w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;744&#34; height=&#34;648&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sư Tuệ Hà, tên tự là Trấn, tên chữ là Thắng, là người làng Cót, thuộc Hà Nội. Để gặp được sư thì lâu lâu hãy thử đến Chùa Láng ở quận Đống Đa. Ngôi chùa nằm trên một con phố gần với sông Tô Lịch. Nếu hữu duyên bạn có thể thấy sư ở đó, khi thì đi tản bộ, lúc thì nhận cúng dường, nhưng đa phần là thấy sư đang thiền định.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sơ Lược về Phật giáo 2 - Các Tông Phái</title>
      <link>https://sonnguyen9800.com/other/s%C6%A1-l%C6%B0%C6%A1%CC%A3c-v%C3%AA%CC%80-ph%C3%A2%CC%A3t-gia%CC%81o-2/</link>
      <pubDate>Sat, 01 Jul 2023 23:00:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/s%C6%A1-l%C6%B0%C6%A1%CC%A3c-v%C3%AA%CC%80-ph%C3%A2%CC%A3t-gia%CC%81o-2/</guid>
      <description>&lt;p&gt;Chúng ta đều biết rằng &lt;strong&gt;Tất Đạt Đa Cồ Đàm&lt;/strong&gt; là người khai sinh ra Phật Giáo. Tuy nhiên, sau khi ông mất thì đều gì đã xảy ra với tăng đoàn (&lt;em&gt;sanghai&lt;/em&gt;)? Phần hai của bài viết này tập trung kể nhanh về những phân nhánh của Phật Giáo. Tương tự như phần một, mình sẽ cố gắng tóm gọn và chỉ tập trung liệt kê những danh nhân, những kinh sách tiêu biểu ứng với mỗi trường phái Phật Pháp. Nhìn chung thì số lượng của các &lt;strong&gt;Dhrama&lt;/strong&gt; (&lt;em&gt;Pháp&lt;/em&gt;) là quá nhiều và cần thời gian nghiên cứu rất lâu để nắm vững.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sơ Lược về Phật giáo 1 - Giáo Lý</title>
      <link>https://sonnguyen9800.com/other/s%C6%A1-l%C6%B0%C6%A1%CC%A3c-v%C3%AA%CC%80-ph%C3%A2%CC%A3t-gia%CC%81o-1/</link>
      <pubDate>Sat, 01 Jul 2023 22:48:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/s%C6%A1-l%C6%B0%C6%A1%CC%A3c-v%C3%AA%CC%80-ph%C3%A2%CC%A3t-gia%CC%81o-1/</guid>
      <description>&lt;p&gt;Thân là gia đình Công Giáo, nhưng bản thân lại tò mò về Phật Giáo từ lâu. Tuy nhiên để mà tự học về Phật Giáo thì không dễ. Lý do là vì Phật Giáo có nhiều dòng tu, nhiều lịch sử, thậm chí là còn có nhiều ông Phật quá. Phật Thích Ca thì không nói, còn có cả Phật Di Lặc, Phật Ca Diếp, Phật quá khứ Phật tương lai các kiểu. Ngoài các vị phật còn có các nhánh Phật Giáo khác nhau, rất nhiều và phức tạp. Một số trong đó dù nổi tiếng trong văn hóa đại chúng Việt Nam nhưng hóa ra lại bị coi là không chính thống ở những tông phái khác. Một số khác thì cực kỳ bí ẩn, phức tạp. Một số thì rất tập trung về thiền định, nghĩ ra vô số cách thiền khác nhau, cực kỳ sáng tạo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mathematics for Game Development and Graphics Programming - Study Note</title>
      <link>https://sonnguyen9800.com/misc/mathematics-for-game-development-and-graphics-programming-study-note/</link>
      <pubDate>Wed, 21 Jun 2023 20:02:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/mathematics-for-game-development-and-graphics-programming-study-note/</guid>
      <description>&lt;p&gt;For a month, I have been trying to study Math for Game Development (mostly Graphics Programming) from a book written by &lt;strong&gt;Penny De Byl&lt;/strong&gt;. The book quality is average at best, but at least it provides basic information on Math and other stuff. The tutorials in the book were mostly done in Python. Here is my quick study note to summarize what I learned from the book. First, I will make a short review for the given content:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Review Game (or Rant) - Assassin&#39;s Creed Bloodlines</title>
      <link>https://sonnguyen9800.com/misc/review-game-or-rant---assasins-creed-bloodlines/</link>
      <pubDate>Sat, 27 May 2023 19:02:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/review-game-or-rant---assasins-creed-bloodlines/</guid>
      <description>&lt;p&gt;Khoảng độ mười năm trước, lúc còn 13,14 tuổi, mình có cái máy game và trên ấy là một đĩa &lt;strong&gt;Assasin’s Creed: Bloodlines&lt;/strong&gt;. Hồi ấy chơi nghiền dễ sợ. Tuy nhiên chơi đến một hồi thì đụng con trùm “&lt;em&gt;Dark Oracle&lt;/em&gt;” – một con mụ điên với cái chiêu ném dao + nhảy xồ vào người. Gặp mụ mình ớn quá nên hồi bé cày đến đoạn này là không chơi nữa.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plugins on VSCode that you should install</title>
      <link>https://sonnguyen9800.com/tip/plugins-on-vscode-that-you-should-install/</link>
      <pubDate>Wed, 17 May 2023 22:20:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/plugins-on-vscode-that-you-should-install/</guid>
      <description>&lt;p&gt;As the name suggests, here are some add-on that I cannot work without!&lt;/p&gt;&#xA;&lt;h3 id=&#34;on-writing-blog&#34;&gt;&lt;strong&gt;On Writing Blog&lt;/strong&gt;:&lt;/h3&gt;&#xA;&lt;p&gt;I write my blog mostly in Microsoft Word, then paste the whole text to vscode in Markdown format. So, most of the editing need to be done here in Visual Studio Code. Here are two add-on that proved to be super-helpful when I do bloggings.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Markdown All In One (Yu Zhang): Provide shortcut to do text bolding, section formatting, and so on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Super cool add-ons on Linux</title>
      <link>https://sonnguyen9800.com/tip/super-cool-add-ons-for-linux/</link>
      <pubDate>Wed, 17 May 2023 22:15:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/super-cool-add-ons-for-linux/</guid>
      <description>&lt;p&gt;I installed Linux Mint the first time and now trying to get used to the system. The good new is there are plenty of funny things we can tweaks! For example, I did turn my Mint OS&amp;rsquo;s theme into something very similar to Mac OS Big Sur! The changes were amazing and I totally love it!&lt;/p&gt;&#xA;&lt;p&gt;Here are some funny things you should try on your Linux (Mint). The list will be updated in the future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup a Calibre Server on VPS</title>
      <link>https://sonnguyen9800.com/dev/setup-a-calibre-server-on-vps/</link>
      <pubDate>Mon, 15 May 2023 14:24:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/setup-a-calibre-server-on-vps/</guid>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/setup-a-calibre-server-on-vps/thumbnail_hu_7a92f87450fc9d15.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/setup-a-calibre-server-on-vps/thumbnail_hu_dd57a6b0d4839373.webp 640w, https://sonnguyen9800.com/dev/setup-a-calibre-server-on-vps/thumbnail_hu_b2c038b150c84f84.webp 960w, https://sonnguyen9800.com/dev/setup-a-calibre-server-on-vps/thumbnail_hu_7a92f87450fc9d15.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1588&#34; height=&#34;507&#34; alt=&#34;My Library&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;figcaption&gt;Library&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ebook collecting became my recent hobby for recent months. For most of the time until last week, I simply stored my books in a OneDrive account and managed the books through calibre client. However, some issues on Linux machine caused a small inconvenience in my book database &amp;amp; onedrive synchronicity. Thus, it was a must to come up with a more elegant design that can fulfill my requirements. Although the online library works great at the moment, the actual development &amp;amp; deployment was a very long, complicated process that inflated into many sub-steps and rabbit holes which cost all of my weekends. Hence, I decided to write down all of these steps I took in the hope that this note will be helpful for everyone interested in this topic and me-in-the-future as well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Survival Tips in Android Retro Gaming world!</title>
      <link>https://sonnguyen9800.com/tip/survival-tips-in-android-retro-gaming-world/</link>
      <pubDate>Mon, 15 May 2023 10:03:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/survival-tips-in-android-retro-gaming-world/</guid>
      <description>&lt;h4 id=&#34;general&#34;&gt;General&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Best site to download game rom + misc: &lt;a href=&#34;https://r-roms.github.io/&#34;&gt;https://r-roms.github.io/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Best guide to begin with: &lt;a href=&#34;https://retrogamecorps.com/2022/03/13/android-emulation-starter-guide/&#34;&gt;https://retrogamecorps.com/2022/03/13/android-emulation-starter-guide/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;gameboy-advance&#34;&gt;GameBoy Advance&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Cheats downloaded from the default database may not work. Try to use mGBA core to run game with cheats. &amp;ldquo;VBA Next&amp;rdquo; had problem with cheat. Tested on 14/5/2023. Use the default retroarch on PlayStore (android)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;ps1&#34;&gt;PS1&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Some Game on PS1 required different &lt;strong&gt;bios&lt;/strong&gt; file (e.g SCPH5501.BIN or SCPH1001.BIN). Find and download the file at &lt;a href=&#34;https://r-roms.github.io/&#34;&gt;https://r-roms.github.io/&lt;/a&gt; then import these files into retroarch/Duckstation.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;sega-saturn&#34;&gt;Sega Saturn&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;On RetroArch Yabashiro oo Bettle Saturn, you must prepare a bios file to play the game. Check the link: &lt;a href=&#34;https://docs.libretro.com/library/beetle_saturn/#bios&#34;&gt;https://docs.libretro.com/library/beetle_saturn/#bios&lt;/a&gt; for more info.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;ds&#34;&gt;DS&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;(2023) Don&amp;rsquo;t hesistant to purchase Drastic app on Android. I tried to play Pokemon Black/White on MelonDS, RetroArch&amp;rsquo;s MelonDS, RetroArch&amp;rsquo;s Desmune + Desmune2015. However, all of them had terrible performance. Then I decided to spend 5 USD on Drastic then the game run as smooth as butler! Hell, I event attempted to mail the developer to say thank.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Useful Commands on Linux</title>
      <link>https://sonnguyen9800.com/tip/useful-command-on-linux/</link>
      <pubDate>Fri, 12 May 2023 20:56:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/useful-command-on-linux/</guid>
      <description>&lt;p&gt;Move back to Linux again. Here are some commands to save your days! The list will be continously updated!&lt;/p&gt;&#xA;&lt;h5 id=&#34;1-find-what-process-is-running-on-the-port&#34;&gt;1. Find What process is running on the port&lt;/h5&gt;&#xA;&lt;p&gt;&lt;code&gt;fuser 8080/tcp&lt;/code&gt;&#xA;Use &lt;code&gt;fuser -k 8080/tcp&lt;/code&gt; to kill the process&lt;/p&gt;&#xA;&lt;h5 id=&#34;2-set-linux-time-to-local&#34;&gt;2. Set Linux time to local&lt;/h5&gt;&#xA;&lt;p&gt;&lt;code&gt;timedatectl set-local-rtc 1 ==adjust-system-clock&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h5 id=&#34;3-set-and-check-path&#34;&gt;3. Set and check $PATH&lt;/h5&gt;&#xA;&lt;p&gt;To set value to PATH&#xA;&lt;code&gt;export VALUE_NAME=\path\to\executable&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;To review the value:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;echo $VALUE_NAME&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Remember to run &lt;code&gt;source .bashrc&lt;/code&gt; to reload the &lt;code&gt;.bashrc&lt;/code&gt; file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make your own Android Retro handheld device!</title>
      <link>https://sonnguyen9800.com/dev/make-your-own-android-retro-handheld-device/</link>
      <pubDate>Sat, 06 May 2023 15:03:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/make-your-own-android-retro-handheld-device/</guid>
      <description>&lt;p&gt;Having a job that involves 8 hours of sitting in front of the computer screen sometimes makes you tired of doing anything related to the PC, even gaming. In addition, getting mature means that our brains sometimes tricks us into the memories of some good old days, despite of the fact that these “good days” were very likely illusions produced by the mind and nothing more than desperate, tragic wishes. Although such wishes and forgotten pasts can be annoying and haunting, I strongly believe that a deep look into the past can reveal valuable insight into history, culture and even humanity as a whole.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making Deep Game - A Book Review</title>
      <link>https://sonnguyen9800.com/dev/making-deep-game---a-book-review/</link>
      <pubDate>Mon, 24 Apr 2023 23:50:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/making-deep-game---a-book-review/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/making-deep-game---a-book-review/book_cover_hu_5a37af0a42aeab8a.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/making-deep-game---a-book-review/book_cover_hu_5a37af0a42aeab8a.webp 640w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;667&#34; height=&#34;1000&#34; alt=&#34;Cover&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;What can constitute a “&lt;strong&gt;deep game&lt;/strong&gt;”? Could a game reproduce or invoke experiences or feelings that are so unique, so compromising, and thoughtful that changes the player’s perspective on life? &lt;strong&gt;Doris C. Rusch&lt;/strong&gt;, a Sweden professor on game design believes video games can be much more than simple entertainment. In 2017, she wrote “&lt;strong&gt;Making Deep Games&lt;/strong&gt;”, a manual book for designers to craft meaningful games. Below is a short review and analysis of the book.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Diogenes, and the war against the world</title>
      <link>https://sonnguyen9800.com/other/on-diogenes-and-the-war-against-the-world/</link>
      <pubDate>Mon, 06 Mar 2023 23:10:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/on-diogenes-and-the-war-against-the-world/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/on-diogenes-and-the-war-against-the-world/book_cover1_hu_5a5fdc4fa77d51ff.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/on-diogenes-and-the-war-against-the-world/book_cover1_hu_5a5fdc4fa77d51ff.webp 640w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;641&#34; height=&#34;1000&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;This article is a summary &amp;amp; study notes for a book named &lt;strong&gt;Diogenes The Cynic: The War Against The World&lt;/strong&gt;, written by &lt;strong&gt;Luis E. Navia&lt;/strong&gt;. The book provides a short, but descriptive and well-analyzed biography of Diogenes. In the following chapter, the author gives his analysis and interpretation of Diogenes’s record, as well as Diogenes’ philosophy and also the Cynics movement on its own.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tôi đã sống vì điều gì? Bertrand Russell </title>
      <link>https://sonnguyen9800.com/other/t%C3%B4i-s%E1%BB%91ng-v%C3%AC-%C4%91i%E1%BB%81u-g%C3%AC---bertrand-russell/</link>
      <pubDate>Thu, 02 Mar 2023 01:01:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/t%C3%B4i-s%E1%BB%91ng-v%C3%AC-%C4%91i%E1%BB%81u-g%C3%AC---bertrand-russell/</guid>
      <description>&lt;p&gt;Bertrand Russell là nhà Triết Gia, một nhà Toán học, nhà thơ và một nhà logic học. Đoạn trích dưới đây được ông viết trong cuốn hồi ký tự truyện, thuộc phần tiền truyện (Prologue). Đoạn trích có nhan đề “What Have I lived for” – Tôi đã sống vì điều gì. Tuy đoạn trích rất ngắn nhưng người dịch (sonnguyen9800) rất thích, cách hành văn của Russel cũng quả thực là đấy chất thơ ca.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bàn về Sự Ngắn Ngủi Của Đời Người (Phần 2)</title>
      <link>https://sonnguyen9800.com/other/ba%CC%80n-v%C3%AA%CC%80-s%C6%B0%CC%A3-ng%C4%83%CC%81n-ngu%CC%89i-cu%CC%89a-%C4%91%C6%A1%CC%80i-ng%C6%B0%C6%A1%CC%80i-ph%C3%A2%CC%80n-2/</link>
      <pubDate>Mon, 21 Nov 2022 01:01:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/ba%CC%80n-v%C3%AA%CC%80-s%C6%B0%CC%A3-ng%C4%83%CC%81n-ngu%CC%89i-cu%CC%89a-%C4%91%C6%A1%CC%80i-ng%C6%B0%C6%A1%CC%80i-ph%C3%A2%CC%80n-2/</guid>
      <description>&lt;p&gt;Tiếp tục Phần hai của De Brevitate Vitate.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/ba%CC%80n-v%C3%AA%CC%80-s%C6%B0%CC%A3-ng%C4%83%CC%81n-ngu%CC%89i-cu%CC%89a-%C4%91%C6%A1%CC%80i-ng%C6%B0%C6%A1%CC%80i-ph%C3%A2%CC%80n-2/seneca_img2_hu_e7e6a901d4cda495.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/ba%CC%80n-v%C3%AA%CC%80-s%C6%B0%CC%A3-ng%C4%83%CC%81n-ngu%CC%89i-cu%CC%89a-%C4%91%C6%A1%CC%80i-ng%C6%B0%C6%A1%CC%80i-ph%C3%A2%CC%80n-2/seneca_img2_hu_3e732f835126dc8b.webp 640w, https://sonnguyen9800.com/other/ba%CC%80n-v%C3%AA%CC%80-s%C6%B0%CC%A3-ng%C4%83%CC%81n-ngu%CC%89i-cu%CC%89a-%C4%91%C6%A1%CC%80i-ng%C6%B0%C6%A1%CC%80i-ph%C3%A2%CC%80n-2/seneca_img2_hu_e7e6a901d4cda495.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1024&#34; height=&#34;613&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tôi có thể tìm rất nhiều lập luận chứng minh rằng đời của những ai bị phân tâm là rất ngắn ngủn, tôi cũng có thể chia ra những luận điểm, luận ý khác nhau để chứng minh điều này. Nhưng như Fabianus, một ông triết gia hàn lâm đương thời hơi hướng phong cách cổ điển, cho rằng con người phải tiêu diệt những si mê luyến ái bằng vũ lực chứ không phải bằng lý luận; vậy đó, hàng tuyến của quân thù phải bị lay chuyển bằng một đòn đánh mạnh mẽ, không phải bằng những cú kim đâm nhỏ giọt; thói xấu của con người cũng phải bị nghiền vụn thay vì đâm chọc. Và để con người có thể nhận ra chính những lỗi lầm của bản thân, họ cũng phải cần được uốn nắn chứ không thể bị bỏ mặc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bàn về Sự Ngắn Ngủi Của Đời Người (Phần 1)</title>
      <link>https://sonnguyen9800.com/other/ba%CC%80n-v%C3%AA%CC%80-s%C6%B0%CC%A3-ng%C4%83%CC%81n-ngu%CC%89i-cu%CC%89a-%C4%91%C6%A1%CC%80i-ng%C6%B0%C6%A1%CC%80i-ph%C3%A2%CC%80n-1/</link>
      <pubDate>Mon, 21 Nov 2022 01:01:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/ba%CC%80n-v%C3%AA%CC%80-s%C6%B0%CC%A3-ng%C4%83%CC%81n-ngu%CC%89i-cu%CC%89a-%C4%91%C6%A1%CC%80i-ng%C6%B0%C6%A1%CC%80i-ph%C3%A2%CC%80n-1/</guid>
      <description>&lt;p&gt;Seneca là một triết gia lừng danh trong Chủ Nghĩa Khắc Kỷ, ông là một nhà chính khách, một học giả, một nhà biên kịch, từng là thầy và cố vấn cho hoàng đế Nero, tuy rằng sau này đã bị chính Nero bức tử. “Về Sự Ngắn Ngủi của Đời Người” (De Brevitate Vitae) là một bài phân tích được Seneca viết cho Paulinus vào năm năm 49 A.D. Paulinus là một ông quan lo chuyện lương thực cho Rome, vốn là một chức vụ quan trọng. Ông này được xem là họ hàng thân với vợ Seneca. Ở đây người dịch sẽ chọn cách xưng hô như thể cả hai là bạn bè, mặc dù một vài nghiên cứu cho rằng Paulinus là cha vợ của Seneca.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Về Cà Phê</title>
      <link>https://sonnguyen9800.com/other/vecaphe/</link>
      <pubDate>Thu, 22 Sep 2022 08:45:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/vecaphe/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/vecaphe/thumbnail_hu_687792e5ef38af09.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/vecaphe/thumbnail_hu_b066041faad3b26b.webp 640w, https://sonnguyen9800.com/other/vecaphe/thumbnail_hu_969ab962b466867e.webp 960w, https://sonnguyen9800.com/other/vecaphe/thumbnail_hu_687792e5ef38af09.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1600&#34; height=&#34;1200&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tôi chưa bao giờ bị mất ngủ vì cà phê. Nếu một hôm nào đó tôi than với các bạn rằng tôi mất ngủ, chắc chắn là không phải do cà phê, mà do tôi ngủ quá nhiều hôm trước, hoặc là hôm đó có cái gì đó diễn ra làm cho tôi nghĩ mãi không thôi.&lt;/p&gt;&#xA;&lt;p&gt;Cà phê đối với tôi, là một thứ thức uống đặc biệt. Nó đặt biệt ở chỗ, tôi có thể uống hoài mà không biết ngán. Thế thôi vẫn không đủ, sự đặc sắc của cà phê nằm ở hương và vị. Chưa bao giờ, và cũng không có thứ thức uống nào gần gũi mà có hương và vị độc đáo như cà phê. Có chăng những thứ có thể khiến tôi hung phấn như đối với cà phê chính là những thứ biến tấu của chính cà phê: cà phê Matcha, cà phê Sữa, cà phê Capuchino, … Nhiều lắm, nhiều lắm không kể xiết.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tôi nói gì khi nói về đi bộ</title>
      <link>https://sonnguyen9800.com/other/t%C3%B4i-n%C3%B3i-g%C3%AC-khi-n%C3%B3i-v%E1%BB%81-%C4%91i-b%E1%BB%99/</link>
      <pubDate>Sun, 07 Aug 2022 00:02:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/t%C3%B4i-n%C3%B3i-g%C3%AC-khi-n%C3%B3i-v%E1%BB%81-%C4%91i-b%E1%BB%99/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/t%C3%B4i-n%C3%B3i-g%C3%AC-khi-n%C3%B3i-v%E1%BB%81-%C4%91i-b%E1%BB%99/thumbnail_hu_d1165fadf0c49be2.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/t%C3%B4i-n%C3%B3i-g%C3%AC-khi-n%C3%B3i-v%E1%BB%81-%C4%91i-b%E1%BB%99/thumbnail_hu_b8e2a537e5acfe66.webp 640w, https://sonnguyen9800.com/other/t%C3%B4i-n%C3%B3i-g%C3%AC-khi-n%C3%B3i-v%E1%BB%81-%C4%91i-b%E1%BB%99/thumbnail_hu_783c574ecfcdbe6a.webp 960w, https://sonnguyen9800.com/other/t%C3%B4i-n%C3%B3i-g%C3%AC-khi-n%C3%B3i-v%E1%BB%81-%C4%91i-b%E1%BB%99/thumbnail_hu_d1165fadf0c49be2.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;4000&#34; height=&#34;2250&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sài gòn sáng hôm nay đánh thức người ta bằng một trận mưa điên rồ. Mưa độ bốn mươi phút, không một tiếng sấm báo trước. Người ta chỉ biết giật mình khi tiếng mưa đập thẳng vào mái tôn lộp độp như thể hàng triệu mũi tên đồng loạt cắm xuống. Mưa tầm tã đánh thức cả những người lười biếng nhất, những kẻ ngủ say cố tình nằm thêm một hai tiếng tranh thủ dịp cuối tuần.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Những Chuyện Kỳ Lạ Khi Còn Bé</title>
      <link>https://sonnguyen9800.com/other/nh%E1%BB%AFng-chuy%E1%BB%87n-k%E1%BB%B3-l%E1%BA%A1-khi-c%C3%B2n-b%C3%A9/</link>
      <pubDate>Sat, 25 Jun 2022 21:34:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/nh%E1%BB%AFng-chuy%E1%BB%87n-k%E1%BB%B3-l%E1%BA%A1-khi-c%C3%B2n-b%C3%A9/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/other/nh%E1%BB%AFng-chuy%E1%BB%87n-k%E1%BB%B3-l%E1%BA%A1-khi-c%C3%B2n-b%C3%A9/thumbnail_hu_e186bf7d36abf076.webp&#34; srcset=&#34;https://sonnguyen9800.com/other/nh%E1%BB%AFng-chuy%E1%BB%87n-k%E1%BB%B3-l%E1%BA%A1-khi-c%C3%B2n-b%C3%A9/thumbnail_hu_ef870993f0e842e9.webp 640w, https://sonnguyen9800.com/other/nh%E1%BB%AFng-chuy%E1%BB%87n-k%E1%BB%B3-l%E1%BA%A1-khi-c%C3%B2n-b%C3%A9/thumbnail_hu_e186bf7d36abf076.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;960&#34; height=&#34;576&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Căn nhà nơi tôi sinh ra có nguồn gốc là một mảnh đất ruộng, nơi người ta nguyên thủy dùng để trồng rau. Chủ cũ của miếng đất giờ không biết ở nơi nào. Có người kể là bà ấy đã dọn nhà về sâu trong làng sống. Người thì nói là bà ấy mất từ lâu rồi, mất từ ngay sau khi bà bán mảnh vườn cho ba mẹ tôi.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Reddit Reup] Drunk Post - Things I&#39;ve learned as a Sr Engineer</title>
      <link>https://sonnguyen9800.com/misc/reddit-reup-drunk-post---things-ive-learned-as-a-sr-engineer/</link>
      <pubDate>Sat, 09 Apr 2022 09:42:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/reddit-reup-drunk-post---things-ive-learned-as-a-sr-engineer/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/misc/reddit-reup-drunk-post---things-ive-learned-as-a-sr-engineer/thumbnail_hu_2a6469377be66c6c.webp&#34; srcset=&#34;https://sonnguyen9800.com/misc/reddit-reup-drunk-post---things-ive-learned-as-a-sr-engineer/thumbnail_hu_7933484a6475a050.webp 640w, https://sonnguyen9800.com/misc/reddit-reup-drunk-post---things-ive-learned-as-a-sr-engineer/thumbnail_hu_ec72da379ee720da.webp 960w, https://sonnguyen9800.com/misc/reddit-reup-drunk-post---things-ive-learned-as-a-sr-engineer/thumbnail_hu_2a6469377be66c6c.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5066&#34; height=&#34;3377&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;This post is a reup from a Reddit Post that I found interesting. The original post was written by a drunk, but senior data engineer on the topic of career in software development. I think it is very valuable for me and developers in general so I reup it here.&lt;/p&gt;&#xA;&lt;p&gt;Below are what he wrote, not mine:&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h4 id=&#34;drunk-post-things-ive-learned-as-a-sr-engineer&#34;&gt;Drunk Post: Things I&amp;rsquo;ve learned as a Sr Engineer&lt;/h4&gt;&#xA;&lt;p&gt;I&amp;rsquo;m drunk and I&amp;rsquo;ll probably regret this, but here&amp;rsquo;s a drunken rank of things I&amp;rsquo;ve learned as an engineer for the past 10 years.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deploy a Unity Webgl Build to a Local Server</title>
      <link>https://sonnguyen9800.com/dev/deploy-a-unity-webgl-build-to-a-local-server/</link>
      <pubDate>Tue, 05 Apr 2022 23:54:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/deploy-a-unity-webgl-build-to-a-local-server/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/deploy-a-unity-webgl-build-to-a-local-server/thumbnail_hu_ec031c780312fa3b.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/deploy-a-unity-webgl-build-to-a-local-server/thumbnail_hu_6a4a5c8869b2fed2.webp 640w, https://sonnguyen9800.com/dev/deploy-a-unity-webgl-build-to-a-local-server/thumbnail_hu_4843b34caeb6c053.webp 960w, https://sonnguyen9800.com/dev/deploy-a-unity-webgl-build-to-a-local-server/thumbnail_hu_ec031c780312fa3b.webp 1440w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;5688&#34; height=&#34;3713&#34; alt=&#34;Thumbnail 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Some colleagues of mine, who, despite of their degrees, don’t know how to deploy a &lt;strong&gt;WebGL&lt;/strong&gt; build to a local server. Thus, I suggested he use a small add-on on &lt;strong&gt;Google Chrome&lt;/strong&gt;. However, as a programmer myself, I quite dislike this solution (it is not nerdy, requires no programming and sometimes the add-on is lagged or broken). Furthermore, it turns out that there is not so many topics and tutorial about this on the internet. Hence, I made this post to list all solutions I knew that work for me to deploy WebGL Game to the local server. Hopefully, this will help some game developers in the future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips on Azure Function</title>
      <link>https://sonnguyen9800.com/tip/tips-on-azure-function/</link>
      <pubDate>Mon, 28 Feb 2022 11:50:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/tips-on-azure-function/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;This article is under ongoing development hence the content may be updated and changed regularly.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Error when running&lt;/strong&gt;&lt;/em&gt; &lt;code&gt;func host start&lt;/code&gt; or &lt;code&gt;func start&lt;/code&gt; from the terminal.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h6 id=&#34;version&#34;&gt;Version&lt;/h6&gt;&#xA;&lt;p&gt;Core Tool: 4.0.3971&#xA;Function Runtime Verison: 4.0.1.16815&lt;/p&gt;&#xA;&lt;h6 id=&#34;error-content&#34;&gt;Error Content&lt;/h6&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Azure Functions Core Tools&#xA;Core Tools Version:       4.0.3971 Commit hash: d0775d487c93ebd49e9c1166d5c3c01f3c76eaaf  (64-bit)&#xA;Function Runtime Version: 4.0.1.16815&#xA;&#xA;Can&amp;#39;t determine project language from files. Please use one of [--csharp, --javascript, --typescript, --java, --python, --powershell, --custom]&#xA;Value cannot be null. (Parameter &amp;#39;provider&amp;#39;)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Also, sometime the terminal refuse to execute and wait infinitely after this log&lt;/p&gt;</description>
    </item>
    <item>
      <title>When Your Unity Component Mysteriously Disappeared</title>
      <link>https://sonnguyen9800.com/dev/when-your-unity-component-mysteriously-disappeared/</link>
      <pubDate>Mon, 13 Dec 2021 01:28:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/when-your-unity-component-mysteriously-disappeared/</guid>
      <description>&lt;p&gt;Recently, I encountered a tricky, mysterious bug occurring in my company’s game project. “&lt;strong&gt;That’s just an animation bug&lt;/strong&gt;” so I thought, in fact, the bug is far more trickier than it should have been. Thus, I wrote down this small article to explain the problem and hope every Unity developers be aware of it.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://sonnguyen9800.com/dev/when-your-unity-component-mysteriously-disappeared/image1_hu_eb7b622c173c83af.webp&#34; srcset=&#34;https://sonnguyen9800.com/dev/when-your-unity-component-mysteriously-disappeared/image1_hu_cb8815d2b9d4b9ac.webp 640w, https://sonnguyen9800.com/dev/when-your-unity-component-mysteriously-disappeared/image1_hu_eb7b622c173c83af.webp 960w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;1171&#34; height=&#34;780&#34; alt=&#34;Image 1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;background&#34;&gt;Background&lt;/h4&gt;&#xA;&lt;p&gt;It is a must to have some assumptions and background information on the issue I encountered.&#xA;Subject: The object where the bug occurs is a normal game object, which has many child objects inside of it. For now, we refer to it as &lt;strong&gt;Object A&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips on NodeJs and JavaScript Development (General)</title>
      <link>https://sonnguyen9800.com/tip/tips-on-nodejs-and-javascript-development-general/</link>
      <pubDate>Tue, 26 Oct 2021 22:40:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/tips-on-nodejs-and-javascript-development-general/</guid>
      <description>&lt;p&gt;A list of tips &amp;amp; common errors when using NodeJs. This list is, as well as the other, under ongoing updates &amp;amp; fixing. Hope it can help you then!&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Symlink Problem&lt;/strong&gt;&lt;/em&gt; when installing package by &lt;strong&gt;npm&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h6 id=&#34;my-scenario&#34;&gt;My Scenario&lt;/h6&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You have an external drive and &lt;em&gt;init&lt;/em&gt; a &lt;strong&gt;npm project&lt;/strong&gt; into it. The problem is the external drive is formatted in &lt;strong&gt;FAT32 (Window) format&lt;/strong&gt;. Thus, when installing a simple package (such as &lt;em&gt;nodemon&lt;/em&gt;), the system shows up an error:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;npm ERR!    &amp;#39;Error: EPERM: operation not permitted, symlink \&amp;#39;../is-ci/bin.js\&amp;#39; -&amp;gt; \&amp;#39;&amp;lt;PATH&amp;gt;/node_modules/.bin/is-ci\&amp;#39;&amp;#39;,&#xA;npm ERR!   errno: -1,&#xA;npm ERR!   code: &amp;#39;EPERM&amp;#39;,&#xA;npm ERR!   syscall: &amp;#39;symlink&amp;#39;,&#xA;npm ERR!   path: &amp;#39;../is-ci/bin.js&amp;#39;,&#xA;npm ERR!   dest:&#xA;npm ERR!    &amp;#39;&amp;lt;PATH&amp;gt;/node_modules/.bin/is-ci&amp;#39;,&#xA;npm ERR!   parent: &amp;#39;FCM-test&amp;#39; }&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h6 id=&#34;solution&#34;&gt;Solution:&lt;/h6&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add &amp;lsquo;&amp;ndash;no-bin-links&amp;rsquo; when installing package. Example:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;npm install nodemon --save --no-bin-links&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Using &lt;em&gt;&lt;strong&gt;NODEMON&lt;/strong&gt;&lt;/em&gt; or any script from local dictionary&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h6 id=&#34;my-scenario-1&#34;&gt;My Scenario&lt;/h6&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Yes! &lt;strong&gt;nodemon&lt;/strong&gt; is super popular and people love to install it globally. However, my philosophy is decoupling and keep everything seperate. The below snippet in &lt;strong&gt;package.json&lt;/strong&gt; run the module from local dictionary instead.&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;h6 id=&#34;solution-1&#34;&gt;Solution:&lt;/h6&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&#xA;  &amp;#34;name&amp;#34;: &amp;#34;test&amp;#34;,&#xA;  &amp;#34;version&amp;#34;: &amp;#34;1.0.0&amp;#34;,&#xA;  &amp;#34;description&amp;#34;: &amp;#34;&amp;#34;,&#xA;  &amp;#34;main&amp;#34;: &amp;#34;server.js&amp;#34;,&#xA;  &amp;#34;dependencies&amp;#34;: {&#xA;    &amp;#34;nodemon&amp;#34;: &amp;#34;^2.0.14&amp;#34;&#xA;  },&#xA;  &amp;#34;devDependencies&amp;#34;: {},&#xA;  &amp;#34;scripts&amp;#34;: {&#xA;    &amp;#34;test&amp;#34;: &amp;#34;echo \&amp;#34;Error: no test specified\&amp;#34; &amp;amp;&amp;amp; exit 1&amp;#34;,&#xA;    &amp;#34;start&amp;#34;: &amp;#34;node ./node_modules/nodemon/bin/nodemon.js &amp;lt;*YOUR_SERVER_SCRIPT*&amp;gt;&amp;#34;&#xA;  },&#xA;  &amp;#34;author&amp;#34;: &amp;#34;&amp;#34;,&#xA;  &amp;#34;license&amp;#34;: &amp;#34;ISC&amp;#34;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Run &lt;code&gt;npm start&lt;/code&gt; every time you want to boot the nodemon. The script&amp;rsquo;s name (&lt;em&gt;start&lt;/em&gt;) can be changed of course.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Export tilemap into PNG format in Unity</title>
      <link>https://sonnguyen9800.com/dev/from-tiles-to-images/</link>
      <pubDate>Fri, 15 Oct 2021 00:19:50 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/from-tiles-to-images/</guid>
      <description>&lt;p&gt;This post is a re-up from my new &lt;em&gt;Github repository&lt;/em&gt;. Long story short, I started my own game in Unity 2D but when doing the development, I want to export &lt;strong&gt;tilemap&lt;/strong&gt; into seperate &lt;strong&gt;Image&lt;/strong&gt; file to create prefab used in later purpose.&lt;/p&gt;&#xA;&lt;p&gt;However, Not many useful topic &amp;amp; discussion regarding on this problem is good enough. Hence, I decided to create my own package to achieve this task, this one is named as &lt;strong&gt;FromTiles2Image&lt;/strong&gt;. The link to the repository and the &lt;strong&gt;.unitypackage&lt;/strong&gt; file can be visited &lt;a href=&#34;https://github.com/sonnguyen9800/FromTiles2Images&#34;&gt;here&lt;/a&gt;. Below are the content from &lt;em&gt;README&lt;/em&gt; file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resources for Game Dev, Software Architect &amp; IT General</title>
      <link>https://sonnguyen9800.com/misc/resources-to-self-study-game-dev-software-architect--it-general/</link>
      <pubDate>Thu, 16 Sep 2021 13:48:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/resources-to-self-study-game-dev-software-architect--it-general/</guid>
      <description>&lt;p&gt;When doing self-learning and searching things on the Internet, sometimes you encounter gold advice or learning materials. In the past, I bookmarked everything, but most of the time the links are discarded after three or five months, either because of me reinstalling the Browser without backups or no longer find it useful. Therefore, 99.99 percent of the links bookmarked are lost forever.&lt;/p&gt;&#xA;&lt;p&gt;I think this is not a good practice. As a result, I decided to create this post to list down all useful links that I think it is good for my career, which focuses on Game Development &amp;amp; System Architecture. This post will be updated regularly, and the link I listed may be a Github Repo, blog, or a random website. The order of them is set randomly. At the time you read, the links could be invalid, if so, please contact me as I will try to update it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recommended Readings, Modern &amp; Postmodern, A coursera course</title>
      <link>https://sonnguyen9800.com/misc/recommended-readings-modern--postmodern-a-coursera-course/</link>
      <pubDate>Sun, 05 Sep 2021 11:04:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/recommended-readings-modern--postmodern-a-coursera-course/</guid>
      <description>&lt;figure&gt;&lt;img src=&#34;https://sonnguyen9800.com/misc/recommended-readings-modern--postmodern-a-coursera-course/thumbnail_hu_b20abde61ef02ff3.webp&#34; srcset=&#34;https://sonnguyen9800.com/misc/recommended-readings-modern--postmodern-a-coursera-course/thumbnail_hu_b20abde61ef02ff3.webp 640w&#34; sizes=&#34;(max-width: 760px) 100vw, 720px&#34; width=&#34;800&#34; height=&#34;586&#34; alt=&#34;Fichier:Edouard Manet 004&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/figure&gt;&#xA;&lt;h4 id=&#34;course-name&#34;&gt;Course Name:&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;Modern and Postmodern (Part 1)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;sources&#34;&gt;Sources:&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.coursera.org/learn/modern-postmodern-1/supplement/ra3q3/syllabus&#34;&gt;https://www.coursera.org/learn/modern-postmodern-1/supplement/ra3q3/syllabus&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;extra-reading&#34;&gt;Extra Reading:&lt;/h3&gt;&#xA;&lt;p&gt;The below reading &amp;amp; list of essays are copied from the original site. You can always visit the link above to enroll the course officially. Note that the audit option &amp;amp; financial aid is alway available.&lt;/p&gt;&#xA;&lt;h5 id=&#34;1-general-recommended-readings&#34;&gt;1. General Recommended Readings&lt;/h5&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Baudelaire, &lt;strong&gt;Paris Spleen&lt;/strong&gt; (French): &lt;a href=&#34;http://baudelaire.litteratura.com/le_spleen_de_paris.php&#34;&gt;http://baudelaire.litteratura.com/le_spleen_de_paris.php&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Flaubert&lt;/strong&gt;, Madame Bovary &lt;a href=&#34;http://www.gutenberg.org/ebooks/2413&#34;&gt;http://www.gutenberg.org/ebooks/2413&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Freud, &lt;strong&gt;Civilization &amp;amp; Its Discontents&lt;/strong&gt; &lt;a href=&#34;http://www.archive.org/details/CivilizationAndItsDiscontents&#34;&gt;http://www.archive.org/details/CivilizationAndItsDiscontents&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A short analysis on Man’s Search for Meaning</title>
      <link>https://sonnguyen9800.com/other/a-short-analysis-on-mans-search-for-meaning/</link>
      <pubDate>Sun, 29 Aug 2021 22:10:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/a-short-analysis-on-mans-search-for-meaning/</guid>
      <description>&lt;p&gt;Unlike most of the books I read recently, &lt;strong&gt;Man’s Search for Meaning&lt;/strong&gt; is regarded as as mainstream classic, the book is well-known as a masterpiece and highly praised as one of the best on the topic of meaning and how to figure out the meaning in the state of decay. The book can be treated like a diary of a Jewish man who was captured and taken into a concentration camp. Different than 99.99 percent of other prisoners in the camp, the author, &lt;strong&gt;Viktor Frankl&lt;/strong&gt; is an exception, he was a brilliant psychologist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Review Game] The First Templar</title>
      <link>https://sonnguyen9800.com/misc/review-game---the-first-templar/</link>
      <pubDate>Fri, 06 Aug 2021 20:06:00 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/review-game---the-first-templar/</guid>
      <description>&lt;p&gt;The First Templar không phải là một tựa game nổi tiếng, nó cũng chả phải là một Cult Classic (tên thường gọi cho những tựa game ít nổi nhưng chiếm được đặc biệt cảm tình của một nhóm ít game thủ trên thế giới). Ngược lại, trò chơi không được đánh giá quá cao trên Steam và nhìn chung thì hết sức bình thường. Đánh giá trên Steam của trò chơi (ngày 6/8/2021) là Mostly Positive, còn trên &lt;a href=&#34;https://www.metacritic.com/game/xbox-360/the-first-templar&#34;&gt;metacritic&lt;/a&gt; thì là &lt;strong&gt;52&lt;/strong&gt; (metascore), &lt;strong&gt;6.2&lt;/strong&gt; (user score).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Display Post Preview on Facebook by Hugo</title>
      <link>https://sonnguyen9800.com/dev/display-post-preview-on-facebook-by-hugo/</link>
      <pubDate>Sat, 24 Jul 2021 23:14:52 +0700</pubDate>
      <guid>https://sonnguyen9800.com/dev/display-post-preview-on-facebook-by-hugo/</guid>
      <description>&lt;p&gt;I launched my own personal website since this month, in August or late June, 2021. Although the platform support a lot of default template with easy installing and samples, I prefer creating my own and the experience appears to me quite confusing at the beginning but more relieved as the project went on.&lt;/p&gt;&#xA;&lt;p&gt;However, one thing troubles me lot is that when I shared my post to Facebook, which is the only social platform that I use, is that the post when I shared display incorrectly. It shows my avatar, followed by the title but incorrect description of the post. Hence, I spent 2 days reseaching about this problem. So, how to fix? It turns out that the Facebook implements a protocol to make shared links to be more organized and interesting when they be posted to their media. You can find the link &lt;a href=&#34;https://ogp.me/&#34;&gt;Here&lt;/a&gt; to read more about this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips on Unity Development</title>
      <link>https://sonnguyen9800.com/tip/tips-on-unity-development/</link>
      <pubDate>Mon, 19 Jul 2021 13:12:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/tips-on-unity-development/</guid>
      <description>&lt;p&gt;Unity is so big, so complicated and the editor get update too frequent that sometime I feel a little bit overwhelmed. This post lists critical problems that I encountered when making game using Unity.&lt;/p&gt;&#xA;&lt;p&gt;This article is under ongoing development hence the content may be updated and changed regularly.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Game Object position&lt;/strong&gt;&lt;/em&gt; between object in game scene &amp;amp; value logged to console not be the same.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;em&gt;Explaination&lt;/em&gt;: It is very likely the the two &lt;strong&gt;position&lt;/strong&gt; we see on console &amp;amp; on scene are two different variant. There are three different type of position for Unity Game Object:&lt;/p&gt;</description>
    </item>
    <item>
      <title>10 Lessons of an MIT Education</title>
      <link>https://sonnguyen9800.com/misc/10-lessons-of-an-mit-education/</link>
      <pubDate>Thu, 15 Jul 2021 00:08:49 +0700</pubDate>
      <guid>https://sonnguyen9800.com/misc/10-lessons-of-an-mit-education/</guid>
      <description>&lt;p&gt;10 Lessons of an MIT Education&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Son Nguyen Hoang:&lt;/strong&gt;&#xA;&lt;em&gt;There is no chance that I can write this article. This is a re-up from an online archive. Here is the original &lt;a href=&#34;https://web.archive.org/web/20070702141846/http://www.rota.org/hotair/mitless.html&#34;&gt;link&lt;/a&gt;:&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://web.archive.org/web/20070702141846im_/http://www.rota.org/rota26.gif&#34; alt=&#34;Melb_CBN_Exhibition_Building_3&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Lesson One:&lt;/strong&gt; You can and will work at a desk for seven hours straight, routinely.  For several years, I have been teaching 18.30, differential equation, the largest mathematics course at MIT, with more than 300 students. The lectures have been good training in dealing with mass behavior. Every sentence must be perfectly enunciated, preferably twice. Examples on the board must be relevant, if not downright fascinating. Every 15 minutes or so, the lecturer is expected to come up with an interesting aside, joke, historical anecdote, or unusual application of the concept at hand. When a lecturer fails to conform to these inexorable requirements, the students will signify their displeasure by picking by their books and leaving the classroom.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips on Android Emulator and ADB</title>
      <link>https://sonnguyen9800.com/tip/tips-on-android-emulator-adb/</link>
      <pubDate>Tue, 13 Jul 2021 09:32:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/tips-on-android-emulator-adb/</guid>
      <description>&lt;p&gt;When developing game for Android using Unity, &lt;strong&gt;adb&lt;/strong&gt; is a must to view log and open &lt;em&gt;shell&lt;/em&gt; for the devices.&lt;/p&gt;&#xA;&lt;p&gt;Although the tool is very powerful, still, only a few list of commands is truly important. This post summarize them all.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This article is under ongoing development hence the content may be updated and changed regularly.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;&lt;strong&gt;List all devices&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;run &lt;code&gt;adb devices&lt;/code&gt; from the terminal.&lt;/p&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;&lt;em&gt;&lt;strong&gt;List all packages&lt;/strong&gt;&lt;/em&gt; in the devices&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;run &lt;code&gt;adb shell pm list packages&lt;/code&gt; from the terminal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mấy món bánh ngon ở Hà Nội</title>
      <link>https://sonnguyen9800.com/other/may-mon-banh-ngon-o-ha-noi/</link>
      <pubDate>Sun, 11 Jul 2021 06:19:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/may-mon-banh-ngon-o-ha-noi/</guid>
      <description>&lt;p&gt;Từ cái lúc tôi lớn lên và gắn bó với Hà Nội thì cũng là lúc Hà Nội thay da đổi thịt, kỷ niệm của tôi với Hà Nội cũng vì thế mà chẳng phải là những con đường trống vắng, những khu nhà tập thể cũ kỹ cùng với cái ký ức về một thời bao cấp nơi người ta sợ đau đáu mất sổ gạo như những gì bà với mẹ tôi hay kể ê a. Hà Nội của tôi là một thành phố có phần huyên náo, nơi có những con ngõ nhỏ nơi hồi ấy tôi đạp xe rong ruổi từ nhà lên trường, là con đường Nguyễn Chí Thanh bụi mù mịt những hồi tan tầm, ấy thế không hiểu sao vẫn phảng phất mùi hoa sữa long lanh và khiến tôi mê mệt những lần đi đạp xe về nhà, đến nỗi mà dù mấy cô bạn của tôi đã bày cho tôi một con đường ngắn hơn, dễ đi hơn, tôi vẫn kiên quyết đi trên cái đường Nguyễn Chí Thanh, để rồi tìm về với hoa sữa, dù rằng chắc mẩm bẩy mươi đến tám mươi phần trăm rằng con đường khi ấy có thể sẽ tắc nghịt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Xin Chào, Sydney (2)</title>
      <link>https://sonnguyen9800.com/other/xin-chao-sydney-2/</link>
      <pubDate>Sun, 11 Jul 2021 06:05:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/xin-chao-sydney-2/</guid>
      <description>&lt;h2 id=&#34;xin-chào-sydney---ký-sự-sydney-2&#34;&gt;Xin Chào, Sydney - Ký Sự Sydney (2)&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;TOÀN BỘ ẢNH ĐƯỢC SƯU TẦM TRÊN MẠNG&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Thế đến được Sydney rồi thì ta làm gì? Ăn uống ngủ nghỉ xong, ta nên đi đâu? Bài blog dài này sẽ bật mí vài điểm tham quan đáng giá tại Sydney bạn nên thử đến. Tiêu chí mình lựa chọn những địa điểm này là rẻ, gần và tiện.  Vì mình và các bạn đi cùng đều là con trai, khoái đi du hí những nơi xa xôi đồng không mông quạnh, những nơi kể dưới đây thỏa mãn thêm tiêu chí lên rừng xuống biển đúng nghĩa. Bạn đi xong nơi này về có thể chắc chắn chín mười là đất rừng biển bạc Sydney bạn đã được trải nghiệm hết, khỏi phải nuối tiếc nhớ nhung. Nói thêm, tất cả những điểm này đều đủ thuận tiện để bạn có thể di chuyển bằng những phương tiện công cộng như tàu điện hoặc bus, vì thế, hãy chuẩn bị sẵn sàng thẻ Opal Travel và ứng dụng Opal Travel trong di động. Áng chừng của mình, trong suốt chuyến đi năm ngày bạn sẽ cần khoảng ít nhất 50 Dollar trong thẻ phục vụ cho việc đi lại. Mình cũng cho rằng trong Sydney hay Melbourne, bạn nên thử tự mình đi bộ để cảm nhận rõ hơn thành phố cũng như không khí ở đây như thế nào.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nào ta cùng giải trí đến CHẾT</title>
      <link>https://sonnguyen9800.com/other/nao-ta-cung-giai-tri-den-chet/</link>
      <pubDate>Sun, 11 Jul 2021 06:05:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/nao-ta-cung-giai-tri-den-chet/</guid>
      <description>&lt;h2 id=&#34;review-sách-nào-ta-cùng-giải-trí-đến-chết&#34;&gt;(Review sách) Nào ta cùng giải trí đến CHẾT&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/en/thumb/1/1e/Amusinghkn.jpg/220px-Amusinghkn.jpg&#34; alt=&#34;Book1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hai mươi năm đầu của thế kỷ 21, nhân loại chúng ta có những gì? Chúng ta Smartphone – những cỗ máy nhỏ nhỏ xinh nhưng mạnh ngang với những thứ con người dùng để đi lên Mặt Trăng 50 năm về trước. Chúng ta có những tên lửa của SpaceX, dưới sự lãnh đạo của Elon Musk đa tài, hứa hẹn sẽ mở ra một kỷ nguyên mới, một kỷ nguyên chinh phục vũ trụ. Chúng ta có thêm những thuật toán phức tạp, những thuật toán trí tuệ nhân tạo đã đánh bại Lee Sedol – kỳ thủ cờ vây số Hai thế giới. Còn nhiều nữa nhiều nữa, vô số những lĩnh vực mới ra đời, đó là công nghệ Blockchain, thứ đã tạo nên cơn sốt Tiền Ảo nửa đầu thập niên 2010s. Đó là điện toán đám mây, thứ đang dần trở thành tiêu chuẩn mới của các doanh nghiệp. Tiếp theo đó là sự phổ biến không ngừng của công nghệ in 3d, công nghệ Robotics với những chiếc Drone bay lơ lửng trên đầu. Thế giới sẽ còn đi đến đâu? Công nghệ của nhân loại sẽ trở nên thế nào? Chúng ta sẽ làm gì sau 40, 50 năm nữa?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Xin Chào, Sydney (1)</title>
      <link>https://sonnguyen9800.com/other/xin-chao-sydney-1/</link>
      <pubDate>Sun, 11 Jul 2021 05:55:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/xin-chao-sydney-1/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://user-images.githubusercontent.com/45099020/125192407-e2d93680-e271-11eb-9f59-49b3bbe20e98.jpg&#34; alt=&#34;sydney1&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;xin-chào-sydney---ký-sự-sydney&#34;&gt;Xin Chào, Sydney - Ký Sự Sydney&lt;/h2&gt;&#xA;&lt;p&gt;Đến giờ, sau gần nửa năm ở Úc, mình vẫn nhớ như in câu nói của mẹ mình vào mấy hôm trước ngày chuyến bay khởi hành. Đừng hiểu lầm, mẹ mình chẳng thủ thỉ nhớ nhung gì với mình đâu, mẹ chỉ dặn mình ráng mà du lịch đến Sydney, liệu liệu selfie một tấm với cái nhà hát Sydney để mẹ mang về mà khoe với mấy bà hàng xóm. Phải công nhận, nhắc đến Úc là người ta nhắc đến Sydney. Hỏi 10 người rằng ở Úc có thành phố nào anh ấn tượng nhất thì chắc chín người sẽ chọn Sydney. Vì sao? Vì cái nhà hát Opera House nức tiếng chứ sao nữa. Bản thân mình thì mình tự nhận là chẳng quan tâm lắm. Nhưng đã mất công qua đến một đất nước mới lạ thì cũng ráng phải đi cho hết, ngắm cho bằng được những điểm thú vị và những danh lam thắng cảnh sao cho sau này về khỏi phải tiếc nuối nữa.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SỐNG SÓT TẠI MELBOURNE – (2)</title>
      <link>https://sonnguyen9800.com/other/song-sot-tai-melbourne-2/</link>
      <pubDate>Sun, 11 Jul 2021 05:45:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/song-sot-tai-melbourne-2/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://user-images.githubusercontent.com/45099020/125192212-d3a5b900-e270-11eb-8ef7-9a519e43709c.jpg&#34; alt=&#34;Melburnian_Skyline&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;những-ngày-tiếp-theo&#34;&gt;Những Ngày Tiếp Theo&lt;/h2&gt;&#xA;&lt;p&gt;Như đã hứa tuần trước, hôm nay mình lại cặm cụi ngồi gõ nốt phần hai. Phần này sẽ chỉ dẫn chi tiết mọi người vài điều du học sinh nên làm ngay sau khi đáp máy bay xuống Melbourne. Cần lưu ý rằng, tuy khuôn khổ bài viết chỉ gói gọn trong thành phố nơi mình đi du học, mình thiết nghĩ những chia sẻ này hoàn toàn có thể áp dụng ở mọi nơi, điều quan trọng là bạn hãy khảo sát và nghiên cứu thật kỹ mọi thứ liên quan đến nơi mình sẽ sống trước khi đi. Càng biết nhiều bao nhiêu, bạn sẽ càng ít bỡ ngỡ.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SỐNG SÓT TẠI MELBOURNE – (1)</title>
      <link>https://sonnguyen9800.com/other/song-sot-tai-melbourne-1/</link>
      <pubDate>Sun, 11 Jul 2021 05:45:46 +0700</pubDate>
      <guid>https://sonnguyen9800.com/other/song-sot-tai-melbourne-1/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://user-images.githubusercontent.com/45099020/125192124-511cf980-e270-11eb-9e7c-c033e3d187d6.jpg&#34; alt=&#34;Melb_CBN_Exhibition_Building_3&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;##CHỈ DẪN DÀNH CHO DU HỌC SINH&lt;/p&gt;&#xA;&lt;p&gt;Du học chẳng bao giờ là chuyện dễ, đặc biệt là với những cái đứa tự kỷ như mình, lúc nào cũng ú na ú nần một bụng sách vở nhưng mù tịt chuyện bên ngoài. Tuy thế, vốn bản tính là khoái viết lách và vốn vừa trải qua gần năm tháng sống tại Melbourne, hôm nay mình quyết định ngồi gõ máy nghịch phím, vừa giới thiệu qua các bạn về Melbourne – thành phố đáng sống nhất nhì nơi mình đang du học. Và cũng tiện thể giới thiệu cho các bạn biết những gì phải làm ngay sau khi đặt chân lên Melbourne.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips on Version Control with Git</title>
      <link>https://sonnguyen9800.com/tip/tips-on-version-control-with-git/</link>
      <pubDate>Sun, 11 Jul 2021 05:26:10 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/tips-on-version-control-with-git/</guid>
      <description>&lt;p&gt;While 99% of commands I used on Git is simple fecth, pull, add, commit and push, Git version control is much more powerful than what I think it is.&lt;/p&gt;&#xA;&lt;p&gt;Many scenarios happends requires extensive knowledge on Git to make safe, proper action.&lt;/p&gt;&#xA;&lt;p&gt;In the other hand, I am simply too lazy to command &lt;code&gt;git help&lt;/code&gt; everytime a bug occurs.&lt;/p&gt;&#xA;&lt;p&gt;Therefore, I created this article to summarize some command and tips I think to be valuable and worthy to note down.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flutter &amp; Dart Development Tips</title>
      <link>https://sonnguyen9800.com/tip/flutter--dart-development/</link>
      <pubDate>Sun, 04 Jul 2021 00:01:56 +0700</pubDate>
      <guid>https://sonnguyen9800.com/tip/flutter--dart-development/</guid>
      <description>&lt;p&gt;Recently I decided to create a time management app by using Flutter for personal usage. The reason I choosed Flutter is because it supports cross-platform, and secondly, it is new and I never tried it before, while in the past I learnt Kotlin and Swift before.&lt;/p&gt;&#xA;&lt;p&gt;Personally, Kotlin appears to be a more simplified and productive version of Java which i am no longer interested in. In contrast, the development and structure of a SwiftUI App is a huge difference, more modern and compact, where things be crafted as Lego-blocks. And Flutter, fortunately, gives me the same vibe when make app on it.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
