Mieraidihaimu/TypingPall

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

See the code

See what people are saying

SourceMessageScoreDate

TypingPall – Mac App for code typing practice

1

Oct 5, 2026

README

TypingPall

Make code patterns familiar, one line at a time.

A native macOS practice app for algorithms, low-level design, language idioms, and concurrency.

macOS checks macOS 12+ License: GPL v3

Get started · Explore the lessons · Contribute

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.

TypingPall practicing C++ binary search: the indented reference line is highlighted and matching input starts directly with int left = 0;

A small, focused practice loop

  1. Choose a pattern. Open a built-in lesson, paste your own snippet, or import a source file.
  2. Type the line shown above the input. Leading spaces and tabs are skipped automatically, and the first difference is underlined.
  3. Press Return to continue. Repeat a tricky line or restart the entire pattern whenever you want. When you finish, the next lesson is one Return away.

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.

  • Built-in lessons in three tracks (LeetCode, Low-level design, Languages & syntax) across Python, C++, Rust, and Go, with search and topic filters.
  • LeetCode and design patterns include recall notes (cues, invariant, pitfalls, anchors, mantra), and library search matches the cues.
  • Practice from memory. Key lines (⌘2) and Recall (⌘3) hide code, check each line when you press Return, offer one-token hints on request (⌘'), and grade the attempt without timing it.
  • Optional comment skipping lets you focus on code while the full reference stays visible.
  • Your own practice library stores imported and pasted patterns locally.
  • Calm progress shows your place (2 of 13), with no timer or speed target.
  • Native and offline with SwiftUI, AppKit, and Core Data. No account, analytics, or third-party runtime dependencies.
  • Comfortable input with adjustable monospaced text, tab width, and an optional on-screen keyboard.

Get started

Install via Homebrew

brew install --cask mieraidihaimu/tap/typingpall

Or build from source

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.

Lessons ready to practice

TrackCollectionExamples
LeetCodePython interview patternsSliding window, two pointers, binary search, BFS, DFS, tree and grid traversal, topological sort, backtracking, union-find, knapsack and other dynamic programming
Low-level designCreational, structural and behavioral patternsFactory, builder, singleton, adapter, decorator, composite, strategy, state, observer, command, chain of responsibility
Low-level designDesign building blocksLRU cache, token-bucket rate limiter
Languages & syntaxPython fundamentalsComprehensions, collections, generators, dataclasses
Languages & syntaxC++ fundamentalsVectors, hash maps, ownership, lambda sorting
Languages & syntaxRust fundamentalsBorrowing, Result, iterators, enums
Languages & syntaxGo fundamentalsSlices, errors, methods, interfaces
Languages & syntaxConcurrency across four languagesThread pools, async tasks, mutexes, condition variables, channels

The lesson library with a sliding-window Python example, searchable topics, and a code preview

Browse the original examples in lessons.json. Imported snippets are used as practice text; the app does not execute them.

Shortcuts

ActionShortcut
Confirm the current lineReturn
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

A few useful details

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.

Build and contribute

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.

algorithms
appkit
code-practice
data-structures
developer-tools
interview-preparation
keyboard-practice
learn-to-code
macapp
macos-app
offline-first
swift
swiftui
typing-practice

Mieraidihaimu/TypingPall

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

See the code

See what people are saying

SourceMessageScoreDate

TypingPall – Mac App for code typing practice

1

Oct 5, 2026

README

TypingPall

Make code patterns familiar, one line at a time.

A native macOS practice app for algorithms, low-level design, language idioms, and concurrency.

macOS checks macOS 12+ License: GPL v3

Get started · Explore the lessons · Contribute

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.

TypingPall practicing C++ binary search: the indented reference line is highlighted and matching input starts directly with int left = 0;

A small, focused practice loop

  1. Choose a pattern. Open a built-in lesson, paste your own snippet, or import a source file.
  2. Type the line shown above the input. Leading spaces and tabs are skipped automatically, and the first difference is underlined.
  3. Press Return to continue. Repeat a tricky line or restart the entire pattern whenever you want. When you finish, the next lesson is one Return away.

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.

  • Built-in lessons in three tracks (LeetCode, Low-level design, Languages & syntax) across Python, C++, Rust, and Go, with search and topic filters.
  • LeetCode and design patterns include recall notes (cues, invariant, pitfalls, anchors, mantra), and library search matches the cues.
  • Practice from memory. Key lines (⌘2) and Recall (⌘3) hide code, check each line when you press Return, offer one-token hints on request (⌘'), and grade the attempt without timing it.
  • Optional comment skipping lets you focus on code while the full reference stays visible.
  • Your own practice library stores imported and pasted patterns locally.
  • Calm progress shows your place (2 of 13), with no timer or speed target.
  • Native and offline with SwiftUI, AppKit, and Core Data. No account, analytics, or third-party runtime dependencies.
  • Comfortable input with adjustable monospaced text, tab width, and an optional on-screen keyboard.

Get started

Install via Homebrew

brew install --cask mieraidihaimu/tap/typingpall

Or build from source

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.

Lessons ready to practice

TrackCollectionExamples
LeetCodePython interview patternsSliding window, two pointers, binary search, BFS, DFS, tree and grid traversal, topological sort, backtracking, union-find, knapsack and other dynamic programming
Low-level designCreational, structural and behavioral patternsFactory, builder, singleton, adapter, decorator, composite, strategy, state, observer, command, chain of responsibility
Low-level designDesign building blocksLRU cache, token-bucket rate limiter
Languages & syntaxPython fundamentalsComprehensions, collections, generators, dataclasses
Languages & syntaxC++ fundamentalsVectors, hash maps, ownership, lambda sorting
Languages & syntaxRust fundamentalsBorrowing, Result, iterators, enums
Languages & syntaxGo fundamentalsSlices, errors, methods, interfaces
Languages & syntaxConcurrency across four languagesThread pools, async tasks, mutexes, condition variables, channels

The lesson library with a sliding-window Python example, searchable topics, and a code preview

Browse the original examples in lessons.json. Imported snippets are used as practice text; the app does not execute them.

Shortcuts

ActionShortcut
Confirm the current lineReturn
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

A few useful details

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.

Build and contribute

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.

algorithms
appkit
code-practice
data-structures
developer-tools
interview-preparation
keyboard-practice
learn-to-code
macapp
macos-app
offline-first
swift
swiftui
typing-practice