Projects
Personal projects of mine. At work, I have been mostly building enterprise (aka data entry) applications, these will not be mentioned here.
2018
- urwebfmt: a separate pretty-printer for ur/web code
- typesafe-dom: typeful DOM access for ATS in the browser
- tfc: simple cooperative threading for ATS
- colorado: a very simple library for colored output in the terminal, for ATS
- WinCeWebDriver: a webdriver implementation for WinCE devices (allows you to test your WinCE apps written in WinForms by simulating end-user actions, much like you'd test your browser apps with Selenium)
- I also put some time to contribute to existing open-source projects (Ur/Web, ATS and Dotmim.Sync)
2017
- ATStead: a modeless structured editor written in ATS (yeah, I suck at naming)
- urweb-uuid: support for UUID datatype in Ur/Web
- urweb-projects: various Ur/Web-based projects that will someday evolve into something useful
- Ur/Web + SAM: translating SAM pattern to Ur/Web
- Ur/Web + XForms: translating XForms examples to Ur/Web
- urweb-storage: support for HTML web storage API in Ur/Web
- urweb-misc: Ur/Web code, including a toy relational algebra interpreter
- Split calculator (Ur/Web-based)
- PATS-EF: an online "error filter", for making sense of type errors of ATS2
- SAM-tetris: a Tetris clone structured according to the SAM (State, Action, Model) pattern. A bit unfinished (only keyboard input is supported).
- getopt: a library for parsing command-line arguments in ATS console programs
2015 - 2016
- HTML2PATS: a tool for generating HTML printers for ATS. Say you want to write some functions that print HTML (e.g. to generate a webpage). You could build up an HTML syntax tree for that (and then pretty-print it to textual HTML representation), but it would be suboptimal (in terms of runtime performance). Instead, you could preprocess a specially crafted HTML file to output ATS code that prints it out: much nicer syntax (familiar HTML), and you get function definitions for free, that you can plug into your program.
- ATS playground: some ATS code
- dataphor: compiling Dataphor to CIL via Reflection.Emit (in C#), to speed up the interpreter
- dataset2xf: generating CRUD interfaces (using XForms), given an ADO.NET Typed Dataset as input
-
ORMtools: open-source Object-Role Modeling tools
orm2d4
: an XSLT2.0 stylesheet to transform NORMA ORM files to SVG. Runs in the browser via Saxon-CEDCILtoD4
: for generating Dataphor schemata from ORM schemata produced by the NORMA toolDDILtoSQLite
: the missing NORMA ORM to SQLite schema generator (seriously, missing SQLite support? are you kidding?)
- cfgtools: context-free grammar tools
- ATS3D: 3d vector algebra library for ATS
- SQLiteClientSync: SQLite client sync provider for ADO.NET Sync Services for Devices (ported to WinMobile 6.5/.NET CF from its original desktop version, with author's permission). This is for implementing off-line applications with hub-and-spoke synchronization and conflict resolution.
- Support for GNUstep on NixOS: abandoned, but it was picked up by @matthewbauer and brought to fruition (thanks, Matthew!)
2012
- Exercises from the Agda tutorial by Ulf Norrel (contains spoilers!)
- ATS/Anairiats bindings to OpenGL ES2: contains a robust Wavefront OBJ file parser and plenty of sample files
2010 - 2011
- ats-miscellanea: some ATS1 code (regex matcher, ray caster, and minor code samples). Also, contains source code of my BA thesis (as-is, so probably doesn't compile).
Earlier projects
-
2009: Flapjax-based apps
- Tabbed interface (with an RPN calculator)
- OGPO (car insurance) calculator (in Russian, but you get the idea: mess with some knobs and have the insurance charges calculated for you)
-
2004: Quake2 studiomdl support
What if you wanted to make a computer game based on Quake2, but you need some Half-Life features for it, such as skeletal animation and its perks: hitboxes, animation blending, "mounting" points for weapons? What we did here (jointly with Dmitry Shalkhakov, who did most of the game improvements, while I did the renderer improvements): get the source code of MDL viewer off Valve SDK, and try to integrate it into Quake2. See the result for yourself: I only put some newer models to show it off.
Working features:
- Half-Life MDL models can be used alongside existing MD2 models
- Animation blending
- Separate "gait sequence" for player character
- Chrome effect and proper colored lighting for MDL models