advertisement

February 2005 Archives

O´Reilly´s Digital Media Blogs have been expanded and are now located at a new home. To find our new blogs, please visit:
David Battino

AddThis Social Bookmark Button

Related link: http://www.zefrank.com/sequencer/

Electronic Musician’s Gino Robair warned me it would be easy to lose an hour at the Zefrank site, and he was right. One of the first distractions I discovered was this Flash-based drum machine:

Drum Machine Interface

The built-in sounds are intriguing and unexpected. That’s partly because they aren’t named; you select them by clicking the colored dots at the left of the window.

But what makes this online instrument unusual is that your drum hits are not quantized to 16th notes. Rather, they fall at the current playback position on the two-bar timeline. You can later drag them left and right to adjust the timing, but it never sounded exactly square, at least on the elderly computer I was using.

That slop is a cool thing, though. I started thinking of the instrument as an “analog” digital drum machine. You can even save your patterns for other visitors to try out. I assume the one called “Grobair” is Gino’s. I left one called FlashBat.

Unlike GrooveLab, the Zefrank drum machine can’t export your patterns as audio files (you’ll need a streamripper for that), but it does let you hear your changes right away. GrooveLab has to render everything first.

If you’re like me, though, you’ll blow the time you save exploring the rest of this entertaining site.

What’s your favorite online musical instrument?

Eric Bell

AddThis Social Bookmark Button

Related link: www.gibsondigital.com

Has Gibson announced the beginning of a music technology revolution, or signalled their own demise with the announcement of the new digital Les Paul Guitar?

With memories of clunky add-on MIDI-guitar systems and pricey proprietary guitar-synth solutions adding to my skepticism that this new system would actually be any good, I checked out the web page touting Gibson’s new guitar. It didn’t take long to realize that this sucker has a lot going for it. It’s a real Les Paul. And, it’s playable strictly as an analog guitar, if that’s what you want to do. That’s what I call 100% backwards compatibility. So far, so good.

The digital pickup is built right in, and it sends a digital signal to a breakout box (called BoB) which converts to analog. Makes sense.

Then some lights started to go on. You can output a single analog signal made up of all six strings. Or, you can output two groups of three strings (hi-lo split). Or, you can output each string individually. Anyone with six guitar amps will be trying out some wild spacial effects that would put a sixties stereo guitar to shame.

That’s actually pretty damn cool.

I haven’t figured out if you can also route digital signals out of BoB. My head is starting to spin thinking of what I could do with a digital feed each individual string. Imagine what sounds and effects might come with that kind of flexibility.

A big plus is the fact that the guitar can do its digital thing through a single CAT-5 cable, over ridiculous distances, with no noise, and perfect digital clarity. If you’re worried about the relative frailty of network cable connectors, Gibson has engineered a sturdy replacement.

And then I started to wonder… so what? Isn’t enough to get a guitar, plug it into an amp or a stomp box, and thrash away? Who is really going to utilize all that capability? Sure, there will be a small contingent of home-studio tech-heads that will wring everything possible out of every piece of gear, but what about the weekend basement blasters like me? A lot will hinge on the price. One website, Polo.com of all places, has it listed at a cool four grand. That’s about a grand for a great guitar and three more for all the digital gadgetry. The initial pricing will likely mean slow adoption and low breakout sales. With many, many years and millions of dollars of development on the line, has Gibson R&D’d themselves into big financial trouble?

So. There’s two sides to the coin… or are there three?

The story here, isn’t the guitar. Not at all. It turns out the technology that makes the Les Paul work in the digital domain, MaGIC, is not intended as just a guitar technology. Rather, MaGIC is an open-source specification for the extremely rapid transmission of audio and control data. The Gib-digital guitar is just an application of this technology. This is key

If MaGIC catches fire and isn’t usurped by some new firewire-based scheme, the digital Les Paul will simply be the first of many accessories that all work together.

Briefly, MaGIC is a spec for moving up to 32 full-duplex channels of up to 192 kHz digital audio, plus a whack of control signals, such as 100 MIDI channels. There’s power on the wire for devices, eliminating batteries (YES!). And, it runs over fast and cheap CAT-5 ethernet cable. MaGIC is being deployed to link physically distant music studios for extremely low-latency inter-communication. Put simply, you and a buddy can jam in real-time, even though you are a mile away from one another.

I haven’t fully absorbed whether the MaGIC specification is a brilliant evolution or just another open standard that nobody else but Gibson will support. But I have the feeling that this could be the start of a whole new paradigm in music technology.

Did Gibson pull a rabbit or a red herring out of the MaGIC hat with the new Les Paul?

Tyler Mitchell

AddThis Social Bookmark Button

Related link: http://community.qgis.org/index.php?option=com_content&task=view&id=43&Itemid=44

I was honoured to discuss my perspectives on open source mapping and GIS with the developers of Quantum GIS (QGIS) - an excellent open source desktop application.

They questioned me, interview-style, and made the results available through their community site.

Disagree with some of my perspectives in this interview? Need clarification on some of the points? Tell me about it.

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://news.zdnet.com/2100-9588_22-5585711.html?tag=nl.e589

I promised myself not write about OASIS anymore:
surely the most boring blogs on the otherwise
sparkling O’Reilly site! But there has been some news.

I >blogged on the new OASIS patent policy
a few weeks ago, commenting that the
justifications given don’t seem to match the policy.
The same kind of thought seems to have occurred
to others including RMS and Tim O’Reilly: there is a call to
>boycott OASIS standards that use RAND
(Reasonable and Non-Discriminatory) licenses
(rather than RF (Royalty Free) licenses.)

