This page showcases some of the websites I have created and computer programs I have written. The programs include Microsoft Press Games for Windows, a series of C programmer's toolsets, and a custom software system for the D. L. Glaze insurance corporation. Also included are a variety of smaller programs that I developed for book projects or wrote for computer science courses.
Websites
1. mjyOnline.com
mjyOnline.com is my personal website, which you are currently viewing. I wrote this website entirely by hand using HTML 4.01 (Transitional), CSS, JavaScript, and PHP.
The following are the primary design goals for this website:
- Keep the layout simple, but aesthetically pleasing.
-
Observe the principles of human-computer interaction and usability. For example, the site has been designed to be extremely easy to navigate, by means of two elements that appear at the top of each page:
- a tab-styled navigation bar with links to all top-level pages, plus drop-down links to the major second-level pages
-
a "breadcrumb trail" heading showing the user's exact location in the page hierarchy—
for example:
> books > XML Step by Step Second Edition > Introduction Excerpt
- Allow the user to freely change the font size in the browser without corrupting the page layout, primarily to support accessibility.
- Conform to the HTML 4.01 (Transitional) and CSS standards so that both the HTML pages and CSS style sheets can be successfully validated. Avoid nonstandard and deprecated features.
- Support as many current browsers as possible.
- Keep the website structure & semantics (HTML), appearance (CSS), and behavior (JavaScript) all distinct—whenever possible in separate files.
- Use JavaScript in an unobtrusive manner: Avoid JavaScript overuse, and if JavaScript is disabled in the browser display all page content legibly (although perhaps in a slightly less convenient format).
- Avoid features that are slow to load or run, which tend to get in the way of accessing the content.
- Enhance the visibility of the website in search engines, and improve the quality of the page excerpts that are given in search engine listings. For example, each page has a comprehensive 'description' meta element in the header, and a robots.txt file directs search-engine crawlers away from irrelevant pages.
2. WordPress Blog
I also set up and customized a WordPress blog, which I named "Fascinating Computer Science—articles on interesting new developments in computing." The blog is written primarily in PHP and uses CSS extensively. (After writing an initial series of three articles I have not found time to keep writing for the blog, although it is still posted.)
3. NancyRoach.com
NancyRoach.com is the website of artist Nancy Roach of Sebastopol, California. The site displays the artist's abstract, still life, and landscape works, and it embodies many of the same design goals as mjyOnline.com, described above.
Microsoft Press Games for Windows (1992)
Microsoft Press Games for Windows is a set of 12 computer games developed in Visual Basic, which I wrote for Microsoft Press in 1992.
The games are derived from my book Visual Basic—Game Programming for Windows. They are not complex video action games, but rather are relatively simple puzzles, strategic board challenges, and animated games that demonstrate many of the graphics and animation capabilities of Visual Basic.
To play the games on a Windows system, you can download the file VBGames.zip. Then extract the entire contents of the zip file (including VBRUN100.DLL) into a single directory.
To run a game, just double-click the .EXE file and use the Help menu! (Remember when programs were so simple that you didn't need to install them?)
Programmer's Toolsets
From 1987 through 1989 I developed and marketed three C programmer's toolsets.
1. Systems Tools for Turbo C (1987)
A library of functions for developing Turbo C programs and memory-resident utilities for MS-DOS. These functions extend the C runtime library by making use the underlying MS-DOS and BIOS APIs and other low-level resources. The library consists of the following modules:
- Video Buffer Functions
- An Expanded Memory Interface
- File Management Functions
- Graphics Functions
- Interrupt Handling Functions
- Console I/O Control Functions
- Keyboard Functions
- Printer Functions
- Video Functions
- Functions for Creating Memory Resident Programs
- Utility Functions
The toolkit also includes an interactive text-mode screen designer.
2. Software Tools for C (1989)
A library of routines, similar to Systems Tools for Turbo C, but for use with Microsoft C, Turbo C, or Turbo C++. These functions are written in C and assembler, and consist of the following components:
- Disk Management Functions
- Expanded Memory Functions
- General Utility Functions
- Graphics Functions
- Interrupt Service Routines
- Keyboard Functions
- Functions for Creating Memory Resident Programs
- Mouse Functions
- Printer Functions
- Screen Functions
The toolkit also includes an interactive text-mode screen designer.
3. OS/Tools (1989)
A toolkit for the OS/2 programmer, consisting of a set of more than 70 functions, short example programs that use these functions, and a collection of OS/2 utilities. All C and assembly language source code is included. The functions serve to extend the C runtime library and the OS/2 application program interface, and are grouped into the following modules:
- Disk management functions
- General utility functions, defined in C
- General utility functions, defined in assembly language
- Keyboard management functions
- Printer management functions
- Screen functions
- Supporting functions called by the module functions
The OS/2 utilities demonstrate the use of the functions, exploit unique features of OS/2, and provide useful services for the programmer. They include a keyboard macro program, an interactive text-mode screen designer, and a text-mode screen capture utility.
Insurance Adjuster System
From 1986 through 1998 I developed and maintained a custom software system for the D. L. Glaze Company, an insurance corporation with twelve branches in California. The Novell network system tracks clients and adjusters and generates invoices and reports. It was written in C with assembly language subroutines, employing an ISAM library (CTree).
Programs Developed for Book Projects
The following are two examples of programs that were written specifically for book projects:
-
A set of Windows utilities written for Mastering Windows Utilities Programming with C++, which includes the following programs:
-
A C++ Windows animation library developed for Windows Animation Programming with C++, which allows C++ programmers to add either sprite animation or frame animation to their programs:
Programs Written for Computer Science Courses
The following is a sampling of programs that I wrote for computer science courses:
- A small compiler (in Pascal!) and a set of compiler extensions (in Java)
-
A virtual world in VRML (Virtual Reality Modeling Language):
- An Oracle database for tracking instructors, students, and employees in a university, including a Java interface
-
A set of discrete event simulations in C:
... while (a[n] < TAU) { s = a[n]; do { s = s + Exponential ((double)1.0 / (double)LAMBDAMAX); u = Uniform (0.0, LAMBDAMAX); } while ((u > lambda (s)) && (s < TAU)); a[n+1] = s; n++; } ...
-
A genetic algorithm in Lisp:
;; excerpt: ;; returns a list containing both the y value that maximizes g(y) & the maximum g(y) value (defun fittest (population) (let ((max-fitness -1) (opt-y 0) individual-fitness individual) (dotimes (idx (length population) (list opt-y max-fitness)) (setf individual (nth idx population)) (setf individual-fitness (fitness individual)) (if (> individual-fitness max-fitness) (progn (setf max-fitness individual-fitness) (setf opt-y (/ (decimal individual) (- (expt 2 no-of-alleles) 1.0))))))))
-
A multithreaded synchronization application (a modified version of Dijkstra's Sleeping Barber Problem) in Java:



