Paul Fernhout

Paul Fernhout has been interested in Smalltalk since reading about it in Byte Magazine. He has been working on a semantic network system called Pointrel on-and-off since the early 1980s (available on SourceForge). He and his wife spent more than six person-years during the 1990s developing a garden simulator released under the GPL. His home page is at pdfernhout.net, where he writes a lot about post-scarcity issues.

He has contributed to the GettingToPostScarcity page and the PointrelWiki page.


I've moved a couple of more autobiographical sections from the PointrelWiki page to here.


I've decided to put thoughts on adapting the RDF-like Pointrel System (currently on SourceForge) to the wiki way somehow. I've been working on and off on the Pointrel System, which is based around triples (or triads as I called them), since the early 1980s, and it is still not done. :-) So, what I outline here may never get done either. :-)

Here is some background on me, Pointrel, and my current inspirations.

The Pointrel system may have indirectly helped inspire WordNet (started by my college advisor, George Miller, just as I was graduating). So maybe these thoughts will inspire others to do things beyond what I can do? Search for "On College and Space Habitats" in the OpenVirgle? Google group for more on that WordNet story and my possible minor role in its creation. To be clear, I don't want to put any claim to George's own unique big picture on semantic memory or all his hard work over decades to put WordNet together or all his other connections to people doing AI for decades -- just that I was there as an undergrad annoying George for a couple of years about semantic networks and the Pointrel system at the start, and so that may have indirectly prodded him to make great stuff in his own unique way. :-)

This PointrelWiki page and project focus was itself indirectly inspired by stumbling across Mark Zimmerman's Zhurnaly Wiki site and being impressed by it, even as these ideas have been simmering for a long time. I often do design either by scratching in a notebook or by typing notes into text files related to the Pointrel project on SourceForge, but because this is wiki-ish idea, I thought I'd sort of design in public by putting my thoughts here (and so others can comment). I've long wanted to have an online journal or blog, something as great as what Mark has done as far as content, but being a programmer, I keep getting stuck by wanting the infrastructure to be groundbreakingly innovative, which leaves me instead using email for long notes, adding random comments on other people's blogs, putting in too much content to a Wikipedia article, and generating static web pages from a python script hacked a bit from what my wife put together (left over from formatting a free online book she wrote on narrative and community). Shoemaker's children and programmer's ideas... :-)

Plus my recent GettingToPostScarcity additions are still up, unlike where similar stuff on a was deleted from Wikipedia, so I feel good about adding to C2's wiki at the moment. :-) Hopefully as this relates to programming and wikis and using the wiki pattern (maybe in a new way) it is on-topic enough, despite my other randomness. :-)

I was also saddened to read on the Zhurnaly site about Wiki innovator BoLeuf's passing at such an early age. :-( That can and will no doubt happen to all of us eventually -- short of a medical singularity. And even with singularity, growth is change and so life is always the death of something, as no doubt Ray Kurzweil might learn in a million years or so even if his plan works out to live forever.

I was glad to see BoLeuf's Daynotes site at leuf.net is still accessible in archive.org at least, even if the actual site itself is gone. Maybe that is part of my inspiration too, that I've long wanted peer-to-peer wikis where everyone can keep a copy of all the content, so if one node fails, the other nodes have all the pages (as long as they want them). My first reaction years ago to learning about Wikipedia was, "Everyone needs a copy of this for when that main site gets taken down..." And I was reluctant to add anything to it, wanting to focus on making something better as far as infrastructure.

That also relates to stuff I have written about content having accompanying digital licenses that affirm the content's freedom (like the GPL, BSD, Creative Commons CC-BY-SA, etc.). Whatever we can say about DRM, the default for content in our society is that you can't do much with it without taking on substantial risk unless it has an accompanying license that affirms its freedom. I wrote something about on gnu.misc.discuss on May 20, 2001 in a thread called "License management tools: good, bad, or ugly?". That's one reason I tried to integrate a statement about licensing content in Pointrel transactions. Please consider my comments on the PointrelWiki page as under the CC-BY-SA license (assuming that does not violate C2's guidelines somehow), and I'd appreciate it if I could consider other people's contributions to this page as also under CC-BY-SA so I might republish them elsewhere at some point, like any resulting system's documentation.