I like Patrick Gannon (we have spoken at the same
>seminars a couple of times): he is definitely
not one of the baddies. And I suppose this puts him and
the OASIS board into a difficult position: their new license
tries to allow all positions.

But if there is currently no OASIS technology with
royalties, and so few in the pipeline, as Mr Gannon
says, why not just ditch the RAND provision entirely?
Make all OASIS standards free or RF, and only allow
RAND in an emergency with Board approval *after*
a project has started? Treat it as a possible and
worst-case outcome to an exceptional circumstance rather
than just another option.

A policy like that would fit the justifications
OASIS currently gives better. Maybe the new altered
composition of the Board of Directors will
provide an opportunity to get this right.
We don’t know who was voted in yet:
if it was Bob Glushko, who I
>endorsed,
then that might be a sign to the OASIS Board
that there are a substantial number of their
members who are keen that OASIS standards
protect and cultivate the little boys:
the big boys can always look after themselves.

OASIS is stuggling with a basic issue here:
is the US patent system so out-of-control now
that it is difficult for any standards body to operate?

So what do I think of the boycott proposal:
>A Call to Action in OASIS?
Do not implement OASIS standards that aren’t open. Demand that OASIS revise its policies. If you are an OASIS member, do not participate in any working group that allows encumbered standards that cannot be implemented in open source and free software.

…Sounds completely reasonable to me.

Mark Sigal

AddThis Social Bookmark Button

I am watching CNBC right now with my wireless notebook and iPod at my side. An analyst is talking about some hot new stock that he thinks is going to go through the roof. With a single click of a button, that stock is automatically added to my online stock tracker. With another click, I am connected to an instant messaging session where people watching the same program are talking up all the known data around the stock, the analyst and the segment. With another click, I can save the entire discussion thread to my local store, and it is automatically indexed for me. With one more click, I can add discussion participants or stock analysts to a watched list. I can subscribe to whatever content they choose to syndicate, be it a stock tip, investing resource or interesting article. With a final click, I can act on some or more of these stocks.




And these are just the basic (free) services aligned with the financial program that I am watching. There are professional services as well — mutual fund managers and financial management tool providers, for example. For the first time, live television programming is truly a two-way, interactive medium.




In the age of always-on broadband, I think that it is time for someone to build a service around live (or pre-recorded) television content. Think about it. Beyond financial programming, there are logical applications around music, news, sports, reality television and educational programming for “middleband” services.




One can imagine a music channel whose music it plays is aligned with the music on its listener’s iPods. Here, I can share playlists, grab lyrics, purchase new songs in a single click or find out when a given band is going to be playing in my area.




You would think that Comcast or Fox (also owns DirecTV) should be all over this one. Imagine starting with a programming guide of a finite number of programs that support the service, and growing from there. Could you sell advertising in this new channel? Certainly performance-based advertising, it would seem, since the targeting is so direct.




Not a bad strategy for someone like Tivo either since they are a repository for much of this content. An interesting thing is that because the audience is live, it is less important that the programming actually be live. The software would need to have some type of network linkback mechanism so that when you change the channel to a given program, the middleband software instantly recognizes the channel you are on and plugs you into its middleband services.




On some level, a middleband channel could evolve into an interactive program guide that also tracks products, digital content, sports scores, stocks and other real-time information of interest and finally, people, according to user-defined watch lists. Such guides, in turn, could be syndicated via RSS feeds, archived, instant messaged, blogged about or accessed by personal information and telephony devices.




There is certainly a critical mass of connectivity for such an application to have a meaningful audience. What better way for television content providers to re-engage with their audiences? Heck, now that Howard Stern is leaving broadcast radio, it would seem that Viacom could do worse than jumping on the “middle” bandwagon. It certainly feels like a 1+1=3 type of value proposition for the consumer and content provider alike.

Can you see using such a service?

David Battino

AddThis Social Bookmark Button

Related link: http://www.mobilepcmag.com/features/2005_03/top100gadgets.html

Mobile PC magazine’s feature article on history’s top 100 gadgets — defined as small tools with either electronic or moving parts — is immensely fun to read. (Supposedly the T and S in Taser stand for Tom Swift.) Part of the pleasure is reminiscing about the gizmos that have passed through your hands.

