Practice algorithms and code patterns one line at a time. Native, offline macOS app with 37 lessons in Python, C++, Rust, and Go.
Swift
8
59 commits
updated Oct 5, 2026
Make code patterns familiar, one line at a time.
A native macOS practice app for algorithms, low-level design, language idioms, and concurrency.
Reading an algorithm is one step. Writing it again helps you notice the details. TypingPall keeps a complete code pattern in view while you reproduce it line by line, correct differences, and repeat the parts you want to remember.
To check whether you can spot a pattern before writing it, press ⇧⌘D: the Which pattern? drill shows a short scenario, then the cues that identify the answer.
brew install --cask mieraidihaimu/tap/typingpall
On a Mac with full Xcode installed:
git clone https://github.com/Mieraidihaimu/TypingPall.git
cd TypingPall
open TypingPall.xcodeproj
Select the TypingPall scheme, choose My Mac, and press ⌘R. The app targets macOS 12 or later; use a current Xcode to build it. If Xcode requests signing configuration, choose your development team under Signing & Capabilities.
Start with the C++ binary-search exercise, or press ⌘L to pick a lesson. To practice your own code, use Add Script or ⌘O to import a UTF-8 source file.
| Track | Collection | Examples |
|---|---|---|
| LeetCode | Python interview patterns | Sliding window, two pointers, binary search, BFS, DFS, tree and grid traversal, topological sort, backtracking, union-find, knapsack and other dynamic programming |
| Low-level design | Creational, structural and behavioral patterns | Factory, builder, singleton, adapter, decorator, composite, strategy, state, observer, command, chain of responsibility |
| Low-level design | Design building blocks | LRU cache, token-bucket rate limiter |
| Languages & syntax | Python fundamentals | Comprehensions, collections, generators, dataclasses |
| Languages & syntax | C++ fundamentals | Vectors, hash maps, ownership, lambda sorting |
| Languages & syntax | Rust fundamentals | Borrowing, Result, iterators, enums |
| Languages & syntax | Go fundamentals | Slices, errors, methods, interfaces |
| Languages & syntax | Concurrency across four languages | Thread pools, async tasks, mutexes, condition variables, channels |

