Dissertation: Practical Code Optimization by Transformational Attribute Grammars Applied to Low-Level Intermediate code Trees
* Note: Computer&Information SCIENCE at UCSC should not be confused with "Info SYSTEMS" at lesser institutions
1974-1985, 1989-1993 Security software development
This being the security industry, I worked under a Non-Disclosure Agreements, so I cannot say much about what I did, except perhaps that I was responsible for the communications and control and embedded system software that made the company a leader in the industry. See also "Industry Consulting" in the Notes.1976 Implemented Tiny Basic (6800/6502/1802/Z8)
TinyBasic was invented by Dennis Allison (then at Stanford) as a small program that could fit into the limited memory of the new hobby microprocessor computers. Although not the first, my implementation became the most famous. There are more details and downloads on the TinyBasic page of my website.1977-1999 IEEE MSC: first draft editor 754, chair 694/695
My fame with TinyBasic, plus a certain amount of computer populism ("Computer power to the people!" was not my line, but I lived it), got me invited to participate in the Microprocessor Standards Committee, which created numerous industry standards, including the floating-point arithmetic standard now used in every new computer made. I had my own (homebrew) computer at the time, so I was responsible for the first draft of that standard.1982 Implemented "Grand Slam Tennis" video game for Emerson Arcadia 2001 console
Games have always been a part of the computer culture. Although my particular experience is somewhat dated, the basic principles of game design do not change. Some of these principles are described in my memoir of the Grand Slam Tennis game I did.1985-1988 Asst Prof CompSci, Kansas State U, mostly teaching Compiler Design
TinyBasic convinced me that there were theoretical issues here that I did not control, so I went back for a PhD, with a dissertation in compiler optimization. My course load at K-State was mostly in compilers and computer architecture, but I did not succeed at the primary function of most major universities, which is obtaining government research grants. See also "KSU" in the Notes.1988 Implemented CompileIt! (HyperTalk compiler), sold by Royal Software 1-800-888-7667 (obs)
My computer specialty being compilers, it occurred to me that any programming language that is "Turing complete" can be used to write a compiler. When Bill Atkinson said of his HyperCard rapid application development tool that there would never be a compiler for it, I set out to prove him wrong, not only by writing a HyperCard compiler, but also doing it in the native HyperCard programming language. It became a 5-star commercial product until Apple killed HyperCard.1992 (w/J.Peters) The Art of Compiler Design Prentice Hall, ISBN 0-13-048190-4
This book is an expansion of my dissertation. Additional information, with Downloads is available on my website. James Peters was my student at K-State, and encouraged me to publish the technology. He also had connections in the textbook industry.1995 Implemented PowerFPU (floating point emulator), sold by John Neil & Assoc. (obs)
My knowledge of compiler technology put me in a unique position to implement a dynamic recompiler to accelerate the 68K emulator Apple sold in their PowerPC computers. Unfortunately, the exaggerated claims made for RISC (Reduced Instruction Set) computers like the PPC could not be sustained, so while small programs ran 3x faster after conversion in my tool, large programs actually ran slower than the emulated version. The "RISC Penalty" was solved by the hardware vendors with much larger cache memories, and eventually by the industry by abandonning RISC altogether.1996-2002 Implemented machine translation system BibleTrans on MacOS
In the process, I learned how the Apple emulator worked, and was able to implement (originally as part of my recompiler) a stand-alone floating-point math package, which enabled people to use badly written legacy software in emulation on the newer computers. It was a popular commercial third-party accessory until Apple abandonned the technology and migrated to the Intel x86 processor with no provision for legacy code.
It occurred to me that I could use the linguistic theories in compiler technology to implement natural language translation with better quality than is possible with word-substitution methods like Google. There is more information on the BibleTrans website than anybody would ever want to read. I presented a seminar at Stanford, ee380, View video, and gave a technical Paper presented at Bible Translation 2001. Unfortunately my funds ran out, and I had to look elsewhere for gainful employment.2002-2004 Assoc.Prof.Computer & Info Science, SouthWest Baptist University
(List of Courses Taught) "Mistakes were made" (see explanation in my blog).2003-2004 Implemented Bio-Informatics software for genetic screening, GeneScreen
There is additional information on the GeneScreen web page.2005-2014 Ported BibleTrans project to PC
You can download a working version and run it on your own computer. The code and tools are now "open source" in case interest in it outlives my ability to maintain it.2004+ Implementing open-source Mac-like OS to replace the outstanding product Apple killed
This is probably bigger than I can reasonably achieve in my lifetime. I set it aside to work on BibleTrans. I might change course and build a version of it on the Linux kernel, if I have time and don't need to be looking for income.2009-2010 Implemented a database translation tool, 4th Dimension -> C++
The client who was paying for this changed direction before it completed. However, the effort gave me a good (deep) understanding of various relational database systems and their supporting languages.2014+ Learning mobile (Android) app development...
I thought of an app that would convince me to carry a smart phone or PDA. As part of this process, I built my own Android emulator with better (or at least more convenient, and faster for me) debugging facilities than the IDE Google offers. I will still do the final build and testing in their tool, but I can get there quicker. I still have a lot of content development to do before I can say much about what I have. This is taking longer than I expected, so...2017-2019 Mentoring NorthWest Advanced Programming Workshop Years 2+3 (see Technical Topics)
An old friend from embedded systems days surprised me with a call. He's running this program for high school students, where they "have fun" learning to be industry leaders. He liked some of my ideas, so I'm taking a little time out of other projects to help the kids have fun doing eye-popping bleeding-edge projects, like an autonomous car project. The director was unable to get it funded, so we morphed it to...2020+ Teaching Beginning Programming at high school and late middle school level (see "You Already Know How")
I taught beginning programming to college freshmen, so I thought I had some ideas how to do it better. Mostly this turned out to be a learn-by-doing exercise, the way most geeks learn programming. Getting under-represented kids involved is different (see my still-evolving Pedagogical Philosophy).
Computer languages are my professional specialty. Besides inventing a few of my own, I have implemented compilers and/or interpreters of several others (which takes a deep understanding of those languages), and coded in at least a dozen others, most of them now dead. I also have done a lot of work with embeded systems (operating system and application code in one monolithic program) in small control environments. Basically, I wrote the OS in those cases, because the hardware was too small to support huge commercial products like Linux.
See also: employment history notes
Somewhat more permanent address, with slower turn-around:
San Jose, CA 95150
This document is http://www.IttyBittyComputers.com/Bio.html
Rev. 2021 August 13