<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>hnnguyen.dev Blog</title>
    <link>https://hnnguyen.dev/en/</link>
    <description>Practical engineering insights on backend systems, frontend architecture, DevOps, and real-world software development.</description>
    <language>en</language>
    <lastBuildDate>Mon, 31 Aug 2026 03:50:50 GMT</lastBuildDate>
    <atom:link href="https://hnnguyen.dev/en/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Building a Secure and Scalable Asset Storage Architecture with AWS S3 and CloudFront</title>
      <link>https://hnnguyen.dev/en/blog/building-a-secure-and-scalable-asset-storage-architecture-with-aws-s3-and-cloudfront</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/building-a-secure-and-scalable-asset-storage-architecture-with-aws-s3-and-cloudfront</guid>
      <pubDate>Wed, 24 Jun 2026 14:18:14 GMT</pubDate>
      <description>Learn how to build a secure and scalable AWS asset storage architecture using Amazon S3, CloudFront, Origin Access Control, IAM, versioning, and lifecycle policies.</description>
    </item>
    <item>
      <title>How to Change Your Google Account Email on Mobile</title>
      <link>https://hnnguyen.dev/en/blog/how-to-change-your-google-account-email-on-mobile</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-to-change-your-google-account-email-on-mobile</guid>
      <pubDate>Tue, 23 Jun 2026 11:47:15 GMT</pubDate>
      <description>Learn how to change your Google Account email on your mobile device with this step-by-step guide. Check whether your account supports email address changes.</description>
    </item>
    <item>
      <title>How to Troubleshoot a Spring Boot Application That Keeps Stopping on an Ubuntu VPS</title>
      <link>https://hnnguyen.dev/en/blog/how-to-troubleshoot-a-spring-boot-application-that-keeps-stopping-on-an-ubuntu-vps</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-to-troubleshoot-a-spring-boot-application-that-keeps-stopping-on-an-ubuntu-vps</guid>
      <pubDate>Wed, 10 Jun 2026 06:14:53 GMT</pubDate>
      <description>Troubleshoot Spring Boot crashes on Ubuntu VPS by diagnosing Nginx 502 errors, Java OOM Killer events, memory issues, and swap configuration.</description>
    </item>
    <item>
      <title>How I Fixed a Spring Boot Application That Kept Getting Killed by the Linux OOM Killer</title>
      <link>https://hnnguyen.dev/en/blog/how-i-fixed-a-spring-boot-application-that-kept-getting-killed-by-the-linux-oom-killer</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-i-fixed-a-spring-boot-application-that-kept-getting-killed-by-the-linux-oom-killer</guid>
      <pubDate>Wed, 03 Jun 2026 04:29:27 GMT</pubDate>
      <description>Learn how I fixed Spring Boot OOM crashes on a 2GB Ubuntu VPS by diagnosing Linux OOM Killer events, configuring swap space, and stabilizing Java.</description>
    </item>
    <item>
      <title>Bangkok Through My Lens — April 2026</title>
      <link>https://hnnguyen.dev/en/blog/bangkok-through-my-lens-april-2026</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/bangkok-through-my-lens-april-2026</guid>
      <pubDate>Sat, 16 May 2026 14:26:54 GMT</pubDate>
      <description>Explore photos from my April 2026 trip to Bangkok, Thailand, captured on a Sony A6400 with a Sigma 18-50mm F2.8, featuring authentic moments in natural light.</description>
    </item>
    <item>
      <title>Memory Tuning for Spring Boot on a 2GB Ubuntu VPS</title>
      <link>https://hnnguyen.dev/en/blog/memory-tuning-for-spring-boot-on-a-2gb-ubuntu-vps</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/memory-tuning-for-spring-boot-on-a-2gb-ubuntu-vps</guid>
      <pubDate>Mon, 06 Apr 2026 03:45:50 GMT</pubDate>
      <description>Learn the Spring Boot memory settings I use on a 2GB Ubuntu VPS, including JVM options, systemd limits, swap space, and monitoring for stable performance.</description>
    </item>
    <item>
      <title>Why a 2GB VPS Needs Swap Space for Spring Boot Applications</title>
      <link>https://hnnguyen.dev/en/blog/why-a-2gb-vps-needs-swap-space-for-spring-boot-applications</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/why-a-2gb-vps-needs-swap-space-for-spring-boot-applications</guid>
      <pubDate>Tue, 10 Feb 2026 03:19:14 GMT</pubDate>
      <description>Learn why a 2GB Ubuntu VPS needs swap space for Spring Boot, PostgreSQL, and Nginx to prevent Linux OOM Killer events and improve stability.</description>
    </item>
    <item>
      <title>What Is systemd-journald and Should You Limit Its Log Size?</title>
      <link>https://hnnguyen.dev/en/blog/what-is-systemd-journald-and-should-you-limit-its-log-size</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/what-is-systemd-journald-and-should-you-limit-its-log-size</guid>
      <pubDate>Sat, 10 Jan 2026 03:03:14 GMT</pubDate>
      <description>Discover how systemd-journald works, why it consumes RAM, and how to configure log retention on an Ubuntu VPS using journald.conf.</description>
    </item>
    <item>
      <title>How I Secured My Ubuntu VPS After Seeing Constant SSH Attack Attempts</title>
      <link>https://hnnguyen.dev/en/blog/how-i-secured-my-ubuntu-vps-after-seeing-constant-ssh-attack-attempts</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-i-secured-my-ubuntu-vps-after-seeing-constant-ssh-attack-attempts</guid>
      <pubDate>Fri, 09 Jan 2026 04:00:17 GMT</pubDate>
      <description>Secure your Ubuntu VPS with SSH keys, UFW, Fail2Ban, and automatic updates to reduce attack risks and protect against common SSH login attempts.</description>
    </item>
    <item>
      <title>Seoul Through My Lens — November 2025</title>
      <link>https://hnnguyen.dev/en/blog/seoul-through-my-lens-november-2025</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/seoul-through-my-lens-november-2025</guid>
      <pubDate>Thu, 06 Nov 2025 07:18:27 GMT</pubDate>
      <description>Explore Seoul through my November 2025 photo journal, featuring original iPhone photography that captures the city&apos;s autumn streets and everyday moments.</description>
    </item>
    <item>
      <title>How to Install Cursor IDE on  Ubuntu</title>
      <link>https://hnnguyen.dev/en/blog/how-to-install-cursor-ide-on-ubuntu</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-to-install-cursor-ide-on-ubuntu</guid>
      <pubDate>Thu, 04 Sep 2025 10:49:36 GMT</pubDate>
      <description>Install Cursor IDE on Ubuntu using the AppImage package. Follow this step-by-step guide to configure desktop integration, launcher scripts, and AppArmor.</description>
    </item>
    <item>
      <title>Login to GitHub on macOS Using SSH Key</title>
      <link>https://hnnguyen.dev/en/blog/login-to-github-on-macos-using-ssh-key</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/login-to-github-on-macos-using-ssh-key</guid>
      <pubDate>Fri, 29 Aug 2025 10:49:53 GMT</pubDate>
      <description>Set up SSH keys for GitHub on macOS to securely clone, pull, and push repositories without entering your password for every Git operation.</description>
    </item>
    <item>
      <title>Sessions vs JWTs: Understanding Authentication in Modern Web Applications</title>
      <link>https://hnnguyen.dev/en/blog/sessions-vs-jwts-understanding-authentication-in-modern-web-applications</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/sessions-vs-jwts-understanding-authentication-in-modern-web-applications</guid>
      <pubDate>Fri, 01 Aug 2025 12:07:48 GMT</pubDate>
      <description>Understand why HTTP is stateless and how Session-Cookie and JWT authentication solve user identity across requests, with their pros, cons, and use cases.</description>
    </item>
    <item>
      <title>How to run java jar application with systemd on Linux as service</title>
      <link>https://hnnguyen.dev/en/blog/how-to-run-java-jar-application-with-systemd-on-linux-as-service</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-to-run-java-jar-application-with-systemd-on-linux-as-service</guid>
      <pubDate>Wed, 04 Jun 2025 07:59:58 GMT</pubDate>
      <description>Run a Spring Boot JAR as a systemd service on Ubuntu. Configure startup, automatic restarts, resource limits, and service management commands.</description>
    </item>
    <item>
      <title>Installing and Configuring PostgreSQL with Open Port Access on Ubuntu</title>
      <link>https://hnnguyen.dev/en/blog/installing-and-configuring-postgresql-with-open-port-access-on-ubuntu</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/installing-and-configuring-postgresql-with-open-port-access-on-ubuntu</guid>
      <pubDate>Tue, 03 Jun 2025 03:17:30 GMT</pubDate>
      <description>Install and secure PostgreSQL on Ubuntu 22.04 with this step-by-step guide covering installation, authentication, remote access, firewall, and configuration.</description>
    </item>
    <item>
      <title>Setup SSL for Nginx</title>
      <link>https://hnnguyen.dev/en/blog/setup-ssl-for-nginx</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/setup-ssl-for-nginx</guid>
      <pubDate>Mon, 02 Jun 2025 14:49:19 GMT</pubDate>
      <description>Secure your Nginx server on Ubuntu with Let&apos;s Encrypt and Certbot. Configure HTTPS, obtain an SSL certificate, and enable automatic renewal.</description>
    </item>
    <item>
      <title>How To Install Nginx on Ubuntu 22.04</title>
      <link>https://hnnguyen.dev/en/blog/how-to-install-nginx-on-ubuntu-22-04</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-to-install-nginx-on-ubuntu-22-04</guid>
      <pubDate>Sun, 01 Jun 2025 13:55:16 GMT</pubDate>
      <description>Install and configure Nginx on Ubuntu 22.04 with this step-by-step guide covering firewall setup, server blocks, service management, and deployment.</description>
    </item>
    <item>
      <title>Initial Server Setup with Ubuntu</title>
      <link>https://hnnguyen.dev/en/blog/initial-server-setup-with-ubuntu</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/initial-server-setup-with-ubuntu</guid>
      <pubDate>Sat, 31 May 2025 12:34:08 GMT</pubDate>
      <description>Secure your new Ubuntu server from day one — create a sudo user, set up UFW firewall rules, and configure SSH access the right way.</description>
    </item>
    <item>
      <title>The Fundamentals of Photo Composition</title>
      <link>https://hnnguyen.dev/en/blog/the-fundamentals-of-photo-composition</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/the-fundamentals-of-photo-composition</guid>
      <pubDate>Fri, 30 May 2025 12:17:41 GMT</pubDate>
      <description>Real-life examples through the lens of photographer Partho Protim Bhowmick.</description>
    </item>
    <item>
      <title>How to Quickly Identify and Kill Applications Occupying a Port on Windows</title>
      <link>https://hnnguyen.dev/en/blog/how-to-quickly-identify-and-kill-applications-occupying-a-port-on-windows</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/how-to-quickly-identify-and-kill-applications-occupying-a-port-on-windows</guid>
      <pubDate>Fri, 30 May 2025 10:50:48 GMT</pubDate>
      <description>Fix &quot;port already in use&quot; errors on Windows: find the process using netstat, get its PID, and kill it with taskkill — no third-party tools needed.</description>
    </item>
    <item>
      <title>Fixing CRLF Issues in Git: Enforcing LF for Your Project</title>
      <link>https://hnnguyen.dev/en/blog/fixing-crlf-issues-in-git-enforcing-lf-for-your-project</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/fixing-crlf-issues-in-git-enforcing-lf-for-your-project</guid>
      <pubDate>Fri, 30 May 2025 10:50:21 GMT</pubDate>
      <description>Fix &quot;Expected linebreaks to be &apos;LF&apos; but found &apos;CRLF&apos;&quot; on Windows by configuring Git&apos;s core.autocrlf and core.eol settings — global or per-project.</description>
    </item>
    <item>
      <title>Using Google Analytics to Grow Your Business</title>
      <link>https://hnnguyen.dev/en/blog/using-google-analytics-to-grow-your-business</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/using-google-analytics-to-grow-your-business</guid>
      <pubDate>Fri, 30 May 2025 09:47:08 GMT</pubDate>
      <description>Learn how to use Google Analytics to grow your business — tips on Audience, Behavior, and Acquisition reports to find where to invest your marketing budget.</description>
    </item>
    <item>
      <title>The Small Business Trifecta: Google Visibility, Web Accessibility, and Harnessing AI</title>
      <link>https://hnnguyen.dev/en/blog/the-small-business-trifecta-google-visibility-web-accessibility-and-harnessing-ai</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/the-small-business-trifecta-google-visibility-web-accessibility-and-harnessing-ai</guid>
      <pubDate>Thu, 29 May 2025 12:27:30 GMT</pubDate>
      <description>Learn how to get your business listed on Google, optimize your online presence, and use AI and accessibility tools to grow your digital footprint.</description>
    </item>
    <item>
      <title>Get Found in Search Engines</title>
      <link>https://hnnguyen.dev/en/blog/get-found-in-search-engines</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/get-found-in-search-engines</guid>
      <pubDate>Wed, 28 May 2025 07:04:44 GMT</pubDate>
      <description>Learn how to get found in search engines with expert SEO tips on keyword research using SEMrush and Google, plus how to optimize titles, slugs, and meta descriptions.</description>
    </item>
    <item>
      <title>No-Code/Low-Code Tools to Streamline Your Service-Based Business</title>
      <link>https://hnnguyen.dev/en/blog/no-code-low-code-tools-to-streamline-your-service-based-business</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/no-code-low-code-tools-to-streamline-your-service-based-business</guid>
      <pubDate>Wed, 28 May 2025 07:03:34 GMT</pubDate>
      <description>Discover the best no-code/low-code tools to build your business tech stack — from client management and scheduling to social media and content creation.</description>
    </item>
    <item>
      <title>Graphic Design Best Practices &amp; Tools</title>
      <link>https://hnnguyen.dev/en/blog/graphic-design-best-practices-tools</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/graphic-design-best-practices-tools</guid>
      <pubDate>Wed, 28 May 2025 03:19:48 GMT</pubDate>
      <description>Learn graphic design best practices and free tools like Canva, Snappa, and Google Fonts to create professional designs without technical skills.</description>
    </item>
    <item>
      <title>Establish a Professional Domain, Website, and Email for Your Business</title>
      <link>https://hnnguyen.dev/en/blog/establish-a-professional-domain-website-and-email-for-your-business</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/establish-a-professional-domain-website-and-email-for-your-business</guid>
      <pubDate>Mon, 26 May 2025 08:48:26 GMT</pubDate>
      <description>Learn what a domain name is, how to choose and register one, build a free website with Google Sites, and set up professional business email.</description>
    </item>
    <item>
      <title>AI &amp; Automation in Small Businesses</title>
      <link>https://hnnguyen.dev/en/blog/ai-automation-in-small-businesses</link>
      <guid isPermaLink="true">https://hnnguyen.dev/en/blog/ai-automation-in-small-businesses</guid>
      <pubDate>Mon, 26 May 2025 08:27:22 GMT</pubDate>
      <description>Discover how Canva AI, ChatGPT, and Zapier can boost your small business - streamline design, content creation, and automation to save time and grow.</description>
    </item>
  </channel>
</rss>