Browse the original examples in lessons.json. Imported snippets are used as practice text; the app does not execute them.
| Action | Shortcut |
|---|---|
| Confirm the current line | Return |
| Copy, Key lines, Recall | ⌘1, ⌘2, ⌘3 |
| Hint | ⌘' |
| Repeat the pattern | ⌘R |
| Open the library | ⌘L |
| Which pattern? drill | ⇧⌘D |
| Import a file | ⌘O |
| Add a script | ⇧⌘N |
Indentation remains visible in the reference, but leading spaces and tabs are excluded from the typing target. Internal and trailing spaces still count. Blank lines advance with Return, and the final line completes the pattern only after confirmation.
Imports accept UTF-8 files up to 1 MB and 20,000 normalized characters. Line endings are normalized, tabs expand to your configured width, and Unicode is preserved. The practice input accepts one line at a time; paste complete snippets into Add Script. Saved patterns survive relaunches; your current practice position does not.
Comment filtering supports Python, C++, Rust, and Go. Select Plain text for other languages, or turn off Skip comments in Options to practice the complete text. Changing an option mid-pattern keeps your place. Python docstrings stay in the exercise.
Bug reports, clearer lessons, accessibility improvements, and small fixes are welcome. Start with the contribution guide, report a bug, or suggest a lesson.
# Unit tests, UI tests, and an Apple silicon + Intel Release build
./scripts/check.sh
# Unit tests and the Release build, without desktop UI automation
./scripts/check.sh -only-testing:TypingPallTests
# Validate the bundled lesson examples with available language toolchains
python3 scripts/check_lessons.py
UI tests require a logged-in desktop and permission for the Xcode test runner to control it. See the release guide for distribution checks and the documentation archive for historical design notes.
If TypingPall earns a place in your practice routine, a star helps other developers find it.
Created by Mier, with thanks to everyone who contributes. Licensed under GPL-3.0.
Practice algorithms and code patterns one line at a time. Native, offline macOS app with 37 lessons in Python, C++, Rust, and Go.
Swift
8
59 commits
updated Oct 5, 2026
Make code patterns familiar, one line at a time.
A native macOS practice app for algorithms, low-level design, language idioms, and concurrency.
Reading an algorithm is one step. Writing it again helps you notice the details. TypingPall keeps a complete code pattern in view while you reproduce it line by line, correct differences, and repeat the parts you want to remember.
To check whether you can spot a pattern before writing it, press ⇧⌘D: the Which pattern? drill shows a short scenario, then the cues that identify the answer.
brew install --cask mieraidihaimu/tap/typingpall
On a Mac with full Xcode installed:
git clone https://github.com/Mieraidihaimu/TypingPall.git
cd TypingPall
open TypingPall.xcodeproj
Select the TypingPall scheme, choose My Mac, and press ⌘R. The app targets macOS 12 or later; use a current Xcode to build it. If Xcode requests signing configuration, choose your development team under Signing & Capabilities.
Start with the C++ binary-search exercise, or press ⌘L to pick a lesson. To practice your own code, use Add Script or ⌘O to import a UTF-8 source file.
| Track | Collection | Examples |
|---|---|---|
| LeetCode | Python interview patterns | Sliding window, two pointers, binary search, BFS, DFS, tree and grid traversal, topological sort, backtracking, union-find, knapsack and other dynamic programming |
| Low-level design | Creational, structural and behavioral patterns | Factory, builder, singleton, adapter, decorator, composite, strategy, state, observer, command, chain of responsibility |
| Low-level design | Design building blocks | LRU cache, token-bucket rate limiter |
| Languages & syntax | Python fundamentals | Comprehensions, collections, generators, dataclasses |
| Languages & syntax | C++ fundamentals | Vectors, hash maps, ownership, lambda sorting |
| Languages & syntax | Rust fundamentals | Borrowing, Result, iterators, enums |
| Languages & syntax | Go fundamentals | Slices, errors, methods, interfaces |
| Languages & syntax | Concurrency across four languages | Thread pools, async tasks, mutexes, condition variables, channels |

Browse the original examples in lessons.json. Imported snippets are used as practice text; the app does not execute them.
| Action | Shortcut |
|---|---|
| Confirm the current line | Return |
| Copy, Key lines, Recall | ⌘1, ⌘2, ⌘3 |
| Hint | ⌘' |
| Repeat the pattern | ⌘R |
| Open the library | ⌘L |
| Which pattern? drill | ⇧⌘D |
| Import a file | ⌘O |
| Add a script | ⇧⌘N |
Indentation remains visible in the reference, but leading spaces and tabs are excluded from the typing target. Internal and trailing spaces still count. Blank lines advance with Return, and the final line completes the pattern only after confirmation.
Imports accept UTF-8 files up to 1 MB and 20,000 normalized characters. Line endings are normalized, tabs expand to your configured width, and Unicode is preserved. The practice input accepts one line at a time; paste complete snippets into Add Script. Saved patterns survive relaunches; your current practice position does not.
Comment filtering supports Python, C++, Rust, and Go. Select Plain text for other languages, or turn off Skip comments in Options to practice the complete text. Changing an option mid-pattern keeps your place. Python docstrings stay in the exercise.
Bug reports, clearer lessons, accessibility improvements, and small fixes are welcome. Start with the contribution guide, report a bug, or suggest a lesson.
# Unit tests, UI tests, and an Apple silicon + Intel Release build
./scripts/check.sh
# Unit tests and the Release build, without desktop UI automation
./scripts/check.sh -only-testing:TypingPallTests
# Validate the bundled lesson examples with available language toolchains
python3 scripts/check_lessons.py
UI tests require a logged-in desktop and permission for the Xcode test runner to control it. See the release guide for distribution checks and the documentation archive for historical design notes.
If TypingPall earns a place in your practice routine, a star helps other developers find it.
Created by Mier, with thanks to everyone who contributes. Licensed under GPL-3.0.