Given the source, it’s not surprising that laptop computers dominate the list, but I would have booted a few in favor of gadgets like LED keychain lights and digital drum machines. The electronic quantization of rhythm had more effect on world culture than the HP OmniBook 300’s pop-out mouse (#76).

It will be interesting to revisit the list in ten years, when I imagine laptop computers will seem as awkward a bump in history as the Ronco in-egg scrambler (#84).

What else did they leave off the list?

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://www.w3.org/TR/charmod/

The thing that make internationalization (I18n) work fun is not the geeky pleasures of crazy written characters, but the kindness and co-operativeness of the human characters
(i18nista = i22a? i6a?). The same people crop up wearing different hats: there is considerable overlap between the ISO 10646 people and the Unicode people, overlap between the IETF and the W3C people, and so on. It is easy to be co-operative when you have the same people swapping hats.

This week it has been really nice to see two efforts
of W3C’s Martin Dürst advance to the next stage.

First, the loooooong coming
>Character Model for the WWW 1.0: Fundamentals
plopped out the end of the ISO W3C voting factory.
It should be required reading for all programmers
and IT or computing students.
My >SPREAD entities get a reference, which is nice
of the editors.

Second, ISO SC34 have adopted Martin’s
Hulls and Kernels approach as the basis of
>ISO DSDL (Document Schema Definiton Languages)
Part 7
>Character Repertoire Validation Language (CRVL),
edited by RELAX NG’s Murata Makoto.
It is just being fed into the ISO voting factory:
the Committee Draft is out this week, and it is currently
being balloted for adoption as part of same International
Standard as RELAX NG and (Real Soon Now!) Schematron.
Hulls and Kernels is a simple idea that
languished at W3C as a
>note.

CRVL will be useful for publishers and people
dealing with serious non-ASCII data. W3C is not
really a good home for publishing standards: they
concerned with WWW things only. (Well, except for
RDF, DOM and XQuery, which really have little to do
with sending data over the web and everything to
do with acessing data on a server.) Of course,
W3C should be the better place than ISO for web
standards too; no reflection on either organization.
But, again,
even with ISO and W3C the character world has overlap:
the latest
>draft update to the ISO standard
entity sets for mathematics
is co-edited by W3C MathML’s
>David Carlisle and ISO DSDL’s
Martin Bryan.

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://www.abc.net.au/rn/science/ss/stories/s551438.htm

Jack Pettigrew’s research on
>alternating hemisphere activation
suggested a design pattern to me: any readers know
if it is known by another name?
His website also has a great set of links to >visual illusions: the Bonneh’s Illusion is a lot of fun in particular!

Pettigrew starts with
>Ramachandran’s theory:
According to Ramachandran, our beliefs about ourselves and the world develop in the left side of our brain. The function of the right hemisphere is to detect anomalies, forcing the left to revise the established belief structure.
. So the right side is inspiration, the left side is perspiration; the right side is the nagging doubt and the thought that suddenly hits you, the left side wants to follow the recipe.

Then Pettigrew adds a time-sharing system (”oscillator”) which flips mental activity from one hemisphere to the other a few times a second. Whether this involves just concentrating on the information out from the active hemisphere or actually stimulating activity in the hemisphere I don’t know.
The oscillator has a fixed clock period with a variable
duty cycle:
it adjusts the relative amount of time spent dealing with one or the other according according to some rules.
I guess this oscillator is the thing that makes you lost for words when startled: your right side is getting more activation that the left.

To apply this software design, we make two parallel systems reading the data and making perceptions/memories/conclusions.
One side (the left or predator) tries to ignore
>outlier data: it is the “me as predator” side, with the eye firmly on the prey. The other side (the right or
prey) is interested precisely in the outlier data: it is the “me as prey” side, trying to detect any predator.

The software equivalent of the oscillator
would be a layer
which determines how much relative timeslice to give to each of the two processes; neither is entirely starved
but a process with a short timeslice will take longer to
think through its thoughts or, presumably, timeout on complex thoughts.

One nice property of this “predator and prey” pattern,
may be that it addresses the customary problem
with neural nets: training usually involves kinds of averaging, which doesn’t handle outlier information.

You don’t have to be involved in writing programs for
very long before you realize that dealing with exceptions, signals, errors, unexpected data, environment changes, profiling, debugging, security, robustness, resource allocation, and so on, can render otherwise elegant code baroque: indeed, aspect-oriented has arisen to address some of these issues, pretty much at a textual level. But perhaps applying this pattern at the process or thread level might give more elegant results.

One example of this pattern in use may be
a web services system where incoming requests are
dynamically sent either dirctly to the service
or to a validating proxy which is less efficient.
If the proxies start detecting errors, then
the dynamic router starts to send more requests
through the proxies. The service is acting
as a “predator”; the proxy is acting as a “prey”;
the dynamic router is acting as the “oscillator”.

Another example of this pattern may be automatic
garbage collectors, such as in Java. The user’s process are
the “predator”; the major and minor collectors are the
“prey”; the memory manager/scheduler that decides when to run the collectors (and which priority to run them at) is
the “oscillator”.

Prof. Pettigrew uses a more sophisticated version of this model to theorize about bipolar disorders. The research into treating
depresssion by squirting cold water into the left ear is
marvelous, to say the least!

Googling for “left right brain” rewards us with a cornucopia of guff and babble. But it seems we can to some extent allot creativity to the right hemisphere (overly active right hemisphere is associated with disorganized thinking, such as schizophrenia, and too little activity could be autism) . And organized thinking (and, at worst, the inappropriate but organized thinking of depression or obsession) to the left hemisphere.

Is left right?

David Battino

AddThis Social Bookmark Button

My handy pocket voice recorder, an Olympus V-90 (more photos here), finally snapped after three years of daily service. So I thought I’d replace it with a model that also plays MP3s and works as a flash drive. But finding the ideal balance has been tricky.

Should I skew toward the music side or the voice side? And should I take the screwdriver approach or the pocket-knife one? Extra features are seductive, but they often obstruct efficiency.

The V-90’s streamlined design made it simple enough to operate by feel. If I heard something interesting on the radio while driving, I could record a quick reminder without taking my eyes off the road. And the V-90 automatically tagged each recording with the time and date, so I know exactly when my infant son was in his cooing stage and when he progressed to screaming. (Interestingly, I discovered that recording those tantrums and then playing them back calmed him down immediately, as he heard how ridiculous he sounded. I’m reminded of a phone Sony developed to battle telemarketers. It worked by repeating their words back to them.)

The longer you have a voice recorder, the more uses you think of for it. I first saw the potential in the mid-’90s when some Sonic Foundry staffers visited my magazine to get the editors’ comments on a pre-release version of Acid. As we spouted insights of varying insightfulness (I asserted that the program would be much more successful if the interface didn’t look like a flat, gray spreadsheet), one of the Sonic Foundry guys repeated our comments into his voice recorder. It felt odd, like he was muttering to himself, but at the same time I realized that he was getting a more complete and accurate record of what we said. (Recalling that day, I have to laugh. It just struck me that Acid really did hit the public consciousness when it morphed into the great-looking GarageBand last year.)

Pocketful of Frogs

Because the V-90 was always at my side, I captured some amazing sounds, like the endless reverberation in the Anaheim Hilton parking garage at 2:00 a.m. and the mass shrieking of hundreds of sex-crazed frogs in a nearby creek. The V-90’s crunchy sound quality (likely 4-bit, 7kHz, ADPCM-compressed) made these recordings more impressionistic than realistic, but still, it was a wonderful audio diary.

Today’s voice-recording MP3 players probably sound at least as good, though most lack the V-90’s handy built-in speaker. If I go the MP3-player route, I’ll probably end up soldering a plug onto an old ear bud and carrying that around so I can check voice memos and impromptu shopping lists.

I decided the features I wanted in a music-playing pocket voice recorder are…

  • USB 2.0 interface for fast data transfer
  • Built-in USB plug for convenience
  • Driverless USB communication with Windows XP and Mac
  • Removable, standard battery (e.g., AA or AAA)
  • Reasonable audio quality (One potential player reportedly crackles every time the ID3 tag scrolls across the screen!)

That list ruled out the feature-packed Ultra 8-in-1, which can recharge its AAA battery over USB and host SD memory cards. (The eighth wonder of the Ultra’s world is its ability to function
as an e-mail client.) Ah, well. In addition to being USB 1 device, it looked a bit large and plasticky, though it’s actually shorter than the V-90.

The LAKS MP3 Memory Music Watch, sold in the U.S. by ThinkGeek and BMW, misses on a couple of counts (battery and USB speed), but it’s tempting. I can’t ding it on the battery, of course, but I wish I liked its looks more.

I’m still plowing through conflicting reviews for the iRiver iFP-800 series. The best fit so far seems to be the Creative Labs MuVo Micro N200. Actually, the related V200 would hit all my criteria, as it has an integrated USB plug, but it doesn’t seem to be sold in the U.S.—yet.

One strange thing I’ve noticed with many of these voice-recording MP3 players is that they record in a format that’s compressed far less efficiently than MP3, generating bigger yet worse-sounding files. I suppose that’s because real-time MP3 encoding takes more processor power and hence shortens battery life.

But then I saw Olympus’s latest voice recorder, the DS-2. It’s just 7mm longer than my previous recorder, but sports stereo mics, 44.1kHz recording, and USB upload. Look out, frogs!

So, what killer product am I overlooking?

Damien Stolarz

AddThis Social Bookmark Button

Related link: http://www.gizoogle.com/

“Please Google, don’t hurt ‘em.”

Let’s see if Google’s lawyers drop the hammer on this satirical homage.

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://www.oasis-open.org/who/ipr/ipr_faq.php

Something seems odd in OASIS’s new IPR FAQ on why they will allow some technical groups to be RAND (i.e. allow standards
with patents, as long as the patent-holders agree to charge license on a “Reasonable and Non-Discriminatory” basis):

In today’s reality, no standards organization can ensure that its work is or will remain completely free of patent claims. There is always a risk that someone in the world holds a patent that can be claimed as essential for any specific standards project…

OK so far: there may be a claim from some outsider and the IPR system is out of control.

The most any standards organization can do is provide clear, equitable regulations to govern the behavior of those who participate in its work and publicly document the licensing commitment of all participants.

OK: we are all only human.

The OASIS IPR Policy seeks to create the greatest possible incentive for patent holders to participate productively in an open standards process, responsibly disclose their interests, and make available, without prejudice, licenses for any essential claims they may have.

The idea seems to be that a poor committee finds, late in the day, that some moustache twirling capitalist has a patent. Rather than calling it a day in the interests of building an infrastructure that the little boys can play in too, or negotiating a royalty-free arrangement, OASIS says the show must go on.

But how convenient that this policy also seems to
allow a patent holder to use OASIS as a marketing tool. You need to turn your getting-dusty IP into a performing IP asset, so you join a committee, get your patent adopted into a standard, then sit back and lick up the gravy.

If protection against unknown outsiders is the reason, then why not make the committees start off being royalty free or free, and allow RAND members to join only after the event? That might hinder gold-diggers.

I am not a lawyer and I am not an expert in OASIS’
new policy. However I have been in the position of
working through IP claims on a draft standard.
OASIS’ policy seems unworkable to me because they
will neither search for patents nor judge them: any old
junk patent will be accepted. But patents are typically written as broadly as possible, and it is not in the interest of patent holders (those, at least, who still think the game is worth playing for software and infrastructure patents) to minimize the scope of their claims.

How to put the camel to bed?

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://www.ietf.org/rfc/rfc3987.txt

xml:include

Interesting "http://weblogs.asp.net/cazzu/archive/2005/01/10/XsdAndXInclude.aspx"
>discussions
this week that
xml:include is incompatible with typical XML Schemas,
because it may add xml:lang attributes and so on.
Or, at least, that inclusion might have to take place
after schema validation.

For prose, language is a fundamental facet, that needs
to be set in the instance. But database vendors really don’t like this idea: it is unworkable to have to allow the possibility that every text field may need a language property. I don’t see how the contradictory requirements between prose and DBMS can be reconciled.

Internationalized Resource Identifiers (IRIs)

W3C has announced it will support the recent RFC 3987 for IRIs. IRIs are the IETF (Internet Engineering Task Force) officially saying how to support non-ASCII characters in
URIs.

All this almost eight years after XML allowed you to type any characters as SYSTEM identifiers for entities! The internationalization wheels move very slowly at IETF, witness the time taken for Internationalized Domain Names.

Congrats to the indefatigable Martin Dürst and M. Suignard, and everyone involved.

xml:id

This W3C
Candidate Recommendation
supposedly brings us one step closer to not needing DTDs.
But actually it brings us one step closer to not needing XML Schemas either, by the same logic.

I see two big issues that keep DTDs around. The first is of course entities: Norm Walsh had a good post on XML-DEV this week outlining various options for handling entities without DTDs, and I was glad to see the option I favour mentioned: to build the standard ISO and MathML entities into XML itself.

The second issue is the issue of processing model. At the moment there are a lot of XML-related specs floating around in various stages of undress: xmlink, xml:id, xml:include, and so on. But often they cannot be useful for much public use unless you know that the the other end will handle them, which you don’t. They are schema-level apparatus not transparent-infrastructure-level. You can use an entity in XML because you know the other end will handle them (or fail): you know what the infoset your are sending it. Use xml:include, xml:id, even XML Schemas and you have no idea what a blind receiver ends up seeing.

I suspect W3C groups are laying these eggs knowing they are useless for public data exchange, but to have them available for a future consolidation of XML with a sensible processing model.

XML-binary Optimized Packaging (XOP)

This is a really good new
W3C Recommendation I think. Forget the SOAP stuff that creeps in. It tells you how to include binary
data into MIME multi-part messages, and how to
map these back to inline XML.

XOP defines an xop:Include element
for references. Different to xml:include
and again not part of the standard framework.
Of course, in one sense it is a patheric
reinvention of the wheel:
SOAP disallows XML entities, but then has
to rebuild almost the same mechanism.
Years ago we saw much the same with HTML disallowing PIs,
leading to the rise of server-side includes.

Presumably SOAP systems will build XOP into their
entity handlers;
which would mean that SOAP processors could
not handle all XML constructs on the one hand
and that XML processors could not handle SOAP+XOP
constucts on the other.
Isn’t this the kind of incompatability split
that the anti-”binary XML” people alert us to?

XLink 1.1 mooted

Some simple changes to XLink have been
>mooted. If they wanted to make it successful,
I think the simplication the XLink should make is
to remove the use of ranges from basic XLink
(err, XPointer).
A URI in a link should refer to a point or a
well-formed entity or document: these can all
be retrieved without mental gymnastics.
Ranges mess things up: people wanting to implement
XLink look at it and discover that it comes from
the world of pointing to things that you don’t want
to download and manipulate as a part of the deal,
and give up (rightly or wrongly).

Marc Loy

AddThis Social Bookmark Button

Related link: http://www.itl.nist.gov/div895/gipwg/StabilityStudy.pdf

Hooray! We now have better than anecdotal evidence for the quality of different types of CD-R and DVD-R media. No names have been used to protect the innocent, but NIST
recently released a summary (PDF) of their work stress-testing different types of media. (/. just posted the link as well, so this may not be news to you.)

CD-R media was categorized by the coating and dye types (which are generally known). The silver + gold coating and phthalocyanine dye combo won hands down. Mitsui’s gold archival CD-Rs
(MAM-A)
that I mentioned in a previous post fall in this category.

Unfortunately, DVD-R media was not as easy to categorize. The specifics of the dyes and coatings used in DVD-R are (apparently) pretty closely held secrets and as such, NIST declined to give any details other than to say they used three samples of commercially available media. One sample was head and shoulders above the others, but we have no way of knowing exactly which media that was. Ahh well. They do make this closing comment:

A comprehensive study is underway in a collaboration between NISTand the Library of Congress (LoC) with two principle objectives: 1) to determine the life expectancy of DVD recordable media and 2) to develop a test which media manufacturers can use to assign an archive quality grade to their product.

