Release Notes – January 12th, 2013

This latest release of the Exxis Semantic Web Browser has been a long time in the making, and that’s because it has been entirely rewritten for speed and flexibility. On the front end, all HTML and Javascript code has been cleaned up and optimized. On the back end (i.e. under the hood), a massive rewrite of the architecture makes the core software more powerful than ever.

Now that I have reached a major milestone on the software side of the application, I will now turn my attention to the visualization of the semantic information presented, to make it much more intuitive. Lots of exciting developments are forthcoming, stay tuned!

  • Lightning-fast searches!: I managed to get search times down from over 30 seconds to less than 200 milliseconds, quite the dramatic improvement! This is fast enough for instant search! Try it! Just type a term you’d like to know more about, and without even pressing return, you’ll get a list of search results.
  • Instant Search

  • Complete architectural redesign: Pretty much everything you see has been redesigned, as well as everything under the hood. This release represents a major architectural overhaul of the core software, to support plugins. This means that it should be much easier for me and others to develop new visualizations and reasoners for semantic information. In other words, this release represents the beginning of the Exxis Semantic platform! Stay tuned!
  • Back button works!: This is surprisingly tricky to get right, in the world of web applications, but the back and forward browser buttons should work as expected.
  • No support for Internet Explorer: I’ve decided to drop support for Internet Explorer, as version 8 is very lacking in its HTML5 support. You’ll get a much better experience when viewing the site on Firefox or Chrome.

Release Notes – October 11th, 2012

This post is used to outline the changes brought to the October 11th, 2012 release of the Exxis Semantic Web Browser. Try it now, and be sure to leave feedback!

  • No more pizza!: I have done away with the basic Pizza ontology that I was using for testing, and have replaced it with the OpenCyc knowledgebase. The browser can now display information on more diverse topics such as, for example, Princeton University, the Montreal Canadiens, or, if you still prefer, pizza.
  • Search: Since the general-knowledge dataset provided by OpenCyc is much larger than the pizza dataset, it no longer made sense to list every object in the left sidebar. A search interface replaced the object listing.
  • Asynchronous AJAX: The presentation layer is now asynchronously connected to the view layer.
  • New display: I have made lots of changes to the overall user experience, with many more changes to come.
  • Separation of data and object attributes: Data attributes (e.g. strings, integers) have been moved out of the graph, into the “Properties” pane in the sidebar. The graph now only displays object properties.

Release Notes – September 21st, 2012

This post is used to outline the changes brought to the September 21st, 2012 release of the Exxis Semantic Web Browser. Try it now, and be sure to leave feedback!

  • Dynamic Navigation!: Nodes can now be clicked, to expand them and re-focus the graph. When clicking on a node, its label will first turn orange, to indicate that it is loading. Once the node has loaded, the label will turn green, and any additional nodes will be added to the graph. This gives way to a much more dynamic way to browse the graph. Try, for instance, viewing a node like DomainConcept, and clicking on nodes to explore the dataset from there.

Release Notes – September 9th, 2012

This post is used to outline the changes brought to the September 9th, 2012 release of the Exxis Semantic Web Browser. Try it now, and be sure to leave feedback!

  • Many small bugfixes: I am constantly finding and correcting software bugs here-and-there. Last week, there were 2 server outages related to odd problems with both the MySQL and RDF libraries I’m using. In this release, I have found two such bugs and implemented workarounds.
  • Node clustering: Nodes are now clustered when they share the same predicate, to simplify the visual display by reducing the number of lines.

    Before – No clusters were being drawn.

    After – A cluster of 5 elements was detected. The ‘hasTopping ~’ label is now drawn once, instead of 5 separate times.

Release Notes – September 1st, 2012

