Home Contact CV Research / Teaching Hobbies Social
IT/AI/Bio/etc Photos/Videos Humor Literature Music Films Sport Travelling Misc
[Back to IT/AI/Bio/etc topics]

My miscellaneous software

In the last 20 years I have developed lots of different kinds of software. I became a bit nostalgic recently ;) and decided to add information about some of these developments in chronological order. I hope that you may still find some of them practically or educationally useful. All the downloadable software is FREE (unless otherwise stated). If you find some of it useful, you are encouraged but not obliged to make a donation to Red Cross organizations (for example, to Russian or British Societies) or to support research for handicapped people.

Thank you,
Grigori Fursin


If you have any comments you can post them to my blog.


1987

At my 10th birthday I got a great present that influenced my life a lot - I got two books: "Personal Computer" and "Brain and Vision". Since then I became very curious about Computing and Brain Studies even though I don't have much time for the last topic right now ;) ... At the same time, I found out that a computer at the recently-opened computing center had a language called "BASIC" that could do fantastic things such as returning correct result when typing "print 2+2" ;) ... Since then I was a frequent customer of that computing center, trying to understand what else could I do with computers besides 2+2 or gaming ;) ...

1988

I got another great present for my birthday: a fantastic personal computer with the Intel 8080 processor (USSR clone), 1.8MHz, 32KB of memory and a tape recorder to store programs. At the same time, I read a book about neural networks and managed to write a simple program to simulate the Perceptron - it was lots of fun to see how it trains and recognizes simple characters... But this also demonstrated how slow the Basic interpreter and simulation have been on that computer. So I started learning assembler for Intel 8080 and wrote a few parts of the program in assembler that considerably speeded up the program - no wonder that now I continue working with program optimizations but on a larger scale ;) ...

By the way, I found an interesting nostalgic link about personal computers in the USSR in the 90s most of which I had a chance to work with ...

1989

At that time I tried to develop a few simple games but quickly got enough of the slow BASIC interpreter and decided to develop a compiler for it which was a bit difficult since my PC had only 32KB or RAM available ;) ... Of course, I was too young and naive so I didn't manage to finish it but I still managed to write a simple language that was a mix between basic and assembler, and could help speeding up programs. Also, I learned how to write compact programs and avoid making mistakes since they were too costly - you had to restart computer and reload all software and data from the tape which could take 20-30 minutes sometimes ...

I had also been interested in radio and electronics so I had a good time developing different devices that I could connect to my PC and writing software and drivers to control them - audio devices, light controls, modems, game pads, etc ...

1990

I was very happy since I got an access to the IBM XT with Intel 80286, 8MHz, 1MB of memory, 20MB hard drive and PC-DOS. It was a dream at that time (at least in Russia ;) ). I had been working with Turbo Basic, Turbo Assembler, Turbo C and Turbo Pascal from Borland, and they were really great! I decided to connect my old PC with this one to copy my programs - as I didn't have good licensed programs for communication, I developed a protocol for RS-232 to send files across wires. Having some errors during communication, I developed simple fault-tolerant protocol with CRC-checks and error recovery. Later at the university, I was surprised to find out that it was extremely similar to some standard communication protocols ;) ...

Here is the nostalgic TurboC source code of one of the first versions of my communication program I could find. The style of coding is quite awful since at 13 years old I was just learning how to write clean, understandable programs ;) ...

1991

I was busy helping my friends to develop missing device drivers, resident programs with English dictionaries, help systems, printing drivers, and lots of other stuff for PCs with MS-DOS that have been quite useful at that time ;) ... I also developed a few games for fun and had to optimize them to deal with fast direct memory transfers to the graphic memory, etc - it was a useful programming experience.

I also started thinking about producing a few commercial programs and developed a simple installer system for a smooth automatic program installation with text windows, data packing and simple scripting system. Nowadays it is very common, but I didn't have any similar freely available programs at that time ...

I moved to the high school and was asked to teach an informatics class (about computing systems, programming and a few other topics). At the same time, I had been playing in a youth football team of Dynamo Moscow and wanted to play in my favorite team Spartak Moscow however had to choose between football and informatics. Fortunately or unfortunately ;) I have chosen informatics but still love to play football in my leisure time ;) ...

