<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Software Engineer&apos;s Blog</title><description>A software engineer, solo developer, and solopreneur sharing real-world engineering insights — backend, cloud, AI integration, and system design, with code in Java, Python, C/C++, and React.</description><link>https://jamongx.com/</link><language>en</language><item><title>Agent Loops in Claude Code: Knowing When to Stop</title><link>https://jamongx.com/claude-code-agent-loops/</link><guid isPermaLink="true">https://jamongx.com/claude-code-agent-loops/</guid><description>The hard part of a Claude Code agent loop isn&apos;t repeating work. It&apos;s a stop condition you can trust: convergent vs exploratory, and who enforces the verdict.</description><pubDate>Wed, 22 Jul 2026 22:20:00 GMT</pubDate></item><item><title>Claude Code /goal: Make Completion a Deterministic Gate</title><link>https://jamongx.com/claude-code-goal-completion-gate/</link><guid isPermaLink="true">https://jamongx.com/claude-code-goal-completion-gate/</guid><description>Claude Code&apos;s /goal decides it&apos;s done from the worker&apos;s self-report. Add a Stop hook that verifies completion with exit codes, not the model&apos;s word.</description><pubDate>Wed, 22 Jul 2026 17:53:23 GMT</pubDate></item><item><title>Running Auto Research in Claude Code — A Bash-Driven Experiment Loop</title><link>https://jamongx.com/auto-research-bash-loop/</link><guid isPermaLink="true">https://jamongx.com/auto-research-bash-loop/</guid><description>Karpathy&apos;s autoresearch pattern rebuilt for Claude Code: a Bash loop that scores each AI-tried hypothesis, keeps improvements, and rolls back failures with git.</description><pubDate>Wed, 22 Jul 2026 00:35:49 GMT</pubDate></item><item><title>Obsidian Local Image Attachments: Why I Ditched Imgur</title><link>https://jamongx.com/obsidian-local-image-attachments/</link><guid isPermaLink="true">https://jamongx.com/obsidian-local-image-attachments/</guid><description>Imgur&apos;s OAuth flow stopped working, so I moved my Obsidian attachments local: the /assets + UUID setup, the migration, and the settings that cost me an evening.</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Three Claude Code Skills for a Subtitle Workflow</title><link>https://jamongx.com/claude-code-subtitle-skills/</link><guid isPermaLink="true">https://jamongx.com/claude-code-subtitle-skills/</guid><description>Three Claude Code skills for downloading YouTube captions as SRT, transcribing audio with a local Whisper server, and translating embedded subtitle tracks.</description><pubDate>Sun, 12 Jul 2026 05:40:00 GMT</pubDate></item><item><title>Harness Engineering: Keeping AI From Running Wild</title><link>https://jamongx.com/harness-engineering/</link><guid isPermaLink="true">https://jamongx.com/harness-engineering/</guid><description>What an AI harness is and how to build one — validation, gates, and Generator ≠ Evaluator separation at each stage of the SDLC.</description><pubDate>Thu, 09 Jul 2026 02:50:03 GMT</pubDate></item><item><title>The Four Layers of AI Engineering: From Prompts to Loops</title><link>https://jamongx.com/four-layers-of-ai-engineering/</link><guid isPermaLink="true">https://jamongx.com/four-layers-of-ai-engineering/</guid><description>AI engineering is more than prompts. A practical frame — prompt, context, harness, loop — walked through one example: an AI that reviews every PR.</description><pubDate>Wed, 08 Jul 2026 07:16:44 GMT</pubDate></item><item><title>Obsidian Nord: wider content and fonts for Korean notes</title><link>https://jamongx.com/obsidian-nord-line-width-and-fonts/</link><guid isPermaLink="true">https://jamongx.com/obsidian-nord-line-width-and-fonts/</guid><description>Widen the Obsidian Nord editor with a CSS snippet, and keep Korean aligned by stacking JetBrains Mono with D2Coding. No theme edits, just a snippet and a few fonts.</description><pubDate>Sun, 05 Jul 2026 21:41:34 GMT</pubDate></item><item><title>Ghostty 1.3: Fixed Tab Titles for Claude Code and Codex</title><link>https://jamongx.com/ghostty-1-3-fixed-tab-titles/</link><guid isPermaLink="true">https://jamongx.com/ghostty-1-3-fixed-tab-titles/</guid><description>Ghostty 1.3 lets you pin a tab&apos;s title so Claude Code and Codex tabs stop renaming themselves — set it with the prompt_tab_title keybind action.</description><pubDate>Sun, 05 Jul 2026 17:00:07 GMT</pubDate></item><item><title>From Port Forwarding to Cloudflare Tunnel: Moving a Ghost Blog on a Synology NAS</title><link>https://jamongx.com/cloudflare-tunnel-ghost-synology-nas/</link><guid isPermaLink="true">https://jamongx.com/cloudflare-tunnel-ghost-synology-nas/</guid><description>Move a self-hosted Ghost blog on Synology NAS from port forwarding to a Cloudflare Tunnel: no open inbound ports, home IP hidden, ads.txt via a free Worker.</description><pubDate>Sat, 04 Jul 2026 18:12:48 GMT</pubDate></item><item><title>When Claude Code won&apos;t paste images on Linux (Wayland)</title><link>https://jamongx.com/claude-code-image-paste-wayland/</link><guid isPermaLink="true">https://jamongx.com/claude-code-image-paste-wayland/</guid><description>Screenshots won&apos;t paste into Claude Code on Wayland? Install wl-clipboard (not xclip), then restart the CLI. Same fix works for Codex.</description><pubDate>Thu, 02 Jul 2026 06:18:26 GMT</pubDate></item><item><title>Fixing Bitwarden Extension Login Failures on Self-Hosted Vaultwarden (Synology Docker)</title><link>https://jamongx.com/synology-vaultwarden-bitwarden-login-fix/</link><guid isPermaLink="true">https://jamongx.com/synology-vaultwarden-bitwarden-login-fix/</guid><description>Bitwarden extension can&apos;t log into your self-hosted Vaultwarden? Update the Docker image on Synology NAS to fix the compatibility error.</description><pubDate>Sun, 14 Jun 2026 03:34:59 GMT</pubDate></item><item><title>Running the Ralph Loop in Claude Code — 4 Practical Ways</title><link>https://jamongx.com/ralph-loop-claude-code/</link><guid isPermaLink="true">https://jamongx.com/ralph-loop-claude-code/</guid><description>Run the Ralph Loop in Claude Code: four ways to repeat work and stop on clear completion criteria — the ralph-loop plugin, /loop, a prompt loop, and Bash.</description><pubDate>Tue, 09 Jun 2026 20:15:51 GMT</pubDate></item><item><title>Should AI Output Be Markdown or HTML? Notes on the Claude Code Debate</title><link>https://jamongx.com/markdown-vs-html-for-ai-output/</link><guid isPermaLink="true">https://jamongx.com/markdown-vs-html-for-ai-output/</guid><description>The Claude Code debate over Markdown vs HTML for AI output — and why the real issue isn&apos;t the format but how clearly AI communicates structure and intent.</description><pubDate>Fri, 05 Jun 2026 06:13:47 GMT</pubDate></item><item><title>From Pessimistic to Optimistic Locking: A Practical Guide to Retries and Backoff</title><link>https://jamongx.com/optimistic-locking-retries-backoff/</link><guid isPermaLink="true">https://jamongx.com/optimistic-locking-retries-backoff/</guid><description>Optimistic locking in Spring Boot and JPA: how it works and how to make it production-ready with retries, backoff, jitter, observability, and fallback.</description><pubDate>Tue, 02 Jun 2026 02:26:26 GMT</pubDate></item><item><title>Using Claude Code in Zed with Terminal Threads</title><link>https://jamongx.com/zed-terminal-threads-claude-code/</link><guid isPermaLink="true">https://jamongx.com/zed-terminal-threads-claude-code/</guid><description>Zed&apos;s Terminal Threads run Claude Code, Codex, and other CLI AI agents right inside the editor — a lightweight AI workflow without moving to VS Code or Cursor.</description><pubDate>Sat, 23 May 2026 05:58:08 GMT</pubDate></item><item><title>Using Ghostty Split Panes on Linux</title><link>https://jamongx.com/ghostty-linux-split-panes/</link><guid isPermaLink="true">https://jamongx.com/ghostty-linux-split-panes/</guid><description>Ghostty split panes on Linux: default shortcuts, pane navigation, resizing, zoom mode, and custom keybindings.</description><pubDate>Wed, 20 May 2026 20:28:34 GMT</pubDate></item><item><title>Understanding LSP with the Rectangle and Square Example in Java</title><link>https://jamongx.com/understanding-lsp-rectangle-square-java/</link><guid isPermaLink="true">https://jamongx.com/understanding-lsp-rectangle-square-java/</guid><description>The Liskov Substitution Principle in Java: why the classic Rectangle/Square example violates LSP, and how smaller interfaces or composition fix the design.</description><pubDate>Wed, 13 May 2026 17:29:18 GMT</pubDate></item><item><title>Applying OCP with the Strategy Pattern in Java</title><link>https://jamongx.com/applying-ocp-with-strategy-pattern-in-java/</link><guid isPermaLink="true">https://jamongx.com/applying-ocp-with-strategy-pattern-in-java/</guid><description>Apply the Open-Closed Principle in Java with the Strategy Pattern — add new behavior without editing core logic, shown with a payment-processing example.</description><pubDate>Wed, 13 May 2026 16:44:20 GMT</pubDate></item><item><title>DIP vs DI: Understanding the Difference in Java</title><link>https://jamongx.com/dip-vs-di-in-java/</link><guid isPermaLink="true">https://jamongx.com/dip-vs-di-in-java/</guid><description>DIP vs DI in Java: they work together but differ — DIP keeps logic depending on abstractions, DI supplies dependencies from outside. Explained with examples.</description><pubDate>Wed, 13 May 2026 16:16:38 GMT</pubDate></item><item><title>SOLID Principles in Java</title><link>https://jamongx.com/solid-principles-java-series/</link><guid isPermaLink="true">https://jamongx.com/solid-principles-java-series/</guid><description>SOLID principles in Java explained with simple examples — SRP, OCP, LSP, ISP, and DIP, each with backend-focused code. The full series index starts here.</description><pubDate>Tue, 12 May 2026 16:37:42 GMT</pubDate></item><item><title>Dependency Inversion Principle in Java: Depend on Abstractions, Not Concrete Classes</title><link>https://jamongx.com/dependency-inversion-principle-java/</link><guid isPermaLink="true">https://jamongx.com/dependency-inversion-principle-java/</guid><description>Dependency Inversion Principle in Java, explained with notification, payment gateway, Spring Boot, and testing examples.</description><pubDate>Tue, 12 May 2026 16:14:30 GMT</pubDate></item><item><title>Interface Segregation Principle in Java: Many Small Interfaces Over One Large Interface</title><link>https://jamongx.com/interface-segregation-principle-java/</link><guid isPermaLink="true">https://jamongx.com/interface-segregation-principle-java/</guid><description>The Interface Segregation Principle in Java: why one fat interface forces empty methods and UnsupportedOperationException, and how small focused interfaces fix it — with phone, printer, and backend examples.</description><pubDate>Tue, 12 May 2026 16:05:12 GMT</pubDate></item><item><title>Liskov Substitution Principle in Java: Subclasses Should Replace Parent Classes Safely</title><link>https://jamongx.com/liskov-substitution-principle-java/</link><guid isPermaLink="true">https://jamongx.com/liskov-substitution-principle-java/</guid><description>The Liskov Substitution Principle in Java: why a subclass that breaks its parent&apos;s contract violates LSP, shown with bird, Flyable, and discount policy examples.</description><pubDate>Tue, 12 May 2026 15:54:22 GMT</pubDate></item><item><title>Open-Closed Principle in Java: Open to Extension, Closed to Modification</title><link>https://jamongx.com/open-closed-principle-java/</link><guid isPermaLink="true">https://jamongx.com/open-closed-principle-java/</guid><description>The Open-Closed Principle in Java: add new behavior without touching stable code, shown with payment methods, interfaces, and Spring Boot style examples.</description><pubDate>Tue, 12 May 2026 15:47:43 GMT</pubDate></item><item><title>Single Responsibility Principle in Java: One Class, One Reason to Change</title><link>https://jamongx.com/single-responsibility-principle-java/</link><guid isPermaLink="true">https://jamongx.com/single-responsibility-principle-java/</guid><description>The Single Responsibility Principle in Java: what &apos;one reason to change&apos; actually means in practice, with backend service and Spring Boot style examples.</description><pubDate>Tue, 12 May 2026 15:39:44 GMT</pubDate></item><item><title>opusplan, subagents, /advisor: which Claude Code routing knob does what</title><link>https://jamongx.com/claude-code-model-routing-tldr/</link><guid isPermaLink="true">https://jamongx.com/claude-code-model-routing-tldr/</guid><description>opusplan, subagents, and /advisor all pick models in Claude Code but fire on different signals — here&apos;s what each does and why you&apos;d run all three.</description><pubDate>Sun, 03 May 2026 18:59:17 GMT</pubDate></item><item><title>Running KakaoTalk and WhatsApp on Linux: A Practical Waydroid Guide for Ubuntu/Kubuntu 25.10</title><link>https://jamongx.com/kakaotalk-whatsapp-linux-waydroid/</link><guid isPermaLink="true">https://jamongx.com/kakaotalk-whatsapp-linux-waydroid/</guid><description>Wine and Bottles can&apos;t reliably run KakaoTalk anymore thanks to Themida. Here&apos;s how I got it working on Ubuntu 25.10 using Waydroid instead.</description><pubDate>Sun, 26 Apr 2026 20:02:26 GMT</pubDate></item><item><title>Beyond LIKE: Fuzzy Search in PostgreSQL with pg_trgm</title><link>https://jamongx.com/fuzzy-search-postgresql-pg-trgm/</link><guid isPermaLink="true">https://jamongx.com/fuzzy-search-postgresql-pg-trgm/</guid><description>Fuzzy search in PostgreSQL with pg_trgm: the operators, the GIN vs GiST index decision, and the tuning that keeps autocomplete from breaking in production.</description><pubDate>Sun, 26 Apr 2026 05:01:02 GMT</pubDate></item><item><title>Fixing Kate&apos;s Blank Markdown Preview on Kubuntu 25.10</title><link>https://jamongx.com/fixing-kate-markdown-preview-kubuntu/</link><guid isPermaLink="true">https://jamongx.com/fixing-kate-markdown-preview-kubuntu/</guid><description>Kate&apos;s Markdown preview shows up blank on Kubuntu 25.10? The plugin is fine — it&apos;s just missing a tiny KPart package. One-line fix inside.</description><pubDate>Fri, 24 Apr 2026 02:17:21 GMT</pubDate></item><item><title>Chrome Has No Sound on Kubuntu (PipeWire Fix)</title><link>https://jamongx.com/kubuntu-chrome-no-sound-pipewire/</link><guid isPermaLink="true">https://jamongx.com/kubuntu-chrome-no-sound-pipewire/</guid><description>Chrome silent on Kubuntu while Firefox plays fine? A three-line PipeWire state reset clears stale routing and fixes it.</description><pubDate>Tue, 21 Apr 2026 21:42:39 GMT</pubDate></item><item><title>Getting Started with tmux — From Installation to Real-World Setup (Ubuntu/Kubuntu)</title><link>https://jamongx.com/claude-code-tmux-ghostty-workflow/</link><guid isPermaLink="true">https://jamongx.com/claude-code-tmux-ghostty-workflow/</guid><description>tmux keeps your sessions alive through dropped SSH connections and closed terminals. Here’s how to install and set it up on Ubuntu/Kubuntu, plus a Ghostty workflow.</description><pubDate>Mon, 20 Apr 2026 04:32:29 GMT</pubDate></item><item><title>Using Dolphin Instead of Nautilus on Ubuntu 24.04 (Practical Guide + Caveats)</title><link>https://jamongx.com/ubuntu-24-04-use-dolphin-instead-of-nautilus/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-24-04-use-dolphin-instead-of-nautilus/</guid><description>Dolphin as your default file manager on Ubuntu 24.04: install steps, the pitfalls that break file dialogs, and what still depends on Nautilus.</description><pubDate>Sat, 18 Apr 2026 17:59:04 GMT</pubDate></item><item><title>Claude Code /statusline — A Must-Have When You’re Working Across Multiple Projects</title><link>https://jamongx.com/claude-code-statusline/</link><guid isPermaLink="true">https://jamongx.com/claude-code-statusline/</guid><description>Claude Code’s /statusline shows the project, model, and git branch right in your terminal — so you never lose track of which AI session is in which tab.</description><pubDate>Thu, 16 Apr 2026 22:33:20 GMT</pubDate></item><item><title>Supercharging Claude Code with Codex (What Actually Works)</title><link>https://jamongx.com/claude-code-codex-plugin-setup/</link><guid isPermaLink="true">https://jamongx.com/claude-code-codex-plugin-setup/</guid><description>Pair Claude Code with Codex in one workflow: how I set it up, and why using one model to generate code and another to review it leads to better results.</description><pubDate>Sun, 12 Apr 2026 13:38:52 GMT</pubDate></item><item><title>76. Minimum Window Substring</title><link>https://jamongx.com/76-minimum-window-substring/</link><guid isPermaLink="true">https://jamongx.com/76-minimum-window-substring/</guid><description>Minimum Window Substring (LeetCode 76): the sliding-window O(n) approach with character counts to shrink to the smallest valid window, with a visual.</description><pubDate>Tue, 31 Mar 2026 05:04:09 GMT</pubDate></item><item><title>3. Longest Substring Without Repeating Characters</title><link>https://jamongx.com/3-longest-substring-without-repeating-characters/</link><guid isPermaLink="true">https://jamongx.com/3-longest-substring-without-repeating-characters/</guid><description>Longest Substring Without Repeating Characters (LeetCode 3): the sliding-window O(n) approach, and why the int[128] version can jump the left pointer instead of stepping — with interactive visuals.</description><pubDate>Tue, 31 Mar 2026 02:43:25 GMT</pubDate></item><item><title>125. Valid Palindrome</title><link>https://jamongx.com/125-valid-palindrome/</link><guid isPermaLink="true">https://jamongx.com/125-valid-palindrome/</guid><description>Valid Palindrome (LeetCode 125): the two-pointer O(n) check that skips non-alphanumerics in place, why it beats building a cleaned string, and the edge cases.</description><pubDate>Tue, 31 Mar 2026 00:59:17 GMT</pubDate></item><item><title>128. Longest Consecutive Sequence</title><link>https://jamongx.com/128-longest-consecutive-sequence/</link><guid isPermaLink="true">https://jamongx.com/128-longest-consecutive-sequence/</guid><description>Longest Consecutive Sequence (LeetCode 128): the hash-set O(n) trick that only counts from sequence starts, with an interactive step-by-step visual.</description><pubDate>Mon, 30 Mar 2026 22:16:55 GMT</pubDate></item><item><title>From SecureCRT to Ghostty: Building a Better SSH Workflow</title><link>https://jamongx.com/ghostty-ssh-workflow-securecrt-alternative/</link><guid isPermaLink="true">https://jamongx.com/ghostty-ssh-workflow-securecrt-alternative/</guid><description>Migrate from SecureCRT to Ghostty: SSH config, key-based auth, and shell scripts for a developer-friendly SSH workflow with clean log management.</description><pubDate>Mon, 30 Mar 2026 18:34:27 GMT</pubDate></item><item><title>Complete Guide to CORS in GCP</title><link>https://jamongx.com/complete-guide-to-cors-in-gcp/</link><guid isPermaLink="true">https://jamongx.com/complete-guide-to-cors-in-gcp/</guid><description>Struggling with CORS errors in GCP? How CORS actually works across GCS, API Gateway, and Signed URLs, with practical examples and debugging tips.</description><pubDate>Sun, 29 Mar 2026 16:50:46 GMT</pubDate></item><item><title>15. 3Sum</title><link>https://jamongx.com/15-3sum/</link><guid isPermaLink="true">https://jamongx.com/15-3sum/</guid><description>3Sum (LeetCode 15): sort then two-pointer for an O(n^2) solution, why sorting unlocks it, and the three places duplicate triplets sneak in — with an interactive visualization.</description><pubDate>Fri, 27 Mar 2026 21:43:56 GMT</pubDate></item><item><title>11. Container With Most Water</title><link>https://jamongx.com/11-container-with-most-water/</link><guid isPermaLink="true">https://jamongx.com/11-container-with-most-water/</guid><description>Container With Most Water (LeetCode 11): the two-pointer O(n) approach, and the short proof for why moving the shorter line never skips a better answer — with an interactive visualization.</description><pubDate>Fri, 27 Mar 2026 18:33:50 GMT</pubDate></item><item><title>Understanding the Two Pointers Technique</title><link>https://jamongx.com/understanding-the-two-pointers-technique/</link><guid isPermaLink="true">https://jamongx.com/understanding-the-two-pointers-technique/</guid><description>The Two Pointers technique explained with clear examples: sorted arrays, sliding windows, and linked lists — a practical guide for coding interviews.</description><pubDate>Fri, 27 Mar 2026 14:32:22 GMT</pubDate></item><item><title>Kafka Testing Strategy — Spring EmbeddedKafka &amp; Python testcontainers</title><link>https://jamongx.com/kafka-testing-strategy-embeddedkafka-testcontainers/</link><guid isPermaLink="true">https://jamongx.com/kafka-testing-strategy-embeddedkafka-testcontainers/</guid><description>A practical Kafka testing strategy using Spring EmbeddedKafka and Python testcontainers. Learn how to test producers and consumers with real Kafka instead of mocks.</description><pubDate>Thu, 26 Mar 2026 15:37:12 GMT</pubDate></item><item><title>Implementing a Kafka Consumer in FastAPI — aiokafka AIOKafkaConsumer Guide</title><link>https://jamongx.com/fastapi-kafka-consumer-aiokafka-guide/</link><guid isPermaLink="true">https://jamongx.com/fastapi-kafka-consumer-aiokafka-guide/</guid><description>Implement a Kafka consumer in FastAPI with aiokafka: async processing, manual offset commit, error handling, and idempotency patterns for production.</description><pubDate>Thu, 26 Mar 2026 15:23:09 GMT</pubDate></item><item><title>Using Kafka in FastAPI — aiokafka Producer Implementation Guide</title><link>https://jamongx.com/fastapi-kafka-aiokafka-producer-guide/</link><guid isPermaLink="true">https://jamongx.com/fastapi-kafka-aiokafka-producer-guide/</guid><description>Implement a Kafka producer in FastAPI with aiokafka (async-first): pydantic-settings, event schema design, lifecycle management, and production best practices.</description><pubDate>Thu, 26 Mar 2026 15:11:15 GMT</pubDate></item><item><title>Using Kafka in Spring Boot — Producer &amp; Consumer Implementation Guide</title><link>https://jamongx.com/spring-boot-kafka-producer-consumer-guide/</link><guid isPermaLink="true">https://jamongx.com/spring-boot-kafka-producer-consumer-guide/</guid><description>Implement a Kafka producer and consumer in Spring Boot: KafkaTemplate, @KafkaListener, manual ACK, retry handling, and Dead Letter Topic best practices.</description><pubDate>Thu, 26 Mar 2026 14:47:15 GMT</pubDate></item><item><title>Kafka Setup &amp; Topic Design — A Practical Local Development Guide</title><link>https://jamongx.com/kafka-setup-and-topic-design-guide/</link><guid isPermaLink="true">https://jamongx.com/kafka-setup-and-topic-design-guide/</guid><description>Set up Kafka locally with Docker Compose and design scalable topic naming: partition keys, debugging, and real-world best practices in one practical guide.</description><pubDate>Thu, 26 Mar 2026 14:30:30 GMT</pubDate></item><item><title>Kafka Essentials — A Practical Beginner’s Guide</title><link>https://jamongx.com/kafka-essentials-beginner-guide/</link><guid isPermaLink="true">https://jamongx.com/kafka-essentials-beginner-guide/</guid><description>Kafka essentials for beginners: topics, partitions, consumer groups, and ACKs explained in a practical, easy-to-understand way — core concepts made simple.</description><pubDate>Thu, 26 Mar 2026 03:33:14 GMT</pubDate></item><item><title>HTTPS Setup Guide with Let&apos;s Encrypt (Certbot + Nginx + Docker)</title><link>https://jamongx.com/how-to-setup-https-certbot-nginx-docker/</link><guid isPermaLink="true">https://jamongx.com/how-to-setup-https-certbot-nginx-docker/</guid><description>Set up HTTPS with Certbot, Let&apos;s Encrypt, and Nginx in Docker: certificate issuance, renewal, and full automation in a simple, practical walkthrough.</description><pubDate>Wed, 25 Mar 2026 04:25:24 GMT</pubDate></item><item><title>Local Docker Registry &amp; Multi-Service Build/Deploy Guide</title><link>https://jamongx.com/local-docker-registry-multi-service-build-deploy-guide/</link><guid isPermaLink="true">https://jamongx.com/local-docker-registry-multi-service-build-deploy-guide/</guid><description>Set up a local Docker registry on your LAN to build and deploy images across machines with no cloud costs — plus automated redeploys with Watchtower, all free.</description><pubDate>Wed, 25 Mar 2026 03:56:50 GMT</pubDate></item><item><title>Java Set Explained (HashSet vs LinkedHashSet vs TreeSet)</title><link>https://jamongx.com/java-set-hashset-linkedhashset-treeset-vs-python/</link><guid isPermaLink="true">https://jamongx.com/java-set-hashset-linkedhashset-treeset-vs-python/</guid><description>When to use HashSet, LinkedHashSet, or TreeSet in Java: their differences explained simply, and how they map to Python&apos;s set, dict, and sorted().</description><pubDate>Sun, 22 Mar 2026 23:35:55 GMT</pubDate></item><item><title>Setting Up Caddy Reverse Proxy with Automatic HTTPS (Docker)</title><link>https://jamongx.com/caddy-reverse-proxy-docker-https-guide/</link><guid isPermaLink="true">https://jamongx.com/caddy-reverse-proxy-docker-https-guide/</guid><description>Set up a Caddy reverse proxy with automatic HTTPS using Docker: configure port forwarding, Docker Compose, and automatic certificate renewal.</description><pubDate>Wed, 11 Feb 2026 21:59:36 GMT</pubDate></item><item><title>How to Log in to the TELUS Network Access Hub (NAH)</title><link>https://jamongx.com/how-to-log-in-to-the-telus-network-access-hub/</link><guid isPermaLink="true">https://jamongx.com/how-to-log-in-to-the-telus-network-access-hub/</guid><description>Log in to the TELUS Network Access Hub (NAH) at 192.168.1.254 to set up DDNS and port forwarding — how to tell the NAH from the Wi-Fi Hub and find its IP.</description><pubDate>Sun, 08 Feb 2026 20:49:49 GMT</pubDate></item><item><title>What Is MapStruct and Why Do We Need It?</title><link>https://jamongx.com/what-is-mapstruct-and-why-use-it-in-spring/</link><guid isPermaLink="true">https://jamongx.com/what-is-mapstruct-and-why-use-it-in-spring/</guid><description>MapStruct is a compile-time mapping tool for Spring projects that reduces boilerplate, improves safety, and makes DTO mapping cleaner and more testable.</description><pubDate>Mon, 26 Jan 2026 17:52:40 GMT</pubDate></item><item><title>The Canonical Way to Manage Config with Pydantic v2</title><link>https://jamongx.com/pydantic-v2-settings-fastapi/</link><guid isPermaLink="true">https://jamongx.com/pydantic-v2-settings-fastapi/</guid><description>Pydantic v2 settings give you type-safe, environment-driven config. Covers default, default_factory, and FastAPI integration best practices.</description><pubDate>Fri, 23 Jan 2026 23:24:37 GMT</pubDate></item><item><title>FastAPI (Python) vs Spring Core (Java) Perspective Comparison</title><link>https://jamongx.com/fastapi-python-vs-spring-core-java/</link><guid isPermaLink="true">https://jamongx.com/fastapi-python-vs-spring-core-java/</guid><description>FastAPI vs Spring Core: how Python and Java differ on DI, singleton scope, resource lifecycle, and execution models — a practical developer comparison.</description><pubDate>Thu, 08 Jan 2026 18:34:43 GMT</pubDate></item><item><title>FastAPI Dependency Injection (DI) Guide</title><link>https://jamongx.com/fastapi-dependency-injection-architecture-guide/</link><guid isPermaLink="true">https://jamongx.com/fastapi-dependency-injection-architecture-guide/</guid><description>FastAPI dependency injection is a request-scoped resource engine, not just object passing. Covers lifecycles, dependency chains, testing, and clean architecture.</description><pubDate>Thu, 08 Jan 2026 17:55:33 GMT</pubDate></item><item><title>Python Singleton Implementation Guide (Pythonic &amp; Practical)</title><link>https://jamongx.com/pythonic-singleton-pattern-best-practices/</link><guid isPermaLink="true">https://jamongx.com/pythonic-singleton-pattern-best-practices/</guid><description>The Python Singleton pattern ensures one instance per process. Here are the Pythonic ways to do it (module-level, decorator, metaclass), plus thread safety and when not to use it.</description><pubDate>Thu, 08 Jan 2026 16:55:06 GMT</pubDate></item><item><title>How to Set Up SSH Key-Based Login from Ubuntu to Synology NAS (DSM 7.1)</title><link>https://jamongx.com/synology-dsm-ssh-key-login-from-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/synology-dsm-ssh-key-login-from-ubuntu/</guid><description>Set up SSH key-based login from Ubuntu to a Synology NAS (DSM 7.1) for secure, passwordless access — enable User Home, add your key, and disable password auth.</description><pubDate>Mon, 05 Jan 2026 07:32:47 GMT</pubDate></item><item><title>Claude Code Agents Guide: How Skills Power Your Subagents</title><link>https://jamongx.com/claude-code-agents-guide-how-skills-power-subagents/</link><guid isPermaLink="true">https://jamongx.com/claude-code-agents-guide-how-skills-power-subagents/</guid><description>Claude Code Subagents get their power from Skills. Combine reusable expertise with independent execution to build smarter automated workflows.</description><pubDate>Mon, 05 Jan 2026 02:01:40 GMT</pubDate></item><item><title>Claude Code Skills Guide: How to Automate Your Development Workflow</title><link>https://jamongx.com/claude-code-skills-guide-teaching-ai-your-workflow/</link><guid isPermaLink="true">https://jamongx.com/claude-code-skills-guide-teaching-ai-your-workflow/</guid><description>Claude Code Skills package repeatable workflows so Claude automates code reviews, enforces project conventions, and keeps quality consistent across a team.</description><pubDate>Sun, 04 Jan 2026 21:15:56 GMT</pubDate></item><item><title>Enforcing Team Architecture with .claude/rules in Claude Code (FastAPI Practical Guide)</title><link>https://jamongx.com/enforcing-architecture-consistency-with-claude-rules-in-fastapi/</link><guid isPermaLink="true">https://jamongx.com/enforcing-architecture-consistency-with-claude-rules-in-fastapi/</guid><description>AI code generation breaks architecture without guardrails. Learn how .claude/rules enforce consistent FastAPI layers with practical, team-driven constraints.</description><pubDate>Sun, 04 Jan 2026 20:31:16 GMT</pubDate></item><item><title>How to Install NVIDIA Driver on Ubuntu 24.04 (GTX 1660 Ti Laptop): Solving Dependency Conflicts</title><link>https://jamongx.com/ubuntu-24-04-nvidia-driver-install-gtx-1660-ti/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-24-04-nvidia-driver-install-gtx-1660-ti/</guid><description>Install the NVIDIA 535 driver on Ubuntu 24.04 and fix the dependency conflicts (pkgProblemResolver breaks) — clean purge, right driver, then verify PyTorch CUDA.</description><pubDate>Sun, 04 Jan 2026 07:32:07 GMT</pubDate></item><item><title>Streamlining Ghost Blog Feature Images: A Developer’s Guide to Bash &amp; ImageMagick</title><link>https://jamongx.com/streamlining-ghost-blog-feature-images/</link><guid isPermaLink="true">https://jamongx.com/streamlining-ghost-blog-feature-images/</guid><description>Automate Ghost blog feature-image optimization with a Bash + ImageMagick script that trims, centers, and converts to 16:9 WebP for faster LCP.</description><pubDate>Sun, 04 Jan 2026 05:47:40 GMT</pubDate></item><item><title>Generate Speaker-Labeled Subtitles with Whisper and pyannote.audio on Ubuntu 24.04</title><link>https://jamongx.com/whisper-pyannote-speaker-labeled-subtitles-ubuntu-24-04/</link><guid isPermaLink="true">https://jamongx.com/whisper-pyannote-speaker-labeled-subtitles-ubuntu-24-04/</guid><description>Generate speaker-labeled subtitles on Ubuntu 24.04 with Whisper and pyannote.audio (CUDA GPU) — a full working setup from Python 3.10 to a combined transcript + speaker SRT.</description><pubDate>Sat, 03 Jan 2026 06:34:06 GMT</pubDate></item><item><title>Understanding Lombok’s @Builder and Default Field Values</title><link>https://jamongx.com/lombok-builder-default-values/</link><guid isPermaLink="true">https://jamongx.com/lombok-builder-default-values/</guid><description>Lombok&apos;s @Builder ignores your field defaults — use @Builder.Default or final to keep them. Here&apos;s why it happens and how to fix it.</description><pubDate>Thu, 01 Jan 2026 22:20:06 GMT</pubDate></item><item><title>How to Install Docmost on Synology NAS (DS916+) with Docker</title><link>https://jamongx.com/how-to-install-docmost-on-synology-nas-with-docker/</link><guid isPermaLink="true">https://jamongx.com/how-to-install-docmost-on-synology-nas-with-docker/</guid><description>Docmost on Synology NAS with Docker, step by step — including the reverse proxy + WebSocket setup that fixes the &apos;Real-time editor connection lost&apos; error.</description><pubDate>Thu, 01 Jan 2026 19:56:19 GMT</pubDate></item><item><title>Use jq to Format JSON in Vim on Ubuntu (Prettify &amp; Minify)</title><link>https://jamongx.com/use-jq-to-format-json-in-vim-on-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/use-jq-to-format-json-in-vim-on-ubuntu/</guid><description>Format JSON in Vim on Ubuntu with jq — install it, then prettify or minify a buffer with a single `:%!jq` filter, or straight from the command line.</description><pubDate>Thu, 01 Jan 2026 18:42:02 GMT</pubDate></item><item><title>How to Set Up Vaultwarden (Bitwarden) on a Synology NAS — The Best Free Alternative to LastPass</title><link>https://jamongx.com/how-to-set-up-vaultwarden-on-synology-nas/</link><guid isPermaLink="true">https://jamongx.com/how-to-set-up-vaultwarden-on-synology-nas/</guid><description>Vaultwarden (Bitwarden) on Synology NAS with Docker: a secure, lightweight, free LastPass alternative with HTTPS. Here&apos;s the full setup.</description><pubDate>Thu, 01 Jan 2026 18:06:29 GMT</pubDate></item><item><title>Running Claude Code CLI with DeepSeek-Reasoner</title><link>https://jamongx.com/claude-code-deepseek-reasoner-direct-integration/</link><guid isPermaLink="true">https://jamongx.com/claude-code-deepseek-reasoner-direct-integration/</guid><description>Use DeepSeek-Reasoner directly with Claude Code CLI via its Anthropic-compatible endpoint — no local proxy or router. Set a few env vars and switch models.</description><pubDate>Mon, 29 Dec 2025 08:47:14 GMT</pubDate></item><item><title>Why Claude Appears in Your GitHub Contributors — and How to Fix It</title><link>https://jamongx.com/why-claude-appears-in-github-contributors/</link><guid isPermaLink="true">https://jamongx.com/why-claude-appears-in-github-contributors/</guid><description>Claude Code can add Co-authored-by metadata to your commits, causing Claude to appear in GitHub Contributors. Here’s why it happens and how to disable it.</description><pubDate>Sun, 28 Dec 2025 20:06:04 GMT</pubDate></item><item><title>Extending Claude Code&apos;s Memory: Installing and Using claude-mem</title><link>https://jamongx.com/extending-claude-code-memory-with-claude-mem/</link><guid isPermaLink="true">https://jamongx.com/extending-claude-code-memory-with-claude-mem/</guid><description>Claude Code forgets everything when a session ends. Install claude-mem to persist context, fix common issues, and enable long-term memory for real workflows.</description><pubDate>Fri, 26 Dec 2025 00:23:59 GMT</pubDate></item><item><title>PostgreSQL TIMESTAMP WITH TIME ZONE: A Practical Guide for Global Services</title><link>https://jamongx.com/postgresql-timestamp-with-time-zone-best-practices/</link><guid isPermaLink="true">https://jamongx.com/postgresql-timestamp-with-time-zone-best-practices/</guid><description>PostgreSQL TIMESTAMP WITH TIME ZONE (timestamptz) normalizes everything to UTC and prevents timezone bugs that only surface in production. Here&apos;s why it should be your default and how to migrate safely.</description><pubDate>Sat, 20 Dec 2025 20:33:30 GMT</pubDate></item><item><title>PostgreSQL User Creation and Permission Setup</title><link>https://jamongx.com/postgresql-user-creation-and-permission-setup/</link><guid isPermaLink="true">https://jamongx.com/postgresql-user-creation-and-permission-setup/</guid><description>Secure PostgreSQL by separating admin and app roles: SQL scripts for schema hardening and automated permissions, for Cloud SQL, AWS RDS, or self-hosted.</description><pubDate>Tue, 16 Dec 2025 22:24:11 GMT</pubDate></item><item><title>Stop Using key.json: How to Configure GCP Service Account Impersonation</title><link>https://jamongx.com/gcp-service-account-impersonation-guide/</link><guid isPermaLink="true">https://jamongx.com/gcp-service-account-impersonation-guide/</guid><description>GCP Service Account Impersonation lets your MFA-authenticated account borrow a service account&apos;s permissions with short-lived tokens instead of risky key.json files. Here&apos;s the 3-step setup.</description><pubDate>Sun, 07 Dec 2025 06:31:34 GMT</pubDate></item><item><title>Stop Claude Code from Killing Your Ubuntu Session — The Swap Setup I Wish I Had Sooner</title><link>https://jamongx.com/ubuntu-oom-killer-swap-swappiness-fix/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-oom-killer-swap-swappiness-fix/</guid><description>Ubuntu desktop crashing under heavy dev workloads? You&apos;re likely hitting the OOM killer. The exact swap and swappiness setup that stops the crashes.</description><pubDate>Sat, 06 Dec 2025 01:56:08 GMT</pubDate></item><item><title>ripgrep (rg): The Fastest Way to Search Your Code</title><link>https://jamongx.com/ripgrep-vs-grep-fastest-search-tool/</link><guid isPermaLink="true">https://jamongx.com/ripgrep-vs-grep-fastest-search-tool/</guid><description>Still using grep? Meet ripgrep (rg), the ultra-fast Rust search tool that respects .gitignore by default and searches your codebase in seconds.</description><pubDate>Fri, 05 Dec 2025 20:45:58 GMT</pubDate></item><item><title>Ubuntu Clamshell Mode: Use a Closed Laptop With an External Monitor</title><link>https://jamongx.com/how-to-keep-ubuntu-laptop-running-with-the-lid-closed-clamshell-mode/</link><guid isPermaLink="true">https://jamongx.com/how-to-keep-ubuntu-laptop-running-with-the-lid-closed-clamshell-mode/</guid><description>Run an Ubuntu laptop in clamshell mode — lid closed on an external monitor — while it still sleeps normally in your bag. The conditional HandleLidSwitchDocked fix, plus the display and input setup.</description><pubDate>Fri, 05 Dec 2025 01:51:43 GMT</pubDate></item><item><title>How to Install and Configure OpenSSH Server on Ubuntu</title><link>https://jamongx.com/ubuntu-install-openssh-server/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-install-openssh-server/</guid><description>Install and configure OpenSSH Server on Ubuntu: the install steps, UFW firewall setup, and connection testing for Ubuntu 22.04, 24.04, and newer.</description><pubDate>Fri, 05 Dec 2025 01:34:35 GMT</pubDate></item><item><title>How to Find and Kill Processes Occupying a Port (lsof, netstat, ss)</title><link>https://jamongx.com/linux-find-kill-process-port/</link><guid isPermaLink="true">https://jamongx.com/linux-find-kill-process-port/</guid><description>Fix &quot;Address already in use&quot; errors on Ubuntu/Linux. Quickly identify port-hogging processes with ss, lsof, or netstat and terminate them safely.</description><pubDate>Thu, 04 Dec 2025 20:54:19 GMT</pubDate></item><item><title>Understanding TCP: Architecture, Segment Structure, and Handshakes</title><link>https://jamongx.com/understanding-tcp-protocol-structure-and-handshake/</link><guid isPermaLink="true">https://jamongx.com/understanding-tcp-protocol-structure-and-handshake/</guid><description>TCP explained: how the segment header, the 3-way handshake, and flow control build a reliable connection over an unreliable network.</description><pubDate>Thu, 04 Dec 2025 11:28:12 GMT</pubDate></item><item><title>How to Disable Wi-Fi Power Saving on Ubuntu to Prevent SSH Lag</title><link>https://jamongx.com/disable-wifi-power-management-ubuntu-ssh/</link><guid isPermaLink="true">https://jamongx.com/disable-wifi-power-management-ubuntu-ssh/</guid><description>SSH lag on Ubuntu? Your Wi-Fi card may be entering sleep mode. Disable Wi-Fi power management to keep the connection responsive — quick step-by-step.</description><pubDate>Thu, 04 Dec 2025 11:17:47 GMT</pubDate></item><item><title>How to Set a Static WiFi IP on Ubuntu (Without Router Access)</title><link>https://jamongx.com/set-static-wifi-ip-ubuntu-laptop/</link><guid isPermaLink="true">https://jamongx.com/set-static-wifi-ip-ubuntu-laptop/</guid><description>Need a static WiFi IP on Ubuntu without router access? Learn how to use nmcli for laptops (GUI-safe) or Netplan for servers to set a fixed IP.</description><pubDate>Wed, 03 Dec 2025 22:48:28 GMT</pubDate></item><item><title>33. Search in Rotated Sorted Array</title><link>https://jamongx.com/33-search-in-rotated-sorted-array/</link><guid isPermaLink="true">https://jamongx.com/33-search-in-rotated-sorted-array/</guid><description>Search in Rotated Sorted Array (LeetCode 33): a modified O(log n) binary search that finds which half is sorted, with an interactive step visual.</description><pubDate>Wed, 03 Dec 2025 18:33:43 GMT</pubDate></item><item><title>How to Open a Specific Port on Ubuntu with UFW</title><link>https://jamongx.com/ubuntu-open-port-ufw-guide/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-open-port-ufw-guide/</guid><description>Safely open a specific port on Ubuntu with UFW: check status, enable the firewall without losing SSH access, and verify your rules — step by step.</description><pubDate>Wed, 03 Dec 2025 04:06:43 GMT</pubDate></item><item><title>How to Back Up and Restore SecureCRT Settings on Ubuntu</title><link>https://jamongx.com/securecrt-backup-restore-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/securecrt-backup-restore-ubuntu/</guid><description>Back up and restore your full SecureCRT configuration on Ubuntu with simple terminal commands so you never lose saved sessions when migrating or reinstalling.</description><pubDate>Wed, 03 Dec 2025 03:29:50 GMT</pubDate></item><item><title>Divide and Conquer (D&amp;C): Beyond Merge Sort</title><link>https://jamongx.com/divide-and-conquer-interview-patterns/</link><guid isPermaLink="true">https://jamongx.com/divide-and-conquer-interview-patterns/</guid><description>Divide and Conquer is more than Merge Sort: the 3-step design paradigm, how it differs from plain recursion, and the interview patterns that use it.</description><pubDate>Wed, 03 Dec 2025 00:02:45 GMT</pubDate></item><item><title>[Synology] How to Enable SSH and Log in as Root</title><link>https://jamongx.com/synology-how-to-enable-ssh-and-log-in-as-root/</link><guid isPermaLink="true">https://jamongx.com/synology-how-to-enable-ssh-and-log-in-as-root/</guid><description>Enable SSH on Synology NAS and log in as root using &apos;sudo -i&apos;. A quick guide for advanced DSM administration and secure terminal access.</description><pubDate>Tue, 02 Dec 2025 23:04:23 GMT</pubDate></item><item><title>[SecureCRT] How to Set Up a Serial Console Connection</title><link>https://jamongx.com/securecrt-how-to-set-up-a-serial-console-connection/</link><guid isPermaLink="true">https://jamongx.com/securecrt-how-to-set-up-a-serial-console-connection/</guid><description>Set up a serial console connection in SecureCRT to HP servers (DL380/DL580, HP-UX) — the exact baud rate, data bits, parity, and flow-control settings.</description><pubDate>Tue, 02 Dec 2025 22:53:45 GMT</pubDate></item><item><title>Why is Binary Search O(log n)?</title><link>https://jamongx.com/why-is-binary-search-o-log-n/</link><guid isPermaLink="true">https://jamongx.com/why-is-binary-search-o-log-n/</guid><description>Binary Search runs in O(log n) because it halves the search space every step. Here&apos;s the intuition, the math proof, and how it compares to linear search.</description><pubDate>Tue, 02 Dec 2025 22:36:44 GMT</pubDate></item><item><title>153. Find Minimum in Rotated Sorted Array</title><link>https://jamongx.com/153-find-minimum-in-rotated-sorted-array/</link><guid isPermaLink="true">https://jamongx.com/153-find-minimum-in-rotated-sorted-array/</guid><description>Find Minimum in Rotated Sorted Array (LeetCode 153): the O(log n) binary search that locates the rotation pivot, explained step by step with examples.</description><pubDate>Tue, 02 Dec 2025 16:39:28 GMT</pubDate></item><item><title>Adding a gRPC Endpoint to order-service: A Practical Guide</title><link>https://jamongx.com/adding-grpc-endpoint-to-order-service/</link><guid isPermaLink="true">https://jamongx.com/adding-grpc-endpoint-to-order-service/</guid><description>Add a gRPC endpoint to a Spring Boot order-service: define .proto files, generate stubs, implement the RPC logic, and expose a new CreateOrder API.</description><pubDate>Tue, 02 Dec 2025 05:00:07 GMT</pubDate></item><item><title>Dynamic Programming Explained: The Missing Link with Divide &amp; Conquer</title><link>https://jamongx.com/dynamic-programming-explained-divide-and-conquer-plus-memory/</link><guid isPermaLink="true">https://jamongx.com/dynamic-programming-explained-divide-and-conquer-plus-memory/</guid><description>Dynamic Programming demystified: at its core, DP is just Divide and Conquer plus memory. See the connection and it gets far easier to explain in interviews.</description><pubDate>Mon, 01 Dec 2025 16:31:23 GMT</pubDate></item><item><title>152. Maximum Product Subarray</title><link>https://jamongx.com/152-maximum-product-subarray/</link><guid isPermaLink="true">https://jamongx.com/152-maximum-product-subarray/</guid><description>Maximum Product Subarray (LeetCode 152): why you track max and min together to handle negatives and zeros, and the O(n) dynamic-programming solution.</description><pubDate>Mon, 01 Dec 2025 16:10:23 GMT</pubDate></item><item><title>Download High-Quality MP3s from YouTube on Ubuntu with yt-dlp</title><link>https://jamongx.com/download-youtube-mp3-ubuntu-yt-dlp/</link><guid isPermaLink="true">https://jamongx.com/download-youtube-mp3-ubuntu-yt-dlp/</guid><description>Easily download YouTube videos as high-quality MP3s on Ubuntu. Use yt-dlp and FFmpeg to convert audio and embed thumbnails with simple commands.</description><pubDate>Mon, 01 Dec 2025 06:40:44 GMT</pubDate></item><item><title>Batch Trim MP3 Files on Ubuntu using FFmpeg</title><link>https://jamongx.com/batch-trim-mp3-files-on-ubuntu-using-ffmpeg/</link><guid isPermaLink="true">https://jamongx.com/batch-trim-mp3-files-on-ubuntu-using-ffmpeg/</guid><description>Batch trim MP3s on Ubuntu with FFmpeg. Use this simple shell script to cut audio files instantly without re-encoding or quality loss.</description><pubDate>Mon, 01 Dec 2025 06:23:55 GMT</pubDate></item><item><title>How to Merge Two Mono Audio Files into Stereo with FFmpeg on Ubuntu</title><link>https://jamongx.com/merge-mono-audio-to-stereo-ffmpeg-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/merge-mono-audio-to-stereo-ffmpeg-ubuntu/</guid><description>Easily merge two mono audio files into a single stereo track using FFmpeg on Ubuntu. Perfect for syncing dual-mic interviews and podcasts.</description><pubDate>Mon, 01 Dec 2025 06:16:21 GMT</pubDate></item><item><title>Batch Convert Video to MP3 on Ubuntu with FFmpeg</title><link>https://jamongx.com/batch-convert-video-to-mp3-ubuntu-ffmpeg/</link><guid isPermaLink="true">https://jamongx.com/batch-convert-video-to-mp3-ubuntu-ffmpeg/</guid><description>Batch convert video (MKV, MP4, AVI) to MP3 on Ubuntu with a simple FFmpeg shell script — no manual re-encoding, run it once on a whole folder.</description><pubDate>Mon, 01 Dec 2025 06:09:01 GMT</pubDate></item><item><title>How to Convert WAV (MP4) to MP3 Using FFmpeg</title><link>https://jamongx.com/how-to-convert-wav-mp4-to-mp3-using-ffmpeg/</link><guid isPermaLink="true">https://jamongx.com/how-to-convert-wav-mp4-to-mp3-using-ffmpeg/</guid><description>Convert WAV or MP4 audio to MP3 with FFmpeg — the exact command-line options for input, bitrate, and quality, with examples you can copy and run.</description><pubDate>Mon, 01 Dec 2025 06:01:27 GMT</pubDate></item><item><title>Troubleshooting SecureCRT &quot;Key Exchange Failed&quot; with Ubuntu 22.04 (OpenSSH)</title><link>https://jamongx.com/securecrt-key-exchange-failed-ubuntu-22-04/</link><guid isPermaLink="true">https://jamongx.com/securecrt-key-exchange-failed-ubuntu-22-04/</guid><description>Fix the SecureCRT &quot;Key exchange failed&quot; error on Ubuntu 22.04. Learn how to enable compatible algorithms like curve25519-sha256 for a successful connection.</description><pubDate>Mon, 01 Dec 2025 05:53:52 GMT</pubDate></item><item><title>Pydantic vs dataclass - When to Use Which?</title><link>https://jamongx.com/pydantic-vs-dataclass-when-to-use-which/</link><guid isPermaLink="true">https://jamongx.com/pydantic-vs-dataclass-when-to-use-which/</guid><description>Pydantic vs dataclass: use Pydantic to validate incoming data, dataclasses for internal structures. Real examples and where each one breaks.</description><pubDate>Sun, 30 Nov 2025 02:44:51 GMT</pubDate></item><item><title>The OSI 7 Layers Model: Protocols, PDUs, and Devices</title><link>https://jamongx.com/osi-7-layers-protocols-pdu-devices-explained/</link><guid isPermaLink="true">https://jamongx.com/osi-7-layers-protocols-pdu-devices-explained/</guid><description>The OSI 7-layer model reference: each layer&apos;s function, protocols (HTTP, TCP/IP), PDUs, and devices in one table — great for CCNA and CompTIA prep.</description><pubDate>Sat, 29 Nov 2025 17:57:13 GMT</pubDate></item><item><title>How to Resolve ACPI Errors When Installing Ubuntu 22.04 on ASUS GA502GU-PB73</title><link>https://jamongx.com/fix-acpi-bios-error-ubuntu-asus-ga502gu/</link><guid isPermaLink="true">https://jamongx.com/fix-acpi-bios-error-ubuntu-asus-ga502gu/</guid><description>Fix the ACPI BIOS Error when installing Ubuntu 22.04 on an ASUS GA502GU: bypass the install freeze with GRUB parameters and repair the bootloader after.</description><pubDate>Sat, 29 Nov 2025 17:50:34 GMT</pubDate></item><item><title>53. Maximum Subarray</title><link>https://jamongx.com/53-maximum-subarray/</link><guid isPermaLink="true">https://jamongx.com/53-maximum-subarray/</guid><description>Maximum Subarray (LeetCode 53): Kadane&apos;s algorithm explained as one decision — extend or restart — plus the O(n) to O(1) space drop and a full worked trace.</description><pubDate>Sat, 29 Nov 2025 17:23:03 GMT</pubDate></item><item><title>Modern Java Exception Handling: Best Practices and Logging Strategies</title><link>https://jamongx.com/java-production-exception-logging-strategy/</link><guid isPermaLink="true">https://jamongx.com/java-production-exception-logging-strategy/</guid><description>Exception logging in Java done right: catch errors in the correct layer, log them once, and keep clear context — practical patterns for real systems.</description><pubDate>Sat, 29 Nov 2025 05:25:22 GMT</pubDate></item><item><title>Designing Effective Custom Exceptions in Java</title><link>https://jamongx.com/designing-effective-custom-exceptions-in-java/</link><guid isPermaLink="true">https://jamongx.com/designing-effective-custom-exceptions-in-java/</guid><description>Design effective custom exceptions in Java: structure them well, separate business and system errors, and integrate cleanly with Spring Boot error handling.</description><pubDate>Sat, 29 Nov 2025 05:05:30 GMT</pubDate></item><item><title>How Real-World Java Developers Handle Exceptions:  Rethinking Checked vs. Unchecked</title><link>https://jamongx.com/how-real-world-java-developers-handle-exceptions-rethinking-checked-vs-unchecked/</link><guid isPermaLink="true">https://jamongx.com/how-real-world-java-developers-handle-exceptions-rethinking-checked-vs-unchecked/</guid><description>Why real Spring Boot developers prefer unchecked exceptions over the textbook rules — modern exception-handling patterns for clean, maintainable service code.</description><pubDate>Fri, 28 Nov 2025 22:25:24 GMT</pubDate></item><item><title>238. Product of Array Except Self</title><link>https://jamongx.com/238-product-of-array-except-self/</link><guid isPermaLink="true">https://jamongx.com/238-product-of-array-except-self/</guid><description>Product of Array Except Self (LeetCode 238): the prefix and suffix product trick that avoids division for an O(n) solution, with an interactive visual.</description><pubDate>Fri, 28 Nov 2025 18:59:02 GMT</pubDate></item><item><title>Understanding Prefix and Suffix Patterns</title><link>https://jamongx.com/understanding-prefix-and-suffix-patterns/</link><guid isPermaLink="true">https://jamongx.com/understanding-prefix-and-suffix-patterns/</guid><description>Prefix Sum and Suffix Product explained: what these algorithm terms really mean, why they beat naive recomputation, and where they show up in problems.</description><pubDate>Fri, 28 Nov 2025 18:11:10 GMT</pubDate></item><item><title>217. Contains Duplicate</title><link>https://jamongx.com/217-contains-duplicate/</link><guid isPermaLink="true">https://jamongx.com/217-contains-duplicate/</guid><description>Contains Duplicate (LeetCode 217): compare the brute-force, sorting, and hash-set approaches — and why &apos;just use a hash set&apos; isn&apos;t always the right reflex.</description><pubDate>Thu, 27 Nov 2025 19:27:52 GMT</pubDate></item><item><title>Understanding Java Exception Hierarchy</title><link>https://jamongx.com/understanding-java-exception-hierarchy/</link><guid isPermaLink="true">https://jamongx.com/understanding-java-exception-hierarchy/</guid><description>Understand Java&apos;s Throwable hierarchy — Error vs Exception, checked vs unchecked, and RuntimeException — to write safer error handling in production apps.</description><pubDate>Thu, 27 Nov 2025 17:28:17 GMT</pubDate></item><item><title>Understanding One-Pass Algorithms and Greedy Strategies</title><link>https://jamongx.com/one-pass-and-greedy-algorithms/</link><guid isPermaLink="true">https://jamongx.com/one-pass-and-greedy-algorithms/</guid><description>One-pass and greedy algorithms: how a single scan and greedy choices process large data with minimal memory — the core ideas and when they&apos;re optimal.</description><pubDate>Thu, 27 Nov 2025 05:32:13 GMT</pubDate></item><item><title>121. Best Time to Buy and Sell Stock</title><link>https://jamongx.com/121-best-time-to-buy-and-sell-stock/</link><guid isPermaLink="true">https://jamongx.com/121-best-time-to-buy-and-sell-stock/</guid><description>Best Time to Buy and Sell Stock (LeetCode 121): the single-pass O(n) solution that tracks the lowest price so far, with an interactive step-by-step visual.</description><pubDate>Wed, 26 Nov 2025 15:40:02 GMT</pubDate></item><item><title>Vim Setup with vim-plug on Ubuntu</title><link>https://jamongx.com/setup-vim-with-vim-plug-on-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/setup-vim-with-vim-plug-on-ubuntu/</guid><description>Set up Vim with vim-plug on Ubuntu step by step: create the required directories, configure your .vimrc for a better coding setup, and install plugins.</description><pubDate>Wed, 26 Nov 2025 07:31:22 GMT</pubDate></item><item><title>How to Install SecureCRT on Ubuntu 24.04</title><link>https://jamongx.com/how-to-install-securecrt-on-ubuntu-24-04/</link><guid isPermaLink="true">https://jamongx.com/how-to-install-securecrt-on-ubuntu-24-04/</guid><description>Install SecureCRT on Ubuntu 24.04 LTS and fix the libxcb-cursor0 dependency error — the .deb steps plus the one command that resolves it.</description><pubDate>Wed, 26 Nov 2025 03:51:01 GMT</pubDate></item><item><title>A Guide to Automating Connections with SecureCRT Logon Scripts</title><link>https://jamongx.com/automate-securecrt-logon-actions-python/</link><guid isPermaLink="true">https://jamongx.com/automate-securecrt-logon-actions-python/</guid><description>Automate SecureCRT logins to a PostgreSQL database over SSH with a Python Logon Actions script — full setup, the script itself, and jump-server tips.</description><pubDate>Wed, 26 Nov 2025 03:38:17 GMT</pubDate></item><item><title>GCP Artifact Registry &amp; Poetry Integration Guide</title><link>https://jamongx.com/gcp-artifact-registry-poetry-guide/</link><guid isPermaLink="true">https://jamongx.com/gcp-artifact-registry-poetry-guide/</guid><description>Publish private Python libraries to GCP Artifact Registry with Poetry: the critical publish-vs-install URL distinction that avoids 404s, plus auth tokens.</description><pubDate>Tue, 25 Nov 2025 21:33:39 GMT</pubDate></item><item><title>Using Mathematical Formulas in Ghost: Adding LaTeX Support with KaTeX</title><link>https://jamongx.com/ghost-latex-katex-setup/</link><guid isPermaLink="true">https://jamongx.com/ghost-latex-katex-setup/</guid><description>Add math rendering to Ghost with KaTeX: lightweight LaTeX support via Code Injection to display algorithm complexity like O(n) and equations beautifully.</description><pubDate>Mon, 24 Nov 2025 08:05:17 GMT</pubDate></item><item><title>Turn an Ubuntu Laptop Into an Always-On Headless Server (Lid Closed)</title><link>https://jamongx.com/ubuntu-laptop-lid-closed-server-mode/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-laptop-lid-closed-server-mode/</guid><description>Run an old Ubuntu laptop as a 24/7 headless server with the lid closed: stop it sleeping from the lid, idle timeout, and every sleep target — the logind.conf fix plus systemctl mask (20.04/22.04/24.04).</description><pubDate>Sat, 22 Nov 2025 15:03:30 GMT</pubDate></item><item><title>Spring Boot: Fixing &quot;Parameter 0 of constructor required a bean of type String&quot;</title><link>https://jamongx.com/spring-boot-constructor-injection-value-error/</link><guid isPermaLink="true">https://jamongx.com/spring-boot-constructor-injection-value-error/</guid><description>Spring Boot &apos;required a bean of type String&apos; error? It often hits when switching to constructor injection. How to correctly inject @Value into constructors.</description><pubDate>Sat, 22 Nov 2025 14:48:51 GMT</pubDate></item><item><title>How to Update ASUS BIOS Without a Battery (The F11 Trick)</title><link>https://jamongx.com/asus-bios-update-without-battery-f11-trick/</link><guid isPermaLink="true">https://jamongx.com/asus-bios-update-without-battery-f11-trick/</guid><description>Blocked from updating BIOS due to low battery? Here is a workaround to bypass the restriction on ASUS laptops using the F11 trick.</description><pubDate>Sat, 22 Nov 2025 14:35:39 GMT</pubDate></item><item><title>Rate Limiting vs. Throttling: What’s the Difference?</title><link>https://jamongx.com/rate-limiting-vs-throttling/</link><guid isPermaLink="true">https://jamongx.com/rate-limiting-vs-throttling/</guid><description>Rate Limiting vs Throttling: often used interchangeably but different — rate limiting controls user quotas, throttling protects system health. The key differences.</description><pubDate>Sat, 22 Nov 2025 14:27:26 GMT</pubDate></item><item><title>How to change Hostname on Amazon Linux Permanently</title><link>https://jamongx.com/how-to-change-hostname-on-amazon-linux-permanently/</link><guid isPermaLink="true">https://jamongx.com/how-to-change-hostname-on-amazon-linux-permanently/</guid><description>Change the hostname on Amazon Linux so it survives a reboot — edit /etc/sysconfig/network, /etc/hostname, and /etc/hosts so the change persists.</description><pubDate>Sat, 22 Nov 2025 14:03:58 GMT</pubDate></item><item><title>A Comprehensive Guide to Spring Boot &amp; Swagger (OpenAPI) Integration</title><link>https://jamongx.com/spring-boot-swagger-springdoc-jwt-security-setup/</link><guid isPermaLink="true">https://jamongx.com/spring-boot-swagger-springdoc-jwt-security-setup/</guid><description>Integrate Swagger (OpenAPI) into Spring Boot with springdoc: secure your endpoints with JWT auth and auto-generate the API docs.</description><pubDate>Sat, 22 Nov 2025 05:55:26 GMT</pubDate></item><item><title>Securely Connect to GCP Cloud SQL from Your Local Network Using Cloud SQL Auth Proxy</title><link>https://jamongx.com/securely-connect-to-gcp-cloud-sql-from-your-local-network-using-cloud-sql-auth-proxy/</link><guid isPermaLink="true">https://jamongx.com/securely-connect-to-gcp-cloud-sql-from-your-local-network-using-cloud-sql-auth-proxy/</guid><description>Connect to GCP Cloud SQL (PostgreSQL) from your local machine with Cloud SQL Auth Proxy — an IAM-authenticated TLS tunnel, no public IP or static passwords.</description><pubDate>Tue, 18 Nov 2025 08:11:25 GMT</pubDate></item><item><title>Reliability vs. Availability</title><link>https://jamongx.com/reliability-vs-availability/</link><guid isPermaLink="true">https://jamongx.com/reliability-vs-availability/</guid><description>Reliability vs availability: reliability is how long a system runs without failing; availability is how much of the time it&apos;s up. Examples and how to raise each.</description><pubDate>Mon, 17 Nov 2025 05:33:48 GMT</pubDate></item><item><title>Managing FastAPI Projects with Poetry, A Step-by-Step Guide</title><link>https://jamongx.com/managing-fastapi-projects-with-poetry/</link><guid isPermaLink="true">https://jamongx.com/managing-fastapi-projects-with-poetry/</guid><description>Manage FastAPI projects with Poetry: project setup, dependency locking, virtual environments, and testing — the full pyproject.toml workflow for teams.</description><pubDate>Mon, 17 Nov 2025 05:23:12 GMT</pubDate></item><item><title>Pydantic v1 → v2 Migration Guide for FastAPI Projects</title><link>https://jamongx.com/pydantic-v1-to-v2-migration-guide-fastapi/</link><guid isPermaLink="true">https://jamongx.com/pydantic-v1-to-v2-migration-guide-fastapi/</guid><description>Migrating Pydantic v1 to v2 in a FastAPI project? Here&apos;s the full v1→v2 checklist plus the validator, settings, and config changes that break.</description><pubDate>Mon, 17 Nov 2025 05:09:22 GMT</pubDate></item><item><title>Checked vs Unchecked Exceptions in Java</title><link>https://jamongx.com/checked-vs-unchecked-exceptions-in-java/</link><guid isPermaLink="true">https://jamongx.com/checked-vs-unchecked-exceptions-in-java/</guid><description>Checked exceptions are enforced by the Java compiler; unchecked ones aren&apos;t — here&apos;s the difference, with the class hierarchy, code examples, and when each applies.</description><pubDate>Fri, 14 Nov 2025 20:16:41 GMT</pubDate></item><item><title>Setting Up a Modern Vim 9.x IDE on Ubuntu or Linux</title><link>https://jamongx.com/setting-up-modern-vim-9x-ide-on-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/setting-up-modern-vim-9x-ide-on-ubuntu/</guid><description>Install the latest Vim 9.x on Ubuntu/Linux via PPA and turn the terminal into an IDE: plugin manager setup, a ready .vimrc, and essential plugins.</description><pubDate>Fri, 14 Nov 2025 20:07:46 GMT</pubDate></item><item><title>How to Set an SSH Login Banner on Ubuntu 24.04</title><link>https://jamongx.com/how-to-set-an-ssh-login-banner-on-ubuntu-24-04/</link><guid isPermaLink="true">https://jamongx.com/how-to-set-an-ssh-login-banner-on-ubuntu-24-04/</guid><description>Set an SSH login banner on Ubuntu 24.04 to warn unauthorized users and hide OS version info — configure /etc/issue.net and sshd_config the right way.</description><pubDate>Thu, 13 Nov 2025 07:32:20 GMT</pubDate></item><item><title>How to get rid of ^M from a text file on Linux of Unix</title><link>https://jamongx.com/how-to-get-rid-of-m-from-a-text-file-on-linux-of-unix/</link><guid isPermaLink="true">https://jamongx.com/how-to-get-rid-of-m-from-a-text-file-on-linux-of-unix/</guid><description>Remove ^M (carriage return) characters from text files on Linux/Unix after transfer from Windows — fixes with dos2unix, sed, tr, and Vim, how to verify, and why they appear.</description><pubDate>Thu, 13 Nov 2025 07:29:01 GMT</pubDate></item><item><title>Changing the Default Terminal to Terminator on Ubuntu</title><link>https://jamongx.com/changing-the-default-terminal-to-terminator-on-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/changing-the-default-terminal-to-terminator-on-ubuntu/</guid><description>Set Terminator as the default terminal on Ubuntu. This step-by-step developer guide covers installation, setup, and integration with VS Code.</description><pubDate>Wed, 12 Nov 2025 14:29:51 GMT</pubDate></item><item><title>set guifont Syntax for gVim on Windows vs. Ubuntu</title><link>https://jamongx.com/set-guifont-syntax-for-gvim-on-windows-vs-ubuntu/</link><guid isPermaLink="true">https://jamongx.com/set-guifont-syntax-for-gvim-on-windows-vs-ubuntu/</guid><description>Does your set guifont in .vimrc work on Windows but break on Ubuntu? Learn the critical syntax difference (colons vs. backslashes) for gVim fonts.</description><pubDate>Wed, 12 Nov 2025 14:24:01 GMT</pubDate></item><item><title>WireGuard Client Setup and Disconnection on Ubuntu</title><link>https://jamongx.com/ubuntu-wireguard-client-setup-connect-disconnect/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-wireguard-client-setup-connect-disconnect/</guid><description>Install and manage a WireGuard VPN client on Ubuntu: set it up, connect with wg-quick up, verify the status, and safely disconnect.</description><pubDate>Wed, 12 Nov 2025 14:06:10 GMT</pubDate></item><item><title>Batch Rename Files Using &apos;rename&apos; and Regex</title><link>https://jamongx.com/linux-bulk-rename-regex/</link><guid isPermaLink="true">https://jamongx.com/linux-bulk-rename-regex/</guid><description>Bulk-rename files in Linux with the rename command and Perl regex: normalize whitespace, strip unwanted metadata, and batch-rename in one quick command.</description><pubDate>Wed, 12 Nov 2025 14:03:16 GMT</pubDate></item><item><title>1. Two Sum</title><link>https://jamongx.com/two-sum/</link><guid isPermaLink="true">https://jamongx.com/two-sum/</guid><description>Two Sum (LeetCode 1) two ways: the brute-force O(n^2) scan vs the hash-map O(n) approach — with the intuition, edge cases, and the space-time trade-off.</description><pubDate>Tue, 11 Nov 2025 23:01:54 GMT</pubDate></item><item><title>Stop Fighting Your IME in Vim - Auto-Switch with `vim-im-select`</title><link>https://jamongx.com/vim-ibus-ime-auto-switch-fix/</link><guid isPermaLink="true">https://jamongx.com/vim-ibus-ime-auto-switch-fix/</guid><description>Fix Vim keeping your IME active in Normal mode (stray Korean/Japanese on j or dd): set up vim-im-select with ibus for automatic, seamless IME switching.</description><pubDate>Tue, 11 Nov 2025 05:39:56 GMT</pubDate></item><item><title>Fix Bluetooth Audio Stutter in Chrome on Ubuntu 24  (The A2DP Lock)</title><link>https://jamongx.com/ubuntu-24-chrome-bluetooth-a2dp-fix/</link><guid isPermaLink="true">https://jamongx.com/ubuntu-24-chrome-bluetooth-a2dp-fix/</guid><description>Chrome breaking Bluetooth audio on Ubuntu 24? Permanently fix the stutter by locking your device to the high-fidelity A2DP profile with pavucontrol.</description><pubDate>Mon, 10 Nov 2025 05:45:59 GMT</pubDate></item><item><title>Mastering React Query (TanStack Query) - A Complete Guide to useQuery and useMutation</title><link>https://jamongx.com/mastering-react-query-tanstack-query-a-complete-guide-to-usequery-and-usemutation/</link><guid isPermaLink="true">https://jamongx.com/mastering-react-query-tanstack-query-a-complete-guide-to-usequery-and-usemutation/</guid><description>React Query (TanStack Query) manages server state: smart query-key design, useQuery caching, and the 3-step optimistic update flow.</description><pubDate>Wed, 05 Nov 2025 05:39:09 GMT</pubDate></item></channel></rss>