states-machine

Memorize the names and location of US states with spaced repetition

MPL-2.0 License

Stars
7

States Machine

Homepage | Repository

States Machine is an app to memorize the names and locations of the fifty US states using spaced repetition.

Aesthetics

Foundations

  • Uses OpenGL 3.3 for graphics
  • 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-cross is 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: