Projects
This is a portfolio of my notable projects. These are projects on which I was the principal architect and developer, or key team member. This list is far from complete; only projects that are remarkable either due to their size and complexity, or due to their unique nature, are presented here. Of course, not all my projects are large; I have completed many small assignments to the satisfaction of my clients.
Custom software development
For years, I have been collaborating with IceFire, best known for their flagship product PointFire that helps users of Microsoft SharePoint manage multilingual document holdings.
Management consulting, custom software development
In 2012, I was invited to assist Tatweer, an Abu Dhabi traffic engineering and management company, in their effort to design and implement the computer architecture of a new Smart Traffic Center, under construction at the headquarters of Abu Dhabi Police. Over the course of the next three years, I helped Tatweer formulate a Information Technology Master Plan, and I also provided assistance during the tendering process, proposal evaluation, and vendor selection.
Custom Application Suite
I designed, developed, and maintained for nearly 20 years a multifunction client-server application suite designed to facilitate interactive and scheduled monitoring of the airwaves. The suite runs on a Windows host and controls physical instruments via a variety of communication protocols including GP-IB, serial and Ethernet connections.
Research Application
As part of my research of the Pioneer Anomaly, I developed a precision orbit determination program that can be used to confirm the anomalous acceleration. The program performs high accuracy numerical integration of the relativistic equations of motion, with solar system data and ground station data obtained from JPL. Nongravitational forces such as solar pressure are also accounted for. The program calculates effects on signal propagation due to gravity (including the Shapiro delay), the solar plasma, and the terrestrial atmosphere. The code calculates the Doppler frequency shift of the received signal; orbital parameters are adjusted to minimize the difference between calculated and observed Doppler data. A unique feature is the program's ability to incorporate a dynamical model of on-board generated forces due to heat radiation, computed from telemetry data. As part of the same research effort, I also developed a ray tracing code that computes the thermal emissions of the spacecraft in various spatial directions.
Custom Application Suite
This application suite integrates two areas of functionality: a multimedia product catalog and an engineering design application. The product catalog provides salespeople with a portable version of the company's entire product database and includes product images, rich text product descriptions, technical specifications, and engineering drawings. The engineering design application provides a sophisticated design model that allows salespeople to configure an industrial humidification solution and generate a product selection and price offering matching the client's needs.
Computer Algebra System
For the last several years, I've been a member of the Maxima development team, concentrating my efforts on maintaining and improving Maxima's tensor algebra capabilities. Maxima is one of the oldest computer algebra systems in existence, its origins dating back to the 1960s. Its tensor algebra packages were originally developed in the 1970s and early 1980s, but they have fallen into disuse. I've revived these packages and also made many improvements; as a result, the packages can now deal with relatively complicated research problems that involve, for instance, the use of nonsymmetric metrics or field equations derived from a relativistic Lagrangian.
Commercial Application
There are many ways to integrate database records with your Web site dynamically, but few were portable across Web servers. RES-Reach was one such solution. Utilizing ODBC and providing a standards-compliant extension to HTML, RES-Reach enables you to create dynamic Web content without locking in your application with a specific server (or database) vendor. The specifications for RES-Reach were developed by RES International; I wrote a robust 32-bit implementation for the Windows server platform.
Management Consulting
This project, representing one of the few instances when I worked for a uniformed branch of government, was about the development of a sizable (by the standards of the day) records and document management system, for National Defence. I joined the project in the early stages and helped develop its analysis of requirements, statement of work, and tender documents.
Custom software development
In 1995, I was asked to help Bell Sygma to develop a simple controller application that could set up digital cross-connect network switches for testing. The result is the ASERT Controller, a service-level UNIX/Linux application that offered the ability to manage circuits for testing with multi-user access.
Custom Application Suite
In the mid-1990s, I worked as a consultant for Bell Canada on several occasions. I also participated in the conceptual development of a network testing and management system (NTMS). While NTMS never got beyond a non-functioning prototype stage, I did end up building a client-server test suite that automated telecommunication circuit testing. To the best of my knowledge, this software was still in use nearly 15 years later.
Management consulting
This was the first project in my career that involved the re-development of a COBOL based legacy system using modern (well, by the standards of the day) tools. The client, the Canadian Payments Association, is the agency responsible for clearing and settlement between Canadian financial institutions.
Management Consulting
In 1988, the Canadian Patent Office was still in the planning stages of automating its operations. I was one of the four authors of the CPO's Automation Master Plan, submitted in March 1988.
Numerical simulation
While I was doing research for my book on Rubik's Cube (published in Budapest in 1980), I was given the opportunity to use the Control Data 3300 mainframe computer of the Computer and Automation Research Institute of Hungary's Academy of Sciences.
Hardware Driver
After the Great Blackout on August 14 2003, as we were threatened with rolling blackouts, I decided I needed a UPS to keep my server healthy. I had to buy one hastily, so I bought the first I found, which was an Energizer model, the ER-OF800. Unfortunately, it came without Linux drivers, and I found that it had a rather unusual, non-standard USB interface. It took a bit of an effort but I eventually managed to understand how the interface worked. I first developed a stand-alone driver/monitor program for the unit, but then I used my code to implement a driver for these models for NUT, the Network UPS Tools software suite.
Non-profit Web Site
The first time I ever handled a programmable number-crunching device, it was a programmable pocket calculator that I was permitted to touch. It was a case of love at first sight. I always remained fond of these machines and a few years ago, started what might be described as a professional collection of vintage portable programmable calculators. The site, http://www.rskey.org/, has since become a popular Internet resource among calculator and mathematics enthusiasts.
Educational Application
What kind of a programmer is the one who doesn't know how a compiler works? Well, I always pretended that I knew how compilers work, but in 2001, I actually wrote one on my own. Inspired by the power and convenience of an MS-DOS based pocket computer, I decided to create a simple programming language that could be used on this device. The language also served as a test platform for some concepts that I wanted to study, such as the utility of a keyword-less and typeless C-like procedural language.
Hardware Construction
Beware of programmers who carry screwdrivers! Or soldering irons. Experimenting with electronics is a hobby I rediscovered in the late 1990s. By far my most complex project was the design and construction of a 4-bit processor using low-level logic circuits. Although this machine has little practical utility, it serves as a useful educational tool due, in part, to its relative simplicity. Yet despite its simple design, the processor demonstrates many key concepts, including the use of microcode, a two-phase clock for controlling the processor's components, and even a primitive form of instruction pipelining.
Web Application
I once saw an altitude map of Mars, generated using data from MOLA, the Mars Observer Laser Altimeter instrument on board (where else?) NASA's Mars Observer spacecraft. When I saw this map, an idea was born: why not make this map interactive and let our imagination soar? The result is The Seas of Mars, a Java-based Web application that uses real MOLA data and lets you interactively set the sea level for Mars. I wonder if one day there will be proud ships sailing that vast Northern Ocean...
Interactive Multi-user Application
M.U.D is, of course, the acronym for the world's first multiplayer computer game: Multi-User Dungeon. Developed in the late 1970s at Essex University, England, it remained very popular throughout the years. At CompuServe, it had a loyal following until the end of 1999, when their version of the game was taken off-line due to alleged Y2K incompatibilities. The original game code requires an obsolete operating environment to run. However, in what MUD's author described as a "marathon programming binge" (over 14,000 lines of C++ code in less than two weeks), I created a modern implementation that faithfully reproduces the original game (including most of its charming bugs.) This version has been running at http://www.british-legends.com/ since early 2000. My port is considered to be of some historical significance. It is archived by Stanford University's Library, where it can be viewed as part of the Library's Special Collections.
Research Application
My first ever programmable calculator was deficient: it lacked an implementation of the so-called Gamma function. I quickly embarked on a quest to correct this deficiency and build a quality implementation of the Gamma function that would fit into this tiny calculator's 72 program steps. Little did I know that my quest will last more than two decades; only recently did I finally learn about a computational method that allows one to calculate the Gamma function to an arbitrary precision. I created an implementation of this algorithm in C++, using a publicly available multiple-precision program library, GMP and my own C++ wrapper classes for GMP's floating point functions.
Commercial Computer Games
Beginning in 1982, a number of small groups of programmers in Hungary began to develop commercial computer games. Ours was one of the first such groups, calling ourselves F°451 (based on Ray Bradbury's immortal story); we developed several titles in 1982-83 for Commodore.