Play the live app → · Read the source →
A browser-first Go application that turns progressive typing lessons into a responsive practice game: live WPM, accuracy, scoring, combos, focused key prompts, sound, Docker packaging, health checks, and cross-platform release builds.
Built to make deliberate practice feel engaging — and to demonstrate end-to-end product delivery from Go backend to deployed UX.
Software engineering apprentice at Zone01 Kisumu, Kenya. I write Go.
I chose Go because lightningnetwork/lnd is 99.5% Go — the most deployed Lightning node in the world. My goal: understand it well enough to merge production code into it. Everything I build is a step toward that.
⚡ For a Kenyan youth with no credit history, no collateral, and no bank — a Lightning wallet is more powerful than any bank. I am learning the code that makes this possible.
altradits/challenges — a 158-lesson curriculum designed to take me from package main to Bitcoin open source contributor.
Phase 1 (01–05) Hello World package main · fmt · entry points
Phase 2 (06–27) Foundations structs · pointers · interfaces · goroutines
channels · context · testing · file I/O · regexp
Phase 3 (28–51) Practice one concept per exercise — building muscle memory
Phase 4 (52–80) Strings Mastery every strings / fmt / strconv function
Phase 5 (81–144) Challenges hard piscine-style problems, multiple concepts
Phase 6 (145–151) Backend Bridge time · JSON · HTTP · SQL · config · logging · generics · graceful shutdown
Phase 7 (152–158) Capstones REST APIs → Bitcoin open source contribution
| Skill | Status | Where I Practice |
|---|---|---|
| Go 1.22+ | 🟠 Active | challenges — 158 lessons |
| gRPC + protobuf | 🔵 Learning | yebo Lightning service |
| btcsuite/btcd | ⬜ Next | yebo treasury layer |
| macaroon auth | ⬜ Next | LND node integration |
| goroutines + context | 🟠 Active | challenges 28–152 |
| database/sql | 🟠 Active | yebo |
| golangci-lint + CI | ⬜ Next | LND itest framework |
Roadmap to a merged LND PR:
- Build and deeply understand the full Go language (lessons 01–158)
- Build gRPC client — speak directly to a real LND node
- Run LND on regtest, write integration tests with the
itestframework - Find a small open issue in
lightningnetwork/lnd, submit a PR, get it merged
flowchart LR
A[📱 Kenyan User] -->|M-Pesa STK Push| B[YeboBank]
B -->|KES → Sats| C[⚡ Lightning Wallet]
C -->|Lightning Payment| D[🌍 Global Recipient]
C -->|Lock Sats| E[💰 Savings Pool]
E -->|Monthly Interest| C
A -->|Chama Group| F[👥 Group Wallet]
F -->|Collective Savings| E
style A fill:#1a1a2e,color:#fff
style B fill:#2d1600,color:#F7931A
style C fill:#1a0a00,color:#F7931A
style D fill:#0d2818,color:#4ade80
style E fill:#1a0800,color:#F7931A
style F fill:#1a0800,color:#F7931A
| Project | What it demonstrates | Live / source |
|---|---|---|
| Touch Typing Master | Go HTTP service, interactive browser UX, Docker deployment, testable game logic, cross-platform release builds | Play · Code |
| YeboBank | Bitcoin/Lightning domain modelling, secure financial-systems thinking, PostgreSQL wire protocol work | Code |
| Go Challenges | Deliberate practice across Go fundamentals, concurrency, HTTP, testing, and backend concepts | Code |
| BursaryHub | Product thinking for opportunity discovery and access | Code |
Click any question to reveal the answer.
⚡ What is the Lightning Network and why does it matter for Africa?
The Lightning Network is a second-layer payment protocol built on Bitcoin. Instead of writing every transaction to the blockchain (slow, expensive), two parties open a payment channel — a private ledger between them. Payments settle instantly and for fractions of a cent.
For Africa: M-Pesa charges ~1% per transfer. Lightning charges ~0.001%. A Kenyan sending $10 pays $0.10 on M-Pesa — on Lightning, less than a cent.
₿ How many satoshis are in 1 Bitcoin?
100,000,000 satoshis — 1 sat = 0.00000001 BTC.
Named after Satoshi Nakamoto. At $100,000/BTC, 1 satoshi = $0.001. Still useful for micropayments that no other payment system can touch.
🔐 Why does YeboBank have zero external Go dependencies?
Every external dependency is a trust decision — you're trusting that library author's code, their supply chain, and their continued maintenance. In financial software, that trust has a price.
YeboBank uses only Go's standard library. The PostgreSQL wire protocol is implemented from scratch in internal/pgdrv. Zero deps means: no supply chain attack surface, no broken upgrades, no abandoned packages in a banking core.
🏦 What is a Chama and why does YeboBank support them?
A chama is an informal savings group common across Kenya and East Africa — typically 5–30 people who pool money, invest together, and distribute returns. Chamas manage an estimated KES 4 billion across Kenya.
Traditional chamas use M-Pesa with a manual ledger and operate on trust alone. YeboBank gives chamas a transparent group wallet: every contribution, vote, and distribution is verifiable. The group's money is in Bitcoin — it cannot be quietly moved by one member.
🚀 What does it take to contribute to lightningnetwork/lnd?
lightningnetwork/lnd is 99.5% Go — 300,000+ lines. Getting a PR merged requires:
- Deep Go knowledge — goroutines, channels, context, interfaces, generics
- gRPC fluency — LND's entire API is protobuf/gRPC
- Bitcoin protocol understanding — scripts, HTLCs, commitment transactions
- Test discipline — every PR needs unit + integration tests via the
itestframework - Reading existing code — LND has strict conventions; PRs that ignore them are closed
The challenges repo is my step-by-step path to earning that merge.
| Contribution | Project | Status |
|---|---|---|
| Added to contributors list | btrust-builders/first-open-source-contributions | ✅ Merged — PR #139 |
| Production Go code | lightningnetwork/lnd | ⏳ Working toward it |
Three walls Kenyan youth hit:
- No access to capital — Lightning changes what collateral means
- No bank account — a phone number becomes a bank
- Bursaries nobody hears about — bursaryhub is fixing this
Open to software engineering opportunities, Go collaborations, and meaningful open-source contributions.
challenges · yebo · bursaryhub
