More client-side XForms goodness
First, the Chiba team has a new release, a tantalizing version 0.9.9.
It includes "convex", a client-side technology that uses the same Java
Chiba engine via an applet. Currently IE-specific, but it is still
beta after all. Link:
http://sourceforge.net/project/showfiles.php?group_id=20274&package_id=139156
Another set of projects, UGO (a JavaScript class loader) and DENG 2.0
(an XForms engine that promises to run in the browser, without even
needing Flash) are entering an initial beta phase. Link:
http://demaledetti.net/ugo/ -m
Sean McGrath: Writing code vs. writing books
Sean McGrath has a well-thought-out article where he compares writing
code to writing a book.
http://www.itworld.com/Tech/2327/nls_ebizwritingsoft041228/index.html
I have much sympathy for this position, but it raises more questions.
For example, how does the prinicple of "test first, then code" apply
to writing books? -m
Web Search without the Web
Google Suggest is great--the gap between 'in a blink' and 'however
long it takes for a browser reload' can mean the diference when you're
drilling down to your target. It's also good to remind people how
capable browsers really are. For the right datasets, though, you can
go one step further, and avoid the XMLHTTP overhead alltoghether. A
good sample dataset is the full text of an O'Reilly book, say, XForms
Essentials. See what I'm talking about at
http://xformsinstitute.com/essentials/xfi.html (JavaScript required).
How does this work? The bulk of the work is done on the back end by
David Mertz's Gnosis utils. I build an index of the actual HTML files
comprising the book, then write out two compact JavaScript data
structures. One is a dictionary with each word (in CAPS) as the key,
and the value an array of matching fileids. The other is a straight
array of filenames--the index into the array is the fileid.
The Gnosis utils include a huge list of stopwords that don't get
indexed. Also, hyphenated and apostrophied words currently get broken
apart. With those caveats, XForms Essentials contains 4461 distinct
words. Interestingly, for my book, the result is around 160kb of
JavaScript--an amount easily managable by the browser.
On the browser side, a timer watches the submit button-less form and
runs a query whenever the value changes. The localfind() function is a
port of the Gnosis find() function to JavaScript, with additional
complications since I used the more compact array syntax instead of
dictionaries for everything. It queries the dictionary, and performs
boolean AND when multiple terms are present. The results get put into
a div using standard DOM techniques.
Note that this is completely network-independent. If you save the html
and js file to a local disk, it will continue to work fine.
I see two major applications for this: personal content management,
and application local help files. Most folks' personal data--the local
hard drive stuff they really care about--is small enough to fit with
this approach. HTML help files could similarly be fully indexed this
way, with no dependencies on any server or special application or
library on the client.
Let me know what you think. -m
Time to re-read _Text Processing in Python_
David Mertz's book is excellent on so many levels. It's worth a read.
Online at http://www.gnosis.cx/TPiP/ though better in print. -m
UBL Input Specifications
Over the last year or so, G. Ken Holman has done excellent work on
formatting specifications for UBL, the Universal Business Langauge.
(He also had a good presentation, available online at
http://www.idealliance.org/papers/dx_xmle04/papers/04-01-01/04-01-01.pdf
) The next step, which I'll be helping out with, is the other
direction -- gathering and managing UBL data through forms. The first
step is a set of input specifications. Look for a bigger announcement
in this area in the new year. -m
The Aura Effect
Just as people tend to go though a fixed set of stages while grieving,
I belive there is a corresponding set of stages involved in diving
into a new and significant piece of code. This is also why otherwise
intelligent individuals that are new to a technology tend to ask
stupid questions on mailing lists, at least at first.
The "aura" is the general overwhelming feeling you get at first. Maybe
you've heard stories about the fantastic complexity of the code, or
seen bug reports, or have just been suitably impressed by the the
project so far. It can feel like the new project is magic, beyond
anything in your experience. It takes a some continuous exposure to
the new stuff for it to penetrate this barrier. But during that time,
you tend to ask the kind of questions that have obvious answers, once
you hear them.
After a couple of sessions, the aura fades. You realize that the code
you've been staring at is...just code. The code hasn't changed very
much since you started, but you have. You happily move on to the next
phase, acceptance. -m
Happy Anniversary Netscape
Today is the 10th anniversary of the release of Netscape Navigator
1.0, and the 0th anniversay of the arrival of my new PowerBook. The
first screen upon launch asked me to connect up with a (non-included,
ugh) FireWire cable and transfer over all my settings, which worked
flawlessly. Well, it did first estimate a 6 hour transfer time, which
seemed a bit excessive for 800Mb/sec, but it gradually revised the
estimate down and in less than an hour I had a perfectly comfy
environment. Joy. -m
(More) IBM XForms
IBM has launched a new Alphaworks technology, using Java and XForms to
reach lots of mobile devices.http://www.alphaworks.ibm.com/tech/ifmd
A big design factor in XForms was making sure that distributed
processing (i.e. more than just a straightforward client-side engine)
be possible. And just it time for my new Ten Favorites article? ;)
-m
Google Suggestions
This is very cool, and a good use of client-side xmlhttp.
http://www.google.com/webhp?complete=1&hl=en Find-as-you-type is an
important feature for information access. My local "it's the data,
stupid" system has been doing something similar for a while.
I keep everything important in plain text, of course, and use full
text indexing from the Gnosis utils. I set up a simple xmlhttp page
that queries as I type, dynamically updating the results page.
Why is this a big deal? The rule of tens: There are some things, like
keeping a todo list, that you will simply end up not doing if it takes
more than ten seconds. For some things, though, it's more like a one
second rule. This makes it easier to jump into a todo list or the
million other things you have going on at a given point. -m
Ten New Favorites
I'm updating my Ten Favorite XForms Engines article on xml.com.
Quite a bit has changed since September 2003. If you have any
suggestions, let me know. -m
New PowerBook
Deciding on a new laptop really is an agonizing experience. But now
the decision is made, order placed, and waiting begun.
This will let my current PowerBook semi-retire, on active reserve
duty. The new one has DDR333 memory (vs PC133), an 80 gig/5400 rpm
drive (vs 40 gig 4200 rpm), just shy of twice the CPU clock, double
the L2 cache, and since Apple's memory upgrades are ridiculously
expensive, after a separate upgrade, I'll have more memory too. Yum.
-m
OASIS, here I come
I have just joined OASIS. I have some specific plans in mind--watch
this space for details. -m
Writing yourself a check
It feels really good to write yourself a check. The new business is
going great, though I wanted to build up some cash reserves. That
done, time to start writing the checks. That and end-of-year business
spending. :) -m
Terms of use
For external use only. I doubt
the enforcability of click-through licenses anyway. Copyright 2004 Brain Attic, L.L.C. All rights reserved.