<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>the KodeLab — English</title><description>Hands-on notes on AI, open-source LLMs, developer tools, and the occasional weekend project.</description><link>https://thekodelab.com/</link><language>en-us</language><item><title>Nginx Rate Limiting Tutorial: limit_req, burst, and nodelay Explained</title><link>https://thekodelab.com/en/posts/nginx-rate-limit-tutorial/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/nginx-rate-limit-tutorial/</guid><description>Bots hammering your API, brute-force attempts on /login, runaway clients eating connections — Nginx&apos;s built-in limit_req module stops abusive traffic in just a few lines of config. This guide starts from the leaky bucket algorithm, breaks down every parameter of limit_req_zone and limit_req with diagrams, compares the three common modes, and ends with battle-tested examples plus monitoring tips.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Claude Design: Anthropic&apos;s Natural-Language Pitch Deck and Mockup Generator</title><link>https://thekodelab.com/en/posts/claude-design-introduction/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/claude-design-introduction/</guid><description>Anthropic launched Claude Design on April 17, 2026 — an experimental product powered by Claude Opus 4.7 that turns natural-language prompts into prototypes, slides, pitch decks, mockups, and one-pagers. It exports to Canva, PDF, PPTX, standalone HTML, and a Claude Code handoff bundle, and can ingest your codebase or design files to auto-build a reusable design system. This post covers the core features, subscription tiers, positioning against Figma, Canva, Google Stitch, v0, and Lovable, why Figma&apos;s stock dropped 7% on launch day, and the situations where Claude Design is not the right tool.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate></item><item><title>macOS GUI Terminal vs. SSH Sessions: Why launchctl managername Matters</title><link>https://thekodelab.com/en/posts/macos-gui-terminal-vs-ssh-session/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/macos-gui-terminal-vs-ssh-session/</guid><description>Open Terminal sitting at your Mac, then SSH into the same machine as the same user — both spawn what looks like the same zsh, but they behave very differently: keychain unlock state, environment variables, TCC permissions, pbcopy, TouchID, osascript notifications all diverge. Every one of those differences traces back to a single thing — whether launchctl managername reports Aqua or Background. This post walks through the gotchas you actually hit, the launchd domain machinery underneath, and how to make SSH sessions behave more like GUI ones when you&apos;re treating a Mac as a server.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Claude Code /passes: Gift 7-Day Claude Pro Trials and Earn Referral Credits</title><link>https://thekodelab.com/en/posts/claude-code-passes/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/claude-code-passes/</guid><description>Claude Code added a /passes command in December 2025 that lets Claude Pro Max subscribers send three 7-day Claude Pro trial passes to friends. Each invitee who converts to a paid Pro plan earns the sender a $10 Claude credit plus extra usage. This post walks through how /passes works, the conditions for both sender and recipient, how it differs from claude.ai gift subscriptions, and a few details Anthropic hasn&apos;t fully documented.</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Claude Opus 4.7: Coding Upgrades, Pricing, Context, and the Mythos Backstory</title><link>https://thekodelab.com/en/posts/claude-opus-4-7/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/claude-opus-4-7/</guid><description>Anthropic shipped Claude Opus 4.7 on April 16, 2026 as its new flagship. This piece walks through the coding and vision upgrades (CursorBench jumps from 58% to 70%, Rakuten SWE-Bench solves 3× more), how 4.7 compares to 4.6 on price, context, and features, and the unusual decision Anthropic openly disclosed: Opus 4.7 is a deliberately capability-reduced sibling of the still-gated Mythos Preview model — the reasoning behind that is worth a closer look.</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Java LTS Evolution: From Java 8 to Java 25 — A Language Upgrade Guide</title><link>https://thekodelab.com/en/posts/java-lts-evolution/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/java-lts-evolution/</guid><description>From Java 8&apos;s lambdas and streams to Java 25&apos;s virtual threads, stream gatherers, and compact object headers — a tour of the five LTS releases (8, 11, 17, 21, 25), each OpenJDK distribution&apos;s free-support deadline, and a quick look at what the just-GA non-LTS Java 26 brings. A reference map for anyone still on Java 8 / 11 thinking about upgrading.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Claude Extra Usage Credit: How to Claim Free Credits on Pro, Max, and Team Plans</title><link>https://thekodelab.com/en/posts/claude-extra-usage-credit/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/claude-extra-usage-credit/</guid><description>Anthropic is giving Claude Pro, Max, and Team subscribers a limited-time Extra Usage Credit in April 2026 — up to $200 in free credit, redeemable across Claude, Claude Code, and Claude Cowork. This guide covers how much each plan gets, who qualifies, step-by-step instructions to enable Extra Usage and click Claim, plus the 90-day expiration and other fine print you need to know before the April 17 deadline.</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate></item><item><title>macOS SSH and Claude Code &quot;Logged Out&quot;: The Keychain Unlock Fix</title><link>https://thekodelab.com/en/posts/macos-ssh-keychain-unlock/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/macos-ssh-keychain-unlock/</guid><description>SSH into a Mac, fire up Claude Code, and get prompted to /login — even though you&apos;re already signed in at the GUI Terminal and tmux sessions sometimes hit the same thing. It&apos;s not a Claude Code bug; it&apos;s the macOS login keychain not being unlocked in non-GUI sessions. One security unlock-keychain command fixes it. This post covers why SSH triggers it, why the command works, and other tools (gh, git, docker, codesign…) that hit the same wall.</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Playwright CLI Tutorial: Browser Automation with Claude Code</title><link>https://thekodelab.com/en/posts/playwright-cli-tutorial/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/playwright-cli-tutorial/</guid><description>Playwright is today&apos;s leading cross-browser automation framework, and playwright-cli turns its most common features into one-line commands — no project scaffolding, no test suite, just screenshots, recordings, and post-login scraping on demand. This article covers how Playwright compares to Puppeteer, why playwright-cli exists, how it differs from Playwright MCP, and walks through four practical workflows pairing it with Claude Code.</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Evolution of Java&apos;s switch: From Java 7 to Java 26</title><link>https://thekodelab.com/en/posts/evolution-of-the-java-switch-keyword/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/evolution-of-the-java-switch-keyword/</guid><description>A tour of how Java&apos;s switch keyword has evolved — String cases in Java 7, switch expressions and the yield keyword in Java 14, pattern matching shipped as a standard feature in Java 21 with null cases, when guards, and exhaustiveness for sealed types, and the still-previewing Primitive Types in Patterns up through Java 26.</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Gemma 4 E2B vs E4B Benchmark: The Hidden Thinking Mode That Makes the Smaller Model 20× Slower</title><link>https://thekodelab.com/en/posts/gemma4-e2b-vs-e4b-benchmark/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/gemma4-e2b-vs-e4b-benchmark/</guid><description>A hands-on RTX 3070 benchmark of Gemma 4 E2B and E4B: TPS, TTFT, quality on hard and practical tasks, plus a deep dive that traces E2B&apos;s mysterious slowdown to an &lt;|think|&gt; token that Ollama&apos;s gemma4 renderer injects by default — contradicting the docs. Ends with best-practice presets and a note on running Claude Code locally.</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Google Gemma 4: Open-Source, Multimodal, Apache 2.0 — and 1.5GB to Run on a Phone</title><link>https://thekodelab.com/en/posts/google-gemma-4/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/google-gemma-4/</guid><description>Google DeepMind&apos;s Gemma 4 is an open-weight model family under Apache 2.0, with four sizes (31B Dense, 26B MoE, E4B, E2B), native multimodal input, and edge deployment down to 1.5GB of memory. A hands-on tour of the benchmarks, the new Agent Skills story, and every way to run it — from your phone to a workstation.</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate></item><item><title>nano Tutorial: Editing Files in the Terminal on Linux and macOS</title><link>https://thekodelab.com/en/posts/nano-tutorial/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/nano-tutorial/</guid><description>nano is the beginner-friendly terminal text editor — no modes to learn, shortcuts shown at the bottom of the screen, and installed by default on most Linux distributions. This tutorial walks through nano from installation on Linux and macOS, through file operations, cursor movement, cut/copy/paste, undo/redo, and search and replace, to syntax highlighting and line numbers via .nanorc. Includes a full keyboard shortcut reference and workflow examples for editing system configs, setting nano as your default editor, and using it inside tmux.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Which OpenJDK Distribution Should You Use? Temurin, Corretto, Zulu, and More</title><link>https://thekodelab.com/en/posts/how-many-openjdk-distribution/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/how-many-openjdk-distribution/</guid><description>Downloading Java in 2026 is not as simple as it used to be. OracleJDK, OpenJDK, Eclipse Temurin, Amazon Corretto, Azul Zulu, Microsoft Build of OpenJDK, IBM Semeru, Oracle GraalVM, BellSoft Liberica — same &quot;JDK&quot; label, different licenses, maintainers, and platform support. This article walks through Oracle&apos;s licensing history from Java 8 through Java 25 (including the 2023 per-employee pricing change) and then compares the nine mainstream distributions so you can pick one that fits your situation.</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Ollama Tutorial: Run Local LLMs on Windows, Linux, and macOS</title><link>https://thekodelab.com/en/posts/ollama-tutorial/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/ollama-tutorial/</guid><description>A beginner-friendly walkthrough of Ollama — the easiest way to run open-source large language models on your own machine. Covers installation on Windows, Linux, and macOS, running your first model, choosing a model size for your hardware, and calling Ollama from Python or any REST client.</description><pubDate>Fri, 12 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Homebrew on macOS: A Beginner&apos;s Guide to Package Management</title><link>https://thekodelab.com/en/posts/macos-homebrew-tutorial/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/macos-homebrew-tutorial/</guid><description>Homebrew is the most popular package manager for macOS. Install, update, and remove software with a single command — no DMG downloads or manual configuration. This beginner&apos;s tutorial walks through installation, Formulae, Casks, upgrades, health checks, and running packages as system services.</description><pubDate>Thu, 11 Sep 2025 00:00:00 GMT</pubDate></item><item><title>Arrays.asList() vs List.of() in Java: Why They Behave Differently</title><link>https://thekodelab.com/en/posts/the-difference-between-java-arrays-aslist-and-list-of/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/the-difference-between-java-arrays-aslist-and-list-of/</guid><description>Java gives you two convenient ways to build a list in one line — Arrays.asList() (since Java 1.2) and List.of() (since Java 9). They look interchangeable, but they return different classes with very different mutability rules: one lets you overwrite elements, the other throws UnsupportedOperationException on any modification. This post walks through the differences, the internals that cause them, and when to reach for each.</description><pubDate>Sat, 27 May 2023 00:00:00 GMT</pubDate></item><item><title>Content-Disposition with Unicode Filenames in Java: Fixing the IllegalArgumentException</title><link>https://thekodelab.com/en/posts/http-header-content-disposition-unicode-filename-fix/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/http-header-content-disposition-unicode-filename-fix/</guid><description>If your download endpoint returns an IllegalArgumentException complaining about a code point outside the range 0–255, the culprit is ISO-8859-1. HTTP headers don&apos;t accept raw UTF-8, so Content-Disposition needs percent-encoded filenames and the filename* parameter. This post shows the minimal Java / Spring fix.</description><pubDate>Sun, 26 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Java 8 Date and Time API Tutorial: LocalDateTime, Instant, Duration with Examples</title><link>https://thekodelab.com/en/posts/java-8-date-time-api-introduction/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/java-8-date-time-api-introduction/</guid><description>Before Java 8, developers juggled Unix timestamps as longs or wrestled with java.util.Date. Java 8 introduced java.time — a cleaner, immutable, time-zone-aware API covering dates, times, timestamps, and durations. This tutorial walks through the core classes and shows practical examples for the operations you will actually use.</description><pubDate>Sun, 12 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Get File Extension and MIME Type in Java Without Third-Party Libraries</title><link>https://thekodelab.com/en/posts/java-file-extension-and-content-type/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/java-file-extension-and-content-type/</guid><description>You don&apos;t need Apache Commons or Guava to pull the extension off a filename or detect its MIME type. Java 7&apos;s NIO and Java 8&apos;s Optional / Stream API are enough — and the code you end up with is short, null-safe, and easy to paste into any project. This article walks through both recipes, then covers the Paths.get vs Path.of split and the cross-platform quirks of Files.probeContentType.</description><pubDate>Sat, 11 Mar 2023 00:00:00 GMT</pubDate></item><item><title>How to Fix &quot;failed to lazily initialize a collection&quot; in Spring Data JPA and Hibernate</title><link>https://thekodelab.com/en/posts/spring-hibernate-lazy-initialization-exception/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/spring-hibernate-lazy-initialization-exception/</guid><description>Hibernate&apos;s LazyInitializationException (&quot;failed to lazily initialize a collection&quot;) is a classic pitfall when reading foreign-key collections outside an active session. This article explains why it happens — fetch types, the session lifecycle, proxy traps — and walks through the recommended `@Transactional` fix plus the `FetchType.EAGER` alternative.</description><pubDate>Sat, 11 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Java 17 Sealed Classes: sealed, non-sealed, final, and permits Explained</title><link>https://thekodelab.com/en/posts/java-17-sealed-non-sealed-and-final-class/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/java-17-sealed-non-sealed-and-final-class/</guid><description>Java 17 promoted sealed classes and interfaces to a standard feature after debuting as a preview in Java 15. This post walks through how sealed, non-sealed, permits, and final fit together to give you precise control over who can extend a class or implement an interface — plus a step-by-step animal hierarchy example (Animal → Chordata → Bird → Parrot / Penguin) that demonstrates every state in action.</description><pubDate>Sat, 14 Jan 2023 00:00:00 GMT</pubDate></item><item><title>Java 16 record Tutorial: How record, Lombok, and POJO Compare</title><link>https://thekodelab.com/en/posts/java-16-record-and-lombok-comparison/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/java-16-record-and-lombok-comparison/</guid><description>Java 16 added a new kind of class called record, designed specifically for holding data. This post walks through record, compares it side-by-side with traditional POJOs and Lombok&apos;s code-generation annotations, and shows where each approach still has a place — including why record can&apos;t fully replace Lombok&apos;s Builder or mutable POJOs.</description><pubDate>Sat, 14 Jan 2023 00:00:00 GMT</pubDate></item><item><title>Linux top Command: Sort, Search, and Filter Processes Interactively</title><link>https://thekodelab.com/en/posts/linux-top-commnad/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/linux-top-commnad/</guid><description>The Linux top command shows a live view of running processes. This guide covers the interactive-mode shortcuts you need most: filtering by user, filtering by command, sorting by memory or CPU, and navigating the list.</description><pubDate>Fri, 13 Jan 2023 00:00:00 GMT</pubDate></item><item><title>What Is Linux Swap and How to Add It on Debian/Ubuntu</title><link>https://thekodelab.com/en/posts/what-is-linux-swap-and-how-to-add-it/</link><guid isPermaLink="true">https://thekodelab.com/en/posts/what-is-linux-swap-and-how-to-add-it/</guid><description>Swap is disk space Linux uses as overflow when RAM runs out. Learn the trade-offs of swap, then add a swapfile, persist it via fstab, and tune swappiness on Debian/Ubuntu.</description><pubDate>Sat, 11 Jun 2022 00:00:00 GMT</pubDate></item></channel></rss>