Sounds great. Let’s hope they finish it before we’re all using Blu-ray and wondering how long those discs will last!

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://www.topologi.com

My company, Topologi
is releasing our new product line next week. This isn’t really a pitch for the products (repeat after me “I will try! I will buy!”) but more about the particular solutions I have come up with to making a large desktop application with Java that has just as good performance as a native Windows application.

Suckitude

Now, let me start off by saying I don’t mean good performance in the benchmarking sense: Java programs have, if well written, just as good performance as C++ programs when they are up and running. Indeed, as Java uses SSE instructions now, benchmark performances may exceed typical C++ binaries compiled without SSE.

But a real desktop application is competitive with other resources: in particular with other applications and with the Windows virtual memory system. Users have multiple applications running, they minimise them, or quickly switch between them. Lets call poor performance in these areas suckitude.

We faced two sets of problems. The first were issues with Windows and Java:

  • Slow start-up times: our application uses a ton of libraries, and even though we did lazy initialization, start-up time was just too much. The initial prototypes of the product had used custom class loaders to reduce the problem, but we abandoned them because they didn’t fit.
    Instead we had tried a little reflection, lazy intitialization, and invoking many methods through BeanShell scripts.
  • Java didn’t know how much memory was optimally available. It just tries to reserve as much as it can up to some limit.
  • Java GC does not interact particularly happily with paging. You don’t want too multiple JVMs running unless they have quite small heaps, but if they have small heaps they are useless for decent-sized work.
  • Java scheduling and memory management does not have any idea of foreground/background. They don’t have any way to act differently when the Java application is not the foreground application or when the application is minimised. Consequently, it has no built-in way to be a good citizen.