Learning about BoLeuf's struggle with cancer also reminds me to think and act more about keeping healthy myself. So, I've already walked 0.74 mile on my treadmill workstation so far while wiki-ing this morning, although I still need to take extra vitamin D today to make up for indoor exercising. I ate some collard and kale "anti-cancer soup" for breakfast. And now I'm trying to be indirectly a bit social here, and be thankful for the wiki idea and c2.com, rather than hunker down in my own text files and notebooks, because being social as well as several other things (humor, nature, spirituality, gratitude, etc.) is overall supposed to be good for your health. (even if face-to-face social might be even better for health.) So, there are a lot of things besides reading programming web pages that programmers can do to try to stay in good programming form...

-- PaulFernhout


Now, the reason I started the PointrelWiki page, some design notes... [But first some more background, it turns out.]

Let me place in mind Ward's comment that "A wiki is the simplest online database that can possibly work".

The Pointrel system at its core is about the idea of triples (or as I called them back then, triads), or in that sense, the simplest sort of database that can possibly work. :-)

I'm not sure exactly how I got the idea, although I was always doing things three times as a kid. I might have skimmed the book Data and Reality by William Kent in my early teens, I'm not sure, because when I came across that book two decades later, stuff in it seemed very similar. I also may have had one incidental interaction with David Gelernter about tuples vs. triples during a time I was a student at SUNY Stony Brook with my arguing for triples and him arguing tuples were more general (but I'm not sure of that, that a hazy memory from three decades ago, kind of reconstructed from the fact our paths overlapped there briefly).

In any case, I've been writing code about triples for a long time. It is sort of like a piano exercise I play over and over again. If I learn a new computer language, one of the first things I do in it is implement something with triples. Now that RDF has come along a decade or so ago, obviously what I do is in a social sense obsolete. But I still plug along at it anyway, playing with these ideas. I've also been realizing more and more, especially after seeing a video about Mylyn for Eclipse, that triples are in a sense "semantic", but lists or tuples are in a sense "narrative", and we need both in real systems (and you can use either one to represent the other in various ways, like Smalltalk represents a semantic object as a tuple of pointers in memory).

The main idea of a triple (as I see it) is that you have one pointer related to another pointer (why I called it POINTer...RELation, coining that term around 1983 or so, after sitting through a talk on Lisp, which stood for LISt Processing, and thinking I cared more about relations than lists). I like to think about it simple as A B C. There is an A pointer that a B pointer relates to a C pointer. Then I create some way that you can find various relations associatively, so all the Cs that go with an A B pair. Or all the Bs that go between a specific A and a specific B. Or all the Bs or Bs and Cs that go with an A. And so on. In practice, the main thing looked at is the same as in most object-oriented programming, you have an A as an object, and have an instance variable or method name B, and you just want the current value, C. Still, one aspect of the Pointrel System from early on was that you would just keep adding to the database as opposed to overwriting or deleting stuff. So, when you set a value, you are adding a new triple.

Consider a wiki-related example. Say you add an A B C triple of "Page-10 has-contents Foo". Then later you might later add "Page-10 has-contents Bar". When you look up "Page-10 contents" as A B, you could get both Bar and Foo, presumably in reverse order than you added them, so you have to search a bit harder for older stuff. I've implemented this with linked list and with collections and so on. It sounded more impressive back in the days when C was a new thing and I still was coding in Forth and Assembler. :-) But none-the-less, it is simple.

Now, there are all sorts of complexities one can add to this. One can add timestamps for when things are added. One could connections to user IDs. One could group additions into transactions. One could add a context field or a "space". One could decide to use data instead of pointers. One could add a type field for every item if it was data (so, "Wiki-markup" as a type and some wiki text as the contents). I've implemented lots of variations on all this. It is sort of a general idea.

The late Bill Kent (in Data and Reality) talks about using these sorts of triples to build bigger relations. He had a sketch of a related information processing system in this book. He talked about relations though, not objects, where essentially a relation was built from triples but was a lot like a SQL table (or row in a well defined table). I corresponded a bit with him, but he had not gone much beyond that sketch. He sort of had a nervous breakdown he told me and just moved into technical writing. These sorts of abstractions about Data and Reality (or that way of thinking) are definitely what can lead one to a philosophical crisis an ones mind soars into abstractions and leaves the dirty complex Earth behind. :-) Although I'd suggest things like spending a lot of time indoors at computers is not good for ones physical or mental health either (though, as above, one can take some steps to ameliorate some of the worst of that with treadmill workstations and vitamin D supplements) as well as try do other things to keep up healthy roots. In later life, Bill Kent seemed to focus on more earthy things like hiking outdoors or nature photography or essays about personal experiences. His children still keep up his website at bkent.net where there are excerpts from his writing and a lot of his photos.

