mirror of
				https://github.com/TommyTran732/tommytran.io.git
				synced 2025-11-03 23:35:36 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			818 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			818 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!doctype html>
 | 
						|
<html
 | 
						|
  lang="en"
 | 
						|
  dir="ltr"
 | 
						|
  class="scroll-smooth"
 | 
						|
  data-default-appearance="dark"
 | 
						|
  data-auto-appearance="false"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
 | 
						|
  <meta charset="utf-8">
 | 
						|
  
 | 
						|
    <meta http-equiv="content-language" content="en">
 | 
						|
  
 | 
						|
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
						|
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
 | 
						|
  <meta name="theme-color">
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
    <title>Series · Tommy's Space</title>
 | 
						|
    <meta name="title" content="Series · Tommy's Space">
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
    <meta name="description" content="Tommy's personal website">
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  <link rel="canonical" href="http://localhost:1313/series/">
 | 
						|
  
 | 
						|
    
 | 
						|
      <link rel="alternate" type="application/rss+xml" href="/series/index.xml" title="Tommy's Space" />
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
    <meta name="author" content="Tommy Tran">
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
          <link href="https://github.com/TommyTran732" rel="me">
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
          <link href="https://git.metropolis.nexus/Tommy" rel="me">
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
          <link href="https://matrix.to/#/@tommy:metropolis.nexus" rel="me">
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
          <link href="https://t.me/tommytran732" rel="me">
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
          <link href="https://x.com/TommyTran732" rel="me">
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
          <link href="https://www.linkedin.com/in/tommytran732" rel="me">
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
          <link href="/.well-known/pgp-key.txt" rel="me">
 | 
						|
        
 | 
						|
      
 | 
						|
    
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  <meta property="og:url" content="http://localhost:1313/series/">
 | 
						|
  <meta property="og:site_name" content="Tommy's Space">
 | 
						|
  <meta property="og:title" content="Series">
 | 
						|
  <meta property="og:description" content="Tommy's personal website">
 | 
						|
  <meta property="og:locale" content="en">
 | 
						|
  <meta property="og:type" content="website">
 | 
						|
 | 
						|
  
 | 
						|
  <meta name="twitter:card" content="summary">
 | 
						|
  <meta name="twitter:title" content="Series">
 | 
						|
  <meta name="twitter:description" content="Tommy's personal website">
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
      
 | 
						|
    
 | 
						|
  
 | 
						|
    
 | 
						|
      
 | 
						|
    
 | 
						|
  
 | 
						|
    
 | 
						|
      
 | 
						|
    
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
  
 | 
						|
  
 | 
						|
  <link
 | 
						|
    type="text/css"
 | 
						|
    rel="stylesheet"
 | 
						|
    href="/css/main.bundle.min.7946532fa78157bafb1b4340d4074792811f18177af35790b3a0cb90566ce1cda3edd782eb92e134849964d14b6d9185c9d4ded2a12dcf5b706cb6a275c0cce0.css"
 | 
						|
    integrity="sha512-eUZTL6eBV7r7G0NA1AdHkoEfGBd681eQs6DLkFZs4c2j7deC65LhNISZZNFLbZGFydTe0qEtz1twbLaidcDM4A==">
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
  <script
 | 
						|
    type="text/javascript"
 | 
						|
    src="/js/appearance.min.6f41174b3a05b680820fe08cadbfa5fb7a7ca347b76a0955cdc68b9d8aca1ce24f0547e138cea33bcc7904d551a90afcb1cc7f2d9fe8557075d501419046c08c.js"
 | 
						|
    integrity="sha512-b0EXSzoFtoCCD+CMrb+l+3p8o0e3aglVzcaLnYrKHOJPBUfhOM6jO8x5BNVRqQr8scx/LZ/oVXB11QFBkEbAjA=="></script>
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
    <script src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
    <script
 | 
						|
      defer
 | 
						|
      type="text/javascript"
 | 
						|
      id="script-bundle"
 | 
						|
      src="/js/main.bundle.min.9df4fc14d50efcc9aa4cfc2b6f348e365f421f5ad491278f8f48c0360cf2f93f08882fda6da162d7ace8e5add57c2df4ac46bd3861306b1d4c452cd31f448d64.js"
 | 
						|
      integrity="sha512-nfT8FNUO/MmqTPwrbzSONl9CH1rUkSePj0jANgzy+T8IiC/abaFi16zo5a3VfC30rEa9OGEwax1MRSzTH0SNZA=="
 | 
						|
      data-copy="Copy"
 | 
						|
      data-copied="Copied"></script>
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
<script src="/lib/jquery/jquery.slim.min.b0dca576e87d7eaa5850ae4e61759c065786cdb6489d68fcc82240539eebd5da522bdb4fda085ffd245808c8fe2acb2516408eb774ef26b5f6015fc6737c0ea8.js" integrity="sha512-sNylduh9fqpYUK5OYXWcBleGzbZInWj8yCJAU57r1dpSK9tP2ghf/SRYCMj+KsslFkCOt3TvJrX2AV/Gc3wOqA=="></script>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
 | 
						|
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
 | 
						|
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
 | 
						|
    <link rel="manifest" href="/site.webmanifest">
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
</head>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  
 | 
						|
    
 | 
						|
  
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
  <body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600">
 | 
						|
    <div id="the-top" class="absolute flex self-center">
 | 
						|
      <a
 | 
						|
        class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
 | 
						|
        href="#main-content">
 | 
						|
        <span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
 | 
						|
        Skip to main content
 | 
						|
      </a>
 | 
						|
    </div>
 | 
						|
    
 | 
						|
    
 | 
						|
      <div class="min-h-[148px]"></div>
 | 
						|