The second came from issues relating to the size of our application. The Professional Editions contained a ton of functionality, but

  • Download times were becoming too long because of
    the large file size. We had found we had to include our
    own JRE because we couldn’t be sure what JRE the user’s
    had on their systems.
  • Users often bought the system for specific funtionality
  • Large WIMP applications are only
    >intuitive
    for habituated power-users (sometimes called
    “the Adobe syndrome” unfairly: Adobe’s interfaces
    are exemplorary for reducing this problem that
    any—and everyone’s—large
    application faces,
    in particular by moving beyond WIMP to
    using floating pallettes and differentiated products,
    backed up by their training programs).
    Users wouldn’t look more than one menu deep to
    find anything, and wouldn’t look things up in
    help files even when the help was there.

Inductive, Task-Oriented GUI Design

It is that last issue that caused the lightbulb.
A few years back the practicality boffins at MicroSoft, in particular, started espousing "http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/iuiguidelines.asp"
>inductive
user interfaces.
href="http://mail.gnome.org/archives/hig/2002-March/msg00029.html"
>Jan Miksovsky says
I think
its most significant contribution is … that tight
constraints around the clarity of a page title can drive an interface’s
design.

and
The answer proposed by the inductive UI model is that a single task is something that can be stated
(ideally, directly on the screen) in a single concise question or
statement in natural language.
“.

