Skip to content

Latest commit

 

History

History
186 lines (135 loc) · 6.51 KB

File metadata and controls

186 lines (135 loc) · 6.51 KB

Foundry System Updates — Complete ✅

What Was Added

1. Three New Exercise Types

Code Review Practice 🔍

Learn to read and critique code like a senior engineer.

  • Template: vault/templates/code-review-exercise.md
  • Example: tracks/go/exercises/code-review/_example-pr-auth/
  • Skills: Bug detection, security awareness, design critique, constructive feedback

Codebase Navigation 🗺️

Master exploring unfamiliar codebases efficiently.

  • Template: vault/templates/codebase-navigation-exercise.md
  • Example: vault/examples/codebase-navigation/_example-project/
  • Skills: grep/ripgrep mastery, control flow tracing, architectural understanding

API Design 🎨

Design clean, maintainable interfaces and public APIs.

  • Template: vault/templates/api-design-exercise.md
  • Example: tracks/go/exercises/api-design/_example-rate-limiter/
  • Skills: Interface design, error handling, API evolution, usability

2. Three New Language Tracks

Zig

Systems programming with manual memory management and comptime metaprogramming.

  • Directory: tracks/zig/
  • README: Comprehensive setup and learning guide
  • Focus: Allocators, comptime, C interop, explicit everything

Haskell λ

Pure functional programming with lazy evaluation and strong types.

  • Directory: tracks/haskell/
  • README: Comprehensive setup and learning guide
  • Focus: Pure functions, type classes, monads, lazy evaluation

Scala 🎭

JVM ecosystem through modern lens — functional + OOP blend.

  • Directory: tracks/scala/
  • README: Comprehensive setup and learning guide
  • Focus: JVM ecosystem, Java interop, pattern matching, for-comprehensions
  • Replaces: Java (learn Java through Scala — same bytecode, better features)

What Was Updated

Documentation

  • CLAUDE.md — Added exercise type sections, updated language list
  • curriculum/map.yaml — Java→Scala, added Zig/Haskell to applicable modules
  • curriculum/progress.yaml — Java→Scala, added Zig/Haskell progress sections
  • START-HERE.md — Updated language list and enhancements
  • README.md — Updated language rationales
  • vault/rosetta/common-operations.md — Added Scala, Zig, Haskell columns

Structure

  • ✅ Created complete directory trees for Zig, Haskell, Scala
  • ✅ Created vault subdirectories for new languages
  • ✅ Created example exercise directories for all three new types
  • ✅ Created comprehensive README files for each new language

Language Portfolio Now

Language Paradigm Why Learn It
Go Imperative, concurrent Systems, services, simplicity
TypeScript Multi-paradigm Web, productivity, type safety
Rust Systems, functional Memory safety, performance, ownership
Python Multi-paradigm Data, scripting, ecosystem
Scala Functional + OOP JVM ecosystem, enterprise patterns
Zig Systems Manual memory, comptime, low-level
Haskell Pure functional Type theory, lazy evaluation, principled FP
C# OOP, functional .NET ecosystem

How to Use the New Features

Creating a Code Review Exercise

  1. Pick a realistic PR scenario (auth, caching, API endpoint)
  2. Use template: vault/templates/code-review-exercise.md
  3. Create directory: tracks/<lang>/exercises/code-review/<scenario>/
  4. Include:
    • PR context (README.md)
    • Codebase context files
    • The changes (diff or file)
    • Progressive hints
    • Expert review for comparison

Creating a Codebase Navigation Exercise

  1. Choose an OSS project (small for beginners, large for advanced)
  2. Use template: vault/templates/codebase-navigation-exercise.md
  3. Create directory: vault/examples/codebase-navigation/<project>/
  4. Write missions (find X, trace Y, understand Z)
  5. Document solutions with search strategies

Creating an API Design Exercise

  1. Pick a library/service interface to design
  2. Use template: vault/templates/api-design-exercise.md
  3. Create directory: tracks/<lang>/exercises/api-design/<scenario>/
  4. Write requirements (functional, non-functional, constraints)
  5. Show 2-3 alternative designs with trade-offs
  6. Discuss evolution strategies

Starting a New Language

For Scala, Zig, or Haskell:

  1. Read tracks/<lang>/README.md for setup instructions
  2. Say "let's start variables-and-types in Scala"
  3. I'll generate lesson.md, reference.md, and code examples
  4. Work through exercises
  5. Build up vault notes as you learn

What's Ready Right Now

Complete templates for all three exercise types ✅ Example structures showing what good exercises look like ✅ Language tracks with setup guides and learning philosophy ✅ Documentation fully updated across the system ✅ Progress tracking configured for all languages ✅ Curriculum map updated with language applicability


Next Steps (Your Choice)

Option 1: Start a New Language

  • "Let's start Scala variables-and-types"
  • "Let's start Zig variables-and-types"
  • "Let's start Haskell variables-and-types"

Option 2: Create First Exercises

  • "Create a code review exercise for Go authentication PR"
  • "Create a codebase navigation exercise for [OSS project]"
  • "Create an API design exercise for a rate limiter in Go"

Option 3: Continue Current Track

  • Continue with existing progress in Go/TypeScript/Rust/Python

Notes

About Java → Scala Migration

The old tracks/java/ directory still exists if you want to reference anything. You can:

  • Delete it: rm -rf tracks/java
  • Archive it: mv tracks/java tracks/_archived_java
  • Keep it temporarily while migrating content to Scala

Scala was chosen because:

  • Runs on JVM (same ecosystem as Java)
  • Uses Java libraries seamlessly
  • Teaches Java concepts (interfaces, classes, inheritance)
  • But with modern features (type inference, pattern matching, functional programming)
  • You effectively learn Java through Scala without the verbose syntax

System Philosophy

The three new exercise types address skills that are critical but rarely taught:

  • Code review — You spend 50% of your time reading others' code
  • Codebase navigation — Every new job means an unfamiliar codebase
  • API design — Interface design is distinct from implementation

These complement the existing technical depth to create a more complete professional skillset.


The system is now production-ready! Pick what you want to work on next. 🚀