Part 1: The Motivation Behind Zen and Mashweb

Web pages, of course, comprise HTML, CSS, JavaScript, and sometimes other code. The term web application does not have an exact, universally agreed upon definition, but “highly dynamic website” might be a useful way of thinking of a web application as distinct from a static website that has only unreactive web pages. Old-style web applications used just CGI capabilities and had a page-centric progression. When the site visitor submitted input to a web page, the browser jumped to a different web page. Nowadays, however, the loading of a new web page for most interactions is viewed as tedious. Ajax allows a web page to interact with the user and the web without loading a complete new page. A single page web application built using Ajax has the quintessential qualities of what we now view as a web application or web app.

When the author was employed by Wipro Technologies, he had the freedom to explore many technologies and to try to build new, practical programming tools and utilities. Realizing that many types of data can most easily be represented and manipulated by Lisp (or Scheme), and realizing that S-expressions would be the simplest way to represent web page structure, and learning some of the basics of JavaScript events, he hit upon the idea of using a direct manipulation interface to create and edit web pages.

Later the author discovered a version of Scheme called jsScheme that runs in, or on top of, JavaScript. As some programmers familiar with the Scheme programming language’s call/cc form realized, the state of progression through a series of interactions can quickly grow overwhelming, but call/cc makes it possible to simplify the stateless web and allow it to be programmed in a stateful way.

The author had previously used the UCW (UnCommon Web) framework that used Common Lisp to create something like call/cc on the web server. His experience with UCW made him realize that a practical, generally useful web framework would have limited scalability due to the huge amount of memory consumed by the call/cc-like continuations created for concurrent users of a UCW web application. He realized that by spreading the continuation-related memory consumption across all the web browsers using a web app, that is, by storing the continuations in the web app’s pages rather than on the web server, the web app could be scaled much better.

A parallel motivation for building Zen is the author’s frustrations and dissatisfaction with web browsers, websites, and utilities for study in the world’s new library, the web. These frustrations and dissatisfactions are described in the author’s blog site.

See also the Zen Elevator Pitches.


The Death of the Cyberflâneur

NYT article “The Death of the Cyberflâneur” eloquently describes how mainstream brokers of the web and social media have impoverished the exchange of user-generated content. Mashweb to the rescue?

Old Pie in the Sky

About 2010 the author tried to see how far he could go with his concept of a framework to capture, store, organize, and operate upon any visible page on the web. Some of these ideas are stored here.