<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://neitomic.xyz/feed.xml" rel="self" type="application/atom+xml" /><link href="https://neitomic.xyz/" rel="alternate" type="text/html" /><updated>2026-07-11T22:02:17+07:00</updated><id>https://neitomic.xyz/feed.xml</id><title type="html">neitomic</title><subtitle>I&apos;m trying to learn to write, also build an harbit to write.</subtitle><entry><title type="html">My markdown preview server</title><link href="https://neitomic.xyz/blog/my-markdown-preview" rel="alternate" type="text/html" title="My markdown preview server" /><published>2026-07-11T21:47:00+07:00</published><updated>2026-07-11T21:47:00+07:00</updated><id>https://neitomic.xyz/blog/my-markdown-preview</id><content type="html" xml:base="https://neitomic.xyz/blog/my-markdown-preview"><![CDATA[<p>I’m working a lot with LLM agents lately and keeping a lot of markdown documents
in the repository. Those are agent instructions, notes, ADRs, documents,…</p>

<p>I’d like to have rich formatting like diagrams, tables, code snippets,…
in my documents, and the markdown viewer in IDEs not supporting all the things
I want, and there is something that make me not comfortable reading in there.</p>

<p>The markdown preview in side neovim is good, but not supporting mermaid diagrams.</p>

<p>So I made one for myself. It is here <a href="https://github.com/neitomic/mdprev">neitomic/mdprev</a></p>

<p><strong>Some highlight features:</strong></p>

<ul>
  <li>Explorer navigation — browse directories, open files, follow relative links between docs. Breadcrumbs on every page.</li>
  <li>Quick file finder — press ⌘K (or Ctrl+K) to fuzzy-search Markdown filenames, then press Enter to open one.</li>
  <li>Live reload — edits appear instantly; scroll position is preserved (only the article body is swapped).</li>
  <li>GitHub-flavored markdown — tables, task lists, footnotes, strikethrough, and GitHub-style alerts (&gt; [!NOTE]).</li>
  <li>Light and dark themes — follows your system by default; use the theme button in the header to choose and remember a preference. Syntax highlighting and Mermaid diagrams follow it too.</li>
  <li>Mermaid diagrams — ```mermaid blocks, rendered client-side with a full-page zoom-and-pan viewer. The bundle is embedded and lazy-loaded (only on pages that use it).</li>
  <li>ASCII diagrams — <code class="language-plaintext highlighter-rouge">bob,</code>svgbob, or ```ascii blocks are rendered to SVG server-side.</li>
</ul>

<p><strong>Adding into my lazyvim config</strong></p>

<p><code class="language-plaintext highlighter-rouge">lua/config/keymaps.lua</code></p>
<div class="language-lua highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">local</span> <span class="n">mdprev_job</span> <span class="o">=</span> <span class="kc">nil</span>
<span class="kd">local</span> <span class="k">function</span> <span class="nf">toggle_markserv</span><span class="p">()</span>
  <span class="k">if</span> <span class="n">mdprev_job</span> <span class="k">then</span>
    <span class="n">vim</span><span class="p">.</span><span class="n">fn</span><span class="p">.</span><span class="n">jobstop</span><span class="p">(</span><span class="n">mdprev_job</span><span class="p">)</span>
    <span class="n">mdprev_job</span> <span class="o">=</span> <span class="kc">nil</span>
    <span class="n">vim</span><span class="p">.</span><span class="n">notify</span><span class="p">(</span><span class="s2">"mdprev stopped"</span><span class="p">)</span>
    <span class="k">return</span>
  <span class="k">end</span>
  <span class="n">mdprev_job</span> <span class="o">=</span> <span class="n">vim</span><span class="p">.</span><span class="n">fn</span><span class="p">.</span><span class="n">jobstart</span><span class="p">({</span> <span class="s2">"mdprev"</span><span class="p">,</span> <span class="s2">"-o"</span><span class="p">,</span> <span class="s2">"-q"</span><span class="p">,</span>  <span class="n">vim</span><span class="p">.</span><span class="n">fn</span><span class="p">.</span><span class="n">getcwd</span><span class="p">()</span> <span class="p">})</span>
  <span class="n">vim</span><span class="p">.</span><span class="n">notify</span><span class="p">(</span><span class="s2">"mdprev serving "</span> <span class="o">..</span> <span class="n">vim</span><span class="p">.</span><span class="n">fn</span><span class="p">.</span><span class="n">getcwd</span><span class="p">())</span>
