# My hypermedia history
So, I actually have a long history of (mostly failed or unsatisfying)
hypermedia-adjacent or Alan Kay-ish projects, starting way back in…
* * *
### My hypermedia history
So, I actually have a long history of (mostly failed or unsatisfying)
hypermedia-adjacent or Alan Kay-ish projects, starting way back in the
sourceforge days.
First big one was called Sakura Hypermedia Desktop, and was a TCL/TK thing
that you’d configure as your root window. You could rewrite parts of the code
from a popup command line and persist those changes, and I had widgets.
Ultimately, lack of proper multithreading and an inability to overlap widgets
killed my plans for this.
(I could redo it today and make it way better (even sticking to TK) just by
writing it in python & using shit I know how to do now. I was much less of a
competent programmer back then.
Also TCL is almost worse than Perl in terms of how easy it is to write tiny
powerful & totally unmaintainable code, and I made full use of that back then,
because I had never worked on a big project before.
The site is still up:
All the code probably still works as well as it ever did. But, I was writing
this in high school.
(The Sakura package contains just the desktop thing. Pak is the hypermedia
archive tool. Papyrus is a never-functional text editor and Enki is a never-
functional Pak navigator based on a 3d space of overlapping Pak-format cards.)
(Sakura & Pak are probably the only things worth actually looking at here.)
At one time I had all sorts of experimental integration with (shitty) speech
synthesis and speech recognition tools in this too, though they were never
actually usable & I don’t think that code ever got checked in anywhere or
showed up in tarballs.
At the time I was obsessed with hypermedia demos like Knowledge Navigator &
Starfire, and with descriptions by Alan Kay & Ted Nelson, but hadn’t seen this
stuff because I had dialup and was using DOS & a c. 1998 release of Linux.)
The second big thing was a storage format called PAK, which stored bytestreams
and metadata, and which had as part of the metadata links between parts of
these bytestreams. Text was best-supported, but I had facilities to represent
parts of videos (in time and space) as links, & wanted to create something
like DVD-style menus. Lack of compatibility with third party tools & heavy use
of python’s pickle format limited this but it fundamentally worked, and
reliably, unlike the rest of Sakura.
Later, I discovered actual Xanadu documentation and wrote a whole bunch of
attempted implementations of Xanadu-inspired stuff.
The first one was Project NAMCUB, which was an attempt to implement
xu88/udanax-green style enfilades in Prolog. It was later ported to Erlang,
which also didn’t work.
The second was Project XANA, an OS in D that had a zigzag-inspired UI and an
xu88-inspired filesystem. It worked but was horribly slow, & is mostly notable
for being the first or second OS written in D.
Later, I took some code from Project XANA to implement iX, an OS in C that had
a UI much closer to original ZigZag & features much closer as well. This was
usable and basically stable, but I had misunderstood how certain ZigZag
facilities were supposed to work and why.
iX is the project that got me noticed by Ted Nelson and from 2011 to 2016 all
my hypertext work was for Ted and kept secret :c
But, between finishing iX & meeting Ted I worked on a couple other ZZ
implementations.
The best of these was dimscape (which I helped with but only a little).
Dimscape supports playing videos & displaying images as well as regular text-
based cells. There’s a version of Dimscape that properly implements all ZZ
keybindings and features, but it has Xanadu-owned code grafted on so I can’t
actually post it, but the old Dimscape is great & worth using.
But, I also built a handheld thing with an arduino that ran iX-but-worse.
Now, this brings us basically to the present. I’ve got an independent
implementation of a proper ZigZag backend, a nice gopher client, a not-yet-
working hypermedia viewer & editor using ipfs, an abandoned attempt at a
hypermedia viewer/editor with a web-based front-end (meant as an alternative
to Medium, but also as a trojan horse to introduce people to real
transclusion), and I think I might have a curses-based zigzag frontend half-
implemented somewhere.
When I say that I’ve “achieved all my dreams and realized they’re crap” in
part what I mean is that all the stuff I’m into now in terms of what I like to
implement is stuff that I was into at age 12. Hypermedia, distributed
computing, novel programming languages and UI systems, planner-based reasoning
systems, and prose generation were all also my jam in middle school & high
school, even though I didn’t have the skills to articulate that stuff.
(I’ve lost a couple interests since then. I no longer really obsess over
robots, strong AI, or neural nets.)
And, I’ve implemented stuff that’s pretty close to what I wanted back then but
found it less satisfying than I expected.
I guess that’s life.
So pro tip for all you young people:
Never have goals. If you achieve them you will realize they were crap all
along, and if you don’t then you’ll be stressed out about failing.
I wrote a lot of stuff, but it was over a really enormous amount of time.
Like, the last time I touched Sakura was apparently 2005, and I worked on that
for years.
On the other hand, I’d like to believe that my experience demonstrates that
the fruit is so low-hanging in this area that an incompetent kid can implement
genuinely interesting things in his free time. Basically, the bar is low
because very few people have actually worked on this seriously since the late
80s, and Alan Kay is 3 of them.
The biggest stumbling block I’ve run into is the difficulty of using third
party libraries — particularly third-party UI libraries. Compatibility with
existing standards is a problem for the same reason. There are a lot of
assumptions that proper hypermedia violates.
The second biggest stumbling block is that trying to keep cross-platform &
avoid large complicated dependencies tends to mean sticking with old, limited
libraries. (For instance, TK is nice to use and provides most of what I want,
but it doesn’t support alpha or overlapping widgets, even on canvases.)
I still believe pretty strongly that the wonderful hypermedia future shown in
the Starfire & Knowledge Navigator demos — the future that people like Alan
Kay and Ted Nelson are still fighting for, and that Jef Raskin and Doug
Engelbart didn’t live to see — is possible. There’s no technical reason we
can’t have those systems — they were implemented on a small scale over and
over. There are some new faces working on this stuff too, but progress feels
much slower than it did in the 90s.
I’m starting to think, however, that existing incentive structures discourage
people from making the kind of novel and interesting UI descisions that make
it possible to build a bridge from novice to expert.
At the very least, those of us interested in real hypertext and real
hypermedia (as opposed to the web) will need to work together to create
utility libraries that are flexible enough to support all our disparate
visions of possible futures but specific enough that using them isn’t a turing
tar-pit.
(Adapted from a thread on mastodon:
)
By [John Ohno](https://medium.com/@enkiv2) on [December 31,
2017](https://medium.com/p/11d576ce6dbb).
[Canonical link](https://medium.com/@enkiv2/my-hypermedia-
history-11d576ce6dbb)
Exported from [Medium](https://medium.com) on September 18, 2020.