Alex Semenov


…once upon a time a customer asked a programmer : - Hey Dude, can you make me a Database Table Editor? Sure, said a programmer, and did.

In a few days the customer wanted to browse and edit his tables remotely. The programmer granted the wish

The customer decided to share his data and demanded multi-user access. The programmer asked if there must be real-time update (yes) and either raw or table blocking level (raw) in optimistic or pessimistic mode (both, please). It took a while, but the programmer did it.

It turned out that a database with multiple tables was not easy to navigate, so there came the request to do something about it. The programmer implemented a "landing menu" - just like HTML landing page - and a Database directory - just like a website directory.

Happy with simple access to separate tables the customer discovered it was too easy to break the Database consistency. Say, after removing a Department from a table "Departments", some ghost employees (formerly of that department) could stay in the system. That sure must be taken care of.

The programmer redid the Database directory on the manner of a file system, like as in "delete the folder is to delete all the content". So the hierarchy of navigable menus with navigational commands was born. The programmer was happy - those menus generated all necessary back-end SQL statements to traverse data and keep the Database consistent.

The customer was not so much: -What about tables with multiple foreign keys, the hierarchical model would not work for them? The programmer scratched his head and equipped those tables with auto generated additional form to those alien keys and generate complex SQL requests behind the scene.

Well, it made a Database ACID, though the navigation screamed for a window-over-window-over-window paradigm - just like in Windows OS. So it was done.

Now to build a data driven app was to link the tables. Say, a table "Customer" field "Name" linked to a table "Orders". And a table "Goods" field "Name" linked to the same table "Orders". And so on. That is all.

For an app driven by fifty tables there were fifty lines of code needed. The programmer was fascinated. Needless to say he made a depository for typical tables - similar to HTML templates, those tables customizable and all the reports defined as just another linked tables.

Also needless to say the multimedia formats were included as tables fields, API was defined thus enabling real-time apps of any complexity - even with non-grid based user interface, like games. It was just plain logical.

By then, the infrastructure running a few lines of code was pretty complex: a client, a server, real-time messaging, built-in SaaS and administrative dashes - but it was worth it.

To deploy an app was just to upload the source - without restarting the server, online. The apps redesign and enhancement was done on live systems.

The customer was happy again - now he did not need a programmer to develop his apps. It was as simple as building a spreadsheet or a simple website - visually, by dragging-and-dropping the tables from the depository.

And all it took was an idea of a link embedded in data. Reminds you of something?

The customer asked for the last favor: - Dude, can you make it run in a browser? The answer was : - Sorry, boss, but no - HTML and JavaScript are too weak to do it…

Since then the programmer is driving a truck to make his living. Plain tired to argue and explain.

Simple links embedded in Data...

[Edit] Thank you humans. First versions run in 1994 on floppies. The project abandoned in 2013 - got no traction. Probably would make a fine open source, if somebody takes over. (I'm busy in another project). We might call it a statefull SQL or collaboration thing, but the main takeout is the idea to run/interpret a DB schema directly. It emulates Web easily, kind of generalization and simplification in one piece. The source is so concise you can code a desktop App on a mobile device. Just by talking to Siri. Can share old archives (no git) - but where at?

{Edit 2] Just in case somebody wants them:
Readme
A Production App Example (Java runtime, self-contained, no installation)
Guides
Sources