Thumbstack – A Web-Based Presentation Application

thumbstackA while back, my pal Zach posted about S5, “A Simple Standards-Based Slide Show System.” Now, its important to note that S5 is trying to set up a standard and not develop a full blown application. S5 seems to be a solid foundation…all it really needs is a slick editor and I’m sold.

Well, as I’ve been waiting for and S5 editor to come along, Thumbstack has come along instead and I’ll be content goofing around with that for a while. While Thumbstack isn’t built off of the S5 standard, it is a sold web implementation of presentation software complete with a decent draggable presentation builder…themable to boot! (although the available themes are dumb right now, that’s sure to improve). The editor is a div based-DHTML pumped-Ajax integrated layout; the presentation itself seems to be Flash. Interesting stuff.

It shows promise, but there are a few things it lacks that I hope to see:

  • More themes
  • Slide transitions and animations (nothing too crazy, basic will do fine)
  • Export to Powerpoint
  • Ctrl+S to save
  • While viewing a presentation, right clicking should give a contextual menu.

I’ll be keeping an eye on Thumbstack. Google recently bought Writely, which means they are interested in web-based Office software. They’ve got Gmail, an upcoming Calendar, a Word Processor, and a Webpage Builder. All they need now are solid presentation and spreadsheet applications. The race is on.

Node Manipulation in the DOM

DOM

I’ve been screwing around with DOM Manipulation for a few years now, doing stuff sporadically here and there. With my development of MasterWish and my recent interest in Script.aculo.us, I often find myself forgetting the various objects, functions and attributes relating to nodes. Hence the reason for this post. I want a quick and easy way to find the information…So, here’s a quick run-down of node structure:

Assuming we have the following simple structure:

<div id=”outer”>
    <div id=”inner_1″>
        Bork!
    </div>
    <div id=”inner_2″>
        OMG Lazerz Pew pew!1!!!1!
    </div>
    <div id=”inner_3″>
        <div id=”super_inner”>
            I like butter
        </div>
    </div>
</div>

We know the following (I completely understand the relationships between nodes…but I’m filling this out for completeness):

  • Node “outer”: is the parent of nodes inner_1, inner_2, and inner_3
  • Nodes inner_1, inner_2, and inner_3: are the child nodes of outer
  • Node inner_1: is the first child node of outer
  • Node inner_3: is the last child node of outer
  • Node inner_1: is the previous sibling node of inner_2
  • Node inner_3: is the next sibling node of inner_2
  • Node super_inner: is not a child node of outer, but is a child node of inner_3

Here are the node related functions available:

property description
nodeName name of the node
nodeValue value of node (only applicable to text nodes)
nodeType type of node – see below
parentNode parent, if one exists
childNodes list (array) of child nodes
firstChild first child
lastChild last child
previousSibling previous sibling
nextSibling next sibling
attributes list of attributes of an element
ownerDocument document containing the element

Here are the node types:

number description
1 an HTML element
2 an element attribute
3 text
8 an HTML comment
9 a document
10 a document type definition