Every week now since April, 2001 I have been writing an article for ITWorld. For a couple of years they where about XML, then I switched over to a wider e-Business banner and, well, wrote about whatever took hold of me at the time.
Generally, when a new article is published on the ITWorld site, I blog it here. Some folks get an e-mail feed directly from the ITWorld site.
Anyway, I'm finishing up the E-Business articles for a while at the end of this month. I'm going to write stuff from a different angle for the next while on the same weekly schedule with ITWorld. I'll blog it here as before.
The plan is that some time next year, I'll switch again to something that ITWorld has cooking. More news on that later.
"These days we pick up vast quantities of 1s and 0s. We still hand over the dollars but we don't get anything back in return. At least nothing that we can easily relate to with our senses. No lovely vinyl. No smooth and visually appealing packaging. Just sense-impervious electromagnetism." -- Scratching and sniffing the ones and zeros
"The emphasis in the industry is shifting from software/hardware as something to be owned and cherished and capitalized and depreciated to software/hardware as something to be consumed and rented and thrown out over time." -- This isn't a device, it's a service
I have changed over to the new blogger stuff completely now. Using the blogger widget to show the archive. Using the built-in commenting system rather than haloscan. I'm using one of the default skins unchanged (for now).
The re-direct to feedburner for the feed seems to be functioning fine.
Hopefully, I can leave everything alone now for another five years :-)
As the use of XQuery explodes out there - thanks in large part to native support in "the big 3" enterprise RDBs - the benefits of a standardised interface to it from programming environments becomes apparent. JSR 225.
There is a direct analogy here with SAX (Simple API for XML). Just as with SAX, I predict implementations of JSR-225-ish APIs in other languages. Unfortunately from a meme propagation perspective, XQJ bakes Java into the TLA. This nearly happened to SAX ten years ago. Yes, count'em. Ten years ago.
"The Web does not automatically result in dis-intermediation - even in areas where you would think dis-intermediation is very possible. It seems to me that in at least some areas, Web technology actively promotes the creation of extra layers of dis-intermediation. " -- Re-intermediating the dis-intermediated
"Real world clouds exist at different distances from the earth from low to high. Now, think of the low clouds as network-space that is closer to you - your Intranet. Think of the higher clouds as network-space that is further away from you - the Internet. Clouds are very good at blurring boundaries. We can exploit that..." I have looked at clouds from both sides now
"I remember learning at school that the human appendix does not do anything. It used to apparently. Something to do with cellulose digestion. We humans do not chow down on cellulose much any more. Not since we stopped roaming the prairies in our loincloths and chewing on the switchgrass. "-- My PC has appendicitis
"The essence of the problem is time. Time has a nasty habit of moving inexorably forward. It is as if time is a dimension we need to add into some websites so that as time 'expands' forward, the website expands with it." -- Implementing time by expanding space in Web 2.0
"It is those delicious moments - when the simplicity of pattern combinatorics replaces unruly complexity - that make enterprise architecture such a rewarding activity." -- Combinatorical Enterprise Architecture
...then you just might be a document-centric, architecture/design/develop person who knows about documents and cross-reference management and automated conversions and content change control and all that markup mullarky...
If so and you are in the market for a challenge, lets talk.
"The degree to which information technology can truly help problem X is inversely proportional to the enthusiasm with which the average young software developer approaches the problem." -- The rush of tools to the hand
"For my own amusement, I have gathered together some of my favorite examples of nasty, ugly little facts that ruin beautifully simple "if...then...else..." theories. So, without further ado..."IF this THEN oops!
"If you sense some bubbling frustrations seeping through my words this week take ten bonus points for observation. I am doing my best to turn a full-on rant into a mildly excoriating admonition to the members of a group of semi-technical folk I call the Just Use X club..." -- The Just Use X club
Pat Helland coins a useful phrase : "Behavior turds". Imperatives masquerading as declaratives.
The distinction between nouns and verbs is very fuzzy at the boundaries where I spend a lot of time. A key skill in Enterprise Architecture (a really *key* skill) is an awareness about the subtleties of human language. (Example: You have never, ever sent an e-mail. The bits you composed in your machine get copied - not sent - to the destination machine.)
I would suggest that an important part of any EAI architects training should be some quality time spent learning about Speech Acts, about Frege & Russell on is and the referential theory of proper names etc.
 A self-referential giggle : The word 'coin'. An example in English of a noun used to coin a corresponding verb = the word 'coin' :-)
