02 — Sprint Calendar (S1 → S26)¶
Two-week sprints. Twenty-six of them across 52 weeks. Four are reserved as buffer. Twenty-two carry deliverables. Every sprint has: a phase, a single named deliverable, a reading load, and a lab-notebook entry expectation.
Anchor date: S1 starts Monday July 6, 2026. Adjust the calendar column ±1 week if your real start differs.
Format: Weeks (dates) · Phase · Deliverable · Reading · Lab entry
Quarter 1 (S1–S6 + Buffer B1)¶
# |
Weeks |
Phase |
Deliverable |
Reading |
Lab-note focus |
|---|---|---|---|---|---|
S1 |
Jul 6 – Jul 19 |
P0 |
Env setup + naive C++ matmul running |
CS:APP §5 |
GPU/CUDA install verified; naive matmul GFLOPs |
S2 |
Jul 20 – Aug 2 |
P0 |
Tiled matmul with 10× speedup demonstrated |
CS:APP §6 + Horace He |
Cache-line-by-line trace of tiled matmul |
S3 |
Aug 3 – Aug 16 |
P0 → P1 |
Karpathy Zero-to-Hero through makemore |
Attention Is All You Need |
bf16/fp8-e4m3 bit layouts drawn |
S4 |
Aug 17 – Aug 30 |
P1 |
R1 blog post published (CPU tiled matmul writeup) |
Online softmax paper |
Numerically stable softmax derivation |
S5 |
Aug 31 – Sep 13 |
P1 |
nanoGPT trained on TinyShakespeare, loss curve saved |
RoFormer (RoPE), MQA/GQA |
Predicted vs measured tokens/sec on 3090 |
S6 |
Sep 14 – Sep 27 |
P1 → P2 |
From-scratch inference GPT matches HF greedy |
PMPP Ch 1–5 |
Llama-3-8B param count derivation |
B1 |
Sep 28 – Oct 11 |
— |
BUFFER — no sprint deliverable. Diwali / catch-up. |
— |
Rest, or write the retro post you’ve been avoiding |
Quarter 2 (S7–S12 + Buffer B2)¶
# |
Weeks |
Phase |
Deliverable |
Reading |
Lab-note focus |
|---|---|---|---|---|---|
S7 |
Oct 12 – Oct 25 |
P2 |
SGEMM ladder rungs 1–3 (naive → tiled) |
PMPP Ch 6, Simon Boehm blog |
Nsight Compute report per rung |
S8 |
Oct 26 – Nov 8 |
P2 |
SGEMM ladder rungs 4–5 (register-tiled → vectorized) |
Volkov “Better Perf at Lower Occupancy” |
Occupancy vs throughput measurement |
S9 |
Nov 9 – Nov 22 |
P2 → P3 |
R2 SGEMM ladder repo public, ~80% cuBLAS |
FlashAttention-1 paper |
HBM traffic math for naive attention |
S10 |
Nov 23 – Dec 6 |
P3 |
Naive attention kernel, feel the pain |
FlashAttention-2 paper |
Predicted vs measured HBM bytes moved |
S11 |
Dec 7 – Dec 20 |
P3 |
Triton FA2 forward matching SDPA numerics |
FlashAttention-3 paper |
Numerics tolerance table by shape |
S12 |
Dec 21 – Jan 3 |
P3 → P4 |
R3 Triton FA2 repo + blog post published |
Orca (OSDI ‘22) |
FA2 vs flash-attn benchmark sweep |
B2 |
Jan 4 – Jan 17 |
— |
BUFFER — Valley of Despair recovery. |
— |
If tired, actually rest. If energized, read vLLM V1 source. |
Quarter 3 (S13–S18 + Buffer B3)¶
# |
Weeks |
Phase |
Deliverable |
Reading |
Lab-note focus |
|---|---|---|---|---|---|
S13 |
Jan 18 – Jan 31 |
P4 → P5 |
vLLM V1 lifecycle drawn + first quant runs (GPTQ, AWQ) |
PagedAttention (SOSP ‘23) + Aleksa Gordić Inside vLLM |
Perplexity/KL numbers for each quant |
S14 |
Feb 1 – Feb 14 |
P5 |
R4 quantization bake-off published (5 formats) |
Sarathi-Serve, SGLang RadixAttention |
8B model speed × quality tables |
S15 |
Feb 15 – Feb 28 |
P4 |
Mini-engine skeleton: FastAPI + tokenizer + single-request gen |
Speculative decoding (Leviathan) |
Zoho prefix-cache hit-rate data (sanitized) |
S16 |
Mar 1 – Mar 14 |
P4 |
Mini-engine: continuous batching + paged KV |
Marlin repo + FlashInfer paper |
Batching efficiency curve |
S17 |
Mar 15 – Mar 28 |
P4 |
R5 mini engine finalized + first PR draft open |
HF Ultra-Scale Playbook Ch 1–3 |
vs-vLLM latency-throughput curve |
S18 |
Mar 29 – Apr 11 |
P4 → P6 |
R6 first merged PR + rent H100 for 70B TP=2 |
DeepSeek-V3 report §1–3 |
70B TP scaling efficiency measurement |
B3 |
Apr 12 – Apr 25 |
— |
BUFFER — post-M9-gate reset. |
— |
If M9 slipped, catch up now. Else rest. |
Quarter 4 (S19–S26 + Buffer B4)¶
# |
Weeks |
Phase |
Deliverable |
Reading |
Lab-note focus |
|---|---|---|---|---|---|
S19 |
Apr 26 – May 9 |
P6 → P7 |
Triton W4A16 naive kernel benchmarked vs Marlin |
DistServe + Mooncake (FAST ‘25) |
Gap analysis: why Marlin is faster |
S20 |
May 10 – May 23 |
P7 |
R7 reference architecture draft published |
Character.AI blog + llm-d docs + Dynamo 1.0 docs |
8×H100 sizing exercise with numbers |
S21 |
May 24 – Jun 6 |
P7 |
Fine-tuned 7-14B for Zoho task (LoRA/QLoRA) |
GRPO / DPO papers |
Fine-tune quality vs prompted-frontier |
S22 |
Jun 7 – Jun 20 |
P7 + studies |
Cold-email 5 target companies, 3 loops open |
Company-specific tech stacks |
study prep: system design drills |
S23 |
Jun 21 – Jul 4 |
P7 + studies |
R7 final + 2 second-round loops |
GPU MODE recent lectures |
Onsite prep: kernel walkthroughs |
S24 |
Jul 5 – Jul 18 |
R8 + studies |
2 more merged PRs on target project |
vLLM/SGLang PR review of your area |
Sustained-contribution rhythm established |
S25 |
Jul 19 – Aug 1 |
R8 + studies |
Convert one loop to offer, negotiate |
— |
Negotiation log |
S26 |
Aug 2 – Aug 15 |
R8 |
Ship: 13-month retrospective blog post |
Whatever the new role demands |
Meta-retrospective: what compounded, what didn’t |
B4 |
Aug 16 – Aug 29 |
— |
BUFFER — celebration or decision week. |
— |
Rest. Family. Take stock. |
Sprint Discipline Reminders¶
Every sprint has ONE deliverable. Not three. Not “and also.” One. See
../13_discipline/01_sprint_cadence.md.Sunday evening = retro. Log what shipped, what slipped, what surprised you.
If a sprint slips by >1 week, use the next buffer. Don’t cascade-compress.
Buffer weeks are not sprint weeks. Do not populate them retroactively.
Lab notebook: 3+ entries per week. Predicted number → measured → gap explanation. This is the meta-skill.
Read-code 30 min/day. Even during buffer weeks. It’s habit, not sprint work.
Sprint Slippage Log Template¶
Copy into your lab notebook when a sprint slips:
Sprint: S<n>
Original deliverable: <one line>
What shipped: <one line>
What slipped and why: <one line, blameless>
Recovery plan: <one line>
Next sprint number: <n+1> (unchanged) OR sprint counter reset because <life event>
The One Sentence¶
Twenty-two deliveries, four rests, one year. The gate is Sprint 17-18 (M9). Everything else is negotiable.
Return to README.md · Next: 03_north_star_artifacts.md