<div class="fixed inset-x-0 z-100">
 | 
						|
  <div
 | 
						|
    id="menu-blur"
 | 
						|
    class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl"></div>
 | 
						|
  <div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
 | 
						|
    
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<div
 | 
						|
  class="main-menu flex items-center justify-between py-6 md:justify-start gap-x-3 pt-[2px] pr-2 md:pr-4 pb-[3px] pl-0">
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
  <div class="flex flex-1 items-center justify-between">
 | 
						|
    <nav class="flex space-x-3">
 | 
						|
      
 | 
						|
        <a href="/" class="text-base font-medium">
 | 
						|
          Tommy’s Space
 | 
						|
        </a>
 | 
						|
      
 | 
						|
    </nav>
 | 
						|
    
 | 
						|
  <nav class="hidden md:flex items-center gap-x-5 md:ml-12 h-12">
 | 
						|
    
 | 
						|
      
 | 
						|
        
 | 
						|
  <a
 | 
						|
  href="/posts/about/"
 | 
						|
  
 | 
						|
  class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
  aria-label="About"
 | 
						|
  title="About Me">
 | 
						|
  
 | 
						|
  
 | 
						|
    <p class="text-base font-medium">
 | 
						|
      About
 | 
						|
    </p>
 | 
						|
  
 | 
						|
</a>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
      
 | 
						|
        
 | 
						|
  <a
 | 
						|
  href="https://privsec.dev"
 | 
						|
  target="_blank"
 | 
						|
  class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
  aria-label="Blog"
 | 
						|
  title="">
 | 
						|
  
 | 
						|
  
 | 
						|
    <p class="text-base font-medium">
 | 
						|
      Blog
 | 
						|
    </p>
 | 
						|
  
 | 
						|
</a>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
      
 | 
						|
        
 | 
						|
  <a
 | 
						|
  href="/posts/projects/"
 | 
						|
  
 | 
						|
  class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
  aria-label="Projects"
 | 
						|
  title="My Projects">
 | 
						|
  
 | 
						|
  
 | 
						|
    <p class="text-base font-medium">
 | 
						|
      Projects
 | 
						|
    </p>
 | 
						|
  
 | 
						|
