in English   по-русски
Main page Short CV Books Papers Projects Teaching Travels ZX Spectrum

My LiveJournal
My Picasa Albums
My Habrahabr blog
ZX Recoloring project
Joe Blade 3 Remake 2010

ZX Certified webmaster

  
It was very hard to decide which projects should be mentioned here. They are not necessarily the most advanced systems I developed or co-developed, but all of them are either dear to my heart due to nostalgic reasons, or related to my current research activities.

WordBricks (2013-)

Type:
Research project at The University of Aizu.
Description:
A virtual language lab inspired by Scratch environment and dependency grammars.
Technologies:
Python, PyQt.
Availability:
In progress.
Notes:
This project is my most recent attempt to explore the notion of "experiments" in computer-assisted language learning. The idea in the nutshell is to provide something like Scratch for natural language. The goal of such a system is to provide a platform for students to freely explore language constructions. Words in WordBricks are represented with Lego-styled blocks that can be connected only in certain ways that ensure grammatical correctness. In other words, grammar rules are explicitly encoded in brick shapes, colors, and other graphical elements. Clearly, human languages are too flexible to be adequately represented with such rigid means, but at least they can form the idea of language organization in the learner's mind, which presumably should be beneficial for the language learning process.

EmoTwitter (2013-)

Type:
Joint research project of the University of Aizu and the University of Eastern Finland.
Description:
A tool for sentimental analysis of Twitter messages.
Technologies:
C#, 3rd party libraries.
Availability:
In progress.
Notes:
This project contributes to the ongoing research effort of analyzing emotions found in Twitter messages. The system can analyze any user's public Twitter timeline, and build some visualizations of identified emotions. To do that, the system relies on the special "emotional dictionary" that lists emotional categories for a number of English words. The current system is still in its early stage of development, but it may grow into something practical.

OMML Renderer (2013-)

Type:
Contribution to SoftMaker Office package.
Description:
A module for rendering mathematical expressions defined with Office MathML.
Technologies:
C++, Windows API.
Availability:
In progress.
Notes:
Office MathML (OMML) is an open XML-based language for declaring mathematical expressions, developed by Microsoft and built-in into Microsoft Office. Our project aims to provide similar equation editing and rendering capabilities for the SoftMaker Office package. Perhaps, the largest challenge here is related to the use of special characters and metadata of mathematical fonts. Very few projects need them, so they are very poorly documented at the present moment.

Grammar Checker (2011-)

Type:
Contribution to SoftMaker Office package.
Description:
A grammar checking module for office documents.
Technologies:
C++.
Availability:
In progress.
Notes:
This is a grammar checking module that will be eventually incorporated into the SoftMaker Office suite. Ideologically the module is based on LanguageTool, but it is written from scratch in C++, and uses another set of auxiliary linguistic software, such as sentence splitter, part of speech tagger, and dependency parser (not available in LanguageTool).

ZX Recoloring Project (2009-)

Type:
Hobby project.
Description:
A framework for quick retouching of ZX Spectrum games.
Technologies:
C++, C#.
Availability:
In progress; preliminary version available.
Notes:
This project is my attempt to make another contribution to the ongoing game remaking activities. I noticed that quite many amateur-made remakes offer new graphics and music, while recreating essentially the same gameplay as in the original game. I thought this process could be automated: it is enough for the user to provide updated graphics, and the ZX Spectrum emulator will do the substitution in real time. In other words, the emulator can find a certain sprite on the screen, and substitute it with the supplied better-looked version. Of course, this approach is very limited: it cannot be used with wireframe 3D games, it has troubles with overlapping sprites, and gives no means to update game sound and controls. However, many games can be updated even with these modest instruments. The core activity of the project is to update some Spectrum emulator to do the sprite replacement work. I use the great emulator Unreal Speccy. Unfortunately, I got stuck with recoloring. I'm much better in programming than in creating computer graphics, so it would take some time for me to show something sensible, but I hope to do it sooner or later.

Russian Morphology (2009)

Type:
Research project at The University of Aizu.
Description:
An educational tool for studying Russian morphology.
Technologies:
C++, C#.
Availability:
Full release (binary).
Notes:
Technically, this tool is just a simple wrapper for the AOT morphological modules. However, I consider it to be an important step in my understanding of the idea of "experimentation" in computer-assisted language learning. I believe that among all available systems for language education, only few support genuinely interactive explorative actions. The students should be able to "play" with the language rather than using computers as an advanced alternative to books and audio tapes. Russian Morphology tool can analyze any input word and fill the information boxes, corresponding to various morphological attributes (gender, person, voice, etc.) Also it can generate the desired word form given a set of morphological attributes. For example, a student can find out what is the feminine form of the adjective "red" or the third-person plural present tense form of the verb "to jump".

Artificial Contender for Simple Soccer (2008)

Type:
Joint research project of TruSoft Int'l Inc. and Lockheed Martin.
Description:
An experimental version of Artificial Contender for a simple team-based game.
Technologies:
C++/Boost, Artificial Contender.
Availability:
Available upon request.
Notes:
This is our first attempt to create a team-based game with a fully Artificial Contender-controllable team. Being a simple 2D soccer, this game is a good testbed for exploring AC ability to coordinate actions between individual players. While the results were inconclusive and need further analysis, we were able to reproduce a number of nontrivial team behavior patterns, arising from independent actions of the separate AC-controlled players.

