|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 ;) ...|
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
characters... But this also demonstrated how slow was the Basic
interpreter and simulation 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 ...
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 ...
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 ;) ...
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 ...|
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.
I joint a project to develop semiconductor neural networks as a part
of a possible faster, more power-efficient and reliable brain-inspired
computer. Unfortunately, we stuck with slow computers, lack of tools
and could not proceed, but I still managed to develop various tools
and applications to emulate Hopfield Neural Networks that could
restore noised characters of any size. I also tried to tune the network
to find optimal parameters that maximize amount of recognized characters,
and presented my findings in 1995 at the national MIPT conference.
This work was one of the main motivators for my later switch to computer
engineering, since I quickly understood that I will not be able to proceed
with this research without having much faster and cheaper computer systems.
Later, due to this work, I got a research assistant position to develop my own 3D-visualization software for non-linear wave processes in gaseous streams ...
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 ...
|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.|
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 ;) !..
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 (tat I created previously to measure my own semiconductor neural elements) has been extensively used in the electronics labs of my department in MIPT so I was asked to develop the version for Windows ...|
|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. For example, I really missed such functionality during my research on semiconductor neural networks. As a result, during my M.S. project I proposed and developed an Internet services to enable simple and unified remote access to heterogeneous HPC systems 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 (sadly a very common reason for scientists to leave Russia :( ). 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, Amazon, and Microsoft provide such services.|
|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 here.|
|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 ;) ...|
|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 so I stopped any developments in that area. This event made me really think whether I should continue Ph.D. or switch to industry. Nevertheless, I am glad that I continued PhD and prepared foundations for collaborative, reproducible and systematic computer engineering, why reusing machine learning, predictive analytics, and other ideas.|
I started using Windows Mobile Phones 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 ;)
Once, after my MMC card got corrupted, I decided to develop a simple program to recover all my photos from the file system image of SD/MMC cards
|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 new Far extensions for my Collective Knowledge Framework.|
|2005||Since 2005, I focus mostly on my open source cTuning technology to enable systematic, collaborative and reproducible research, development and experimentation in computer engineering via autotuning, run-time adaptation, "big data" analytics, machine learning and crowdsourcing.|