</a>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
      
 | 
						|
        
 | 
						|
  <a
 | 
						|
  href="/posts/contact/"
 | 
						|
  
 | 
						|
  class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
  aria-label="Contact"
 | 
						|
  title="Contact Information">
 | 
						|
  
 | 
						|
  
 | 
						|
    <p class="text-base font-medium">
 | 
						|
      Contact
 | 
						|
    </p>
 | 
						|
  
 | 
						|
</a>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
      
 | 
						|
        
 | 
						|
  <a
 | 
						|
  href="/posts/hire-me/"
 | 
						|
  
 | 
						|
  class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
  aria-label="Hire Me!"
 | 
						|
  title="I am open to work!">
 | 
						|
  
 | 
						|
  
 | 
						|
    <p class="text-base font-medium">
 | 
						|
      Hire Me!
 | 
						|
    </p>
 | 
						|
  
 | 
						|
</a>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
      
 | 
						|
        
 | 
						|
  <a
 | 
						|
  href=""
 | 
						|
  
 | 
						|
  class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
  
 | 
						|
  title="">
 | 
						|
  
 | 
						|
  
 | 
						|
</a>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
      
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
      <button
 | 
						|
        id="search-button"
 | 
						|
        aria-label="Search"
 | 
						|
        class="text-base hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
        title="Search (/)">
 | 
						|
        <span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
 | 
						|
</span>
 | 
						|
      </button>
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
  </nav>
 | 
						|
 | 
						|
    
 | 
						|
  <div class="flex md:hidden items-center gap-x-5 md:ml-12 h-12">
 | 
						|
    <span></span>
 | 
						|
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
      <button
 | 
						|
        id="search-button-mobile"
 | 
						|
        aria-label="Search"
 | 
						|
        class="text-base hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
        title="Search (/)">
 | 
						|
        <span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
 | 
						|
</span>
 | 
						|
      </button>
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
  </div>
 | 
						|
 | 
						|
  </div>
 | 
						|
  
 | 
						|
  <div class="-my-2 md:hidden">
 | 
						|
    <div id="menu-button" class="block">
 | 
						|
      
 | 
						|
        <div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">
 | 
						|
          <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
 | 
						|
</span>
 | 
						|
        </div>
 | 
						|
        <div
 | 
						|
          id="menu-wrapper"
 | 
						|
          class="fixed inset-0 z-30 invisible w-screen h-screen m-0 overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50 pt-[5px]">
 | 
						|
          <ul
 | 
						|
            class="flex space-y-2 mt-3 flex-col items-end w-full px-6 py-6 mx-auto overflow-visible list-none text-end max-w-7xl">
 | 
						|
            <li id="menu-close-button">
 | 
						|
              <span
 | 
						|
                class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400">
 | 
						|
                <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
 | 
						|
</span>
 | 
						|
              </span>
 | 
						|
            </li>
 | 
						|
 | 
						|
            
 | 
						|
              
 | 
						|
  <li class="mt-1">
 | 
						|
  <a
 | 
						|
    href="/posts/about/"
 | 
						|
    
 | 
						|
    class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
    aria-label="About"
 | 
						|
    title="About Me">
 | 
						|
    
 | 
						|
    
 | 
						|
      <p class="text-bg font-bg">
 | 
						|
        About
 | 
						|
      </p>
 | 
						|
    
 | 
						|
  </a>
 | 
						|
</li>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
            
 | 
						|
              
 | 
						|
  <li class="mt-1">
 | 
						|
  <a
 | 
						|
    href="https://privsec.dev"
 | 
						|
    
 | 
						|
      target="_blank"
 | 
						|
    
 | 
						|
    class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
    aria-label="Blog"
 | 
						|
    title="">
 | 
						|
    
 | 
						|
    
 | 
						|
      <p class="text-bg font-bg">
 | 
						|
        Blog
 | 
						|
      </p>
 | 
						|
    
 | 
						|
  </a>
 | 
						|
</li>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
            
 | 
						|
              
 | 
						|
  <li class="mt-1">
 | 
						|
  <a
 | 
						|
    href="/posts/projects/"
 | 
						|
    
 | 
						|
    class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
    aria-label="Projects"
 | 
						|
    title="My Projects">
 | 
						|
    
 | 
						|
    
 | 
						|
      <p class="text-bg font-bg">
 | 
						|
        Projects
 | 
						|
      </p>
 | 
						|
    
 | 
						|
  </a>
 | 
						|