MicroSoft since have since moved on to
personas,
see this blog conversation:
>Who are you? Mort, Elvis or Einstein
>Inductive vs Productive UIs, and
>a response.
This is probably a logical step: when you need to
elaborate tasks, you have to ask “who” before “what.”
The cynic in me wonders whether inductive interfaces
are too thin-client friendly for MS, IYKWIM?
(An check out
>this great article
to see why personas won’t work for tomato sauce.)

Inductive interfaces, wizards, typical multi-stage web-based interfaces are all task-based.

Task-Orientedness as an Architecture

The issue I set myself was
Is there a way to re-factor our existing functionality
to reduce suckitude to the same limits as native Windows
applications?

The solution I came up with was to refactor our
application as a suite of independent utilities.
Rather than kick against the pricks
of Java’s applet/servlet focus, why not accept it
and love it:
use it as the impetus for a more task-oriented
user interface?

The utilities
each group together three to six related tasks.
The utilities are
independent in the sense that they each can
be downloaded independently, but
each utility can launch another in the
same JVM, using a pulldown menu on the toolbar.
They are virtual utilities: they
look like independent programs but they
run in the same Windows process.

The exemplar was WinZIP: a simple
interface with a small number of toolbar buttons.
Each button would be an inductive-style
verb+type statement. We threw out menus,
though the toolbars ended up a little
menu like.

Each utility launches with its own class-loader.
Each utility has a “Lauch Utility” button that
invokes whichever other Topologi utilities have
been installed: if it is the first launch of that
utility in the current JVM, the utility is
launched by its own class loader.
Closing the window of a utility does not cause
the destruction of the utility’s Java object: instead it
acts like a smart window-minimization. The utility
frees up as many objects as possible (trees,
files, etc) and hides the utility window.
Next time the utility is launched from another
utility, it comes up almost instantly.

Results

So here is how the problems fared:

  • Slow start-up times:
    The initial start-up time is less, because
    only the libraries needed for the utility
    need to be loaded.
    The time to launch a new utility from an existing one
    is smaller, because there is no need to launch a new
    JVM.
    Indeed, if the utility was previously launched then
    closed but there was always some utility keeping the JVM
    alive, it may open instantly.
  • Java didn’t know how much memory was optimally available.
    I blogged last year about this: the utilities are invoked
    through a executable which calculates the optimal
    heap.
  • Java GC does not interact particularly happily with paging.
    Using the same JVM rather than launching
    others reduces the pressure that active pages will be
    paged out.
  • Java scheduling and memory management does not have any idea of foreground/background.
    Again, by keeping everything in one JVM, we
    reduce the liklihood of
  • Download times:
    Each utility is substantially smaller:
    often less than 20% of the size of the Professional
    Edition. Just as helpfully,
    we figured that by now most people have upgraded
    to JRE 1.4.2 or JRE 1.5, so we didn’t need to
    rebundle the JRE.
  • Users often bought the system for specific funtionality:
    Obviously the utility idea caters for this well.
  • Large WIMP applications are not “intuitive”
    Removing the menus, and giving a clear, small set
    of tasks on the buttons makes the interface easier
    to figure out.
    We also simplified the help files and made them
    available in the first tab.

In our performance goals from three years before,
we had a launch limits of 4 seconds to get a splash
screen, 4 second to get the application frame and
main menu, and 4 seconds to get the main GUI
items functional (4:4:4), on our target PC.
We had gone pretty well, but
load times were hindering us, and one prototypes
of a recent product we had degraded closer to 8:8:16,
which represented high suckitude. The utilities are
each about 1:3:2 for the first one launched,
0:2:2 for the initial fast lauch of one utility from
another,
and 0:0:0 for subsequent fast launch times. Yahoo.

It is a good architecture: it matches Java’s and Window’s
natures quite well. To actually spit up the Topologi
Professional Edition completely along these lines would
take at least 20 utilities, so we started off with 5
and enabled fast launch to the simpler Mark Editor
product,
and with several more utilities in the pipeline.

In one sense, what we are doing is moving the top-level menus to the Windows Start menu. This in effect moves up all the underlying interace objects up one level. Users select the utility (which groups related tasks) and then have the tasks staring them in the face, rather then hidden under one or two layers of menus. Similarly when switching to help files the user sees the help belonging to the tasks, rather than amalgamated help for all functionality, which requires searching and head-scratching.

The limitation currently is that fast-launching only
works from inside a utility. If you have one utility open
and launch another from the Start menu, say, you get two JVMs. I may look at having our custom launchers
find an existing JVM before launching a utility in a new one, and there may be some way to use the JDIC Windows Quicklaunch Toolbar to keep the JVM alive, but that is down the road.

I don’t know whether moving to a task-oriented, utility/mini-program approach will work on your application, but I certain commend it. It makes Java applications feel like different beasts.

Java experts often recommend custom class loaders as
the way to reduce initial loadtime. What no-one (who I have
read, at least) suggested was what I found: that to use
class-loaders successfully you have to design your program so that the user
interacts in chunks of related tasks
, rather than the WIMP approach of having most functions theoretically available at the same time (which can happen as a result of removing modality from a WIMP interface, for example, in HCI jargon).

