I started programming in tenth grade, back in 1972
when computers were awe-inspiring multi-million-dollar behemoths locked in
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:
I have pleasant memories of long hours spent in a darkened room
lit only by the green glow of a 1200 baud terminal,
exploring the twisty little passages of the original "advent"
I want my own children to develop the skills needed to reach the goal
of that game:
logic, patience, persistence, cleverness, literacy, organization, and even teamwork.
One of my pet peeves is domain-specific languages.
We've got more than enough perfectly good computer languages already
(I lost count of how many I've used back
and I don't care to waste my time learning more languages
that are gratuitously different but offer nothing really new.
Instead I'd like to show that intelligent use of what we already
have is actually a pretty good idea.
My wife and I want our children to be bilingual, and
it seemed that playing Interactive Fiction would be a good way to encourage
reading in a second language.
Even more interesting was the idea that a good authoring system would
allow children to write their own Interactive Fiction as well,
which would give them great practice exercising their skills in
logic and written language, not to mention creativity and imagination.
Last but not least,
when my kids started bilingual pre-kindergarten the realization hit home
that if I didn't
get off my duff and get to work soon, they'd be grown and fluent
in two languages before any of my
grandiose ideas ever came to fruition.
An authoring system for
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
- Michael Kenniston
That was a bald-faced lie. Geeks like me don't really lose count of stuff like that:
BASIC, FORTRAN (both II and IV),
BLISS-10, BAL-360, SNOBOL, Pascal,
68K assembler, ksh/bash, M4,
Java, Erlang, PostScript, Visual Basic, C#, Python,
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.
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."
I'm tempted to write a book someday just so I can use that as the title.
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.
If these tree-structured footnotes are bending your brain,
you haven't spent enough time hanging out with propeller heads.
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.
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."
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.
Pascal was my first programming language
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.
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.
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.
I started using C++ at Bell Labs, back when everyone had to
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.
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.
JIFFEE and JIFFEEgames.com copyright © 2007-2010 by Michael S. Kenniston. All rights reserved. This page was last updated on 2010-01-17.