Bill Foote

Vancouver, Washington

E-mail: billf at jovial dot com
Blogs: https://pc.jovial.com/
Github: https://github.com/zathras/
pub.dev: https://pub.dev/.../jovial.com/
Google Play: https://play.google.com/...Jovial...

I've been a software enginner/computer programmer since a little before the days of the Apple ][. I think the first program I wrote that was semi-widely distributed was “Oscarlocator,” which I wrote around 1978 to track the OSCAR 7 satellite. I joined JavaSoft/Sun Microsystems, initially on the HotJava Browser project. I was there for over a decade, and helped create parts of the Java platform, especially on consumer devices. I made the first heap dump facility and analysis tool for Java, invented what became J2ME's inter-xlet communications, and I was a big part of Java's adoption in Blu-ray. I've also worked as a software engineer at Disney, Google, and at Celtis Technologies in France.

A technical resume is available here


* * *
Kay Foote Ed Foote

My parents were both computer programmers, and they both used the JOVIAL computer language. My mother started programming in 1951 on the SEAC computer. In 1961 she used JOVIAL for an experimental air traffic control system at SDC. My father started programming in 1955. In 1959 he joined the team that created JOVIAL at SDC. He went on to work on one of the first timesharing systems, JTS (Jovial Time Sharing).

You can read more about JOVIAL and my parents' pioneering computer work here.



I joined the Peace Corps in June 2017, and was sent to Burkina Faso, in west Africa. I was all set to volunteer as a middle school physics/chemistry teacher for two years. Unfortunately, five weeks in, a motorcycle hit me when I was on my bicycle, and gave me a rather serious broken leg. Because there was nerve damage, the total recovery time was about a year, so I was medically separated. After recovery, I re-joined, and went to Senegal in September 2019. Sadly, acid reflux forced me to come home soon after arrival; the doctor there described the Senegalese diet as "one big acid reflux party." Sigh. You can see more about both in my blogs, at https://pc.jovial.com/.


I was a volunteer instructor with Girls Who Code, teaching Python, Javascript, HTML and CSS to middle-school girls in Irvine. I arrange guest speakers to serve as female role models, and I try to give some insights about encapsulation, software design, and software as a career. See the final projects at https://code-from-girls.jovial.com.


I volunteered with Video the Vote in 2006, using the power of video and YouTube to document any voting irregularities there might be in the 2006 mid-term elections. I was even interviewed by CNN in connection with this! Here's a writeup of my day as a “citizen-journalist.”


I've done work with Project Hope in Nablus, Palestine. I started with teaching in refugee camps over the summer of 2003. In 2006, I started making videos, under the “moomtastic video” project.


*                    In April 2018, I started as a Computer Science lecturer at Cal Poly, San Luis Obispo.
*                    I taught introductory C programming at Santa Monica College for the Winter Term, 2018. It was a class that's normally 15 weeks, compressed into a six-week term. In addition, teaching C an pointers in an intro-level class is not for the faint of heart. The students were fantastic, and I very much enjoyed teaching. I moved on from SMC when I got a full-time offer from Cal Poly, and so I could take a month off for what is planned to be my final leg surgery (see Peace Corps, below).

Public-Domain Software

*   I wrote the Java chapters of the HD Cookbook. Architect of the framework introduced in that book: GRIN, a framework to help manage and animate graphical elements in Blu-ray Java. Started the hdcookbook open-source community. Check out the other software in the HD Cookbook Project.
*          JRPN, a programmer's calculator inspired by the HP 16C "Computer Scientist" calculator. It's written in Dart/Flutter, and available for Android and the popular desktop platforms. It works fine on iOS, too. Full source is available. Details at https://jrpn.jovial.com/.
*          jovial_svg, a Flutter library for rendering Scalable Vector Graphics files. It includes a compiler to convert SVG files to a quicker-loading binary format. I've published it to pub.dev.
*          CorpsBlog, a static site generator. I wrote this to generate my Peace Corps blog, https://pc.jovial.com/. It's written in Kotlin, and is optimized around maintaining a blog with infrequent access to the itnernet, like you'd get if you lived in a mud hut and had to ride your bicycle several miles to get an internet connection. It might be overkill, but I follow the computer programmer's credo, “never spend an hour doing something you could spend a day automating.”
*          Simples, the Simple HTTP Server. This is an extremely simple, no-configuration http server written in Kotlin that's designed to be invoked from the command line. I find it useful when I have files to transfer between local computers, and a USB stick is inconvenient and I don't want to set up file sharing.
* * Heap Analysis Tool Prototype (HAT). This is a prototype tool to explore object topologies and find unintentional object retention problems in Java programs. It was eventually extended and incorporated into JDK 1.6.

