SHARK!
In this single-player game you are the shark on a feeding frenzy, seeking to topple Poseidon, king of the oceans. Eat lots of fish and eels, collect treasures to unlock the undersea caverns. Avoid the sharp end of the diver and watch out for radioactive jellyfish. Of course, get the girl (mermaid) while dodging bubbles and jumping seaweed and an underwater avalanche.
Written in Assembler. Requires 48k RAM. download
OS II: The Sequel
This very condensed operating system layer requiring only 8k (not megabytes). It was written in a time when MS DOS was nothing more than a dumbed-down version of Unix and Windows were things you looked through on a sunny day. The recently released Mac brought a graphical interface and desktop/ windows metaphor to computing, But this was not available for the Atari computers at the time.
This OS allowed users to point on icons (rather than a C: prompt). It included accessories like calculator and puzzle. It also allows for multiple screens and windows (defined as read/ write devices). This is a beta version, with lots of low level bugs. I turned it into my senior project (since it was done already).
Written in Assembler. download
Big World Travel
Initially launched in 2005, this two-way online travel auction allows user to search for lodging and place bids, while property owners bid on them. With over 40,000 properties in 140 countries, including many hard to find places. This website was written in PHP, javascript and HTML and uses MySequel database.
www.bigworldtravel.com [not active]
Various Personal Scripts
A collection of Python utilities I’ve built since 2020 to automate chores in my personal Google account. Most run on demand though some are on a regular schedule.
Gmail Bounce Handler (runs daily): Scans Gmail each morning for bounced messages. Any address that failed is marked “Obsolete” on the matching Google Contacts. If the contact has another working email, it drafts (but never sends) a forward of the original message to that address. Every bounce is logged to a Google Sheet.
Google Tasks Archiver: Moves active tasks from my default Google Tasks list into a Google Sheet, then clears the list, leaving other lists untouched.
Contacts Cleanup Tools: A set of scripts that tidy years of accumulated Google Contacts: merging duplicates, organizing emails and labels, cleaning up notes, removing dead links, and sorting people into useful groups.
Contacts Name Match: Paste in a messy list of names and it finds each person in Google Contacts and picks their best email, exporting a CSV. Ambiguous or missing matches are flagged rather than guessed. Read-only.
Apple to Google Contacts Sync (runs weekly): Keeps my Google Contacts up to date with the contacts on my Mac. It updates only what has changed, never overwrites edits made on the Google side, and leaves contacts it didn’t create untouched.
Plus various learning projects: Early exercises from when I was picking up Python: a “20 questions” animal guessing game, a Pygame demo of a ball bouncing inside a spinning hexagon, and a few small practice scripts and notebooks.