Software Development Technologies
Many of our applications are built using the Python-based Pyramid framework.
SQL and NoSQL Databases
We have used a variety of databases extensively, such as PostgreSQL, MySQL, Oracle, SQLite, as well as a number of NoSQL databases such as MongoDB, the Zope Object Database (ZODB), Erlang’s Mnesia database, and various simple key-value stores such as Berkeley DB (BSDDB).
Rich User Interfaces
Many of our applications have a strong geographical focus. For such GIS applications, we use a variety of resources and technologies, including Open Street Map, UMN Map Server, PostGIS, the Leaflet and OpenLayers JS libraries, and we support a variety of exchange formats, such as KML, GeoJSON, shapefile etc.
We usually host and develop our software on Ubuntu Linux machines.
We use DRBD to provide redundancy in case of hardware failures, as well as nightly incremental offsite backups to safeguard our clients’ data.
Automation and Virtualization
Our deployments are partially automated using a complex Ansible setup (including our own Ansible plugins), and a variety of setups use virtualization, both in production as well as for testing and staging. We use a number of tools for virtualization, including KVM, QEMU and libvirt as well as VirtualBox.
Debian Packages and Automated Deployment
Much of our software is deployed via our own automatically built Debian packages. These are also deployed automatically to testing environments whenever a repository check-in is made.