The Plan
A 12-month staged build, $350/month max, emergency fund untouched.
A staged build, twelve months long, designed to respect cash flow and protect the emergency fund. The plan validates the use case on existing hardware before the new PC arrives — and refuses to spend money the validation hasn't earned.
The Five Operating Principles
- $350/mo maximum financial commitment — non-negotiable
- Emergency fund stays untouched (your 3-month buffer is sacred)
- Maximum 2 hard credit pulls over 12 months (Microcenter + Best Buy)
- No deferred-interest term we can't pay off in cash flow
- Validate use case on Optiplex first — plan serves you, not vice versa
Why This Build
Full Financial Picture — All 15 Months
Every dollar in and out. "Card added" = new balance charged. HYSA grows at ~4.5% APY (adds ~$65 over the period — not shown).
| Mo | Phase | Cash Out | +Saved | Card Added | HYSA Total | Card Owed | Event |
|---|---|---|---|---|---|---|---|
| M01 | Validation | — | $350 | — | $350 | — | Ollama live on Optiplex |
| M02 | Validation | — | $350 | — | $700 | — | Use cases documented |
| M03 | Checkpoint | — | $350 | — | $1,050 | — | Go / No-Go decision |
| M04 | Pre-buy | — | $350 | — | $1,400 | — | Credit check, BB Visa apply |
| M05 | Foundation buy | $1,000 | — | $280 MC | $400 | $280 | CPU + MB + RAM @ Microcenter |
| M06 | Recovery | $50 | $300 | — | $650 | $230 | MC card payment |
| M07 | Recovery | $50 | $300 | — | $900 | $180 | MC card payment |
| M08 | MC payoff | $180 | $250 | — | $970 | — | Microcenter PAID OFF ✓ |
| M09 | GPU day | $200 | — | $800 BB | $770 | $800 | RTX 5080 @ Best Buy |
| M10 | Assembly | $70 | — | $190 Affirm | $700 | $920 | PSU + Case via Affirm Pay-in-4 |
| M11 | Final parts | $70 | — | $175 Affirm | $630 | $1,025 | SSDs + cooler + UPS + fans |
| M12 | BUILD WEEKEND | $70 | $100 | — | $660 | $955 | System online. First 32B model. |
| M13 | Cleanup | $70 | $280 | — | $870 | $885 | BB payment |
| M14 | Cleanup | $70 | $280 | — | $1,080 | $745 | BB payment |
| M15 | Done | $70 | $280 | — | $1,290 | — | DEBT FREE ✓ |
Card owed column shows remaining balance after that month's payment. All deferred-interest promos end early: MC card paid in M08 (within 12-mo promo), BB card paid in M15 (9 months before 24-mo promo deadline).
Month-by-Month — Detailed Actions
- Install Ollama:
curl -fsSL https://ollama.ai/install.sh | sh - Pull first models:
ollama pull qwen3:14bandollama pull deepseek-r1:14b - Install Open WebUI for a proper chat UI (Docker or pip — see CLI Hub for commands)
- Open Marcus HYSA → auto-transfer $350/month on payday, the same day every month
- Write down 5 specific tasks you want this machine to help with. Be concrete: "draft SOAP notes from bullet points", "check drug interactions for polypharmacy patients", "explain Python errors as I learn CS50P". Not "help with work".
- First honest test: ask the same clinical question to Qwen3 14B and Claude Sonnet. Evaluate quality, speed, confidence.
- Use local LLM every working day — not when convenient, every day
- Log each session in Journal: task, model used, quality rating (1–5), time saved vs doing it manually, vs cloud
- Try DeepSeek R1 14B specifically for clinical reasoning — the visible thinking trace lets you audit the reasoning, which matters for pharmacological tasks
- Install the Continue.dev VS Code extension and point it at Ollama — local AI code completions
- Start CS50P Week 0 — use the local model as your Python tutor (ask it to explain errors, walk through concepts)
- Note where the Optiplex falls short: what tasks feel sluggish? That's your VRAM ceiling becoming tangible.
- Go: Used ≥5 days/week for 6+ weeks, ≥3 use cases with documented time savings, feel like you'd miss it if it was gone
- No-Go: Used fewer than 3 days/week, can't name 3 specific tasks it improved, feel like it's more interesting than useful
- If No-Go: Pause HYSA transfers. Consider a lighter path: GPU upgrade to Optiplex (~$400–600) for 3× more VRAM without a full build. Or simply use Claude API at $20/month.
- If Go: continue unchanged. Pull credit report at annualcreditreport.com — dispute errors now before M05.
- Set a CamelCamelCamel price alert for RTX 5080 at $999 target
- Subscribe to Microcenter's email list — they send sale alerts for CPU/MB bundle deals
- Check credit score — target 710+ for best MC card approval. Credit Karma or annualcreditreport.com.
- Do NOT open any new credit this month — wait for M05 Microcenter trip
- Plan the Microcenter cart exactly: 9950X + ProArt X870E Creator + 64GB DDR5-6000. Nothing else.
- Verify current in-store pricing on microcenter.com (prices differ from online). Check the CPU+MB combo discount (typically $50–80 off).
- Apply for My Best Buy Visa this month — do it online, soft inquiry first. This is Hard Pull #2. Get it in hand before the M09 GPU trip. (H1 is M05 Microcenter card.)
- HYSA should be at $1,400. Confirm this, then plan to bring $1,000 cash to Microcenter.
- Buy: Ryzen 9 9950X (~$599) + ASUS ProArt X870E Creator (~$349) + 64GB DDR5-6000 (~$130) = ~$1,078 + tax ≈ $1,150–1,200 total
- Apply for Microcenter card at checkout — Hard Pull #1. 12-month 0% promo on purchases $499+.
- Pay $1,000 cash. Put remainder (~$150–200) on the MC card.
- Same day you get home: Set MC card autopay to minimum on the Webbank portal. Do not rely on remembering manually.
- Verify every item against the receipt before leaving the parking lot
- Store parts in anti-static bags in their boxes. Don't build yet — the GPU isn't here and you need the PSU + case too.
- HYSA drops to ~$400. Expected. Recovery starts M06.
- Pay $50 above MC minimum → balance drops to ~$150
- Save $300 to HYSA → balance climbs to ~$650
- Continue daily Ollama use on Optiplex — stay sharp, validate more use cases
- Watch GPU market — set weekly check on RTX 5080 pricing
- Pay $50 above MC minimum → balance to ~$100
- Save $300 → HYSA at ~$900
- Begin planning the Best Buy trip — verify RTX 5080 stock, current pricing, BB Visa terms
- Confirm My Best Buy Visa arrived and is active (applied M04)
- Pay remaining MC balance in full (~$100). Card is done — 4 months ahead of the 12-month promo.
- Do NOT close the MC card — keep it open. Account age helps credit score. Just don't use it.
- Save $250 → HYSA at ~$970
- Confirm Best Buy RTX 5080 availability and pricing. Is the 24-month 0% promo active on BB Visa?
- Buy trigger (all 3 must be true): RTX 5080 ≤ $1,099 AND in stock AND My Best Buy Visa 24-month 0% promo is active
- Wait trigger: Price $1,100–$1,299 → wait 1 month, GPU market is cyclical
- Pivot trigger: Price consistently > $1,299 → buy RTX 5070 Ti (~$749, 16GB VRAM, 35% slower). Saves $550. Covers the same model stack.
- Pay $200 cash from HYSA + $800 on BB Visa (24-month 0% promo)
- That evening: Set BB Visa autopay to minimum — same drill as the MC card
- GPU only this trip. No PSU, no case, no accessories. One purchase at a time.
- Check MicroCenter GPU section as a backup if Best Buy is out of stock (they sometimes have matching prices)
- Buy: Corsair HX1200i (~$200) + Fractal Define 7 (~$130) = ~$330. Use Affirm Pay-in-4 at Amazon checkout: ~$83/payment × 4
- Pay $70 above minimum on BB Visa
- Download Ubuntu 24.04 LTS ISO. Verify SHA256 checksum. Write bootable USB (use Balena Etcher).
- Watch 2–3 full Define 7 build guides on YouTube — understand the radiator mounting, cable routing, and GPU clearance before build day. Linus Tech Tips and Gamers Nexus both cover it.
- Don't start building yet — wait for all parts to be in hand
- Buy: Samsung 990 Pro 2TB (~$150) + Samsung 990 Evo 4TB (~$200) + Arctic Liquid Freezer III 360 AIO (~$90) + APC BR1500G UPS (~$150) + 3× Noctua NF-A14 fans (~$75) ≈ $665 total. Use Affirm Pay-in-4: ~$175/payment × 4
- Pay $70 on BB Visa
- Order anti-static wrist strap (~$6) and extra Phillips PH2 screwdrivers if needed
- Verify AIO includes thermal paste (Arctic Freezer III ships with MX-4 — it does)
- Block both days of a weekend for the build. Day 1: assembly + POST. Day 2: OS + software + migration from Optiplex.
- Prep a clean, well-lit workspace: large table, good overhead light, small bowls for screws, anti-fatigue mat if standing
- Day 1 — Assembly sequence: CPU into socket (ZIF — no force) → AIO mount (apply thermal paste only if not pre-applied) → RAM into A2/B2 slots → M.2 SSDs → I/O shield → MB into case → PSU → 24-pin + EPS + GPU power → AIO fans + radiator (top exhaust) → case fans → GPU → front panel headers
- Day 1 — POST test before closing: Boot into BIOS. Verify 64GB RAM detected in dual-channel, both NVMes visible, CPU temps normal, all fans spinning
- Day 2 — OS install: Boot from Ubuntu USB → install to 2TB drive → set up NVIDIA drivers (
ubuntu-drivers autoinstall) → reboot → verify GPU withnvidia-smi - Day 2 — Ollama: Install Ollama →
ollama pull qwen3:32b→ first inference. Note the difference from the 14B you've been using for 11 months. - Migrate Optiplex model library via LAN:
rsync -avz optiplex:~/.ollama/models/ ~/.ollama/models/ - Run 30-min stress test before calling it done: Prime95 (CPU) + FurMark (GPU) simultaneously. Watch temperatures.
Parts Manifest — Full Bill of Materials
Prices as of early 2026. Verify before purchase — GPU market moves fast. Check CamelCamelCamel for Amazon items.
| Component | Part | Price | Where | When | Notes |
|---|---|---|---|---|---|
| CPU | AMD Ryzen 9 9950X | $599 | Microcenter | M05 | 16C/32T Zen 5. Bundle with MB for -$50. In-store only pricing. |
| Motherboard | ASUS ProArt X870E Creator WiFi | $349 | Microcenter | M05 | 4× M.2, Thunderbolt 4, solid VRM. Creator line = workstation DNA. |
| RAM | Corsair Vengeance DDR5-6000 64GB (2×32GB) | $130 | MC / Amazon | M05 | CL30. Matches Zen 5 Infinity Fabric exactly. Install in A2/B2 slots. |
| GPU | NVIDIA GeForce RTX 5080 16GB | $999 | Best Buy | M09 | Buy only ≤$1,099. Alt: RTX 5070 Ti (~$749) if 5080 stays expensive. |
| PSU | Corsair HX1200i Platinum 1200W | $200 | Amazon | M10 | Digital monitoring. 1200W gives 50%+ headroom. Buy via Affirm Pay-in-4. |
| Case | Fractal Design Define 7 (Black) | $130 | Amazon | M10 | Sound-dampened. 360mm AIO top-mount. E-ATX compatible. Silent operation. |
| Primary SSD | Samsung 990 Pro 2TB NVMe M.2 | $150 | Amazon / BB | M11 | OS + active models. Gen 4, 7,450 MB/s reads. Don't cheap out on the OS drive. |
| Model SSD | Samsung 990 Evo 4TB NVMe M.2 | $200 | Amazon | M11 | Ollama model library. 10 × 32B Q4 models ≈ 200GB. Room for years. |
| Cooler | Arctic Liquid Freezer III 360 AIO | $90 | Amazon | M11 | Best value 360mm AIO. 9950X runs hot under all-core inference. Size up. |
| UPS | APC BR1500G 1500VA / 900W | $150 | Amazon | M11 | Non-negotiable for a $4K always-on machine. Handles full load + clean shutdown. |
| Fans | Noctua NF-A14 PWM × 3 | $75 | Amazon | M11 | 3× 140mm. Quietest at this airflow level. 2 intake front, 1 exhaust rear. |
| TOTAL PARTS | ~$2,872 | Add tax (~$200) + anti-static strap ($6) + misc cables (~$20) ≈ $3,100 all-in | |||
Credit & Financing Strategy
Decision Gates
Month 3 — Use Case Validation
The only honest question is: are you actually saving time on real tasks? Not "is this interesting" — is it useful enough that you'd notice if it was gone?
| Criterion | Go ✓ | No-Go ✗ |
|---|---|---|
| Usage frequency | ≥5 days/week for 6 weeks | <3 days/week |
| Documented use cases | 3+ with measurable time saved | Fewer than 3 specific tasks |
| Quality vs cloud | Matches cloud on ≥1 use case | Always inferior on everything |
| Gut test | "I'd miss this tomorrow" | "It's more of a hobby" |
If No-Go: stop HYSA transfers. Consider a GPU-only upgrade to the Optiplex (~$400–600 for an RTX 4060 Ti 16GB) instead of a full build. Or just use Claude API at $20/month. The plan serves your goals — not the other way around.
Risk Register & Mitigations
Local LLMs
Models, tasks, and validation protocols for clinical pharmacy and beyond.
The headline rule of local language models: capability is gated by VRAM. Everything else follows from this. Choose models that fit your hardware, validate them ruthlessly before trust, and let the GPU upgrade path open richer options later.
Model Catalog
VRAM shown as Q4 / Q8 GB. Stars rate clinical accuracy, coding, reasoning, and speed (5 = best).
| Model | Size | VRAM (Q4/Q8) | Clinical | Coding | Reasoning | Speed | Notes |
|---|---|---|---|---|---|---|---|
| Qwen3 14B general |
14B | 9 / 16 | ●●●●○ | ●●●●○ | ●●●●○ | ●●●●● | Excellent generalist. Q8 fits on 16GB cards. Strong instruction following. |
| Qwen3 32B flagship |
32B | 20 / 36 | ●●●●● | ●●●●● | ●●●●● | ●●●○○ | Near-Sonnet quality for many tasks. Needs 24GB+ VRAM at Q4. Your target post-upgrade. |
| Qwen2.5-Coder 32B coding |
32B | 20 / 36 | ●●○○○ | ●●●●● | ●●●●○ | ●●●○○ | The coding workhorse. Matches GPT-4 on many code benchmarks. Worth waiting for 24GB+ VRAM. |
| DeepSeek R1 distilled 14B reasoning |
14B | 9 / 16 | ●●●●○ | ●●●●○ | ●●●●● | ●●●●○ | Visible chain-of-thought. Great for DDx exercises — you can audit reasoning. |
| DeepSeek R1 32B reasoning |
32B | 20 / 36 | ●●●●● | ●●●●○ | ●●●●● | ●●●○○ | The reasoning king at 32B. Visible thinking, strong DDx capabilities. |
| Devstral 24B coding |
24B | 14 / 26 | ●●○○○ | ●●●●● | ●●●●○ | ●●●●○ | Agentic coding specialist. Edits files, runs commands. Pairs with VS Code. |
| Gemma 3 27B general |
27B | 17 / 30 | ●●●●○ | ●●●○○ | ●●●●○ | ●●●○○ | Strong biomedical knowledge from Google. Tight fit on 16GB but doable at Q3. |
| Gemma 4 E4B small-fast |
4B-effective | 3 / 5 | ●●●○○ | ●●●○○ | ●●●○○ | ●●●●● | Surprisingly capable for size. Got vancomycin AUC right in your prior LM Studio testing. |
| Phi-4 14B reasoning |
14B | 9 / 16 | ●●●○○ | ●●●●○ | ●●●●● | ●●●●○ | Microsoft's analytical model. Excellent for structured reasoning, math, logic. |
| MedGemma 4B medical |
4B | 3 / 5 | ●●●●○ | ●○○○○ | ●●●○○ | ●●●●● | Medical-specific. Multimodal (images). Based on Gemma 3, so may miss recent guidelines. |
| Llama 3.3 70B flagship |
70B | 42 / 75 | ●●●●● | ●●●●○ | ●●●●○ | ●●○○○ | Requires 48GB+ VRAM (dual GPU or 5090). The headline 'datacenter at home' model. |
Task Library — Clinical Workflows
Local LLMs are thinking partners, never truth sources. Every clinical output gets verified against Lexicomp, UpToDate, Sanford Guide, or current guidelines. Build verification into the workflow as a non-negotiable step.
Framework: Visible reasoning lets you audit chain. Use as thinking partner, never as decision tool.
Example: 65yo M, new DOE + LE edema. Walk through DDx considering HF, PE, anemia, renal, hepatic. Audit your own reasoning against model's.
Framework: Build deterministic calculator. LLM helps explain results to colleagues.
Example: Bayesian first-order PK estimation. ALWAYS deterministic math, never LLM math.
Framework: RAG over authoritative source. LLM synthesizes, source provides facts.
Example: Pull DailyMed JSON for two drugs, feed to model, ask for synthesis with citations.
Framework: LLM drafts at target reading level, YOU verify and adjust.
Example: 'Explain warfarin INR monitoring at 6th grade reading level' → review, edit, give to patient.
Framework: Feed full paper, request structured extraction. Verify quotes against source.
Example: 10 RCTs on SGLT2i in HFrEF → extract: trial, n, intervention, primary endpoint, NNT, key adverse events.
Framework: Local-only processing. Never send PHI to cloud.
Example: Replace names/MRNs/dates with placeholders for case-based teaching.
Framework: Generate Socratic questions, then verify mechanism explanations against Goodman & Gilman.
Example: 'Generate 5 progressively harder questions on beta-blocker mechanism' → use for student session.
Framework: RAG over your institution's antibiogram + IDSA guidelines.
Example: 'For CAP in this patient with these allergies and renal function, what does our guideline recommend?'
Task Library — Coding
Framework: Describe project, get structure + boilerplate. Always review before running.
Example: FastAPI + SQLite vancomycin TDM webapp → full skeleton with routes, models, tests.
Framework: Paste function, request refactor with explanation. Run tests after.
Example: Turn this 200-line procedural script into clean class-based design.
Framework: Paste error + relevant code. R1's thinking shows you the diagnostic path.
Example: 'Why does my Bayesian PK calculation give negative volumes?' → R1 walks the math.
Framework: Paste function, request pytest test cases including edge cases.
Example: Generate tests for vancomycin loading dose calculator including renal extremes.
Framework: Describe schema + desired output. Verify on sample data before production.
Example: Pivot pharmacy dispensing log into monthly DDDs per ward.
Framework: Function → docstring. Codebase → README. Always edit for accuracy.
Example: Generate API documentation for your TDM tool with examples.
Task Library — Research
Framework: Describe research question → get MeSH terms + search string.
Example: 'Vancomycin AUC vs trough monitoring outcomes in MRSA bacteremia' → complete PubMed query.
Framework: PDF → structured summary (background, methods, results, limitations, take-home).
Example: Summarize NEJM HF trial with focus on subgroup analyses.
Framework: Visible reasoning catches flaws step-by-step.
Example: Critique this RCT's randomization, blinding, and analysis plan.
Framework: RAG over your notes. Ask questions across your accumulated knowledge.
Example: 'Show me everything I've written about vancomycin PK and synthesize key principles.'
Task Library — Automation
Framework: Describe target site + data needed → working scraper. Always respect robots.txt.
Example: Daily FDA drug shortage updates → JSON for tracking.
Framework: LLM tags incoming emails by category, urgency. Local = privacy.
Example: CME reminders, work emails, personal, newsletters → auto-foldered.
Framework: Drop PDFs in folder → auto-sorted by content.
Example: Downloaded paper goes to /research/, drug monograph to /clinical/, etc.
Framework: Cron job pulls feeds, LLM summarizes, emails you at 6 AM.
Example: Top 5 clinical pharmacy headlines + 3 tech headlines, 200 words total.
Install Hub — One-Copy Setup Commands
Every command below is tested on macOS (Apple Silicon + Intel) and Ubuntu 22.04+. Click copy on any block.
Ollama — Run any model in one line
The fastest path to local LLMs. Handles downloads, GGUF conversion, and an OpenAI-compatible API on port 11434.
# Install (macOS + Linux)
curl -fsSL https://ollama.ai/install.sh | sh
# Pull models
ollama pull qwen3:14b
ollama pull deepseek-r1:14b
ollama pull devstral
# Run interactively
ollama run qwen3:14b
# List downloaded models
ollama list
# API test
curl http://localhost:11434/v1/models
LM Studio — GUI + headless API server
Best for exploring models visually. Exposes an OpenAI-compatible server on port 1234.
# macOS (Homebrew)
brew install --cask lm-studio
# Or download: lmstudio.ai
# Headless CLI server (no GUI needed)
lms load qwen3-14b-instruct \
--context-length 32768 \
--gpu max
lms status # confirm server on :1234
# Test
curl http://localhost:1234/v1/models
Open WebUI — ChatGPT UI for Ollama
Full-featured chat interface with RAG, image gen, plugins, and user management. Connects to Ollama automatically.
docker run -d \
--restart unless-stopped \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
# Visit http://localhost:3000
# First launch creates admin account
llama.cpp — Low-level, maximum control
Build from source for Metal (macOS) or CUDA acceleration. Foundation under Ollama.
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# macOS Metal (Apple Silicon or AMD)
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release -j$(nproc)
# Run a model
./build/bin/llama-cli \
-m models/qwen3-14b-q8.gguf \
-n 512 \
-p "Explain vancomycin AUC monitoring"
vLLM — Production inference (CUDA)
OpenAI-compatible API server with PagedAttention for high throughput. Requires Python + NVIDIA GPU.
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-14B-Instruct \
--dtype float16 \
--gpu-memory-utilization 0.85 \
--port 8000
# Test
curl http://localhost:8000/v1/models
AnythingLLM — All-in-one local RAG
Connect PDFs, websites, and databases to your local models. Docker server or native desktop app.
export STORAGE=$HOME/anythingllm
mkdir -p $STORAGE
docker run -d \
-p 3001:3001 \
-v $STORAGE:/app/server/storage \
--name anythingllm \
mintplexlabs/anythingllm
# Visit http://localhost:3001
Model Pull Reference — Matched to Your VRAM
# Current Optiplex (integrated / low VRAM)
ollama pull phi4:mini # 3.8B — fast, capable
ollama pull qwen3:4b # Excellent for size
# After 16GB VRAM upgrade
ollama pull qwen3:14b # Primary daily driver
ollama pull deepseek-r1:14b # Reasoning + visible CoT
ollama pull gemma3:12b # Strong biomedical knowledge
# RTX 5080 target (16GB VRAM)
ollama pull qwen3:32b # Near-Sonnet quality
ollama pull devstral # Best open coding agent
ollama pull qwen2.5-coder:32b # Code specialist
# Run with system prompt
ollama run qwen3:14b --system "You are a clinical pharmacy AI. Be precise, cite evidence levels."
Watch: Getting Started with Local LLMs
The Generalized Vancomycin Test
Every clinical model gets tested on facts where you know the answer cold.
Protocol
- 1. Pick 5 questions where YOU know the right answer (vanco AUC, warfarin INR ranges, etc.)
- 2. Ask the model each. Record exact response.
- 3. Grade: pass/fail/dangerous (confident wrong is worst)
- 4. If 4/5 or 5/5 pass → safe for THINKING PARTNER role with verification
- 5. If 3/5 → useful for non-clinical tasks only
- 6. If <3/5 → uninstall, save space
- 7. Re-test quarterly (models update, drift happens)
Hardware
Component deep dives, spec literacy, and the principles behind choosing well.
Every component answers a different question. The GPU answers how much can I run. The motherboard answers what can I add later. The PSU answers will this be safe in five years. Get the literacy right once and the choices become obvious.
GPU — The Most Important Component for LLM+Gaming
Why it matters: For LLMs: VRAM is everything (model fit). For gaming: raw compute + ray tracing. The 5080 sits at the sweet spot for both — for now.
Spec Literacy
AIB Decoder Ring
Current Landscape
| Part | Price | Notes |
|---|---|---|
| RTX 5050 entry vram: 8 · llmCeiling: 8B Q4 only · gaming: 1080p · priceMSRP: 249 |
Skip for your use case — VRAM too low for serious LLM. | |
| RTX 5060 Ti 16GB budget vram: 16 · llmCeiling: 14B Q4, 22B Q3 · gaming: 1080p/1440p · priceMSRP: 429 |
Surprise hero. Same VRAM as 5080 at half the price. Weaker compute but FITS the models. | |
| RTX 5070 midrange vram: 12 · llmCeiling: 12B Q4 · gaming: 1440p · priceMSRP: 549 |
12GB is awkward for LLMs. Skip in favor of 5060 Ti 16GB if budget. | |
| RTX 5070 Ti midrange-high vram: 16 · llmCeiling: 14B Q8 / 22B Q4 · gaming: 1440p high · priceMSRP: 749 |
Strong middle ground. Often $50-100 cheaper than 5080 with 80% performance. | |
| RTX 5080 high-end vram: 16 · llmCeiling: 14B Q8 / 24B Q4 / 27B Q3 · gaming: 1440p ultra / 4K high · priceMSRP: 999 |
Your locked target. Best new-card balance for hybrid use. | |
| RTX 5080 Super (rumored) halo-mid vram: 24 · llmCeiling: 32B Q4 comfortably · gaming: 1440p/4K · priceMSRP: 1199 |
Rumored late 2026. Would change everything — wait if you can. | |
| RTX 5090 halo vram: 32 · llmCeiling: 32B Q8 / 70B Q3 · gaming: 4K ultra everything · priceMSRP: 1999 |
The dream. Street price $2900-3900 currently. Wait for normalization. | |
| RTX 4090 (used) previous-halo vram: 24 · llmCeiling: 32B Q4 with context · gaming: 4K ultra · priceMSRP: $1500-2000 used |
If you find one ~$1500, strongly consider. 24GB is the magic number. | |
| RTX 3090 (used) older-halo vram: 24 · llmCeiling: 32B Q4 / 70B Q2 · gaming: 1440p/4K capable · priceMSRP: $700-900 used |
The local LLM community's darling. 24GB VRAM for cheap. Gaming weaker but adequate. | |
| RX 7900 XTX (AMD) high-end-AMD vram: 24 · llmCeiling: 32B Q4 with ROCm · gaming: 4K capable · priceMSRP: 999 |
AMD path. ROCm support improving but Linux-mostly. Gaming great, LLM workflow rockier. |
- Ex-mining cards (look for: dust caked on backplate, missing original cooler, 'tested for 8 hrs' rather than 'lightly used')
- Cards without original box/receipt if buying used at significant savings
- AIBs from no-name brands you've never heard of
- Anything advertised as 'mining BIOS flashed' or 'undervolt profile included'
- Sellers who won't let you stress test before purchase (in-person buys)
Watch: RTX 5080 Build Walkthroughs
CPU — Matters Less for LLMs, More for Gaming
Why it matters: Modern LLM inference is GPU-bound. CPU only matters for: (1) gaming 1% lows, (2) CPU offload when models exceed VRAM, (3) general system responsiveness.
Spec Literacy
Current Landscape
| Part | Price | Notes |
|---|---|---|
| Ryzen 7 9700X cores: 8P/16T · clock: 4.7/5.5 GHz · useCase: Best budget gaming + light productivity. No AIO required. · note: Sweet spot if budget tight. |
$280 | |
| Ryzen 7 9800X3D cores: 8P/16T · clock: 4.7/5.2 GHz · useCase: Gaming king. Best 1% lows in every modern game. · note: If gaming is #1 priority, this is the answer. |
$480 | |
| Ryzen 9 9900X cores: 12P/24T · clock: 4.4/5.6 GHz · useCase: More cores than 9700X but no X3D cache. Productivity middle ground. · note: Often skipped — 9700X or 9950X are usually better picks. |
$430 | |
| Ryzen 9 9950X cores: 16P/32T · clock: 4.3/5.7 GHz · useCase: Productivity beast. CPU LLM offload, video, compiling. Gaming = 95% of 9800X3D. · note: Your locked choice. Best balance for your polymath workloads. |
$489 | |
| Ryzen 9 9950X3D cores: 16P/32T · clock: 4.3/5.7 GHz · useCase: Gaming AND productivity king. Only chip without compromise. · note: If you can stretch, this is the no-compromise pick. |
$659 | |
| Intel Core Ultra 7 265K cores: 8P+12E/24T · clock: 3.9/5.5 GHz · useCase: Intel's current mid. Underwhelming vs AMD this gen. · note: Skip — AMD wins this generation across price points. |
$379 | |
| Intel Core Ultra 9 285K cores: 8P+16E/24T · clock: 3.7/5.7 GHz · useCase: Intel flagship. Slower than 9950X in most tests. · note: Skip unless Intel ecosystem reasons. |
$589 |
Ryzen 9 9950X for the locked build (your polymath use case). Ryzen 7 9800X3D if you pivot to gaming-first. Skip Intel this generation.
RAM — Get Enough, Don't Overpay for Speed
Why it matters: Need >2× model size in system RAM for comfortable LLM operation. For LLMs that fit on GPU, RAM matters less. For gaming, speed barely matters above DDR5-6000.
Spec Literacy
Current Landscape
| Part | Price | Notes |
|---|---|---|
| G.Skill Trident Z5 Neo 64GB DDR5-6000 CL30 |
$430 | AMD EXPO native. The community-favorite kit. Your locked choice. |
| Corsair Vengeance 64GB DDR5-6000 CL30 |
$410 | Solid alternative. EXPO certified. Lower-profile heatsinks (cooler clearance friendlier). |
| Crucial Pro 64GB DDR5-5600 |
$340 | Budget pick. 5600 is fine, just leaves perf on table. CL40+ tends to feel sluggish. |
| G.Skill Trident Z5 Neo 96GB DDR5-6400 |
$720 | If you want headroom for CPU LLM offload of 70B models. Overkill for most. |
| Kingston Fury Beast 128GB (4×32GB) DDR5-5600 |
$580 | 4-DIMM kits are tough on AM5. Often only runs at 4800. Avoid if possible. |
Buy 2×32GB now. Mobo has 4 slots. If 128GB ever needed (CPU offload of 70B+), add another 64GB kit later — though mixing kits at full speed is dicey on AM5. Better path: sell first kit, buy 2×64GB if available by then.
Storage — Speed Matters Less Than You Think
Why it matters: For games: PCIe 4.0 NVMe is fine, PCIe 5.0 wasted money. For LLM model loading: faster = better but you load once per session. For OS: any NVMe is plenty.
Spec Literacy
Current Landscape
| Part | Price | Notes |
|---|---|---|
| WD Black SN850X 2TB interface: PCIe 4.0 |
$250 | Reliable, fast, no thermal issues. Your OS+games drive. |
| Samsung 990 Pro 2TB interface: PCIe 4.0 |
$280 | Slightly faster than SN850X. Samsung Magician software ecosystem. Your models drive. |
| Crucial T700 2TB interface: PCIe 5.0 |
$380 | Runs hot. Need beefy heatsink. Gaming benefit: marginal. |
| Samsung 9100 Pro 2TB interface: PCIe 5.0 |
$450 | Fastest consumer drive. Overkill for your use case. |
| Crucial P3 Plus 4TB interface: PCIe 4.0 (DRAM-less) |
$280 | Budget bulk storage. Slow sustained writes. Good for cold model storage. |
| WD Black SN770 2TB interface: PCIe 4.0 (DRAM-less) |
$180 | Cheap. OK for boot drive. Skip for heavy write workloads. |
Two-drive setup: 2TB for OS+games (SN850X), 2TB dedicated for AI models (990 Pro). Add 4TB+ HDD later for cold storage / Plex library.
PSU — Buy Once, Cry Once
Why it matters: Cheap PSUs kill components. Good PSUs last 10 years across multiple builds. Size for FUTURE GPU upgrade, not just today's parts.
Spec Literacy
Current Landscape
| Part | Price | Notes |
|---|---|---|
| Corsair HX1200i premium wattage: 1200 · efficiency: Platinum/ATX 3.1 |
$320 | Your locked choice. 12-yr warranty. Quiet. iCUE software for monitoring. |
| Corsair RM1000x great wattage: 1000 · efficiency: Gold/ATX 3.1 |
$200 | Excellent value. 10-yr warranty. If single-GPU lifetime, this is enough. |
| Seasonic PRIME TX-1300 ultra wattage: 1300 · efficiency: Titanium/ATX 3.1 |
$440 | The gold standard. 12-yr warranty. Premium price. |
| Seasonic Focus GX-1000 great wattage: 1000 · efficiency: Gold/ATX 3.1 |
$190 | Seasonic quality at midrange price. 10-yr warranty. |
| EVGA Supernova G7 1000W great wattage: 1000 · efficiency: Gold/ATX 3.1 |
$180 | EVGA quality (made by Super Flower). 10-yr warranty. |
| Thermaltake / generic 1000W avoid wattage: 1000 · efficiency: Gold |
$90 | DO NOT. Cheap caps, weak protection, voids GPU warranty when they fail. |
Brands worth buying: Corsair (HX/RM/SF), Seasonic (PRIME/Focus), EVGA (G/P series, Supernova line), be quiet! (Dark Power, Straight Power), Super Flower (Leadex). Avoid: anything you've never heard of, anything under $80 at 1000W.
Motherboard — The Platform Decision
Why it matters: Hardest part to upgrade later. Locks in CPU socket, RAM standard, PCIe gen, USB version. Buy for 5 years.
Spec Literacy
Current Landscape
| Part | Price | Notes |
|---|---|---|
| ASUS ProArt X870E-Creator WiFi creator chipset: X870E |
$510 | Your locked choice. Dual USB4, dual 5G LAN, dual PCIe 5.0 x16 (x8/x8 split). Creator board = workstation tier without workstation price. |
| MSI MEG X870E Godlike halo chipset: X870E |
$1099 | Halo board. Most features. Massive price premium for limited real benefit. |
| ASUS ROG Strix X870E-E gaming-premium chipset: X870E |
$540 | Gaming-focused premium. Excellent VRMs. RGB heavy. |
| MSI MAG X870 Tomahawk WiFi mid chipset: X870 |
$330 | Best value X870. Single PCIe 5.0 slot only — no dual GPU split. |
| Gigabyte B850 Aorus Elite WiFi budget chipset: B850 |
$220 | Solid mid-budget. Good VRMs. No dual GPU. |
| ASRock B650 Pro RS minimum chipset: B650 |
$150 | Cheapest viable. 9950X is at VRM limits — fine for stock, no OC headroom. |
Pay for the platform if you plan upgrades. ProArt X870E preserves dual-GPU + USB4 + 5-year platform life. Stepping down to B650 saves $300 but kills the upgrade path.
Cooling — Adequate is Better Than Maximum
Why it matters: 9950X needs serious cooling under sustained load. LLM training spikes CPU. Gaming spikes GPU. Both spike together = thermal limits matter.
Spec Literacy
Current Landscape
| Part | Price | Notes |
|---|---|---|
| Arctic Liquid Freezer III 360 A-RGB value-king type: AIO 360mm |
$130 | Best value AIO. Beats $200 competitors in tests. Your locked choice. |
| Noctua NH-D15 G2 premium-air type: Air |
$150 | Best air cooler made. Massive — check clearance with tall RAM. Quieter than any AIO. |
| Corsair iCUE H150i Elite LCD XT premium-gimmick type: AIO 360mm |
$280 | LCD screen on pump = gimmick. Pay for the looks. |
| Phanteks T30 + Glacier One 360 premium type: Custom-grade AIO |
$250 | T30 fans are legendary. Diminishing returns vs Arctic at 2× price. |
| DeepCool LT720 value type: AIO 360mm |
$130 | Good Arctic alternative. Slightly louder. Same performance tier. |
| Thermalright Phantom Spirit 120 SE budget type: Air |
$40 | Insane value air cooler. Beats $80 coolers. Adequate for 9700X, marginal for 9950X. |
Case — Airflow > Aesthetics
Why it matters: Bad cases create thermal throttling. Good cases stay cool quietly. Future-proof for dual GPU = full tower with 3-slot GPU clearance.
Spec Literacy
Current Landscape
| Part | Price | Notes |
|---|---|---|
| Fractal Design Define 7 (regular) premium-silent size: Mid-tower (large) |
$200 | Your locked choice. Silent-focused, mesh front available, exemplary build quality. |
| Fractal Design Define 7 XL premium-silent-xl size: Full tower |
$270 | Extra room for dual GPU + radiator + HDDs. Future-proof. |
| Lian Li O11 Dynamic EVO XL showcase size: Full tower |
$230 | Showcase case. Three glass panels. Excellent thermals despite glass. Noisier. |
| Fractal Meshify 2 balanced size: Mid-tower |
$170 | Define 7 with mesh front. Slightly louder, slightly cooler. |
| be quiet! Silent Base 802 premium-silent size: Mid-tower |
$200 | Define 7 competitor. Silence-focused, swappable panels (mesh/closed). |
| Phanteks Eclipse G500A value size: Mid-tower |
$130 | Best value mesh. Solid build, great airflow. |
| NZXT H7 Flow value-clean size: Mid-tower |
$130 | Clean look, good airflow, easy to build in. |
Builds
Five paths to the same goal, with honest trade-offs for each.
Each build represents a coherent answer to a different question. The locked plan answers what's the disciplined path. The used 3090 answers what's the fastest path. The 5090 dream answers what's the no-compromise path. Read each pros/cons honestly — the right build for you is the one whose cons you can live with.
THE LOCKED PLAN — 12-Month Staged
What we agreed on. RTX 5080, 64GB, ProArt, staged purchase.
Parts
| Category | Part | Price |
|---|---|---|
| CPU | Ryzen 9 9950X | $489 |
| Cooler | Arctic Liquid Freezer III 360 | $130 |
| Mobo | ASUS ProArt X870E-Creator WiFi | $510 |
| RAM | G.Skill Trident Z5 Neo 64GB DDR5-6000 CL30 | $430 |
| GPU | RTX 5080 16GB (MSI/Zotac) | $999 |
| Storage 1 | WD Black SN850X 2TB | $250 |
| Storage 2 | Samsung 990 Pro 2TB | $280 |
| PSU | Corsair HX1200i 1200W Platinum | $320 |
| Case | Fractal Design Define 7 | $200 |
| Fans | Arctic P14 PWM × 3 | $35 |
| UPS | APC Back-UPS Pro 1500VA | $220 |
| OS | Windows 11 Pro | $30 |
- Best long-term flexibility
- Stays within $350/mo
- Validated use case first
- Upgrade path open
- 12 months to complete
- 16GB VRAM ceiling for first year
- Some 'shortage tax' on RAM/storage
Replace 5080 w/ 5090 in 2027 OR add 2nd 5080 for dual-GPU 32GB
USED 3090 — Fast Track Budget
Used RTX 3090 24GB, full build in 4-5 months.
Parts
| Category | Part | Price |
|---|---|---|
| CPU | Ryzen 7 9700X | $280 |
| Cooler | Thermalright Phantom Spirit 120 SE | $40 |
| Mobo | Gigabyte B850 Aorus Elite WiFi | $220 |
| RAM | G.Skill Trident Z5 Neo 64GB DDR5-5600 CL30 | $380 |
| GPU | RTX 3090 24GB (used, eBay/r/HWS) | $750 |
| Storage | WD Black SN850X 2TB | $250 |
| PSU | Corsair RM850x 850W Gold | $150 |
| Case | Phanteks Eclipse G500A | $130 |
| UPS | APC Back-UPS 1000VA | $130 |
| OS | Windows 11 Pro | $30 |
- 32B models run TODAY
- Done in 4-5 months
- Lowest total cost
- Strong used GPU value
- Used GPU risk
- 3090 power-hungry (350W)
- Older platform features
- Gaming weaker than 5080
Replace 3090 w/ 5090 later. Or sell at minimal loss.
5090 DREAM — No Compromise
If money truly weren't a concern. RTX 5090 + 9950X3D + 96GB.
Parts
| Category | Part | Price |
|---|---|---|
| CPU | Ryzen 9 9950X3D | $659 |
| Cooler | Noctua NH-D15 G2 | $150 |
| Mobo | ASUS ProArt X870E-Creator WiFi | $510 |
| RAM | G.Skill Trident Z5 Neo 96GB DDR5-6400 | $720 |
| GPU | RTX 5090 32GB (street price) | $3200 |
| Storage 1 | Samsung 990 Pro 2TB | $280 |
| Storage 2 | Samsung 9100 Pro 4TB | $750 |
| PSU | Seasonic PRIME TX-1300 Titanium | $440 |
| Case | Fractal Define 7 XL | $270 |
| UPS | CyberPower CP1500PFCLCD | $250 |
| OS | Windows 11 Pro retail | $200 |
- No compromises at all
- 70B local models possible
- Future-proof for 3+ years
- 3× your budget
- Doesn't match your monthly cash flow
- Shortage premium ($1200 over MSRP on GPU)
Eventual dual 5090 for true datacenter-at-home
MAC STUDIO M5 MAX — The Apple Alternative
128GB unified memory. Excellent LLM, no gaming.
Parts
| Category | Part | Price |
|---|---|---|
| Whole unit | Apple Mac Studio M5 Max, 128GB unified, 2TB SSD | $4799 |
- Unified memory = 128GB 'VRAM' equivalent
- Silent operation
- Tiny footprint
- Power efficient (200W max)
- Gaming essentially excluded
- Can't upgrade anything ever
- Apple tax on storage/memory
- macOS limits some LLM tooling
None. Sealed unit.
DUAL 5080 FUTURE STATE — Tensor Parallelism
What the locked build evolves into in year 2.
Parts
| Category | Part | Price |
|---|---|---|
| Existing locked build | Everything from locked plan | $3850 |
| GPU 2 | Second MSI/Zotac RTX 5080 16GB (used or new at MSRP) | $800 |
| Cables | Additional 12V-2x6 cables | $30 |
| Fans (heat mgmt) | 2× more case fans for dual GPU heat | $25 |
| Riser cable | PCIe 5.0 riser if vertical mount needed | $145 |
- 32GB combined VRAM for LLMs
- Existing build untouched
- Tensor parallelism in vLLM/llama.cpp
- LLM-only benefit (no gaming dual-GPU)
- Heat management complex
- Two cards = two failure points
Sell pair → single 5090 if desired
Market Intel
Where to buy, what to watch for, when to act.
Patience is the cheapest performance upgrade you can buy. The same RTX 5080 that costs $1,400 in February sells at $999 by May. Knowing the seasonality, the right retailer for each part, and the red flags on used goods can save more money than any single component choice.
Where to Buy New
Best for: CPU+Mobo+RAM bundles, in-stock GPU drops, lowest prices on AMD
Strengths: Bundle discounts ($100-200 off CPU+mobo+RAM), MSRP GPU stock more often than online, No tax in some states, Open-box deals
Weaknesses: Must drive there, Limited locations, Stock varies by store
Saturday morning before 11 AM = best stock. Get on their 'in-stock notifications' list for hot items.
Best for: GPU at MSRP, Apple products, store financing
Strengths: NVIDIA Founders Edition exclusive, 0% financing on store card, Local pickup option, Easy returns
Weaknesses: Higher prices on non-GPU parts, Limited PC component selection
Sign up for My Best Buy Plus during your purchase — free standard returns extended to 60 days.
Best for: PSUs, storage, cases, niche brands
Strengths: Largest PC parts selection, Frequent combo deals, Newegg gift card stacking
Weaknesses: Third-party seller risk (verify 'Shipped & Sold by Newegg'), RMA process can be painful
Filter by 'Shipped & Sold by Newegg' only. Avoid marketplace sellers for important parts.
Best for: Peripherals, cables, accessories, fast shipping
Strengths: Prime shipping, Easy returns, Subscribe-and-save for small parts
Weaknesses: Counterfeit components risk (RAM, SSDs, cables), Mixed warehouse inventory, Higher prices on GPUs/CPUs
Verify 'Ships from and sold by Amazon.com'. Avoid third-party for CPUs/GPUs/storage.
Best for: Workstation parts, professional gear, sales tax-free in many states
Strengths: No sales tax outside NY/NJ, Excellent customer service, Real human chat
Weaknesses: Smaller selection than Newegg, Closes Saturdays for Sabbath
Check B&H first if you're in a no-NY-tax state — savings can be 8-10%.
The Used Market
Used hardware often delivers 80% of the performance at 50% of the cost — but the risk profile changes completely. Vet sellers like you'd vet a patient's history: look for the red flags first.
Best for: Used GPUs, CPUs, RAM at fair prices from PC builders
Strengths: Verified user profiles (heatware), Mod-enforced rules, Mostly honest sellers, PayPal G&S protection
Weaknesses: Karma/comment requirements to post, Negotiation expected, No platform escrow
Rules:
- Always PayPal Goods & Services (NEVER Friends & Family for purchases)
- Check user's r/hardwareswap heatware before buying
- Verify timestamped photos in listing
Use r/hardwareswap_meta searches to check prices. Comment 'PM sent' on listings — quick responders trust faster.
Best for: Used GPUs (with buyer protection), bulk lots, rare parts
Strengths: Strong buyer protection (eBay Money Back Guarantee), Wide selection, Auction snipes can save money
Weaknesses: Mining cards common, Sellers often inflate condition, Returns can be hassled
Rules:
- Only buy from 99%+ feedback sellers
- Look for 'Local pickup' for high-value items
- Filter 'Buy It Now' for fixed prices
Sort 'Sold' listings by date to see TRUE market price. Use eBay alerts for specific models.
Best for: Local pickup, cash deals, full prebuilt PCs
Strengths: Test before buy, No shipping cost or damage, Cash = no fees
Weaknesses: Zero buyer protection, Scammers common, Meeting strangers
Rules:
- ALWAYS meet in public (police station parking lots ideal)
- Bring a laptop with HWInfo/GPU-Z to test on-site
- Cash only, never wire/Zelle/CashApp
Build a quick GPU stress test USB stick: Ubuntu live + glmark2 + nvidia-smi monitoring.
Best for: Same as FB Marketplace — local cash deals
Strengths: Less scam-prone than FB, Established for tech sales
Weaknesses: Declining usage, Same in-person risks
Most active in metro areas. Search 'gaming pc' rather than specific parts for bundle deals.
Best for: Daily curated deals at major retailers
Strengths: Community-vetted deals, Price history context, Hot deals get top-voted
Weaknesses: Deals expire fast, Some posts are affiliate-driven
Subscribe to RSS feed: reddit.com/r/buildapcsales/.rss → pipe to your daily briefing.
Red Flags by Component
Each component has its own failure modes. These are the signals that should make you walk away from a "great deal."
- Heat damage near power connector (browning/melting on 12VHPWR)
- Missing original box (often ex-mining)
- Dust caked deep in fins (sustained 24/7 use indicator)
- Backplate screws stripped (opened repeatedly)
- Seller can't produce purchase receipt for warranty transfer
- Listing says 'works great' but no benchmark numbers
- Bent pins on AM5 (LGA — pins on mobo) or LGA1700 (pins on chip)
- Thermal paste residue still on IHS (lazy seller, but not catastrophic)
- Seller says 'overclocked daily' (degradation risk over time)
- No box / no original packaging
- Heatsink labels peeling (often relabeled cheap RAM)
- Mismatched serial numbers on a 'kit'
- Speed claims don't match SPD chip (verify with CPU-Z screenshot)
- Bent pins on DIMM contacts
- Coil whine reported by seller (unfixable, will only get worse)
- Bulging capacitors visible through vent
- Burning smell ever reported
- Heavy use in mining rig (PSUs degrade hard under sustained 90% load)
- Past 7 years old (cap aging — replace, don't buy used)
- Power-on hours >5000 (check SMART data)
- Used percentage / wear leveling >20%
- Reported uncorrectable errors in SMART log
- No SMART screenshot in listing (deal-breaker)
Seasonality — When to Buy
| Month | Market Behavior |
|---|---|
| January (CES) | New product announcements. Last-gen prices may drop. Don't buy at MSRP for 30 days after CES. |
| February-March | Tax refund season. Demand up. Prices flat. Bad time to buy. |
| April | Post-tax dip. Some sales begin. |
| May-June | Build season starts. Memorial Day sales (last Monday of May). |
| July | Amazon Prime Day (mid-July). Real deals on storage, peripherals. GPU deals rare. |
| August | Back-to-school. Laptop focus, not desktop parts. Some monitor sales. |
| September | New school year. Some component dumps as students sell. |
| October | Pre-holiday slowdown. |
| November | BLACK FRIDAY WEEK. Real GPU/CPU sales. PSUs, cases, storage all discounted. Best buying month. |
| December | Cyber Monday + holiday sales. PSUs and storage continue. GPU stock thin. |
Deal Hunting Tools
- PCPartPicker price tracker (sign up, set alerts on specific parts)
- CamelCamelCamel for Amazon price history
- Slickdeals.net hot deals (PC components forum)
- r/buildapcsales subreddit RSS feed
- Discord servers: r/hardwareswap notifier bots
- Microcenter in-store stock checker (3rd party tools track inventory)
- Newegg Shuffle for GPU drops (lottery system, free to enter)
Ecosystem
Four devices, one architecture, complementary roles.
Each device does what it's best at. They talk to each other. The Optiplex never sleeps and never gets in your way. The MacBook goes where you go. The new PC carries the heavy compute. The iPhone connects you to all of it.
Your 4-Device Architecture
Specs: i7-6700T, 32GB, 1-2TB SSD (upgrade), Intel HD 530
Why: 35W TDP = $5/month electricity for 24/7 uptime. Perfect always-on tier.
Runs:
- Open WebUI (LLM frontend)
- Ollama (small models)
- Plex/Jellyfin
- Home Assistant
- Tailscale exit node
- n8n automation
- Reverse proxy (Caddy)
- Backup service (restic)
- Future: live data fetcher for encyclopedia
Specs: M4, 24GB unified memory, macOS
Why: 24GB unified memory runs 14-30B models surprisingly well. Best mobile LLM machine you can own.
Runs:
- LM Studio / Ollama with MLX
- VS Code
- Browser, daily driver
- Claude API for orchestration
Specs: 9950X, 64GB DDR5, RTX 5080, dual-boot Win+Linux
Why: On when you're using it. Sleeps when you're not. Carries the heavy LLM workload.
Runs:
- Local LLMs at GPU speed (Qwen3 14B-24B)
- Gaming
- Heavy compute when home
- Future: dual GPU, 5090 swap
Why: Universal access to your ecosystem via Tailscale + Open WebUI mobile.
Runs:
- Open WebUI via Tailscale
- Home Assistant mobile app
- Quick LLM queries from anywhere
Networking & Access
| Service | Purpose | Complexity | Cost |
|---|---|---|---|
| Tailscale | Secure remote access to all devices, no port forwarding, works through CGNAT | Easy | Free for personal (up to 100 devices) |
| Caddy reverse proxy | Pretty URLs (ollama.local, plex.local) + automatic HTTPS | Medium | Free |
| Pi-hole / AdGuard Home | Network-wide ad blocking, DNS sinkhole, telemetry blocking | Easy | Free |
| WireGuard (alternative to Tailscale) | Self-hosted VPN if you don't trust 3rd parties | Hard | Free |
| Cloudflare Tunnel | Expose specific services publicly without opening ports | Medium | Free |
Integration Patterns
Open WebUI on Optiplex routes queries to whichever machine has the right model loaded.
Example: Quick question → Optiplex's Qwen 4B. Code task → MacBook's Qwen 14B. Big reasoning task → new PC's 24B.
iPhone hits any service through Tailscale + Open WebUI.
Example: On a coffee shop wifi, ask your local LLM about a clinical question — encrypted to your Optiplex, response stays private.
Optiplex serves files; all devices mount via SMB/NFS.
Example: PDFs of papers stored once on Optiplex; accessible from MacBook for review, new PC for RAG indexing.
Important data on each device → Optiplex (primary backup) → cloud (Backblaze B2 / iDrive / encrypted Drive).
Example: 3-2-1 rule: 3 copies, 2 different media, 1 offsite.
Power Budget
What it costs to run your ecosystem 24/7. At $0.12/kWh national average.
| Device | Idle Draw | Peak Draw | Duty Cycle | Monthly Cost |
|---|---|---|---|---|
| OptiPlex 7050 | 25W | 65W | 24/7 | $2.16 |
| New PC (idle) | 85W | 650W | 8h/day | $2.45 |
| New PC (LLM inference) | — | 450W | 2h/day | $3.24 |
| New PC (gaming) | — | 600W | 1h/day | $2.16 |
| Network gear | 15W | 20W | 24/7 | $1.30 |
| UPS overhead | 10W | — | 24/7 | $0.86 |
| Estimated monthly total | ~$12 | |||
$12/month for a private AI inference server + gaming rig + media server + home automation hub. A single Claude Pro subscription is $20/month. Running your own stack is cheaper than most people think.
Optiplex Autonomous Service Stack
The Optiplex is your always-on home server. 35W idle = ~$2.50/month electricity. Docker handles the whole stack — each service runs in its own container, isolated and restartable.
Install Docker + Compose once, then every service below deploys with docker compose up -d. All data persists in named volumes on the Optiplex's SSD.
| Service | Category | Image | Port | Setup Time | What It Does |
|---|---|---|---|---|---|
| Ollama | AI | ollama/ollama | 11434 | 5 min | Local LLM inference server — CPU only on Optiplex, but fast enough for 7B models |
| Open WebUI | AI | ghcr.io/open-webui/open-webui | 3000 | 5 min | Chat UI for Ollama. Multi-user, model switching, RAG, web search. Your private ChatGPT. |
| AdGuard Home | Network | adguard/adguardhome | 3053/53 | 15 min | Network-wide ad/tracker blocking. DNS server. Faster than Pi-hole, better UI. |
| Tailscale | Access | tailscale/tailscale | – | 10 min | Zero-config VPN. Access every service on your Optiplex from anywhere, securely. |
| Caddy | Network | caddy:alpine | 80/443 | 20 min | Reverse proxy. Maps ollama.home → port 11434. Handles LAN HTTPS with self-signed cert. |
| n8n | Automation | n8nio/n8n | 5678 | 10 min | Visual workflow automation. 500+ integrations. Your automation command center. |
| Jellyfin | Media | jellyfin/jellyfin | 8096 | 20 min | Open-source Plex. Streams your media library to any device. No subscription. |
| Nextcloud AIO | Storage | nextcloud/all-in-one | 8080 | 30 min | Self-hosted Dropbox. Files, calendar, contacts, notes — syncs to all devices. |
| Uptime Kuma | Monitor | louislam/uptime-kuma | 3001 | 5 min | Monitors all your services. Pings you if anything goes down. Pretty dashboard. |
| Stirling PDF | Utility | frooodle/s-pdf | 8081 | 5 min | Local PDF toolkit. Merge, split, compress, OCR, rotate — no cloud uploads. |
| Portainer CE | Mgmt | portainer/portainer-ce | 9000 | 5 min | GUI for managing all your Docker containers. See logs, restart, update from browser. |
| Vaultwarden | Security | vaultwarden/server | 8082 | 20 min | Self-hosted Bitwarden password manager. Your passwords, your server, no subscription. |
| Restic + cron | Backup | restic/restic | – | 30 min | Encrypted backup of all Docker volumes to Backblaze B2. Runs nightly via cron. |
Network-Wide Ad Blocking — AdGuard Home
Point your router's DNS at the Optiplex's IP and every device on your network — phone, TV, laptop — gets ad/tracker blocking without installing anything on each device. Blocks at the DNS level: ads never load, they simply don't resolve.
Setup in 15 Minutes
# 1. Deploy AdGuard Home
docker run -d --name adguardhome -p 3053:3000 -p 53:53/tcp -p 53:53/udp -v adguard_work:/opt/adguardhome/work -v adguard_conf:/opt/adguardhome/conf --restart unless-stopped adguard/adguardhome
# 2. Visit http://optiplex-ip:3053 → setup wizard
# 3. In your router: set DNS to optiplex-ip (primary)
# Use 1.1.1.1 as fallback so internet still works if Optiplex reboots
Recommended Blocklists
- AdGuard DNS filter — the default, covers 90% of ads
- OISD Full — comprehensive, low false positives:
https://big.oisd.nl - Steven Black hosts — adds social media trackers
- 1Hosts (Pro) — aggressive, may need whitelisting for some services
- HaGeZi Multi Pro — covers telemetry, malware, phishing
With OISD Full + AdGuard + HaGeZi: typically block 20–40% of all DNS queries on a home network. That's 20–40% of traffic that never hits the internet — faster browsing, less data used.
LLM Automation Pipelines — n8n + Ollama
n8n connects to Ollama's REST API to build autonomous AI workflows. These run on a schedule with zero intervention — they fire, do work, and post results wherever you want them (email, Slack, Telegram, a file, a webhook).
Fetches top stories from RSS feeds (HuggingFace Daily Papers, r/LocalLLaMA, r/buildapcsales, pharmacy/clinical news), sends each batch to Qwen3 7B for a 3-sentence summary, then assembles a single digest and sends it to your phone via Telegram or emails it.
n8n nodes: Cron trigger → RSS Feed (×4) → Merge → Ollama Chat (summarize) → Telegram
{
"model": "qwen3:7b",
"prompt": "Summarize in 3 sentences for a clinical pharmacist who also runs local AI: {{$json.content}}",
"stream": false
}
Hits CamelCamelCamel RSS feeds and r/buildapcsales for RTX 5080, Ryzen 9 9950X, and DDR5 deals. If price drops below threshold, sends an immediate Telegram alert. Zero manual checking needed.
n8n nodes: Cron trigger → HTTP Request (price APIs) → IF (price < threshold) → Telegram alert
# Price check via CamelCamelCamel RSS
# RTX 5080 ASIN: varies — check product page
THRESHOLD = 999 # buy trigger price
# n8n sends alert when current_price <= THRESHOLD
Queries PubMed API for new publications on 3 drug classes you're tracking (customize to your practice area). Sends abstracts to DeepSeek R1 7B with prompt: "Summarize clinical implications for a hospital pharmacist." Posts digest to your Nextcloud Notes or emails it.
n8n nodes: Cron → PubMed API (×3 searches) → Merge → Ollama Chat (DeepSeek R1) → Nextcloud file write
Hits Yahoo Finance / Alpha Vantage API for your tracked tickers (your holdings, watchlist). Pulls current P/E, 52-week position, YTD return. Feeds data to Qwen3 7B: "As a value investor with a 10-year horizon, summarize these positions in 3 bullet points each." Sends weekly report.
n8n nodes: Cron → HTTP (Yahoo Finance) → Ollama Chat → Gmail / Telegram
n8n webhook endpoint accepts a POST with a drug list. Queries OpenFDA API for known interactions, then sends the full list + clinical context to DeepSeek R1 14B (on Optiplex or routed to new PC): "As a clinical pharmacist, identify the 3 most clinically significant interactions and recommend management." Returns JSON response.
Callable from your phone, browser, or any automation. Private, no PHI leaves your network.
Scrapes eBay completed/sold listings for GPU and CPU searches using the eBay Finding API (free tier). Tracks average sold price over 30 days, writes to a local SQLite DB, and generates a price trend chart. Feeds into the Market Intel tab's "Live Data" section once the new PC is built.
Tools: n8n HTTP Request → eBay API → Function (parse JSON) → SQLite node → Telegram if trend shifts >10%
Crawlers & Data Collection
Lightweight Python scripts running as cron jobs or Docker containers — not full scraping frameworks, just targeted data collection for your specific needs.
Polls the HuggingFace Hub API for models tagged "text-generation" sorted by trending. Stores a daily snapshot in SQLite. Compares to yesterday — sends a Telegram message if any model > 1K likes appeared in the last 24h. Your early-warning system for new model releases.
import requests, sqlite3
from datetime import date
r = requests.get("https://huggingface.co/api/models",
params={"sort":"trending","limit":50,"filter":"text-generation"})
models = r.json()
# store + diff vs yesterday → alert if new entries
Hits Reddit's JSON API for r/buildapcsales. Filters for posts containing "5080", "9950X", "DDR5", "NVMe" with flair "GPU", "CPU", or "Storage" and upvotes > 50. Sends title + link + price to Telegram immediately. You see good deals within minutes of posting.
KEYWORDS = ["5080", "9950x", "ddr5 64gb", "990 pro 2tb"]
r = requests.get("https://www.reddit.com/r/buildapcsales/new.json",
headers={"User-agent": "optiplex-monitor/1.0"})
posts = r.json()["data"]["children"]
# filter + alert on keyword match
Queries arXiv API for cs.AI + cs.LG papers submitted in the last 24h. Filters for keywords: "local inference", "LLM benchmark", "quantization", "RLHF", "reasoning". Sends a batch summary every morning via n8n → Ollama → Telegram.
import feedparser
feed = feedparser.parse(
"https://export.arxiv.org/rss/cs.AI")
recent = [e for e in feed.entries
if any(kw in e.title.lower()
for kw in ["llm","inference","reasoning"])]
# forward to n8n webhook for LLM summarization
Uses yfinance (free, no API key) to pull daily close prices for your holdings + watchlist. Writes to a local SQLite database. After 90 days, you have enough history to plot meaningful charts locally. Never sending portfolio data to a third-party app.
import yfinance as yf
TICKERS = ["VOO", "VTI", "AAPL", "BRK.B"]
data = yf.download(TICKERS, period="1d")
# store to SQLite, compute daily pnl
# serve via local Flask dashboard
Full Docker Compose — Optiplex Stack
Deploy the full stack with one command. Save as ~/docker/compose.yaml then run docker compose up -d. Edit the commented variables for your environment.
version: "3.9"
services:
ollama:
image: ollama/ollama
container_name: ollama
volumes:
- ollama_data:/root/.ollama
ports:
- "11434:11434"
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
depends_on: [ollama]
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- webui_data:/app/backend/data
ports:
- "3000:8080"
restart: unless-stopped
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
volumes:
- adguard_work:/opt/adguardhome/work
- adguard_conf:/opt/adguardhome/conf
ports:
- "53:53/tcp"
- "53:53/udp"
- "3053:3000" # web UI (avoid port 80 conflict)
restart: unless-stopped
n8n:
image: n8nio/n8n
container_name: n8n
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=changeme # change this
- N8N_HOST=n8n.home
- WEBHOOK_URL=http://n8n.home:5678/
volumes:
- n8n_data:/home/node/.n8n
ports:
- "5678:5678"
restart: unless-stopped
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
volumes:
- jellyfin_config:/config
- /mnt/media:/media:ro # point to your media folder
ports:
- "8096:8096"
restart: unless-stopped
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- kuma_data:/app/data
ports:
- "3001:3001"
restart: unless-stopped
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
ports:
- "9000:9000"
restart: unless-stopped
volumes:
ollama_data:
webui_data:
adguard_work:
adguard_conf:
n8n_data:
jellyfin_config:
kuma_data:
portainer_data:
1. Install Docker CE on Ubuntu: curl -fsSL https://get.docker.com | sh → 2. Add user to docker group: sudo usermod -aG docker $USER → 3. Place compose.yaml → 4. docker compose up -d → 5. Set Tailscale as last step so VPN is live for remote access immediately.
Automation
Make your devices earn their keep.
Automation should remove drudgery, not create it. Each one earns its keep only if it saves more time than it cost to build — measured over six months, not six days. The best ones run silently and you forget they exist.
Platforms
Self-hosted workflow automation. Visual node-based editor. 500+ integrations.
Best for: API integrations, scheduled tasks, complex multi-step workflows
Better than Zapier/Make for self-hosted — your data stays local
Home automation hub. Manages smart devices + automations.
Best for: Lights, climate, sensors, cameras, voice assistants
Open ecosystem. Local control. Integrates with everything.
Flow-based programming. Heavier engineering than n8n.
Best for: IoT, MQTT, complex logic flows
When n8n isn't powerful enough
Classic Linux scheduling. Old-school but bulletproof.
Best for: Simple scheduled scripts, backups, data fetching
Zero overhead. No service to manage.
Apple's automation for iPhone.
Best for: Personal automations triggered by location/time/event
Lives where you do. Triggers from Siri, NFC tags, focus modes.
Ten Recipes Worth Building
Flow: n8n: 6 AM cron → fetch FDA drug shortages RSS + PubMed new in your specialties + r/medicine top posts → Qwen 14B summarizes → email to you
Value: 5 min reading instead of 60 min scrolling
Flow: Folder watch on Downloads → Phi-4 classifies (paper/monograph/admin/other) → moves to right folder + extracts metadata to SQLite
Value: Searchable paper library without manual filing
Flow: Before meetings: Shortcut grabs attendees → searches your notes for prior interactions → summary to your Apple Watch
Value: Walk into every meeting prepared
Flow: When you push new code to TDM repo → run test suite with 50 known cases → if any fail, halt deployment + Slack alert
Value: Never ship a TDM bug to production
Flow: Weekly: restic check on Optiplex → if errors, email + push notification. Monthly: actually restore a random file to verify integrity.
Value: Backups you can trust
Flow: Home Assistant: alarm goes off → lights gradient to warm → coffee maker on → news briefing on speaker → blinds open after 10 min
Value: Morning routine that runs itself
Flow: Cron: daily PubMed search for new vancomycin/AUC papers → Qwen summarizes abstracts → markdown file in Obsidian vault → tagged for review
Value: Stay current on YOUR research interests automatically
Flow: Cron: FDA drug shortage JSON pull → diff against yesterday → if formulary drugs affected → Slack + email
Value: Know about shortages before pharmacy meeting
Flow: Home Assistant + smart plugs on Optiplex/PC → daily power consumption → monthly dashboard of what costs what
Value: Know if running LLMs 24/7 is worth the electricity
Flow: iPhone Shortcut: record voice → Whisper transcription → Qwen 14B formats as SOAP note → drops in Drafts app → review/edit/file
Value: Capture clinical observations hands-free
Docker Install Stack — Your Optiplex Server
Complete from-scratch setup. Run these sequentially on a fresh Ubuntu 22.04 installation.
Docker Engine — Ubuntu/Debian
# Install Docker Engine (one-liner)
curl -fsSL https://get.docker.com | sh
# Add your user to docker group
sudo usermod -aG docker $USER
newgrp docker
# Verify
docker run hello-world
docker compose version
Portainer — Web UI for all containers
Manage every container via browser at :9000. Essential for the Optiplex.
docker run -d \
--restart=always \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
--name portainer \
portainer/portainer-ce:latest
# http://optiplex-ip:9000 → set admin password
n8n — Workflow Automation
# docker-compose.yml
services:
n8n:
image: n8nio/n8n
restart: unless-stopped
ports: ["5678:5678"]
volumes:
- n8n_data:/home/node/.n8n
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=changeme
- WEBHOOK_URL=http://optiplex-ip:5678
volumes:
n8n_data:
docker compose up -d
# http://optiplex-ip:5678
Ollama — On the Optiplex (LAN accessible)
# Install on Ubuntu
curl -fsSL https://ollama.ai/install.sh | sh
# Expose on LAN — edit the systemd service
sudo mkdir -p /etc/systemd/system/ollama.service.d
echo '[Service]
Environment="OLLAMA_HOST=0.0.0.0"' | \
sudo tee /etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart ollama
# Now call from MacBook:
# curl http://optiplex-ip:11434/v1/models
Home Assistant — Home Automation
mkdir -p ~/homeassistant/config
docker run -d \
--name homeassistant \
--privileged \
--restart=unless-stopped \
-e TZ=America/New_York \
-v ~/homeassistant/config:/config \
--network=host \
ghcr.io/home-assistant/home-assistant:stable
# http://optiplex-ip:8123
Open WebUI on Optiplex (LAN server)
docker run -d \
--restart unless-stopped \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://localhost:11434 \
-v open-webui:/app/backend/data \
--network=host \
--name open-webui \
ghcr.io/open-webui/open-webui:main
# MacBook: http://optiplex-ip:3000
# Sign in → full ChatGPT-like UI against your local models
Media Servers
Self-hosted libraries — own what you watch, listen to, and read.
Self-hosted media is about ownership, organization, and access — not piracy. Buy the content, rip it for your library, stream it everywhere.
Owning physical media (DVDs, Blu-rays, books) gives you broad rights to make backup copies for personal use under most jurisdictions. Sharing or distributing those copies is where it crosses lines. This encyclopedia assumes you're operating in the legal personal-use space.
The Stack
Purpose: Media server (video, music, books)
Fully open source. No subscription. No telemetry. Hardware transcoding free (Plex paywalls this).
Purpose: Media server (more polished UI)
Better remote streaming (built-in NAT traversal). Larger ecosystem. Better metadata matching.
⚠ Telemetry-heavy. Increasing ad-supported content push. Account required.
Cost: Plex Pass ($120 lifetime) needed for hardware transcoding + offline downloads
Purpose: Music streaming (Spotify replacement)
Subsonic-compatible. Tiny resource footprint. Excellent mobile clients (Substreamer, play:Sub).
Scenario: Your purchased MP3/FLAC library → access from anywhere
Purpose: Audiobook + podcast server
Open source Audible-killer. Tracks progress across devices. Auto-downloads podcasts.
Scenario: Audiobooks you bought (Libro.fm, libraries via Libby exports)
Purpose: Photo backup + management (Google Photos replacement)
Mobile app auto-uploads from iPhone. AI face recognition (local). Album sharing.
Purpose: E-book library
Your books accessible everywhere. Send to Kindle/Kobo. OPDS feed for readers.
Scenario: Your DRM-free purchased ebooks + scanned reference texts
Purpose: Comics / manga server
If you read comics. Mobile clients are excellent.
Hardware Considerations
- Storage is the biggest spend — plan for 8-16TB total over time
- HDDs (WD Red Pro, Seagate IronWolf) for media bulk. NVMe for cache.
- Optiplex i7-6700T can transcode 1080p H.264 in real-time via QuickSync. Struggles with 4K/HEVC.
- ZFS or BTRFS for data integrity if you go beyond 8TB
- Optiplex has limited drive bays — consider external USB enclosure (DAS) or upgrading to a NAS box (Synology DS923+ ~$600) when collection grows
- RAID is not backup. Always have offline + offsite backup of irreplaceable content (photos especially).
Library Organization
- Movies: /Media/Movies/Movie Name (Year)/Movie Name (Year).mkv
- TV: /Media/TV/Show Name/Season XX/Show Name - SXXEXX - Episode Name.mkv
- Music: /Media/Music/Artist/Album (Year)/XX - Track.flac
- Photos: Let Immich organize by date. Don't manually file.
- Audiobooks: /Audiobooks/Author/Series #X - Book Title/
- Use *arr stack (Sonarr/Radarr/Lidarr/Readarr) ONLY if you understand the legal landscape in your jurisdiction
Finance
Credit mechanics, financing tools, and the pitfalls that catch smart people.
Validate before financing. Stage rather than splurge. Pay yourself first. Never carry a balance you can't kill quickly. These principles guided this PC plan, but they apply to every major purchase for the rest of your life.
690 currently (you mentioned recent drop). Target 720+ in 6 months by NOT opening new accounts.
What Moves Your Credit Score
Where to Check Your Score
- annualcreditreport.com — free actual reports from all 3 bureaus, weekly access since 2023
- Credit Karma — free score estimates (VantageScore, not FICO — directionally accurate)
- Your bank app — most show FICO score for free monthly (Chase, Discover, Citi all do)
- Experian app — free FICO score, alerts, fraud monitoring
Financing Tools
Examples: Wells Fargo Reflect (21mo), Chase Freedom Unlimited (15mo), Citi Simplicity (21mo)
How it works: True 0% APR for promo period on new purchases. NO retroactive interest if not paid off.
Risk: Low — just pay above minimum each month
Examples: Best Buy (18-24mo), Microcenter (6mo), Home Depot
How it works: 0% during promo, BUT retroactive interest charged on entire purchase if any balance remains at end
Risk: HIGH if you miss the deadline by even $1
Safety: Pay off 1-2 months BEFORE deadline, never on it
How it works: Split purchase into 4 biweekly payments. Usually 0% interest.
Risk: Low IF paid on time. Since 2025, Klarna/Affirm report to bureaus — missed payment now hurts credit.
Best for: Items under $500 that you'll pay off in 6 weeks anyway
How it works: 6-36 month installments. APR varies 0-36% based on credit.
Risk: Higher — at 690 credit, your APR likely 10-25%, NOT 0%
⚠ 0% offers often only show at checkout AFTER approval — don't assume you'll get 0%
Examples: SoFi, LightStream, Marcus, your credit union
How it works: Fixed payments, fixed APR, predictable
Risk: Lowest — predictable, no compounding
Best for: Consolidating multiple high-rate debts
How it works: Move existing debt to a new card at 0% for 15-21 months. Usually 3-5% transfer fee.
Risk: Same deferred-interest risk as store cards (sometimes — read fine print)
Best for: Strategic move if you already have credit card debt
Pitfalls
Scenario: Best Buy 18mo financing. Pay $999 GPU down to $1 by month 18. Forget to pay the dollar. Get charged 30% APR × $999 × 18mo retroactively.
Cost: $300-500 unexpected charge
Prevention: Set autopay for minimum + manual payments above. Pay off 2 months before deadline.
Scenario: 3 Klarna + 2 Affirm + 1 Afterpay simultaneously. Lose track of due dates.
Cost: Missed payments → 60+ point credit drop + 30% APR on balances
Prevention: Max 2 active BNPL at any time. Track due dates in single calendar.
Scenario: $5,000 on a 24% APR card. Pay minimum ($100). Takes 14 years to pay off. Pay $7,500 in interest.
Cost: 150% of original purchase in interest
Prevention: Never carry credit card balances beyond promo period. Treat min payment as minimum, not target.
Scenario: Opened card for signup bonus. Forgot to cancel. Year 2 charges $95 AF you didn't budget for.
Cost: $95-695 per card
Prevention: Calendar reminder 11 months after opening. Downgrade to no-fee version or cancel.
Scenario: Helped a family member. They miss payments. Your credit destroyed.
Cost: 100+ point credit drop + legal liability
Prevention: Never co-sign for anyone you can't afford to pay off entirely yourself.
The Operating Principles
- Pay yourself first — automatic transfer to savings BEFORE you see your paycheck
- Emergency fund = 3-6 months of expenses, untouchable
- Validate purchases by waiting 30 days for anything over $500 (you did this with the PC — good)
- Test before buy — could you use this for 30 days for free/cheap? (Like Optiplex LLM testing before $4K PC)
- Total cost > sticker price — include financing fees, AF, time-cost of management
- If you can't pay cash, you can't afford it — financing is a tool, not a license
Income Expansion
The same infrastructure you're building for learning can generate revenue. The Optiplex runs today. The new PC multiplies throughput. Every side gig below uses skills you already have or are actively building.
Each project sharpens skills that make the next project faster. Clinical writing improves your pharmacy practice. Automation consulting teaches you tools you use at home. The flywheel is the point.
Tier 1 — Start This Week (Optiplex + MacBook)
Zero additional investment. Uses hardware and skills you have right now.
What: Drug monographs, formulary evaluations, P&T committee summaries, medication use evaluations. Hospitals and PBMs outsource this constantly.
Your edge: Clinical pharmacist who can use local LLMs for first-draft literature synthesis, then apply expert judgment. 3x faster than manual.
Tools: Qwen3 14B (literature synthesis) + PubMed API + your clinical expertise
First step: Write one sample drug monograph for a recently approved medication. Post on LinkedIn. Reach out to 5 community hospitals without a dedicated drug info pharmacist.
$200-500 per monograph. $1,000-3,000 per formulary review. Recurring if you land a quarterly P&T contract.
What: Create continuing education modules for pharmacists and nurses. ACPE-accredited providers always need content experts.
Your edge: LLMs draft case studies and assessment questions. You provide clinical accuracy and ACPE formatting expertise.
Tools: Local LLM for draft generation + Canva/LaTeX for slides
First step: Contact 3 ACPE providers (PharmCon, Power-Pak, FreeCE) about their content pipeline. Offer a 1-hour module on a trending topic (GLP-1 agonists, vancomycin AUC monitoring).
$500-2,000 per CE module. Some providers pay royalties per completion.
What: Set up n8n workflows, self-hosted tools, and basic automation for independent pharmacies, small clinics, dental offices.
Your edge: You understand clinical workflows AND tech. Most IT consultants don't know pharmacy. Most pharmacists don't know Docker.
Tools: n8n on your Optiplex (demo environment) + Tailscale for remote setup
First step: Automate one workflow at your own workplace. Document the before/after (time saved, errors prevented). That's your case study.
$500-1,500 per setup + $50-200/mo maintenance retainer. 3-5 clients = meaningful passive income.
What: Blog posts, tutorials, and guides about local LLMs, self-hosting, or clinical informatics. Medium, Dev.to, Substack, or your own site.
Your edge: "Clinical pharmacist who runs local LLMs" is a unique perspective. The intersection is underserved.
Tools: Your daily experience + any writing platform
First step: Write "How I Use Local LLMs in Clinical Pharmacy (Without Sending PHI to the Cloud)" — that title alone gets clicks.
Medium Partner Program, Substack paid subscriptions, or sponsored posts. Slow build but compounds with audience.
Watch: The Pharmacist-Tech Intersection
Tier 2 — Month 3+ (Validated Skills)
Requires the foundation from Tier 1 plus some proof of work. Higher revenue ceiling.
What: Build calculators, dosing tools, or clinical dashboards. Vancomycin AUC calculator. Antibiogram visualizer. Renal dose adjustor.
Your edge: You ARE the domain expert. Most dev shops building health tools have zero clinical pharmacists on staff.
Tools: FastAPI/Flask + your clinical knowledge + local LLM for code assistance
First step: Build your vancomycin AUC calculator as a web app. Open-source it. Present it at your state pharmacy association meeting. That talk becomes your sales pitch.
SaaS: $10-50/user/mo for institutional licenses. Or sell as a consulting engagement ($5K-20K per build). Open-source version drives leads.
What: Set up Jellyfin, Immich, Home Assistant, Nextcloud, Pi-hole for privacy-conscious professionals. White-glove home server builds.
Your edge: You've built this exact stack. Your Optiplex is a living demo.
Tools: Docker Compose templates + your Optiplex as reference + Tailscale for remote admin
First step: Create a "Home Server Starter Kit" — a polished docker-compose repo with docs. Share on r/selfhosted. First 3 clients come from there.
$500-1,500 per setup. Hardware markup (you source the Optiplex). $75/mo support retainer. Referral network builds fast.
What: Help hospitals optimize EHR workflows, build clinical rules, improve alert fatigue, design order sets. The intersection of pharmacy + IT that every health system needs.
Your edge: Clinical pharmacist who codes. This is one of the most in-demand skill combos in healthcare right now.
Tools: Your clinical license + programming skills + knowledge of FHIR/HL7
First step: Get CPIP (Certified Professional in Health Informatics) or take a health informatics certificate. Build one EHR optimization case study at your current job.
$75-150/hr consulting. Some firms hire part-time remote. This can become a full career pivot if you want it to.
What: Help healthcare orgs evaluate, validate, and fine-tune LLMs for clinical use. Run your "Generalized Vancomycin Test" protocol as a paid service.
Your edge: You've already built the validation framework (Pillar 02). Most orgs want to use AI but don't know how to validate it safely.
Tools: Your validation protocol + local GPU for testing + structured report templates
First step: Validate 5 models against your clinical test battery. Publish results as a white paper. Present at ASHP Midyear or a health-AI conference.
$2,000-10,000 per validation engagement. Recurring as models update quarterly.
Investment Fundamentals
Your $350/month savings habit is the foundation. Once the PC is built and debt-free (Month 15), that $350/month redirects to wealth building. Here's the playbook.
The Priority Stack
Money flows in this exact order. Don't skip levels.
Where to Open Accounts
The Simple Portfolio
This is what most financial advisors charge 1% AUM to do. You can do it yourself for 0.03% expense ratio.
| Fund | Ticker | Allocation (age 25-35) | Expense Ratio | What It Holds |
|---|---|---|---|---|
| US Total Market | VTI / FZROX | 60% | 0.03% / 0.00% | Every US public company (3,700+) |
| International | VXUS / FZILX | 25% | 0.07% / 0.00% | Every non-US developed + emerging market |
| Bonds | BND / FXNAX | 15% | 0.03% / 0.03% | US investment-grade bonds (stability) |
Rebalance annually (sell winners, buy losers to maintain target %). As you age, shift bonds up 1% per year. That's the entire strategy. It beats 90% of actively managed funds over 20 years.
Project Starter Kits
Actionable blueprints for each growth vector. Each kit lists what you need, what you build first, and how it compounds into the next level.
Build Sequence
- Week 1: Set up Ollama + Open WebUI on Optiplex. Run your first DDx exercise with DeepSeek R1 14B
- Week 2-4: Build vancomycin AUC calculator (Python/Flask). Test against 20 known cases
- Month 2: Create RAG pipeline over your institution's antibiogram + IDSA guidelines
- Month 3: Present tool at department meeting. Collect feedback. Iterate
- Month 4: Submit abstract to state pharmacy conference
- Month 6: Publish case series on clinical LLM use in pharmacy practice
Compounds into: Informatics consulting, CE content, conference speaking, clinical tool SaaS
Build Sequence
- Week 1: Complete one project with Devstral/Qwen Coder on your Optiplex. Push to GitHub
- Month 1: Set up full self-hosted stack (Jellyfin, Immich, Caddy, Pi-hole). Document everything
- Month 2: Build 3 n8n automations that save you real time. Measure hours saved
- Month 3: Contribute to one open-source project (Open WebUI, Ollama, a clinical tool)
- Month 4: Create your first Docker Compose template repo. Share on r/selfhosted
- Month 6: First paid automation client (from your case study + network)
Compounds into: Freelance dev work, self-hosted consulting, SaaS products, open-source reputation
Build Sequence
- Week 1: Open HYSA if not done. Set up $350/mo auto-transfer
- Month 1: Open Roth IRA (Fidelity). Set up $100/mo auto-invest into FZROX
- Month 3: Review employer 401(k) — are you getting full match? Adjust if not
- Month 6: First side gig revenue hits. Funnel 50% to Roth, 50% to brokerage
- Month 12: PC build complete. Redirect $350/mo → investments
- Month 15: Debt-free. All discretionary income → wealth building
Compounds into: Financial independence. $350/mo in VTI from age 30 = ~$850K by 60 at historical returns
Build Sequence
- Week 1: Set up daily briefing automation (n8n → RSS → LLM summary → email)
- Month 1: Build Obsidian vault with daily notes. Local LLM indexes and connects ideas
- Month 2: Create personal dashboard (Grafana or custom) — track habits, spending, project progress
- Month 3: Set up PubMed watch + drug shortage tracker automations
- Month 4: Build voice-to-note pipeline (Whisper → Qwen → structured notes)
- Month 6: Your ecosystem runs 10+ automations silently. You're the curator, not the operator
Compounds into: Every automation frees time for higher-value work. The system improves itself as you add to it
The Credential Stack
Strategic certifications that multiply your value at each intersection.
| Credential | Cost | Time | What It Unlocks |
|---|---|---|---|
| Board Certified Pharmacotherapy (BCPS) | $400 | Exam prep: 3-6 mo | Clinical credibility. Required for many clinical positions. Higher pay tier. |
| CompTIA Security+ / Linux+ | $400 | Self-study: 2-3 mo | IT credibility. Opens informatics consulting. Validates self-hosted infrastructure skills. |
| Health Informatics Certificate | $2,000-5,000 | 6-12 mo (part-time) | Formal bridge between clinical + tech. AMIA-recognized programs. Career pivot enabler. |
| AWS / GCP Cloud Cert | $300 | Self-study: 1-2 mo | Cloud credibility. Pairs with self-hosted knowledge for consulting. Most healthcare is moving to cloud. |
| Project Management (CAPM/PMP) | $400-600 | 2-4 mo | Consulting credibility. Required by many healthcare orgs for informatics roles. |
Don't collect credentials for their own sake. Each one should unlock a specific revenue stream or career move you've already identified. BCPS + informatics certificate + a portfolio of clinical tools = a $140K+ pharmacy informatics position.
Monthly Income Target Roadmap
| Timeline | Side Income Target | Primary Sources | Reinvestment |
|---|---|---|---|
| Months 1-3 | $0-200/mo | 1 medical writing gig, 1 blog post | 100% → HYSA / Roth IRA |
| Months 4-6 | $300-800/mo | Recurring writing + 1 automation client | 50% invest, 50% reinvest in tools/certs |
| Months 7-12 | $800-2,000/mo | CE content + consulting + tool revenue | 50% invest, 30% reinvest, 20% lifestyle |
| Year 2+ | $2,000-5,000/mo | Multiple streams compounding | Auto-invest the majority. You've built the machine |
This PC build isn't a $4,000 expense. It's a $4,000 investment in infrastructure that generates returns — skills, tools, revenue, and compounding knowledge — for years. The ROI is the person you become while building it.
Investment Philosophy
Warren Buffett built Berkshire Hathaway into the world's most successful investment operation using a handful of principles that have outperformed nearly every hedge fund, quant strategy, and trend-follower over 60 years. These principles adapt — but don't fundamentally change — in a world of AI disruption, rate volatility, and compressed information cycles.
"Price is what you pay. Value is what you get." Every good investment starts with understanding the gap between these two numbers. When price is far below value, the margin of safety absorbs your mistakes.
The Buffett Principles — Updated for 2026
A stock is a fractional ownership stake in a real business. Before buying, ask: "Would I buy this entire company if I could?" If not, don't buy 10 shares either. The ticker symbol is just the handle on the asset.
2026 adaptation: This principle has never been harder to apply with AI-adjacent companies. Evaluate the moat and earnings power, not just the AI narrative. Ask: "If AI commoditizes in 3 years, what's this business worth then?"
Buy at a significant discount to intrinsic value. If you calculate a business is worth $100/share, don't pay more than $60–70. The gap is your margin of safety — it absorbs bad estimates, recessions, and black swans.
2026 adaptation: In a world of AI-hyped valuations, margins of safety are rarer. This means holding more cash (Berkshire currently holds $334B) and being willing to wait. Opportunity cost is real, but so is capital loss.
Only buy businesses you genuinely understand — their economics, competitive dynamics, and failure modes. A small circle of competence, applied rigorously, beats a wide circle applied carelessly.
Your circle: Healthcare / pharma (clinical depth), technology infrastructure (building it yourself), consumer staples (you use them), financial services (you're learning this deeply). Don't drift into sectors you can't evaluate honestly.
A business worth owning has structural protection against competition. The five classic moats:
- Network effects — value grows with each new user (Visa, Meta, LinkedIn)
- Switching costs — painful to leave (Salesforce, Epic Systems, Adobe)
- Cost advantages — produce cheaper than competitors (Amazon logistics, GEICO)
- Intangible assets — brands, patents, regulatory licenses (Coca-Cola, Moody's)
- Efficient scale — market only supports one or two players (railroads, pipelines)
AI moat watch: AI can erode switching cost moats if it dramatically lowers switching friction. Watch closely in software.
Buffett's favourite holding period is "forever." Compounding is the most powerful force in finance, but it requires time to express itself. A $10,000 investment at 10% annual return = $67K after 20 years, $174K after 30, $452K after 40.
The implication: Taxes and transaction costs destroy compounding. Every sale triggers taxes. The best tax strategy is often "don't sell." Berkshire has held Coca-Cola since 1988 and Apple since 2016.
Graham's "Mr. Market" allegory: the market is a manic-depressive business partner who offers to buy or sell your shares every day. On bad days, he panics and offers absurdly low prices. On good days, he's euphoric and overpays. Your job is to take advantage of his mood swings, not follow them.
2026 reality: Algo trading, 24/7 news, and social media make Mr. Market more manic than ever. Use this. A 20% drawdown on a business you understand is a buying opportunity, not a reason to panic-sell.
Portfolio Architecture — The Foundation
Before individual stock picking, the asset allocation decision drives 90%+ of long-term returns. Get the foundation right first.
The Three-Fund Portfolio (Jack Bogle / Vanguard)
For most investors, three index funds cover the entire investable universe at minimal cost. This is the baseline — individual stock picks layer on top, not instead of.
| Fund | Ticker | Covers | Expense Ratio | Role |
|---|---|---|---|---|
| US Total Market | VTI / FSKAX | US stocks (all cap) | 0.03% | Core growth engine |
| International | VXUS / FTIHX | All non-US developed + EM | 0.07% | Geographic diversification |
| US Bonds | BND / FXNAX | US investment-grade bonds | 0.03% | Volatility buffer, income |
Age-Based Allocation Guide
These are starting points. Your risk tolerance and specific situation matter more than age-based rules.
| Age Range | US Stocks | Intl Stocks | Bonds | Rationale |
|---|---|---|---|---|
| 20s–30s | 60% | 30% | 10% | Max growth. Long runway absorbs downturns. |
| 40s | 55% | 25% | 20% | Slight de-risk. Major expenses (house, education) approaching. |
| 50s | 45% | 20% | 35% | Capital preservation becomes more important. |
| 60s+ | 35% | 15% | 50% | Income + stability. Less time to recover from drawdowns. |
Individual Stock Analysis — The Buffett Toolkit
When you look at individual companies beyond index funds, these are the metrics and questions that matter. Build a checklist and only buy when every box is checked.
| Ratio | Formula | Good Range | Buffett View |
|---|---|---|---|
| P/E | Price / EPS | 10–25× | Low P/E for cyclicals; pay up for quality growers |
| P/B | Price / Book Value | <3× | Loves companies trading at or below book |
| P/FCF | Price / Free Cash Flow | 15–25× | FCF is real money; earnings can be manipulated |
| ROE | Net Income / Equity | >15% | Consistent high ROE = durable competitive advantage |
| ROIC | NOPAT / Invested Capital | >12% | Best indicator of capital allocation quality |
| Debt/Equity | Total Debt / Equity | <0.5 | Avoid companies that need debt to grow |
| Current Ratio | Current Assets / Liabilities | >1.5 | Can they pay near-term bills without selling assets? |
- Can I explain this business in 2 sentences to a 10-year-old?
- What's the moat? Would it still exist in 10 years?
- How does the company make money when things go wrong?
- Is management honest? Have they done what they said they'd do in past letters/calls?
- Do insiders own significant stock? Are they buying, not just compensated with options?
- What kills this business? (Technological disruption, regulatory change, commoditization)
- At this price, what return do I need to generate a 12%+ IRR over 10 years?
- Would I be comfortable if the market closed for 5 years and I couldn't sell?
Discounted Cash Flow: estimate future free cash flows, discount back to present value at your required return rate (usually 10–12%). Simple model:
# Simplified DCF — 10-year horizon
fcf_today = 5_000_000_000 # $5B FCF
growth_rate = 0.08 # 8% annual growth (conservative)
discount_rate = 0.10 # 10% required return
terminal_multiple = 15 # exit P/FCF assumption
dcf_value = 0
for yr in range(1, 11):
fcf_year = fcf_today * (1 + growth_rate) ** yr
dcf_value += fcf_year / (1 + discount_rate) ** yr
terminal_value = (fcf_today * (1 + growth_rate)**10 * terminal_multiple) / (1 + discount_rate)**10
intrinsic_value = dcf_value + terminal_value
# Compare to current market cap — buy at 60-70% of this
The best free investment education available. Berkshire's annual letters (1965–present) are at berkshirehathaway.com/letters. Start with 1977 (when Buffett took over writing style), then 1983, 1987, 1996, 2008, 2014.
Essential books:
- The Intelligent Investor — Graham (read chapters 8 & 20 first)
- Security Analysis — Graham & Dodd (reference text)
- Common Stocks and Uncommon Profits — Philip Fisher (growth + quality lens)
- The Little Book That Still Beats the Market — Joel Greenblatt (Magic Formula)
- Poor Charlie's Almanack — Munger (mental models for investing + life)
Options Strategy — Generating Income on Holdings
Options are derivatives. Understand the underlying business first — options are just the financing tool. Never use options to speculate on businesses you wouldn't own. The strategies below are income-generating on positions you'd hold anyway.
Setup: You own 100 shares of XYZ at $50. Sell a call option with strike $55, expiring in 30 days, collecting $1.50 premium = $150 cash today.
Outcomes:
- XYZ stays below $55: keep $150 premium + shares. Do it again next month.
- XYZ rises above $55: shares called away at $55. Profit = $500 gain + $150 premium = $650. You miss upside above $55.
- XYZ drops: you keep $150 premium, which partially offsets the loss.
Best for: Shares you're willing to sell at the strike price anyway. Great for generating 1–3% monthly income on large positions.
Setup: You want to buy XYZ at $45 (it's trading at $50). Sell a put option with strike $45, expiring in 30 days, collecting $1.00 = $100 cash. Keep $4,500 in cash as collateral (margin for the put).
Outcomes:
- XYZ stays above $45: keep $100 premium, never bought. Do it again.
- XYZ drops below $45: you buy 100 shares at $45 (your target anyway). Net cost = $45 – $1 = $44 effective cost basis.
Best for: Stocks you genuinely want to own at a lower price. The wheel strategy: sell CSP → get assigned → sell covered call → repeat.
Setup: Instead of buying 100 shares of XYZ at $50 ($5,000), buy 1 deep-in-the-money call with strike $35, expiring in 2 years, for $1,600. You control 100 shares for $1,600 instead of $5,000.
Why: Delta of 0.85+ means the option moves almost dollar-for-dollar with the stock. Frees up $3,400 of capital. Buffett used LEAPS in his early partnerships. Limited downside = only lose the premium paid.
Risk: No dividends received. Time decay accelerates in final months. Must roll or exercise before expiry.
- Never sell naked calls (unlimited risk — EVER)
- Never allocate more than 5% of portfolio to a single options position
- Never sell options on earnings week unless intentional (volatility crush or expansion)
- Always have the cash or shares to fulfill assignment obligations
- Use limit orders, never market orders on options (bid-ask spreads are wide)
- If you don't understand the Greeks (delta, theta, vega), paper trade first for 3 months
- Don't sell options on stocks you wouldn't own at any strike that gets assigned
Market Dynamics in the AI Era
How AI is Reshaping Competitive Moats
AI doesn't destroy all moats equally. It tends to erode information asymmetry moats (the analyst who "knows" a sector better) while strengthening distribution and network-effect moats (the platform that owns the distribution channel). Key shifts:
- Information moats weakening: Any edge derived from processing more data faster is now commoditized. Research firms, legal discovery, financial analysis — all squeezed.
- Execution moats strengthening: Companies that combine AI capabilities with irreplaceable physical assets (railroads, pipelines, specialized manufacturing, healthcare infrastructure) are harder to disrupt.
- Customer intimacy moats compressing: AI lowers switching costs by reducing integration complexity. Watch enterprise SaaS carefully — the "too painful to switch" argument weakens as AI makes migration easier.
- New moat: AI infrastructure ownership. NVIDIA, TSMC, and cloud hyperscalers (MSFT, GOOG, AMZN) hold the physical compute layer. Models are commoditizing; compute isn't.
Sectors Worth Watching
| Sector | AI Impact | Moat Direction | Buffett Lens |
|---|---|---|---|
| Healthcare / Pharma | Drug discovery, diagnostics, admin | Strengthening (regulatory, clinical moats) | Strong long-term — aging demographics, pricing power |
| Financial Services | Fraud detection, underwriting, advisory | Mixed — incumbents vs fintechs | Moody's, Visa, AmEx — durable toll-booth businesses |
| Consumer Staples | Supply chain optimization, marketing | Neutral — brand moats hold | Core Buffett territory — Coke, P&G, Costco |
| Software / SaaS | Disruptive — AI rebuilds workflows | Weakening for commodity SaaS | Be selective — mission-critical only |
| AI Infrastructure | Is the sector itself | Strengthening | Shovel sellers in gold rush |
| Media / Advertising | AI content creation threatens CPMs | Weakening broadly | Buffett sold newspapers decades ago — for good reason |
Monthly Financial Dashboard — What to Track
A financial system you check monthly is more valuable than a sophisticated one you ignore. These are the numbers that matter.
Total assets minus total liabilities. Track the trend, not the number. Assets: checking + savings + investment accounts + 401k/IRA value + property value. Liabilities: student loans, mortgage, car, credit cards, personal loans.
Target trajectory: Net worth should grow by at least (income × savings rate) per year, plus investment returns. If it's not, there's a spending or allocation problem.
Savings rate = (income − spending) / income. This is the single most important financial lever you control. At 50% savings rate, you can retire in 17 years regardless of income. At 10%, it takes 43 years.
| Savings Rate | Years to FI |
|---|---|
| 10% | 43 years |
| 20% | 37 years |
| 35% | 25 years |
| 50% | 17 years |
| 65% | 10.5 years |
| 75% | 7 years |
Compare your total return (including dividends) to VTI (US total market). Most active investors underperform this benchmark over 10+ years. If your individual stock picks are consistently trailing VTI after fees and taxes, index funds are the better choice. No ego — be honest.
Track: total portfolio value, YTD return %, 1-year return %, 3-year annualized return %, benchmark comparison, asset allocation drift vs target.
Tax-loss harvesting: In December, sell positions that are down. Realize the loss to offset capital gains elsewhere. Immediately buy a similar (not identical — wash sale rule) fund. You maintain market exposure while reducing taxable income by up to $3K/year ($6K if married).
Rebalancing: If stocks outperform, your allocation drifts. Rebalance annually back to target. Threshold rebalancing (rebalance when any asset class drifts 5%+ from target) is more tax-efficient than calendar rebalancing.
HYSA & Cash Management
Rates as of early 2026. Shop annually — rates move with Fed funds rate.
| Account | APY | Notes |
|---|---|---|
| Marcus (Goldman Sachs) | 4.50% | No fees, easy ACH transfers, FDIC |
| SoFi Money | 4.60% | Direct deposit required for top rate |
| UFB Direct | 4.75% | Fluctuates — verify current rate |
| Wealthfront Cash | 5.00% | Passes through 32 FDIC partners → $8M coverage |
| Fidelity CMA (SPAXX) | 4.96% | Government money market, instant brokerage access |
Don't hold all cash in one place. Stagger it by time horizon:
- 0–1 month expenses: Checking account (immediate access)
- 1–6 months: HYSA (3-5 day ACH transfer, full emergency fund)
- 6–12 months: 6-month T-bills (higher yield, locked for 6 months — buy at TreasuryDirect.gov, currently ~5%)
- Investment cash (12+ months): Treasury money market fund (Fidelity SPAXX, Vanguard VMFXX) until deployed into equities at the right price
At 4.5%+ HYSA rates, cash earns meaningfully while waiting for opportunities. Buffett's $334B cash pile is in T-bills — the principle applies at any scale.
The Pharmacist's Financial Advantage
Your profession gives you a specific analytical edge in healthcare investing that most investors lack. You can evaluate drug pipelines, clinical trial quality, formulary dynamics, and PBM economics better than a generalist analyst can. Use it.
Healthcare Investing Edge — What You Know That Others Don't
- Drug approval probability: You can read FDA PDUFA dates and understand Phase III trial design quality in ways that wall street analysts often get wrong
- Generic competition timing: Patent cliffs, authorized generics, paragraph IV challenges — you understand this better than most equity analysts
- PBM dynamics: CVS Caremark, Express Scripts, OptumRx — how formulary placement and rebate economics actually work. Valuable for analyzing CVS Health, UnitedHealth, Cigna.
- Hospital supply chain: Which medical device companies have real institutional switching costs vs. which ones are interchangeable
- Biosimilar transition timing: You see this firsthand in clinical practice before it shows up in quarterly earnings reports
Relevant Tickers in Your Circle of Competence
| Company | Ticker | Your Edge | Moat Type |
|---|---|---|---|
| UnitedHealth Group | UNH | PBM + insurer dynamics, OptumRx | Scale + network |
| CVS Health | CVS | PBM, pharmacy, Aetna integration | Distribution + network |
| McKesson | MCK | Drug wholesale chain of custody | Scale + logistics |
| Pfizer / AbbVie | PFE / ABBV | Pipeline, patent cliff timing | Patents + pipeline |
| Eli Lilly | LLY | GLP-1 market, tirzepatide dynamics | Brand + pipeline |
| Becton Dickinson | BDX | Clinical device usage patterns | Switching costs |
| Danaher | DHR | Lab instrument recurring consumables | Switching costs + recurring |
This is a starting list — not a buy recommendation. Run each through the qualitative checklist and DCF framework before touching any of them.
AI Intel
State of the frontier — models, benchmarks, breakthroughs, and how to stay current.
The pace of AI in 2024–2026 is without precedent in software history. Models double in capability roughly every six months. Staying current isn't optional — it determines which problems you can solve and how.
Model Frontier — May 2026
Proprietary cloud and open-weights models worth knowing. Context = max tokens.
| Model | Lab | Tier | Context | Modality | Best For |
|---|---|---|---|---|---|
| Claude Opus 4.7 | Anthropic | Frontier | 1M | Text, Vision, Code | Deep reasoning, long-context, agentic tasks (what runs this site) |
| Claude Sonnet 4.6 | Anthropic | Frontier | 200K | Text, Vision, Code | Balanced speed + quality. Best daily driver cloud model. |
| GPT-4.1 | OpenAI | Frontier | 1M | Text, Vision, Code | Instruction following, function calling, coding tasks |
| o3 | OpenAI | Frontier | 200K | Text, Code | Hard math, competition problems, PhD-level reasoning |
| Gemini 2.5 Pro | Frontier | 2M | Text, Vision, Audio, Video | Multimodal, massive context windows, research synthesis | |
| Llama 4 Maverick 400B | Meta | Strong | 1M | Text, Vision | Open weights MoE. Best open model for most tasks. |
| Qwen3 235B-A22B | Alibaba | Strong | 128K | Text, Code | Open MoE near-frontier. Free weights. Self-host on high-VRAM server. |
| DeepSeek R1 | DeepSeek | Strong | 128K | Text, Code | Open reasoning model. Visible CoT. Distilled 14B runs locally. |
| Qwen3 14B / 32B | Alibaba | Local | 128K | Text, Code | Your primary local models. Excellent on 16–24GB VRAM. |
| Devstral 24B | Mistral | Local | 128K | Code | Best open coding agent. Edits files, runs tools. Pairs with VS Code. |
| Phi-4 14B | Microsoft | Local | 16K | Text | Exceptional reasoning for 14B size. Fast on 8GB VRAM. |
Benchmark Snapshot — What the Tests Actually Measure
| Benchmark | Tests | Why It Matters | Leader (2026) |
|---|---|---|---|
| GPQA Diamond | PhD-level science (human experts ~69%) | Hard reasoning ceiling — can't be crammed | o3 / Gemini 2.5 Pro (~87%) |
| AIME 2024/25 | Math Olympiad competition problems | Symbolic + numeric reasoning under pressure | o3 (~96%) |
| SWE-bench Verified | Real GitHub issues resolved end-to-end | Practical coding — the metric that matters for agents | Claude Opus 4.7 (~72%) |
| MMLU Pro | 57 academic disciplines, harder questions | Broad knowledge breadth across domains | GPT-4.1 / Gemini 2.5 Pro (~91%) |
| HumanEval | Python function generation from docstrings | Basic coding — now saturated at 99% | Multiple models (benchmark exhausted) |
| LM Arena (Chatbot Arena) | Human blind preference comparisons, live | Real-world signal — what people actually prefer | lmarena.ai — updated continuously |
How to Keep Up — The Essential Stack
Key Concepts — The Technical Vocabulary
The architecture behind every major LLM since 2017. Self-attention lets each token attend to all others — no recurrence, fully parallelizable on GPU. Scaled to billions of parameters via pretraining on internet text.
Read: "Attention is All You Need" (Vaswani et al., 2017) — the paper that started it all.
Reinforcement Learning from Human Feedback turns a raw pretrained model into an assistant. Humans rank outputs; a reward model learns preferences; the policy is fine-tuned. DPO (Direct Preference Optimization) achieves similar results without a separate reward model — simpler, often better.
This is what makes Claude helpful, not just fluent.
Give a model a search tool: query a vector DB → retrieve relevant text chunks → inject into prompt → generate grounded answers. Solves hallucination for knowledge-bounded domains better than fine-tuning in most production scenarios.
Local stack: Ollama + ChromaDB + AnythingLLM
Reduce model precision from FP32/BF16 to INT8/INT4. A 14B model at Q8 needs ~16GB VRAM; at Q4, ~9GB. Quality drop is modest for Q8, acceptable at Q4. Q2 is too aggressive. GGUF is the standard for llama.cpp/Ollama.
Rule: use Q8 if it fits, Q4 otherwise. Never Q2 for clinical tasks.
Route each token through a subset of "expert" networks rather than the full model. A 235B MoE model activates ~22B parameters per forward pass — matching a 32B dense model's compute while having far more total capacity. Used in Qwen3 235B, Llama 4 Maverick, Mixtral.
Tradeoff: high total VRAM to load, but fast inference per token.
LLMs as planners that call external tools in loops: web search, code execution, file I/O, API calls. The model outputs structured tool calls; the runtime executes them; results feed back into context. Claude Code, AutoGen, LangGraph, and CrewAI build on this pattern.
2026 frontier: multi-agent systems coordinating autonomously over hours.
Research Radar — 2024–2025 Papers Worth Knowing
| Paper / Release | Date | Why It Matters |
|---|---|---|
| DeepSeek R1 (DeepSeek) | Jan 2025 | Open reasoning model matching o1. Visible chain-of-thought. Proved closed-source reasoning models could be replicated with open weights. |
| Llama 4 (Meta) | Apr 2025 | MoE architecture, 10M token context Scout variant. Democratized frontier-class open weights. Changed calculus on what's runnable locally. |
| Qwen3 (Alibaba) | May 2025 | 235B MoE open weights beating GPT-4o on multiple benchmarks. Freely available. Distilled 14B/32B excellent for your local setup. |
| Flash Attention 2/3 | 2023–24 | IO-aware attention algorithm. 2–4× faster inference with identical outputs. Now standard in every serious LLM runtime. |
| Chinchilla Scaling Laws (Hoffmann et al.) | 2022 | Optimal model:data ratio for compute budget. Showed GPT-3 era models were undertrained. Compute-optimal training is the standard now. |
| LoRA / QLoRA | 2021–23 | Fine-tune 7B+ models on a consumer GPU via low-rank adapters. Reduces trainable params by 10,000×. Enables personal domain fine-tuning. |
| Constitutional AI (Anthropic) | 2022 | Safety via written principles rather than labeling every preference. Backbone of Claude's alignment approach. Widely influential. |
AI Timeline — Key Milestones
Live Feed
Real-time aggregation from the sources that matter. Deals, hardware drops, LLM releases, clinical alerts.
Seven feeds, one view. Deals from r/buildapcsales surface price drops on your exact parts list. r/LocalLLaMA catches new model releases before they hit the benchmarks. Ars and Tom's cover the analysis layer. All fetched server-side, cached 15 minutes, zero tracking.
Fetching feeds from 7 sources…
Sources
Journal
Log what works, what doesn't, what you learn. This is your evidence base for the Month 3 checkpoint decision.
Your Validation Journal. Write freely. Tag what mattered. Read it again at the Month 3 checkpoint — your future self will know whether the plan should hold, accelerate, or pivot.
New Entry
Entries
Learning Python
Full course — lectures, slides, notes, exercises. Your personal progress tracker.
#cs50p ·
⌘/Ctrl + Shift + K or P ·
Triple-click the footer
Topics
- print() and input()
- Variables: str, int, float, bool
- Defining functions with def
- Arguments, return values
- String methods: .strip() .lower() .upper() .replace()
- f-strings
- type(), len()
Key Patterns
def greet(name):
return f"Hello, {name}!"
name = input("What's your name? ").strip().title()
print(greet(name))
# Type conversion
age = int(input("Age: "))
gpa = float(input("GPA: "))
print(f"In 10 years you'll be {age + 10}")
print(f"GPA: {gpa:.2f}")
Topics
- if / elif / else
- Comparison operators: ==, !=, <, >, <=, >=
- Boolean operators: and, or, not
- match statements (Python 3.10+)
- Ternary expressions
Key Patterns
grade = int(input("Grade: "))
match grade // 10:
case 10 | 9: print("A")
case 8: print("B")
case 7: print("C")
case 6: print("D")
case _: print("F")
# Ternary
x = int(input("x: "))
parity = "even" if x % 2 == 0 else "odd"
print(f"{x} is {parity}")
Topics
- while loops
- for loops and range()
- enumerate(), zip()
- List comprehensions
- break, continue, pass
- Iterating dicts: .items() .keys() .values()
Key Patterns
# List comprehension
evens = [x for x in range(20) if x % 2 == 0]
# Dict iteration
scores = {"Alice": 95, "Bob": 87, "Carol": 91}
for name, grade in sorted(scores.items(), key=lambda kv: kv[1], reverse=True):
print(f"{name}: {grade}")
# while with validation
while True:
try:
n = int(input("Positive number: "))
if n > 0:
break
except ValueError:
pass
print(f"Got: {n}")
Topics
- try / except / else / finally
- ValueError, TypeError, KeyError, IndexError, FileNotFoundError
- raise — custom exceptions
- Exception hierarchy
- Bare except vs specific exceptions
Key Patterns
def get_int(prompt):
while True:
try:
return int(input(prompt))
except ValueError:
print("Not an integer, try again.")
age = get_int("Age: ")
print(f"Next year: {age + 1}")
class InvalidDoseError(Exception):
pass
def validate_dose(mg):
if mg <= 0:
raise InvalidDoseError(f"Invalid dose: {mg}mg")
return mg
try:
validate_dose(-10)
except InvalidDoseError as e:
print(f"Error: {e}")
Topics
- import, from … import, import as
- Standard library: random, statistics, sys, os, math, datetime
- PyPI and pip install
- requests — HTTP calls
- sys.argv for CLI arguments
- __name__ == '__main__'
Key Patterns
import random
import statistics
from datetime import date
ages = [random.randint(18, 80) for _ in range(100)]
print(f"Mean: {statistics.mean(ages):.1f}")
print(f"Today: {date.today()}")
# Install third-party packages
pip install requests rich typer httpx
# requirements.txt workflow
pip freeze > requirements.txt
pip install -r requirements.txt
import requests
r = requests.get(
"https://itunes.apple.com/search",
params={"term": "weezer", "entity": "song"}
)
for song in r.json()["results"][:3]:
print(song["trackName"])
Topics
- pytest framework
- Test functions named test_*
- assert statements
- pytest.raises for exception testing
- Running: pytest -v
- Testing edge cases and boundaries
Key Patterns
# test_calculator.py
from calculator import square
import pytest
def test_positive():
assert square(3) == 9
def test_negative():
assert square(-3) == 9
def test_zero():
assert square(0) == 0
def test_string():
with pytest.raises(TypeError):
square("cat")
pytest # run all tests
pytest -v # verbose
pytest test_calc.py -v # specific file
pytest -k "test_positive" # run matching tests
pytest --tb=short # shorter tracebacks
Topics
- open(), read(), readlines(), write()
- with statement — context manager
- Modes: r, w, a, x, rb, wb
- csv module: DictReader, DictWriter
- Pillow for image manipulation
- os.path, pathlib.Path
Key Patterns
import csv
from pathlib import Path
# Write CSV
with open("students.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "grade"])
writer.writeheader()
writer.writerow({"name": "Alice", "grade": 95})
# Read with pathlib
p = Path("students.csv")
for row in csv.DictReader(p.open()):
print(row["name"], row["grade"])
# Safely read / write any file
try:
with open("data.txt") as f:
contents = f.read()
except FileNotFoundError:
print("File not found")
except PermissionError:
print("Access denied")
Topics
- re module: search, match, fullmatch, sub, findall
- Character classes: \d \w \s .
- Quantifiers: * + ? {n,m}
- Groups () and named groups (?P
…) - Anchors: ^ $
- Flags: re.IGNORECASE
Key Patterns
import re
# Validate email
pattern = r"^[\w.+-]+@[\w-]+\.[\w.]{2,}$"
if re.fullmatch(pattern, "alice@example.com", re.IGNORECASE):
print("Valid email")
# Named capture groups
m = re.search(
r"(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<year>\d{4})",
"Born: 03/15/1990"
)
if m:
print(m.group("year")) # 1990
print(m.group("month")) # 03
# sub — replace
text = "Call us at 617-495-1000 or 617-495-9999"
clean = re.sub(r"\d{3}-\d{3}-\d{4}", "[REDACTED]", text)
print(clean)
Topics
- class, __init__, self
- Instance vs. class attributes
- __str__, __repr__, __eq__, __len__ — dunder methods
- Inheritance and super()
- @property, @classmethod, @staticmethod
- Encapsulation and @property setters
Key Patterns
class Student:
def __init__(self, name: str, grade: int):
self.name = name
self._grade = grade # private by convention
@property
def grade(self) -> int:
return self._grade
@grade.setter
def grade(self, value: int):
if not 0 <= value <= 100:
raise ValueError("Grade must be 0-100")
self._grade = value
@property
def letter(self) -> str:
if self._grade >= 90: return "A"
if self._grade >= 80: return "B"
return "F"
def __str__(self) -> str:
return f"{self.name}: {self.letter}"
alice = Student("Alice", 95)
print(alice) # Alice: A
# Inheritance
class GradStudent(Student):
def __init__(self, name, grade, research):
super().__init__(name, grade)
self.research = research
def __str__(self):
return f"{super().__str__()} [{self.research}]"
Topics
- Type hints and annotations
- Generators and yield
- Decorators with @
- map(), filter(), sorted() with lambdas
- *args and **kwargs unpacking
- Global Interpreter Lock (GIL) awareness
- __slots__ for memory optimization
Key Patterns
# Generator — lazy infinite sequence
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
gen = fibonacci()
print([next(gen) for _ in range(10)])
# Decorator
from functools import wraps
import time
def timer(func):
@wraps(func)
def wrapper(*args, **kwargs):
t0 = time.perf_counter()
result = func(*args, **kwargs)
print(f"{func.__name__} took {time.perf_counter()-t0:.4f}s")
return result
return wrapper
@timer
def slow_sum(n: int) -> int:
return sum(range(n))
slow_sum(10_000_000)
# Type hints
from typing import Optional
def divide(a: float, b: float) -> Optional[float]:
return a / b if b != 0 else None
Mutability: list/dict/set mutable · str/tuple immutable
Scope: LEGB — Local → Enclosing → Global → Built-in
Slicing:
s[start:stop:step] works on str, list, tuple
[x for x in iter if cond] — list{k:v for k,v in d.items()} — dict{x for x in lst} — set(x for x in lst) — generator
CLI Command Hub
Package managers, dev tools, system commands, and everything worth having memorized.
#cli ·
⌘/Ctrl + Shift + C · Triple-click footer
Homebrew — macOS macOS
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install <package> # install CLI tool
brew install --cask <app> # install GUI app
brew update && brew upgrade # update everything
brew list # list installed
brew search <query> # search packages
brew info <package> # details + deps
brew uninstall <package> # remove
brew cleanup # remove old versions
brew doctor # diagnose issues
brew services list # list services
brew services start <svc> # start service
brew services stop <svc> # stop service
brew tap <user>/<repo> # add formula repo
apt — Ubuntu/Debian Linux
sudo apt update # refresh package index
sudo apt upgrade -y # upgrade all packages
sudo apt install <package> # install
sudo apt remove <package> # remove (keep config)
sudo apt purge <package> # remove + config
sudo apt autoremove # remove orphans
apt search <query> # search
apt show <package> # package details
apt list --installed # list installed
sudo add-apt-repository ppa:<ppa> # add PPA
sudo apt install -f # fix broken deps
pip — Python packages cross-platform
pip install <package> # install
pip install -r requirements.txt # from file
pip install --upgrade <package> # upgrade
pip install <pkg>==1.2.3 # specific version
pip uninstall <package> # remove
pip list # installed packages
pip show <package> # details
pip freeze > requirements.txt # export deps
pip install --user <package> # user-level (no sudo)
pip cache purge # clear download cache
# Upgrade pip itself
python -m pip install --upgrade pip
npm — Node.js packages cross-platform
npm install <package> # add to project
npm install -g <package> # install globally
npm install --save-dev <pkg> # dev dependency
npm uninstall <package> # remove
npm list # project deps tree
npm list -g --depth=0 # global installs
npm update # update all
npm audit # security audit
npm audit fix # auto-fix vulns
npm run <script> # run package.json script
npx <command> # run without installing
npm init -y # init new project
cargo — Rust cross-platform
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install <crate> # install CLI tool
cargo install --list # list installed
rustup update # update Rust toolchain
cargo new <project> # new project
cargo build --release # build optimized
cargo run # build + run
cargo test # run tests
macOS one-liner — upgrade your terminal macOS
brew install bat # better cat (syntax highlighting)
brew install eza # modern ls with icons
brew install fzf # fuzzy finder (Ctrl+R history search)
brew install ripgrep # rg — blazing fast grep
brew install fd # fast find replacement
brew install zoxide # smarter cd (learns your dirs)
brew install starship # beautiful shell prompt
brew install htop # better top
brew install jq # JSON processor
brew install yq # YAML/JSON/XML processor
brew install tldr # simplified man pages
brew install httpie # user-friendly HTTP client
brew install gh # GitHub CLI
brew install git-delta # beautiful git diffs
brew install lazygit # terminal git UI
brew install tmux # terminal multiplexer
brew install ncdu # disk usage visualizer
brew install tree # directory tree view
brew install watch # re-run command every N sec
brew install dust # better du
brew install procs # better ps
brew install gping # graphical ping
brew install bottom # btm — system monitor
brew install hyperfine # command benchmarking
Linux equivalents Linux
sudo apt install bat fd-find ripgrep fzf tmux htop ncdu tree
cargo install eza zoxide starship bottom dust procs
# Shell setup — add to ~/.zshrc or ~/.bashrc
eval "$(zoxide init zsh)" # z command
eval "$(starship init zsh)" # prompt
source <(fzf --zsh) # Ctrl+R, Ctrl+T
alias ls='eza --icons'
alias cat='bat'
alias find='fd'
alias grep='rg'
Python dev tools
pip install black # opinionated formatter
pip install ruff # extremely fast linter + formatter
pip install mypy # static type checker
pip install pytest # test runner
pip install pytest-cov # test coverage
pip install ipython # better REPL
pip install rich # beautiful terminal output
pip install typer # build CLIs with type hints
pip install httpx # async HTTP client
pip install pydantic # data validation
pip install fastapi # web API framework
pip install uvicorn # ASGI server
pip install python-dotenv # .env file support
pip install loguru # better logging
pip install tqdm # progress bars
pip install pendulum # better datetime
pip install polars # fast DataFrame (modern pandas)
pip install pandas numpy # data analysis
pip install matplotlib seaborn # plotting
venv — built-in, zero deps
# Create
python3 -m venv .venv
# Activate
source .venv/bin/activate # macOS/Linux
.venv\Scripts\activate # Windows
# Use
pip install <package>
python script.py
# Deactivate
deactivate
# Delete env (just remove the folder)
rm -rf .venv
uv — ultra-fast modern tool (recommended 2025+)
pip install uv # or: curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv # create .venv
source .venv/bin/activate # activate
uv pip install <package> # 10-100x faster than pip
uv pip install -r requirements.txt
uv pip freeze
uv run python script.py # run without activating
# Project management
uv init <project> # new project
uv add <package> # add dep to pyproject.toml
uv sync # install all deps
uv lock # generate lockfile
pipenv — Pipfile workflow
pip install pipenv
pipenv install <package> # add dep + create Pipfile
pipenv install --dev <pkg> # dev dependency
pipenv install # install from Pipfile
pipenv shell # activate shell
pipenv run python script.py
pipenv graph # dependency tree
pipenv lock # generate Pipfile.lock
exit # leave shell
poetry — full project management
pip install poetry
poetry new <project> # new project
poetry init # init in existing dir
poetry add <package> # add dependency
poetry add --dev <package> # dev dependency
poetry install # install all deps
poetry shell # activate venv
poetry run python script.py
poetry build # build package
poetry publish # publish to PyPI
poetry update # update all
poetry show # list deps
pyenv — manage multiple Python versions
brew install pyenv # macOS
curl https://pyenv.run | bash # Linux
pyenv install --list # available versions
pyenv install 3.12.3 # install version
pyenv global 3.12.3 # set global default
pyenv local 3.11.9 # set project version (.python-version)
pyenv versions # list installed
pyenv which python # path to current python
python --version # verify
Setup & init
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global core.editor "code --wait"
git config --global pull.rebase false
git config --list # show all config
git init # new local repo
git clone <url> # clone remote
git clone <url> <folder> # clone into folder
git remote -v # show remotes
git remote add origin <url>
Daily workflow
git status # what changed
git add <file> # stage file
git add . # stage all
git add -p # stage hunks interactively
git commit -m "message" # commit
git commit --amend # amend last commit
git push # push to remote
git push -u origin main # push + set upstream
git pull # fetch + merge
git fetch # fetch without merge
git fetch --prune # fetch + remove deleted remote branches
Branching & merging
git branch # list local branches
git branch -a # all branches (incl. remote)
git branch <name> # create branch
git switch <name> # switch to branch
git switch -c <name> # create + switch
git merge <branch> # merge into current
git merge --no-ff <branch> # merge with commit
git rebase <branch> # rebase onto branch
git cherry-pick <sha> # apply single commit
git branch -d <name> # delete (safe)
git branch -D <name> # force delete
git push origin --delete <name> # delete remote branch
Inspection & history
git log --oneline # compact log
git log --oneline --graph --all # visual branch tree
git log -p <file> # history of a file
git show <sha> # show commit details
git diff # unstaged changes
git diff --staged # staged changes
git diff main..feature # between branches
git blame <file> # who changed each line
git bisect start # binary search for bug
git reflog # all HEAD movements (recovery)
Undo & recovery
git restore <file> # discard unstaged changes
git restore --staged <file> # unstage
git reset HEAD~1 # undo last commit (keep changes)
git reset --hard HEAD~1 # undo + discard changes (DESTRUCTIVE)
git revert <sha> # create undo commit (safe)
git stash # stash current changes
git stash pop # apply + remove stash
git stash list # list stashes
git stash apply stash@{2} # apply specific stash
git clean -fd # remove untracked files + dirs
Images
docker pull <image>:<tag> # download image
docker pull nginx:latest
docker images # list local images
docker rmi <image> # remove image
docker image prune # remove dangling images
docker image prune -a # remove all unused
docker build -t <name>:<tag> . # build from Dockerfile
docker build -t myapp:v1 --no-cache .
docker tag <image> <repo>/<name>:<tag> # tag for push
docker push <repo>/<name>:<tag> # push to registry
Containers
docker run <image> # run (foreground)
docker run -d <image> # run detached
docker run -d -p 8080:80 nginx # with port mapping
docker run -d -p 8080:80 -v /data:/app/data --name web nginx
docker run -it <image> bash # interactive shell
docker ps # running containers
docker ps -a # all containers
docker stop <name/id> # graceful stop
docker start <name/id> # start stopped
docker restart <name/id>
docker rm <name/id> # remove stopped
docker rm -f <name/id> # force remove running
docker exec -it <name> bash # shell into running
docker logs <name> # view logs
docker logs -f <name> # follow logs
docker logs --tail 100 <name> # last 100 lines
docker cp <src> <name>:<dst> # copy file in/out
docker inspect <name> # full details (JSON)
Docker Compose
docker compose up -d # start all services
docker compose up -d --build # rebuild then start
docker compose down # stop + remove containers
docker compose down -v # also remove volumes
docker compose ps # status
docker compose logs -f # follow all logs
docker compose logs -f <service> # one service
docker compose exec <svc> bash # shell into service
docker compose pull # update all images
docker compose restart <service> # restart one
docker compose stop # stop without removing
docker compose config # validate + print config
Volumes & Networks
docker volume create <name>
docker volume ls
docker volume rm <name>
docker volume inspect <name>
docker network create <name>
docker network ls
docker network inspect <name>
docker network connect <net> <container>
# Cleanup everything unused
docker system prune # containers, networks, images
docker system prune -a # + unused images
docker system prune -a --volumes # + volumes (DESTRUCTIVE)
docker system df # disk usage
System info
# macOS
sw_vers # macOS version
sysctl -n hw.ncpu # CPU cores
sysctl -n hw.memsize # RAM in bytes
system_profiler SPHardwareDataType # full hardware info
top -l 1 | head -10 # quick stats
# Linux
uname -a # kernel + arch
hostnamectl # system info
lscpu # CPU details
free -h # memory
lsblk # block devices
lspci # PCI devices
df -h # disk usage
du -sh * # folder sizes
du -sh /* 2>/dev/null | sort -hr | head -20 # largest dirs
Process management
ps aux # all processes
ps aux | grep <name> # find process
pgrep <name> # get PID
kill <PID> # send SIGTERM
kill -9 <PID> # force kill (SIGKILL)
pkill <name> # kill by name
killall <name> # kill all by name
nohup <cmd> & # run detached from terminal
<cmd> & # background job
jobs # list background jobs
fg %1 # bring job 1 to foreground
bg %1 # continue in background
# Linux services
sudo systemctl status <svc>
sudo systemctl start <svc>
sudo systemctl stop <svc>
sudo systemctl enable <svc> # start on boot
sudo systemctl disable <svc>
sudo journalctl -u <svc> -f # follow service logs
sudo journalctl -u <svc> --since "1 hour ago"
Disk & storage
df -h # disk free (human-readable)
du -sh <dir> # size of directory
du -sh * | sort -hr # sorted largest first
ncdu # interactive disk usage (install first)
lsof +D <dir> # files open in directory
lsof -p <PID> # files opened by process
lsof -i :<port> # what's using a port
fuser <port>/tcp # PID using port (Linux)
# macOS specific
diskutil list # all disks
diskutil info /dev/disk0 # disk details
curl — the Swiss Army HTTP tool
curl <url> # GET request
curl -I <url> # headers only
curl -L <url> # follow redirects
curl -o file.html <url> # save to file
curl -O <url> # save with remote filename
curl -X POST <url> -d "key=val" # POST form data
curl -X POST <url> \
-H "Content-Type: application/json" \
-d '{"key": "value"}' # POST JSON
curl -H "Authorization: Bearer TOKEN" <url> # auth header
curl -u user:pass <url> # basic auth
curl -v <url> # verbose (debug)
curl -s <url> | jq . # pipe to jq for JSON
curl -w "%{http_code}" -o /dev/null <url> # just status code
curl --max-time 10 <url> # timeout 10s
Network diagnostics
ping <host> # ping
ping -c 4 <host> # 4 packets only
traceroute <host> # trace route (macOS)
tracepath <host> # trace route (Linux)
dig <domain> # DNS lookup
dig <domain> +short # just the IP
nslookup <domain> # DNS query
whois <domain> # domain info
netstat -tulpn # open ports (Linux)
ss -tulpn # faster netstat (Linux)
lsof -i -P -n | grep LISTEN # open ports (macOS)
lsof -i :<port> # what's on port
sudo nmap -sV <host> # port scan + service version
SSH & remote
ssh user@host # connect
ssh -p 2222 user@host # custom port
ssh -i ~/.ssh/key user@host # specific key
ssh -L 8080:localhost:80 user@host # local port forward
ssh -N -f -L 5432:db:5432 user@host # background tunnel
# Key management
ssh-keygen -t ed25519 -C "comment" # generate key
ssh-copy-id user@host # install key on server
cat ~/.ssh/id_ed25519.pub | pbcopy # copy public key
# ~/.ssh/config
# Host prod
# HostName 10.0.0.1
# User ubuntu
# IdentityFile ~/.ssh/prod_key
# Then: ssh prod
scp file user@host:/path # copy to remote
scp user@host:/path/file . # copy from remote
rsync -avz src/ user@host:/dst/ # sync (preserves perms)
rsync -avz --delete src/ dst/ # sync + delete extras
Find & search
find . -name "*.py" # find by name
find . -name "*.py" -newer file.txt # newer than file
find . -type f -size +10M # files > 10MB
find . -type d -name "__pycache__" # find directories
find . -name "*.pyc" -delete # find + delete
# ripgrep (rg) — fast text search
rg "pattern" # search in all files
rg "pattern" src/ # in specific dir
rg -i "pattern" # case insensitive
rg -n "pattern" # with line numbers
rg -l "pattern" # filenames only
rg --type py "pattern" # only Python files
rg -A 3 -B 3 "pattern" # 3 lines context
# grep fallback
grep -r "pattern" . # recursive
grep -rn "pattern" . # with line numbers
grep -rl "pattern" . # filenames only
Text processing
# sed — stream editor
sed 's/old/new/g' file # replace all
sed -i 's/old/new/g' file # in-place
sed -n '10,20p' file # print lines 10-20
sed '/pattern/d' file # delete matching lines
# awk — text processing
awk '{print $1}' file # first column
awk -F: '{print $1}' /etc/passwd # custom delimiter
awk '{sum += $1} END {print sum}' file # sum column
# Other
sort file # sort lines
sort -r file # reverse sort
sort -n file # numeric sort
sort -u file # unique sort
uniq file # remove consecutive dups
sort file | uniq -c | sort -rn # count + rank occurrences
wc -l file # line count
wc -w file # word count
cut -d, -f2 file.csv # cut CSV column 2
tr '[:upper:]' '[:lower:]' # lowercase
paste file1 file2 # merge files side by side
Archives & compression
# tar
tar -czvf archive.tar.gz dir/ # create .tar.gz
tar -xzvf archive.tar.gz # extract .tar.gz
tar -cjvf archive.tar.bz2 dir/ # create .bz2
tar -xjvf archive.tar.bz2 # extract .bz2
tar -tvf archive.tar.gz # list contents without extracting
# zip
zip -r archive.zip dir/ # create zip
zip -r archive.zip dir/ -x "*.pyc" # exclude .pyc
unzip archive.zip # extract
unzip -l archive.zip # list contents
unzip archive.zip -d /dest/ # extract to dir
# Fast compression
zstd file # compress (fast)
zstd -d file.zst # decompress
Ollama
# Install
curl -fsSL https://ollama.ai/install.sh | sh
# Models
ollama pull qwen3:14b
ollama pull deepseek-r1:14b
ollama pull devstral
ollama pull gemma3:12b
ollama pull phi4
ollama pull llava # multimodal (vision)
# Run
ollama run qwen3:14b
ollama run qwen3:14b "Explain vancomycin AUC monitoring"
# Manage
ollama list # local models
ollama rm qwen3:8b # delete model
ollama show qwen3:14b # model info
ollama ps # running models
# API (OpenAI-compatible)
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen3:14b","messages":[{"role":"user","content":"Hello"}]}'
# Expose on LAN (add to systemd service override)
export OLLAMA_HOST=0.0.0.0
ollama serve
Wrangler — Cloudflare
npm install -g wrangler
wrangler login # authenticate
wrangler pages dev public # local dev server
wrangler pages deploy public --project-name <name>
wrangler kv namespace create <name>
wrangler kv key put --namespace-id=<id> key "value"
wrangler kv key get --namespace-id=<id> key
wrangler kv key list --namespace-id=<id>
wrangler tail # live log tail
wrangler secret put SECRET_KEY # add secret
GitHub CLI — gh
gh auth login # authenticate
gh repo create <name> --private
gh repo clone <user>/<repo>
gh pr create --title "Title" --body "Body"
gh pr list
gh pr checkout <number>
gh pr merge <number>
gh issue create --title "Bug" --body "Details"
gh issue list
gh issue close <number>
gh release create v1.0.0 --title "v1.0.0" --notes "Notes"
gh run list # CI/CD runs
gh run view <id> # run details
gh gist create file.txt # create Gist
gh api /repos/:owner/:repo/pulls # raw API call
Python AI/ML packages
# Local LLM inference
pip install llama-cpp-python # Python bindings for llama.cpp
pip install ollama # Ollama Python client
pip install openai # OpenAI API + compatible APIs
# LLM frameworks
pip install langchain langchain-community
pip install llama-index
pip install haystack-ai
# Vector databases
pip install chromadb # local vector DB
pip install qdrant-client # Qdrant client
pip install faiss-cpu # Facebook AI similarity search
# ML
pip install torch torchvision # PyTorch
pip install transformers # Hugging Face Transformers
pip install datasets # HF Datasets
pip install accelerate # distributed training
pip install sentence-transformers # embeddings
# APIs
pip install anthropic # Claude API
pip install google-generativeai # Gemini API
Clipboard & open
pbcopy < file.txt # copy file to clipboard
pbpaste > file.txt # paste clipboard to file
cat file.txt | pbcopy # pipe to clipboard
echo "text" | pbcopy
open . # open Finder here
open <url> # open in default browser
open -a "VS Code" . # open with specific app
open -a "Terminal" <path>
open *.pdf # open all PDFs
# Quick share / preview
qlmanage -p file.png # QuickLook preview
Defaults & system tweaks
# Show hidden files in Finder
defaults write com.apple.finder AppleShowAllFiles true
killall Finder
# Show path bar in Finder
defaults write com.apple.finder ShowPathbar -bool true
# Screenshot format (png/jpg/pdf)
defaults write com.apple.screencapture type jpg
# Disable .DS_Store on network volumes
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
# Key repeat speed (faster = lower values)
defaults write -g InitialKeyRepeat -int 15
defaults write -g KeyRepeat -int 2
# Show full path in Finder title
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
killall Finder
launchctl & processes
launchctl list # running LaunchAgents
launchctl load <plist> # load service
launchctl unload <plist> # unload service
# Location of user LaunchAgents
ls ~/Library/LaunchAgents/
# Common plist locations
# ~/Library/LaunchAgents/ — user, loaded at login
# /Library/LaunchAgents/ — system, loaded at login
# /Library/LaunchDaemons/ — system, loaded at boot
# Flush DNS cache
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Network interfaces
networksetup -listallhardwareports
networksetup -getinfo Wi-Fi
ipconfig getifaddr en0 # current IP (Wi-Fi)
SSH key setup
# Generate key (ed25519 recommended)
ssh-keygen -t ed25519 -C "your@email.com"
# Copy public key to remote server
ssh-copy-id user@host
# or manually:
cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# Add to GitHub
cat ~/.ssh/id_ed25519.pub | pbcopy # copy to clipboard
# GitHub → Settings → SSH Keys → New
# Test connection
ssh -T git@github.com
# SSH Agent (persist key passphrase)
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-add -l # list loaded keys
~/.ssh/config — alias multiple servers
# Add to ~/.ssh/config:
Host prod
HostName 10.0.0.100
User ubuntu
IdentityFile ~/.ssh/prod_key
Port 22
Host dev-tunnel
HostName dev.example.com
User admin
IdentityFile ~/.ssh/dev_key
LocalForward 5432 localhost:5432 # DB tunnel
# Now just:
ssh prod
ssh dev-tunnel
GPG encryption
brew install gnupg
gpg --full-generate-key # generate key pair
gpg --list-keys # public keys
gpg --list-secret-keys # private keys
gpg --export -a "Name" > pub.key # export public key
gpg --import pub.key # import someone's key
# Encrypt file for recipient
gpg -e -r "recipient@email.com" file.txt # creates file.txt.gpg
# Decrypt
gpg -d file.txt.gpg
# Sign a file
gpg --clearsign document.txt # inline signature
gpg --verify document.txt.asc # verify signature