About Me

Portrait of a bald guy with a beard. I started programming in tenth grade, back in 1972 when computers were awe-inspiring multi-million-dollar behemoths locked in air-conditioned rooms, and the bug infected me so badly that I never stopped. (My fate was probably sealed the night I had a dream in BASIC.) Since I date back to the days of punch cards and paper tape (anybody remember Algol?), feel free to view this whole project as a demonstration that old dogs can learn new tricks. I am slowing down a bit - in the last 4 years I've only learned 2 new computer languages - but perhaps that's because I'm coming to value quality over quantity and novelty.

Back when the Internet was called the Arpanet, it was so small that you could literally publish a hard-copy directory (like a phone book) of everybody on it. In fact they did publish such a book, and I'm in it — that's how long I've been "on the net," and that's why it's no accident that the the design of JIFFEE is very Internet-centric.

By trade I'm now a Silicon Valley software engineer with degrees in mathematics and computer science, but I come from a family of educators and have done a fair bit of teaching myself from time to time. These two threads converge in JIFFEE, and I hope that the combination of the two types of experience will improve the quality of the result.

The JIFFEE system is my personal pet project, developed in large part to give my own children a way to play with computers that will lead to productive mental growth instead of brain rot. As someone who is both a computer enthusiast and a computer professional, I saw the amazing potential that digital technology has for helping our children develop the skills they will need for a successful and satisfying life in the 21st century. At the same time, I was extremely disappointed to see how much of that potential is currently being wasted and even perverted on video games that glorify violence. We've always banned those from our home, but I'm still enough of an idealist to believe that computers and computer games can make a significant positive contribution to a child's healthy development. (Our home has no cable TV, no satellite dish, no wide-screen plasma TV, no X-Box, no PlayStation, and no Wii — but my credentials as a Luddite were revoked when I put in DSL, a network switch, CAT5e to the backyard, a wireless router, and more browser-enabled devices than there are people to use them.)

About the System

A number of ideas all came together to give birth to JIFFEE:

These ideas led to the core conception of JIFFEE:
An authoring system for Interactive Fiction that is based on JavaScript, is built from the ground up with multi-lingual capability, and is simple enough for kids to use.
The other parts of JIFFEE are just bells and whistles - although my experience in industry has taught me that those bells and whistles often make the difference between success and failure for a product, so I've paid a lot of attention to the details.

Because I want JIFFEE to help as many people as possible, it is free for anyone to use and I never expect to see a dime from it. I do, however, indulge in the wildly improbable fantasy that educators and fans of Interactive Fiction will find JIFFEE so useful that fame and acclaim will someday be heaped upon me. :-)

Finally, the usual boring disclaimer: JIFFEE is completely separate from my "day job" that pays the bills, so nothing in JIFFEE or on this website should be interpreted as being in any way related to or supported by my employer. This is my hobby, and everything expressed here is purely my own personal opinion.

- Michael Kenniston

[1] That was a bald-faced lie. Geeks like me don't really lose count of stuff like that: BASIC, FORTRAN (both II[5] and IV), PL/I[6], Algol, Lisp[7], COBOL[2], BLISS-10, BAL-360, SNOBOL, Pascal[8], PDP-10 assembler[9], C, Simula[10], 68K assembler, ksh/bash, M4[3], Perl, Prolog, C++[11], Icon, Java, Erlang, PostScript, Visual Basic, C#, Python, CLIPS[12], JavaScript. That's counting only languages I've actually written some working code in, not things like APL and OCaml that I've just read about. And as Monty Python would say, TECO, IDL, SQL, and HTML are right out.
[2] My proudest accomplishment in COBOL was the day I wrote a program so twisted that the compiler aborted with the message "Catastrophe in phase E."[4] I'm tempted to write a book someday just so I can use that as the title.
[3] One day I told one of my professors, Vaughan Pratt, that I was going to use M4 to solve some particular problem. I still remember him smiling and telling me that I'd regret it but that I should do it anyway because I'd learn something. He was correct on both counts.
[4] If these tree-structured footnotes are bending your brain, you haven't spent enough time hanging out with propeller heads.
[5] I'm not that old; FORTRAN II was already ancient history when I first saw it, but I was teaching in a High School whose only computer was an IBM 1620, a machine so old it did its internal arithmetic in base ten and read its multiplication table from a deck of punched cards. This was my rude introduction to the sort of funding that some districts provide to their public schools.
[6] PL/1 was the first language I learned from a reference manual. As I recall, it wasn't until at least the third cover-to-cover reading that I even started to understand what any of the words meant. After months of effort I did get a serious program working, and that program later helped me to understand the origins of the aphorism "When I wrote it only God and I understood it. Now only One of us does."
[7] I went through a crash course in LISP without ever grasping the conceptual basis behind it. Then, many weeks later, I was walking down the street one day and out of nowhere suddenly realized "Oh, that's what LISP is all about!" At that point it also became clear how totally putrid my programs had been, and it was truly amazing that the prof had even given me credit for completing the homework.
[8] Pascal was my first programming language without goto statements. I didn't get that at first, either, and I found it amusing that Professor Alpert was so enthusiastic about this "structured programming" business. We've come a long way, baby.
[9] I ran with some real diehards for a while. Someone in our group once asked Al Johannesen, the computer center director, what the fastest no-op instruction was on a PDP-10. He told us, but then, seeing the eager looks on all the faces around him, immediately pointed out that the cycles required to run the editor to change our programs to use it would swamp any conceivable savings no matter how often we ran them. We were so bummed.
[10] Years after completing my graduate work, I was cleaning out the basement one day and found a program listing in Simula. Not only did I not recall having written the program, I had no recollection of ever even knowing the language, but the comments in the listing said I was the author (and the writing looked like my style) so I must have just forgotten about it.
[11] I started using C++ at Bell Labs, back when everyone had to use cfront because no native compilers existed yet, and when we ported a few thousand lines of existing C code we had to hack the variable names with CPP macros to avoid overflowing the identifier string buffers.
[12] If CLIPS had been implemented as a C++ or Java library I probably would have really liked it. Unfortunately it was implemented as a stand-alone language and my job required me to use it, thus reinforcing my distaste for any specialized language whose designer had the audacity to think he could predict everything you'll need to do.