<span class="k">end</span>
<span class="n">vim</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">nvim_create_user_command</span><span class="p">(</span><span class="s2">"MarkdownFolder"</span><span class="p">,</span> <span class="n">toggle_markserv</span><span class="p">,</span> <span class="p">{})</span>
<span class="n">vim</span><span class="p">.</span><span class="n">keymap</span><span class="p">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"&lt;leader&gt;mm"</span><span class="p">,</span> <span class="n">toggle_markserv</span><span class="p">,</span> <span class="p">{</span> <span class="n">desc</span> <span class="o">=</span> <span class="s2">"Toggle mdprev (folder markdown preview)"</span> <span class="p">})</span>
</code></pre></div></div>]]></content><author><name></name></author><category term="general" /><summary type="html"><![CDATA[I’m working a lot with LLM agents lately and keeping a lot of markdown documents in the repository. Those are agent instructions, notes, ADRs, documents,…]]></summary></entry><entry><title type="html">I finally feel excited about my dotfiles</title><link href="https://neitomic.xyz/blog/my-dot-files" rel="alternate" type="text/html" title="I finally feel excited about my dotfiles" /><published>2026-06-28T13:26:00+07:00</published><updated>2026-06-28T13:26:00+07:00</updated><id>https://neitomic.xyz/blog/my-dot-files</id><content type="html" xml:base="https://neitomic.xyz/blog/my-dot-files"><![CDATA[<p>My dotfiles is here <a href="https://github.com/neitomic/dotfiles">neitomic/dotfiles</a></p>

<h2 id="windows-manager">Windows manager</h2>

<p>I’ve started using yabai + skhd for like a year now.
And I feel good about it.
The only thing I’m still not very comfortable is how to quickly open
my Slack and Obsidian. Like I have to remember where it is, then
navigate, then navigate back. It make me feel like forever.</p>

<p>Normally when I plug my Macbook into big monitor, I just put my
Slack always on the Macbook screen, and do my work only on the big one.</p>

<p>The uncomfortable come when I don’t have the big monitor with me.
Like, I have one workspace for Web browser, one for IDE, one for terminal.
The 4th one for SQL workbench. Then the 5th for my personal profile Web browser.</p>

<p>Five workspaces already feel too much for me. I’m not good at managing them tbh.</p>

<p>So when I want to quickly view Slack messages or do a quick reply,
the context switching cost is high, which made me uncomfortable.</p>

<p>So I was thinking, what if I can just allow Slack to be float window,
then have a key combination to bring it into front + focus, do the message,
then hind it away.</p>

<p>And I did that, and applied to Obsidian as well</p>

<ul>
  <li>Put Slack as unmanaged in yabai.</li>
  <li>Put a keyboard shortcut in skhd to bring Slack on top, move it into current workspace.</li>
  <li>Put the same shortcut to hide it.</li>
</ul>

<p><code class="language-plaintext highlighter-rouge">skhd/toggle-app.sh</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/env bash</span>
<span class="nv">app_name</span><span class="o">=</span><span class="nv">$1</span>
<span class="nv">focused</span><span class="o">=</span><span class="si">$(</span>yabai <span class="nt">-m</span> query <span class="nt">--windows</span> <span class="nt">--window</span> 2&gt;/dev/null | jq <span class="nt">-r</span> <span class="s1">'.app // empty'</span><span class="si">)</span>

<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$focused</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"</span><span class="nv">$app_name</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
  </span>osascript <span class="nt">-e</span> <span class="s2">"tell application </span><span class="se">\"</span><span class="s2">System Events</span><span class="se">\"</span><span class="s2"> to set visible of process </span><span class="se">\"</span><span class="nv">$app_name</span><span class="se">\"</span><span class="s2"> to false"</span>
