Seventh Annual Russian River Morning Party
Just to let everyone know that we’re gearing up for hosting the Seventh Annual Russian River Morning Party. Details to follow.
Just to let everyone know that we’re gearing up for hosting the Seventh Annual Russian River Morning Party. Details to follow.
Written by Stanley Myers, “Cavatina” rates as one of the most beautiful songs ever recorded. Its lush harmonies are worth studying; I’d like to offer my rendition here.
The song is in the key of E. I usually play it on the guitar in the fourth position, barring the fourth fret with my index finger and then grabbing the C-shaped chord. This formation then sounds the E major chord, with the major third (G#) in the bass.
Now, you may choose to strum the chords, or to arpeggiate them (meaning, to pluck the strings one by one). Or the combination of both approaches. It’s all a matter of personal taste.
The way I hear the harmonic movement in this song, it starts with E major and moves into E major 7. Others seem to hear it as moving into G# minor rather than E major 7. The difference is rather slight, but nevertheless E major 7 sounds better to my ears. You voice that chord by grabbing the E major in the fourth position (as described above) and then simply lifting your middle finger off the fifth fret.
From E major 7 the progression goes to A major (in the fifth position), then three frets down to F# minor (grab it on the second fret). You may choose to stay on the F# minor for the entire bar, or to switch to B11 on the second half of the bar. Try both options, see what sounds better to you, and then stick to it.
Next move to B7, voiced on the second fret. Jump back to E major on the fourth fret, then E major 7 (same formation you’ve started with).
Now, switch gears to playing A major 7 on the fourth fret. Second half of the bar is F# minor, then G major 7 on the second fret, then C major 7 using open third, second and first string.
Close the phrase by playing B11 using open second and first strings, while fretting the second fret on the third string and fourth fret on the fourth string, followed by B7 on the second fret, and finally go to the open E major chord.
The above concludes the part A. Go back to the top, play part A again.
Now switch to part B. It starts with C# minor 7, played on the fourth fret. You then move to F#7 on the second fret, hop up to B major fretted on the seventh fret, then to B major 7 fretted on the sixth fret. Go to A major on the fifth fret, then up to B7 on the seventh fret, then back to E major on the fourth fret, followed by E major 7 on the fourth fret.
Finish off by playing A major 7 on the fourth fret, going down to F# minor on the second fret, then G major 7 on the second fret, then C major 7 using open strings, B11, B7 on the second fret, and finally finish off by playing open E major chord.
One of the most underrated ballads ever recorded, “Give Me Love” is a pearl in the mud that is worth every effort seeking after and transcribing. Recorded in 1977 and released on Santana’s album “Festival”, this gem represents one of the pinnacles in the genre I like to call spiritual pop (Santana was famous for recording a long streak of spiritual pop music, mostly on albums such as “Caravanserai”, “Welcome”, and “Borboletta”).
The ballad in question here was recorded in a steady, even tempo, in the key of F. The shimmering opening chord arpeggio, played gorgeously by Carlos, gives way to a brief introductory vamp. The horn section enters, followed by the fantastic lead vocals by Leon Patillo. The rest defies being put into words. Just go there and listen for yourself.
Here are the chords:
Opening arpeggio — E minor 7 (pinky on the second string, third fret, index on the fifth string, second fret, all other strings open)
Opening vamp — C major 7/G minor 7 (both chords played on the third fret)
The main progression:
C major 7 - G minor 7/C7/F major 7 - Bb7/Bb major 7/B major 7/C major 7
Enjoy!
Today I’ve figured out how to play the outta this world song “Oh Happy Day” by Edwin Hawkins Singers (1969). It’s very simple, but also very effective on the guitar. Many people, myself included, have experienced the burst-into-tears irresistible shock to the system upon hearing this song (I first heard it when I was a young kid), so I feel it’s really worth our time learning how to perform it.
The opening lick alternates between B minor and E major. It then switches to alternating between A major and D major, until it switches to brief F#7, and then back to B minor/E major.
The bridge (in double time) is E7 and then A major/D major vamp, ending in E7.
Simple, and so incredibly beautiful. Enjoy!
The defining characteristic that separates humans from animals is that humans tend to be very self-congratulatory. We humans think of ourselves as being the ‘bees knees’ in the grand scheme of things. We are at the top of the food chain, we have no natural predators, we control our environment, and basically we are the masters who are calling the shots.
This is precisely what I’d call the height of self-delusion. Being the self-proclaimed and self-appointed masters of the universe, we are indeed the most arrogant living beings, period.
So what is it exactly that we humans are so incredibly proud of? What is our crowning achievement that sets us so high above any other living beings?
Is it perchance our ability to think in abstract terms? Let’s watch the video clip below depicting a human being engaged in an exercise of abstract thinking and reasoning. The subject is given a brief glimpse of five randomly distributed single digit numbers (each number unique, in this case the numbers are 1, 3, 4, 6 and 9). The numbers then get masked by opaque squares, and the subject is challenged to touch the masked numbers, from the lowest to the highest. The exercise then gets repeated, each time with different numbers distributed differently around the touch screen:
Ouch! That was quite bad. Let’s now watch the video depicting a chimpanzee attempting to pass the same test:
Yowza! Monkey business indeed!
There’s plenty of more similarly revealing videos coming from the Japanese research lab, underlying the chimps’ superiority over highly educated humans.
Suddenly, I don’t feel so self-congratulatory anymore. Nor do I feel so self-important anymore.
In our next installment, we’ll probe a bit deeper into what appears to be the obvious difference between humans and chimps. The results are quite revealing.
You can now go and tap yourself on the shoulder for being so superior to other living beings.
I’ve started recently bumping into all kinds of people who seem to share similar sentiments about the world wide web. That sentiment could be summed up in one sentence: the web is broken!
Lots of people seem to think and feel that something is not right with the web. What’s more interesting is that many of these people get agitated enough with their ‘discovery’ that they feel compelled to spring into action and offer alternative solutions.
What’s even more interesting is that, historically, we could say that the web was never capable of working according to these people’s expectations. And indeed, if you talk to them, they will admit that their ‘insight’ that the web seems broken is not really new. It is just that they’ve now reached the point where they feel that the broken web has been going on for too long, and that now that it’s on its ‘last legs’, it’s high time we get a replacement for it. Something better, something that actually works.
Right now, there appear to be many proposed systems underway that seem to offer a gentler, friendlier replacement for the wild and wooly web. I’ll enlist some of the ones I’m aware of:
I will now briefly address some of these proposed solutions, before I conclude with my own findings.
As we all know, the web is a catch-all collection of semi-random resources published world wide. Those resources are mostly represented as text, or, in rarer cases, as images, video and audio clips. All these resource representations are almost exclusively offered in a laissez faire fashion, meaning they are mostly unstructured, stream-of-consciousness type of material.
Because of that, it gets to be challenging to automate the processing of such material. Proponents of the semantic web (such as Calais) propose a solution in the form of imposing a bureaucratic infrastructure that will be placed on top of the free-range content.
The above solution is the manifestation of an effort to create a machine-friendly web. Machines are notorious for their inability to cope with context and common-sense, so they need to rely on more formalized systems in order to function. Semantic overhead proposed by the semantic web crowd aims at precisely that — decorate the free-range content with the bureaucratic overhead that would assist the machines in processing it.
The ‘barking up the wrong tree’ factor: the web was originally designed for human consumption; retrofitting it to enable the machine consumption feels like attempting to fit a square peg into a round hole.
The realization that the web is not secure should not come as a big surprise to anyone. For some people, that fact alone is enough to hand in the verdict that the web is broken. These people then feel compelled to start looking for a more suitable replacement.
So why is it that the web is not secure? Is it because of the fact the information that is traveling across the network could be eavesdropped on? No, because the eavesdropping risk is not something that is unique to the web as a medium of communication.
Is it because of the fact that the web allows people to misrepresent themselves and act as confidence trickers? No, because again, this is not something that is unique to the web. Confidence tricksters and impostors have been around since the dawn of time.
So what is it, then, that makes the web feel insecure? The answer is — we don’t know. The web is not fundamentally different than any other social situation one might find in the real world. It is mostly the novelty and the unfamiliarity with the new medium that forces people to feel insecure when socializing on the web. With that conclusion, we see that most of the efforts that go toward replacing the web with some pie-in-the-sky more secure medium is merely serving to appease people’s anxieties, and not to really solve the unsolvable problem of social trust. In other words, it’s a moot point, or, fool’s gold to try and instigate the iron clad security in the social context.
This is the engineers’ wet dream. Create a large system, with many movable parts, where everything s perfectly synchronized and there are no glitches and nothing falls through the cracks. Engineers would pretty much kill to be able to implement such a system, but the web ain’t that, not by any stretch of imagination. The web is a collection of extremely loosely coupled resources, meaning that there will always be broken links on the web. It’s a fact of life, and we need to learn to live with that.
Again, the engineering point of view seems to be that, since the web is running on a large collection of extremely loosely coupled disparate operating systems, it is flakey and therefore unreliable. They’d prefer to consolidate it and make it run on a single operating system. Which will then automatically become a global operating system.
However, this ain’t going to happen for the simple reason that globally, we tend to frown upon relying on a single center of power and control. This is not to say, however, that there won’t be many Dr. Evils and Mini Mes out there plotting to rule the word. Only that these guys will continue to look comical and pathetic, and will therefore continue to provide fodder for Mike Mayers and other comedians who will continue to make spoof movies covering the ‘rule the world’ conspiracy topics etc.
Some people feel that the web is broken because search is broken. Or is it the other way around? I’m never certain. Be as it may, they propose that the replacement for the ‘broken’ web will render any need for searching obsolete.
The gentler, friendlier replacement for the web that these people propose will focus on the behavioral patterns of its users and will then be able to anticipate its users’ needs. In preemptively offering the ‘goodies’ to its users, such hypothetical product will be able to fulfill their needs and so they’ll never again feel the urge to go out on a limb and search for anything.
Sounds utopian to me. There are very many holes in that particular vision, and I don’t want to bore you here with picking the glaring omissions apart. I will say, though, that the shortcoming of searching on the web today stems mostly from the wrong bias of the search engines, who are exclusively biased toward harvesting the past. More likely than not, when people are searching for something, they are interested in harvesting the future (i.e. the upcoming, or the about-to-happen events).
My view of the web is that it’s akin to a virus. As such, it is functioning as expected. The virus is not broken, therefore there is no need to fix it.
The virus may cause the system it’s infected to become broken (temporarily or permanently). So if there is anything in need of fixing, it’s the broken, infested systems that the web had rendered dysfunctional. So the ‘barking up a wrong tree’ factor here is: don’t waste time on fixing the virus, work on fixing the affected systems.
Over and out.
My mother, Dragica Bunardzic (1933 - 2008), died of heart attack this Saturday, January 26. She was 74 years old. Last time I saw her was on September 18, 2007, when I bid her farewell at the Vancouver International Airport.
I would now like to say a few words in memory of my mother: just as she had given me the gift of life, and was teaching me throughout my childhood and young age how to live, she had also given me the gift of death. As much as the gift of life is incredibly important, so is the gift of death.
My mother taught me that it is very important knowing how to live, but also that it is extremely important knowing how to die. This gift of death is something that I’ve never received before, and only now do I see the connection, and the essential value in knowing how to leave this earthly realm.
It is a lesson I will never forget, as it may be one of the strongest learning experiences I’ve ever had. It is a mother’s job — teach her children how to eat, how to crawl, how to walk, how to go through life, and finally, how to die. Leave it to the mother to do all that’s most important in life, and in death.
I now know the proper way to do all that, all thanks to my mother dying five days ago. It is a fantastic feeling, a fantastic gift that only a mother can give you. Because of that, I know for sure that she hadn’t lived in vain. This gift I will surely transmit to my own children and to my wife, and who knows, maybe even to others.
Being an avid admirer of the monster cinematography since my early childhood, I simply couldn’t wait for Cloverfield to hit the movie theaters. As soon as the film became available, I made sure to reshuffle things around my insanely busy schedule and set aside a couple of hours in order to watch this latest monster romp.
Ever since I’ve first watched the original Godzilla movie (I can’t remember how old I was then, probably five or six), I fell in love with huge, over the top cinematographic monsters. However, after the less-than-stellar remake of Godzilla in 1998, I felt that the genre is officially dead. I was that much more surprised when, sometime around Christmas last month, I caught a glimpse of the Cloverfield monster in a TV commercial announcing this film. The TV trailer was brilliantly done, opening up an enormous can of worms in mine, as well as many other monster film lovers’ minds. The unexpected glimpse of an enormous monster roaming streets of Manhattan was enough to send us all packing. I’ve started scurrying the web for the clues etc. Finally, got to see the film and the monster in person.
Since I was too busy to see the film on the opening night (01-18-2007), I had to resort to reading reviews. The thing that immediately struck me about the reviews that started pouring in on Friday night was how polarized the movie goers were about this film. I can’t recall any other movie that managed to divide the audience to such an extreme extent into two clear camps: either you adore it, or you can’t stomach it.
Intrigued, I couldn’t wait to see it myself. My expectations were running incredibly high. As usual, whenever you have inflated expectations, you’re in for a bit of a surprise.
There is no doubt that “Cloverfield” is a breakthrough movie. I compare it to another breakthrough movie — Alien. Both films have introduced completely new techniques of presenting the ‘being right there’ feeling to the viewers. Also, both films have tendency to make huge imprint into the viewer’s psyche, and tend to linger on in the viewer’s mind for days after the initial viewing.
I only regret that I wasn’t able to experience “Cloverfield” the same way I had experienced “Alien”. When I first saw “Alien”, I didn’t know anything about it. I went into the movie theater thinking that I’ll be viewing yet anther “Star Wars” wannabe sci-fi movie. My utter shock was that much more drastic, after witnessing an alien explode out of the human chest.
I wish I was in a similar position when I watched “Cloverfield”. I wish I didn’t know anything about it, expecting only to see some lame-ass futuristic Hollywood soap drama. I can only imagine my shock and awe witnessing the unsuspected but horrible ride that “Cloverfield” is.
However, since I went into the initial viewing armed with large knowledge of the viral information I’ve collected on the web, my initial reaction was one of annoyance. I felt short-changed, cheated, swindled out of what could’ve been a tremendous monster movie.
To begin with, I felt that it wasn’t really a monster movie. It felt more like a disaster/catastrophe movie. Yes, the cause of all that disaster was the monster, but he was pretty much nowhere to be seen for the entire duration of the movie, and my eyes were hungry to feast on the imaginary creature.
Then, I felt too constrained by the single-point-of-view cinematography. I didn’t really feel annoyed that the camera is moving and shaking and swinging, I just wished there was more than one camera employed. I wished I could compare various vantage points of the event.
Also, I must admit that I’ve kind of missed bits and pieces of the story line, being much more focused on trying to spot glimpses of the monster and listening intentively for the monster’s roaring. This fact alone warrants second viewing of the film, in order for me to ‘connect the dots’.
Nevertheless, one thing that I was amazed to witness was how my initial bland reaction to the film started morphing into something that I can only label as ‘fascination’. I simply couldn’t stop thinking about it. Several hours after viewing the film, I’ve realized one thing: the film is fantastic!
Yes, despite my lukewarm reception upon viewing it, the aftertaste of the film left me enthralled. I am definitely going back and watching it again.
But before I do that, I’d like to express a couple of more points about “Cloverfield” that kind of came to me the next day.
Firstly, I think many people are missing the point. By looking at various clues and the lack of consistencies in the film, they miss the main clue: the film feels and reads like a dream. Or, a nightmare, to be more precise. It occurred to me after a while, after I’ve been wrestling with some of the glaring and very obvious ‘inconsistencies’ in the film, that it is futile to try and parse the events as if they’re supposed to be happening in the real life. It makes much more sense to try and grasp the film as if it is a recording of someone’s dream.
This is what makes this movie so phenomenally original. I can’t recall any other film that attempts to do the same. Yes, there are many movies that portray dreams, but only as a segment in a movie that otherwise purports to portray real life events. Here, for the first time (or, at least for the first time to my limited knowledge), we seem to be dealing with a film that portrays a dream, from the first opening frame all the way down to the last frame. The movie never seems to surface up into the realm of the waking existence.
It is precisely this fact that lends it its incredibly evocative power. If you think about it, the film reads precisely like some of the most typical nightmares that many people tend to experience, at least at some point in their lives: the dream always tends to begin as a random collection of snippets, most of them collected from the recent or distant events in our past. If the dream gains momentum, it usually tends to focus on some major event, usually very abrupt and disturbing. This is equivalent to how, after some feet dragging during the bland sequences of the party, the jolt comes in as a shock (explosion followed by the short power outage).
Pretty soon, the events the protagonist of the movie dreams abut take the left turn, and we find the crowd standing on the rooftop, witnessing the fantastic fireworks whose origin is completely mysterious. If you pay closer attention to what happens next, you’ll witness something similar to what tends to unfold in many dreams — what used to be a remote happening on the horizon all of a sudden and very quickly finds its way toward us. The fire and brimstone that was bubbling at the edge of the city horizon suddenly hits the neighboring buildings and forces everyone to rush into the staircase. Almost as if by conscious intention, the dangerous debris zeros in on our protagonists. That is one more of the many clues pointing to the fact that the film is actually depicting a dream sequence.
What follows are numerous glitches and illogical sequences that are the hallmark of a typical dream. Things go from gory to comical back to gory. Eventually, amidst the turbulence of apparently barely connected events, the dreamer finds himself flying high up in the air, witnessing an incredibly powerful and exciting scene of carnage that the monster is doing on the streets of New York.
The monster itself is absolutely fantastic. Nothing even remotely resembling that creature was ever seen before. The way it moves, the way it reacts to the attacks… Indescribable!
And of course, as in any dream, the abrupt and illogical series of events drastically change the vantage point, and the dream now continues on the ground. Sure enough, the creature, which was only seconds ago observed in midtown Manhattan, is now seen stomping the Central Park’s ground, towering over the dreamer. And as is the case in almost all nightmares, the creature somehow manages to zero in precisely on the protagonist. Out of the millions of people running and screaming in the streets of New York, the monster focuses straight on the witness himself. The monstrous creature forces its otherworldly gaze upon the observer, gives him the quintessential ‘evil eye’, before going for the deadly attack.
The dream continues, illogically, and then quickly ends, also quite illogically. One is forced to wake up, and scratch one’s head, wondering what was the nightmare all about in the first place?
This, in retrospect, portrays one of the most brilliant cinematographic experiences. Once again, I feel that the absolute novelty in the way this film was conceived and shot lends it too much of an originality, perhaps hurting its general perception a bit. However, with time, the techniques introduced in this movie will become more mainstream, at which point we’ll look back and recognize it for what it is — an instant classic.
In closing, I’d like to emphasize that this movie should not be viewed as a mock documentary, but rather as an imaginary recording of one person’s dream/nightmare. Once the viewer makes this shift from attempting to grok the movie as if it’s an intimate documentary of a horrible disaster that have happened in one of the largest cities in the world, to observing someone’s intimate dream, many things tend to resolve themselves spontaneously. The movie then ceases to be a frustrating, infuriating experience and starts feeling like sheer poetry.
The cues hinting that we are watching someone’s dream are amply scattered throughout the film. Perhaps the most convincing clue, at least the one that helped push me over the edge, is observing the way the monster moves as it is destroying the city. Simply put, the way the monster moves is nothing even closely resembling any other creature. One quickly becomes aware of the fact that these movements don’t seem to obey any laws of physics. And as is often the case with dreams, it is precisely this violation of the laws of physics that make our dream so compelling and so immersing.
Another tell-tale sign is that, instead of experiencing sheer horror upon witnessing the terrible carnage that the creature is enforcing on the city and its inhabitants, we get the exhilarating feeling of strange and inexplicable poetic beauty. Even though many laws of physics have been violated, and the creature is supposed to be doing something extremely menacing, we feel like we cannot take our eyes off its strange, lyrical ballet.
It is to the huge credit to the movie makers (and especially to the creators of this monster) that they have been able to evoke such strange and deep emotions instead of merely going for the cheap shots of jolting and shocking and grossing us out (as most viewers of lesser intellectual capacity are so angrily complaining about, asking for a more spoon-fed approach, where everything must be fully explained to them in the movie itself; apparently, people with low brow cannot withstand even a hint of intellectual suspense and indirection).
Well done, and I can’t wait to see how will this franchise unfold.
It’s been said that those who do not learn history are doomed to repeat it. In the spirit of absolutely not wanting to go again through the excruciating pain of software development that was the norm in the ’90s and the first 5 - 6 years of the 2000s, I am going to dissect the following historical document: XML, Java, and the Future of the Web, published on October 2, 1997, by Jon Bosak.
As I walk through some of the salient points exposed in that portentous documents, I will try to bring to your attention certain glaring errors in understanding and judgment regarding what is the goal of computing and of the information processing on the web, in particular.
Let us then begin with the opening sentence:
“The extraordinary growth of the World Wide Web has been fueled by the ability it gives authors to easily and cheaply distribute electronic documents to an international audience.”
Right out of the gate, Mr. Bosak takes the left turn and commits himself to the implementational aspect of the technology he is discussing. The key concept, of course, is ‘electronic documents’. In his view, the web is useful in its ability to offer an affordable distribution channels for prefabricated electronic documents.
The problem with the Ivory Tower views of the web is that, being high-tech bent, the high priesthood inhabiting the Ivory Tower tends to view the smallest unit of processable information as an object, such as electronic document.
Following at the heels of the opening salvo, the second sentence in this paper claims:
“As Web documents have become larger and more complex, however, Web content providers have begun to experience the limitations of a medium that does not provide the extensibility, structure, and data checking needed for large-scale commercial publishing.”
This is now quite confusing. If the smallest unit of information processing on the web is an electronic document, what need for extensibility, structure and data checking is he talking about?
Let’s look at the third sentence; maybe we’ll find some clarification in there?
“The ability of Java applets to embed powerful data manipulation capabilities in Web clients makes even clearer the limitations of current methods for the transmittal of document data.”
Huh? Java applets? OK, this is completely obsolete, but still belies the unexplained bias toward powerful data manipulation capabilities in Web clients.
In the fourth sentence (and opening a new paragraph), the author introduces the concept of Extensible Markup Language, and explains:
“… an Extensible Markup Language (XML) for applications that require functionality beyond the current Hypertext Markup Language (HTML).”
What is not clear yet is what kind of “functionality beyond the current Hypertext Markup Language (HTML)” is he referring to?
After delivering the opening salvo, as exposed above, the author goes on to elaborate on the severe constraints that HTML introduces and how debilitating these constraints appear to him. Here is the author’s list:
This feature is the holly grail to developers who are keen on creating their own, proprietary protocols. The much celebrated power that Extensible Markup Language (XML) brings to the table — namely extensibility, is at the same time the most troublesome aspect of the failed attempts to engage in collaborative computing. If anyone and everyone is free to use the technology that enables them to daydream any protocol they wish (in effect creating their own unique language), the Babilonian confusion created that way must quickly reach cosmic proportions. This is exactly what’s happening right now on the web — everyone feels entitled to dream up their own bloody protocol, and the potential online conversation tends to fall mostly on deaf ears.
The author states this clearly: “HTML does not allow users to specify their own tags or attributes in order to parameterize or otherwise semantically qualify their data.” The key phrase is “their own” — which amounts to “invent your own language”.
Similar to the old adage ‘form follows function’, structure typically follows the meaning of the information. Mr. Bosak’s lament in this respect is largely unfounded, since HTML does offer fairly comprehensive structure for expressing the semantics of the represented information.
Whether the author was aware of that ability to express semantics using HTML, remains a bit of a mystery. In any event, what the author seems to be complaining about with regards to the lack of structure in HTML is the erroneously perceived need for representing complex hierarchical dependencies.
There is really no evidence that an average consumer perusing the web resources has such a pressing need for consuming large and increasingly complex hierarchical constructs. In author’s own words: “HTML does not support the specification of deep structures needed to represent database schemas or object-oriented hierarchies.”
Yes, the above is true, but the question is: why would anyone have the need to consume ‘deep structures, object-oriented hierarchies, or database schemas’? The question, of course, remains unanswered.
Let’s examine Mr. Bosak’s objection regarding HTML’s inability to perform validations: “HTML does not support the kind of language specification that allows consuming applications to check data for structural validity on importation.”
I must admit that I’m a bit confused — why would anyone use a semantic markup language, such as HTML, to perform validations on ‘importation’? Importation to where?
The author then enlists some imaginary responsibilities that are, in his view, mandatory for the web client:
The above list belies a strong desktop-centric approach to software development. All of the ‘needs’ listed in the four items above fall naturally into the server-side jurisdiction. The client is only responsible for rendering the representation that the server side business logic prepares.
Toward the end of his paper, Mr. Bosak addresses some perceived inefficiencies that he sees in the hypertext system as implemented using HTML. His list is, again, very revealing. Here is his list of perceived inefficiencies when implementing linking via HTML:
Below is my response:
Location-independent naming: Huh? If I link to a resource representation, such as google.com, how’s that location dependent? Where in that hypertext link do we see any information that would reveal location of the resource representation named google.com?
Bidirectional links: This is the engineer’s wet dream; having links that will never get broken. Not gonna happen, time to grow up and deal with reality.
Links that can be specified and managed outside of documents to which they apply: It’s the damned documents again! Snap out of the document dogma and start living in the world of resources and their representations. In other words — content!
N-ary hyperlinks (e.g., rings, multiple windows): Not sure what this means, but I really cannot see any real life use for it.
Aggregate links (multiple sources): OK, 10 years ago no one apparently knew about real simple syndication and such, plus the aggregators etc.
Transclusion (the link target document appears to be part of the link source document): Also, no clue about the mashups that will become all the rage 10 years later…
Attributes on links (link types): What on earth does that mean? Link types? Like what?
Finally, the author cites the slogan “XML gives Java something to do” (no sources quoted in the original paper).
What does he mean by this battle cry? What would he envision Java will do with XML?
It’s hard to say after more than 10 years had passed since that battle cry was uttered, but my hunch would be that he was referring to the ‘nomadic’ nature of Java. In the olden days, Sun Microsystems was selling the “network is the computer” slogan, and so at that time Sun’s trailblazing language was Java. According to Sun, Java lives on the network, and is nomadic, courtesy of RMI (Remote Method Invocation). Snippets of Java code can travel the network, on demand, in order to supply just-in-time computations on the requesting client.
Supposing that the client had just received an XML document but doesn’t know how to present it to the user, a snippet of Java code could be invoked and downloaded on a whim. Once installed on the client, Java routine will massage the XML etc.
This dated model of ‘distributed computing’ has long been pronounced dead and buried. The problem is, we still have armies of software developers who tend to think in a similar vein. Because of that, software development on the web has turned into a terrible chore, and the resulting web sites tend to be nightmarish.
The moral of this story is to learn the lesson from the history, become aware of the blind alleys that have been paved by the developers a decade ago, and learn how to avoid the minefields, pitfalls and traps of the obsolete software development practices.
You’re welcome!
It’s been more than 10 years (actually, closer to 15 years now) since web search engines became mainstream. Anyone who’s been using google or similar engines is certainly becoming painfully aware of the woeful inadequacies that these engines posses. Surely the time has come to send those obsolete beasts to the elephant graveyard, and to tackle the problem with a fresh perspective.
Here, then, is a prioritized list of suggestions on how to improve the searching experience on the web:
If you meet a knowledgeable friend and ask him to help you with your next purchase of a digital camera, he’s not going to do it by blurting out absolutely everything he knows about digital cameras. That would be an overkill, and thus uncivilized.
Instead, he will most certainly engage you in a mini discovery session. Your opening question (’tell me how to buy the best digital camera?’) will be handled by gently asking several follow-up questions. Questions such as ‘what would be your budget for this purchase?’, ‘what do you intend to use this camera for?’, ‘how much previous experience with digital photography have you got?’, etc.
In a similar vein, a web search engine should engage us in refining our search. If I ask it to search the web for the “ball”, it should not simply go away and come back 0.19 seconds later with “about 346,000,000 results for ball”. 346 million results?!? Jesus, what kind of a result is that? Who on earth has the time to even entertain the idea that there could be hundreds of millions of results that are being offered?
As you can see, totally useless. Time for the google search engine to hit the old dusty trail… Same goes for all the other ‘me too’ search engines currently available on the web.
If someone asks me “ball?”, without giving me any context for their question whatsoever, what should my most reasonable follow-up question be?
Most likely, I would ask the interrogator: “Is this question related to porn?” (most web searches tend to be pornography related, and not knowing anything about the context of the search, I’d prefer to rule out the most likely case).
If the answer is negative, I would further ask if the question is commercial in nature (i.e. is the user looking to purchase a ‘ball’ of some sorts). Being able to differentiate between commercial and non-commercial resources on the web will help us shave off many, many millions of potential ‘hits’.
Following that, I’d ask the user if the question was sports-related. If it is, then I’d ask whether the ‘ball’ the user is inquiring about is a tennis ball, or a football, a soccer ball, a volley ball, etc.
If not, is it related to dancing (as in ballroom dancing)?
And so on. We can see that a much more reasonable searching experience is inevitably associated with establishing the context by asking sensible questions based on common knowledge (as well as on a bit of statistically valid data).
Today’s search engines are dull and dumb. Even though I may be using google thousands of times each month, my each search on google is treated as if that’s the first time I’ve ever searched for anything. The results google gives back to me do not, by any stretch of imagination, reflect my personal preferences, tastes, and biases.
As such, google is not only useless, but also infuriating. Instead of being so haughty, google and other search engines should dismount their high horse and allow me to register with them as an active and avid searcher. Once I become known to these engines, I should be in the position to declare to them my preferences. Such as: “I’m not interested in any searches that are porn-related”, or “I’m not looking to spend any money on the web, so don’t bother offering me any links where someone may be selling something”. And so on, the moral is that I should be able to be in the driver’s seat and to consequently control, shape and refine the results of my searches.
The answer is: of course not! Currently miserable and poor state of searching on the web is not there by accident. It fulfills certain agenda and certain business model. Google and other behemoths on the web obviously do not care about regular human users and their needs, they care only abut their bottom line. So, it’s all about making profit.
Because of that, I’m not holding any high hopes. The sad thing is that google does have all the means necessary to enable our searching on the web to transform from being painful and a huge waste of time, to being pleasurable and highly efficient. But, they won’t do anything to help us bridge that gap, and that’s why we must rely on our own devices, meaning, the community.
So this is a first call to the community to start uniting and working on ousting google from the search king throne. Hopefully, the open source community will once again manage to pull yet another stunt off, and to dethrone the dictators. I for one can’t wait to get a thousand-fold better search experience.
We now seem to be entering the phase where we are in the process of reclaiming the web. Who are we reclaiming it from? Why, from no one else but the hordes of software developers.
The web has been hijacked by software developers. It is only natural that the people who dedicate their lives to becoming as intimate with the machines as is humanly possible get to be the people who take center stage in building the web. But, there is trouble in paradise. The web is, in its essence, the exact opposite of the machines. The web is all about humans.
Now, software developers are humans, however they are humans who value serving machines more than they value serving other human beings. Because of that, the web is a horrific place right now, fully dedicated to serving the machines.
This terrifying state of affairs must change. And the only way it will change is if humans reclaim the web, pry it out of the slaves-to-the-machine greedy hands, and install it at its proper place — as a platform for serving the needs of the human mind and the needs of the human social dimension.
As has been argued elsewhere, resources on the web are mere abstractions. They are not the tangibles that one could indulge in. At best, one can hope to consume the representation of the abstract resources scattered around the web.
It is often erroneously assumed that resources are directly exposed on the web, in their raw form. One example would be the unanimous conviction that URLs are web’s native resources. Thus, a URL such as craigslist.org is viewed as a web resource.
Nothing could be further from the truth. A URL (such as craigslist.org) is not a web resource, it is merely a representation of a web resource. There seems to be an abstraction labeled as craigslist.org and hosted somewhere on the web. But what that abstraction (i.e. craigslist.org) really is, we have no way of knowing.
What we can learn about is one or more representations of that resource. For example, one representation of the craigslist.org resource is its URL. Another one could be the list of all the sites offered by craigslist.org. And so on.
Some people fail to see the usefulness of the representation. They’d much rather get their hands on the resource itself, instead of beating around the bush of resource representation. The best way to explain this problem is to employ assistance of some heavy duty science:
This famous premise was issued by Alfred Korzybski, one of the seminal thinkers who helped shape the communication and information theory.
A map is the representation of the territory. Without the map, we’d be lost when traveling through the territory.
In a similar fashion, resource representation could be viewed as a map that eases our voyage through the territory (i.e. the resource we’re exploring).
Very few people tend to question the usefulness of maps. It is our hope that, similarly, people will learn to embrace the usefulness of the resource representation.
The web is intended for human consumption. Humans are notorious for having fairly constrained short-term memory buffer, and are thus forced to consume information in a piecemeal fashion. The architecture of the web is therefore tailor-built to serve exactly that constraint — consume the resource representation at a fairly leisurely pace. Expecting humans to consume the resource representation in a single giant gulp would be utterly unrealistic, and so the fundamental architecture of the web is based on the principle of discoverability.
What that means is that, on the web, we are serving byte-sized chunks of resource representations. These byte-sized chunks are intended to be consumed by human users pretty much at a glance. Any need for consuming more, for learning more, gets fulfilled by letting the users explore further, allowing them to discover more intricate details of the resource representation.
Today’s web is mostly built by humans who crave serving the machines. As such, the way resource representations are typically architected on the web today belies the optimization to the way machines consume information. There is typically very little discoverability offered on most web sites, and the consumers of the representation are usually expected to digest insanely vast quantities of intricate information in a single gulp.
It is painfully obvious to even a very casual observer that the web today is not tailored for easy consumption by humans. It is as if some sociopaths, who lack any degree of empathy with fellow human beings, have built most of the web sites in operation today. Come to think of it, sociopaths is the fair characteristic of individuals who value interactions with the machines more than they value interacting with other human beings.
It is high time we start working on getting out of this sociopath hell.
As some of you might already know, I’ve been working on a true web product with some of my friends. It’s been going slower than I’ve initially hoped for, and for the longest time we’ve had this feeling that we’re all alone in a vast desert.
That all changed last Friday, October 19, when I’ve received a “Welcome to smarter email” message from Sandy. Now, after giving it only a couple of days of probationary grace period, Sandy became my faithful new secretary, and the web finally feels like a civilized place it once promised to be.
It’s just a freakin’ email, innit? Well, not so fast! Sandy is a brilliant piece of technology.
Remember when everyone was talking about the next killer app on the web? What will it be? Is it going to be a photo sharing site, a video sharing site, a social bookmarking site, or… Well, none of these. These are all merely frivolous, learn-the-ropes types of web sites. Soon the dust will settle, and all these sites, that are all the rave right now, will be forgotten.
But what will remain is sites like I Want Sandy. And there is a simple reason for that: sites like that one are hell bent on serving the real human needs.
Needs such as having a reliable assistant who will pay very close attention to what you’re doing. Needs such as being able to ask many confidential questions that may save your bacon, and get a lightning fast answer back.
These are the real human needs. We humans can easily survive and get along without necessarily having to see the latest photos of our friend’s puppy. However, being able to easily and seamlessly tell our assistant to remember many details that transpire during our busy workaday lives, and then, in a pinch, being able to ask our assistant to refresh our memory and to remind us, is something that is of utmost importance to us.
Not only that, but being able to do all these things and not worry about the location or the whereabouts of any physical object, is an absolute necessity. True, we can acquire a PIM device, our little electronic personal assistant (such as an iPhone), but what happens when we forget to bring it with us? Or, when it runs out of batteries? Or, when we (gasp!) lose it?
The true promise of the web is that it is always there. And, significantly, it does not depend on any proprietary device. In other words, even if we don’t have a cell phone, or a computer, we can still walk into any library or a corner coffee shop, and get all our vitally important information delivered to us.
The beauty of the web is that it is a platform that allows us to organize our lives in such a fashion. That in turn relieves the stress of having to be married to a particular object, such as a personal computer, or a personal information manager. Anything personal implies a limited, one of a kind physical object, that needs to travel with us. This arrangement is very stressful, because physical objects tend to get lost, stolen, forgotten, and easily damaged.
The web, on the other hand, cannot possibly get stolen, forgotten, lost or damaged. As such, it is the most robust, the most reliable assistant humans could ever conceive of.
So, the web is nothing new, and the email is nothing new, so again, what’s the big fuss about Sandy?
Well, it all comes down to the nitty-gritty — who’s going to do all this legwork? I’m a busy man, and expecting me to remember and stop what I’m doing and store all that vital information somewhere on the wiki or some other repository is totally unrealistic. Plus, when the time comes to retrieve some critical piece of info, expecting me to remember where I put it is another exercise in futility.
And so the promise of the computers and the promise of the web has been left largely unfulfilled. That is, until Sandy arrived!
You see, Sandy is a perfect human servant. Not only is she tireless and infinitely attentive, she also has unlimited and flawless memory. But on top of that, and most significantly, she is non-intrusive. And that’s the real clincher, the real value proposition that Sandy brings to the table.
From now on, all I have to do to enable Sandy to serve me is cc her on all my important emails. I may toss in a casual “Sandy, remind me to buy flowers for my wife’s birthday on Tuesday”, and Sandy will be on the job like white on rice.
The real trick is to get an assistant who will not expect me to do any legwork. Just a casual nod to the assistant should suffice. And Sandy seems to be the perfect fit. She seems to understand enough of a shorthand to be sufficiently useful, without expecting me to go out of my way to explain things to her.
OK, I’ll stop right here, and suggest you give Sandy a whirl. You should also know that I’m in no way associated with this product, nor with the team that produced this brilliant piece of work. So, in a way, I’m impartial and only look at this web site from a personal, pragmatic point of view.
Even though a proper disclaimer that ‘your mileage may vary’ seems appropriate here, I’d say that your mileage will not vary, and that you’ll get the exact same exquisite pleasure from using Sandy as I’m having right now.
Question: How many software developers does it take to screw in a light bulb?
Answer: That’s not funny!
I’ve been doing Ruby on Rails for more than 2 years now. Over a year ago, I went Java and .Net free, throwing myself head first into Ruby and Rails.
During that time, I’ve been focusing on building a comprehensive next generation product, that is entirely web based and founded upon the principles of Resource Oriented Architecture. But after expending two years of unwavering effort, I’ve decided to throw the towel in and switch back to developing in Assembler. Here are the reasons why I did it:
For 2 years I though Rails is genius, Assembler is passe. But is it really? I mean, think about it — is there anything that would not be possible to do in Assembler? Given enough time, stamina and mindless determination, one could code pretty much anything in Assembler. So, boo to Rails!
What better way to integrate to any legacy software than to drop down to the metal? At the bits and bytes level, any software looks like any other software. Big win for Assembler in this regard, big lose for Rails.
Rails comes prepackaged with tons of crap. Do I need that? Heck, I don’t even understand it, let alone need it!
Assembler, on the other hand, comes with just a small handful of handy operations (shifting bits etc.) Perfect for the radical simplicity kind of a guy I am.
As mentioned above, small and slim, Assembler is THE fastest code on earth. Ruby and Rails are so far away down the food chain when it comes to instructing the machines, it’s not even funny.
My tastes are simple — load a small chunk of info into the cubby hole, juggle it a bit, shift it left or right, push it, pop it, that kind of thing. That’s as abstract as I like to get. Assembler serves my tastes perfectly in that regard. Ruby and Rails — not that much.
Like I’ve mentioned above, bits and bytes are where abstraction is at. Think about it — anything under the sun, any concept that humans care to formulate, are easily expressible using bits and bytes. Do we need anything more than this perfection?
Even though I’m abandoning Ruby and Rails and going back to my first love — Assembler — I am not saying that I haven’t learned anything from Ruby. After the battle, all generals are smart. That’s the easy part.
Resource Oriented Architecture is the term I’ve coined a year ago, only to discover almost immediately afterwards that others have been thinking independently along the same lines. During the past 12 months, I’ve witnessed numerous discussion threads and debates centered around the importance of ROA. Most of these discussion threads belie complete misunderstanding of the Resource Oriented Architecture, which is very alarming, given that ROA is the native architecture of the web.
And web is the native infrastructure for information dissemination, exchange, and sharing.
Most software developers in circulation today have cut their teeth by learning how to implement computing algorithms. Something akin to: “here is a jumbled sequence of numbers, write a computer program that will sort them in ascending order”.
The emphasis in such an exercise is always on exhibiting reasonable amount of direct control over the execution logic. The would-be programmers have been groomed for generations to master the skills of gaining full control over the stream of instructions that the CPU executes. In other words, to be a computer programmer/software developer implies to them that a full control over all the processing aspects must be in place.
It’s a single point of human control, same as it’s a single point of machine control (i.e. the Central Processing Unit, or CPU).
But in the world of the web, such notions of centralized control are not only ridiculous, they are down right harmful. Still, armies of CPU-trained programmers have now been employed and deployed to develop software that will run on the web.
Is it a small wonder then that such ‘central point of control’ minded individuals are creating fully dysfunctional web sites? Indeed, old habits do die hard.
What the above described situation then means is that the existing workforce that is dedicated to developing software programs is pretty much a write-off. Because old habits die hard, it is quite likely that it will be much harder to unlearn the old habits and relearn the new ones, than to start from a clean slate.
However, given the vast demand for web-based software that is out there, we must work on creating some sort of a compromise, in the attempt to bring the crusty old ‘central point of control’ software development workforce into the web fold. For that reason, we need to continue explaining the difference between the Central Processing Unit software architecture, and the Resource Oriented Architecture.
One of the hardest things to do in life is to make a successful transition from doing something to managing that same thing. The temptation to roll up one’s sleeves while managing the process is simply too strong to resist. And that’s why not too many people end up being good management material.
In the world of software development, right now there is a huge demand for people who are capable of abstaining from rolling up their sleeves and instead delegating the responsibilities to the ‘workforce’ out there.
What does that mean? In a more technical parlance, it’s been proven that once software developers get trained in making procedure calls when attempting to process some information, they tend to get addicted to that gateway drug. Similar to how to a person with a hammer everything looks like a nail, to a programmer who had learned how to make procedure calls, every information processing challenge looks like a string of procedure calls. This algorithmic frame of mind is very hard to get rid of, once a person gets it contracted. And in order to become an efficient web developer, each and every procedure-besotted person must learn to let go of the procedure call driven world view.
Most people learn how to program computers by implementing procedure calls that are local. What that means is that their world view is CPU-centric. In other words, the executable code in its entirety is sitting on a local box, usually right next to the developer’s desk. The developer then intuitively grasps the world as consisting of a single Central Processing Unit which acts as a traffic cop, deciding on who gets to do what and when. The ‘who’ in the previous sentence refers to the procedure. Typically, a programmer will modularize his code into a fairly large number of procedures. These procedures will then be called at opportune moments, will perform the intended processing, and will then recede in the background.
This situation is the prescribed way for teaching newcomers how to develop software. It willfully ignores the real world issues, such as that there is very little use and need in having a ‘desert island’, ’single sink’ scenario, where a computer user will be sitting alone engaged in the ‘glass bead game’ on the computer. In the world of business at least (and also in the world of entertainment), multiple users are a must. Meaning, CPUs and people will be networked (999 times out of 1,000).
There inevitably comes a time when a software developer wannabe realizes that a transition from a single CPU to multiple CPUs connected via the network, is unavoidable. At that point, the newbie usually gets struck by the immense complexities that such transition entails. And it is at that point that the newbies all over the world decide to drag in the procedure call world view into the networked world.
Now the problem of control in a multi-CPU environment arises. Who’s in charge here? It used to be that a single human mind was in full charge and control over the execution of computing instructions, via the single CPU. Now, all of a sudden, multiple CPUs which are distributed across vast networks enter into the equation. The remote nodes start posing the problem when it comes to controlling the proceedings.
The only way for such developers to try and tame this complexity is to wiggle in their chairs and to fabricate some hairy-brained scheme for enabling remote procedure calls (or, RPC). Various mind-boggling protocols get implemented (CORBA, RMI, DCOM, SOAP, SOA, etc.) All of these protocols are incredibly arbitrary, non-compelling, frighteningly complex and brittle.
As we can see, this transition from making local, simple-minded procedure calls to making distributed, remote procedure calls never goes well. In the end, it inevitably results in fragile, brittle software that requires constant duct-taping and chewing-gumming in order to stay afloat.
It is obvious to even a casual observer that the majority of software projects, today as in the past, fail miserably. As the complexities of the business scenarios continue to increase at a frightening rate, this rate of failure will only skyrocket.
At this pace, it won’t be long before the software development industry turns into another Titanic, if the majority of developers continue to charge down the remote procedure call path. Developers who refuse to go down with the ship have only one option — abandon the RPC ship and hop into the ROA boat.
But as we’ve already seen, the transition from navigating a huge, unwieldy ship to rowing a tiny nimble ROA canoe is proving more challenging than most developers are prepared to bear. That’s why there must lie a major shakeout ahead of us, a shakeout that will separate the monolithic totalitarian software practices from the nimble, distributed ones. And ROA practices are certainly on the opposite side of the monolithic remote procedure calls practices.
It seems to me that, in the process of making the transition from RPC to ROA, the biggest stumbling block for the entrenched software developers lies in the fact that ROA proposes erecting an impenetrable barrier between the client and the resourses on the server. In the bad old RPC world, such barriers are unheard of. In other words, if the client is privy to the protocol that the service-oriented server had arbitrarily and unilaterally made up, the client can intimately manipulate the state of the server.
No such thing is ever possible in the ROA world. And that’s the biggest put off for the honest-to-god procedural crowd. They simply don’t seem physically capable of conceiving the world where it would not be possible to ‘crack the code’, learn the protocol, and then rule the server on the other end.
So in order to make a successful transition to ROA, these software dictators must learn how to abdicate from their dictatorial throne. What are the chances of that happening en masse any time soon?
Slim to none? What do you think?
Software developers seem largely incapable of understanding the difference between resources and their representation. Understanding that difference is absolutely vital in understanding REST and the Resource Oriented Architecture (ROA).
Is it a small wonder then that we are beginning to see articles like this one (”Why is REST so hard to understand?”) pop up in the publications devoted to the web architecture? It is absolutely clear that we won’t be in the position to advance ROA practices unless we reach a critical mass of people who do possess a solid grasp of what is the difference between a resource and its representations.
Right now, it seems like only an infinitesimally small percentage of software developers are aware of the significance of that difference. For example, if we say that there are ten million software developers worldwide, 9,999,000 of these developers are blissfully ignorant that such a thing as resources and their representation even exists. Which leaves us with only about 1,000 developers who truly understand what it all means. Not a very encouraging statistics. As a matter of fact, the situation today is right down dismal.
We need to do something quickly in order to remedy this catastrophic situation. My small contribution here is to attempt to clarify the difference between resources and their representation. I will use mostly concepts from everyday life for illustration purposes. I will then attempt to draw the parallel between these concepts and the concepts one encounters in the arena of software development.
Let’s start from the top: a resource is anything that humans find useful. For example, a house might be a resource. Or, money might be a resource. We find houses very useful, because they offer certain level of comfort in our daily living. We also find money very useful, because it’s a resource that enables us to get other resources, such as houses.
Ten years ago, when I was buying my first house, I wanted to see what kind of a house can I afford. To that end I met with a mortgage broker, who interviewed me in the attempt to assess my buying power. Among other things, he needed to know how much money can I allocate towards the down payment on the house.
Once I told him how much money I have for the down payment, he was able to plug that information into his spreadsheet and then tell me what kind of mortgage do I qualify for. So I was then all set to go out and shop for the house, right?
Well, not so fast! Just because I’ve blurted out a dollar figure that I had in mind for the down payment, didn’t automatically mean that I fully qualify for that mortgage. Because, you see, my word in these matters was viewed as being largely subjective, that is, prone to miscalculations and all kinds of other aberrations. What the bank needed is a more objective assessment of my buying power. Talk is cheap, and anyone can claim that they have one hundred thousand dollars tucked away in their bank account, ready to be plopped in toward the down payment, but the reality might be somewhat different.
Because of that, the banks have devised a more impartial practice, whereby the applicant must provide what is deemed to be a more objective proof that the money really is in the applicant’s bank account.
In this example, the money that has been allocated for the down payment on the house is regarded as a resource.
Now, the down payment money we are talking about may indeed be sitting in my bank account. But how am I to truly convince the mortgage broker that it is really there? Well, I use the means of representation, that is to say, I use something else that acts on behalf of that money. For example, I use my words to convey the fact that I do have $100,000 in my bank account. My words then represent my money.
But, as we’ve seen, that representation (my words uttered in a casual conversation) is apparently not good enough for the mortgage broker. He needs something more ’solid’ before he is fully convinced that the money is actually there. Meaning, he needs a different form of representation.
Typically, what the mortgage broker would deem a fairly impartial and objective representation of my money is a piece of paper issued by my bank that claims that it is true that I do have $100,000 in my account. In other words, once the mortgage broker receives that piece of paper, he can ‘take it to the bank’, so to speak.
That piece of paper is what we call a representation of a resource. The real money is nowhere to be found in that representation, yet in a somewhat superstitious manner, all the parties involved almost religiously obey and agree that a piece of paper is as good as the real thing.
The exact same protocol abides on the web. There, as in everyday, non-virtual life, we have resources which are tucked away somewhere, and all we get to see, feel and touch are the representations. Resources on the web are merely concepts that are being represented using other concepts. On the web, as in real life, no one ever gets to see, hear, feel and touch a resource. All we get is mere representations.
We are free to attempt to manipulate those representations. And even in the cases when our manipulation yields perceptible differences, we have no grounds to claim the we have actually manipulated the resource itself. All we can conclude is that the resource representation has changed under the influence of our actions, nothing more, nothing less.
For example, if there is a resource such as a volleyball tournament published on the web, I can get its representation by sending a request for it. I may then decide to destroy that tournament by manipulating the tournament’s representation. And my action may result in an affirmative representation (i.e. the resource may respond by sending me its representation which states that it has destroyed itself). I may then conclude that the volleyball tournament has, indeed, been destroyed. But I really have no way of ascertaining that. All I can claim is that I have acted upon the initial representation of that volleyball tournament, I have sent it the request to destroy itself, and I have received the confirmation that it is now destroyed. However, the resource itself may still be alive and well, existing somewhere beyond the reach of the resource representation. The only thing that is manifestly certain is that from that moment on, the resource will refuse to render its representation for the incoming requests.
This is similar to how, in the real world, no one would ever suggest that I take the mortgage broker into my bank’s safety vault and point him to the pile of cash that’s sitting there, and tell him: “Here, here’s my $100,000, please count them and let’s get on with it!” No one goes straight to the resource itself in real life, and the same holds true in the digital life as it gets distributed on the web (not to mention that even the physical cash is merely a representation of some other concept, etc.; one can never possibly get to the bottom of it, that is, the real resource is nouminal, unreachable by us mere mortals).
Understanding this distinction is vitally important if we are to move forward successfully in building the functional web of information. It is my experience that none of the developers I’ve ever worked with understand this situation, and that all of them erroneously believe that they are, at all times, working with the ‘real thing’. Nothing could be farther from the truth, so I implore all developers to take a moment and try to digest the difference between resources and their representations.
It was around this time last year that I’ve published my first reference to Resource Oriented Architecture (August 8, 2006). I’ve received numerous feedback in the past year or so, most of which revealing the fundamental misunderstanding of what does Resource Oriented Architecture (a.k.a. ROA) really mean. One of the most virulent errors in judgment revolves around the false dichotomy between resources and hypertext.
This misapprehension, that I’ve been hearing a lot about, typically goes as follows: “yes, there are resources published on the web. But they could hardly be regarded as being pivotal to the architecture of the web. A much more fundamental concept that makes the web tick is hypertext.”
This line of reasoning belies a fairly feeble mind. It fails to recognize and acknowledge that hypertext is also a resource. Such reasoning takes one type of a resource (i.e. hypertext) and pits it against all other types of resources.
The false dichotomy described here serves only to confuse the issue. Nothing is clarified if we arbitrarily single out one resource out of many existing ones, unilaterally assign that resource some ’special’ status, and then claim that all other resources are of lesser importance. That smacks of sectarianism and therefore lacks the intellectual rigor of even the most basic kind.
It is high time we realize that the web is comprised of resources and resources only. Be it a regular text, a hypertext link, or any other media type. None of these resources warrant some elevated, special status. They are all equal citizens of the web.
One of the absolutely most heinous types of software intoxication is what I like to call Tribal Computing. This is the form of computing that is tied in with the primitive, proprietary setup and is a remnant of the old days of early adoption of computing by the businesses.
Ernst Haeckel (a German natural historian) wrote in 1868: “Ontogeny, or the development of the individual, is a short and quick recapitulation of phylogeny, or the development of the tribe to which it belongs.” (in this context, ontogeny is the development of the fetus, and phylogeny is the evolution of a species). Haeckel was referring to the way the fetal development of mammals seems to parallel the evolution of all life on earth. The fertilized mammalian egg first resembles a single-celled amoeba, then a multi-celled sponge, then a jellyfish, then an amphibian, then a reptile, then finally becomes recognizable as a mammal.
Applied to the field of computing, one could say that the development of computing seems to parallel the development of human society. At first, the society was segmented into small primitive tribes, which slowly evolved into larger units, such as cities, counties, provinces, regions, countries, nations, and so on.
We are today standing on a threshold of global computing (i.e. the web). But, in certain ways, we still seem deeply entrenched in the primitive, stone age world of tribal computing.
Most software in operation today is severely localized. Meaning, it was built to live on a single box, single CPU. Everything about it is very closed, very proprietary, and extremely local.
Some software allows for certain level of connectivity, whereby other software systems are given an opportunity to connect to the localized software and share/exchange some information.
Only the latest, most recent batch of software products (the so-called social software) has left the world of tribal computing and is reaching out to the global computing space.
Most tribal software was/is built with an engineering frame of mind. Whenever we approach building something with an engineering outlook, we are striving to introduce maximum level of control into the system.
One of the most detrimental side effects of building software with an engineering slant is the temptation to retain the state of the conversation. As we’ve seen in our first installment (State), the best way to create brittle and buggy software is to insist on retaining the state of the conversation that had transpired during the operation of the software product.
In addition to that, insisting on staying local (i.e. tribal, single box, single CPU etc.) means that the point of control also stays tribal. There is a single authoritative instance that claims to know everything and that controls what can and cannot happen on the system. That instance then becomes a single point of catastrophic failure.
In contrast, non-tribal software exhibits stunning capabilities for growth thanks to relinquishing the rigid engineering attitude. One of the fundamental reasons why web is such a spectacularly successive computing platform lies precisely in this abandoning of the tribal past and moving beyond the need to control and retain the state of the conversation.
By deciding to not care about the state of the systems engaged in the conversation, the non-tribal, globally oriented software is free to grow in any direction and to scale to any level of complexity.
We will see in the next installment what are the most optimal ways to achieve that level of robustness. Stay tuned.
Note: I wrote this article back in 2001. Decided to publish it here, in case anyone cares to explore Miles Davis’s final years of playing real music.

During the first phase of his incredibly long career (the first thirty years, from 1945 to 1976), Miles Davis showed the world what true artistic growth means. His comeback in 1981, after a five-year long hiatus, was more of an anti-climactic event, but the first thirty years were definitely a period of the unprecedented constant expansion of the musical horizons.
His most prolific and most exalted period coincided with the first five years of the 1970s decade. That period is also the most controversial one. Many of the Miles’s peers (alto saxophonist Jackie McLean among the most vocal ones, but also legendary trumpet player Dizzy Gillespie etc.) complained that he abandoned jazz in 1970. Also, many critics and fans turned their backs on Miles and his new directions in music. Here, we will explore this most underprivileged, but nevertheless crowning achievement of Miles’s illustrious career.
As everyone knows, Miles had a penchant for simplifying things. Never the one to build up a flashy vocabulary on his instrument, he was always content with simply focusing on the core music, leaving the fluff out. In that respect, he grew to be the undisputed King of Understatement. His phrasing was sparse, his notes fragile and often bashful. And that’s what the fans adored about him.
It is obvious, from listening to all his famous recordings from the fifties and the sixties, that Miles was into distilling the music. By that we mean removing any extra material, using it as a pulp from which to sublimate the essence of the music. One of the most famous examples of this distilling is the legendary “Kind Of Blue” album (1959), where the musical forms are stripped down to their bare bones. On that album, Miles drops the elaborate, over the top streams of chord changes (or, harmonic progressions), in favor of the placid, gently moving stability of modal improvisation. Like a pendulum, the harmony swings from the first chord to the second one, and then back to the first one. It never leaves this gravitational pull in order to reach out for a third, fourth, and so on, chord. The overall impression is that of an almost static, but still very satisfying musical shimmering.
This process of distilling continued throughout the sixties. Various experimentations were taking place, in the search of the perfect expression of the musical essence. Miles purposefully avoided employing any free jazz devices during that search, as he was much keener on performing the vivisection of the musical form, or of its harmonic structure.
But then, something happened in 1969, and Miles took a radical turn in his directions. It is impossible to say what is it that actually made him make such a complete turnaround, although the theories abound. As we’ve already mentioned, many people feel that Miles had decided, at that point, to abandon jazz. We can only guess the reasons: maybe he reached a point of saturation or boredom. Maybe he got strongly inspired by other types of music that were flourishing around him. We’ll never know, but despite that, the results of this major shift were astounding.
One of the things that influenced Miles in a big way at that time was Jimi Hendrix. Hendrix’s brash and flamboyant ascension to the rock firmament left the indelible impression on Miles, who, although already in his mid-forties, was still in the possession of a very fresh and impressionable mind. One can easily trace Miles’s switch to the electrified trumpet, and his sudden decision to start using the wah-wah pedal, to the wild guitar of Jimi Hendrix.
Another thing that deeply impressed Miles at that time was the music of James Brown and Sly Stone. It is fairly easy to see the connection there — Miles started employing the same rhythm section grooves that Brown and Stone were cultivating throughout the sixties. So, Miles’s new formula was to put Hendrix on top of the swampy, dirty grooves of James Brown/Sly Stone jams.
However, the results were dubious (at first). It doesn’t seem like Miles was able to find the perfect distilled form on the first few tries. When we listen to those early attempts (as recorded on such seminal albums as “Bitches Brew” from 1969, or “Live/Evil” from 1970), we often hear that the band does not gel, and many a time the soloists appear to be rambling as well. It is difficult to explain the reason for such incoherence, although one can assume that it may be due to the apparent ‘dumbing down’ of the musical form. This apparent dumbing down was something that could have thrown all those awesome musicians off their balance. The thing is, when you put geniuses, or near-geniuses of the likes of one Joe Zawinul, Herbie Hancock, Keith Jarrett, John McLaughlin, Wayne Shorter, Jack De Jonette etc. in the band, and you insist on distilling the jam to its basic, visceral ingredients, it may serve to utterly confuse those masters. And that is apparently what Miles was attempting to do. He even reportedly instructed John McLaughlin, at one of the studio sessions, to “play the guitar like you don’t know how to play it.” No wonder McLaughlin walked out of the session scratching his head!
So, trying to play one’s instrument as if one doesn’t know how to play it certainly sounds like a serious attempt at dumbing the music down. And, by the way, that’s exactly the accusation that Miles received while he was toiling in his early seventies period. It would be interesting, then, to take a closer look at this dumbing down process.
History of the twentieth century music has often been portrayed as the ‘race to the bottom’. During the early decades of twentieth century, the cannons from the classical music were adopted, and subsequently simplified, in order to reach wider audiences. Many popular tunes of that era were built on a simplified set of assumptions, that came from the great tradition of Western classical music. Such tunes then got further elaborated upon by the leading jazz musicians. Soon after that, younger audiences were mesmerized by the even more simplified forms of rock and roll and rhythm and blues music. Such musical forms resulted from further stripping down and simplifying the principles of proper song craftsmanship.
The big revolution occurred when the Beatles emerged in the early/mid sixties, bringing to the focus of everyone’s attention their version of the completely unschooled, unrefined artistry. Other bands followed their lead, and finally, in the mid seventies, punk rock burst forth, bringing with it the complete disregard for any music rules. Techno and dance pop, together with the total dissolution of melody (as found in rap music), ensured that all the carefully constructed rules got to be abandoned en masse.
This process explains the often cited ‘dumbing down’ of modern music. In a parallel fashion, Miles Davis also followed this model, although in his own peculiar way. He began his career as a conventional jazz musician, slowly bringing his artistry to the new heights of simplification. After a careful and painstaking process of musical deconstruction, Miles reached a crossroad where he couldn’t continue playing the music he was involved with for the previous couple of decades, and by 1969, had to make an abrupt turn. The perfect vehicle for expressing his newly found directions were electric instruments, which he happily employed from 1969 onwards.
While during the 50s Miles rejected harmonic progression (i.e. chord changes), and focused on the pendulum-like swinging between two chords, in his post-jazz phase (that lasted throughout the 70s), he even abandoned the two-chord approach, and settled on a single chord. He would then indulge in prolonged jamming based on a single chord (or, as Dave Liebman puts it, “four hours of playing in Eb”).
This oversimplification of the music was perceived by the majority of followers as the dumbing down of the music. However, there is an alternative way of looking at this process:
Instead of viewing it as dumbing down, we could view this process of simplification as distilling, or sublimating the music. If we get rid of all the decorative, circumstantial attributes of music, and focus on the bare bones musical experience, we get to the point where only one note can express so much. And this is where, in our opinion, Miles was heading during his electric period.
Like all the alchemists before him, Miles was into smelting, refining, going over the same material in a repetitive fashion. He knew (or instinctively felt) that, in order to reach perfection, one must tirelessly pour over the issue at hand. The polishing process for Miles meant tackling the same material over and over again. It took him literally years to perfect this approach. Musical themes and little motives that first surfaced in 1969 are found on the seminal recordings reaching into the mid-seventies. That means that Miles covered the area of approximately six years worth of intense exploration.
Another important aspect of this process was that the material was extremely sparse. Several riffs and bass figures will be used and re-used over and over. Knowing that Miles was a prolific composer, we must ask ourselves: why did he subject himself to such a spartan approach to making music?
For Miles, the perfection in music was in achieving simplicity. In that, he was akin to the Beatles, who, being totally primitive and unschooled musicians, realized that the only way to reach their own, unique sound was to simplify the clichés they’ve been growing up with. An anecdote related to the Beatles reveals how John Lennon and Paul McCartney used to engage in a contest where they would try to write a hit song whose main melody will consist of one note only (repeated as many times as one wishes). Seeing how almost impossible that task is, they settled for a contest in which the person who writes a chart topping tune consisting of the least number of different notes wins! Lennon proved particularly keen on crafting such heavy hitters, consisting of minimal number of different notes (c.f. the main melody of his smashing hit single “Help” (1965), where the first ten notes are identical; also, McCartney’s contribution to the B-side of that single, his “I’m Down”, consists of approximately two alternating notes). The Beatles took particular pride in the fact that they were able to sell millions of these records that actually consisted of utterly primitive and unsophisticated music material.
Miles Davis had similar things on his mind. The only difference was, he wasn’t going for the two or three minute hits, but was rather interested in the prolonged groove, that would expand into eternity. He wanted to achieve a trance-like state in which the music will carry the listener into the groove that extends into the future forever.
French post-Impressionist painter, Paul Cezanne, was another alchemist of Miles’s caliber, only from a different era (and using a different medium of expression, of course). Cezanne used to paint Mont Sainte-Victoire (a mountain in the vicinity of his brother’s house) over and over again. Covering the period of more than ten years, Cezanne would always return to this motif. He was refining it, melting it and smelting the raw material of visual perception, until he reached the utmost simplicity of its representation. It was a breathtaking achievement, the one that almost parallels Miles’s achievement from some eighty years later.
Music is actually nothing but a contour of silence. The more accurately music indicates the presence of silence (by using music’s unique devices, i.e. musical patterns), the more profoundly will the true silence reverberate. Miles knew this, and had devoted his entire opus in the seventies towards achieving this ‘outlining of the profound silence’.
It is similar to the issues surrounding knowledge vs. ignorance: our knowledge is merely a contact point with our ignorance. The more we extend and expand our knowledge, the more we intensify and elaborate on this contact with the unknown. That’s why it is said that “the more you learn, the less you know”. Same thing is with music — the more you refine your sound, the more you bring forth pure silence.
And pure silence is the essence of the music.
So, with Miles’s music in the period from 1973 to 1975, the prolonged jams, this jam-packed wall of sound, was there only to serve the timeless, the unborn silence. The more he and his band were freaking out, raving and raising hell on their electrified instruments, the more they would conjure up the deafening silence, the absence of any sound.
In order to achieve such heights of expression, Miles had to abandon his learned approach to making music. He had to go back into the realm of primitive, into the time before history.
First hints of the imminent change in the Miles’s approach to making music became apparent in February 1969. The abrupt deviation in the way things are being done was signaled on more than one front. To begin with, it coincided with the introduction of the phenomenal British guitarist John McLaughlin. He had just arrived in New York when Miles (apparently in order to piss his drummer Tony Williams, who had just decided to leave him) unexpectedly invited McLaughlin to sit in on the recording session. McLaughlin didn’t blow away that golden opportunity. He contributed his vast knowledge of jazz and rock to build an unprecedented ’stream of consciousness’ jam session.
Another new thing about the “In A Silent Way” session is that it also produced two long tracks (each side of the LP contained only one track).
Finally, post-production studio techniques have been used extensively, in order to ‘post-compose’ those pieces. Much like the movies post-production approach, the audio heavy editing approach was very novel and unheard of in the jazz world of that era.
Miles’s opening up to the long form (when it came to the length of the compositions, the only limiting factor seemed to be the amount of music that could physically fit on the side of an LP) enabled him to concentrate on introducing and building the grooves. Harmonic movement had been completely abandoned, in favor of one chord (or, a vamp). Participating musicians would then produce elaborate solos over those simple vamps. Interestingly, despite the insistence on producing hypnotic grooves, most tracks felt like the music is not really going anywhere — the overall impression was static (sometimes even motionless).
Miles had much more ambitious plans for his next project (the famous “Bitches Brew” double album, recorded in the summer of 1969, released in the winter/spring of 1970). Using the expanded lineup that was laying the groundwork on the “In A Silent Way” sessions, Miles ventured out into a much choppier sea. The compositions remained long, but this time app