Artificial Contender for Fight Night 3 (2007)

Type:
Joint research project of TruSoft Int'l Inc. and EA Canada.
Description:
An experimental version of Artificial Contender for Fight Night 3.
Technologies:
C++/Boost, Artificial Contender.
Availability:
Available upon request.
Notes:
Artificial Contender (AC) is an advanced technology for assisting the creation of lightweight and efficient behavior-capture AI systems. Its basic aim is to bring machine learning and case-based reasoning to the domain of commercial computer games. The AC-powered system watches game characters, controlled by people, and tries to reproduce their behavior. The resulting AI mimics the players' game style, which can be a an important goal in a number of projects, such as sport games. The use of AC also reduces human effort in programming, though a number of modules still have to be handcrafted.

Within this project, we customized Artificial Contender for the EA's boxing game Fight Night 3. Also we implemented reinforced learning (learn-as-you-go) capabilities, and developed a set of specialized tools for debugging and testing boxing AI. The data-driven self-learning adaptive AI was implemented in the subsequent game Fight Night 4.

JavaPlagiarism (2005)

Type:
Research project at The University of Eastern Finland.
Description:
A novel fast plagirism (or code duplication) detection system, able to analyze Java source code.
Technologies:
Java/Swing
Availability:
Available upon request.
Notes:
A typical plagiarism / code duplication detection system analyzes every possible pair of documents, which requires O(n2) comparison operations for n files. While for most typical cases such performance is acceptable, it might become a bottleneck for large document databases. In this project we developed a heuristic search algorithm that detects overlapping documents in sublinear time. On the next stage, a more accurate algorithm can be applied to the identified pairs of files. The system also relies on tokenization: this technique detects code duplication even if some variables are renamed and some control structures (such as loops) are replaced with similar constructions.

Joe Blade 3 Remake (2003, 2010)

Type:
Hobby project.
Description:
A remake of the ZX Spectrum game, Joe Blade 3; our entry for the Retro Remakes Competition 2004.
Technologies:
C++Builder, SDL and BASS libraries.
Availability:
Full release (includes all modules with sources);
binary archive (main executable with all dependencies).
Notes:
My computer game :) I love computer gaming as an art, though I am a very occasional gamer myself, I rarely have a chance to play something, and rarely find some game addictive enough. But as a fan of ZX Spectrum, I couldn't resist the temptation to participate in the remakes contest, and I believe we created a rather decent entry, though it didn't hit the top. I think the original game was not very popular, and the remake was too "faithful", even if it meant to repeat the original game's shortcomings. In 2010 I decided to add an optional background scrolling capability, which definitely made the game more playable.

Concurrent Program Verifier (2003)

Type:
Graduation project at The University of Eastern Finland.
Description:
A simple interpreter and visualizer of concurrent programs.
Technologies:
Java/Swing, JGraph library.
Availability:
Full release (includes sources and documentation).
Notes:
This project is an attempt to create an educational instrument for visualizing state space diagrams of concurrent algorithms. The core problem with concurrent behavior lies in its irreproducibility: no extensive testing can guarantee correct behavior even with the same input, since parallel tasks may process shared data in different order during each run. There are means to control these processes (such as semaphores), but it is not always easy to imagine all possible program execution scenarios and make sure all of them produce correct results. CPV is a quite simple instrument that explores all the possibilities and thus helps the users to see how exactly a given program can be executed. CPV implements semaphores, so it can be used to demonstrate some classical problems of concurrent programming and their solutions.

CoTex (1998-2000)

Type:
Research project at North Ossetian State University.
Description:
A Russian text-to-speech engine, developed from scratch.
Technologies:
C++Builder.
Availability:
Full release (includes all modules with sources);
binary archive (main executable with all dependencies).
Notes:
This system consists of independent modules, each of whose could be a separate research project. The system splits an input text into sentences, transcribes individual words (including acronyms and numerals), marks stressed vowels, and pronounces the resulting sequence. Our basic idea was to assemble the final sound fragment from individual sound units, extracted from actual human voice. Unfortunately, we didn't have time to work on intonation, though we had such plans. Also, the sound quality is rather poor, as the present sound bank was recorded years ago using low quality equipment. We planned to re-record it, and to perform the proper sound normalization, but it did not happen.

Keyboard Trainer (1997)

Type:
Hobby project.
Description:
A simplified ZX Spectrum remake of the popular keyboard trainer BabyType.
Technologies:
Z80 Assembler, Sinclair BASIC.
Availability:
Tape image; z80 image of the final stage (ZX Spectrum emulator required).
Notes:
This is a simplified remake of a popular in mid-90s typing training game BabyType, performed just to polish my modest Z80 Assembler programming skills. Naturally, I had to "borrow" the graphics from other software (mostly games), and to draw several simple elements myself. Also I had to type sheet music and to create sound effects myself.

All these things are not easy to do in ZX Spectrum. Modest DOS QuickBasic environment looked like a miracle after GENS or OCP Assembler! Still, I was lucky to own a computer with a disk drive (working with a standard tape recorder was a real pain!) My model even had a "magic" button that could be used to dump memory images, which was handy for extracting graphics from other games.

 
©2004-2014 RG Software