This post is used to outline the changes brought to the September 1st, 2012 release of the Exxis Semantic Web Browser. Try it now, and be sure to leave feedback!

  • MySQL backend integration: The previous version relied on an SQLite database, which was not optimal for anything bigger than a very small semantic database. This new database integration adds robustness and speed. (I will shortly add support for Postgres, as I hear it is much more optimized than MySQL — I just chose MySQL because I know it well.)
  • More consistent graph display: The focused node now appears at the centre of the canvas. Superclasses are displayed above. Subclasses and instances are displayed below. Incoming and outgoing nodes, which are not related to class hierarchy are drawn to the left and right, respectively.



  • Fewer nodes: A lot of the feedback I got was along the lines of, “I don’t get it”. I’ve therefore filtered out many of the predicates that don’t intuitively mean anything to most people (e.g. disjointWith, first, range, domain, onProperty etc.). I’ve also filtered out most of the Restriction objects from the graph. These connections will re-appear in later releases, presented in more functional ways.


I wrote about the idea of hyperlinking information in my last post. Vannevar Bush first described the idea of hypertext in 1945. One of the most accessible and practical pre-World Wide Web applications that drew heavily on the ideas of hypermedia was a program developed by Bill Atkinson at Apple, released on the Macintosh in 1987.

HyperCard, as the name suggests, was based on the idea of stacks of cards, hyperlinked to one another. Think of it as a stack of index cards that you could draw on and annotate with pictures and text. Just like the Memex, you could then use the power of hyperlinks to link cards together so that, for example, clicking on a picture of a dog might bring you to a card with more information and pictures of that dog, with further links to other cards, etc…

I started using HyperCard at a young age, and I remember finding it very frustrating at first. I was used to painting on blank 2D canvases such as the ones in MacPaint. In contrast, when I opened HyperCard for the first times, I found the terminology confusing and foreign. I would get annoyed when, after creating a graphic masterpiece, I would hit a key combination to jump to a new blank card, and see my picture disappear before my eyes.

My world was shaken when I finally got the idea of stacks and cards. It was like all of a sudden, I was able to paint and draw in 3 dimensions rather than 2. At first, I experimented with short stories which would start on the first card, and continue from that card to the next.

The HyperCard 2.0 Home Stack — The home stack was a kind of launch pad into HyperCard. You could start your HyperCard experience through tutorials, by seeing example stacks (such as a phone dialer or address book), or by diving-in to creating your own. There were even customizable tabs, for adding links to your own stacks. Incidentally, this home screen design can be seen in modern products such as the iPhone today. (Image used with kind permission from Robin Silberling)

Shortly after, I discovered that it was possible to make flip-books in HyperCard as well. I would draw a picture on a first card, then make the image on the second card slightly different, and so on. I remember creating countless animations, some of them becoming quite sophisticated, with cut scenes and longer runtimes.

In addition to being able to draw and add text to each card, you could also place a variety of buttons onto each card. In their simplest forms, buttons would skip to another card or play a sound. When I discovered buttons, I started making adventure mini-games. In one game, you started standing outside a house. By clicking on the doorway, you could open the door and step inside the house. Each room had doors leading to other rooms, and so on. All of this was done by drawing pictures of indoor rooms on different cards in a stack, and then using buttons to interlink them.

I experienced another quite profound paradigm shift when I discovered what lay at the heart of buttons: HyperTalk. While Bill Atkinson had written the core of HyperCard (stacks, cards, drawing & painting, etc…), his colleague Dan Winkler had been busy developing a programming language to give stack authors powerful ways of adding extra functionality to their projects. He called this programming language HyperTalk.

The best part about HyperTalk was that it was very intuitive and approachable. Many programming languages tend to look exceedingly cryptic to the uninitiated, but HyperTalk was constructed so that it read mostly in plain English:

on mouseDown
  put "Hard Drive:Documents:Client Contacts" into filePath
  if there is a file filePath then
    open file filePath
    read from file filePath until return
    put it into card field "Client Contacts"
    close file filePath
  end if
end mouseDown

