// featured · performance

Five orders of magnitude on one chart

The same Mandelbrot set, computed seven ways on one laptop: SQLite recursive CTEs up to a Metal GPU shader. From the better part of four minutes down to a third of a millisecond. What a 100,000× spread actually teaches you about where speed lives.

// latest
#analysis

After word2vec: what Mikolov built next

word2vec won a NeurIPS Test of Time award and passed 40,000 citations, then quietly stopped being the thing anyone runs. The tool that actually inherited it, and the swerve its author took next, make a better story than the paper everyone quotes.
Jakub Jirák · 6 min
#analysis

DeepSeek in mid-2026: the open frontier that keeps undercutting everyone

V4 Pro just landed at 80.6% on SWE-bench Verified (the highest open-weight score on the board, ahead of Opus 4.8) at a fraction of Opus's price, MIT-licensed. The lineup, the price war, and what self-hosting it actually costs.
Jakub Jirák · 5 min
#cost

Gemini 3.6 Flash: the price cut that's actually a token cut

Google's new Flash is cheaper per token and higher on every published benchmark, but the number that changes agent-pipeline math is the 17% fewer output tokens it spends doing the same work.
Jakub Jirák · 5 min
#local

A local SQL assistant still needs guardrails

Data stays nearby, but generated queries can still be expensive, destructive, or misleading.
Jakub Jirák · 5 min
#local

Paged attention is memory management, not magic speed

Better KV-cache allocation raises serving capacity while kernels and workload still determine latency.
Jakub Jirák · 7 min
#vision

Vision models for document vision: preprocessing before the vision model

Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a shared team GPU server: the utilization curve

A fast GPU that waits all day can have worse economics than an expensive API used only when needed.
Jakub Jirák · 8 min
#hardware

External GPUs and local LLMs: mind the enclosure

Thunderbolt makes capacity portable, but power, bandwidth, sleep, and driver behavior shape the experience.
Jakub Jirák · 5 min
#optimization

Swap is a warning light for interactive local inference

A model may remain technically alive while memory pressure turns every token into an I/O event.
Jakub Jirák · 9 min
#economics

Commercial vs free models for customer-support automation: tools and integration quality

Native tools save glue code, while open stacks preserve portability and make boundaries inspectable.
Jakub Jirák · 6 min
#ocr

OCR models for tables and statements: structured OCR with provenance

Every consequential field should point back to the pixels that support it.
Jakub Jirák · 5 min
#local

ThinkingCap: Qwen3.6-27B with half the thinking tokens

BottleCap AI finetuned Qwen3.6-27B to reason in half the tokens without touching answer quality. I dug into the numbers, and the interesting part is where the savings don't come from.
Jakub Jirák · 5 min
#local

From the RTX lab to the H100s: what transfers and what doesn't

Our models earn their way from Blackwell test boxes to H100 production through a checklist. Quality verdicts survive the trip; performance numbers, TP configs, and compiled engines do not.
Jakub Jirák · 12 min
#hardware

Hopper vs Blackwell: notes from running both generations

We serve on Hopper and experiment on Blackwell, which makes the architecture comparison a daily lived experience rather than a spec-sheet exercise. What actually separates the generations, and which one to buy in 2026.
Jakub Jirák · 12 min
#efficiency

Version prompts like small programs

A prompt change is a behavior change, even when it looks like copy editing.
Jakub Jirák · 5 min
#security

Put IoT devices and AI services on deliberate networks

Segmentation limits compromised devices while still allowing the controller to reach exactly what it needs.
Jakub Jirák · 7 min
#economics

Commercial vs free models for coding assistants: the real cost per completed task

Free tokens and cheap hardware can both become expensive after retries, review, and operations.
Jakub Jirák · 6 min
#ocr

OCR models for invoices and receipts: capture quality before recognition

Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair.
Jakub Jirák · 5 min
#hardware

The server around the GPUs: DL380 Gen11 host tuning notes

The H100s get the glory, but NUMA pinning, BIOS power profiles, FC storage reality, and a kill-joy about fan noise are what made them fast. Field notes from tuning the box itself.
Jakub Jirák · 12 min
#local

Fine-tuning on the office H100 pair: what two 96 GB cards buy you

LoRA on 70B-class models is an evening job on two H100s. Full fine-tunes stop at 8B. Where the memory actually goes, a minimal axolotl config, and why data prep is still 80% of the work.
Jakub Jirák · 12 min
#hardware

Why our test bench is Blackwell RTX, not more H100s

We put two RTX PRO 6000 Blackwell cards next to our H100 NVL pair. Same 96 GB per card, a fraction of the price, half the bandwidth, and that trade is exactly right for a test bench.
Jakub Jirák · 12 min
#local

NVFP4 on the Blackwell test boxes: quantization as a pipeline, not an event

Our RTX PRO 6000 test bench has native FP4 and our H100s don't. So the test boxes became a quantization lab, and quantization became a repeatable pipeline with evals, not a one-off conversion you trust forever.
Jakub Jirák · 12 min
#hardware

Sizing a unified-memory Mac for local models

Why advertised memory is not model memory, and how to choose 24, 36, 64, or 128 GB without guessing.
Jakub Jirák · 7 min
#smart-home

Use mmWave presence before adding an AI camera

For occupancy, a private sensor often answers the question more directly than computer vision.
Jakub Jirák · 5 min
#models

GLM-5.1: Long context without the token landfill

A large window is capacity, not permission to resend every available document.
Jakub Jirák · 5 min
#vision

Vision models for chart and diagram understanding: reasoning across multiple images

Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem.
Jakub Jirák · 5 min
#economics

AI hardware ROI for an edge or SBC AI fleet: renting GPU capacity versus buying

Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk.
Jakub Jirák · 7 min
#local

Best-value coding models for a team GPU pair

Five models fit on our H100 pair. Only some of them are worth the electrons. The fun-per-dollar ranking, why MoE wins team serving, and where we still pay for hosted APIs.
Jakub Jirák · 12 min
#hardware

The H100s work nights: our overnight batch queue

From 19:00 to 07:00 our H100 pair stops answering people and starts chewing through backlogs. A directory of job files, vLLM offline mode, and the cheapest tokens we will ever produce.
Jakub Jirák · 12 min
#hardware

MIG-slicing one H100 so the whole team stops fighting over it

We kept GPU 0 whole for the serving model and carved GPU 1 into MIG slices: embeddings, Whisper, a CI model, and a dev playground, each with hard isolation. Here is the layout and the fine print.
Jakub Jirák · 12 min
#efficiency

Hybrid search is a practical default for technical RAG

Lexical search catches exact identifiers while embeddings recover paraphrases and concepts.
Jakub Jirák · 7 min
#efficiency

Measure quality-adjusted token speed

A fast model that needs retries or produces unusable output is not the faster workflow.
Jakub Jirák · 5 min
#vision

Vision models for document vision: local, hosted, and hybrid vision deployment

Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling.
Jakub Jirák · 8 min
#economics

AI hardware ROI for a used-GPU inference build: comparing the complete purchase price

The GPU sticker is not the price of a working inference system.
Jakub Jirák · 5 min
#local

vLLM on two H100s: the config that serves our whole team

The exact flags, the systemd unit, the Prometheus alerts, and the honest throughput numbers behind the single endpoint our whole team codes against every day.
Jakub Jirák · 12 min
#hardware

2 TB of RAM changes which models you can run

Everyone stares at the H100s and forgets the DL380 has 2 TB of DDR5 one PCIe hop away. Expert offload, KV spill, and RAM-staged models: what host memory actually buys you.
Jakub Jirák · 12 min
#local

Metal-backed llama.cpp or MLX?

Both are good Apple Silicon paths; model availability and workflow integration usually decide.
Jakub Jirák · 7 min
#hardware

Size the PSU for inference, transients, and efficient idle

Oversizing and undersizing both carry costs when a machine alternates between waiting and heavy accelerator load.
Jakub Jirák · 5 min
#economics

Commercial vs free models for document extraction: latency, throughput, and queues

A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU.
Jakub Jirák · 4 min
#ocr

OCR models for technical documents and labels: handwriting mixed with printed text

Printed labels and handwritten values need different recognition assumptions and confidence thresholds.
Jakub Jirák · 7 min
#hardware

The sizing math for a 2× H100 96GB pair: what actually fits

192 GB of HBM3 sounds like a lot until you do the arithmetic. Weights, KV cache, and activation budgets for every model class we tried on our NVLink-bridged pair.
Jakub Jirák · 12 min
#local

Update models across an air gap without improvising

Manifests, checksums, and staged media make offline model operations routine.
Jakub Jirák · 4 min
#optimization

Tokens per watt makes sense on small boards

Low absolute speed can still be efficient for queued household jobs and always-on services.
Jakub Jirák · 6 min
#economics

Commercial vs free models for coding assistants: reliability and exit strategy

Provider outages and local hardware failures are different risks; neither architecture is automatically resilient.
Jakub Jirák · 5 min
#ocr

OCR models for invoices and receipts: an OCR evaluation that predicts production

Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers.
Jakub Jirák · 7 min
#cost

Routing your agent's spend down with OpenRouter

Cascading cheap models before expensive ones, pooling rate limits across providers, and the one thing OpenRouter routing quietly breaks for chatty agents.
Jakub Jirák · 5 min
#hardware

The overlooked hardware upgrade: a small UPS

Graceful shutdown beats rebuilding indexes after a two-second power cut.
Jakub Jirák · 6 min
#smart-home

Use MQTT as the narrow bridge to local AI

A topic-based event bus decouples sensors and inference when payloads and permissions stay disciplined.
Jakub Jirák · 6 min
#models

Kimi K2.5: Long context without the token landfill

A large window is capacity, not permission to resend every available document.
Jakub Jirák · 4 min
#vision

Vision models for product-image analysis: preprocessing before the vision model

Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model.
Jakub Jirák · 4 min
#optimization

Containers rarely cause the local inference slowdown

Driver compatibility, storage mounts, CPU limits, and configuration mistakes matter more than container overhead.
Jakub Jirák · 5 min
#smart-home

Detect water anomalies before asking an LLM

Flow thresholds, valve states, and occupancy provide strong signals for leaks with explainable behavior.
Jakub Jirák · 5 min
#models

Gemini 3.5 Flash: Migrating without changing behavior by accident

A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier.
Jakub Jirák · 7 min
#models

MiniMax M2.7: The cost and latency worksheet

Token prices, reasoning effort, caching, retries, and review time belong in one calculation.
Jakub Jirák · 5 min
#vision

Vision models for UI and screenshot understanding: video through frame sampling

A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent.
Jakub Jirák · 7 min
#economics

AI hardware ROI for a used-GPU inference build: valuing productivity without inventing savings

Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint.
Jakub Jirák · 6 min
#tooling

OpenRouter: one API key for every model you actually use

A single endpoint, model IDs instead of five separate SDKs, and automatic failover when a provider has a bad day: the setup that replaced four API keys on my machine.
Jakub Jirák · 5 min
#local

Where Ollama stops being the right server

Ollama is excellent glue; concurrency, isolation, and scheduling eventually demand more machinery.
Jakub Jirák · 5 min
#local

Tokenizer mismatch breaks budgets quietly

Counting with one tokenizer and generating with another corrupts limits, chunking, and cost estimates.
Jakub Jirák · 5 min
#efficiency

Prompt, retrieve, or fine-tune?

Use prompts for instructions, retrieval for changing facts, and tuning for durable behavior—with overlap handled deliberately.
Jakub Jirák · 8 min
#economics

Commercial vs free models for tool-using agents: the real cost per completed task

Free tokens and cheap hardware can both become expensive after retries, review, and operations.
Jakub Jirák · 8 min
#economics

AI hardware ROI for a personal AI workstation: five-year total cost of ownership

Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it.
Jakub Jirák · 4 min
#optimization

Time to first token is a pipeline metric

Loading, queueing, tokenization, prompt ingestion, and network hops all contribute to the pause.
Jakub Jirák · 7 min
#local

When a distilled model is the better local model

Distillation can preserve a useful behavior profile at a size that stays resident and responsive.
Jakub Jirák · 8 min
#economics

Commercial vs free models for RAG systems: the operational burden

A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery.
Jakub Jirák · 7 min
#ocr

OCR models for forms and handwriting: languages, scripts, and mixed alphabets

Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers.
Jakub Jirák · 5 min
#tooling

Three months of Headroom sitting between me and the model

I wired a compression proxy into my agent in April and mostly forgot it was there. The stats page says 12.4 million tokens never left my machine. Field notes: what broke, what didn't, and the one habit that made it stick.
Jakub Jirák · 5 min
#tooling

A month in caveman mode

I turned on the terse-output skill as a joke during a long debugging night and never turned it back off. Four weeks later my transcripts are a third the size and, uncomfortably, easier to read. Notes from living with it.
Jakub Jirák · 5 min
#workflow

Ponytail rewired how I review agent code

The lazy-senior-dev skill cut my agent's diffs by a third and started arguments in code review we should have been having for years. Two of those arguments it lost. A review-side field report.
Jakub Jirák · 5 min
#workflow

I stopped grepping my own codebase

A tree-sitter knowledge graph over the repo turned code review from file-stuffing into queries. Reviews that used to pull sixty thousand tokens of context now run on six. The workflow, the numbers, and the two ways the graph lies.
Jakub Jirák · 5 min
#savings

The full token stack, six weeks in: a field report

Graph-first retrieval, Headroom on input, Caveman on prose, Ponytail on code. I ran all four on production work for six weeks and kept receipts. The bill dropped roughly 8×. The surprise was which layer mattered most.
Jakub Jirák · 5 min
#analysis

Mistral in mid-2026: the lineup, the bet, the gap

Europe's frontier lab ships a full stack now: Large, Medium 3.5, an Apache-2.0 Small, and two coding specialists. A field guide to what each one is for, and an honest look at where the benchmark silence gets loud.
Jakub Jirák · 5 min
#local

Devstral: the open coding agent model that earns its keep

Mistral's agentic-coding specialist is the rare open-weights model built for harnesses, not chat. The 25.12 revision with 262k context runs my open-CLI stack surprisingly well, inside a specific envelope you should know before you commit.
Jakub Jirák · 5 min
#cost

Mistral Small: the most boring model I recommend the most

Fifteen cents per million tokens, Apache-2.0, 262k context. Small 26.03 wins no benchmarks and appears in no keynotes. It just quietly does 80% of my LLM work for a rounding error. An argument for the unglamorous tier.
Jakub Jirák · 4 min
#policy

The sovereignty trade: what picking Mistral actually buys you

For a growing slice of European engineering, model choice is made by lawyers before engineers get a vote. What EU-native AI genuinely buys (data residency, on-prem weights, regulatory legibility) and what it still costs in capability and ecosystem.
Jakub Jirák · 4 min
#hardware

SpaceX, xAI, and the orbital compute bet

The wildest infrastructure story in AI right now: putting the data center in orbit, where the sun never sets and the launch manifest is the supply chain. An engineer's read on what's physics, what's economics, and what's theater.
Jakub Jirák · 5 min
#guide

The caveman prompt cookbook: 250 before-and-after examples

Every caveman question I get reduces to 'what do I actually type?' Here's the answer at reference length: 250 real prompts across backend, frontend, UI, UX, ops, and testing. Polite version, compressed version, and exactly what the compression deleted.
Jakub Jirák · 30 min
#workflow

Nobody reads the transcript: meeting AI is an action-item problem

A 4000-word transcript that nobody opens is worth nothing. The value is the three action items with owners that actually reach a tracker someone checks. I built that pipe, watched it work, then watched the tickets die in an app no one opened.
Jakub Jirák · 5 min
#analysis

What meeting AI still gets wrong (accents, jargon, and who said what)

The transcription is good until it hits my Czech-accented English, a product codename, or two people talking over each other. And diarization (who actually said it) is still mediocre everywhere, including on my own machine. Trust the gist; verify quotes and owners.
Jakub Jirák · 5 min
#comparison

Cursor or VS Code with Copilot: is leaving the mothership worth it?

I have switched between Cursor and stock VS Code with Copilot three times in two years. Here is the honest fork math: what the tighter integration buys, what the update tax costs, and where I finally landed for client versus personal work.
Jakub Jirák · 5 min
#analysis

Every AI IDE is becoming the same shape

Cursor, Google Antigravity, and JetBrains Air started from opposite ends and are landing in the same place: the IDE built around the agent, not the other way round. The interesting fights are now about supervision, isolation, and who owns the model.
Jakub Jirák · 6 min
#mcp

ACP: the quiet protocol that lets any agent live in any editor

MCP gave agents a standard way to reach tools. ACP, pushed by JetBrains and Zed, does the same for the editor itself: any agent in any editor. I was a protocol skeptic, and Air changed my mind partway.
Jakub Jirák · 5 min
#optimization

