Infrastructure for Secret History Web Doc

Here I’ll commit the things I know about the tech I’ll looking at for the Web Doc, and the current paths I’m chasing down. This is all just between you and I, here on my developer blog.

Just to give you a flavor of this, here’s a mockup I hacked together in Premier to give you a sense of what it might feel like (minus any significant content).

I learned two new TLAs! An SPA is a Single Page Application, a page that updates it’s content without using a page refresh. Lots of cool stuff is now done this way. Google docs is a super sophisticated version of this. This is what I want to do for the Secret History web doc. I want smooth, seamless transitions between elements without page reloads between. That means we’re going to be asynchronously fetching information and displaying it.

The second is MVC, which stands for Model-View-Controller, the standard architectural model for implementing user interfaces. According to Wikipedia again, “It divides a given software application into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user.” When we are talking about SPAs, generally current systems use an MVC framework.

You already knew the term AJAX (Asynchronous JavaScript and XML – but not a TLA) as a form of Web 2.0 magic. Wikipedia says that AJAX “is a group of interrelated Web development techniques used on the client-side to create asynchronous Web applications. With Ajax, Web applications can send data to and retrieve from a server asynchronously (in the background) without interfering with the display and behavior of the existing page.”

Further: “Ajax is not a single technology, but a group of technologies. HTML and CSS can be used in combination to mark up and style information. The DOM is accessed with JavaScript to dynamically display – and allow the user to interact with – the information presented. JavaScript and the XMLHttpRequest object provide a method for exchanging data asynchronously between browser and server to avoid full page reloads.” Nowadays, however, it is rare for web apps to swap XML around. Instead they tend to use JSON (JavaScript Object Notation). The wikipedia article is pretty good for an introduction.

For a while I was trying to find some CMS and AJAX hybrid. I like the user-centric simplicity of WordPress. I’ve used a lot of content management systems and WordPress is my favorite. I like the idea of something as easy to author as WordPress, but with a presentation layer takes advantage of JavaScript SPA magic.

I even looked at the possibility of using Wordpress as a CMS to curate, contribute, and edit content that is served to a MVC SPA system running as a separate system. That is still a possibility, I guess. I still have hopes of finding something as easy to author as WordPress, but I probably shouldn’t hold my breath.

I checked in with the developers of Hollow. Here are the technologies they used for this excellent documentary:

  • Node.js is an open source, cross-platform runtime environment for server-side and networking applications. Node.js applications are written in JavaScript. Node.js provides an event-driven architecture and a non-blocking I/O API that optimizes an application’s throughput and scalability.
  • SocketStream is a framework for Realtime Web Apps, pushing data to the browser via WebSockets. It is an ideal server-side framework for building Single Page Applications.
  • Redis is a data structure server. It is open-source, networked, in-memory, and stores keys with optional durability.
  • MongoDB (from “humongous”) is a cross-platform document-oriented database. Classified as a NoSQL database, MongoDB eschews the traditional table-based relational database structure in favor of JSON-like documents with dynamic schemas (MongoDB calls the format BSON), making the integration of data in certain types of applications easier and faster.
  • Jade ava Agent DEvelopment Framework, or JADE, is a software for the development of agents, implemented in Java. JADE is a middleware which facilitates the development of multi-agent systems under the standard FIPA for which purpose it creates multiple containers for agents, each of them can run on one or more systems. Is understood that a set of containers constitutes a platform.
  • Stylus is a dynamic stylesheet language, its design influenced by Sass and LESS. It’s regarded as the third most used CSS preprocessor syntax.
  • Engine.IO is the implementation of transport-based cross-browser/cross-device bi-directional communication layer for Socket.IO.
  • AWS and CacheFly for hosting

I’m partial to apache because of its familiarity, but I’m not opposed to node.js. SocketStream looks very promising.

MongoDB makes sense. I don’t understand “noSQL” databases yet, but I understand the need for a data store.

Stylus seems like a crazy but hopelessly optimistic dream.

The other shit I have no idea.

Oh and later, I’ll tell you the sad story of the unicorn.

Leave a Reply