From
this interview with Chris Date
:
[...] But the trouble with the relational model is, it's never been
implemented--at least, not in commercial form, not properly, and
certainly not fully. So while it's true that there have been a
couple of developments in the marketplace over the past few years
that I do quite like, I like them primarily because I see them as
attempts to implement pieces of the relational model that should
have been implemented years ago but weren't. I refer here to (a)
"business rules" and (b) "object/relational DBMSs." I'll take them
one at a time.
- Business rules: Business rule systems are a good idea, but
they certainly aren't a new idea. Without going into a lot of
detail, business rule systems can be seen as systems that
attempt to implement the integrity piece of the relational
model (which today's mainstream SQL products still--over 35
years after the model was first described!--so signally fail to
do).
-
Object/relational DBMSs: To a first approximation,
"object/relational" just means the domains over which relations
are defined can be of arbitrary complexity. As a consequence,
we can have attributes of relations--or columns of tables, if
you prefer--that contain geometric points, or polygons, or X
rays, or XML documents, or fingerprints, or arrays, or lists,
or relations, or any other kinds of values you can think of.
But this idea too was always part of the relational model! The
idea that the relational model could handle only rather simple
kinds of data (like numbers, and strings, and dates, and times) is
a huge misconception, and always was. In fact, the term
object/relational, as such, is just a piece of marketing hype
... As far as I'm concerned, an object/relational system done
right would simply be a
relational system
done right, nothing
more and nothing less.
[...] The next thing I want to say is that,
while the relational model is certainly the foundation for "doing
databases right," it's
only
the foundation. There are various ways
we can build on top of the relational model, and various attempts
have been made to do such a thing over the past 25 years or so.
Here are a couple of examples:
- Higher-level interfaces: It was never the intention that
every user should have to wrestle with the complexities of
something like SQL (or even the complexities, such as they are,
of the relational algebra). I always rather liked the visual
interfaces provided by Query-By-Example and the "visual
programming" front-ends to Ingres, for instance. And there are
many other attractive front-ends that simplify the business of
building applications on top of a relational (or at least SQL)
DBMS. 4GLs too can be regarded as a higher-level
interface--but I was never very impressed by 4GLs as such, in
part because they never seemed to be precisely defined
anywhere; the idea might have been OK, but without a formal
definition of the semantics of the language some very expensive
mistakes can be (and were) made. Natural-language systems are
another example; I still have an open mind about these, but I
don't think anyone could claim they've been a huge success as
yet.
- Special-purpose applications: I think the right way to view
things like OLAP and data mining is as special-purpose
applications that run on top of the DBMS. I mean, I don't
think these things should be part of the core DBMS (I could be
wrong). Either way, however, I do want to complain about the
CUBE stuff in SQL, which takes one of the worst aspects of
SQL--its support for nulls--and "exploits" it to make it even
worse. But that's a particular hobbyhorse of mine ... I think
I'd better stop right here.
19.12.2005, 0:01
As a reality check of
my proposal for skins in Helma 2
, I so far came up with the following prototype. The idea seems to work quite nicely already with current builds of Helma 2. I thought E4X could make implementing these kinds of mocha objects very easy, but I was surprised that it really turned out that way in practice.
function handle_get() {
// first prototype for the next incarnation of mocha objects
// the render function, providing the magic
var render = function(view) {
// loop
var toLoop = view..*.(@loop.toSource() != '<></>');
for (var item in toLoop) {
var dataName = toLoop[item].@loop.toString();
delete toLoop[item].@loop;
var data = eval(dataName);
var stamp = toLoop[item].toString();
for (var i in data) {
var stencil = stamp.replace(
eval("/%% "+dataName+"\\$\\.(.+) %%/g"),
'{ '+dataName+'['+i+'].$1 }'
);
stencil = stencil.replace(
eval('/"'+dataName+'\\$/g'),
'"'+dataName+'['+i+']'
);
stencil = stencil.replace(
eval('/"%% (.*)\\$'+dataName+'(.*) %%"/g'),
'{ $1'+i+'$2 }'
);
toLoop.parent().insertChildBefore(
toLoop[item],
eval(stencil)
);
}
delete toLoop[item].parent().*[toLoop[item].childIndex()];
}
// lookup
var toLookup = view..*.(@lookup.toSource() != '<></>');
for (var item in toLookup) {
delete toLookup[item].@lookup;
var lookedup = '('+toLookup[item].children()[0]+')';
toLookup[item].setChildren(lookedup);
}
// check
var toCheck = view..*.(@check.toSource() != '<></>');
for (var item in toCheck) {
if (eval(toCheck[item].@check.toString()))
delete toCheck[item].@check;
else
toCheck[item] = '';
}
return view;
}
// an example skin
var myview = <table border="1">
<tr check="topics">
<th lookup="true">Topic Name</th>
<th lookup="true">Comment Count</th>
</tr>
<tr loop="topics" class="%% 'rowcolor'+ ($topics % 2) %%">
<td>%% topics$.name %%</td>
<td check="topics$.count == 0" lookup="true">
No comments yet</td>
<td check="topics$.count == 1" lookup="true">
%% topics$.count %% comment</td>
<td check="topics$.count > 1" lookup="true">
%% topics$.count %% comments</td>
</tr>
<tr check="!topics">
<td colspan="2" align="center" lookup="true">
This list is empty</td>
</tr>
</table>;
// the example data
var topics = [
{name : 'Peter', count : 0},
{name : 'Wolf', count : 2},
{name : 'John', count : 1},
{name : 'Andy', count : 8}
];
// rendering the list
var listtable = render(myview.copy());
// rendering the empty table
topics = null;
var emptytable = render(myview.copy());
// assembling the page
var page = <html><body>{ listtable }<hr/>{ emptytable }</body></html>;
// writing the page source to the reponse buffer
res.contentType = "text/html";
res.write(page.toSource());
}
Resulting in the following output:
| (Topic Name) |
(Comment Count) |
| Peter |
(No comments yet) |
| Wolf |
(2 comments) |
| John |
(1 comment) |
| Andy |
(8 comments) |
19.12.2005, 10:28
|
Jon Udell points out
that with the ongoing
debate in programming
circles about the pros and cons of static vs dynamic typing and class vs prototype based languages, and with ECMAScript gaining new respect and evolving at a faster pace, perhaps these
styles will turn out more complementary than we suspect:
a programming language can stay neutral to coding practices.
"
When you already know what your types should be, [...], declare them. When you don't, don't. One language,
two styles, complementary benefits. Good idea!"
29.12.2005, 13:45
|
A first sneak peek at the things we can expect from
System One
in 2006:
Retrievr
lets you find
flickr
images by drawing rough sketches of them.
"
This article
is not intended as a proposal for a
replacement for email. [...] Nevertheless, in understanding how the move to REST
improves email, you will hopefully come to see how moving your own web services
to it would improve
them
."
In other news...
Subversion hits 1.3.0 and
brings us path-based authorization
for svnserve.
In case you've been looking for it:
Venkman for Firefox 1.5
And one more puzzle piece for building Mocha heaven:
Banteng
- leveraging GCJ and Rhino to build cross-platform native applications in Javascript.
3.1.2006, 9:23
|
Track your comments
throughout the blogosphere and keep the conversations flowing...
coComment
is out of the bag.
4.2.2006, 23:23
|
Google search results for "cocomment":
-
after 4 days, from virtually zero to 200'000
- after a week there are now about 400'000 search results
See the buzz -
at Google
, at
Alexa
, and - for the couch potatoes amongst you - on
MobuzzTV
.
9.2.2006, 11:23
|
|
|
> A candidate for CSCSJS or a Mocha Fetchlet
|
|
> Consensus vs Direct Democracy
|
|
> Rails' greatest contribution
|
|
> trackAllComments
|
|
> Anno 2003: deployZone
|
|
> Anno 1998: crossnet
|
|
> Anno 1999: Der Oberhasler
|
|
> No Rough Cut :-(
|
|
> 40th Montreux Jazz Festival
|
|
> Welcome to Helma!
|
|
> Frodo takes on chapter 3
|
|
> Javascript 2 and the Future of the Web
|
|
> FreeBSD Jails the brand new easy way
|
|
> Helma 1.5.0 Release Candidate 1 available for download
|
|
> Helma 1.5 RC2 is ready
|
|
> Helma 1.5.0 has been released!
|
|
> Drosera steps in to debug Safari
|
|
> Building the Conversational Web
|
|
> Aptana - Eclipse reincarnated as a Javascript IDE
|
|
> Helma 1.5.1 ready to download
|
|
> RFC 4329 application-ecmascript
|
|
> Helma 1.5.2
|
|
> Truly Hooverphonic!
|
|
> Fresh Rhino on Safari
|
|
> "The meaning of life is to improve the quality of all life"
|
|
> Mocha Inheritance
|
|
> Helma 1.5.3
|
|
> More on Javascript Inheritance
|
|
> See you at Lift'07
|
|
> The war against terror
|
|
> The war against terror (continued)
|
|
> Jala for Helma
|
|
> Making Higgs where the Web was born
|
|
> Upcoming Helma 1.6, new reference docs and IRC channel
|
|
> Shutdown-Day the Helma way
|
|
> Fixing Javascript inheritance
|
|
> Helma ante portas
|
|
> Introducing Planet Helma
|
|
> Helma 1.6.0-rc1
|
|
> The last mention of Microsoft
|
|
> Bootstrap is out of the bag
|
|
> Rocket the Super Rabbit
|
|
> Helma warped around existing db schemas
|
|
> Using H2 with Helma
|
|
> Helma 1.6.0-rc2
|
|
> Antville Summer Of Code 2007
|
|
> ECMAScript 4 Reference Implementation
|
|
> Release Candidate 3 of Helma 1.6.0
|
|
> Rhino on Rails
|
|
> John Resig on Javascript as a language
|
|
> The server-side advantage
|
|
> Javascript for Java programmers
|
|
> Junction brings Rhino on Rails to Helma
|
|
> Helma 1.6 is ready!
|
|
> Rhino 1.6R6 with E4X fix and patches for Helma
|
|
> Keeping track of localhost:8080
|
|
> Hold the whole program in your head, and you can manipulate it at will
|
|
> JSONPath and CouchDB
|
|
> Helma Conspiracy Theory
|
|
> So, what's up with World Radio Switzerland?
|
|
> Javascript as Universal Scripting Language
|
|
> More praise for Helma
|
|
> Helmablog and an article in Linux Pro Magazine
|
|
> Evolving ES4 as the universal scripting language
|
|
> Bubble bursting friendship bracelets
|
|
> CouchDB for Helma
|
|
> Helma powered AppJet - Takeoff!
|
|
> SimpleDB vs CouchDB
|
|
> Netscape, the browser, to live one more month
|
|
> Update to Helma 1.6.1
|
|
> Additional Filename Conventions
|
|
> e4xd and jhino - javascript server-side soft-coding
|
|
> Even more Server-side Javascript with Jaxer
|
|
> Openmocha and Jhino updated to 0.8
|
|
> Asynchronous Beer and Geeking and other opportunities to talk about Helma, Rhino and Javascript on the server-side
|
|
> Solar cell directly splits water for hydrogen
|
|
> Adobe's position on ES4 features, plus the Flex 3 SDK source code is now available under the MPL
|
|
> The Overlooked Power of Javascript
|
|
> A Quick Start to Hello World
|
|
> The Story of Stuff
|
|
> Earthlings - Can you face the truth?
|
|
> Larry Lessig's case for creative freedom
|
|
> Helma 1.6.2 ready to download
|
|
> Attila Szegedi about Rhino, Helma and Server-Side Javascript, and scripting on the JVM in general
|
|
> Helma Meeting Spring 2008
|
|
> Apple's position on ECMAScript 4 proposals
|
|
> ES4 comes to IE via Screaming Monkey
|
|
> SquirrelFish!
|
|
> Want ES4 in Helma today?
|
|
> ES4 Draft 1 and ES3.1 Draft 1
|
|
> Is AppleScript done?
|
|
> Brendan on the state of Javascript evolution
|
|
> Helma at the Linuxwochen in Linz
|
|
> Fresh Javascript IDE in Ganymede Eclipse release
|
|
> The A-Z of Programming Languages jumps to Javascript
|
|
> Ecmascript Harmony
|
|
> Large Hadron Collider
|
|
> Helma at the 2008 OpenExpo in Zurich
|
|
> Release Candidate 1 of Helma 1.6.3
|
|
> Helma 1.6.3 Release Candidate 2
|
|
> Helma 1.6.3-rc3 ready for testing
|
|
> Helma turns 1.6.3
|
|
> First Soleil on Mont-Soleil
|
|
> Anno 2004: CZV
|
|
> Server-Side Javascript Standard Library
|
|
> Is the Bespin web-based code editor the ideal future ServerJS IDE?
|
|
> New Eclipse Helma plugin project
|
|
> The best solution is that one isn't needed
|
|
> ReverseHttp and RelayHttp
|
|
> ES5 Candidate Specification
|
|
> A car has nothing to do with a carpet
|
|
> Think different
|
|
> Crossnet - der kollektive Intellekt der Schweiz
|
|
> Anno 1992: Intouch i-station
|
|
> Anno 1990: RasterOps
|
|
> Anno 1991: mediacube
|
|
> Anno 1993: Macro-micro navigator
|
|
> Server-side Javascript
|
|
> Surrender by Cheap Trick
|
|
> Permaculture 101
|
|
> Be part of the solution, not part of the problem
|
|
> CometD at a glance
|
|
> PubSubHub against spam and walled gardens
|
|
> Web-based editing of sandboxed server-side javascript apps
|
|
> Hang You From the Heavens by The Dead Weather
|
|
> Anno 1988: Perfect by Fairground Attraction
|
|
> August 28th 1968: William Buckley Vs Gore Vidal
|
|
> Anno 1968: Mony Mony and People Got to Be Free
|
|
> Unus Pro Omnibus - Omnes Pro Uno
|
|
> Been there, but haven't done that
|
|
> If they are not ready for what they need, give them the backbone for their future baby steps
|
|
> Before implementing a solution to a problem, always search for a workaround, because the workaround is often better than the original solution
|
|
> JVM Web Framework Smackdown
|
|
> Eating healthier would safe the planet
|
|
> ServerJS - putting Javascript to work on the *other* side
|
|
> CommonJS effort sets JavaScript on path for world domination
|
|
> While society must do things the right way, its people must find ways to do the right thing
|
|
> ServerJS - Brewing The Perfect Storm
|
|
> Move your money - It's a Wonderful Life
|
|
> You find what you google for.
|
|
> Module system strawpersons
|
|
> Keep Cool My Babies!
|
|
> Written In Reverse by Spoon
|
|
> The Moon And The Sky by Sade
|
|
> Helma 1.7.0 has escaped its stealth existence
|
|
> Modules, Proxies, and Ephemeron Tables
|
|
> Server-Side Javascript since... way back: RingoJS!
|
|
> Anno 1989: Lambada by Kaoma
|
|
> Eternal September
|
|
> AOL expanding Internet services
|
|
> Searching Gopherspace
|
|
> NEW-LIST digests
|
|
> ACTIV-L Digest
|
|
> Acorn Archimedes RISC Technology
|
|
> Hello World on C128 in CP/M Mode
|
|
> Anno 1986: Max Headroom in the News
|
|
> Anno 1985: Amiga 1000
|
|
> Anno 1982: Vic-20
|
|
> RhinoJS
|
|
> Lost and Found by Steve Mason
|
|
> Your Personal Religion by Sophie Hunger
|
|
> RingoJS 0.5 released
|
|
> Sweet People by Alyosha
|
|
> RingoJS vs NodeJS
|
|
> Get Around by Neil Young
|
|
> How creativity occurs
|
|
> The Future Is Unwritten
|
|
> What's Up Doc? by Carbon/Silicon
|
|
> Will Adobe see the light (of Day)?
|
|
> Good for Adobe, Good for Day, Good for the Ecosystem
|
|
> confederate?
|
|
> Brendan Eich on Proxies, Modules and other Proposals and Strawman
|
|
> CoffeeScript, underscore.coffee and underscore.js
|
|
> We have the world we want
|
|
> Lila Luftschloss
|
|
> If there is anything supernatural, it is humanity itself
|
|
> Oh No! by Marina And The Diamonds
|
|
> Reality is an onion, and depending on how deep you think, it may seem to contradict itself
|
|
> Web services should be both federated and extensible
|
|
> Freude herrscht!
|
|
> The Cluetrain Manifesto
|
|
> The Paul Allen Suit
|
|
> Erbix CommonJS soft-coding engine
|
|
> Nice comparison of Ringo and Node
|
|
> Faked web browsing
|
|
> Angry World by Neil Young
|
|
> Anno 1987: Knowledge Navigator
|
|
> Open source Facebook replacement Diaspora drops first alpha
|
|
> Restrepo
|
|
> Bungee jumps for all congressman, free!, no strings attached
|
|
> Link Love for Javascript
|
|
> Predictions of an ugly IPv4-to-IPv6 transition
|
|
> Ringo Release 0.6
|
|
> Order is an addictive illusion
|
|
> Peaceful Valley Boulevard and Rumblin
|
|
> Rhinola 0.8 - Server JS reduced to the minimum
|
|
> Unconditional Responsibility meets Total Compassion
|
|
> Which system setting, Mr. Citrix?
|
|
> Making Antimatter where the Web was born
|
|
> WikiLeaks moves to Switzerland
|
|
> Democracy Now!
|
|
> So Long, Larry King Live
|
|
> You register me in 50 states
|
|
> Daniel Ellsberg on Wikileaks
|
|
> Software Engineering
|
|
> California by Joni Mitchell
|
|
> Friedrich Dürrenmatt - Die Schweiz als Gefängnis
|
|
> Please Take by Wire
|
|
> Fixing the Future
|
|
> Cablecom baffled by service interruptions
|
|
> The decision to store data in a database is usually a case of premature optimization
|
|
> Could uprisings in Egypt and the Arab world produce a 'Muslim Gandhi'?
|
|
> No more White Stripes
|
|
> It Hurts Me Too by First Aid Kit
|
|
> Asmaa Mahfouz starting a revolution
|
|
> Think before teaching young dogs old tricks
|
|
> How to Save the World, Fast and Easy
|
|
> Powerful stroke of insight
|
|
> Madame Trudeaux by KT Tunstall
|
|
> Re: Administrivia
|
|
> Blue Tip by The Cars
|
|
> Piledriver Waltz by Alex Turner
|
|
> Canada, please evolve
|
|
> Heavyweight Champion of the World by Reverend and the Makers
|
|
> Everything is either simple or flawed
|
|
> AIR is to apps as PDF is to docs
|
|
> Wishful thinking is the mother of all progress
|
|
> Nuclear plants in Switzerland are modern Orgetorixism
|
|
> Newark Peace Education Panel
|
|
> Photoshop Startup Memories and First Demo
|
|
> BZ Internet Cafe
|
|
> Xjournal
|
|
> Morgana - Selling Digital-Font based Sign-writing
|
|
> Macworld Expo 1988 Amsterdam
|
|
> The right time to buy Apple stock
|
|
> Bürgerbrief
|
|
> Analog Desktop Publishing in 1984
|
|
> Enable the Creative
|
|
> Christiana Bike gone missing in Basel
|
|
> Postel's Law
|
|
> Best Music, News, and More is Back!
|
|
> bumblebee
|
|
> FidoNet
|
|
> Cute Barristas at Peet's Coffee
|
|
> Storm Song by Smoke Fairies
|
|
> Earth Mother and Fortieth Floor by Lesley Duncan
|
|
> Permaculture - A Quiet Revolution
|
|
> Paradise with Side Effects
|
|
> The Data Liberation Front
|
|
> What's Next California
|
|
> Not becoming part of the problem when trying to be part of the solution
|
|
> Customer Experience Management
|
|
> Adobe Digital Enterprise Platform
|
|
> This Painting is Not Available in Your Country
|
|
> Strength in Numbers by Colin Scallan
|
|
> RingoJS 0.8.0 is out!
|
|
> Re: parteifrei.ch
|
|
> Stuff by George Carlin
|
|
> Damn Love Song by Amy LaVere
|
|
> Switzerland is Not a Nation - it is a Philosophy
|
|
> Ralph Nader, Dennis Kucinich, Ron Paul
|
|
> 25th Fête de la Lune Noire
|
|
> Die Grünen sind die liberalsten
|
|
> How To Design A Good API and Why it Matters
|
|
> Here's to the crazy ones!
|
|
> New GPB-DA Poster (and Logo) for the Federal Elections 2011
|
|
> Evolution is not about the survival of the fittest, it is about the optimization of the synergies.
|
|
> Antwort auf offenen Brief von Tobias Sennhauser
|
|
> Alternative 1995
|
|
> Privacy is only needed to the extent that society is malfunctioning.
|
|
> The Creative Cloud, Elasticity, Touch and Context
|
|
> Libertär, EU-kritisch, ökologisch, sozial
|
|
> Consensus & Direct Democracy @ Occupy Everything
|
|
> Fortschritt statt schildbürgerliches Wachstum
|
|
> Hydrogen production from inexhaustible supplies of fresh and salt water using microbial reverse-electrodialysis electrolysis cells
|
|
> Will Not Follow by Gringo Star
|
|
> The Three Pillars of Democracy
|
|
> The Foundation of Democracy
|
|
> Bradley Manning by Cass McCombs
|
|
> Hochdemokratie
|
|
> Gamchi
|
|
> Whole Earth Catalog
|
|
> Supplement to the Whole Earth Catalog
|
|
> Neil Young
|
|
> O Freedom by Billy Bragg
|
|
> I believe I know what is true, but I know I don't know what is real.
|
|
> Zweites Eichhorn 2011 by michelo-ud
|
|
> Finish your Beer
|
|
> House Rules
|
|
> Late in the Night by Heartless Bastards
|
|
> Tim Anderson and Matthew Slater on Community Forge
|
|
> Journée: Coopératives & énergies renouvelables
|
|
> Summer 2012 will be the Woodstock of Anarchism
|
|
> Saturn Return by She Keeps Bees
|
|
> Lea & story-209 by michelo-ud
|
|
> Light Table - a new IDE concept
|
|
> Anno 1998: volksrat.ch
|
|
> Beim Denken sind Tiere auch nur Menschen
|
|
> Working on true, bottom up subsidiarity
|
|
> The Adobe Creative Cloud is coming!
|
|
> Jacob Appelbaum and National Security Agency whistleblower William Binne on growing state surveillance
|
|
> Out of Print: The 20th Century
|
|
> If what you are doing is not helpful, please stop doing it. Seriously.
|
|
> International Anarchism Gathering, St-Imier 2012
|
|
> Participate.ch macht Deliberative Demokratie mit Konsensforum
|
|
> Sixteen Saltines by Jack White
|
|
> Self-organisation as a powerful change agent
|
|
> Consensus is not something you either have or not. It is something you always have more or less of.
|
|
> Guggenheim by The Ting Tings
|
|
> The Definition of Love
|
|
|