States Machine is an app to memorize the names and locations of the fifty US states using spaced repetition.
Aesthetics
- Smooth vector graphics, using real US Census Bureau shapefiles
- UI inspired by Material Design, using Inconsolata for text
- Starts up in less than one second
- Deployed as a single static binary, about 1.1 MB zipped
Foundations
- Uses OpenGL 3.3 for graphics
- Windowing: GLFW
- OpenGL loading: GLEW
- Font rendering: stb_truetype.h
- Uses an SQLite database to store progress
- Implements the SM2 algorithm to plan repetitions
- Written almost entirely in austere C
Platforms
Setting expectations up front, States Machine is mostly for me, so I won't be making any major effort to make it run on machines other than my own.
If you'd like to run it on (hypothetically speaking) Arch Linux or OpenBSD, you're entirely welcome, but you'll have to do most of the legwork.
| OS | Compiler | Maintainer | Notes |
|---|---|---|---|
| macOS | llvm |
@mkeeter | Main development platform |
| Windows | x86_64-w64-mingw32-gcc |
Not officially supported | Only tested in Wine |
| Your OS here | ??? |
Your username here | Contributors welcome! |
Other platforms will be supported if implemented and maintained by other contributors.
To become a platform maintainer, open a PR which:
- Implements a new platform
- Add details to the table above
- Updates the Compiling instructions below.
Releases
Binary builds are available on Github for macOS and Windows.
The macOS application is not signed or notarized, so you may need to right-click → Open instead of double-clicking.
Compiling
At the moment, States Machine supports two targets:
- Compiling a native application on macOS
- Cross-compiling from macOS to Windows (if
TARGET=win32-crossis set)
Building dependencies
GLFW is shipped in the repository, to easily build a static binary. It only needs to be compiled once.
[env TARGET=win32-cross] make glfw
Building
[env TARGET=win32-cross] make
Deploying an application bundle
[env TARGET=win32-cross] make deploy
which executes deploy/darwin/deploy.sh
(Mac) or
deploy/win32/deploy.sh (cross-compiling to Windows).
This command
produces the disk image States Machine.dmg (macOS)
or the zip archive States Machine.zip (Windows).
Note that this does not sign / notarize / apostille the application bundle.
License
© 2019-2020 Matthew Keeter
States Machine is released under the MPL 2.0 license
Third-party software and data
States Machine includes the following libraries and data:
- GLEW: Modified BSD license
- GLFW: zlib/libpng license
- SQLite: Public domain
stb_truetypeandstb_rectpack: MIT / public domain- Inconsolata font: Open Font License
- Shapefiles from US Census: Public domain, presumably