<span class="k">else
  if</span> <span class="o">!</span> pgrep <span class="nt">-xq</span> <span class="nv">$app_name</span><span class="p">;</span> <span class="k">then
    </span>open <span class="nt">-a</span> <span class="nv">$app_name</span>
    <span class="nb">sleep </span>0.4
  <span class="k">else
    </span>osascript <span class="nt">-e</span> <span class="s2">"tell application </span><span class="se">\"</span><span class="s2">System Events</span><span class="se">\"</span><span class="s2"> to set visible of process </span><span class="se">\"</span><span class="nv">$app_name</span><span class="se">\"</span><span class="s2"> to true"</span>
  <span class="k">fi

  </span><span class="nv">win</span><span class="o">=</span><span class="si">$(</span>yabai <span class="nt">-m</span> query <span class="nt">--windows</span> | jq <span class="nt">-r</span> <span class="s2">"map(select(.app==</span><span class="se">\"</span><span class="nv">$app_name</span><span class="se">\"</span><span class="s2">)) | .[0].id // empty"</span><span class="si">)</span>
  <span class="k">if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="nv">$win</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
    </span><span class="nv">space</span><span class="o">=</span><span class="si">$(</span>yabai <span class="nt">-m</span> query <span class="nt">--spaces</span> <span class="nt">--space</span> | jq <span class="s1">'.index'</span><span class="si">)</span>
    yabai <span class="nt">-m</span> window <span class="s2">"</span><span class="nv">$win</span><span class="s2">"</span> <span class="nt">--space</span> <span class="s2">"</span><span class="nv">$space</span><span class="s2">"</span>   <span class="c"># move to current space</span>
    yabai <span class="nt">-m</span> window <span class="nt">--focus</span> <span class="s2">"</span><span class="nv">$win</span><span class="s2">"</span>            <span class="c"># then focus it</span>
  <span class="k">fi
fi</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">skhd/skhdrc</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cmd + <span class="nb">shift</span> - s : ~/.config/skhd/toggle-app.sh <span class="s2">"Slack"</span>
cmd + <span class="nb">shift</span> - n : ~/.config/skhd/toggle-app.sh <span class="s2">"Obsidian"</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">yabai/yabairc</code></p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>yabai <span class="nt">-m</span> rule <span class="nt">--add</span> <span class="nv">app</span><span class="o">=</span><span class="s2">"^Slack$"</span> <span class="nv">manage</span><span class="o">=</span>off
yabai <span class="nt">-m</span> rule <span class="nt">--add</span> <span class="nv">app</span><span class="o">=</span><span class="s2">"^Obsidian$"</span> <span class="nv">manage</span><span class="o">=</span>off
</code></pre></div></div>

<h2 id="tmux">tmux</h2>

<p>My tmux config is not something very special.</p>

<ul>
  <li>map prefix to C-a</li>
  <li>enable mouse</li>
  <li><code class="language-plaintext highlighter-rouge">-</code> and <code class="language-plaintext highlighter-rouge">_</code> for split window</li>
  <li>Enter for copy mode</li>
  <li>vim navigator</li>
  <li>resurrect and continuum</li>
  <li>sesh for sessions management</li>
  <li>dracula theme</li>
</ul>

<h2 id="neovim-with-lazyvim">neovim with lazyvim</h2>

<p>Nothing special here. Mostly default.</p>]]></content><author><name></name></author><category term="general" /><summary type="html"><![CDATA[My dotfiles is here neitomic/dotfiles]]></summary></entry><entry><title type="html">Pull docker images through VPN and Blobs caching</title><link href="https://neitomic.xyz/blog/pull-docker-images-through-vpn-and-blobs-caching" rel="alternate" type="text/html" title="Pull docker images through VPN and Blobs caching" /><published>2020-05-30T21:21:21+07:00</published><updated>2020-05-30T21:21:21+07:00</updated><id>https://neitomic.xyz/blog/pull-docker-images-through-vpn-and-blobs-caching</id><content type="html" xml:base="https://neitomic.xyz/blog/pull-docker-images-through-vpn-and-blobs-caching"><![CDATA[<p>Pull Docker images through a slow internet connection is a pain in the ass. Especially when you want to try out something new, you pull the image and wait for 30 minutes for that download process to finish, all the hype gone after that.</p>

<p>In my case, I was working on few servers located in Vietnam and the oversea internet connection is horrible. You might ask why can’t I just move my servers outside of Vietnam. That’s not that simple, all of my clients are in Vietnam and the oversea connection is slow for everyone (except when you pay the ISP lots of money).</p>