1992

I was annoyed with the text-only programs and developed my Windows manager with a unified API that I used when developing a few commercial programs at that time. One of them was a program to automate salary and tax calculations which I managed to sell to several companies. Another program was a data recovery tool for broken hard disks or corrupted file systems (which was similar to Norton Utilities but with local specifics ;) ). I have been supporting them for several years afterwards, but it was impossible to compete with growing Russian software companies while studying full-time at the same time ...

1993

I started my undergraduate studies in Moscow Institute of Physics and Technology and with very busy studying. We had to finish many labs and produce many reports manually so I decided to write a program to automate my laboratory work and to produce nice reports. I developed a simple language and a printing system to describe different fonts, tables, mixed with graphic files , etc. in a text file - unfortunately, I didn't know much about Unix/Linux since it was not popular in Russia at that time, so I didn't know about LaTeX system and basically redeveloped parts of it for MS-DOS ;) ... Anyway, I used my system for 4 years together with my friends and we were very happy with that system ...

When we started using shared file systems on MS-DOS in my Institute, I developed several data protection systems to crypt files on the fly for multiple users - later in the 3rd year undergraduate IT class I was surprised to find out that the crypting technique I developed was known before as a symmetric cryptography with a varied key-length ;) ...

At the same time I started thinking about developing a small unified graphical Windows system on top of MS-DOS similar to Windows 2.0 but with proper paging support, some kind of virtual memory and multitasking without need to boot MS-DOS at first. Just for fun, I developed a few prototypes, but luckily I stopped these developments since I found out that these features would be available in Windows NT and have been available in Linux ;) ...

I started having troubles keeping all information, references, data, software, links and knowledge I encounter so I developed some software to update and systematize all the knowledge with cross-referenced links. This helped me systematize my knowledge ;) ... So I was very glad to see the development of wiki, blog and live journal technologies later and actively use them now.

1994

I found some time to work with neural networks and developed a few programs to simulate Hopfield Neural Networks that could restore noised characters of any size. I researched to find some optimal parameters for quick network training and character restoring, and presented my findings in 1995 at the national MIPT conference.

[ Hopfield Neural Networks software ]

Later, due to this work, I got a research assistant position to develop a 3D-visualization software for non-linear wave processes in gaseous streams ...

[ my 3D-visualization software ]

That summer I was also an intern at PhysTechSoft Ltd. and developed communication drivers for their PTS-DOS reusing my previous knowledge on developing communication systems with fault-tolerance ;) ... I was also asked to develop a crypting system for the PTS-DOS file system and a resident printing system but my boss decided to move to another company and I decided to concentrate on studying and research ...

[ Advanced Print Screen (with x86 assembler source code) ]
[ Communication between two computers through parallel port (with x86 assembler source code) ]

1995

I shortly worked for a local company to develop a technique to protect executable files from de-compilation and hacking, so using my previous knowledge I developed a run-time technique to crypt/decrypt executables on the fly and detect intrusion, unusual behavior and debugging by execution time skewing.

[ Early prototype of the protection system with lzexe ]

1996

During this year we had lots of practice in semiconductor electronics labs at my Institute. We had several very large and old devices to measure characteristics of semiconductors and unfortunately one of them died in pain ;). At that time I had also been working with various DSPs, so I decided to develop an external board with ADC and DAC transformers that would communicate with PC, perform measurements of characteristics of semiconductor devices, display them and provide an API to use collected data in different math tools to automate analysis and calculations, and produce reports. It worked well, so my department decided to use it instead of the old devices. Recently, when I visited my department, II was very glad to see that it is still in use 10 years later ;) !..

[ Software for Measurement of Characteristics of Semiconductor Devices (DOS) ]

At that time I still had time to play chess with my brother. Once our chess timer broke, so I wrote a very tiny Chess Timer program to simulate chess timer on the PC. Very nostalgic ;) ...

1998

My board and software for the measurement of characteristics of semiconductor devices has been extensively used in the electronics labs of my department so I was asked to develop its Windows version ...

[ Software for Measurement of Characteristics of Semiconductor Devices (Windows) ]

[ Source code (Visual Basic, Visual C) ]

