This page is (still) organized to present my projects in chronological order by the institution with which I was affiliated while working on them and then by the platform they were intended to work on:
Spiru Haret, INCERC, AUBG, NBU. Work I currently do at Carleton is on my current projects page.
I never had a great relationship with my Dad, with him being away most of the time and all, but he did teach me two very important rules of life:
- never say "I can't do it" before you try your darn best at it and
- always use the right tool for the right job.
He was talking about bicycles, but I found out these rules of thumb cover pretty much all of life -- as I know it: social, cognitive, artistic.
But how do you deal with the immensity of knowledge necessary to be even a passable programmer? Currently, I tried databases and knowledge bases, and expert systems, I even designed my very own cognitive architecture (all listed below), and I'm still miles away from real computer-human interfacing. Something that would allow me to use the right tool for the right job without having to depend on thousand-dollars worth of software.
Here you can find mostly software projects which I either finished or abandoned. For projects still on the drawing board, please see my list of current ones. My other portfolios available now are: Generic and Cognitive Science. Or you may want to see why I consider programming a worthwhile pastime.
I'm trying to make this list comprehensive, so don't laugh if you see some little feat presented here. I'll also be bringing some of these on-line as archives or more
detailed descriptions, as time allows; If you want to see (or get) any of them, please see this page.
If you want me to modify one of these for your use or develop something new, see this page.
Spiru Haret High
using Texas Instruments 9000
- "Cat and mouse" game: Keyboard wrecking chase in several mazes, for two players;
- unnamed math/graphics: small program to allow displaying the graph of a 1-variable function given by the user; it had zoom on both axes and was handling some cases of infinity ;
using Sinclair ZXSpectrum+ and compatibles
- "Invaders" game: Simple and bulky version of the more than known Arcade - my first!;
- "Stylus" authorware: My first stab at Assembly Language (Zilog80, I8080) - user-defined font (an archaic -and slooow- version of TTF and basic drawing tools in a descriptive language superset for the Spectrum BASIC; my teacher of Romanian Language in highschool needed a tool for class presentations so I made one for her (and so started my research in Computer-Human Interaction ; that was grade 7; in grade 8 I modified it for my own use and that of classmates and teachers into a very basic document engine that could run tutorials with simple animations, and store/retrieve descriptions and formulas for natural sciences after we studied them in class (Chemistry and Biology were supposed to be added, but the only prototypes I made were for a 1st year Physics "compendium" of Mechanics and an interactive Spanish tutorial on which I collaborated with a couple of friends and my Spanish teacher for his PhD, see below); The entire memory available on that platform (including system and video memory), was 48kB, so there was a lot of tape shuffling involved, to load various segments of each document; later this evolved into other projects, the latest of which is MonDoc;
- "Attack!" game: My first complete Z80 Assembly compilation - scrolling random terrain and a plane bombing targets... I adapted it after a Basic program I found in a magazine, so it's also my first porting job ;)
- "Jump into Chromospace" game: Combination of BASIC with Assembly code. A random n-dimensional maze, in which the difficulty level was set by the number of dimensions. The user saw only two dimensions at once, but paths going through the rest of the dimensions were represented in threads of different colors. I started it as a math simulation, in order to teach myself to grasp n-dimensional arrays, and came out as an arcade game
- "Hermes" game: Combination of BASIC with Assembly code. A quest to find pieces of the "family tree" of the Greek Pantheon. I didn't quite finish it -- ran out of inspiration for the plot and time for development;
- "Hablas español" courseware: part of a team, we put together a foreign language series of computerised class presentations after the plan made by our professor for his Ph.D. examination;
- "Mechanics, Electrodynamics, Heat" courseware: Three Physics highschool courses in my first attempt at interactive database design; in Spectrum Basic;
- "The Path of Dr.Justice" game: Combination of generic fighting (composite
sprites on fixed background) and arcade/quest (one-piece sprites on scrolling background);
- "Lasers in calibration" courseware: Classy presentation for a Physics experiment pioneered by a friend and classmate; the experiment was registered as an invention; (have to look up the references)
- "MonPlot" interface: Was my highschool-leaving diploma Project... mechanics - an X-Y plotter (on paper it had three pens but on the prototype, I was using only one); hardware - an 8-bit parallel interface driving the mechanics; software - an Assembly driver for the hardware and a Logo-like user interface implementing three graphic primitives point, line, circle; never managed to write a script interpreter for it;
- "Functii" courseware: a refined version of one of my TI9000 programs, it added function composition, panning (moving the 'viewing window' up-down or left-right on the two axes) and calculating (displaying too) the first and second derivate functions of the given one; small presentation for a Calculus class, whipped up during a National Computing Camp; I was planning to tie it in the plotter interface; I mistakenly passed a current > 15Amp through the NULL of my computer (I know coz' it managed to burn the fuse for four apartments in my block...)
- Lots of unfinished projects of games and diverse utilities; either I found something better done by others, or I didn't have time for them;
Personal problems shook my reality and I missed the exam for the Computers class in the Romanian Politehnică. While working towards a Hotel Management college program, I found employment in the computer staff at the Romanian Building Research Institute (INCERC), the Earthquake Engineering Department and worked there for 2 years.
Work at INCERC
using Sinclair ZXSpectrum+ and compatibles
"Deviz" database: for the use of our Dept.; it was calculating the
internal cost of a project starting from materials, man-hours required, and other
parameters, or the other way around, from a given cost, computing man-hours necessary;
During the weekends I was translating cartoons from English and French for the
So, working on other peoples' projects, I left mine on the waiting list in
their folders. But I had enough to do. I'll list two of the small tricks I put
together to ease my work; they were sort of a user-interface creation system on an enhanced (DIGITAL) PDP11 clone, the Romanian CORAL4020 (multitasking, tapes, text terminals, ay-ay! ):
"Draw" design: small routine for VDT52 graphic terminals; I was
using the escape sequences to combine text and graphics in 'help' screens for
VMS task automation - a series of shell routines which would run a series
of programs in the order decided by the user, while passing the results from
one task to the other;
using IBM-PC compatibles
Then, when the Dept. got a couple of PCs, I zoomed back to the PC World which I had met briefly in highschool.
There I was hacking translations into Romanian of existing programs with PCTools' disk editor, on a poor clone of IBM XT, and also learning a third implementation of Basic.
"BacList" database: Limited GWBasic database system for my ex-
high school; it computed, sorted and enlisted the bacalaureat grades; first
time I had to learn a printer 'language'
While working at INCERC, I started learning AutoCAD from computer magazines; then used it
for precision drawings, for digitizing and cataloging existing drawings and
building plans; made custom menus and a small and handy blocks library... etc; wrote a
small LISP program to export digitized seismic data;
I had to learn, teach others and fix the problems that appeared in
different versions of: SAP, CASE, WordPerfect, WordStar, Windows, Excel, Word, MathCAD, and more...
As I mentioned, we were using an accurate Digitizer for many of our
tasks; the most important task was digitizing seismic data; before I found AutoCad, I had to use some Assembly, FORTRAN and Pascal for programming the digitizer through the serial port of the PC;
There was a chain of mathematic functions to be applied to the digitized
data, selected and ordered differently, depending on what results the researchers
expected; since my code was reading the data from the digitizer, I had to do the low level of
the program chain; I left for AUBG before finishing a user interface for that program chain.
From here on, my 'career' moved together with me at the American University
in Bulgaria (AUBG).
Work at AUBG
"MonEd" editor: full-screen text editor, parts �Ronald Salley (my professor, who furnished a handy unit; my first COS Project @AUBG; in Pascal;
"Books" and "Things" databases: I keep improving these, to help myself, Mom and hopefully my wife to keep track of household... er... things... and my many collections; developed first in Approach, then ported to FileMaker;
"Poll?" database: VERY simple database (in Pascal) which I wrote to help me sort through the (80 x 50 = 4000) answers to a SOCiology poll;
"JMC Stat" database: the most complex database I worked with until
Z Big Dig Database (see below); for statistical analysis of four daily newspapers, two weekly magazines, radio and TV during four weeks, every entry cross-referenced by three students; collects the data, in coded form and exports it in 'chunks' manageable by Excel∧co; still in Pascal;
"Mince'Em" courseware: From MINority SIMulation. Expert system shell, applied to monitoring the evolution of a computer model of a society; first in Pascal, then in Arity Prolog;
"Battled Ships" game: Adaptation for SCO Unix' cshell of the age-old
'sink-the-ship' game, for player vs. computer or player vs. player; funny, on every operating system I worked, I started with a game implementation ;
"PresentaTHOR" authorware: Three-part project: 3D object editor, 3D object browser and presentation manager; in Pascal; was waiting for a port to BorlandC++ (or better);
"Hi!" graphical file manager: inspired by Windows2 for computers with VGA (mode 19); in 8086 Assembly; these days you'd call it an augmented window+desktop manager; was supposed to implement animated windows and document-oriented file handling. The team I was involved in for it never finished it, we bit more than we could chew at the time;
Switch: a small trains-routing system featuring Windows OOP and a graph-traversal algorythm (my version of traveling salesman's path - I foolishly thought I could improve it ; MicrosoftFoundationClasses on Watcom's C++ -- eeew, gross!
"MonADA" PL: dropped; was supposed to be an interpreter for ADA 9X; for
Windows; in BorlandC++.
MonDis: BNF semantics interpreter to automate complex recursive descriptions of syntax and actions (one of the predecessors of MneMonic, HYMNS and the planned Na2FoLa - see current projects)
MneMonic experiment: my BA Senior Project, an experiment in a semiotic application of a neural net... still in the making - see current projects
About these three "still in the making" projects: I was planning to finish
them before leaving AUBG, but the schedule I got into for that summer made that
prospect impossible... I'll need to take a couple of months off (or years, maybe when I retire) to do them -- If I'll have the oportunity. For now the two of them I'm interested in are on my current projects page.
I paid with lots of 'what-ifs' (including crapping my BA in Computer Science and a large 'chunk of freedom') for some access to hardware from the US, for learning the MacOS from System 5 to MacOS 8 and developing the projects listed here, but I've also been payed for my time, so these projects are (c)1993-1999 SESC@AUBG and will not be available here for download. If you're interested in any of them, contact Mark Stefanovich. And I also learned that friendship can be misused as a manipulating device: making people happy to do someone else's work.
"In the Memory of J.H.Gaul" DTP: (this is not quite
'programming project', but with all the applications I worked with -- and now I
know these applications inside and out -- it's worth to be listed here) the
layout of a collection of articles on Balkan Archaeology; including handling images
(grayscale, retouched, manually streamlined, drawn from scratch, etc, etc),
cross-platform document de-Babilonizing (job for which I got paid and mentioned somewhere deep in the interestingly-spelled Foreword);
Chuka Pres MMPresentation: a (lenghty) presentation of the
different facets of the archaeological excavation at which I spent all my AUBG summers;
WebDesign lists my web-oriented work;
an FTP client and a WWW server (really, there are better tools around for these tasks; I had in mind some other projects for the course in Networking, but the professors disagreed, so I did my least.);
A couple of perl CGI utils for automating data entry for an utopic Information System for the AUBG: homePage maker and CV maker;
Work at the NBU COGS Department
I was a technical/research assistant in the NBU COGS Research Lab and now I moderate its discussion group.
Conv-X (the starting point for MoStaCon): a suite of perl data filters for the following experiments:
MoStaCon: an interface to experiment design, data formatting and statistics - the implementation of the current topic of my Master's Thesis; version alpha 0.20 is the current version, and its engine, MonDoc is about to be completely rewritten. That means still usable only in view mode
Mail2Txt: small hack-of-a-script to convert HTML form output to readable email messages;
Word Frequency: small tool for calculating objective word frequency in given (text) files;
- Context Effects on Choice in Decision-Making and Context Effects on Evaluation (both supervised by Assist. Prof. Boicho Kokinov),
- Effects of Gender Agreement on Picture Naming (supervised by Assist. Prof. Elena Andonova),
- Norming of Picture Naming (international effort led by Elizabeth Bates of UCSD),
- Lexical Access of Nouns and Lexical Access of Verbs and Adjectives, (both part of a study supervised by Assist. Prof. Elena Andonova),
- Imagery Use in Understanding Idioms Cross-Culturally (leading to the defense of the Master's thesis of Armina Djanian),
- The Role of Gender and Number Markers on Language Processing in Romanian and Bulgarian Monolinguals and Bilinguals (leading to the defense of the Master's thesis of Mugur Badarau),
- Saturation Effects on Lexical Access (supervised by Armina Djanian)