<p>So I looked into and there are few things:</p>

<ol>
  <li>I want a faster oversea internet connection for just pulling Docker image at an acceptable price. Pay the ISP to get a faster connection is not an option for me. So I think about VPN services.</li>
  <li>I want to cache the downloaded image somewhere so that when I downloaded it on a server and want to download it for another server, I don’t want to download it from the internet again. This is possible because the Docker image blobs are immutable (with the same hash).</li>
</ol>

<h2 id="blobs-caching">Blobs caching</h2>

<p>There are few ways to archive this.</p>

<h3 id="image-caching-with-docker-registry">Image caching with Docker registry</h3>

<p>This way is simple, you just need to run the official registry in mirror mode. Check out this <a href="https://docs.docker.com/docker-hub/image-library/mirror/">document</a>. The big problem with this is that the mirror mode only supports the central Docker hub for now. So you can not mirror other registries like <a href="https://gcr.io">Google Cloud Registry</a>, <a href="https://quay.io">Quay.io</a>,…</p>

<h3 id="blobs-caching-with-nginx">Blobs caching with Nginx</h3>

<p>Luckily, people have faced this problem before me.</p>

<p>You can follow the readme on this repository. The documentation is pretty clear and easy to follow to make it work. <a href="https://github.com/rpardini/docker-registry-proxy">https://github.com/rpardini/docker-registry-proxy</a></p>

<p>I provide my settings at the end of this post.</p>

<h2 id="route-image-pull-requests-through-a-vpn">Route image pull requests through a VPN</h2>

<h3 id="attempt-1--vpn-client-on-a-machine">Attempt 1 — VPN client on a machine</h3>

<p>I was thinking that I can run the VPN client (OpenVPN in my case) and the registry proxy on a machine. So that all traffic come out of this server will be routed through VPN.</p>

<p>There is a problem with this. All the traffic is routed through the VPN, even with the traffic from the client (machine pull image through the proxy). To deal with this, I did search around on the internet and tried a few ways. And one solution that worked is using the routing table. Here it is.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ip rule add from <span class="si">$(</span>ip route get 1 | <span class="nb">grep</span> <span class="nt">-Po</span> <span class="s1">'(?&lt;=src )(\S+)'</span><span class="si">)</span> table 128
ip route add table 128 to <span class="si">$(</span>ip route get 1 | <span class="nb">grep</span> <span class="nt">-Po</span> <span class="s1">'(?&lt;=src )(\S+)'</span><span class="si">)</span>/32 dev <span class="si">$(</span>ip <span class="nt">-4</span> route <span class="nb">ls</span> | <span class="nb">grep </span>default | <span class="nb">grep</span> <span class="nt">-Po</span> <span class="s1">'(?&lt;=dev )(\S+)'</span><span class="si">)</span>
ip route add table 128 default via <span class="si">$(</span>ip <span class="nt">-4</span> route <span class="nb">ls</span> | <span class="nb">grep </span>default | <span class="nb">grep</span> <span class="nt">-Po</span> <span class="s1">'(?&lt;=via )(\S+)'</span><span class="si">)</span>
<span class="c"># Start VPN client</span>
openvpn &lt;your_vpn_config_file&gt;.ovpn
</code></pre></div></div>

<p>This worked for a while until I restarted the server. After the restart, clients cannot connect to the registry proxy on this server anymore. I think it’s because I didn’t clean up the route rules and keep appending new the same rules when start.</p>

<p>But I felt this is not a good way, so I was looking for something better. So I think what if I run the VPN client inside a container. I did search and yes, people have done this kind of thing. This lead to the attempt number 2 — the current working solution.</p>

<h3 id="attempt-2--vpn-client-inside-docker-container">Attempt 2 — VPN client inside Docker container</h3>

<p>I found this <a href="https://github.com/dperson/openvpn-client">https://github.com/dperson/openvpn-client</a></p>

<p>Basically, this will help you run an Open VPN client inside a Docker container, then run your whatever service which reuses the network stack of the VPN container. You can read more in that repository.</p>

<p>For my use case, I run the VPN client with the registry proxy use the network stack of the VPN. And I need to expose access to the registry proxy to all of my servers.</p>