At JavaSoft, I invented the Java heap dump, which was originally incorporated into JDK 1.2. I called it the "core dump for the new millennium."

*          TASS on dev.java.net, a tool for checking conformance to only the APIs present in a given platform.

And, of course, see also my my Github page.

In The Media

As mentioned under volunteering, I started the Moomtastic Videos website. It includes a short video about Project Hope called “Messengers of Hope”. I also had about 23 seconds of fame in a CNN Video about Video the Vote.
This being a vanity website, I guess I'll also mention the time I was on ESPN SportsZone, and my appearance on the front page of UCLA's Daily Bruin Newspaper, in a story about some street theater put on by UCLA-SJP.

AFI Digital Content Lab/eTV Workshop

In 2002, I participated in the American Film Institute's enhanced TV workshop, and had a lot of fun making chocolate go splat over an episode of I Love Lucy. In 2004, I worked with the TV 411 adult literacy project, which was very rewarding.

DVB World Articles

DVB World, June 18 2006 [pdf], “GEM Glitters in the Heart”, page 4. This is an article on DVB-MHP and DVB-GEM's place in the Blu-Ray Disc specification.
DVB World, March 5, 2003 [pdf], “DVB'S GEM, Bringing MHP's sparkle to the US and beyond”, page 4. This is an article from the early days of GEM, when it was in the process of being adopted for US Cable and in Japan.

JavaOne talks

JavaOne 2010: Systems Architecture is not Network Topology: Connecting the Consumer Device
JavaOne 2009: Creating Games for Blu-ray Disc in BD-Java
JavaOne 2008: Java Technology for Blu-ray and TV: Creating your own Blu-ray Java Discs
JavaOne 2005: Java Technology Goes to the Movies: Java Technology in Next-Generation Optical Disc Formats
JavaOne 2000: Java TV API technical overview. I spoke about the application of Java TV technology in interactive television.
JavaOne 1999, update on issues related to Java and real-time.
JavaOne 1999, hosted a BoF session on Resource Management on Small Devices
JavaOne 1998: Reducing Memory Usage of Java Applications: Lessons from the Battlefield. This was a talk about memory usage of Java programs, and how to eliminate object retention problems. It introduced the HAT tool, mentioned above.
JavaOne 1997: “HotJava Browser.” I spoke about customizing the browser, custom protocol handlers, and using RMI.

Older Articles and Other Works

My 1989 Masters Thesis from UC Berkeley, Simulation of Anisotropic Crystal Etching. From my perspective, it was really about 3D geometrical modeling and 3D computer graphics. A local copy is available here.
JavaWorld article, 1998: Singletons vs. class (un)loading. I participated in writing this article in JavaWorld. By the way, the JLS clarification about class unloading can be found here.
JavaWorld article, 1996: Integrating Java with C++. This article investigates integrating C++ code into a Java application. If that link ever goes away, I kept the first draft here. The article is pretty obsolete now... It's based on JDK 1.0.2, before JNI existed.
Slot Car Applet. This is s a silly Java applet that I wrote as part of an OO class I taught. It comes with some pretty complete design documentation, and a discussion of how it fit into the class.
CASE tool prototype. I wrote a prototype for a CASE tool called “flower.” It works, and was a nice exercise in writing a program in Eiffel that uses Tcl/Tk for the GUI.
When Sun discontinued personal pages at JavaSoft, I kept my old JavaSoft homepage. It's pretty out of date now, though it does have a dashing picture of me with Hello Kitty, at Sanrio Puroland near Tokyo.
Valid HTML 4.01 Transitional *