1998-1999

Internet started becoming popular in Russia and I have been working a lot with new Internet technologies and Java language. At that time I started realizing that this environment can be used to deliver high-performance computing resources remotely through unified interfaces and services while being machine independent. So, for my M.S. project I developed Internet services to enable simple remote access to heterogeneous high-performance computers in the Russian Academy of Sciences. The server software provided provided hidden MPI parallelization and resource balancing. I wanted to continue researching on this topic but unfortunately my advisers didn't find it very exciting so I decided to move abroad to fully utilize my knowledge and skills. I didn't work directly on this topic but glad that lots of R&D have been done in this area since then, and many companies including Google and Microsoft provide such services.

[ Software to deliver high-performance computing resources through Internet (Windows, Java) ]

2000

I started working on my PhD and had been working as a research assistant in the EU MHAOTEU project (Memory Hierarchy Analysis and Optimization Tools for the End-User). I had been developing source-to-source transformation tools for iterative compilation and doing research on performance prediction for memory intensive applications.. More information can be found at my research software page.

Transformation Server from the MHAOTEU project (not supported anymore - new versions are within EOS framework):
mh_txform1.15f_sparc.gz [3.9Mb] (Version 1.15i for Sparc sunos)
mh_txform1.15f_x86.gz [1.2Mb] (Version 1.15i for x86 linux)

2001

I saw many portable cheap electronic organizers on the market that had quite good processors but were limited to reading/writing only small notes. I had developed a GPL file system for a popular Sharp organizer that used text notes as sectors, client/server software for Windows to transfer files, e-book software to view text files in different character coding and foreign language dictionary and word memorizer. It was downloaded around 10,000 up to now - not so much in comparison with some large projects but I am still glad that someone found this software useful ;) ...

Link to my Sharp Electronic Organizer Software (2001-2004)

2002

Looking at the advertising boom in the Internet, I realized that the efficiency of advertisement could be improved considerably if they were content-driven. Just for fun, I built a prototype of such a system that would generate advertisements based on the website content but didn't have time to play with it due to finishing Ph.D.. Later, I found out that at the same time Google developed and started actively using similar system. This event made me really think whether I should continue Ph.D. or switch to a private sector. However, I still love my current research and glad to continue it but I also started looking at the possibilities for knowledge transfer, consulting and startups...

2003

I tried to develop several GPL Text to Speech programs in a hope that it could be useful to handicapped people but the quality of the voice drivers was not very good. Later I was glad to find much better GPL programs and quality voice engines, so I stopped my developments ...

2004

I started using Windows Mobiles a lot to synchronize my Outlook contacts, emails, notes and files. Being concerned that mobiles are often stolen, I ported my old data cryptography system to my Windows Mobile. Since it works rather slowly, I tried to optimize it using knowledge about program optimizations for embedded systems from my main research - it worked reasonably well, so I continue this research up to now ;) ...

Once my MMC card got corrupted, so I had to develop a simple program to recover all my photos from the file system image of SD/MMC cards.

[ SD Card Recovery (for Windows) ]

2005

FAR is a quite popular file manager in Eastern Europe - I use and like it a lot. It has an open API, so I wrote a very simple program that allows to move block on one position to the left (ALT-F2) or to the right (ALT-F3) in the FAR Editor. To install, copy fmoveblock.dll from the zip (bin directory) to the Plugin/FMoveBlock directory of the FAR manager.

[ fmoveblock.zip ]


I am currently busy with my main research at INRIA to develop and generalize automatic continuous program optimization and parallelization techniques and architecture design exploration using innovative search methods, adaptation, machine learning and knowledge reuse to enable realistic self-tuning systems, particularly in the presence of rapidly evolving multi-core heterogeneous architectures. This will surely keep me and my colleagues busy for a while ;) .

However, in my spare time, I enjoy thinking about emerging technologies and innovative intelligent systems in IT, AI, biotechnology and other areas, and interested in the knowledge transfer, consulting and startups. Here you can find some of my old ideas to give you an idea about what I have been interested in or would like to work on in the future if I find time ;) ...

 


Content & Design (C)opyright 1999-2008 by Grigori Fursin
(unless otherwise stated)