<p>There are two ways to expose access (as mentioned in the document). First is using an Nginx proxy that forward all request to the registry proxy. Because we cannot use a proxy on top of another proxy (I tried). So this won’t work in this case. Second, we can expose the port directly in the VPN container. Because the registry proxy uses the same network stack so that port also applied to the proxy. (The reason we cannot bind port in the registry proxy is that you cannot use both ports and network_mode in Docker).</p>

<h2 id="conclusion">Conclusion</h2>

<p>So here is my full docker-compose</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">version</span><span class="pi">:</span> <span class="s1">'</span><span class="s">3.4'</span>

<span class="na">services</span><span class="pi">:</span>
  <span class="na">vpn</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">dperson/openvpn-client</span>
    <span class="na">cap_add</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">net_admin</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="na">TZ</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Asia/Bangkok'</span>
    <span class="na">networks</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">default</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">3128:3128</span>
    <span class="na">read_only</span><span class="pi">:</span> <span class="kc">true</span>
    <span class="na">dns</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">8.8.8.8</span>
      <span class="pi">-</span> <span class="s">8.8.4.4</span>
    <span class="na">tmpfs</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">/run</span>
      <span class="pi">-</span> <span class="s">/tmp</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">security_opt</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">label:disable</span>
    <span class="na">stdin_open</span><span class="pi">:</span> <span class="kc">true</span>
    <span class="na">tty</span><span class="pi">:</span> <span class="kc">true</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">/dev/net:/dev/net:z</span>
      <span class="pi">-</span> <span class="s">./vpn:/vpn</span>
    <span class="na">command</span><span class="pi">:</span> <span class="pi">[</span><span class="s2">"</span><span class="s">-r"</span><span class="pi">,</span> <span class="s2">"</span><span class="s">10.4.101.0/24"</span><span class="pi">]</span>

  <span class="na">registry</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">rpardini/docker-registry-proxy:0.3.0-beta2</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">always</span>
    <span class="na">volumes</span><span class="pi">:</span>
     <span class="pi">-</span> <span class="s">./cache:/docker_mirror_cache</span>
     <span class="pi">-</span> <span class="s">./certs:/ca</span>
     <span class="pi">-</span> <span class="s">./log:/var/log/nginx</span>
    <span class="na">environment</span><span class="pi">:</span>
     <span class="pi">-</span> <span class="s">REGISTRIES=k8s.gcr.io gcr.io quay.io docker.elastic.co registry.private.com</span>
     <span class="pi">-</span> <span class="s">AUTH_REGISTRIES=registry.private.com:private_user:private_password</span>
     <span class="pi">-</span> <span class="s">CACHE_MAX_SIZE=20g</span>
     <span class="pi">-</span> <span class="s">TZ=Asia/Bangkok</span>
    <span class="na">network_mode</span><span class="pi">:</span> <span class="s2">"</span><span class="s">service:vpn"</span>
    <span class="na">stdin_open</span><span class="pi">:</span> <span class="kc">true</span>
    <span class="na">tty</span><span class="pi">:</span> <span class="kc">true</span>

<span class="na">networks</span><span class="pi">:</span>
  <span class="na">default</span><span class="pi">:</span>
</code></pre></div></div>

<p>Notes:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">command: [“-r”, “10.4.101.0/24”]</code> is needed only when you need to access from a different subnet. By default, the connection is available for the current subnet of the machine running this stack.</li>
</ul>

<p>Thanks for reading this. I hope this helps with your use case. Thanks.</p>]]></content><author><name></name></author><category term="infra" /><summary type="html"><![CDATA[Pull Docker images through a slow internet connection is a pain in the ass. Especially when you want to try out something new, you pull the image and wait for 30 minutes for that download process to finish, all the hype gone after that.]]></summary></entry><entry><title type="html">Nhật ký Covid-19</title><link href="https://neitomic.xyz/blog/nhat-ky-covid-19" rel="alternate" type="text/html" title="Nhật ký Covid-19" /><published>2020-03-29T21:21:21+07:00</published><updated>2020-03-29T21:21:21+07:00</updated><id>https://neitomic.xyz/blog/nhat-ky-covid-19</id><content type="html" xml:base="https://neitomic.xyz/blog/nhat-ky-covid-19"><![CDATA[<h2 id="29-03-2020">29-03-2020</h2>