Since HyperCard shipped with a number of demo stacks, I was able to jump in head first, and teach myself HyperTalk very quickly through experimentation and by copying-and-pasting bits of HyperTalk script from other stacks into my own. With every new bit of HyperTalk that I taught myself, I felt like I was pushing my creative boundaries further and further.

Over the next several years, I developed an insatiable thirst for mastering HyperCard. I would rarely do any homework, as generally my bag would get dropped onto the ground with complete disregard as I bee-lined from the front door to my Mac Plus. My experimentation with HyperCard was vast, and the number of stacks I created must have ranged well into the thousands. Among others, I remember creating a Wheel-of-Fortune type game, a trivia game, a maze game, a visual dictionary of wind instruments, a bulletin board system (!!), innumerable Choose-Your-Own-Adventure type games, programs that drew pictures for you, chess puzzles, and the list goes on. And on. And on.

By now, I was fully sold on the merits of HyperCard. Birthday and Christmas gifts would come in the form of new versions of HyperCard or books about advanced programming in HyperTalk. Wanting to evangelize the creative possibilities of this program, I started a computer club at my (primary) school, and (starting in 1995 at age 12) worked for two summers as an instructor in a computer summer camp. There, I met a fellow instructor who was as passionate and savvy with the ‘Card as I was, and we wrote together what I still consider, to this day, my HyperCard Magnum Opus: a battleship program. After the kids had gone home for the day, we’d wire one of the computers to the projector, and we’d take turns programming and reviewing the other person’s work on the projector. By the end, our battleship program became a fierce challenger, with 5 levels of artificial intelligence, each progressively more intelligent than the last. By level 5, the AI would flat-out cheat and look at your board to see your ship positions.

During the day, I taught kids the basics of HyperCard. Some kids chose to make simple flip-books and adventure games, while some of the more advanced learners got into more ambitious projects. I particularly remember working with one boy who was autistic. Stacks and cards were not concepts he was fully able to grasp, but he nevertheless created drawings in HyperCard that showed a lot of talent. The kind of creativity that HyperCard enabled, and which was visible in the kids’ projects constantly surprised me.

From the Memex, to HyperCard, to Wikipedia — the evolution of hypermedia.

By the end of the second summer, I had become a HyperCard guru. By this time, the World Wide Web had come into being in an early form. Not content with simply advocating HyperCard on a local scale, I created a website dedicated to archiving and organizing snippets of HyperTalk code, for the larger community of power users like me. I was the chief contributor.

HyperCard was born in 1987, before the internet and before even colour Macintoshes. By the mid-90′s, HyperCard still didn’t have true internal colour support, and had fallen into disrepair following organizational problems at Apple. In 2000, what little development efforts were being made were ceased, and in 2004, Apple stopped selling HyperCard altogether.

Having learned everything I could about HyperCard, I gradually shifted my focus to other programming languages (like the ones I was using to build the website to promote HyperTalk).

HyperCard was a killer app, and a testament to great software design. The best part about using HyperCard was that it was fun. And yet, it constantly challenged you to explore a little deeper, to try something new. I have not found a single other creative application that was so thoroughly rewarding to use and learn. Sadly, I don’t even remember the last time I used HyperCard. It won’t run on any modern computer, but just in case I get nostalgic someday, I’ve kept my Mac Plus safely stored with a handful of stacks not far away…

TED Talks: Blaise Aguera y Arcas Demos Augmented-Reality Maps (2010)

Blaise Aguera y Arcas is an architect at Microsoft Live Labs, and is a repeat TED Speaker. In 2007, Blaise demonstrated a research project Microsoft was working on called Photosynth. The software demo showed fascinating new ways of presenting graphic information in 3D and infinitely-”deep” 2D spaces.

He spoke again recently at TED2010, about augmented-reality maps. Reality augmentation is the idea that technologies could come and “enhance” our senses, by adding pertinent information about things around us. Using the pioneering work of Photosynth, he demos a Bing Maps application which juxtaposes information and images of all kinds into a 3D map. Truly jaw-dropping!