</li>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
            
 | 
						|
              
 | 
						|
  <li class="mt-1">
 | 
						|
  <a
 | 
						|
    href="/posts/contact/"
 | 
						|
    
 | 
						|
    class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
    aria-label="Contact"
 | 
						|
    title="Contact Information">
 | 
						|
    
 | 
						|
    
 | 
						|
      <p class="text-bg font-bg">
 | 
						|
        Contact
 | 
						|
      </p>
 | 
						|
    
 | 
						|
  </a>
 | 
						|
</li>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
            
 | 
						|
              
 | 
						|
  <li class="mt-1">
 | 
						|
  <a
 | 
						|
    href="/posts/hire-me/"
 | 
						|
    
 | 
						|
    class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
    aria-label="Hire Me!"
 | 
						|
    title="I am open to work!">
 | 
						|
    
 | 
						|
    
 | 
						|
      <p class="text-bg font-bg">
 | 
						|
        Hire Me!
 | 
						|
      </p>
 | 
						|
    
 | 
						|
  </a>
 | 
						|
</li>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
            
 | 
						|
              
 | 
						|
  <li class="mt-1">
 | 
						|
  <a
 | 
						|
    href=""
 | 
						|
    
 | 
						|
    class="flex items-center hover:text-primary-600 dark:hover:text-primary-400"
 | 
						|
    
 | 
						|
    title="">
 | 
						|
    
 | 
						|
    
 | 
						|
  </a>
 | 
						|
</li>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
            
 | 
						|
 | 
						|
          </ul>
 | 
						|
          
 | 
						|
        </div>
 | 
						|
      
 | 
						|
    </div>
 | 
						|
  </div>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  </div>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<script
 | 
						|
  type="text/javascript"
 | 
						|
  src="/js/background-blur.min.00a57c73ea12f2cab2980c3c3d649e89f6d82f190f74bbe2b67f2f5e39ab7d032ece47086400ca05396758aace13299da49aca43ea643d2625e62c506267a169.js"
 | 
						|
  integrity="sha512-AKV8c+oS8sqymAw8PWSeifbYLxkPdLvitn8vXjmrfQMuzkcIZADKBTlnWKrOEymdpJrKQ+pkPSYl5ixQYmehaQ=="
 | 
						|
  data-blur-id="menu-blur"></script>
 | 
						|
 | 
						|
    
 | 
						|
    <div class="relative flex flex-col grow">
 | 
						|
      <main id="main-content" class="grow">
 | 
						|
        
 | 
						|
  
 | 
						|
  
 | 
						|
  <header class="mt-5">
 | 
						|
    
 | 
						|
    <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Series</h1>
 | 
						|
    <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
 | 
						|
      
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  
 | 
						|
  
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
 | 
						|
  <div class="flex flex-row flex-wrap items-center">
 | 
						|
    
 | 
						|
    
 | 
						|
  </div>
 | 
						|
 | 
						|
 | 
						|
    </div>
 | 
						|
  </header>
 | 
						|
  
 | 
						|
 | 
						|
  
 | 
						|
 | 
						|
    <section class="flex flex-wrap max-w-prose -mx-2 overflow-hidden">
 | 
						|
      
 | 
						|
    </section>
 | 
						|
  
 | 
						|
 | 
						|
 | 
						|
        
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<div
 | 
						|
  id="scroll-to-top"
 | 
						|
  class="fixed bottom-24 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
 | 
						|
  <a
 | 
						|
    href="#the-top"
 | 
						|
    class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
 | 
						|
    aria-label="Scroll to top"
 | 
						|
    title="Scroll to top">
 | 
						|
    ↑
 | 
						|
  </a>
 | 
						|