<p>Hôm nay 06-03 âm lịch nhằm ngày mùng 64 Tết. Thấy trên Facebook có bạn gọi là Mùng 65 Tết năm Covid thứ nhất.</p>

<p>Mới đó mà mình cũng làm ở nhà được hai tuần, mai lại là thứ hai của tuần thứ ba. Làm việc ở nhà cũng không đến nỗi tệ, vẫn còn có thể ngồi buôn chuyện với bọn đồng nghiệp được, chỉ việc tham gia vào phòng họp online là tha hồ hỏi thăm các thứ.</p>

<p>Cuối tuần này không ra ngoài tại vì mình đặt hàng online rồi. Thứ 3 họ giao tới. Nấu ăn cũng không đến nỗi tệ nhưng mà hơi thiếu hoa quả. Tụi đồng nghiệp hôm thứ 6 hỏi cuối tuần làm gì, nấu gì. Chẳng biết giải thích sao cho nó hiểu mấy món thịt kho haha. Thế là nó bảo không ăn hoa quả gì à. Nó nói đúng, xíu đi tìm chút trái cây.</p>

<p>Bangkok nóng và nắng. Quê mình cũng vậy. À hôm nay đám giỗ ông nội. Ở quê mọi người cũng không được phép tụ tập đông người rồi. Chắc giờ này mọi thứ đã xong xuôi.</p>

<p>Nãy vừa đọc blog của lão thái nên cũng bắt chước làm một cái xem sao. Hehe.</p>

<hr />

<p>Đang thắc mắc là nên chia mỗi ngày một bài viết hay là cứ cập nhật vào đây thì nhạc lại chạy tới Mad World. Thôi cập nhật vào đây vậy.</p>

<h2 id="02-04-2020">02-04-2020</h2>
<p>Nhìn dãy số ngày hôm nay  khá  đẹp nhỉ :D</p>

<p>Một ngày sau ngày Cá tháng Tư, không có gì đặc biệt mấy. Vẫn làm việc như thường lệ. Mấy hôm rồi mình không viết thêm gì vì thực ra làm gì có gì để viết. Mà cái bàn phím cánh bím một khi đã lỗi thì rất khó chịu. Phím bị lặp kiểu bấm một mà được hai ấy. Mình hay bị phím space với phím cờ. Coding thì rất nhiều cờ - đúng là bàn phím như cờ. Gõ được mấy dòng mà cực khổ quá. Rất nhiều space!</p>

<p>Thôi đi chỉnh font chữ blog lại. Font tiêu đề không hỗ trợ tốt Tiếng Việt.</p>

<h2 id="24-12-2023">24-12-2023</h2>
<p>Wow, mới đó mà đã là năm Covid thứ tư rồi nhỉ. Đúng là thời gian trôi nhanh như chó chạy ngoài đồng =))). Gần đây bạn đồng nghiệp gửi link dẫn tới bài viết này cho mình, thì mình mới nhớ ra là đã từng viết những dòng ở trên, giờ đọc lại cũng thấy buồn cười (một cách tích cực), cũng không ngờ là các bạn lại tìm ra :) .</p>

<p>Nhắc lại tới covid thì tới giờ mình vẫn chưa từng ghi nhận mắc covid lần nào (trộm vía), tuy nhiên cũng khó để nói, có thể do mình ít test.</p>

<p>Hơn 3 năm trôi qua, covid cũng trở thành một bình thường mới và cuộc sống của mình cũng thay đổi nhiều. Mình lập gia đình, đổi công việc 2 lần,  có món nợ, và gặp được rất nhiều người thú vị.</p>

<p>Gần đây sau một thời gian dài làm việc thì mình cũng burned-out một chút, nên mình quyết định giảm lượng công việc lại trong khoảng 2 tuần để refresh, cũng đúng lúc vào dịp lễ năm mới của tụi tây lông (good timing).</p>

<p>Chúc mọi người một mùa Giáng sinh an lành, và một năm mới đầy năng lượng và thành công!</p>

<p>Peace!</p>]]></content><author><name></name></author><category term="general" /><summary type="html"><![CDATA[29-03-2020]]></summary></entry></feed>