IBM (where Bill Kent worked when he wrote the book) and other companies back in the 1970s and 1980s did various work with triples. IBM had a storage manager that used something like them. Medical knowledge was encoded in them too. But SQL and Smalltalk and C++ etce really took over, because there is a tension between flexibility and floppiness. Triples (or relations) can be very flexible, but SQL tables or Smalltalk objects or C++ objects are better documented as far as expectations. If you are building a well-defined system, especially one that people are going to use to handle digital money of some sort, people tend to want boring and predictable. But, that is not necessarily as true in life in general, where a lot of adhoc stuff comes up, and where, given extreme programming, one may be constantly refactoring things for clarity. There is some middle ground, like XML schemas that define typical ways to put things together to give some more structure or validation to otherwise potentially flabby overly-flexible structures. There are wikis that support different types of pages too, as a hybrid (Zope is a bit like this, too).

Anyway, none of the above is really what I started this page to write about, so let me try to move back to the design.

(Up to 1.39 miles and 249 calories burned on my treadmill workstation, some at incline and now up to 0.8 mph. Squidoo has a good page on this called: "Walking While Working: How to Take Your Cubicle from 'Fattening Pen' to 'Fitness Center'")

-- PaulFernhout


Note that these changes attributed to me on Feb 11th, 2011 were not made by me:

# IsDot . . . . . . PaulFernhout

# PathLanguage . . . . . . PaulFernhout

# UnLambdaLanguage . . . . . . PaulFernhout

Fortunately they appear to be typo fixes by someone else. Not sure how that happened, whether it is a bug in the system or some sort of intentional spoof that makes no sense to me? So, I think it is possibly a bug.

It's an intentional spoof by GrammarVandal. The edits have been reverted. I recommend you not use a UserName cookie, as that will avoid the possibility that you make an edit, then GrammarVandal amends your edit by spoofing your UserName, and then the combined edit gets reverted by the SharkBot. -- DaveVoorhis

Dave - Thanks; I was just using a UserName cookie as it seemed suggested by the introductory material. I have hopefully turned that off with this edit. It is unfortunate to see a wiki struggling with that kind of issue, but I guess you have to take the bad with the good. More motivation for me to work hard on the distributed PointrelWiki idea, sadly, assuming in the end anything technical can fix that sort of issue (which probably it may not). Neat stuff about the RelProject btw which could be connected to the PointrelWiki idea perhaps? I've though sometimes about relational languages on and off. I've even implemented a (very small and rudimentary) Smalltalk environment using triples. I guess that if GrammarVandal brings people together, he/she/it/etc. can't be all bad. :-) -- PaulFernhout


Hi, Paul. Thanks for your note about nutrition. My doctor discovered tremendous vitamin D deficiency a couple years ago, and put me on prescription vitamins. I don't know whether they do anything to my mood, but at least my vitamin levels are better. :-) -- ElizabethWiethoff

Glad it helped.


CategoryHomePage


EditText of this page (last edited March 10, 2011) or FindPage with title or text search