Learning
Follow the questions, one step at a time.
Find content in Writing; use this page for reading order, Projects for architecture, Labs for protocols and evidence, and Build for hands-on exploration.
Choose your first path below.
Build / AI Applications
Java, HTTP and JSON basics
Published reading order · 17
Build · Beginner
Calling an LLM with Java 8 — from one request to a conversation →
After reading: Send a request, parse the answer and pass conversation history.
Build · Intermediate
Java LLM Practice II: How to validate model JSON after HTTP 200 →
After reading: Separate transport, JSON structure and business acceptance.
Build · Intermediate
Java LLM practice 3: don't let a failed request change conversation history →
After reading: Commit a whole turn atomically without leaving partial history.
Build · Intermediate
Java LLM IV: which concurrent response may commit? →
After reading: Use version tickets for first-committer-wins and contrast serialization.
Build · Intermediate
Java LLM V: why can a timed-out tool keep running? →
After reading: Bound tools, arguments and budgets; distinguish timeout from termination.
Build · Intermediate
Java LLM practice (8): should an interrupted stream enter conversation history? →
After reading: Separate streamed previews from a complete, committable answer.
Lab · Java LLM practice (8): should an interrupted stream enter conversation history? →Project · Java LLM Practice →Build · Intermediate
Java LLM practice (9): why can a cancelled answer overwrite a new conversation? →
After reading: Compare three session policies and reject callbacks from superseded requests.
Lab · Java LLM practice (9): why can a cancelled answer overwrite a new conversation? →Project · Java LLM Practice →Build · Intermediate
Java LLM practice (10): why is the reader still running after cancellation? →
After reading: Distinguish local cancellation, transport shutdown and remote termination.
Lab · Java LLM practice (10): why is the reader still running after cancellation? →Project · Java LLM Practice →Build · Intermediate
Does TypeScript validate model output? A 32-case comparison with Java →
After reading: Explain why static types do not replace runtime validation of external responses.
Build · Intermediate
Inside AI Radar — from an RSS response to a published page →
After reading: Trace collection, deduplication and publication, distinguishing historical and current settings.
Build · Intermediate
Java history and request windows: can a trimmed fact return? →
After reading: Follow narrowing, commit, restart and expansion to separate durable conversation history from one request context.
Build · Intermediate
Java retries: three timeouts are not one deadline →
After reading: Seven local HTTP conditions separate retryability, Retry-After, attempt limits and elapsed-time budgets.
Build · Intermediate
Durable Java turns: what survives a process crash? →
After reading: Checksummed append records, 142 truncated prefixes and three halted JVMs distinguish local recovery from remote exactly-once execution.
Build · Intermediate
Java idempotent retries: no reply does not mean no effect →
After reading: Distinguish a lost reply from an unknown effect; reproduce concurrent deduplication and crash gaps.
Build · Intermediate
Durable idempotency: commit identity and result together →
After reading: Use a framed journal, process crashes and 99 truncated prefixes to explain durable idempotency.
Build · Intermediate
Outbox delivery: local durability is not remote exactly-once →
After reading: Compare keyed and unkeyed receivers to separate lost replies, missing receipts and duplicate remote effects.
Build · Intermediate
Conversation recovery: reconcile intent, receipt and whole turn →
After reading: Halt the JVM at three commit boundaries and rebuild whole-turn history from durable facts.
Future topics · unpublished
Build · Planned topic
Tool Calling
Build · Planned topic
Spring AI introduction
Build · Planned topic
Agent workflows
Build · Planned topic
Evaluate, record failures and iterate
Build · Planned topic
AI application observability
Build · Planned topic
Production
Build · Planned topic
AI Coding
Build · Planned topic
Codex
Build · Planned topic
MCP
Build · Planned topic
Skills
Build · Planned topic
Harness Engineering
Build · Planned topic
Testing
Build · Planned topic
Performance
Understand / LLM
Python, arrays and matrices; mechanism experiments use an untrained toy model
Published reading order · 18
Understand · Intermediate
KV Cache explained — why send the conversation history again? →
After reading: Estimate K/V payload and distinguish conversation context from computation reuse.
Understand · Intermediate
LLM mechanics I: should changing future tokens affect earlier outputs? →
After reading: Test causal masking with a future-information leakage counterexample.
Understand · Intermediate
LLM mechanics II: what does KV caching save, and how do we verify it? →
After reading: Compare full and incremental computation step by step.
Understand · Intermediate
LLM mechanics III: why is a four-slot cache not four-token recomputation? →
After reading: Preserve position semantics after sliding-window eviction.
Understand · Intermediate
LLM mechanics (4): when a prefix changes, is the old KV cache still valid? →
After reading: Identify invalidation conditions after model, position or input changes.
Understand · Intermediate
LLM mechanics (5): after editing history, can we recompute only the changed suffix? →
After reading: Match the longest valid prefix and compute the remaining tokens.
Lab · LLM mechanics (5): after editing history, can we recompute only the changed suffix? →Project · Java LLM Practice →Understand · Intermediate
LLM mechanics (6): why can a larger prefix cache still get zero hits? →
After reading: Budget array bytes in LRU and explain zero hits when the working set does not fit.
Lab · LLM mechanics (6): why can a larger prefix cache still get zero hits? →Project · Java LLM Practice →Understand · Intermediate
LLM mechanics (7): why is caching slower even when it saves computation? →
After reading: Evaluate numerical equivalence, saved work and measured time separately.
Lab · LLM mechanics (7): why is caching slower even when it saves computation? →Project · Java LLM Practice →Understand · Intermediate
Does moving an answer into the middle make a model miss it? An interrupted controlled trial →
After reading: Separate planned, attempted and valid calls, including rate-limited incomplete runs.
Understand · Intermediate
LLM experiment II: make the comparison valid before interpreting position →
After reading: Audit 24 real paired calls and explain a ceiling effect.
Understand · Intermediate
After 24 correct answers: designing a more discriminating context experiment →
After reading: Inspect a 128-case offline protocol without claiming model results.
Understand · Intermediate
Profiling KV reuse: saved work versus added overhead →
After reading: Profile 909 queries across signatures, lookup, copying and continuation, including the remaining slowdown.
Understand · Intermediate
Tiled attention: preserving results without a full score matrix →
After reading: Derive online softmax from a failing block-average baseline and separate smaller temporaries from measured speed.
Lab · Tiled attention: preserving results without a full score matrix →Project · Java LLM Practice →Understand · Intermediate
KV quantization: how many bytes, and at what error? →
After reading: Compare tensor and row-wise int8 quantization, including scale bytes and attention error under outliers.
Understand · Intermediate
KV quantization axes: why Key and Value need separate reasoning →
After reading: Choose quantization axes from outlier structure and independently recompute output error and scale overhead.
Lab · KV quantization axes: why Key and Value need separate reasoning →Project · Java LLM Practice →Understand · Intermediate
Packed KV groups: what does 4-bit actually save? →
After reading: Store real nibbles and audit group-scale overhead, padding bytes and attention output error.
Understand · Intermediate
KV residual windows: do recent tokens deserve higher precision? →
After reading: Compare early-focused and recent-focused attention to explain unequal gains from the same float32 window.
Understand · Intermediate
Block KV decoding: less workspace, more time →
After reading: Separate cache payload, work arrays and observed runtime, retaining 810 timings including slower block decoding.
Future topics · unpublished
Understand · Planned topic
What is a token?
Understand · Planned topic
Context Window
Understand · Planned topic
Embedding
Understand · Planned topic
Attention
Understand · Planned topic
Transformer
Understand · Planned topic
LLM Evaluation
Understand · Planned topic
Sampling / Inference
Explore / Getting started with embodied AI
Python basics; teaching simulations use MuJoCo and a Cartesian gripper
Published reading order · 22
Explore · Beginner
Embodied AI Practice I: Pick up a cube in MuJoCo, then deliberately miss →
After reading: Run contact-based pickup and preserve failed trajectories.
Explore · Intermediate
Embodied practice II: if the grasp failed, skip the transfer →
After reading: Validate grasp before transfer and stop on failure.
Explore · Intermediate
Embodied practice III: a confirmed grasp still needs monitoring →
After reading: Monitor slips during transfer, not only at its start.
Explore · Intermediate
Embodied practice IV: messages arrive, but observations expire →
After reading: Judge missing and stale observations by capture time.
Explore · Intermediate
Embodied practice 5: communication is back—may transfer resume? →
After reading: Revalidate after communication recovery before continuing.
Explore · Intermediate
Embodied AI VI: what do recovery gating and replanning each solve? →
After reading: Separate recovery gating from replanning effects.
Explore · Intermediate
Embodied AI Practice VII: Why a Transfer Rule Stops Normal Lowering →
After reading: Choose phase-specific checks instead of applying lift-height rules during lowering.
Explore · Intermediate
Embodied AI VIII: what should the gripper do after a drop alarm? →
After reading: Explain physical consequences of hold, stop and retreat after an alarm.
Explore · Intermediate
Embodied AI IX: a release command is not verified placement →
After reading: Validate release through contact and a stability window.
Explore · Intermediate
Embodied AI X: why can a recovery budget stop a recoverable task? →
After reading: Bound revalidation time and retain the reason for termination.
Explore · Intermediate
Embodied AI practice (11): placement completed, but is it still valid? →
After reading: Record historical completion separately from current validity.
Explore · Intermediate
Embodied AI practice (12): what should the gripper do after recovery is exhausted? →
After reading: Test exit actions after abort rather than equating a state label with safety.
Lab · Embodied AI practice (12): what should the gripper do after recovery is exhausted? →Project · Hohoo Embodied Experiments →Explore · Intermediate
Embodied AI practice (13): where should recovery resume after interrupted lowering? →
After reading: Connect phase checks, recovery budgets and exit actions.
Lab · Embodied AI practice (13): where should recovery resume after interrupted lowering? →Project · Hohoo Embodied Experiments →Explore · Intermediate
Embodied AI practice (14): does landing in the bin mean the task is complete? →
After reading: Distinguish physical placement, current validity and qualified completion.
Lab · Embodied AI practice (14): does landing in the bin mean the task is complete? →Project · Hohoo Embodied Experiments →Explore · Intermediate
Reading OpenVLA — from an image and instruction to robot actions →
After reading: Trace the OpenVLA action interface without claiming a completed training run.
Explore · Intermediate
A second MuJoCo scene: why does the actuator overshoot? →
After reading: Compare mass and PD damping in a planar force-controlled actuator, separating target crossing from stable completion.
Lab · A second MuJoCo scene: why does the actuator overshoot? →Project · Hohoo Embodied Experiments →Explore · Intermediate
MuJoCo obstacle clearance: a point path is not a body path →
After reading: Six contact trajectories compare direct, edge and clearance paths while separating geometry from controller tracking.
Lab · MuJoCo obstacle clearance: a point path is not a body path →Project · Hohoo Embodied Experiments →Explore · Intermediate
Delayed MuJoCo feedback: can an old observation predict now? →
After reading: Twenty-four paired traces compare delay, position noise and constant-velocity prediction, retaining incomplete recoveries.
Lab · Delayed MuJoCo feedback: can an old observation predict now? →Project · Hohoo Embodied Experiments →Explore · Intermediate
MuJoCo velocity estimation: smoother signals can mean worse control →
After reading: Derive finite-difference noise amplification and audit smoothing lag, force clipping and stable completion.
Lab · MuJoCo velocity estimation: smoother signals can mean worse control →Project · Hohoo Embodied Experiments →Explore · Intermediate
MuJoCo controller tuning: best candidate is not a passing controller →
After reading: Select on 54 development episodes, then check position error and stable completion on 36 held-out episodes.
Explore · Intermediate
MuJoCo observation loss: zero force is not a stop →
After reading: Compare stale feedback, zero force and fading in 27 episodes to distinguish timeout from physical braking.
Explore · Intermediate
MuJoCo mass transfer: can the same gains still work? →
After reading: Compare fixed and mass-scaled gains in 36 episodes, including lower mean error without a velocity-contract pass.
Future topics · unpublished
Explore · Planned topic
What is embodied AI?
Explore · Planned topic
Understand perception, decisions and actions
Explore · Planned topic
Read a paper with a question in mind
Explore · Planned topic
VLM and VLA
Explore · Planned topic
Action Space
Explore · Planned topic
Embodied Benchmark
Retrieve / RAG · Retrieval-augmented generation
Java, HTTP and JSON basics; distinguish retrieved candidates from evidence sufficient for an answer.
Two offline practices are published: a BM25 retrieval baseline and citation checks for closed fields. They do not establish real-model answer quality or constitute a complete blog Q&A system.
Published reading order · 2
Retrieve · Intermediate
Java LLM VI: validate retrieval evidence before judging RAG answers →
After reading: Recompute BM25 retrieval and false hits on unanswerable toy queries.
Retrieve · Intermediate
Java LLM practice (7): a real citation can still support a wrong answer →
After reading: Validate claim–evidence correspondence without claiming semantic entailment.
Next: explore the research plan →
Future topics · unpublished
Retrieve · Planned topic
Freeze the corpus, then compare chunking
Build traceable documents and relevance labels, separating development and held-out questions.
- Prerequisites
- Complete the BM25 baseline; distinguish documents, chunks and citations.
- Research question
- Which questions lose answer context under fixed-length versus heading-based chunks?
- Planned deliverables
- Corpus snapshot, document versions and sources, labeled answerable/unanswerable questions, two chunkers and per-query retrieval logs.
- How to validate
- Hold tokenization, retriever and top-k fixed; report Recall@k, split-answer failures and duplicate hits. Do not tune on the held-out set.
Retrieve · Planned topic
Choosing BM25, dense or hybrid retrieval
Compare lexical matching, dense retrieval and fused ranking on identical questions.
- Prerequisites
- A frozen corpus and relevance labels; basics of embeddings and similarity.
- Research question
- How do aliases, exact identifiers and mixed-language queries fail under each strategy?
- Planned deliverables
- A local vector index with a pinned model version; BM25, dense and fused results with ranks and timings.
- How to validate
- Compare Recall@k, MRR, index bytes and query time with identical chunks and candidate budgets; retain hybrid regressions.
Retrieve · Planned topic
Reranking and assembling the context
Select evidence with answer coverage and limited duplication under a fixed context budget.
- Prerequisites
- Complete retrieval comparisons; understand token budgets and citation IDs.
- Research question
- Which evidence improves or disappears through reranking, deduplication and truncation?
- Planned deliverables
- Candidate and reranked lists, a context assembler, citation maps and budget-truncation logs.
- How to validate
- Ablate one stage at a time; compare ranking, evidence coverage, duplication and time. Improved ranking alone is not improved answer accuracy.
Retrieve · Planned topic
From retrieved evidence to answer quality and abstention
Measure retrieval hits, claim support and abstention on missing evidence separately.
- Prerequisites
- Complete context assembly and citation contracts; freeze the scoring rubric first.
- Research question
- Which answers improve with retrieval, and which merely add unsupported citations?
- Planned deliverables
- Continue retrieval-eval: paired no-retrieval/retrieval outputs, model and prompt versions, human support labels, and missing/conflicting-evidence failures.
- How to validate
- Protocol first; real-model runs are pending. Report correctness, citation support, false abstention and unsupported answers separately, with per-query outputs and usage. Paid calls need separate authorization.
Retrieve · Planned topic
Updates, permissions and retrieval injection
Prevent withdrawn, stale or unauthorized documents from becoming current answer evidence.
- Prerequisites
- Versioned documents, source IDs and traceable contexts.
- Research question
- Can stale chunks and caches leak or mislead after index or permission changes?
- Planned deliverables
- Update, deletion and revocation regression cases; index/cache invalidation logs; local fixtures containing malicious retrieved instructions.
- How to validate
- Check access before evidence reaches the model; never label stale versions current. Retrieved text cannot expand tool permissions. Passing local cases is not a general injection-defense guarantee.
Retrieve · Planned topic
Integration: traceable blog Q&A
Connect retrieval, evidence, answers and failure handling in a reproducible minimal application.
- Prerequisites
- Complete the evaluation and trust-boundary stages; confirm cost and product scope.
- Research question
- Can readers verify sources, recognize missing evidence and continue reading when the system fails?
- Planned deliverables
- A minimal hohoo-ai-lab application, pinned corpus and versions, setup commands, evaluation report, and source/no-evidence/error states.
- How to validate
- Reproduce indexing through answering from a clean environment, including failures and abstention; keep secrets server-side. Not deployed or counted as a completed product.
Engineering foundations
Java · Python · TypeScript · HTTP · JSON
AI applications and engineering →