Grouped Tasks -> Virtual Utilities -> Fast Loading & smaller size -> good suckitude
David Battino

AddThis Social Bookmark Button

After reading “Keyboard Shopping for GarageBand,” Derrick Story’s overview of the compact GarageKey controller, a reader wondered if there were an even smaller USB MIDI keyboard. He wanted something like the Creative Labs Prodikeys, but that also worked on the Mac. (The Prodikeys uses a PS2 connector, not USB.)

The Prodikeys is a great concept. It’s a full-size QWERTY keyboard with a wrist rest that detaches to reveal a three-octave MIDI keyboard. The black-and-whites are half the standard size, but they are velocity-sensitive, so playing harder can produce a louder, brighter sound.

Creative showed me a pre-release version of the Prodikeys a few years ago, and I was so intrigued that I recommended one to my mom. She still uses it to practice her choral parts. Ironically, the QWERTY part of the keyboard she got is disappointing. The key layout is non-standard and it’s easy to GEnerate DOubled CAps. That stickyness may have been an anomaly, but Creative fixed the key layout in the new DM version.

The smallest USB MIDI keyboard I know of is the Evolution eKeys, which also uses minikeys but is not velocity-sensitive. If you want (lots) more control, there’s the Korg MicroKontrol. The smallest keyboard with full-size keys has to be the rubbery Roll Up Piano. It apparently also uses a PS2 interface, alas.

If you’re a keyboard player, however, you’ll likely be frustrated with minikeys. Thankfully, there are a ton of two- and three-octave USB MIDI controllers with full-size keys out there. I wrote a USB MIDI keyboard shootout for Electronic Musician a few years ago comparing the usability and feel of the first crop of these keyboards. The best-feeling ones I’ve played are from Edirol and Novation.

If portability and cost are no object, you may want to consider four-octave, five-octave, and even 88-key controllers. M-Audio makes a surprisingly inexpensive 88-key controller, the Keystation Pro, which features piano-like, hammer-action keys. Having started as a piano player, I was astonished how much difference hammer-action keys made when I reviewed the Yamaha Motif. I no longer felt like I was fighting the keyboard to get an expressive piano sound; I just played music.

Different Keystrokes for Different Folks

Incidentally, I played the GarageKey at Macworld and got the impression it wasn’t designed by keyboardists; it would be too easy to break off the end keys when traveling, and hiding the octave-shift buttons on the back is awkward. Also, I would never buy a MIDI keyboard without a pitch-bend wheel. Of course, I’m not the GarageKey market. The manufacturer says its goals were to make something compact, straightforward, and visually harmonious with Apple’s industrial design. In that, they’ve succeeded. The feet that let the GarageKey straddle a QWERTY keyboard are a nice touch. So is using Class-compliant USB MIDI drivers, which lets you just plug in and play without first installing software.

For desktop keyboard controller duties, I’m still using a 15-year-old Korg T3 synthesizer keyboard, which has a snappy Yamaha action I’ve always liked. (One revealing keyboard test is to press keys at the very back, right where they disappear into the case. On better-feeling keyboards like the T3, you’ll find that the hinge point is actually deeper inside the case.) At five octaves, the T3 is too big to sit on a desk, but it rests conveniently at my side. That 90-degree orientation also keeps my nose out of the computer monitor when I’m playing, so I can focus on the music.

On the go, I use a Novation BassStation. It’s a battery-powered, monophonic analog synth with an admittedly cheesy keyboard, but I love the sound, especially played through my Korg Pandora PX3 guitar effects processor. I bought a portable USB MIDI interface so I could use the BassStation as a USB MIDI controller, but found that one glorious analog note at a time was enough for most jam sessions.

How are you controlling your computer?

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://www.advogato.org/article/820.html

Everyone’s favourite game is to improve XML. It is not difficult to do. Getting anyone to care about or adopt the changes is the hard part. Who cares about XML 1.1, YAML, SML? Let alone kites flown by Tim Bray, James Clark, Norm Walsh, me, Uncle Tom Cobbly and all.

W3C’s sassy fox Liam Quin has joined our whinging throng. He suggests that an XML 2.0 could have text and binary versions. Reading between the lines, to remake XML to support whatever “Binary XML” supports. And to make XML 2.0 good for people for whom XML 1.0 is unsatisfactory.

Sounds good. Rare revolutions rather than half-baked evolutions. The change that most people agree on now (i.e., trim DOCTYPE declarations and make good) are currently not required parts in XML 1.0 documents anyway, so there just isn’t the dynamic of frustration that to force a change just on aesthetics and simplification.

My proposal is to have a regular alternation of XMLs.
It works like this. Every five years, W3C determines who is happy with XML the way it is and who is unhappy. Then they define a shiny new XML which will make all the happy people unhappy, but make all the unhappy people happy. Well, as many as possible. Some people are just happy regardless of how much the cage is rattled. This musical chairs will ensure that, in the medium term, most people can join in the party. Very fair.

More seriously, I long for the day when W3C starts acting like the supplier of a regular service rather than a magician periodically pulling ever fatter bunnies from the hat dramatically: have regular periodic reviews (like ISO standard’s 10-year reviews) and releases so that the technology can improve in a way that vendors and users can work with it. For example, to divide a recommendation’s lifespan into four periods:

  • Incoming. The first 3 years, when new implementations are coming out and new RECs are built.
  • Current. The next 7 years when this version is king.
  • Outgoing. The next 3 years when a new version is
    being progressively introduced. The changing of the guard by vendors.
  • Golden Oldie. Still working fine in older systems
    which have no need to change.

