This week my son has been taking some special iniative in his homework. So to reward him, we went to Best Buy to get a CD. He looked for about 20 minutes and found what he considered a “hard to find” Slipknot CD. Lots of swearing and loud music – loud angry metal noise.
As we left the store and were driving off to dinner, we were listening to the music (ignoring the swear words of course), he began to discuss how cool this particular CD was.
At some point he began talking about how cool it was to have the “real” CD for this particular album and how he would be the envy of his peer group – they all had hacked, downloaded, CDs that they had burned, and here he was showing up with the real thing. As you can imagine, having a real CD is a bit unique amongst 13-year olds who have strong desire for music but not a lot of cash.
If you look at him and his peer group, they posess all kinds of genuine articles from the bands they follow – wristbands, t-shirts, and hats must have the official logo – they all look like a bunch of goth-want-to-be clones – it is cute in a way how they try to be non-conformists but end up looking like one non-conformist who was cloned many times.
But the fact that these brands are so strong to that age group makes the $14.00 CD have a value proposition of nothing more than the cover art and the knowledge that they have the “genuine article”.
It seemed interesting to me at least. For a bit, I thought “how illogical” – but then I asked myself if I would purchase an off-brand video camera that allegedly was built by Sony – or pay twice as much for the genuine article with the cute “Sony” on the side. Uh – having the Sony on the side is a mark that I am proud of – people see my “Sony” camera and know that I am a “Playa” (at least when it comes to cameras).
Monthly Archives: January 2005
Well I finished my little Code diversion
I wanted badly to get a bit of new accessibility-oriented capability into the 1.5 Sakai release – so I took a couple of days and added a prefernce so the courier can be done with an XMLHttpRequest instead of an iframe with meta-refresh.
Code works – and I am waiting for review so I can check it into CVS.
I have one more little pet piece of 1.5 code that I might fiddle with before I go back to being Dr. PowerPoint.
New Year – More Blogging
I will try to cover my experiences with the Sakai project more fully. It will probably mean that my writing will be more inane as the blog will become more of a diary. Oh well. I apologize in advance.
Today was a lot of meetings but I indilged myself and worked on trying to replace the Sakai Courier function with an iframe and refreash with XMLHttpRequest object.
Things went well, except that nothing ever worked on Mike Elledge’s computer. Finally it came down to the fact that caching was happening.
A good refernece is available at: http://developer.apple.com/internet/webcontent/xmlhttpreq.html
So the lesson is to hack the URL so that no matter what caching is happening. Here is some code that is a bit more sophisitcated than the Apple example.
function loadXMLDoc(url) { if ( req && callInProgress(req) ) { alert("Previous request had not completed stat="+req.status+" state="+req.readyState+" url="+lastUrl); req.abort(); } // Add a random number to defeat caching regardless of the user setting lastUrl = url + "&rand=" + Math.random(); if (window.XMLHttpRequest) { req = new XMLHttpRequest(); if ( req ) { req.onreadystatechange = processReqChange; req.open("GET", lastUrl, true); req.send(null); setStatus("XML Request started ("+couriertries+")"+lastUrl); } else { alert("Cannot create XML Request Object"); } // branch for IE/Windows ActiveX version } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", lastUrl, true); req.send(); setStatus("ActiveX Request started ("+couriertries+")"+lastUrl); } else { alert("Unable to create ActiveX object!"); } } else { alert("There is no support for XMLHttpRequestObject"+url); } } function callInProgress(xmlhttp) { switch ( xmlhttp.readyState ) { case 1, 2, 3: return true; break; // Case 4 and 0 default: return false; break; } }