Libraries
I am the author of some software libraries and a sporadic hacker/contributor to other open-source projects.
arcgrid: Haskell support for ESRI/ArcInfo (ArcGrid) raster GIS files⌗
Parser for proprietary ESRI/ArcInfo (ArcGrid) files widely used by many geographics-related software (GIS) to represent elevations or other terrain features.
Only ASCII GRID (.asc) files are supported at the moment.
clos: Probabilistic combined line-of-sight (LOS) on discrete grids⌗
Combined Line-of-Sight (LOS) with non-deterministic and deterministic detection models for abstract discrete grids.
elint: Type-safe modelling of intelligence gathering⌗
Haskell library that deals with uncertain and incompleteinformation in a type-safe manner. The library makes it easier and safer to manage various intelligence data (as in military intelligence) properties such as:
- incompleteness of information (when only parts of the whole are known)
- uncertainty of information (analytic confidence statements orprobabilities)
- degradation (aging) of the information
- priorities and choices between similar intelligence reports (deduction of thebest report among all available)
- bulk-processing and incorporation of heterogenous intelligence data
meshview: Library for quick visualization and simulation of arbitrary 3D mesh data⌗
Haskell library for quick visualization and simulation of arbitrary 3D mesh data.
FPS-like (WASD style) keyboard & mouse controls are supported; the user can view/roam the dynamic 3D-scene and explore the loaded meshes in perspective.
Only .stl and .obj files (models) are supported for now, as well as some basic affine transformations like rotations and translations. Objects with the same name are added (uploaded to the GPU) only once.
opcon: Abstract DAG containers for dynamic, echeloned military hierarchies⌗
Small Haskell library for creating, querying and manipulating echeloned military hierarchies.
The hierarchy is modelled as DAG (Directed Acyclic Graph), with:
- vertices containing the user data (i.e., a unit or some organization)
- edges being typed echelon uplinks to higher headquarters
Two types of echeloned uplink connections are supported: the organic and the OPCON (Operational Control) connections.
- The organic command means that the sub-organization is a natural (e.g. doctrinal) part of the whole unit (i.e. 1st, 2nd and 3rd fire platoons of a company).
- The OPCON link means that the sub-organization is attached only temporarily and is not a part of the unit’s standard outfit (i.e. a recon or support unit given to a reinforced battalion).
The library provides both functional and monadic (state) combinators to work with the hierarchies.
rea: Resource-Entity-Action design pattern for declarative descriptions of RTS games⌗
High-performance, purely functional, minimalistic DSL implementation of the Resource-Entity-Action pattern. The pattern was originally conceived as a generalization of Real Time Strategy games, but the abstraction suits also well for other types of discrete simulations.
Based on the ideas proposed in research paper Resource Entity Action: A Generalized Design Pattern for RTS games, by Abbadi, Mohamed & Di Giacomo and others.