All posts
-
Gemma 4 E2B vs E4B Benchmark: The Hidden Thinking Mode That Makes the Smaller Model 20× Slower
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's mysterious slowdown to an <|think|> token that Ollama's gemma4 renderer injects by default — contradicting the docs. Ends with best-practice presets and a note on running Claude Code locally.
-
Google Gemma 4: Open-Source, Multimodal, Apache 2.0 — and 1.5GB to Run on a Phone
Google DeepMind'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.
-
nano Tutorial: Editing Files in the Terminal on Linux and macOS
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.
-
Which OpenJDK Distribution Should You Use? Temurin, Corretto, Zulu, and More
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 "JDK" label, different licenses, maintainers, and platform support. This article walks through Oracle'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.
-
Ollama Tutorial: Run Local LLMs on Windows, Linux, and macOS
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.
-
Homebrew on macOS: A Beginner's Guide to Package Management
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's tutorial walks through installation, Formulae, Casks, upgrades, health checks, and running packages as system services.
-
Arrays.asList() vs List.of() in Java: Why They Behave Differently
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.
-
Content-Disposition with Unicode Filenames in Java: Fixing the IllegalArgumentException
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't accept raw UTF-8, so Content-Disposition needs percent-encoded filenames and the filename* parameter. This post shows the minimal Java / Spring fix.
-
Java 8 Date and Time API Tutorial: LocalDateTime, Instant, Duration with Examples
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.
-
Get File Extension and MIME Type in Java Without Third-Party Libraries
You don't need Apache Commons or Guava to pull the extension off a filename or detect its MIME type. Java 7's NIO and Java 8'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.