Adopting new standards is one of the biggest ways organizations innovate. But after a technical standard has been adopted, unless that standard can grow, it sooner or later blocks rather than promotes improvement. Fundamental standards, such as XML, need to be capable of being factored into product managers’, developers’ and vendors’ life-cycles in a dependable way.

How musical is your chair?

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://lists.oasis-open.org/archives/members/200501/msg00014.html

The standards body OASIS is having an election, closing Feb 11 2005, for a new member of the Board of Directors.

If you can vote (only OASIS sponsor and contributor members can vote), I recommend you vote for the candidate who is not representing the concerns of a particular commercial organization. I am not sure whether it is good manners to tout the name in public (I am not a member of OASIS, but I work
sometimes for companies that are), but I suppose the initials BG (or RG) will be helpful :-)

Not that I am against commercial organizations, far from it, but the strength of standards bodies comes from having buy-in from both large US companies and from people with larger affilliations: academia, government, the larger international community. With users rather than
customers.

I have known and admired BG (or RG) for several years. His enthusiasm is matched by his knowledge. He is a world leader in figuring out Document Engineering. It is surprisingly important to have user-side influence at director level for standards bodies.

Rick Jelliffe

AddThis Social Bookmark Button

Related link: http://www.cafeaulait.org/oldnews/news2005February1.html

The only technical web site I regard as a daily must see is Elliotte Rusty Harold’s twin Cafe con Leche (XML) and Cafe au Lait (Java). (I like
planet.xmlhack.com,
and the blogs of Tim Bray and Dare Obasanjo too.)

It has been interesting to see Harold move from being
quite sceptical of automated bug-finding tools to becoming a big fan. Java has great bug-finding tools: in part this is because it needs them (for example because you might be writing multi-threaded code, and therefore have to deal with synchronization issues), and in part because Java provides enough information for programs to detect a whole classes of bugs. Some Python fans might also say that Java has too many lines of code, which cause extra bugs in the first place.

There was a lot of discussion a while ago on the
virtues of XP (Extreme Programming) and more recently on
the value of terser languages such as Python versus Java.
One of Java’s strengths is that it can be reasoned about by automated bug finding tools (largely because it does not have pointers and because it uses automatic memory management).

It strikes me that different projects, designs different application areas, different development environments, different test environments, different programmers, and different programming languages each will have unique characteristic errors. So it is unreasonable to generalize too far about development methodologies (strong typing is better than test based is better than automatic bug detection is better than rigorous design, etc).
The first thing to do is to figure out which kind of errors your software is prone to, then to implement the appropriate
prophylactic.

And there is the rub: if you are inexperienced, or the project is starting from scratch, you will have to rely on the expertise, intuition or superstitions of others. And because you use different programmers, etc., etc., their silver bullet may not be as effective for you. (It may be more effective, if you are lucky.) But you have moved out of the realm of software engineering (i.e. how to extract and apply objective measures to replicate successful projects) and into voodooland.

An approach I took a few years back, which I think is
pretty workable when starting brand new development and team, is this: start off implementing a little of as many different strategies as possible (for Java, this would be
Eclipse, JUnit tests, JLint/Findbugs or PMD, an IDE tool, a workable human communication system, a good version control system, periodic scheduled audits for i18n, accessibility, memory profiling, and usability, a skills-enhancement program, an Open Source library research effort, and so on.)
Then cut back on the ones that are not providing value compared to their cost, and ramp up the ones that give
bang per buck.

For example, we started off putting in assertions about method arguments. This was before Java provided assert, and it was not very workable nor did it
find the kinds of errors we made. Presumably strong typing caught many of them already. So we cut back to just checking for null-valued arguments: that has been workable and effective.

There is an educational effect at work too.
When a programmer makes certain errors, and then has
to fix them, they often learn not to make those errors.
It is not just moving from being a novice to being
a guru; it is being habituated by the particular
feedback against making certain errors. So the silver
bullet can change: after using the automated testing
tools for a year or more, they may yield smaller results,
because the programmer is more aware of the kinds of
errors they detect and because they have already been acted
on. But the same is true of unit testing: putting a test in place detects initial errors fast, but after then only detects occassional-introduced errors. Unit testing trains
the programmer too.

I rarely see this mentioned. Software development methodologies are usually couched in terms of improving software quality. But they often act in the medium term by improving programmer quality. To a certain extent, a
prudent project leader should, rather than thinking in terms of processes to improve software quality, think in terms of processes to improve programmer quality.

Silver bullets don’t kill errors, people do.

David Battino

AddThis Social Bookmark Button

Related link: http://www.otheroom.com/namm/

It never fails. Minutes after I get to a trade show, someone lurches up and asks, “So, what’s the coolest thing you’ve seen so far?” I’ve started taking a twisted joy out of naming products that are just weird or extreme.

At the recent NAMM show, which the organizers say is “like the land of Oz for musicians,” finding offbeat stuff is easy: I just head down to Hall E, where ambitious new companies and crackpot inventors alike unveil their brainstorms. It’s like Ozzfest for mad scientists.

This year, the first booth that caught my eye was apparently designed to look like a musty living room. There was a throw rug on the floor, a framed painting on the wall, a side table with a thrift-store lamp, and in the middle of it all, a pedestal. On top of the pedestal was a heavy black box with one enormous knob. The price: about $4,000. As I stared, the inventor explained that it was a super high-quality volume control for surround sound.

Just today, I learned that a musician named Barry Wood has created annotated photo tours of NAMM’s wackiest music gizmos for the last eight years. Check it out. The World’s Most Dangerous Volume Knob made an appearance this year.

—David Battino

So, what’s the coolest thing you’ve seen so far?