Quantize the KV cache before shrinking the model

For long-context workloads, cache precision can be the cleaner memory lever.
Jakub Jirák · 6 min
#edge-ai

Use edge vision to watch a garden selectively

Timelapse, animal detection, and plant monitoring need different cameras, schedules, and models.
Jakub Jirák · 7 min
#models

MiniMax M2.7: Long context without the token landfill

A large window is capacity, not permission to resend every available document.
Jakub Jirák · 8 min
#vision

Vision models for product-image analysis: local, hosted, and hybrid vision deployment

Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling.
Jakub Jirák · 9 min
#workflow

Rolling Junie out to a team without the chaos

One developer with Junie is a productivity story; ten developers with ten private styles is a review nightmare. The rollout playbook: a shared guidelines file, one review bar, deliberate first tasks, and honest measurement.
Jakub Jirák · 5 min
#comparison

When Codex is the right tool (and when it isn't)

Codex's real edges are unattended grinding in a sandbox and PR-native GitHub integration; its real weakness is mid-task steering. Decision rules by task shape, because brand loyalty is a lousy engineering criterion.
Jakub Jirák · 6 min
#workflow

Multimodal in the terminal: screenshots, PDFs, and Gemini CLI

Screenshots, PDFs, and whiteboard photos are first-class input to Gemini CLI, and almost nobody uses them. Two workflows that pay off immediately (bug-from-screenshot and spec-to-scaffold) plus the token tax that comes with pixels.
Jakub Jirák · 5 min
#cost

Managing Claude Code's context budget like memory

Claude Code's context window is a heap: every file read, tool result, and CLAUDE.md line is an allocation, and nothing frees itself. Measure it, compact it, clear it, or watch quality degrade mid-session.
Jakub Jirák · 6 min
#security

Before you trust an open-source agent with your shell

An agent CLI runs commands, reads secrets, and talks to the network. And open source alone proves nothing. The one-hour audit worth doing before granting shell access, and why the supply chain is the scarier half.
Jakub Jirák · 5 min
#landscape

The meeting-notetaker landscape, mapped by someone who churned through six

Six notetakers in eight months, one client that could not send audio to a US cloud, and a slow realization that the summaries barely differ. Here is the map I wish I had before I started churning.
Jakub Jirák · 6 min
#tooling

Granola and the notepad that writes the second half for you

The augmented-notepad idea flipped how I take notes: type a few thin lines during the call, let it capture audio locally and finish the thought afterward. It fit my brain for standups and failed me when I needed a verbatim quote.
Jakub Jirák · 5 min
#workflow

Cursor has two brains: knowing when to Tab and when to delegate

Cursor's Tab and its Composer agent are not two settings of one dial; they are two different jobs. Here is how I decide which one to reach for mid-task, and the mistake I still make when I pick wrong.
Jakub Jirák · 5 min
#agents

The agent that opens a browser to check its own work

The genuinely new idea in Antigravity: the agent opens a browser, clicks through what it built, and verifies the result before calling the job done. When that loop works, it's the future. When it doesn't, it lies to itself.
Jakub Jirák · 5 min
#comparison

Air, Junie, or plain IntelliJ: untangling JetBrains' three AI things

AI Assistant, Junie, and now Air: JetBrains ships three different AI things and the names help nobody. Here's the map I wish someone had handed me, plus who should actually use which.
Jakub Jirák · 5 min
#architecture

When cross-vendor orchestration isn't worth it

Three models reviewing each other sounds bulletproof until you hit the latency bill, the correlated failure mode, and the day one vendor's API just times out.
Jakub Jirák · 5 min
#edge-ai

Orange Pi 5 as a low-power AI node

The RK3588 offers attractive CPU, memory, and NPU hardware, but software support decides the useful workload.
Jakub Jirák · 5 min
#models

GPT-5.6: Migrating without changing behavior by accident

A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier.
Jakub Jirák · 6 min
#vision

Vision models for camera-event understanding: prompts grounded in visible evidence

A good vision prompt separates observation, inference, uncertainty, and the requested action.
Jakub Jirák · 6 min
#economics

AI hardware ROI for an Apple Silicon local-model system: electricity and cooling economics

Board power is not wall energy, and wall energy is not the entire cooling cost.
Jakub Jirák · 5 min
#cost

Junie's quota model: what an IDE agent costs in practice

JetBrains bundles AI quota into its subscriptions, and agent work burns it far faster than chat ever did. How to reason about the shape of the cost, and how to stop the meter from managing you.
Jakub Jirák · 4 min
#cost

The model dial: matching Codex's brain to the task

Codex ships two cost levers most people never touch: model tier and reasoning effort. Matching them to task shape is the difference between a sane bill and paying deliberation prices for grep-shaped work.
Jakub Jirák · 5 min
#security

Checkpoints, sandboxes, and trust in Gemini CLI

Gemini CLI stacks approvals, checkpoints, and sandboxes, and each layer catches a failure class the others miss. How the layers actually work, where each one leaks, and why YOLO mode is named as a warning.
Jakub Jirák · 5 min
#security

The permission model: Claude Code's most underrated feature

Everyone notices the permission prompts and nobody studies the permission system. Allow and deny rules in settings.json are how you build a per-repo trust profile instead of clicking allow until the prompts stop meaning anything.
Jakub Jirák · 5 min
#security

Where does your meeting audio actually go?

Follow the audio, not the feature list. A meeting recording is a file with your client's voice in it, and the only question that matters is whose disks it lands on and what they're allowed to do with it after.
Jakub Jirák · 5 min
#local

Rolling your own meeting notes when the vendors are a no

When a compliance clause deletes your entire shortlist of meeting tools, there's a fallback the SaaS market would rather you forget: whisper.cpp, a local summarizer, and a weekend. It buys total custody and charges you in maintenance.
Jakub Jirák · 5 min
#workflow

Cursor rules that actually steer (and the ones that just decorate)

My .cursor/rules file grew to 900 lines and quietly made the agent worse. The fix was deleting most of it. What actually earns a rule, what just decorates, and why scope beats volume every single time.
Jakub Jirák · 5 min
#agents

Antigravity's Agent Manager: mission control for parallel agents

Antigravity lets you run several agents at once from one mission-control view. That sounds like pure upside, and it is, right up until you notice you've quietly made yourself the bottleneck. Field notes from the week I over-launched.
Jakub Jirák · 5 min
#workflow

Air's task model: every job gets its own sandbox

In Air, every task runs in its own isolated workspace: a local checkout, a git worktree, a Docker container. I spent a decade fighting parallel work on a single branch. This is the fix I didn't know I wanted.
Jakub Jirák · 5 min
#efficiency

Find the token leaks in an agent loop

Repeated tool schemas, verbose observations, and duplicated history can dominate the actual task.
Jakub Jirák · 5 min
#local

RoPE scaling can extend context and degrade it

Configuration overrides may make a model accept more tokens without preserving useful long-range behavior.
Jakub Jirák · 7 min
#economics

Commercial vs free models for tool-using agents: reliability and exit strategy

Provider outages and local hardware failures are different risks; neither architecture is automatically resilient.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a personal AI workstation: pricing risk and downtime

A cheap single box becomes expensive when its failure stops a workflow with no usable fallback.
Jakub Jirák · 5 min
#comparison

Gemini Code Assist or Gemini CLI? Google ships both

Google ships an IDE agent and a terminal agent on the same models, and teams keep asking which to standardize on. Wrong question: the surfaces are converging, and the choice is per task, not per team.
Jakub Jirák · 4 min
#workflow

Parallel Claude Code sessions with git worktrees

One repo, several git worktrees, one Claude Code session in each: parallel agent work without cloud infrastructure. The catch is that merging (not writing) becomes your job description.
Jakub Jirák · 5 min
#comparison

Open CLI or vendor CLI? The honest trade-off table

Vendor CLIs sell a co-tuned harness and someone to call; open CLIs sell model freedom, auditability, and immunity to rug-pulls. The honest trade-off table, and why harness tuning matters more than the feature lists admit.
Jakub Jirák · 5 min
#tooling

Jamie: the meeting notetaker that never joins the meeting

I got tired of a robot participant sliding into client 1:1s and announcing itself. Jamie skips that entirely: it grabs the audio on my Mac, no bot in the call, and it even catches the in-person meetings the others never could.
Jakub Jirák · 5 min
#architecture

The real split in meeting AI: a bot in the call or audio on your device

Every meeting-notes tool argument is really one architecture question wearing a marketing costume: does a bot join your call, or does software on your laptop listen to the audio? Almost everything else follows from that.
Jakub Jirák · 6 min
#tooling

Cursor in 2026: still the one to beat

I spent eighteen months trying to leave Cursor and kept coming back for one feature. Here is why the incumbent AI editor still holds the crown in 2026, what the fork actually costs me, and where the agent-first rivals land.
Jakub Jirák · 6 min
#tooling

A week inside Google Antigravity

Google's agent-first IDE has been in public preview since November, and I finally gave it a real week on client work. Here's what surprised me, what still feels like a preview, and the question my client's security lead asked first.
Jakub Jirák · 6 min
#tooling

JetBrains Air: an IDE built around the agent, on Fleet's bones

JetBrains built a whole new IDE around the agent instead of stapling a chat box to IntelliJ, and they built it on the corpse of Fleet. I gave it a week on real Kotlin work. Here's what stuck.
Jakub Jirák · 6 min
#agents

Orchestrating ChatGPT and Gemini from Claude Fable 5

Claude Fable 5 as the lead agent, GPT-5.6 and Gemini 3.1 Pro as tools it calls out to: what the wiring actually looks like and why I bother.
Jakub Jirák · 5 min
#efficiency

Semantic caching needs a narrow blast radius

Similar questions are not always equivalent, especially when answers depend on time, identity, or permissions.
Jakub Jirák · 5 min
#hardware

Memory channels matter for CPU LLM inference

Capacity lets a model load; aggregate bandwidth determines how quickly weights can be revisited.
Jakub Jirák · 5 min
#economics

Commercial vs free models for customer-support automation: quality ceiling versus sufficient quality

The strongest answer is valuable only when the workflow benefits from the difference.
Jakub Jirák · 5 min
#ocr

OCR models for tables and statements: preprocessing for OCR models

Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters.
Jakub Jirák · 5 min
#mcp

MCP in Junie: plugging your stack into JetBrains' agent

Junie speaks MCP, which means your issue tracker, database, and internal APIs can sit inside the agent's reach. Here's the setup pattern, why the cross-vendor standard matters, and the surface area you're quietly signing up for.
Jakub Jirák · 5 min
#tooling

Codex in the editor: the IDE extension bridges two worlds

The Codex IDE extension is the same agent on a surface built for reviewing diffs, not just producing them. Where it beats the CLI, where the terminal stays king, and why the answer is both.
Jakub Jirák · 4 min
#local

Open CLIs + local models: the fully sovereign coding stack

Aider, OpenCode, or Goose pointed at a local model through Ollama or llama.cpp: the fully sovereign stack is real in 2026. What it genuinely handles, where it still breaks, and what hardware honesty looks like.
Jakub Jirák · 6 min
#tooling

Time travel debugging: replaying yesterday's failure

A customer's ticket failed on Tuesday; I forked their thread and reproduced it exactly on Thursday. Checkpoint history is a time machine, as long as you remember it rewinds your state, not the world, and you stub the node that sends email.
Jakub Jirák · 4 min
#local

The inference box in my closet: a year later

A used 3090 in a hallway closet, one year in: what it cost, what it serves, eleven days of downtime, two honest regrets, and why I'd build it again anyway.
Jakub Jirák · 6 min
#efficiency

Do not spend inference on deterministic work

Regex, parsers, SQL, and ordinary code should surround the model, not be replaced by it.
Jakub Jirák · 4 min
#smart-home

Occupancy-aware HVAC without camera surveillance

Door, motion, mmWave, and device-presence signals can control comfort while revealing less about household life.
Jakub Jirák · 7 min
#models

Qwen 3.6 Plus: Long context without the token landfill

A large window is capacity, not permission to resend every available document.
Jakub Jirák · 5 min
#ocr

OCR models for scanned archives: tables and key-value association

Recognizing tokens is easier than proving which label, column, row, and unit they belong to.
Jakub Jirák · 8 min
#devops

Gemini CLI in CI: the free tier meets GitHub Actions

Gemini CLI is a well-behaved Unix citizen, which makes it dangerously easy to wire into GitHub Actions. The patterns that pay off, the guardrails unattended runs demand, and where the free tier quietly falls short in CI.
Jakub Jirák · 5 min
#workflow

Plan mode: making the agent read before it writes

Plan mode locks Claude Code into read-only exploration until you approve an approach. It looks like a speed bump; it is actually the cheapest place in the whole workflow to catch a wrong decision.
Jakub Jirák · 4 min
#tooling

Qwen Code: what a Gemini CLI fork tells us about open harnesses

Qwen Code is Gemini CLI forked, re-pointed at Qwen's coder models, and retuned where it counts. It is the cleanest evidence yet that the agent harness is becoming a commodity, and that model-harness fit is the real product.
Jakub Jirák · 5 min
#tooling

Output parsers: retry, fix, or fail loudly

OutputFixingParser once turned a malformed invoice total into a clean, plausible, completely wrong number that sat in a client's export for days. My ladder now: constrain first, retry once, then fail loudly to a human.
Jakub Jirák · 4 min
#agents

Long-term memory in LangGraph: the Store, and what I regret storing

The Store gave my assistant memory across threads in a day. Preference memory earned its keep immediately. The raw conversation snippets I also stored came back three weeks later as stale facts, delivered with total confidence.
Jakub Jirák · 5 min
#local

LM Studio vs Ollama: GUI comfort vs pipeline glue

I've run both on the same MacBook for a year: LM Studio to audition models, Ollama to put the winners to work. The only real fight they ever had was over a port.
Jakub Jirák · 4 min
#local

The LoRA I trained on a weekend (and what it fixed)

Two days, the closet 3090, and 1,660 pairs of my own edits: a weekend QLoRA that made an 8B write in our house format. What it fixed, what it refused to fix, and the forgetting scare in the middle.
Jakub Jirák · 6 min
#edge-ai

A Raspberry Pi cluster is not one large LLM computer

Clusters teach orchestration and run parallel jobs well, but they do not pool memory bandwidth for free.
Jakub Jirák · 7 min
#models

Grok 4.5: Migrating without changing behavior by accident

A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier.
Jakub Jirák · 4 min
#vision

Vision models for chart and diagram understanding: choosing the right vision model

A vision leaderboard cannot tell you whether the model reads your images at your resolution.
Jakub Jirák · 4 min
#economics

AI hardware ROI for an edge or SBC AI fleet: five-year total cost of ownership

Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it.
Jakub Jirák · 7 min
#comparison

IDE-native vs terminal-native: Junie against the CLI agents

Forget model-versus-model. The real architectural split in coding agents is the surface: IDE-native like Junie, or terminal-native like Claude Code. Each buys you something the other structurally can't.
Jakub Jirák · 6 min
#security

How Codex keeps itself in a box

Codex assumes its own model will eventually do something dumb, so it builds kernel-level walls: OS sandboxing, workspace-scoped writes, network off by default. Why that last choice carries the security load, and what the box cannot save you from.
Jakub Jirák · 5 min
#devops

claude -p: headless mode turns the agent into infrastructure

The -p flag strips away the chat and leaves a Unix program: prompt in, JSON out, exit code. That is the piece of Claude Code you can wire into CI, cron, and GitHub, if you cap its blast radius.
Jakub Jirák · 5 min
#cost

Caching LLM calls: the free lunch with a stale aftertaste

Response caching cut my CI bill by roughly 70% and made dev loops feel free. It also served nine days of answers from a prompt I'd already replaced. Both facts belong in the same article.
Jakub Jirák · 4 min
#architecture

Subgraphs: composing agents like functions (almost)

I extracted a research subgraph and reused it across two products. It really is composition, minus the part where you write and maintain the state-mapping glue by hand.
Jakub Jirák · 4 min
#observability

Tracing graphs: watching state mutate is the real debugger

For a graph the debugger is a diff: the change in state between two nodes. I spent an afternoon blaming the model for dropping evidence before a state diff showed me a reducer was silently overwriting the list.
Jakub Jirák · 5 min
#local

Local vision models earn their disk space

I fed 531 receipt photos to a local vision model expecting a toy and got an accountant. Where local vision genuinely earns its keep, the resolution limit that wrecked a night's run, and why offline was the whole point.
Jakub Jirák · 5 min
#local

Speculative decoding: free speed with strings attached

A small draft model guesses, the big one checks, and my 3090 writes code somewhere between 1.6× and 2.2× faster. Then I left it on for prose and made everything slower. Here's the fine print.
Jakub Jirák · 5 min
#local

Split the stack: local embeddings, cloud generation (or the reverse)

Two clients, same month, opposite architectures: one generated locally and embedded in the cloud, the other the exact reverse. Both were right, and the deciding matrix is smaller than you'd think.
Jakub Jirák · 5 min
#hardware

Hardware for a local voice pipeline

Speech recognition, diarization, generation, and synthesis compete differently for CPU, GPU, and memory.
Jakub Jirák · 4 min
#local

Session affinity reduces cache misses and creates failure domains

Routing a conversation back to one worker improves reuse but needs explicit recovery behavior.
Jakub Jirák · 6 min
#vision

Vision models for document vision: structured output from images

JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a shared team GPU server: depreciation and resale value

AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks.
Jakub Jirák · 7 min
#agents

Fable 5 as advisor: near-frontier judgment at Sonnet 5 and Haiku prices

The advisor tool lets a cheap executor consult a stronger model mid-generation without switching your whole agent to the expensive model. Fable 5 is a valid advisor for both Sonnet 5 and Haiku 4.5. Here's the wiring, the gotchas, and the cost controls.
Jakub Jirák · 9 min
#analysis

AGI is still a marketing word: what Fable 5, Mythos 5, and GPT-5.6 actually measure

Every release cycle someone asks if this is the one. It isn't. Here's what the last few weeks of Fable, Mythos, and GPT-5.6 actually tell you about the distance left, if you read past the press release.
Jakub Jirák · 7 min
#testing

Junie and your test suite: the oracle pattern in an IDE

An agent that can't check its own work only produces plausible text. Wire Junie to your test suite (the oracle you already own) and it starts shipping verified diffs instead of confident guesses.
Jakub Jirák · 5 min
#workflow

Running Codex as a fleet: parallel tasks, best-of-n

Codex cloud tasks are cheap to launch and fully isolated, which makes five-at-once the natural unit of work. The fan-out and best-of-n playbook, and how to survive the review queue it creates.
Jakub Jirák · 5 min
#architecture

What a million tokens actually buys you in a terminal

A million-token window is the least understood spec in terminal agents. Three workflows that genuinely need it (module audits, log forensics, spec reconciliation) and the attention, cost, and latency fine print the pitch leaves out.
Jakub Jirák · 6 min
#tooling

Crush: Charm's take on the coding agent

Charm built the TUI stack the modern terminal runs on, and Crush is that taste applied to a coding agent. Why interface craft is a real differentiator, what sits under the paint, and where a design-first agent fits.
Jakub Jirák · 4 min
#agents

Tool calling through LangChain: bind_tools and its moods

bind_tools turns your functions into something a model can call, and mostly hides the fact that every provider does it differently. Mostly. The docstring that cost me a morning, the quirks it doesn't hide, and how I test tools without a model.
Jakub Jirák · 5 min
#tooling

Surviving LangChain upgrades: a scar tissue report

Most of my LangChain scars date to the pre-1.0 churn of late 2025: moving imports, deprecated memory classes, a month running a pinned fork. The quiet policy that stopped the bleeding, and why I bill maintenance as a line item.
Jakub Jirák · 5 min
#tooling

Streaming graph events: progress bars for agents

Our graph runs take three to eight minutes, and users kept killing them halfway. A progress UI built on LangGraph's stream modes fixed that without making anything faster. Notes on modes, noise, and what to show.
Jakub Jirák · 4 min
#workflow

Migrating from chains to graphs without a rewrite weekend

We moved a client's ticket triage pipeline from LCEL chains to LangGraph over two weeks in May, shipping the whole time. The first version was a graph with exactly one node, and putting that into production was the point.
Jakub Jirák · 5 min
#local

Local embeddings: the part of the stack that never left

My generation traffic drifted to cloud models years ago. My embeddings never left the 3090: too cheap and too private to move. One warning: the embedding model is a schema, and I learned that the expensive way.
Jakub Jirák · 4 min
#local

vLLM at home: throughput machine in a latency world

vLLM turned a five-hour Ollama backfill into 47 minutes on the same 3090, then spent a week teaching me it has no business being my chat server.
Jakub Jirák · 5 min
#local

New model dropped. Now what?

Something new tops the local charts every other Thursday. My defense is a fixed 20-prompt gauntlet, ruthless disk hygiene, and a two-week probation: a routine that exists because I once ignored my own results for a month.
Jakub Jirák · 4 min
#agents

Overnight agents on local models: cheap, slow, surprisingly useful

Nobody waits for a model at 3 am. I queue bounded agent tasks against the 3090 box at midnight (test triage, doc drafts, dataset cleanup) and review branches over coffee. One night it looped for six hours.
Jakub Jirák · 5 min
#hardware

Use a mini PC as the control plane, not the muscle

Small machines make excellent routers, embedding nodes, and automation hosts around a larger inference server.
Jakub Jirák · 7 min
#hardware

Resizable BAR and local inference

Large PCIe mappings can matter for some transfer-heavy paths, but runtime and platform behavior need verification.
Jakub Jirák · 6 min
#economics

Commercial vs free models for customer-support automation: licenses, terms, and redistribution

Open weights, open source, free access, and commercial permission describe different things.
Jakub Jirák · 4 min
#ocr

OCR models for tables and statements: local hardware and hybrid OCR deployment

OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class.
Jakub Jirák · 4 min
#copilot

Claude Sonnet 5 in GitHub Copilot: what the usage-based pricing shift actually costs

Copilot dropped the fixed premium-request multiplier for metered AI Credits, and Sonnet 5 launched into it at a promotional rate that expires August 31, 2026. Three separate effects stack on September 1. Here's what they actually add up to.
Jakub Jirák · 8 min
#analysis

Why Junie feels strongest on JVM code

Junie is at its best on Java and Kotlin, and that's not an accident. Twenty years of static-analysis machinery (indexes, inspections, refactorings) become tools the agent can call, and a compiler becomes its oracle.
Jakub Jirák · 5 min
#workflow

Codex as your PR reviewer: useful, with caveats

Tag Codex on a pull request and it reviews the diff in full repo context. It catches real bugs, and misses design intent entirely. The difference decides how you should deploy it.
Jakub Jirák · 4 min
#mcp

Claude Code as MCP client and server

Claude Code speaks MCP in both directions: it consumes servers for browsers, databases, and trackers, and can serve its own tools to other clients. The wiring takes minutes; budgeting the context and the trust is the real work.
Jakub Jirák · 5 min
#observability

LangSmith traces: the first honest look at my own pipeline

I flipped on tracing expecting a victory lap and got a confession: my pipeline had been running its retrieval step twice on every single request for about five weeks. That was just the first trace.
Jakub Jirák · 5 min
#workflow

interrupt(): human-in-the-loop that doesn't feel bolted on

An agent that credits customer accounts needs a human gate. interrupt() gave me a pause that survives deploys and vacations. The screen the approver stares at was still mine to build.
Jakub Jirák · 5 min
#devops

Deploying LangGraph: platform, container, or cron job

Managed platform, a container I babysit, or a cron job that runs and dies: I've shipped the same graph all three ways. The container with a Postgres checkpointer is my default, right up until the checkpoint table quietly hit 14 GB.
Jakub Jirák · 5 min
#local

keep_alive and the cold-start tax

The slowest part of local inference is the twelve seconds before it starts. How I tune keep_alive, what pinning really costs in VRAM, and the two-model mistake that ran half on CPU for four days.
Jakub Jirák · 4 min
#local

Benchmark your own box or believe strangers

I bought RAM off a stranger's tok/s number and it measured the wrong thing entirely. Prefill versus generation, context depth, thermal sag: how I benchmark my own machines now, in nine lines of shell.
Jakub Jirák · 5 min
#security

Who made your GGUF? The supply chain nobody audits

I pulled a 19 GB quant from a stranger and gave it shell access the same evening. The chat template inside a GGUF is the supply-chain risk nobody reads. Here's my rule now.
Jakub Jirák · 5 min
#smart-home

An AI-enhanced home should survive an internet outage

Local DNS, time, speech, automation, and model artifacts all need an offline path to make the claim real.
Jakub Jirák · 5 min
#economics

Commercial vs free models for coding assistants: privacy and data control

Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server.
Jakub Jirák · 5 min
#ocr

OCR models for invoices and receipts: layout and reading order

Perfect words in the wrong sequence are a failed document extraction.
Jakub Jirák · 7 min
#tutorial

Ollama in practice: context, GPU control, the API, and when to graduate to vLLM

The quickstart gets Ollama running. This is how to run it well: the context-length gotcha that silently truncates, keeping big models warm, GPU/VRAM control, the OpenAI-compatible API and Modelfiles, and the point where you outgrow it.
Jakub Jirák · 10 min
#tooling

Gemini CLI extensions: packaged superpowers

Extensions bundle MCP servers, context files, and custom commands into one versioned install. When your team should build one, when a GEMINI.md alone is plenty, and the supply-chain bill that arrives with the convenience.
Jakub Jirák · 4 min
#skills

Skills: teaching Claude Code your team's playbook

Skills turn the procedures you keep re-explaining into files Claude Code loads only when they are needed. One description sentence stays resident; the playbook arrives on demand. The craft is in the description, and in knowing when a hook or CLAUDE.md fits better.
Jakub Jirák · 5 min
#tooling

Goose: Block's MCP-native agent and its recipe system

Goose is what you get when a large company builds an agent MCP-first and then has to make it work far beyond its engineering org. Recipes (shareable, parameterized agent workflows) are the idea worth stealing.
Jakub Jirák · 5 min
#tooling

with_structured_output is the reason I keep LangChain around

If I could keep one feature from LangChain and drop the rest, it's this one. A Pydantic schema in, a validated object out, the same code across providers, plus the three sharp edges that drew blood.
Jakub Jirák · 5 min
#testing

Testing LangChain apps without burning tokens

Real model calls in CI were quietly burning around 90 dollars a month on a two-person project. Here's the test pyramid that fixed the bill, and the one prompt regression that sailed clean through every mock anyway.
Jakub Jirák · 5 min
#reliability

Retry nodes, fallback edges: error handling as graph topology

One flaky third-party API kept killing 40-minute pipeline runs. Moving error handling out of node bodies and into the graph (retry policies, fallback edges, a dead-letter key) is the most durable thing I built this spring.
Jakub Jirák · 6 min
#local

The layer-offload math nobody explains

Two layers on the CPU cost me most of my tokens per second, and I blamed the model for two weeks. The offload math is brutally nonlinear: this is the napkin version I wish someone had shown me.
Jakub Jirák · 6 min
#local

llama-server flags I actually change (and the ones I don't)

Out of llama-server's hundred-odd flags I change six. Two more I copied from a forum and ran for five weeks before llama-bench told me they did nothing on my 3090.
Jakub Jirák · 5 min
#rag

A RAG stack with the wifi off

Built for a client whose security lead switched the wifi off mid-kickoff: local embeddings, sqlite-vec, BM25, an 8B generator. What held up, the one query type that didn't, and the latency numbers I quoted them.
Jakub Jirák · 6 min
#local

Meeting notes that never leave my machine

Client calls under NDA shouldn't route through someone else's transcription API. My whole meeting-notes flow (record, transcribe, summarize, file) runs on the M2 Ultra, offline, and the weakest part is still the speaker labels.
Jakub Jirák · 5 min
#optimization

Power-limit the GPU before buying more cooling

Local inference often keeps most of its speed well below the card’s factory power target.
Jakub Jirák · 7 min
#edge-ai

Running Whisper on Raspberry Pi without wishful thinking

Tiny and base models can handle bounded transcription when audio length and response expectations are controlled.
Jakub Jirák · 5 min
#models

GLM-5.1: Migrating without changing behavior by accident

A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier.
Jakub Jirák · 8 min
#vision

Vision models for chart and diagram understanding: an evaluation set for visual reasoning

Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered.
Jakub Jirák · 8 min
#economics

AI hardware ROI for an edge or SBC AI fleet: pricing risk and downtime

A cheap single box becomes expensive when its failure stops a workflow with no usable fallback.
Jakub Jirák · 6 min
#comparison

Junie or AI Assistant? JetBrains ships both for a reason

JetBrains ships a chat assistant and a coding agent side by side, and they share your AI quota. Knowing which task goes to which tool is the actual skill, and it's cheaper to learn than to guess.
Jakub Jirák · 4 min
#agents

Codex in the cloud: fire-and-forget engineering

Hand Codex an issue and it returns a pull request from a container you never see. The parallelism is real. And so is the new bottleneck: whether your environment setup actually tells the truth.
Jakub Jirák · 5 min
#tooling

Streaming through chains without losing your mind

Streaming turned a nine-second wait into something users forgave. Then one parser at the end of my chain silently turned the stream back into a batch, and I spent four days blaming the wrong thing.
Jakub Jirák · 5 min
#agents

Checkpointers: the feature that made LangGraph production-real for me

We deployed mid-run on a Tuesday and the triage graph picked up exactly where it stopped. That was the day durable execution stopped being a slide-deck word for me.
Jakub Jirák · 6 min
#architecture

LangGraph or Temporal? Durable execution from two directions

Both hand you a workflow that survives a crash, from opposite worlds: Temporal from workflow engines, LangGraph from agents. For a client's invoicing flow I put the LLM reasoning on LangGraph and left the money in Temporal, after a checkpoint replay double-posted a ledger entry in staging.
Jakub Jirák · 5 min
#architecture

When LangGraph is overkill (a love letter and a warning)

I run a production graph I'd defend to anyone. I also ripped LangGraph out of a second service in one afternoon and the code got better. Here are the four questions I now ask before reaching for the graph.
Jakub Jirák · 5 min
#local

One GPU box for the whole team

We pointed five developers at one leftover RTX 3090 running Ollama. Embeddings and short completions were great, parallel long generations were not, and an intern taught me why a reverse proxy isn't optional.
Jakub Jirák · 5 min
#local

llamafile: the USB-stick LLM

One executable, weights included, runs on whatever machine you plug it into. llamafile rescued a client demo for me in June. And it's still the wrong tool for daily work. Both halves matter.
Jakub Jirák · 4 min
#local

Three models, one GPU: the juggling act

An embedder, a chat model, and a 32B coder all want the same 24 GB card. My loading policy, the real gigabyte math, and the night everything spilled to CPU without a single error.
Jakub Jirák · 5 min
#optimization

Run the reranker on CPU when the GPU is busy

A compact cross-encoder can improve retrieval without evicting the generation model.
Jakub Jirák · 9 min
#models

Gemini 3.5 Flash: Finding the production fit

A model should earn a traffic class before it earns the default route.
Jakub Jirák · 7 min
#vision

Vision models for UI and screenshot understanding: resolution and visual-token budgets

Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product.
Jakub Jirák · 7 min
#economics

AI hardware ROI for a used-GPU inference build: break-even against commercial APIs

Local hardware wins only after enough equivalent accepted work crosses the machine.
Jakub Jirák · 5 min
#mcp

Wiring MCP servers into Gemini CLI

Gemini CLI's built-in tools stop at your repo's edge. MCP servers connect it to databases, issue trackers, and browsers: the settings.json wiring, the transport options, and the discipline that keeps each server from becoming a liability.
Jakub Jirák · 5 min
#workflow

CLAUDE.md that actually steers: lessons from real repos

CLAUDE.md rides along on every turn, which makes it the most expensive text in your repo. What earns a line, what belongs in a linter instead, and why the best files read like a senior engineer's onboarding note.
Jakub Jirák · 5 min
#agents

OpenHands: from research project to daily driver

OpenHands grew from the OpenDevin research effort into the most rigorously evaluated open coding agent. What its event-stream architecture and sandboxed runtime buy you, and the operational weight they cost.
Jakub Jirák · 5 min
#tooling

LCEL in anger: pipes, parallelism, and the day I over-composed

The pipe syntax feels like a magic trick the first time and a crime scene the ninth. What LCEL composition actually buys you, the nine-stage chain I couldn't debug, and the readability rule I use now.
Jakub Jirák · 5 min
#architecture

The two-line provider swap is real (mostly)

LangChain's init_chat_model really does swap providers in two lines, and I proved it on a client cost review. Then I spent two weeks learning which parts of the migration the abstraction quietly refuses to carry for you.
Jakub Jirák · 5 min
#agents

Controlled loops: cycles without the infinite part

LangGraph makes loops a first-class move, which means it also makes infinite loops a first-class move. Notes on exit conditions that fire, convergence you can measure, and the revise loop that ran all night.
Jakub Jirák · 5 min
#local

Model churn: my quarterly ritual of re-testing local models

Local models churn fast enough that loyalty rots. I keep a 23-prompt eval file, re-run it every quarter, delete whatever loses, and admit the boring result: for bounded tasks, most upgrades change nothing.
Jakub Jirák · 5 min
#local

Tool calling on local models: usable, with an asterisk

I gave the same five tools to an 8B, a 30B, and a frontier model, then counted who called what. Local tool calling is real now, as long as you respect the asterisk.
Jakub Jirák · 5 min
#local

Temperature isn't a vibe: sampler settings that matter locally

I shipped a week of mangled JSON because of one sampler default I never chose. What temperature, top_p, top_k, min_p and repeat_penalty actually do on local models, and the per-task presets I pin before judging anything.
Jakub Jirák · 5 min
#policy

Read the license before you ship the weights

Open weights come with fine print, and the fine print differs wildly. I almost shipped a research-only model inside a client deliverable in April. Here's the five-minute check I run now.
Jakub Jirák · 5 min
#hardware

Why the Neural Engine rarely runs your chat model

The ANE is powerful specialized hardware, but common local LLM runtimes primarily target GPU and CPU paths.
Jakub Jirák · 6 min
#hardware

Should model files live on a NAS?

Central storage simplifies a library, while cold loads and concurrent reads can punish a slow network.
Jakub Jirák · 5 min
#economics

Commercial vs free models for document extraction: long-context economics

A giant context window can replace engineering discipline with a large recurring bill.
Jakub Jirák · 5 min
#ocr

OCR models for technical documents and labels: tables and key-value association

Recognizing tokens is easier than proving which label, column, row, and unit they belong to.
Jakub Jirák · 9 min
#analysis

Fable 5 is back — but the two-week gap already made its point

The US lifted its national-security order on June 27, fifteen days after forcing Claude Fable 5 offline worldwide. Restoration doesn't undo the architecture lesson the withdrawal taught.
Jakub Jirák · 6 min
#agents

Junie's leash: approvals, Brave mode, and when to let go

By default Junie asks before every terminal command; Brave mode lets it run free. The right setting isn't a personality trait. It's a function of blast radius, revert cost, and how good your sandbox is.
Jakub Jirák · 5 min
#agents

Suggest, auto-edit, full-auto: choosing Codex's leash

Codex's three approval modes are a risk dial, not a convenience setting. Match the mode to how cheaply you can undo a mistake, and make every repo earn its autonomy separately.
Jakub Jirák · 5 min
#agents

Conversation memory: buffers, summaries, and what I actually use

Full-buffer memory blew up my token bill, and the summarizer forgot a customer's name mid-demo. Why I stopped trusting memory classes entirely and moved to explicit, checkpointed state.
Jakub Jirák · 5 min
#architecture

Design the state first: my LangGraph rule number one

The state schema is the real API of a LangGraph app. I learned that by stuffing raw documents into state until the checkpointer ate 9 GB of disk in nine days.
Jakub Jirák · 5 min
#agents

The supervisor pattern: one boss agent, several specialists

My best supervisor graph and my most embarrassing one shared a diagram. A specialist earns its latency only when it carries fewer tools or a cleaner context than the generalist it replaced. And I once shipped two agents that were secretly one.
Jakub Jirák · 6 min
#local

Ollama in Docker: three gotchas and a compose file

Same Ollama, new failure modes: a GPU flag that fails silently and a healthcheck that lies. Plus the volume mount that would have saved us a terabyte of re-pulls, and the compose file I actually run.
Jakub Jirák · 5 min
#local

Picking a quant: the twenty minutes that decide everything

Fourteen files in every GGUF repo and no advice. My rules: Q4_K_M by default, Q5 and up for code, never below Q4 for work I bill. Plus the blind test where I couldn't tell, until the code broke.
Jakub Jirák · 6 min
#local

Your laptop is lying about its tok/s

My fanless MacBook opens at 29 tok/s and settles at 18.5 once the aluminium soaks through. I learned the gap mid-demo, in front of a client. Here is the curve and what actually moves it.
Jakub Jirák · 5 min
#efficiency

When a reranker earns its latency

A second retrieval stage helps only when the candidate set contains better evidence than similarity rank exposes.
Jakub Jirák · 5 min
#edge-ai

Remote-manage the Raspberry Pi before mounting it

SSH keys, health reporting, logs, reboot control, and a recovery image are easier to prepare on the bench.
Jakub Jirák · 4 min
#economics

Commercial vs free models for coding assistants: a hybrid route instead of a winner

The useful comparison often ends with two routes: a cheap private default and a visible escalation.
Jakub Jirák · 4 min
#ocr

OCR models for forms and handwriting: choosing an OCR-capable model

OCR engines, document parsers, and vision-language models solve overlapping but different layers.
Jakub Jirák · 6 min
#workflow

GEMINI.md: hierarchical context that scales with your repo

Gemini CLI merges context from your home directory, the repo root, and every subdirectory in between. What belongs at each level of the cascade, and why every surviving line has to earn its per-request tax.
Jakub Jirák · 5 min
#workflow

Hooks: deterministic guardrails for a probabilistic tool

Prompts ask; hooks enforce. Claude Code lets you bind shell commands to lifecycle events: format after every edit, block the scary commands, ping you when it stalls. The rule: never prompt for what you can make deterministic.
Jakub Jirák · 5 min
#tooling

OpenCode: a terminal agent that treats the TUI seriously

OpenCode bets that the terminal deserves real UI engineering and that no single provider deserves your loyalty. A tour of the TUI, the client/server split, and the tuning tax that provider-agnosticism quietly charges.
Jakub Jirák · 5 min
#architecture

You probably don't need LangChain (I said it and I use it)

A junior asked why we'd pulled a framework into a service that talks to one model and does one thing. I took it out, and forty lines replaced it. The honest rule for when LangChain earns its weight and when it's just cost.
Jakub Jirák · 5 min
#architecture

I rewrote a LangChain app in fifty lines. Then rewrote it back.

I ripped a LangChain app down to fifty lines of raw SDK and felt reborn. Six months later my raw version had regrown retries, provider branching, and a tracing shim: a worse framework, maintained by an audience of one.
Jakub Jirák · 6 min
#architecture

Fan-out in LangGraph: Send() and the join that bit me

Send() gave my due-diligence pipeline dynamic parallelism in an afternoon. Then one report in ten came out subtly wrong, and I spent two evenings learning what the join barrier does and doesn't promise.
Jakub Jirák · 5 min
#testing

Testing graphs: nodes as functions, topology as fixture

My LangGraph test pyramid after a season in production: unit-test nodes with fake state, assert the path a thread takes instead of what the model says, and replay golden threads from checkpoints. A path test caught what 41 unit tests missed.
Jakub Jirák · 5 min
#local

The OpenAI-compatible endpoint is Ollama's best feature

Change base_url, fake the key, and a year of OpenAI-SDK code runs against your own machine. That drop-in trick is the best thing Ollama ships, as long as you learn which parameters it swallows silently.
Jakub Jirák · 5 min
#local

Forcing local models to speak JSON

My ticket classifier parsed 83% of Qwen's answers until I stopped begging in the prompt and let Ollama's grammar do the enforcing. Now everything parses. And I learned the hard way what a schema quietly costs.
Jakub Jirák · 5 min
#local

The KV cache is eating your VRAM

My overnight triage agent OOMed at hour three with the weights sitting untouched. The killer was the half of VRAM nobody budgets: the KV cache. Here's the arithmetic I now run before every long job, and the quantization trade that saved it.
Jakub Jirák · 6 min
#observability

Logging local inference: you still need receipts

The provider dashboard you lost when you went local was doing real work. I replaced it with a 118-line proxy and a JSONL file, and it caught a clogged heatsink before I did.
Jakub Jirák · 5 min
#optimization

A 128K context window is not free locally

KV cache math, prompt time, and the case for trimming context before upgrading hardware.
Jakub Jirák · 5 min
#smart-home

Place Thread border routers for resilience, not AI

A healthy mesh is the foundation beneath any local assistant that wants to control Matter devices.
Jakub Jirák · 5 min
#models

Kimi K2.5: Migrating without changing behavior by accident

A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier.
Jakub Jirák · 5 min
#vision

Vision models for product-image analysis: structured output from images

JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable.
Jakub Jirák · 5 min
#workflow

.junie/guidelines.md: teaching Junie your house rules

Junie reads .junie/guidelines.md before every task, which makes it the highest-impact file in your repo. What belongs in it, what doesn't, and why the discipline is the same one CLAUDE.md and AGENTS.md already taught us.
Jakub Jirák · 5 min
#workflow

AGENTS.md: the contract between Codex and your repo

Codex reads AGENTS.md before it reads your code. Treat that file as a contract (setup, tests, conventions, PR rules) and every session starts oriented instead of guessing. Here is what goes in, and what to cut.
Jakub Jirák · 5 min
#analysis

LangChain in 2026: the framework that survived its own hype

I adopted LangChain early, ripped it out in disgust, and came back years later for reasons I didn't expect. Here's what the post-1.0 framework is actually good at, what it isn't, and who should still walk away.
Jakub Jirák · 6 min
#rag

The RAG pipeline I actually ship with LangChain

Loaders, splitters, MMR retrieval, and citations: the exact shape of the RAG pipeline I shipped to a fintech client, including the default setting that quietly served wrong numbers for two weeks.
Jakub Jirák · 6 min
#agents

LangGraph clicked when I stopped thinking in chains

I lost two weeks trying to express an escalation branch as a chain. The fix was admitting I was building a state machine, drawing it on paper, and only then writing code.
Jakub Jirák · 5 min
#local

Modelfiles: the Dockerfile nobody reads until they need one

I ran Ollama for over a year without writing a single Modelfile. Then five engineers needed the same code-review model, and four keywords ended the prompt-drift mess, right after a whitespace bug taught me some respect.
Jakub Jirák · 5 min
#local

Ollama or raw llama.cpp: when the training wheels come off

Ollama is llama.cpp with the lifecycle managed for you. I moved one pipeline down to raw llama-server for grammar sampling, learned what the convenience actually costs, and came straight back for everything else.
Jakub Jirák · 6 min
#local

A month of MLX as my daily local runtime

I moved my Mac's local models from llama.cpp-on-Metal to mlx-lm in late May and mostly haven't looked back. What genuinely got faster, what the conversion step costs, and the memory cap that fooled me for two days.
Jakub Jirák · 5 min
#hardware

Capacity-plan a shared local LLM service

Concurrency, output length, context size, and model residency matter more than requests per minute alone.
Jakub Jirák · 5 min
#models

GPT-5.6: Finding the production fit

A model should earn a traffic class before it earns the default route.
Jakub Jirák · 5 min
#vision

Vision models for UI and screenshot understanding: privacy and security for visual inputs

Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a used-GPU inference build: a sensitivity analysis that can change the answer

ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth.
Jakub Jirák · 5 min
#tooling

Gemini CLI is open source, and that changes the trust math

The harness is Apache-2.0: the loop, the prompts, and the tool definitions are all readable before you grant shell access. That changes security review, enables forks like Qwen Code, and still leaves one closed box: the model.
Jakub Jirák · 5 min
#agents

Subagents: how Claude Code fans out without losing the plot

Claude Code can spawn focused agents that burn their own context and report back only conclusions. The parallelism is nice; the isolation is the feature. Here is how the fan-out works, how to define custom agents, and what never to delegate.
Jakub Jirák · 5 min
#tooling

Aider in 2026: the original terminal agent is still sharp

Aider predates nearly every coding agent you use today, and its core ideas (the repo map, a commit per change, edit formats matched to models) still haven't been beaten. Where it wins, and where its age shows.
Jakub Jirák · 5 min
#efficiency

Temperature zero is not a reproducibility guarantee

Kernel choices, batching, model builds, and tie-breaking can still change outputs.
Jakub Jirák · 4 min
#efficiency

Use synthetic training data with a verification funnel

A stronger model can expand coverage, but generated errors become confident habits if accepted wholesale.
Jakub Jirák · 7 min
#economics

Commercial vs free models for tool-using agents: privacy and data control

Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server.
Jakub Jirák · 7 min
#economics

AI hardware ROI for a personal AI workstation: the utilization curve

A fast GPU that waits all day can have worse economics than an expensive API used only when needed.
Jakub Jirák · 7 min
#agents

Junie: the coding agent that lives inside your IDE

JetBrains put its coding agent inside the IDE instead of a terminal, betting that the editor's index, inspections, and test runner make better context than any grep. Here is what Junie actually does, and where the bet holds.
Jakub Jirák · 5 min
#tutorial

Codex CLI: from install to first merged diff

A first session with OpenAI's terminal agent, run the way you'd actually adopt it: install, authenticate, pick a fenced task, and ride the read-propose-run loop to a diff worth merging.
Jakub Jirák · 5 min
#tutorial

Gemini CLI: the free-tier workhorse, set up in minutes

One npm install, a Google sign-in, and you're running a serious terminal agent on a free quota most solo developers won't exhaust. Here's the first session, the built-in tools, and where free honestly ends.
Jakub Jirák · 5 min
#landscape

The open-source coding CLI landscape, mapped

Six open coding agents matter in mid-2026: Aider, OpenCode, OpenHands, Goose, Crush, and Qwen Code. Here is what each one bets on, what openness actually buys you, and the assembly work it quietly demands.
Jakub Jirák · 6 min
#hardware

Run the one-hour inference test

Short benchmarks miss the heat soak that changes clocks, noise, and reliability.
Jakub Jirák · 6 min
#local

Turn a model license into an operational checklist

Commercial use, redistribution, attribution, and acceptable-use terms need owners, not bookmarks.
Jakub Jirák · 7 min
#economics

Commercial vs free models for RAG systems: tools and integration quality

Native tools save glue code, while open stacks preserve portability and make boundaries inspectable.
Jakub Jirák · 9 min
#ocr

OCR models for forms and handwriting: structured OCR with provenance

Every consequential field should point back to the pixels that support it.
Jakub Jirák · 4 min
#microsoft365

Microsoft 365 Copilot Chat in the enterprise: your org's knowledge, on tap

Grounded in your company's emails, files, and chats, Copilot Chat is the most powerful and most misunderstood part of the suite. How to use it well, and how to govern it.
Jakub Jirák · 11 min
#microsoft365

Microsoft 365 Copilot in Outlook: inbox triage that actually saves time

Summarize threads, draft replies in your voice, and stop re-reading 40-message chains. The Outlook Copilot features worth using, and the ones to skip.
Jakub Jirák · 8 min
#microsoft365

Copilot in Microsoft Teams: meetings you don't have to attend (fully)

Real-time catch-up, action items pulled automatically, and chat you can summarize. How Copilot changes Teams meetings, and where it still needs a human in the room.
Jakub Jirák · 9 min
#reasoning

Reasoning models and test-time compute: when thinking is worth paying for

Extended thinking, effort levels, and the test-time-compute scaling law. How reasoning models work, when the extra tokens pay off, and when they're just burning money.
Jakub Jirák · 11 min
#agents

Build a coding agent from scratch: the loop is simpler than you think

Strip away the frameworks and a coding agent is about fifty lines: a model, a few tools, and a loop. Here's the anatomy (with code) and what the frameworks actually add.
Jakub Jirák · 11 min
#rag

Agentic RAG: when retrieval becomes a tool the agent drives

Classic RAG retrieves once, up front, and hopes. Agentic RAG lets the model decide what to search, read the results, and search again: retrieval as a loop, not a pipeline step.
Jakub Jirák · 9 min
#data

AI for data work: text-to-SQL, analysis, and the columns that don't exist

LLMs turn 'how many customers churned last quarter' into SQL, and confidently invent a column that was never there. How to get reliable data answers, not plausible ones.
Jakub Jirák · 9 min
#product

AI for product managers: shipping without waiting for engineering

PRDs in minutes, clickable prototypes from a prompt, user research synthesized in seconds. What AI actually changes for PMs, and the judgment it can't replace.
Jakub Jirák · 9 min
#agents

Why agents fail in production (it's almost never the model)

Every demo works. That's the trap. The specific, boring reasons agents that dazzled in a notebook fall over with real users, and what the ones that survive do differently.
Jakub Jirák · 13 min
#rag

Your RAG demo lied to you

It answered ten questions flawlessly in the meeting. Then it shipped, and the answers quietly got worse the more people leaned on it. The specific ways retrieval falls apart.
Jakub Jirák · 12 min
#architecture

Designing tools for an agent: the interface is the leash

Give an agent a bash tool and it can do anything, which means your harness can control nothing. How the shape of a tool decides what you can gate, audit, and run in parallel.
Jakub Jirák · 11 min
#architecture

Multi-tenant AI is where a small mistake becomes a data breach

The moment more than one customer's data flows through your LLM features, isolation stops being a nicety. The specific places tenants leak into each other, and how to wall them off.
Jakub Jirák · 11 min
#architecture

Latency is a feature: architecting AI apps that feel fast

Users don't experience your model's tokens per second. They experience the pause before the first word, and whether the thing feels alive. The architecture of perceived speed.
Jakub Jirák · 10 min
#architecture

Choosing an embedding model is a decision you'll be stuck with

Pick the wrong one and switching means re-embedding your entire corpus. How to evaluate embedders on your own data instead of trusting a leaderboard, and what actually matters.
Jakub Jirák · 10 min
#architecture

When the model is down: designing AI features that degrade instead of die

Providers have outages, rate limits, and bad days. If your feature is a single unguarded call to one API, those become your outages. Fallbacks, backpressure, and degrading on purpose.
Jakub Jirák · 11 min
#optimization

NUMA can make a large CPU model feel broken

Memory placement is the hidden variable on dual-socket and high-core-count hosts.
Jakub Jirák · 4 min
#edge-ai

Forecast home energy on a small board

Short-horizon load predictions can schedule appliances without requiring a large language model.
Jakub Jirák · 4 min
#models

MiniMax M2.7: Migrating without changing behavior by accident

A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier.
Jakub Jirák · 6 min
#ocr

OCR models for scanned archives: capture quality before recognition

Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair.
Jakub Jirák · 5 min
#landscape

Claude Code, Copilot, Codex, Gemini: picking your pair-programmer in 2026

Four agents now sit between you and your editor. They are not interchangeable. A field guide to what each is actually good at, and where the seams show.
Jakub Jirák · 11 min
#mcp

MCP, explained: the USB-C port for AI tools (and when to build a server)

Model Context Protocol is the standard that lets any agent talk to any tool. What it is, why it caught on so fast, and the honest answer to 'should I build an MCP server?'
Jakub Jirák · 10 min
#cost

Prompt caching: the cheapest 90% off your bill (that you're probably getting wrong)

Caching the stable prefix cuts input cost ~10×. But one stray timestamp silently turns it off. And you won't get an error. The mechanics, the silent killers, and how to verify.
Jakub Jirák · 9 min
#microsoft365

The Teams Facilitator agent: the meeting note-taker that never zones out

Facilitator takes collaborative notes in real time, tracks the agenda, and surfaces decisions and action items as they happen, so nobody has to be the scribe.
Jakub Jirák · 8 min
#microsoft365

Meeting recap and summaries with Copilot: from 60 minutes to 6 bullets

Intelligent recap turns a recorded meeting into a searchable timeline with decisions, action items, and your mentions. What it captures brilliantly, and what it misses.
Jakub Jirák · 8 min
#evals

Evals and LLM-as-judge: how to know your AI feature actually works

Shipping LLM features on vibes is how you ship regressions you find out about from users. Building a golden set, using a model as a judge, and the eval-driven loop.
Jakub Jirák · 11 min
#architecture

Fine-tuning vs RAG vs prompting: the decision, and the honest costs

Three ways to make a model do what you want, endlessly confused for each other. Which one your problem actually needs, and why fine-tuning is rarely the right first move.
Jakub Jirák · 10 min
#performance

Inference optimization: how local model serving gets fast

The same model can run several times faster or slower depending on the serving stack. KV cache, batching, paged attention, and speculative decoding: what they do and when they matter.
Jakub Jirák · 10 min
#devops

AI in CI/CD and DevOps: agents in the pipeline, without the 3am page

From auto-fixing failing builds to writing Terraform, AI is moving into the pipeline. Where it helps, where it's dangerous, and the guardrails between 'useful' and 'incident'.
Jakub Jirák · 10 min
#design

AI for design and UX: from prompt to interface, without the AI slop

AI can generate a whole UI from a sentence, and a recognizably generic one. How designers use it to move faster, and where it quietly homogenizes everything it touches.
Jakub Jirák · 9 min
#legal

AI for legal and compliance: useful, until it's confidently wrong about the law

Contract review, clause extraction, policy questions: real work, done well. It also invents case law with a straight face. Where the line sits, and why 'verify' isn't optional.
Jakub Jirák · 11 min
#architecture

The context window is bigger than the context you can use

A million-token window sounds like permission to stop thinking about what goes in the prompt. It isn't. The gap between the number on the box and what the model truly reasons over.
Jakub Jirák · 10 min
#architecture

Put a gateway in front of your LLM calls

Scattering raw provider SDK calls across your codebase is a decision you'll regret. One thin layer in front buys routing, fallback, caching, limits, and a kill switch.
Jakub Jirák · 10 min
#architecture

Caching LLM responses by meaning, and when that's a terrible idea

Prompt caching saves you on the input. Response caching saves the whole call. Semantic caching saves calls for questions that merely rhyme, which is powerful and occasionally wrong.
Jakub Jirák · 10 min
#architecture

What an agent should remember, and what it should be made to forget

Most 'agent memory' systems are a vector database the project didn't need. The real memory problem, the three layers that solve it, and why a remembered mistake is worse than none.
Jakub Jirák · 11 min
#architecture

Your prompts are code. Stop editing them in a playground and shipping.

The prompt is a large part of the program. Treating it as a config string you tweak in a UI and paste into prod is how regressions ship. Version, review, and test it like code.
Jakub Jirák · 10 min
#architecture

The unglamorous half of RAG: getting documents in

Everyone obsesses over retrieval. The pipeline that turns messy PDFs and wikis into clean, chunked, current vectors is where RAG quality is actually decided, and where it quietly rots.
Jakub Jirák · 11 min
#hardware

Active cooling is part of a Raspberry Pi AI build

Sustained inference heats a Pi differently from occasional web requests and can erase benchmark results.
Jakub Jirák · 7 min
#models

Grok 4.5: Finding the production fit

A model should earn a traffic class before it earns the default route.
Jakub Jirák · 4 min
#vision

Vision models for camera-event understanding: reasoning across multiple images

Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem.
Jakub Jirák · 4 min
#economics

AI hardware ROI for an Apple Silicon local-model system: renting GPU capacity versus buying

Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk.
Jakub Jirák · 4 min
#agents

Claude Code: agentic coding from the terminal

A planning loop, multi-file edits, and your test suite as the oracle. What the terminal-native agent gets right, and how to drive it.
Jakub Jirák · 9 min
#comparison

Claude Code vs Copilot vs Cursor vs Codex vs Gemini: the 2026 comparison

Six AI coding tools, one decision table. Pricing, context, autonomy, and the single task each is actually best at, so you can pick in five minutes, not five tabs.
Jakub Jirák · 12 min
#workflow

Writing a CLAUDE.md (or AGENTS.md) that actually helps your agent

The single highest-impact thing you can do for any coding agent is a good context file. What to put in it, what to leave out, and why most of them are useless.
Jakub Jirák · 9 min
#workflow

Using AI to review code and catch bugs — without drowning in false positives

LLMs are good at finding real bugs and great at generating noise. How to get a review pass worth reading: scope it, give it the bar, and split finding from filtering.
Jakub Jirák · 9 min
#rag

Embeddings for code search: why your semantic search misses the obvious

Embedding code isn't embedding prose. Why cosine similarity finds the wrong function, how to chunk code, and the hybrid that actually surfaces what you meant.
Jakub Jirák · 9 min
#testing

AI for testing: generating tests that catch bugs, not just pass

An LLM will happily write tests that assert the code does whatever it currently does. How to get tests that actually verify behavior, and why tests are the agent's best friend.
Jakub Jirák · 9 min
#support

AI for customer support: deflection that helps, not the bot everyone hates

RAG over your knowledge base can answer most tickets, or confidently misinform at scale. The architecture, the escalation, and the accuracy bar support actually needs.
Jakub Jirák · 10 min
#rag

Do you actually need a vector database?

Everyone reaches for one the moment they hear 'RAG.' Most of them didn't need it. When Postgres is plenty, when a dedicated store earns its keep, and the cost nobody mentions.
Jakub Jirák · 10 min
#architecture

Upgrading your model is not a one-line change

The new one benchmarks better, so you swap the string and ship. A week later three things that worked are broken. Why model upgrades are migrations, not edits.
Jakub Jirák · 11 min
#architecture

Architecting for agents that run for minutes, not milliseconds

A request-response mental model breaks the instant an agent runs for ten minutes. Queues, checkpoints, idempotency, and resuming: the systems work behind long-running agents.
Jakub Jirák · 12 min
#architecture

Designing the human into the loop without killing the flow

An agent that asks permission for everything is useless. One that asks for nothing is dangerous. Where to put the human, and how to gate without grinding the work to a halt.
Jakub Jirák · 11 min
#architecture

Rent the model, own the loop: the build-versus-buy line for AI

There's a framework for everything now, and a pull to adopt one before you understand the problem. Where to build, where to buy, and why the harness is the part worth owning.
Jakub Jirák · 11 min
#architecture

Never trust the model's output: the validation layer

The model returns text, and text can be malformed, off-policy, or an injection's payload. The layer that checks what comes back before your code acts on it, and what it can't do.
Jakub Jirák · 11 min
#architecture

The data flywheel: turning production usage into a better product

Every thumbs-down, every edited response, every escalation is a signal. The architecture that captures it and feeds it back is what separates a product that improves from one that just runs.
Jakub Jirák · 11 min
#efficiency

Keep shell output from eating the context window

Test runners and build tools are written for humans; agents benefit from quieter machine-oriented modes.
Jakub Jirák · 8 min
#optimization

Prompt ingestion can dominate local latency

Long contexts punish prefill even when generation tokens arrive quickly afterward.
Jakub Jirák · 5 min
#economics

Commercial vs free models for tool-using agents: a hybrid route instead of a winner

The useful comparison often ends with two routes: a cheap private default and a visible escalation.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a shared team GPU server: comparing the complete purchase price

The GPU sticker is not the price of a working inference system.
Jakub Jirák · 7 min
#copilot

GitHub Copilot in 2026: from autocomplete to background agent

Ghost-text was the gateway drug. The interesting Copilot now is the one that opens pull requests while you're at lunch.
Jakub Jirák · 8 min
#local

The best local LLMs for coding in 2026

Ranked picks for running a coding model on your own hardware: by use case and by how much memory you've got. Plus what to skip, and the honest gap to the frontier.
Jakub Jirák · 11 min
#security

LLM application security: prompt injection, jailbreaks, and red-teaming

The attack surface of an LLM app isn't the model. It's everything you wired around it. The threats that actually matter, and the layered defenses that actually help.
Jakub Jirák · 11 min
#docs

AI for documentation: fighting the staleness that makes docs lie

AI can write docs in seconds, but writing was never the problem. Keeping them true was. How to use AI for documentation that stays honest, for humans and agents alike.
Jakub Jirák · 8 min
#edge

On-device and edge AI: running models where the cloud can't reach

Phones, laptops, and embedded devices can run real models now. The constraints, the use cases, and why 'it runs on the device' is sometimes the whole product.
Jakub Jirák · 9 min
#hardware

Where Intel Arc fits in a local LLM setup

Arc can be useful hardware when the workload matches its memory and software constraints.
Jakub Jirák · 7 min
#optimization

AVX-512 helps only inside the complete CPU path

Vector instructions matter, but memory bandwidth and runtime kernels can keep them from deciding performance.
Jakub Jirák · 5 min
#economics

Commercial vs free models for customer-support automation: latency, throughput, and queues

A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU.
Jakub Jirák · 5 min
#ocr

OCR models for tables and statements: handwriting mixed with printed text

Printed labels and handwritten values need different recognition assumptions and confidence thresholds.
Jakub Jirák · 8 min
#openai

Codex and GPT-5: OpenAI's autonomous coding stack

A CLI and a cloud agent tuned for long, unattended runs in a sandbox. What 'let it grind' actually buys you.
Jakub Jirák · 8 min
#tutorial

How to run a local LLM for coding: the complete setup guide

From zero to a private coding model wired into your editor in about fifteen minutes. Ollama, the right model for your hardware, and the endpoint that makes everything just work.
Jakub Jirák · 9 min
#efficiency

Cap output length before tuning the model

The fastest token is the one you never ask the model to generate.
Jakub Jirák · 5 min
#smart-home

Use local AI to reduce notification fatigue

Clustering and ranking can turn repeated sensor events into one useful alert when hard safety paths remain untouched.
Jakub Jirák · 9 min
#models

Qwen 3.6 Plus: Migrating without changing behavior by accident

A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier.
Jakub Jirák · 5 min
#ocr

OCR models for scanned archives: an OCR evaluation that predicts production

Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers.
Jakub Jirák · 7 min
#google

Gemini for developers: a million tokens of context in practice

The 1M-token window isn't a bigger version of the same tool. It changes what 'give it the codebase' means, and what breaks when you do.
Jakub Jirák · 8 min
#guide

The complete guide to AI-assisted coding in 2026

The whole landscape on one page: the tools, the models, the shift to agents, running locally, and the cost discipline that makes it sustainable, with a map to every deep dive.
Jakub Jirák · 13 min
#edge-ai

Using a Hailo accelerator with Raspberry Pi

The AI Kit can add efficient vision inference, provided model conversion and pipeline integration are planned first.
Jakub Jirák · 6 min
#models

GLM-5.1: Finding the production fit

A model should earn a traffic class before it earns the default route.
Jakub Jirák · 5 min
#vision

Vision models for chart and diagram understanding: preprocessing before the vision model

Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model.
Jakub Jirák · 5 min
#economics

AI hardware ROI for an edge or SBC AI fleet: the utilization curve

A fast GPU that waits all day can have worse economics than an expensive API used only when needed.
Jakub Jirák · 9 min
#architecture

AI agent architectures that don't fall over

Context, tools, memory, and evals: the boring scaffolding that decides whether your agent is a product or a demo.
Jakub Jirák · 10 min
#local

Squeeze the local tier: do everything you can before you pay

In a cascade, every step a free local model clears is a step you never pay for. A task-by-task guide to what local nails, how to push it further, and when to stop.
Jakub Jirák · 10 min
#efficiency

Run OCR before reaching for a vision LLM

Traditional extraction is faster, cheaper, and more auditable when the page is mostly text.
Jakub Jirák · 5 min
#optimization

Set different timeouts for queue, first token, and stream

One giant request timeout hides whether the server is overloaded, loading, or stalled mid-generation.
Jakub Jirák · 4 min
#vision

Vision models for document vision: video through frame sampling

A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent.
Jakub Jirák · 4 min
#economics

AI hardware ROI for a shared team GPU server: valuing productivity without inventing savings

Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint.
Jakub Jirák · 6 min
#local

Running capable code models locally: Ollama, llama.cpp, vLLM

When the code can't leave the building, or you just want zero marginal cost. What's realistic on a laptop, a workstation, and a server in 2026.
Jakub Jirák · 9 min
#routing

Building an autorouter: local-first, paid only when it must

The cascade is only as good as the function that decides when to escalate. How to build a router that drains work to local, prepares a clean handoff, then steps up to Haiku → Sonnet → Opus.
Jakub Jirák · 11 min
#local

Reach a home model safely with WireGuard

A private tunnel preserves the convenience of a local endpoint without publishing it to the internet.
Jakub Jirák · 5 min
#hardware

Model parallelism across home GPUs

Splitting weights expands capacity, but unequal cards and interconnect traffic can set an awkward speed ceiling.
Jakub Jirák · 5 min
#economics

Commercial vs free models for document extraction: the real cost per completed task

Free tokens and cheap hardware can both become expensive after retries, review, and operations.
Jakub Jirák · 8 min
#ocr

OCR models for technical documents and labels: capture quality before recognition

Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair.
Jakub Jirák · 5 min
#hardware

What hardware actually runs these models — decently

VRAM is the gate, quantization is the key, and Apple's unified memory quietly changed the math. A buyer's guide by model size, not by hype.
Jakub Jirák · 9 min
#analysis

GLM-5.2 shipped without benchmarks — and that's the story

Z.ai released GLM-5.2 the day after the US forced Anthropic to pull Fable 5 globally. A reaction: no-data is not good news, but the withdrawal is the lesson.
Jakub Jirák · 8 min
#local

Put authentication in front of the local API

Listening on the LAN is not a security model, even when the model itself is private.
Jakub Jirák · 6 min
#edge-ai

Containerize SBC AI services selectively

Containers improve repeatability, but device access, architecture builds, and memory limits need explicit handling.
Jakub Jirák · 5 min
#economics

Commercial vs free models for coding assistants: the operational burden

A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery.
Jakub Jirák · 8 min
#ocr

OCR models for invoices and receipts: languages, scripts, and mixed alphabets

Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers.
Jakub Jirák · 5 min
#apple

Apple Silicon, MLX, and Core ML for on-device LLMs

Unified memory made the Mac a serious local-inference box. MLX and Core ML are the two ways to actually use it, and they're for different jobs.
Jakub Jirák · 10 min
#hardware

Keep the model library on NVMe, not your home directory

A boring storage layout that shortens cold starts and makes large model collections manageable.
Jakub Jirák · 8 min
#edge-ai

Keep wake-word detection at the edge

A tiny always-listening model can decide when audio leaves the room device.
Jakub Jirák · 4 min
#models

Kimi K2.5: Finding the production fit

A model should earn a traffic class before it earns the default route.
Jakub Jirák · 7 min
#vision

Vision models for chart and diagram understanding: local, hosted, and hybrid vision deployment

Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling.
Jakub Jirák · 7 min
#rag

RAG that actually retrieves the right thing

Most RAG systems fail at retrieval, not generation. The fixes are unglamorous: chunk with intent, rerank, and evaluate the retriever on its own.
Jakub Jirák · 10 min
#local

A model-server health check should prove readiness

A process can accept TCP connections while weights are missing, the GPU is wedged, or generation is impossible.
Jakub Jirák · 6 min
#models

Gemini 3.5 Flash: Tool calling without magical thinking

The model proposes calls; the application owns permissions, validation, retries, and state.
Jakub Jirák · 8 min
#vision

Vision models for UI and screenshot understanding: prompts grounded in visible evidence

A good vision prompt separates observation, inference, uncertainty, and the requested action.
Jakub Jirák · 9 min
#economics

AI hardware ROI for a used-GPU inference build: electricity and cooling economics

Board power is not wall energy, and wall energy is not the entire cooling cost.
Jakub Jirák · 4 min
#agents

Agentic architectures: the four topologies and where they break

Single agent, orchestrator-worker, evaluator loop, multi-agent. Most teams reach for the most complex one first. Here's when each earns its keep.
Jakub Jirák · 11 min
#local

Read GGUF quant names without memorizing folklore

K-quants, importance matrices, and mixed precision are easier to choose when the labels map to trade-offs.
Jakub Jirák · 4 min
#local

LoRA adapters are small, but serving them is not free

Base weights can be shared while adapter loading, batching, and cache identity add operational complexity.
Jakub Jirák · 4 min
#economics

Commercial vs free models for document extraction: reliability and exit strategy

Provider outages and local hardware failures are different risks; neither architecture is automatically resilient.
Jakub Jirák · 7 min
#ocr

OCR models for technical documents and labels: an OCR evaluation that predicts production

Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers.
Jakub Jirák · 6 min
#cost

The architecture that cuts 99% of your LLM bill

Not one trick: five multiplicative levers. Cache, route, batch, compress, and shape output, and an order-of-magnitude bill becomes a rounding error.
Jakub Jirák · 11 min
#hardware

Do the vector-storage math early

Embedding dimension, precision, metadata, and index overhead can outweigh the source corpus.
Jakub Jirák · 5 min
#local

Choose a local model by active parameters, not its logo

Dense and mixture-of-experts models put different pressure on memory, compute, and storage.
Jakub Jirák · 7 min
#economics

Commercial vs free models for RAG systems: quality ceiling versus sufficient quality

The strongest answer is valuable only when the workflow benefits from the difference.
Jakub Jirák · 5 min
#ocr

OCR models for forms and handwriting: preprocessing for OCR models

Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters.
Jakub Jirák · 4 min
#copilot

Stop burning tokens in GitHub Copilot

Premium requests, model pickers, and a chat that hoards context. A practical diet for getting Copilot's value without torching your quota.
Jakub Jirák · 8 min
#optimization

Batching helps throughput and can ruin chat

How to choose between continuous batching, queues, and immediate execution on a shared local server.
Jakub Jirák · 5 min
#smart-home

Design a smart camera that stays private

Local detection helps, but retention, thumbnails, notifications, and remote access still expose household images.
Jakub Jirák · 8 min
#models

MiniMax M2.7: Finding the production fit

A model should earn a traffic class before it earns the default route.
Jakub Jirák · 5 min
#vision

Vision models for product-image analysis: video through frame sampling

A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent.
Jakub Jirák · 5 min
#tooling

Headroom: a compression layer between your agent and the model

Tool outputs, logs, and RAG chunks are mostly filler. Headroom compresses them before they hit the model: 60–95% fewer tokens, accuracy preserved.
Jakub Jirák · 8 min
#optimization

Make generation cancellation actually stop compute

Closing the browser is not enough if the server continues producing unseen tokens.
Jakub Jirák · 5 min
#models

GPT-5.6: Tool calling without magical thinking

The model proposes calls; the application owns permissions, validation, retries, and state.
Jakub Jirák · 5 min
#vision

Vision models for camera-event understanding: choosing the right vision model

A vision leaderboard cannot tell you whether the model reads your images at your resolution.
Jakub Jirák · 5 min
#economics

AI hardware ROI for an Apple Silicon local-model system: five-year total cost of ownership

Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it.
Jakub Jirák · 8 min
#tooling

Caveman: why use many token when few token do trick

A skill that makes your agent talk like a caveman: drop filler, keep substance. ~65% fewer output tokens, and the accuracy often goes up, not down.
Jakub Jirák · 6 min
#efficiency

Grammar-constrained decoding beats repeated JSON pleading

Constraining valid tokens can turn format compliance from a prompt hope into a runtime property.
Jakub Jirák · 5 min
#efficiency

Evaluate the adapter against the base model

A fine-tune earns deployment only when gains exceed new regressions and operational cost.
Jakub Jirák · 8 min
#economics

Commercial vs free models for tool-using agents: the operational burden

A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery.
Jakub Jirák · 6 min
#economics

AI hardware ROI for a personal AI workstation: depreciation and resale value

AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks.
Jakub Jirák · 7 min
#tooling

Ponytail: the lazy senior dev inside your agent

He looks at your fifty lines, says nothing, replaces them with one. Ponytail forces the laziest solution that works: 80–94% less code, 47–77% cheaper.
Jakub Jirák · 7 min
#efficiency

Small local models are excellent classifiers—after calibration

Constrained labels, confidence thresholds, and an abstain path turn cheap inference into useful routing.
Jakub Jirák · 5 min
#efficiency

Do not compare models with one universal prompt

A fair evaluation preserves the task while respecting each model’s supported conversation template.
Jakub Jirák · 6 min
#economics

Commercial vs free models for RAG systems: licenses, terms, and redistribution

Open weights, open source, free access, and commercial permission describe different things.
Jakub Jirák · 6 min
#ocr

OCR models for forms and handwriting: local hardware and hybrid OCR deployment

OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class.
Jakub Jirák · 5 min
#savings

Stacking it all: ultra token savings at the same quality

Caching, routing, compression, terse prose, lazy code. Wire all of them together and a real agent bill drops by an order of magnitude, without giving up output quality.
Jakub Jirák · 12 min
#efficiency

Give the model a repository budget

A strict evidence budget produces better coding answers than dumping every file into context.
Jakub Jirák · 7 min
#smart-home

Where AI belongs around a heat pump

Prediction and comfort modeling can help, but compressor protection and temperature limits stay deterministic.
Jakub Jirák · 5 min
#models

Qwen 3.6 Plus: Finding the production fit

A model should earn a traffic class before it earns the default route.
Jakub Jirák · 5 min
#ocr

OCR models for scanned archives: layout and reading order

Perfect words in the wrong sequence are a failed document extraction.
Jakub Jirák · 4 min
#vibecoding

Vibe coding, honestly: what changes when the agent writes the code

Strip the hype and 'vibe coding' is a real workflow shift with a real set of new failure modes. What actually changes, what doesn't, and why the harness beats the model.
Jakub Jirák · 9 min
#hardware

Do not debug AI on an underpowered SBC supply

Inference creates sustained CPU, USB, and storage load that exposes marginal cables and adapters.
Jakub Jirák · 5 min
#models

Grok 4.5: Tool calling without magical thinking

The model proposes calls; the application owns permissions, validation, retries, and state.
Jakub Jirák · 7 min
#vision

Vision models for camera-event understanding: an evaluation set for visual reasoning

Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered.
Jakub Jirák · 8 min
#economics

AI hardware ROI for an Apple Silicon local-model system: pricing risk and downtime

A cheap single box becomes expensive when its failure stops a workflow with no usable fallback.
Jakub Jirák · 5 min
#security

Sandboxing the agent: letting AI run code without losing the building

An agent that can run a command can run the wrong command. Isolation, least privilege, and approval gates are the line between a teammate and an incident.
Jakub Jirák · 9 min
#efficiency

Make review severity operational

A useful finding states impact, evidence, and a plausible failure path instead of sounding concerned.
Jakub Jirák · 7 min
#optimization

Tune continuous batching for the users you have

Scheduler limits determine whether shared inference feels efficient or merely crowded.
Jakub Jirák · 5 min
#vision

Vision models for document vision: resolution and visual-token budgets

Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product.
Jakub Jirák · 8 min
#economics

AI hardware ROI for a shared team GPU server: break-even against commercial APIs

Local hardware wins only after enough equivalent accepted work crosses the machine.
Jakub Jirák · 5 min
#economics

Is a subscription the wrong business model for AI coding tools?

Flat-rate pricing assumes a human-sized appetite for compute. Agents don't have one. Why usage is eating subscriptions, and what pricing survives.
Jakub Jirák · 8 min
#hardware

Consumer or workstation GPU for local AI?

Capacity, ECC, cooling, virtualization, and warranty matter differently from raw inference speed.
Jakub Jirák · 8 min
#local

Understand memory-mapped model loading

Fast startup and low apparent RAM use can hide page faults and storage dependence during early requests.
Jakub Jirák · 4 min
#economics

Commercial vs free models for customer-support automation: long-context economics

A giant context window can replace engineering discipline with a large recurring bill.
Jakub Jirák · 5 min
#ocr

OCR models for tables and statements: tables and key-value association

Recognizing tokens is easier than proving which label, column, row, and unit they belong to.
Jakub Jirák · 7 min
#observability

Observability for agents: you can't operate what you can't see

A coding agent in production is a nondeterministic, multi-step, tool-calling system. Traces, token accounting, and eval dashboards are how you keep it honest.
Jakub Jirák · 9 min
#efficiency

Treat summaries as lossy state, not memory

Compression keeps sessions affordable, but important constraints need a different home.
Jakub Jirák · 7 min
#security

Prompt injection can enter through a camera or calendar

Household assistants consume untrusted text from emails, QR codes, webpages, notifications, and visual scenes.
Jakub Jirák · 6 min
#models

Routing Gemini, GPT-5.6, Grok, GLM, Kimi, MiniMax, and Qwen

A practical model portfolio starts with traffic classes, quality gates, and explicit fallbacks.
Jakub Jirák · 7 min
#ocr

OCR models for invoices and receipts: choosing an OCR-capable model

OCR engines, document parsers, and vision-language models solve overlapping but different layers.
Jakub Jirák · 9 min
#skills

Governing skills at scale: progressive disclosure and software as memory

Skills turn a general agent into a specialist. But a folder of prompts per developer is chaos. Central management, progressive disclosure, and institutional memory.
Jakub Jirák · 9 min
#hardware

The used RTX 3090 buyer’s checklist for local LLMs

What matters beyond 24 GB on the sticker: power, cooling, connectors, and signs of a tired card.
Jakub Jirák · 5 min
#smart-home

Run Frigate around an SBC, not necessarily on it

A small board can coordinate cameras while a Coral, GPU, or stronger host handles sustained detection.
Jakub Jirák · 4 min
#models

GLM-5.1: Tool calling without magical thinking

The model proposes calls; the application owns permissions, validation, retries, and state.
Jakub Jirák · 7 min
#vision

Vision models for chart and diagram understanding: structured output from images

JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable.
Jakub Jirák · 7 min
#economics

AI hardware ROI for an edge or SBC AI fleet: depreciation and resale value

AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks.
Jakub Jirák · 6 min
#autonomy

Long-running autonomous agents: letting it work while you sleep

The frontier of agentic coding isn't a smarter chat. It's an agent you can trust to grind unattended for an hour. Budgets, checkpoints, and knowing when to walk away.
Jakub Jirák · 9 min
#efficiency

Price the RAG rebuild before changing chunking

A small retrieval improvement may require days of parsing, embedding, transfer, and validation.
Jakub Jirák · 5 min
#efficiency

Deduplicate identical in-flight LLM requests

Concurrent callers can share one generation when prompt, settings, permissions, and freshness requirements truly match.
Jakub Jirák · 8 min
#vision

Vision models for document vision: privacy and security for visual inputs

Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a shared team GPU server: a sensitivity analysis that can change the answer

ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth.
Jakub Jirák · 4 min
#policy

Export controls and the geopolitics of your AI coding stack

The model behind your agent is also a geopolitical artifact. Export rules, open weights, and why where a model comes from is now an architecture decision.
Jakub Jirák · 8 min
#optimization

Batch size on Apple Silicon is a memory decision

Unified memory makes experimentation easy, but larger batches can crowd out the rest of the workstation.
Jakub Jirák · 5 min
#hardware

Idle power belongs in the GPU purchase decision

An always-on local server can spend more energy waiting than generating.
Jakub Jirák · 8 min
#economics

Commercial vs free models for document extraction: privacy and data control

Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server.
Jakub Jirák · 7 min
#ocr

OCR models for technical documents and labels: layout and reading order

Perfect words in the wrong sequence are a failed document extraction.
Jakub Jirák · 5 min
#rag

Knowledge graphs vs vector RAG: when relationships beat similarity

Vector search finds chunks that look like your query. Some questions need chunks that are connected to each other. A practical comparison, and the hybrid that wins.
Jakub Jirák · 9 min
#local

Back up configuration, not 500 GB of weights

A local AI rebuild is fast when the small, irreplaceable parts are identified correctly.
Jakub Jirák · 6 min
#edge-ai

Benchmark AI on an SBC without fooling yourself

Cold storage, thermal state, power mode, and background services dominate small-board results.
Jakub Jirák · 8 min
#economics

Commercial vs free models for coding assistants: tools and integration quality

Native tools save glue code, while open stacks preserve portability and make boundaries inspectable.
Jakub Jirák · 7 min
#ocr

OCR models for invoices and receipts: structured OCR with provenance

Every consequential field should point back to the pixels that support it.
Jakub Jirák · 5 min
#workflow

Using AI to learn faster, not just to type faster

The biggest gain from these tools isn't the code they write. It's how fast they get you to competence in something you didn't understand yesterday. If you let them.
Jakub Jirák · 8 min
#hardware

Build a local AI workstation you can live beside

Fan curves, case pressure, power caps, and why acoustic comfort changes how often local models get used.
Jakub Jirák · 6 min
#smart-home

Design the smart home to work when AI is down

Lights, locks, alarms, and heating should not depend on a model server completing a generation.
Jakub Jirák · 5 min
#models

Kimi K2.5: Tool calling without magical thinking

The model proposes calls; the application owns permissions, validation, retries, and state.
Jakub Jirák · 6 min
#vision

Vision models for product-image analysis: resolution and visual-token budgets

Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product.
Jakub Jirák · 6 min
#architecture

Advanced agent architecture: context is the scarce resource

Past the basics, every hard agent problem is a context problem. Compaction, context editing, memory tiers, sub-agent isolation, and keeping intermediate results out of the window.
Jakub Jirák · 11 min
#local

Run the model server under systemd

Restart policies, resource limits, logs, and dependencies make a home service boring in the best way.
Jakub Jirák · 5 min
#models

Gemini 3.5 Flash: The cost and latency worksheet

Token prices, reasoning effort, caching, retries, and review time belong in one calculation.
Jakub Jirák · 6 min
#vision

Vision models for UI and screenshot understanding: reasoning across multiple images

Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem.
Jakub Jirák · 6 min
#economics

AI hardware ROI for a used-GPU inference build: renting GPU capacity versus buying

Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk.
Jakub Jirák · 5 min
#cost

Local-first, last-mile-paid: the model cascade that runs mostly free

Do the bulk of the work on a free local model; escalate to Haiku, then Sonnet, then Opus only at the last mile where it's actually needed. The architecture and the triggers.
Jakub Jirák · 11 min
#local

The prompt template can ruin a good local model

Chat markers and system-message conventions are part of the model, not cosmetic wrapper text.
Jakub Jirák · 8 min
#hardware

Budget home hardware for QLoRA honestly

Quantized training saves weight memory, but gradients, optimizer state, activations, sequence length, and batches remain.
Jakub Jirák · 5 min
#economics

Commercial vs free models for document extraction: a hybrid route instead of a winner

The useful comparison often ends with two routes: a cheap private default and a visible escalation.
Jakub Jirák · 7 min
#economics

AI hardware ROI for a personal AI workstation: comparing the complete purchase price

The GPU sticker is not the price of a working inference system.
Jakub Jirák · 4 min
#hardware

Measure tokens per joule, not only tokens per second

Energy efficiency reveals better hardware and settings for long-running local workloads.
Jakub Jirák · 4 min
#efficiency

Put a reasoning budget on local models

Long hidden or visible reasoning can consume latency and energy without improving routine answers.
Jakub Jirák · 5 min
#economics

Commercial vs free models for RAG systems: latency, throughput, and queues

A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU.
Jakub Jirák · 5 min
#ocr

OCR models for forms and handwriting: handwriting mixed with printed text

Printed labels and handwritten values need different recognition assumptions and confidence thresholds.
Jakub Jirák · 8 min
#optimization

Find the speculative-decoding break-even point

Draft models are useful only when acceptance rate repays their memory and coordination overhead.
Jakub Jirák · 5 min
#edge-ai

Local package detection is a good edge-AI project

The event is narrow, visually distinct, and useful even when the detector occasionally abstains.
Jakub Jirák · 7 min
#models

MiniMax M2.7: Tool calling without magical thinking

The model proposes calls; the application owns permissions, validation, retries, and state.
Jakub Jirák · 4 min
#vision

Vision models for product-image analysis: privacy and security for visual inputs

Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task.
Jakub Jirák · 4 min
#edge-ai

What a Raspberry Pi 5 can realistically do with a local LLM

Small quantized models are useful on a Pi when the job is narrow and latency is not disguised.
Jakub Jirák · 7 min
#models

GPT-5.6: The cost and latency worksheet

Token prices, reasoning effort, caching, retries, and review time belong in one calculation.
Jakub Jirák · 5 min
#vision

Vision models for camera-event understanding: preprocessing before the vision model

Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model.
Jakub Jirák · 5 min
#economics

AI hardware ROI for an Apple Silicon local-model system: the utilization curve

A fast GPU that waits all day can have worse economics than an expensive API used only when needed.
Jakub Jirák · 7 min
#local

How large must a local tool-calling model be?

Tool count, schema complexity, argument precision, and recovery matter more than a single parameter threshold.
Jakub Jirák · 7 min
#local

Sliding-window attention changes long-context expectations

A large advertised window may not give every token equal access to every earlier detail.
Jakub Jirák · 6 min
#economics

Commercial vs free models for tool-using agents: tools and integration quality

Native tools save glue code, while open stacks preserve portability and make boundaries inspectable.
Jakub Jirák · 4 min
#economics

AI hardware ROI for a personal AI workstation: valuing productivity without inventing savings

Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint.
Jakub Jirák · 9 min
#efficiency

A practical local-first, cloud-second policy

Keep ordinary and sensitive work nearby while escalating cases that need capability or context.
Jakub Jirák · 7 min
#local

A portfolio of small models can beat one large resident model

Specialists reduce latency and memory when routing and maintenance stay simple.
Jakub Jirák · 4 min
#economics

Commercial vs free models for customer-support automation: the real cost per completed task

Free tokens and cheap hardware can both become expensive after retries, review, and operations.
Jakub Jirák · 5 min
#ocr

OCR models for tables and statements: capture quality before recognition

Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair.
Jakub Jirák · 7 min
#efficiency

Put a retry budget on structured output

Schemas help automation, but blind retries can turn one malformed response into a latency spiral.
Jakub Jirák · 7 min
#smart-home

Analyze indoor air quality locally

CO2, particles, humidity, and VOC sensors become useful when calibration and room context are respected.
Jakub Jirák · 5 min
#models

Qwen 3.6 Plus: Tool calling without magical thinking

The model proposes calls; the application owns permissions, validation, retries, and state.
Jakub Jirák · 7 min
#ocr

OCR models for scanned archives: languages, scripts, and mixed alphabets

Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers.
Jakub Jirák · 5 min
#hardware

Power edge AI nodes with PoE when wiring allows

One cable simplifies placement and recovery, but the thermal and power budget still needs arithmetic.
Jakub Jirák · 5 min
#models

Grok 4.5: The cost and latency worksheet

Token prices, reasoning effort, caching, retries, and review time belong in one calculation.
Jakub Jirák · 6 min
#vision

Vision models for camera-event understanding: local, hosted, and hybrid vision deployment

Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling.
Jakub Jirák · 7 min
#economics

AI hardware ROI for an edge or SBC AI fleet: comparing the complete purchase price

The GPU sticker is not the price of a working inference system.
Jakub Jirák · 5 min
#local

Local inference does not eliminate redaction

Logs, caches, vector stores, backups, and screenshots can spread sensitive text after the model call ends.
Jakub Jirák · 6 min
#optimization

Give the KV cache an eviction policy

Idle conversations can occupy expensive memory long after their users leave.
Jakub Jirák · 5 min
#vision

Vision models for document vision: prompts grounded in visible evidence

A good vision prompt separates observation, inference, uncertainty, and the requested action.
Jakub Jirák · 7 min
#economics

AI hardware ROI for a shared team GPU server: electricity and cooling economics

Board power is not wall energy, and wall energy is not the entire cooling cost.
Jakub Jirák · 5 min
#hardware

Buying a laptop for local models

Soldered memory, reduced GPU power, heat, and battery behavior make desktop advice unreliable.
Jakub Jirák · 6 min
#optimization

zram can save a small host, not accelerate model weights

Compressed swap is useful for ordinary pages while incompressible quantized weights remain a poor target.
Jakub Jirák · 5 min
#economics

Commercial vs free models for customer-support automation: reliability and exit strategy

Provider outages and local hardware failures are different risks; neither architecture is automatically resilient.
Jakub Jirák · 4 min
#ocr

OCR models for tables and statements: an OCR evaluation that predicts production

Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers.
Jakub Jirák · 6 min
#local

Build a boring local model router

Simple rules based on task, context size, and latency can outperform a clever learned router.
Jakub Jirák · 6 min
#security

Log smart-home AI without logging the household

Operational metrics can diagnose latency and failures without retaining every utterance, image, and entity state.
Jakub Jirák · 5 min
#economics

Commercial vs free models for coding assistants: quality ceiling versus sufficient quality

The strongest answer is valuable only when the workflow benefits from the difference.
Jakub Jirák · 7 min
#ocr

OCR models for invoices and receipts: preprocessing for OCR models

Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters.
Jakub Jirák · 6 min
#hardware

PCIe lanes matter less—and more—than you think

A practical guide to dual-GPU inference without turning motherboard shopping into folklore.
Jakub Jirák · 5 min
#smart-home

Build a Raspberry Pi voice satellite, not a second server

The room device should capture and play audio while central hardware performs heavier speech and language work.
Jakub Jirák · 7 min
#models

GLM-5.1: The cost and latency worksheet

Token prices, reasoning effort, caching, retries, and review time belong in one calculation.
Jakub Jirák · 5 min
#vision

Vision models for chart and diagram understanding: video through frame sampling

A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent.
Jakub Jirák · 5 min
#economics

AI hardware ROI for an edge or SBC AI fleet: valuing productivity without inventing savings

Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint.
Jakub Jirák · 5 min
#efficiency

Metadata filters are cheaper than better embeddings

Tenant, product, version, language, and time constraints can remove impossible documents before similarity search.
Jakub Jirák · 4 min
#efficiency

Include human review in LLM efficiency math

Cheap generation can be expensive when every answer requires careful repair.
Jakub Jirák · 7 min
#vision

Vision models for UI and screenshot understanding: choosing the right vision model

A vision leaderboard cannot tell you whether the model reads your images at your resolution.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a used-GPU inference build: five-year total cost of ownership

Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it.
Jakub Jirák · 8 min
#optimization

Read macOS memory pressure during inference

Free-memory numbers are misleading on a system designed to use RAM aggressively.
Jakub Jirák · 5 min
#hardware

Rack server or tower for local LLMs?

Density and remote management compete with noise, idle power, GPU fit, and household practicality.
Jakub Jirák · 7 min
#economics

Commercial vs free models for document extraction: the operational burden

A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery.
Jakub Jirák · 9 min
#ocr

OCR models for technical documents and labels: languages, scripts, and mixed alphabets

Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers.
Jakub Jirák · 4 min
#local

Separate the embedding server from generation

Embeddings and chat have different latency, batching, and model-residency patterns.
Jakub Jirák · 4 min
#hardware

The enclosure is part of the edge model

Plastic, metal, vents, dust, orientation, and nearby equipment decide sustained clocks and sensor reliability.
Jakub Jirák · 4 min
#economics

Commercial vs free models for coding assistants: licenses, terms, and redistribution

Open weights, open source, free access, and commercial permission describe different things.
Jakub Jirák · 6 min
#ocr

OCR models for invoices and receipts: local hardware and hybrid OCR deployment

OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class.
Jakub Jirák · 5 min
#local

A/B test quants with your prompts, not a leaderboard

A small blind test reveals whether Q4, Q5, or Q8 is worth the memory on your machine.
Jakub Jirák · 5 min
#smart-home

Matter does not make the AI layer automatic

Device interoperability solves discovery and control, while reasoning and household policy remain separate.
Jakub Jirák · 7 min
#models

Kimi K2.5: The cost and latency worksheet

Token prices, reasoning effort, caching, retries, and review time belong in one calculation.
Jakub Jirák · 4 min
#vision

Vision models for product-image analysis: prompts grounded in visible evidence

A good vision prompt separates observation, inference, uncertainty, and the requested action.
Jakub Jirák · 4 min
#local

Fix model-cache ownership before the container starts

Large downloads magnify a small UID, mount, or read-only-volume mistake.
Jakub Jirák · 9 min
#models

Gemini 3.5 Flash: An evaluation set worth keeping

Vendor benchmarks orient the search; local failures decide what gets deployed.
Jakub Jirák · 5 min
#vision

Vision models for UI and screenshot understanding: an evaluation set for visual reasoning

Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a used-GPU inference build: pricing risk and downtime

A cheap single box becomes expensive when its failure stops a workflow with no usable fallback.
Jakub Jirák · 7 min
#efficiency

Use different sampling settings for different jobs

Code repair, extraction, brainstorming, and prose should not share one inherited temperature.
Jakub Jirák · 7 min
#efficiency

One hundred clean examples can beat ten thousand scraped ones

Local fine-tuning amplifies contradictions, formatting errors, and accidental shortcuts in the dataset.
Jakub Jirák · 5 min
#economics

Commercial vs free models for tool-using agents: quality ceiling versus sufficient quality

The strongest answer is valuable only when the workflow benefits from the difference.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a personal AI workstation: break-even against commercial APIs

Local hardware wins only after enough equivalent accepted work crosses the machine.
Jakub Jirák · 5 min
#optimization

Average latency hides the local server you actually have

Tail latency exposes model swaps, thermal throttling, queues, and background contention.
Jakub Jirák · 5 min
#local

Base or instruct model for a local application?

Instruction tuning is convenient for assistants; base models still matter for completion and controlled adaptation.
Jakub Jirák · 5 min
#economics

Commercial vs free models for RAG systems: long-context economics

A giant context window can replace engineering discipline with a large recurring bill.
Jakub Jirák · 4 min
#ocr

OCR models for forms and handwriting: tables and key-value association

Recognizing tokens is easier than proving which label, column, row, and unit they belong to.
Jakub Jirák · 7 min
#optimization

Stop giving llama.cpp every CPU thread

Thread count, physical cores, and memory bandwidth rarely scale in a straight line.
Jakub Jirák · 4 min
#smart-home

Make smart irrigation sensor-first and AI-second

Soil moisture, rain, season, and valve feedback should bound any model recommendation.
Jakub Jirák · 6 min
#ocr

OCR models for scanned archives: choosing an OCR-capable model

OCR engines, document parsers, and vision-language models solve overlapping but different layers.
Jakub Jirák · 7 min
#hardware

Choose Raspberry Pi memory for the whole home stack

Home Assistant, containers, caches, and an AI model all compete for the same RAM.
Jakub Jirák · 6 min
#models

GPT-5.6: An evaluation set worth keeping

Vendor benchmarks orient the search; local failures decide what gets deployed.
Jakub Jirák · 4 min
#vision

Vision models for camera-event understanding: structured output from images

JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable.
Jakub Jirák · 4 min
#economics

AI hardware ROI for an Apple Silicon local-model system: depreciation and resale value

AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks.
Jakub Jirák · 6 min
#efficiency

Return compact tool results to the model

The model needs decision-relevant evidence, not every byte a command produced.
Jakub Jirák · 5 min
#efficiency

Design around the lost-in-the-middle problem

Relevant evidence buried in a long prompt can be harder to use than a smaller, well-ordered context.
Jakub Jirák · 5 min
#economics

Commercial vs free models for tool-using agents: licenses, terms, and redistribution

Open weights, open source, free access, and commercial permission describe different things.
Jakub Jirák · 8 min
#economics

AI hardware ROI for a personal AI workstation: a sensitivity analysis that can change the answer

ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth.
Jakub Jirák · 6 min
#hardware

NVIDIA or AMD for a local inference box?

The software stack, memory capacity, power, and maintenance questions that matter after launch-day benchmarks fade.
Jakub Jirák · 5 min
#hardware

Server CPU or desktop CPU for local models?

More channels and capacity compete with higher clocks, lower idle power, and simpler platforms.
Jakub Jirák · 8 min
#economics

Commercial vs free models for customer-support automation: privacy and data control

Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server.
Jakub Jirák · 8 min
#ocr

OCR models for tables and statements: layout and reading order

Perfect words in the wrong sequence are a failed document extraction.
Jakub Jirák · 5 min
#efficiency

Know when to start a fresh conversation

Long chats accumulate stale assumptions, duplicated evidence, and a growing bill.
Jakub Jirák · 8 min
#smart-home

Let an LLM summarize the dashboard, not run it

A local model can turn overnight events into a readable briefing without controlling devices.
Jakub Jirák · 4 min
#models

Qwen 3.6 Plus: The cost and latency worksheet

Token prices, reasoning effort, caching, retries, and review time belong in one calculation.
Jakub Jirák · 7 min
#ocr

OCR models for scanned archives: structured OCR with provenance

Every consequential field should point back to the pixels that support it.
Jakub Jirák · 5 min
#edge-ai

Where a USB Coral still earns its place

A small Edge TPU remains excellent for supported vision models even when it cannot run a general LLM.
Jakub Jirák · 5 min
#models

Grok 4.5: An evaluation set worth keeping

Vendor benchmarks orient the search; local failures decide what gets deployed.
Jakub Jirák · 8 min
#vision

Vision models for chart and diagram understanding: resolution and visual-token budgets

Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product.
Jakub Jirák · 9 min
#economics

AI hardware ROI for an edge or SBC AI fleet: break-even against commercial APIs

Local hardware wins only after enough equivalent accepted work crosses the machine.
Jakub Jirák · 4 min
#hardware

Budgeting VRAM for local vision models

Image encoders, projected tokens, multiple images, and long outputs alter the familiar text-only calculation.
Jakub Jirák · 4 min
#local

OpenAI-compatible does not mean behavior-compatible

Streaming events, tool calls, token counts, errors, and unsupported fields vary across local servers.
Jakub Jirák · 4 min
#vision

Vision models for document vision: reasoning across multiple images

Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem.
Jakub Jirák · 6 min
#economics

AI hardware ROI for a shared team GPU server: renting GPU capacity versus buying

Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk.
Jakub Jirák · 5 min
#hardware

How fast should the network be for a local LLM server?

Chat needs little bandwidth; model transfer, multimodal inputs, and shared storage change the answer.
Jakub Jirák · 5 min
#hardware

GPU passthrough for a local LLM virtual machine

Isolation and reproducibility are useful, but IOMMU groups, reset behavior, and memory pinning complicate the build.
Jakub Jirák · 7 min
#economics

Commercial vs free models for customer-support automation: a hybrid route instead of a winner

The useful comparison often ends with two routes: a cheap private default and a visible escalation.
Jakub Jirák · 5 min
#ocr

OCR models for technical documents and labels: choosing an OCR-capable model

OCR engines, document parsers, and vision-language models solve overlapping but different layers.
Jakub Jirák · 4 min
#local

When vLLM belongs in a home lab

Continuous batching is compelling for shared use and unnecessary for many single-user machines.
Jakub Jirák · 5 min
#smart-home

Back up the smart-home AI stack in layers

Configuration and household state are precious; downloaded models, camera buffers, and derived indexes usually are not.
Jakub Jirák · 8 min
#economics

Commercial vs free models for coding assistants: latency, throughput, and queues

A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU.
Jakub Jirák · 5 min
#ocr

OCR models for invoices and receipts: handwriting mixed with printed text

Printed labels and handwritten values need different recognition assumptions and confidence thresholds.
Jakub Jirák · 5 min
#hardware

System RAM is not slow VRAM

How much memory CPU offload needs, what it costs, and when partial offload is still useful.
Jakub Jirák · 4 min
#smart-home

Local text-to-speech makes smart-home replies resilient

Compact TTS can produce useful announcements without sending household text or voice profiles away.
Jakub Jirák · 7 min
#models

GLM-5.1: An evaluation set worth keeping

Vendor benchmarks orient the search; local failures decide what gets deployed.
Jakub Jirák · 5 min
#vision

Vision models for chart and diagram understanding: privacy and security for visual inputs

Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task.
Jakub Jirák · 5 min
#economics

AI hardware ROI for an edge or SBC AI fleet: a sensitivity analysis that can change the answer

ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth.
Jakub Jirák · 8 min
#local

The minimum observability for local inference

Five timestamps and a few resource gauges explain most complaints without collecting prompt content.
Jakub Jirák · 5 min
#models

Gemini 3.5 Flash: A coding workflow that survives the demo

Repository evidence, tools, tests, and review matter more than one generated function.
Jakub Jirák · 4 min
#vision

Vision models for UI and screenshot understanding: preprocessing before the vision model

Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model.
Jakub Jirák · 4 min
#economics

AI hardware ROI for a used-GPU inference build: the utilization curve

A fast GPU that waits all day can have worse economics than an expensive API used only when needed.
Jakub Jirák · 7 min
#hardware

Mac Studio or multi-GPU PC for local AI?

One offers quiet unified capacity; the other offers modular accelerators and a broader serving ecosystem.
Jakub Jirák · 4 min
#optimization

Deduplicate the local model collection safely

Hard links, reflinks, manifests, and content-addressed storage can reclaim space without losing provenance.
Jakub Jirák · 6 min
#economics

Commercial vs free models for document extraction: tools and integration quality

Native tools save glue code, while open stacks preserve portability and make boundaries inspectable.
Jakub Jirák · 6 min
#ocr

OCR models for technical documents and labels: structured OCR with provenance

Every consequential field should point back to the pixels that support it.
Jakub Jirák · 5 min
#efficiency

Chunk code by symbols, not arbitrary token windows

Functions, classes, tests, and call relationships make better retrieval units than sliced text.
Jakub Jirák · 8 min
#smart-home

Most smart-home automations do not need an LLM

Schedules, thresholds, state machines, and scripts are faster, cheaper, and easier to trust.
Jakub Jirák · 5 min
#economics

Commercial vs free models for RAG systems: the real cost per completed task

Free tokens and cheap hardware can both become expensive after retries, review, and operations.
Jakub Jirák · 4 min
#ocr

OCR models for forms and handwriting: capture quality before recognition

Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair.
Jakub Jirák · 4 min
#optimization

Prefix caching is the easiest local speedup to miss

Stable instructions and reusable prefixes can remove repeated prompt work without changing the model.
Jakub Jirák · 7 min
#smart-home

AI should interpret Zigbee data, not replace Zigbee rules

Fast local automations belong in the coordinator; models can analyze patterns and exceptions afterward.
Jakub Jirák · 5 min
#models

Kimi K2.5: An evaluation set worth keeping

Vendor benchmarks orient the search; local failures decide what gets deployed.
Jakub Jirák · 7 min
#vision

Vision models for product-image analysis: reasoning across multiple images

Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem.
Jakub Jirák · 8 min
#optimization

Backpressure is kinder than an infinite inference queue

Bounded queues make overload visible and prevent ten-minute-old interactive requests from wasting compute.
Jakub Jirák · 7 min
#models

GPT-5.6: A coding workflow that survives the demo

Repository evidence, tools, tests, and review matter more than one generated function.
Jakub Jirák · 8 min
#vision

Vision models for UI and screenshot understanding: local, hosted, and hybrid vision deployment

Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling.
Jakub Jirák · 8 min
#economics

AI hardware ROI for an Apple Silicon local-model system: comparing the complete purchase price

The GPU sticker is not the price of a working inference system.
Jakub Jirák · 5 min
#efficiency

Stop sequences are a latency and safety tool

Ending generation at a known boundary prevents rambling and makes parsers less fragile.
Jakub Jirák · 8 min
#efficiency

Recognize local fine-tuning overfit early

Training loss can improve while the adapter memorizes phrasing and loses flexibility.
Jakub Jirák · 4 min
#economics

Commercial vs free models for tool-using agents: latency, throughput, and queues

A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a personal AI workstation: electricity and cooling economics

Board power is not wall energy, and wall energy is not the entire cooling cost.
Jakub Jirák · 5 min
#local

Rank local models by quality per occupied gigabyte

Capacity is a portfolio problem when several specialized models share one machine.
Jakub Jirák · 6 min
#local

Have a retirement plan for local models

Old weights linger in scripts, caches, indexes, and prompts long after a better replacement arrives.
Jakub Jirák · 5 min
#economics

Commercial vs free models for RAG systems: reliability and exit strategy

Provider outages and local hardware failures are different risks; neither architecture is automatically resilient.
Jakub Jirák · 5 min
#ocr

OCR models for forms and handwriting: an OCR evaluation that predicts production

Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers.
Jakub Jirák · 8 min
#optimization

Warm up, then benchmark the workflow

One cold run and one hot run answer different questions; neither alone describes daily use.
Jakub Jirák · 5 min
#smart-home

Keep solar and battery optimization local

Local forecasts and tariff rules can reduce grid cost while preserving control during internet outages.
Jakub Jirák · 4 min
#models

MiniMax M2.7: An evaluation set worth keeping

Vendor benchmarks orient the search; local failures decide what gets deployed.
Jakub Jirák · 7 min
#ocr

OCR models for scanned archives: preprocessing for OCR models

Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters.
Jakub Jirák · 6 min
#hardware

Put Raspberry Pi AI workloads on NVMe

Model loading, databases, camera buffers, and updates are a poor match for an overworked microSD card.
Jakub Jirák · 5 min
#models

Grok 4.5: A coding workflow that survives the demo

Repository evidence, tools, tests, and review matter more than one generated function.
Jakub Jirák · 5 min
#vision

Vision models for camera-event understanding: video through frame sampling

A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent.
Jakub Jirák · 5 min
#economics

AI hardware ROI for an Apple Silicon local-model system: valuing productivity without inventing savings

Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint.
Jakub Jirák · 4 min
#efficiency

Give an LLM the diff plus just enough neighborhood

Whole-repository review wastes context; diff-only review misses invariants unless retrieval fills the gap.
Jakub Jirák · 5 min
#optimization

Parallel prompt processing needs workload evidence

More batch or parallelism can accelerate ingestion while increasing memory and hurting competing requests.
Jakub Jirák · 8 min
#vision

Vision models for document vision: choosing the right vision model

A vision leaderboard cannot tell you whether the model reads your images at your resolution.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a shared team GPU server: five-year total cost of ownership

Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it.
Jakub Jirák · 5 min
#hardware

Why memory bandwidth predicts local token speed

Parameter count gets the headline, but moving weights repeatedly often sets decoding throughput.
Jakub Jirák · 4 min
#optimization

Huge pages are a measurable optimization, not a ritual

Reducing translation overhead can help large mappings, but configuration cost and workload shape determine value.
Jakub Jirák · 7 min
#economics

Commercial vs free models for customer-support automation: the operational burden

A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery.
Jakub Jirák · 7 min
#ocr

OCR models for tables and statements: languages, scripts, and mixed alphabets

Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers.
Jakub Jirák · 5 min
#efficiency

Lower top-k until retrieval has to earn each chunk

More retrieved passages often add contradiction and dilute the evidence the model should follow.
Jakub Jirák · 6 min
#security

Draw a hard tool boundary around the house

Read-only queries, reversible actions, and dangerous operations should be different interfaces with different approvals.
Jakub Jirák · 5 min
#models

Qwen 3.6 Plus: An evaluation set worth keeping

Vendor benchmarks orient the search; local failures decide what gets deployed.
Jakub Jirák · 6 min
#ocr

OCR models for scanned archives: local hardware and hybrid OCR deployment

OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class.
Jakub Jirák · 4 min
#hardware

Do the VRAM budget before downloading the model

A five-minute worksheet for deciding whether a model, context window, and KV cache will actually fit.
Jakub Jirák · 4 min
#edge-ai

Design a Pi camera pipeline before choosing the model

Resolution, frame rate, cropping, and motion gates determine more compute than the detector name.
Jakub Jirák · 4 min
#models

GLM-5.1: A coding workflow that survives the demo

Repository evidence, tools, tests, and review matter more than one generated function.
Jakub Jirák · 6 min
#vision

Vision models for chart and diagram understanding: prompts grounded in visible evidence

A good vision prompt separates observation, inference, uncertainty, and the requested action.
Jakub Jirák · 6 min
#economics

AI hardware ROI for an edge or SBC AI fleet: electricity and cooling economics

Board power is not wall energy, and wall energy is not the entire cooling cost.
Jakub Jirák · 5 min
#local

Plan embedding upgrades as migrations

New vectors are not drop-in replacements for an existing index, even when dimensions match.
Jakub Jirák · 8 min
#optimization

Prevent retry storms on a local model server

A slow GPU can collapse when every impatient client resubmits the same expensive prompt.
Jakub Jirák · 5 min
#vision

Vision models for document vision: an evaluation set for visual reasoning

Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered.
Jakub Jirák · 4 min
#economics

AI hardware ROI for a shared team GPU server: pricing risk and downtime

A cheap single box becomes expensive when its failure stops a workflow with no usable fallback.
Jakub Jirák · 4 min
#optimization

Wake the GPU server only when work arrives

A small always-on gateway can remove most idle power without making local inference inconvenient.
Jakub Jirák · 8 min
#hardware

Mixing GPU generations in one inference host

Different capacities can cooperate, but kernel support, link speed, and load balance decide whether they should.
Jakub Jirák · 5 min
#economics

Commercial vs free models for document extraction: quality ceiling versus sufficient quality

The strongest answer is valuable only when the workflow benefits from the difference.
Jakub Jirák · 5 min
#ocr

OCR models for technical documents and labels: preprocessing for OCR models

Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters.
Jakub Jirák · 8 min
#local

Verify what you download from a model hub

Weights, tokenizer files, templates, and optional custom code all belong to the supply chain.
Jakub Jirák · 5 min
#edge-ai

Update edge AI models without visiting every room

Versioned artifacts, staged rollout, health checks, and rollback turn scattered nodes into maintainable infrastructure.
Jakub Jirák · 7 min
#economics

Commercial vs free models for coding assistants: long-context economics

A giant context window can replace engineering discipline with a large recurring bill.
Jakub Jirák · 5 min
#ocr

OCR models for invoices and receipts: tables and key-value association

Recognizing tokens is easier than proving which label, column, row, and unit they belong to.
Jakub Jirák · 8 min
#hardware

Do you need ECC for a home LLM server?

A risk-based answer for inference, fine-tuning, and machines that run unattended.
Jakub Jirák · 5 min
#smart-home

Connect a local LLM to Home Assistant carefully

Natural language is useful for interpretation and explanation, but deterministic automations should remain deterministic.
Jakub Jirák · 9 min
#models

Kimi K2.5: A coding workflow that survives the demo

Repository evidence, tools, tests, and review matter more than one generated function.
Jakub Jirák · 5 min
#vision

Vision models for product-image analysis: choosing the right vision model

A vision leaderboard cannot tell you whether the model reads your images at your resolution.
Jakub Jirák · 5 min
#local

Restart a local model server without dropping work

Drain, stop admission, finish bounded requests, and warm the replacement before switching traffic.
Jakub Jirák · 7 min
#models

Gemini 3.5 Flash: Long context without the token landfill

A large window is capacity, not permission to resend every available document.
Jakub Jirák · 5 min
#vision

Vision models for UI and screenshot understanding: structured output from images

JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a used-GPU inference build: depreciation and resale value

AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks.
Jakub Jirák · 9 min
#local

What an importance matrix changes

Calibration data can preserve important weights during quantization, but it does not guarantee your workload benefits.
Jakub Jirák · 5 min
#local

Merge a LoRA or load it dynamically?

Merged artifacts simplify inference; dynamic adapters preserve flexibility and shared base weights.
Jakub Jirák · 4 min
#economics

Commercial vs free models for document extraction: licenses, terms, and redistribution

Open weights, open source, free access, and commercial permission describe different things.
Jakub Jirák · 5 min
#ocr

OCR models for technical documents and labels: local hardware and hybrid OCR deployment

OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class.
Jakub Jirák · 7 min
#efficiency

Build the eval set from embarrassing failures

Twenty real mistakes are more useful than a thousand generic benchmark questions.
Jakub Jirák · 7 min
#local

Dense or MoE for local inference?

Mixture-of-experts can offer strong quality per active compute while demanding awkward memory capacity.
Jakub Jirák · 5 min
#economics

Commercial vs free models for RAG systems: privacy and data control

Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server.
Jakub Jirák · 8 min
#ocr

OCR models for forms and handwriting: layout and reading order

Perfect words in the wrong sequence are a failed document extraction.
Jakub Jirák · 5 min
#optimization

Verify Flash Attention is actually active

A flag in a launch command is not proof that the optimized kernel is running.
Jakub Jirák · 7 min
#smart-home

Think twice before home face recognition

Identification can personalize automations, but false matches and biometric retention carry unusual consequences.
Jakub Jirák · 5 min
#models

MiniMax M2.7: A coding workflow that survives the demo

Repository evidence, tools, tests, and review matter more than one generated function.
Jakub Jirák · 7 min
#vision

Vision models for product-image analysis: an evaluation set for visual reasoning

Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered.
Jakub Jirák · 7 min
#efficiency

Count the full cost of local inference

Hardware purchase is only one line beside electricity, idle time, storage, maintenance, and replacement risk.
Jakub Jirák · 6 min
#models

GPT-5.6: Long context without the token landfill

A large window is capacity, not permission to resend every available document.
Jakub Jirák · 7 min
#vision

Vision models for camera-event understanding: resolution and visual-token budgets

Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product.
Jakub Jirák · 7 min
#economics

AI hardware ROI for an Apple Silicon local-model system: break-even against commercial APIs

Local hardware wins only after enough equivalent accepted work crosses the machine.
Jakub Jirák · 5 min
#local

Local tool calling is mostly an interface contract

A model does not execute tools; it emits an argument proposal that your application must distrust and manage.
Jakub Jirák · 6 min
#optimization

Compress context with evidence-aware rules

Removing boilerplate and stale tool output is safer than asking another model to summarize everything blindly.
Jakub Jirák · 5 min
#economics

Commercial vs free models for tool-using agents: long-context economics

A giant context window can replace engineering discipline with a large recurring bill.
Jakub Jirák · 5 min
#economics

AI hardware ROI for a personal AI workstation: renting GPU capacity versus buying

Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk.
Jakub Jirák · 4 min
#local

The CPU-only local model is not a consolation prize

For background extraction and private utilities, predictable slow inference can be entirely sufficient.
Jakub Jirák · 5 min
#efficiency

Teach the local workflow to accept “I do not know”

Abstention prevents a compact model from turning uncertainty into confident automation.
Jakub Jirák · 4 min
#economics

Commercial vs free models for RAG systems: a hybrid route instead of a winner

The useful comparison often ends with two routes: a cheap private default and a visible escalation.
Jakub Jirák · 7 min
#ocr

OCR models for tables and statements: choosing an OCR-capable model

OCR engines, document parsers, and vision-language models solve overlapping but different layers.
Jakub Jirák · 6 min
#efficiency

Use a cheap first pass and an expensive second pass

Routing by uncertainty beats asking the largest model to perform every mechanical step.
Jakub Jirák · 5 min
#models

Qwen 3.6 Plus: A coding workflow that survives the demo

Repository evidence, tools, tests, and review matter more than one generated function.
Jakub Jirák · 5 min
#ocr

OCR models for scanned archives: handwriting mixed with printed text

Printed labels and handwritten values need different recognition assumptions and confidence thresholds.
Jakub Jirák · 4 min
#hardware

A mini UPS keeps the smart home intelligent

Short outages should not corrupt automation state or leave the local AI gateway rebooting repeatedly.
Jakub Jirák · 8 min
#models

Grok 4.5: Long context without the token landfill

A large window is capacity, not permission to resend every available document.
Jakub Jirák · 5 min
#vision

Vision models for camera-event understanding: privacy and security for visual inputs

Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task.
Jakub Jirák · 8 min
#economics

AI hardware ROI for an Apple Silicon local-model system: a sensitivity analysis that can change the answer

ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth.
Jakub Jirák · 8 min