I’m helping people make games, at Red Blob Games, by investigating and explaining game algorithms, especially maps (grids, paths, procedural generation) and simulations (transportation, economics, complex systems, AI).

I’m also building interactive explanations. I find that I learn best when combining the language side of my brain (reading, formulas) with the visual side of my brain (illustrations, interaction). I want to learn not only by reading something or watching something, but by playing with it. Right now I’m mostly focused on small, self-contained articles, but I’m also interested in interactive textbooks.

I try to spend one day a week meeting with people working on games, education, big data, or visualization. If you’re in the Silicon Valley area and want to chat, email me!

Places you can find me:

I am not at Stanford anymore. I just have my web pages here because I have an alumni account at Stanford. Thank you, Computer Science Department!

For my past lives, read on:

School

I studied programming language theory (computer science) at Stanford University from 1994-2001. My thesis work was about Obstacl, an object extension to Standard ML. The language supported both object-oriented and functional programming. A key feature was mixins, expressed as functions that transform classes into other classes. For example, if Encrypted is a function on file-like classes, Encrypted(File) and Encrypted(Socket) are both new classes that result from applying the mixin to a base class. The combination of OO and FP allowed both sides to be much simpler than if you had to express all the concepts in only one style.

I also worked on a web proxy server that alters Java applets to make them more safe. Since I have Java applets turned off in my browser, I decided to add some features to this proxy that would be more useful to me: filtering banner advertisements, reporting and blocking cookies, mangling URL redirects, spotting web bugs, removing pop-up windows, and generally reformatting web pages so that I can read them better). I have more about my school-related projects on my other home page.

Hobbies

In the past I worked on games and other software in my free time. I generally like to release the software (including source) for free. While writing games, I research topics that are related to games I’m working on or want to write in the future. I have collected some information about these topics in a web page about programming topics for computer games. I also write tools for games and web pages, and I’ve put up some of my Python libraries, including Yapps (yet another python parser system).

In 1990, I wrote a game called Solar Realms Elite (SRE). It was a multiplayer text game that ran on electronic bulletin board systems (BBSes), and the last version (from 1994) is still available for download. You can also download flavors like Animaniacs SRE. (A “flavor” was a theme/skin that let you change the text and colors.) This game spawned a family of somewhat popular “Solar Realms” games, including SRE’s sequel, Barren Realms Elite (BRE). Curiously, some unrelated door games and BBS systems supported the DOORFILE.SR format I wrote for SRE to get information from the BBS software. In 1996, I lost both my SRE source code and my backup copies, due to a hard disk disaster. Since then, several people have asked if I would release the source. Alas, I would but I can’t! (I also can’t produce registration codes anymore; I recommend getting a crack for the game, like this one.) I am encouraging everyone to write a clone of SRE, and at least eight people have been interested in writing SRE clones.

If you’re interested in cloning SRE, please let me know! I’ve collected some of the notes about SRE’s design. One thing that I agonized over was winning: the original design of SRE allowed the first player to win, rather than the best player. This seems to be an accepted dot-com wisdom. The problem is that this sort of game isn’t necessarily fun.

Believe it or not, someone has written a strange sci-fi story that mentions the characters waiting for their SRE turns! And there are other stories about SRE too.

I also worked on a multithreaded strategy game called SimBlob, but I never completed this project. I wanted to bring environmental simulation (water, soil, air, fire, and so on) to a strategy game, and explore the strategies that would be possible when the player could build dams, fight erosion, deal with deforestation and forest fires, build canals and reservoirs, and provide irrigation systems for farmers. The source code to SimBlob is available, but it’s not actively being developed.

Work

Most of my work has been writing computer software, but this has touched on a wide range of other areas: scientific equipment, data analysis, visualization, geological exploration, simulation of complex systems, economic modeling, maps, “big data”, trend analysis, artificial intelligence, and web software.