Technology
Programming Language and Tools
CrossMgr is written in Python 2.x (http://www.python.org) using the wxPython toolkit (http://www.wxpython.org).
Additional modules include:
xlrd - Excel read module (http://pypi.python.org/pypi/xlrd)
xlwt - Excel write module (http://pypi.python.org/pypi/xlwt)
wxTools - Automatically included with Windows, required separately on Linux (http://packages.ubuntu.com/search?keywords=python-wxtools)
openpyxl - New Excel format read/write module
pyqrcode - Module to generate qr codes
whoosh - Help search and indexing
python-markdown - Processor for translating help text from markup format to html
py2exe - Used to create stand-alone Windows run-time executable
VideoCapture - Interface to USB camera
wxPython - the user interface module
CrossMgr itself is "pure" Python. It has no addition libraries written in "C".
Editor and IDE
I use Stani's Python Editor (http://pythonide.blogspot.com/). It has a lot of good features but does not get in the way. It is also available for Windows and Linux, both of which I use regularly.
Architecture
CrossMgr is a straight-up desktop application. All data is kept memory resident. However, the program automatically saves the data after each change and at frequent intervals while running.
Persistence is done with the standard cPickle functionality where Python objects are marshaled and written to disk in a file (no database). This runs extremely fast and has not shown to be a performance problem.
New fields are added to objects in new versions. If an old data version is read and a new field does not exists (getattr(self, 'field', None) returns None), it is substituted with a reasonable default.
This is the essence of "lazy compatibility". The program remains backwards compatible to its data for all versions.
Queries and data manipulation are done on the in-memory objects through standard Python.