"Using the most prevalent models for dealing with parallelism, massive CPU power corresponds to rampant, mind-bending non-determinism in the software that runs on top. Humans, by and large, have difficulty reasoning in the face of rampant non-determinism. It seems to me that this new "skill" is like asking people to rid their brains of susceptibility to phenomena like Wason Selection" -- Climbing The Cognitive Wall: Human barriers to progress in IT
Bill de hÓra has taken an exciting position with Newbay. Best of luck Bill. Many moons have passed (about 60?) since that day at WWW9 Amsterdam when I was walking the floor handing the microphone to folks who wanted to ask TBL a question - you were one of them. Some time after that you joined Propylon and have been in the middle of a whirlwind of asynchronous messaging, app servers and content management systems ever since. You are probably best known out there for your work on ATOM but I'm sure you will be adding many interesting mobile-oriented strings to your bow at Newbay who are very serious innovators in that whole Mobile 2.0 space.
"...On the Web however, it has historically been well nigh impossible to take links without giving some back. When you create a web page you cannot help but create a resource that others may in turn link to. ... [...] With all the hair pulling about viable business models on the Web, increased tension between community and commerce is inevitable. The days of "Give a link. Take a link." may be numbered. In years to come, we may look back on the birth of Rich Internet Applications as the moment when community finally had to give way to commerce: for good or ill. " -- Give a link, take a link
For years I have argued that SOA is all about asynchronicity. SOA is all about temporal decoupling. Distributed Transactions is for the birds in the general case etc.etc.
In the last, say, 2 years, I have backed away almost completely from the whole SOA thing because my notions of what an SOA is have not been shared by the majority-holding corba/rpc-with-angle-brackets exponents.
It is refreshing to hear Pat Helland explain what he conceptualises as SOA. He is saying what I have been thinking, but he us doing it with much more authority and much better analogies that I could ever muster.
rsi: I think I'm okay on this score now. I took a break after I F-barre-chorded my way into trouble and built it back up slowly. I have taken steps to reduce wrist strain while keyboarding emacs all day and that has helped too.
emacs: I have grown nails on my left hand for fingerpickin' (a style that I am becoming devoted to). The long nail on my pinky was becoming a problem in emacs which is a pinky-intensive editor. Then it occured to me that I never pick a string with my pinky so I cut that one. My fingernail assymetry has now deepended but life in emacs is much easier.
physics: The physics of harmonics (natural, tap, pinch) has provided an unexpectedly interesting detour. I found some pinch harmonics on the high E string of my acoustic. Now it has all the dynamic range of a deep space vacuum on my acoustic but come the glorious day I get an electric, I'm looking forward to outdoing the local felines with my sqealies.
ear: My ear is changing and my ability to discern differences in pitch is definitely improving. I can tune my guitar to standard tuning given a correct high or low E and get the rest reasonably correct. A couple of months ago I couldn't to this.
playing over a chord sequence My ignorance of music was such that I didn't really grok what that phrase really meant. I'm beginning to get a handle on the relationship between vamps and lead lines and how music theory can guide you as to what goes with what. I got a backing track for a 12 bar blues in A... I played random notes from the A minor pentatonic on top of it... The lights went on in my head. I cannot do it yet. But I get it now. I see where I'm going now.
rag time finger picking:The zoo of fingerpicking techniques is completely fascinating. I can hobble a few pinch patterns and the odd hammer-on/pull-off. The bit that blows my mind at the moment is the rag-time technique of keeping an alternating baseline going with your thumb while simultaneously picking out melody notes on the treble strings. I don't have enough independent CPUs between my ears to handle all the independent - but synchronised - processes involved here. I need an Erlang upgrade for my head I think.
metamodels, onomies and ologiesThe "I,IV,V" chord notation is a meta-model. Maybe even an SGML-style architectural form...I can see the beginnings of a taxonomy of fingerpicking styles taking shape in my head...With a little bit of Python magic I can create my own software-based effects box....Argh! Stop!
useful online stuff:Mike Herberts, Justin Sandercoe, Next Level Guitar and Heartood Guitar all have great stuff available online. As well as oodles of great free stuff I have paid some real dollars to both Mike Herberts and Next Level Guitar for other stuff. A small amount of dollars well spent. My latest fave tool is Slomo Director from Mike Herberts which I can use to slow down and repeat segments of audio/video. I am using it a lot with Mike's videos at the moment but it will work with any wmv/mp3 source.
"establish the possible and then slowly move towards the impossible": I think that is a Robert Fripp quote. I know what he means now. Every month I find a new impossible thing. Every now and then it ceases to be impossible (which is good) but it is instantaneously replaced by something else which is impossible. All evidence suggests that this pattern repeats forever. Perfect knowledge is unattainable, the more you know the more you know that you do not know. All of that stuff. Take a deep breath and survey the infinity that always stretches out in front of you. I like that. The journey is the only reward because the road never ends.
"In the beginning there was the digital machine and it was good. Very good. So good in fact that people flocked from far and near to gaze upon its wonders and ask that most challenging of questions, namely 'Now that it exists, how can we program this thing without our heads exploding?'
"Just because Java was once aimed at a set-top box OS that didn't support multiple address spaces, and just because process creation in Windows used to be slow as a dog, doesn't mean that multiple processes (with judicious use of IPC) aren't a much better approach to writing apps for multi-CPU boxes than threads.
Just Say No to the combined evils of locking, deadlocks, lock granularity, livelocks, nondeterminism and race conditions."
Amen to that.
This threading thing erupts regularly in the Python world because of the Global Interpreter Lock.
To paraphrase Jamie Zawinski on regular expressions: Some people, when confronted with a problem, think “I know, I’ll use threads.” Now they have two problems.
Threading is the right answer in s/w dev in the same way that manual memory management is the right answer in s/w dev. In *extreme* nich areas you are gonna need it but if you use it day-to-day for everything you are in a world of pain - needlessly.
This issue is, I think, the biggest issue facing s/w dev in the early 21st century. The h/w folks are steaming ahead with bazillion CPU cores in the offing while us s/w folk are largely rabbits in the headlights.
The RIA acronym is steaming towards the mainstream at the moment. The Royal Irish Academy, Robotics Industries Association etc. are all taking second tier extensional status behind the Rich Internet Application meme. At least in tech-land.
RIAs are great and I can see all sorts of powerful ways in which they can be used. But, but, but...please lets not forget Grandma
Grandma can use the Web. No problem. Point and click. Does Grandma's user experience increase or decrease in a world full of RIAs?
It could increase for sure but there is a clear and present danger that it will decrease. Hugh Winkler writes:
"...if you're not pushing a bunch of hypertext down to my browser, you're not helping me explore the space."
I am fearful though. Put powerful UI widgetry in the hands of developers and it will be used. The tragic, timeless triumph of presentation over substance.
Some day soon another TLA will need to be re-susitated. CUA used to mean "Common User Access". It was one of a number of initiatives to try to arrange matters so that Grandma could move from app to app, OS to OS without learning N*N application UIs. Then the web happened, and it one powerful hyper click, the problem was solved.
I agree with Tim that Microsoft showing signs of grokking REST is a good thing.
Folks can get a wee bit post-modernist sometimes in intellectualizing REST. I am guilty of doing a bit of that because it hits on some many of my hobby horses: the relationship between proper nouns and query expressions, the relationship between regular and irregular verbs and why human language has both, the relationship between what is known as "information integration" and what is known as "process integration" and how mashups really crystallize the issues surrounding pull- and push-centric design.
If I had to pick one para that, for me, gets to the heart of REST, to add to Tim's list it would be this:
A lot of EAI which, on the face of it, appears to call for full-on, push-centric, reliable coupling of systems, can be recast in much, much simpler pull-centric form that requires nothing more than
A well designed information space mapped directly into de-referencable URIs
Proven, off-the-shelf HTTP tools and data formats
A simple, pull-centric, cache-friendly way of telling when something interesting has happened in the information space
Oh, and if I was allowed to add a little footnote to my para it would be this:
Anybody who things Mashups is just Google maps has missed the real point. This is understandable given the explanatory power of visualisations but the mashup phenonemon is about much, much more than just slapping data on a cool map. It represents nothing less, in my opinion, than a re-casting of the question "how to we integrate the business process in application X with the business process in application Y? Is there a dramatically simpler solution to the push-centric, trasactional, reliable once-and-only-once one that human language has a way of veering us towards?
Most of the time, yes, there is. Start with REST and ask yourself this question: "if applications A and B both push out the information that needs to be integrated into HTTP space, can I integrate A and B just using, say HTTP GET and maybe some RSS/Atom eventing?". I predict you will be surprised at just how far that can take you. (Critical hint: Remember GETs are read only. If your business analysis tells you that A sends X to B. Recast that as A publishes X into URI space. B GETs X from its URI. If B cannot GET it for whatever reason, it just GETs it again.
It creates a sensible layered conceptual model in the heads of software developers that fits dynlangs on top of static langs which, in turn sit on top of bytecode. This is a good way to gently veer developers towards the power of dynlangs.
I remember in the Eighties finding myself gently weened off direct 8086 assembler and into C because I could still code bits in assembly if I wanted to and "glue" them together with an over-arching C-based application. This preserved my ability to use assembler if I needed it but gave me significant extra flexibility and a productivity boost to boot.
Same model today - just one level further up the stack of layers. Nowadays, you can (should!) be coding up whatever modules require C#/Java/C++ static typing directly in that language and then glueing the modules together in a dynlang framework. That gives you the ability to directly code in C#/Java/C++ when you need it but gives you significant extra flexibility and a productivity boost to boot.
If I were operating in full dynlang propaganda mode I should probably stop now but I'm not so I won't. There is a further developmental stage to this model. It goes like this...
At first, I used to code up modules in assembly and link them together with my C modules in an overall, C-based application.
Over time, the number of times I would resort to diving into assembler got fewer and fewer. Eventually, I was coding end-to-end C applications. The drop in run-time speed was more than compensated for in terms of productivity.
Well the snap Python meetup was fun. The Porterhouse Pub is something of a maze so I was glad I eventually found the table with the O'Reilly Book on it. Some folk who turned up later didn't find us at all, apparently.
It was great to put faces to some (blog) names.
My big takeaway from the evening: I worked in Financial Services in the City of London in the late Eighties. It wasn't fun (technically speaking) - 8086 assembler and C (if you were lucky).
Today, well, lots of interesting Python stuff going on in the City. *Lots*. Most of it going on under the covers in the if-I-tell-you-I'll-have-to-NDA-you area.
Its a fun time to be in the City if you are a Python developer.
My home broadband is very bursty at the moment. Bandwidth fluctuates wildly. Not a problem for, say, downloading stuff but a real pain for any streaming media like youtube video etc.
Today, I filed the following very effective technique under "Doh! Why didn't I think of this before?".
Start the video playback. Then pause it and go get a coffee. The stream gets buffered under the hood (you will most likely see a progress meter indicating how far ahead of the curent position has now been buffered.). Return with coffee, hit play and the stream will stream smoothly.
Darn I feel stoopid to have suffered this for a while now without realising I could just buffer up stuff.
Publishing 2.0 was very enjoyable. I picked up some interesting perspectives/twists/thoughts on the future of "traditional" publishing - mostly from an STM perspective. Congrats to Alex, Eamon etc. on another great event.
The venue was probably the most spine tingling one I have ever been in for a tech. conference. Bletchley Park. The ghost of Alan Turing walking around the huts. The clickity clack of colossus. Turing of the famous test. Turing of the limits of computability. Turing who took Wittgenstein to task on the Phil of Mathematics (and survived). Turing of Cryptonomicon.
Barcamp Dublin was a fun event. Great location (once you get inside the building), terrible WIFI (for *any* place - never mind for a Digital Hub) but a great space that gradually filled up with interesting people with interesting things to say and all sorts of synergising banter going on. Very high content to fluff ratio.
I had to head home to the metropolis of Sligo afterwards so I missed the pub bit which I'm sure would have been equally good - and probably had better WIFI.
Early on, Joe Drumgoole pointed to the smallest of the three meeting rooms and said something like "all of you who want to talk about Java and XML and whatnot, go in there". So, I grabbed the bull by the horns and ended up speaking first with a free slot that I was able to flow into after my official slot.
Time flew. Although my talk was mostly about Jython but - thanks to an interactive audience -strayed over much wider territory: Java, static typing, IDEs, Erlang/Shared Nothing, the GIL, Star Wars, Sun Hardware, Second Life Scripting, Mono, Rails, IronPython, Agile Development, Web 2.0...
The slides only dimly reflect what we talked about but here they are : in OpenOffice format and PDF format.
Some items I noted
Atom was not mentioned even once. Never. I don't know if that is because RSS is the collective noun for syndication formats or because nobody there has Atom on their radar or becuase it just never came up.
The word "Ruby" was never mentioned on its own. The Teutonic noun Rubyonrails was always used. The more I hear about it, the more I think "Lotus Notes done right". By contrast, TurboGears and Django when mentioned were always distinct from Python the language and there were many references to Python that had nothing to do with RAD for database-oriented webapps.
There is a sense in the blogging community that there will be a lot of social media usage surrounding the upcoming Election that may awaken mainstream consciousness to the power/implications of all this Web 2.0 geeky mullarky.
Finally, did I mention that the WIFI was terrible?
There will be a BOF for Dynamic Languages at this years JavaOne.
Session ID: BOF-2958 Session Title: Dynamic Scripting Languages BOF Track: Java SE Room: Gateway 102/103 Date: 09-MAY-07 Start Time: 21:55
Abstract for this BOF:
Java 6 introduces native support for dynamic scripting languages (JSR 223, scripting languages and Java technology.) This BOF session brings together leaders, users, and critics from the Jython, Groovy, PHP, Ruby, and many other scripting camps for an exchange of ideas to develop a common understanding of the state of the art and practical examples of using dynamic scripting languages to solve problems.
I really must get to one of these JavaOne events. The year-on-year increase in interest in dynamic languages continues apace. This year is probably out of the question. Perhaps next year...
I'm in UK for Publishing 2.0 on Wed 25th April and will be overnighting in London on Wednesday, back to Dublin Thursday p.m. If anyone out there wants to meet up in London on Wed night or on Thursday morning/lunch, get in touch.
"Since the dawn of time people have used their higher order faculties to creatively re-use the content created by others. Also since the dawn of time, people have used their higher order faculties to spot such re-use and take whatever action they deem necessary.Re-purposing: the new king of content?
Oh yes, I will be talking about Jython at the barcamp in Dublin. I will be talking about how Jython can make some of those pondorous enterprisey applications out there get up on their pretty little tippy-toes and dance around like sprightly, gamboling, agile, 21st century web apps. Odd isn't it...that glue languages unstick things so well...
I'm hoping that as part of this, folks will begin to think about how process models - as opposed to traditional source code - might provide a better way of "open sourcing" key information about how open data is processed to produce particular results e.g. WYSIWYG renderings of documents. ODF, I think is a good forum for this. As ODF grows and grows, the gap between what any ODF compliant application does interpreting the data, and what is explicit in the data - will need to be filled.
Traditionally, reference implementations (i.e. traditional source code) has been the way to do this. "Running code" is the final arbiter.
Maybe this is as good as it gets? Unfortunately, a fully blown word processor runs to many, many thousands of lines of code and the semantic devil is buried way down in the details...
"Virtual worlds are on the rise all over the world. The 'new' thing called the Web has met its first serious challenger in the form of immersive, 3D environments..." Identity management and virtual worlds
One weekend, not so long ago, I overdid it and it triggered wrist pain. There seems to be a hysterisis element to damaging yourself with a guitar that I wish I'd known about. I.e. you don't realise you are doing damage until afterwards. It feels fine when you are playing and if you are having fun, its hard to stop and take a break...
Related to the above. To build muscle memory in your fingers you need to repeat actions over and over again. Fine but I suggest spread 'em out a bit so that you are not lining yourself up for an RSI attack. Especially if you spend most of the rest of your waking hours kitting Emacs chords :-) I over did it by spending ages working on G-CAdd9-D-CAdd9-G for Time Of Your Life (Green Day) and E7-F barre chord for Major Tom (David Bowie).
I am making progress with the theory side. Some time ago, I wrote about the fourness of four being the least interesting thing about the number 4. Today, I would substitute 4 for 3. Lets see... do you mean the third note in a scale? How about the semi-tone distance of a third? Do you mean a major third or a minor third cos the former is kinda like 4 in disguise... Or do you mean the third chord from the diatonic chord set? By the way are you counting up or down?. Or maybe you mean the third inversion? Or maybe the 6/5 chord which is a first inversion of a seventh in which the third is implicit?...As ever, context is king.
My fingerpicking is running ahead of my ability to change chords fluidly. This is incredibly frustrating. From my picking hand I hear pleasant, nippy, Simon and Garfunkesque arpeggios for C chords, G chords, A minor chords and then pregnant silences as my right hand hauls itself through the chord changes.
"It is entirely possible to have all the benefits of XML and yet retain the ability to just use user friendly, commodity off-the-shelf tools. However doing so - especially with complex document-oriented information - requires something more than just slapping an XML label on the file format." -- XML and the document format mind bender
I'm constantly amazed at how rapidly Google finds free Linux utilities that do what I want to do. Some of them very, very obscure. Its one of the really nice things about running Linux day-to-day as one's main environment.
Yesterday, however was different. Yesterday I wanted to find some way to print an A3 PDF on multiple sheets of A4 paper. This is one of those things that sits of the border line between (a) the originating application (b) a stand-alone utility and (c) the printer driver.
I have a multi-stage process that works but is not for the faint of heart. Have I missed something?
I will be doing the keynote presentation at Publishing 2.0 on Wednesday 25 April 2007 in Bletchley Park (yes that* Bletchley Park: Alan Turing, Enigma machines, all that) in the UK. The event is being organised by XML:UK. I have attended a couple of previous XML:UK events and thoroughly enjoyed them. This will be no different I'm sure.
I will be talking about how a whole series of mini-revolutions currently ongoing in the publishing space add up to a much bigger bang than the three previous electronic publishing revolutions : (1) electronic production for paper (2) CD-ROM distribution and retrieval (3) Web distribution and retrieval.
Number (4) is a humdinger. Come to Bletchley and we'll talk about it.
click here to help make it happen. If Dell can find a model that makes this work for them, you can be sure that other vendors will follow suit. This here snowball needs to start rolling down the hill. You can help get it started.
I can hit F's and B's using barre chords - but too slowly to strum anything other than the sound of paint drying.
I am having difficulty picking up very thin and flat things - like stamps and plectrums and paper clips - with my right hand. As a lefty, this is my fretboard hand resulting in (a) practically non-existent nail protrusions over my fingers and (b) leather like skin at the tips of my fingers. (Imagine picking up a paper clip while wearing a glove...That is what it feels like.) The nails on my other hand I have let grow longer in order to finger pick. This new assymetry is weird and takes a bit of getting used to. The feel of a computer keyboard changes for example. I'm hitting some keys with my nails (left hand) and others with skin (right hand). I've switched to dialling numbers on my cellphone with my right hand...
I can hobble through quite a few songs now as long as they involve mostly open position chords of the minor, major and seventh varieties. I have started to get some fludity in basic finger and strumming patterns. On a good day, I can do basic Travis picking. It is very interesting watching how this finger picking process works mentally speaking. I switch my conscious mind to my left hand, put the pattern in motion and then switch my conscious mind to my right hand, leaving the left hand on some sort of auto-pilot. It is starting to work for me and it feels very, very strange. If only parallel-programming worked this way...
When physical frustrations kick in or I find myself with time but no access to a guitar, I switch into theory mode. I'm a sucker for abstractions so its probably no surprise to anyone who knows this stuff that I have ended up scanning through stuff on neo-Riemannian theory and Pat Martino's (mind blowing) take on the organisation of the fretboard in The nature of guitar.
Oh, and finally, I wanted something to bring with me on my regular overnight stays in Dublin so I got one of these Traveler Escape Steel - the only travel guitar I could find with a lefty model. Fantastic fun.
I realise this puts me on the slippery slope towards full-on Gear Acquisition Syndrome...
"...an interesting tension exists in the knowledge economy between the Internet as a self-help tool for finding specialist knowledge and the Internet as a tool for the selling that same specialist knowledge.--It's not what you know, but who you know
"The Law of the Parasite: 'As an enterprise IT application approaches mission criticality, the probability of it being a host to one or more parasitic Enterprise Applications approaches 1.0.'" -- In praise of parasites
I use VMware under Ubuntu to run Windows XP and I'm very happy with it. However, from time to time (like last week) an Ubuntu upgrade gave me a new kernel version (2.6.15-28-386). When this happens, the VMware installation goes 'castors up'.
To get VMWare working again it needs to be re-configured by re-running the usr/bin/vmware-config.pl script.
Before doing that, you need to grab updated headers with something like this:
Doug Crockford on JSON. I see a lot of this JSON v. XML stuff going on...most of the time, mixed content doesn't get considered in the discussions. I don't see it mentioned in Dave's writing but I could be wrong...
Anyway, I think MIXED CONTENT is verrrry significant and gets to the heart of the difference between XML and ... most other data representation languages.
Here is XML's sweet spot (using square brackets to keep everything un-mungable by the angle-bracket chewers in my current tool chain):
[p]We [b]wish [i]you[/i] and yours[/b] a happy XMas.[/p]
XML of course, can also do this kind of data (again using square brackets for simplicity):
There are a trillion and one ways of representing the latter, most programming languages do it out-of-the-box. Here it is one way to do it in Python:
Representing this latter type of data - fielded data - directly in a programming language syntax by-passes a bunch of "XML Situps" that would otherwise be required to marshall it in and out. Such techniques have their place. I use them all the time.
Handling the former though, requires what XML provides : mixed content.
If you absolutely, totally, never, ever will need mixed content then there are sane alternatives to XML. There always has been. from humble CSV up to fancier JSON/Python/Ruby direct data expression languages. If you want to use XML but long for an API that mirrors the simplicity of the XML subset you are using, use something that takes an elementtree style world view.
A huge chunk of the world doesn't need mixed content or even know what it is. They are the folks who look at the XML apis and wonder "why is this so difficult?", "where is the get_field_value()" function...
I think we missed a trick early on in the XML days. Its too late now I suspect. We should have provided some way for an XML document to indicate data-centric content as opposed to document-centric content. That way, tools could swith to "obvious" field-oriented APIs (like RAX) for data-centric applications without loosing the powerful enabler of a single unifying syntax for open data representations.
It has always been a source of worry that folks with perfectly good relational data sets have felt compelled by buzz-pressure to put their content into XML - very little gain in the general case.
However, it has also always been a worry that a significant portion of XML's users think it is too complex because they do not, day-to-day, have to handle the mixed content case.
Now it can be argued that mixed content XML can be finessed into a field-oriented world view of sorts like this:
[p][text]We [/text][b][text]wish [/text][i][text]you[/text][/i][text] and yours[/text][/b][text] a happy XMas.[/text][/p]
True but (a) it sure is hard on the eyes. Maybe that's not a killer problem in these tool-centric days but (b) is a doozy:-
With the text element trick, there is no way to *name* individual text nodes uniquely. get_field_Value() doesn't make sense. All, in all, it just ain't worth it.
Hence, mixed content. Hence XML. If you need mixed content you really need it. If you don't need it, sometimes you cannot even conceptualise the problem it solves. And yes, mixed content totally complicates the lives of those who are using XML for data-centric applications.
The "standard" APIs of DOM and SAX handle the general case. They are extremely sub-optimal for the very common data-centric case. We have no current standard way to differentiate the former from the latter.
It would be a shame if this resulted in a "fork" in the road with fielded data, yet again, going off on its own trajectory with document-centric data staying on the XML road. Too much good stuff to be lost that way.
The nut that needs to be cracked to stop this happening is the Mixed Content Case nut.
"Today's batch of software engineering disciples had carried heavy payloads of anticipation up the mountain. Some galvanized their exertions by dreaming of Samurai inspired names such as Oda Kouzukenosuke Owarinokami Nobunaga. Others dreamed of European inspired names such as Blaise Babbage The Elder. Still others ventured further afield with dreams of names like Ustad Hexwielder The Unbound or the swashbuckling Bus Grant - Ostiary of the Noosphere."...Master Foo and the naming ceremony
Well, progress has been slow but the journey is proving its own reward
I can now bludgeon my way through some simple strumming three-chord trickery. I can hobble through some alternating base flat picking and some simple finger-style patterns.
I now understand why the E Chord is called that even though it does not involve touching either of the two E strings :-)
I now have a basic understanding about the relationship between chords and scales.
I now understand why Homer Simpson playing with a group called the B Sharps is amusing.
I can see faintly on the horizon how I might eventually be able to do barre chords by taking advantage of the fact that there isn't a single barre chord shape that I have come across that actually involves clear ringing on all six strings at the same time from the index finger. I sure wish more of the tutorial stuff would point this out.
Now for some gripes
Music notation seems to have the worst case of operator overloading of any notation I have ever come across. letters like "C" can refer to a shape, a chord, a tone, a note, a scale...depending on context.
Music notation is a set of off-by-one-errors/fences'n'gatepost errors waiting to happen. If ever an interval counting system could benefit from 0 based addressing, this is it! Instead we have "thirds". Hmmm. Now do you mean the item at offset 2 or are you counting from 1 and do you really mean the fourth item? Even if you get this sorted you have to deal with the fact that "thirds" might mean "major thirds" which, unlike "minor thirds" are actually probably "fourths" - or something - depending on how you count. On top of that, the entire naming system repeats in cycles up and down the octaves which makes it a *perfect* for modulus based arithmetic but no, that would be too easy...
There is a whole lot of mutually incompatible information out there about music in general and guitar seems to have a lion's share of it. Some examples:
chord diagrams that show D Major with 5 played strings and others with 4. (I now know why this can occur but it confused me greatly for a while).
Books/Web Pages that announce "There are two basic barre chord forms A and B."
Books/Web Pages that say "C Major is this 5 string shape" while others say "C Major is this 6 string shape". (I figured this one out too eventually.)
Videos that talk about hitting four strings only for D Major and then show you how to do it *but* actually play all SIX strings, using a thumb on the sixth string. (I figured this out too eventually).
The language of music is all the more intriguing for its weirdness. Just like so many other long established semiotic systems. Much of the weirdness is I think, traceable back to the naming convention for the C Major Scale with its straight A to G and its nice simple gaps of two semi-tones...except for the EF and BC pairs. Its as if version 0.01 of the naming convention just stuck and was never re-factored even though the app is now at version 20.0.
Finally, of all the video-based tutorial stuff I've been playing with and the DVD's I've bought, I find Mike Herberts no-nonsense, watch-n-learn stuff very, very useful to have side-by-side with the more theory-oriented stuff. The two-camera setup he uses is extremely helpful in figuring out what is going on.
"We speak negatively about information that is 'all over the place' or 'scattered'...On the Internet, it is not bad that information is 'all over the place' or 'scattered'" - Chaos and order in information systems
"Most of the time, the web dividend accrues as an accident. A sort of happy, innocent, unavoidable result of a technical limitation of the web. To put the limitation in its simplest possible terms, the web works best with small documents." -- Asset stripping meets the web dividend.