</div>
 | 
						|
 | 
						|
      </main><footer id="site-footer" class="py-10 print:hidden">
 | 
						|
  
 | 
						|
  
 | 
						|
    
 | 
						|
      
 | 
						|
      
 | 
						|
        
 | 
						|
      
 | 
						|
      
 | 
						|
      
 | 
						|
      
 | 
						|
      <nav class="flex flex-row pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400 overflow-x-auto py-2">
 | 
						|
        <ul class="flex list-none flex-row">
 | 
						|
          
 | 
						|
            <li class=" flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 me-4">
 | 
						|
              <a
 | 
						|
                class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2 flex items-center"
 | 
						|
                href=""
 | 
						|
                title="">
 | 
						|
                
 | 
						|
                
 | 
						|
              </a>
 | 
						|
            </li>
 | 
						|
          
 | 
						|
        </ul>
 | 
						|
      </nav>
 | 
						|
    
 | 
						|
  
 | 
						|
  <div class="flex items-center justify-between">
 | 
						|
    
 | 
						|
    
 | 
						|
      <p class="text-sm text-neutral-500 dark:text-neutral-400">
 | 
						|
          ©
 | 
						|
          2025
 | 
						|
          Tommy Tran
 | 
						|
      </p>
 | 
						|
    
 | 
						|
 | 
						|
    
 | 
						|
    
 | 
						|
      <p class="text-xs text-neutral-500 dark:text-neutral-400">
 | 
						|
        
 | 
						|
        
 | 
						|
        Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
 | 
						|
          href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
 | 
						|
          href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
 | 
						|
      </p>
 | 
						|
    
 | 
						|
  </div>
 | 
						|
  
 | 
						|
    <script>
 | 
						|
      mediumZoom(document.querySelectorAll("img:not(.nozoom)"), {
 | 
						|
        margin: 24,
 | 
						|
        background: "rgba(0,0,0,0.5)",
 | 
						|
        scrollOffset: 0,
 | 
						|
      });
 | 
						|
    </script>
 | 
						|
  
 | 
						|
  
 | 
						|
  
 | 
						|
  <script
 | 
						|
    type="text/javascript"
 | 
						|
    src="/js/process.min.ee03488f19c93c2efb199e2e3014ea5f3cb2ce7d45154adb3399a158cac27ca52831db249ede5bb602700ef87eb02434139de0858af1818ab0fb4182472204a4.js"
 | 
						|
    integrity="sha512-7gNIjxnJPC77GZ4uMBTqXzyyzn1FFUrbM5mhWMrCfKUoMdsknt5btgJwDvh+sCQ0E53ghYrxgYqw+0GCRyIEpA=="></script>
 | 
						|
  
 | 
						|
  
 | 
						|
</footer>
 | 
						|
<div
 | 
						|
  id="search-wrapper"
 | 
						|
  class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
 | 
						|
  data-url="http://localhost:1313/">
 | 
						|
  <div
 | 
						|
    id="search-modal"
 | 
						|
    class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
 | 
						|
    <header class="relative z-10 flex items-center justify-between flex-none px-2">
 | 
						|
      <form class="flex items-center flex-auto min-w-0">
 | 
						|
        <div class="flex items-center justify-center w-8 h-8 text-neutral-400">
 | 
						|
          <span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
 | 
						|
</span>
 | 
						|
        </div>
 | 
						|
        <input
 | 
						|
          type="search"
 | 
						|
          id="search-query"
 | 
						|
          class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
 | 
						|
          placeholder="Search"
 | 
						|
          tabindex="0">
 | 
						|
      </form>
 | 
						|
      <button
 | 
						|
        id="close-search-button"
 | 
						|
        class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
 | 
						|
        title="Close (Esc)">
 | 
						|
        <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
 | 
						|
</span>
 | 
						|
      </button>
 | 
						|
    </header>
 | 
						|
    <section class="flex-auto px-2 overflow-auto">
 | 
						|
      <ul id="search-results">
 | 
						|
        
 | 
						|
      </ul>
 | 
						|
    </section>
 | 
						|
  </div>
 | 
						|
</div>
 | 
						|
 | 
						|
    </div>
 | 
						|
  </body>
 | 
						|
  
 | 
						|
</html>
 |