The reanimated spectre of XLink
There's some talk at the W3C about possible continued development of
XLink. (For some background, be sure to read this first:
http://www.xml.com/pub/a/2002/09/25/linkoffering.html )
The always-amazing Bob DuCharme has covered this nicely in his blog,
but I couldn't resist commenting. Link:
http://www.oreillynet.com/pub/wlg/6330 -m
Linux security myths
Microsoft's Nick McGrath was recently quoted as saying "One myth we
see is that Linux is more secure than Windows." Linux security may be
a myth, but Windows insecurity is a documented fact. A company called
Secunia tracks a number of hardware and software vulnerabilities.
Under their page for "Microsoft Windows XP Professional with all
vendor patches installed and all vendor workarounds applied", they
list a total of 80 advisories, 20 of which are still unpatched to this
day. The highest level is "highly critical", and several of them date
back to 2002. Link: http://secunia.com/product/22/
Linux fares much better. SUSE 9.0 has 57 advisories listed, only 2
unpatched with the highest "less critical". Link:
http://secunia.com/product/2467/ The newer SUSE 9.1 and 9.2 both have
zero unpatched advisories. (http://secunia.com/product/3473/
http://secunia.com/product/4258/ )
Naturally, security involves more than advisories and patches. Still,
Redmond's proclamations are looking increasingly less credible and
more desperate. -m
Come see me in Vegas
I'll be teaching two classes at the BFMA (Business Forms Management
Association) Spring Forms Institute in Vegas, on March 24. XML for
Forms, an introduction to XML, and a follow-on class about XHTML.
(Better link coming soon): http://www.bfma.org/ -m
UBL "Lite" revved
It's now officially called "Small Business Subset", and it's at
version 0.5 now. Stephen Green has put in a tremendous amount of work
on this, and I'm happy to be working in the closely-related area of
UBL input specifications. More on that soon. Link:
http://lists.oasis-open.org/archives/ubl-dev/200501/msg00040.html -m
The amazon.com page on amazon.com
Curiously enough, it has a prominent link button labeled "Go to site
now". Link: http://www.amazon.com/exec/obidos/tg/detail/-/B0000690L4/
-m
From the manual of the T/S 1000, my first computer
(Yes, I still have the manual). Chapter 14: Graphics. Here are some of
the more attractive features of the T/S 1000; they utilize pixels
(picture elements). The screen you use for display has 22 lines and 32
columns, making 22*32=704 character positions, each containing 4
pixels.
A pixel is specified by two numbers, its coordinates. The first, its
x-coordinate, dentoes how far it is across from the extreme
left-hand column (remember, X is ACROSS); and the second, its
y-coordinate, tells how far up it is from the bottom. These
coordinates are usually written as a pair in parenthesis, so (0,0),
(63,0), (0,43), and (63,43) are the bottom left-, bottom right-, top
left- and top right-hand corners.
The statement
PLOT x-coordinate, y-coordinate
blacks in the pixel with these coordinates, while the statement
UNPLOT x-coordinate, y-coordinate
blanks it out.
-m
Tonight's homework: review this essay
Politics and the English Langauge by George Orwell. Link:
http://www.k-1.com/Orwell/site/work/essays/language.html -m
Nice quote from O'Reilly Open Source conference, 2002
Good writers provide a context for understanding the subject. -Tim
O'Reilly. -m
Thoughts on nofollow
Lots of discussion going around on rel="nofollow", but a few key
points haven't been adequately expressed yet, so here we go. There's
actually two issues here: the markup, and how search engines process
it. The job of markup is to express the authors intent at a level
that's deeper than the text that's marked-up. So general community
agreement on No Follow is A Good Thing, since folks can more
accurately convey their intentions. Search engines can do as they wish
with this 'serialized intent', but they do that anyway, so I'm neutal
on that aspect. -m
Today's Idea: "Google Suggest"-like interface for Genealogy sites
The Google Suggest interface, or one like at
http://xformsinstitute.com/essentials/xfi.html is ideal when 1) you
don't know exactly what you're searching for, or 2) you need to make
tons of little searches. Both of these seem to apply to Genealogy
sites. I'd love to work on one of these. If you run a genealogy site,
or know someone who does, get in touch with me. -m
XForms Validator goes open source
By popular request, the online XForms Validator has been enhanced to
allow file upload and cut-and-paste input of source documents. Also,
the code is available under an Apache 2.0 license. Read on for
details.
The online version, as always, is up at http://xformsinstitute.com
The project is hosted at SourceForge:
http://sourceforge.net/projects/xfv If you look there, you'll find no
releases as of yet--you need to go into CVS for the code. If you have
any suggestions for the project, please add them to the SourceForge
tracker. And if you'd like to help out with development, contact me
directly.
Technical details about the validator were discussed in the IBM
developerWorks article:
http://www-128.ibm.com/developerworks/xml/library/x-xfvalid.html
If you find this useful for your project, let me know. My company will
continue to offer affordable support/development packages for the
validator. If that sounds interesting, get in touch. -m
Productivity tip: get a better pen
In the 43Folders style of productivity tips, try this: get a better
pen. If you ever write stuff on paper, you owe it to yourself to use a
decent instrument that doesn't require shaking, or 30 seconds of
random scribbling before it works. I don't have a single ball point
pen around (except for a few decoys for when folks stop by the office
and "forget" to return one they've picked up). Get something that can
put down precise lines in archival-quality ink. I use Sanford Liquid
Expresso, some nice Zebra pens I picked up in Japan, Micron Pigma (in
0.1, 0.3 and 0.5 mm polymer tip), and Tech Liner. These last two can
usually be found in larger office stores in the drafting section. Cary
a pen with you at all times and you'll be amazed how often it comes in
handy. -m
Wanted: a HOWTO on installing OS X libxml2 Python using only Fink
I played around for a while with fink, changing the "ConfigureParams"
settings in info files, but ended up with only compiler errors. This
has to be possible somehow--through Fink I already have the full
source for everything. So what incantations does one need to make Fink
include the right bindings so that "import libxml2" succeeds? -m
XForms Essentials @ Google
Alessandro from Orbeon just clued me in: my book is now online at
Google Print (in addition to the regular location). Links:
http://print.google.com/print?id=MVpkBbRConoC and
http://xformsinstitute.com/essentials Nifty. -m
Safari JavaScript bug
In some programming languages, dividing by zero throws an exception,
but not in JavaScript. If you paste this, not including the quotes,
into your browser location bar, you can see: "javascript:alert(-1/0)".
As you can see, the answer is "-Infinity". But now, try this, again
without the quotes: "javascript:alert((-1/0)<0)". Minus Infinity is
less than zero right? Well, not if you run Safari, version 1.2.4 on OS
X 10.3.7 in this case. -m
What I learned porting Java code to Python
Over the winter break, I ported a Java codebase over to Python. I
learned a few things along the way...
Those who have been paying attention will know what project this is,
but otherwise, you'll have to wait until my formal announcement. :)
I got off to a bad start, I admit. The first thing I did was to "jump
in" to the code, and start writing functional parallels in Python. I
didn't understand the Java code, but figured that would be a good way
to learn.
Because I didn't understand exactly what the code was trying to do, I
made lots of stupid transcription errors. The code has lots of tricky,
complex conditionals, and more than once I glanced over one of Java's
'!' characters, inserting bugs along the way! Many of these kinds of
mistakes, like a missed parenthesis, can be caught by simply trying to
import the Python module, but wrong is wrong, even after the syntax is
right.
Having just read a lengthy tread on xml-dev about strong vs. weakly
typed languages, etc. I should comment on that aspect. I did have one
instance of the proverbial 'misspelt variable name' that left me
scratchiing my head for a few minutes. Overall, the code is between
half and 2/3 the size of the original, so I count it as a net gain in
productivity. The other common complaint against
Python--indentation--caused me no serious problems. I use spaces, not
tabs, and once or twice I somehow got off by one space. The
interpreter notices this immediately and tells you exactly where to
fix it.
My code-first approach also led to a "big bang" integration problem.
Once all the Python modules were essentially complete, I had a painful
chore of many reps of this: run code--note the exceptions
thrown--figure out what's going on--fix--return to step one.
Once the code was exception-free, it still wasn't giving the answers I
expected. The original code had a kind of a big bang (to use the term
again) test suite, with one major test that tries to cover everything.
So, I trekked back into Java-land and wrote a number of fine-grained
JUnit tests. Writing these, and reasoning about how I expected the
system to behave, finally gave me insight into the code. JUnit tests
are a nearly perfect analogue to Python's unittest module, so I was
able to write equivalent tests and then make them pass in the same
way.
If I had to do it again, I would go straight to the unit tests. In
fact, I'd make them even finer grained, even to the point of
restructuring the original code a bit to make it more testable.
As a final note, along the way I picked up Wing IDE 2.0.
http://wingware.com/ If you're into graphical IDEs, I can recommend it
for Python work. -m
Free Idea
Here's a free idea for anyone that's interested. Any device that takes
a "power brick", an external transformer and usually DC power supply,
should include an option (or a 3rd party accessory manufacurer should
offer) an option to include a sealed battery in the brick, making it
into a short-term, single-device UPS. This would be especially useful
for network devices, like routers and cable modems, especially when
they sit alone in a back-room closet or wiring cabinet. Hint, hint. -m
More client-side XForms goodness (repost)
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
Terms of use
For external use only. I doubt
the enforcability of click-through licenses anyway. Copyright 2005 Brain Attic, L.L.C. All rights reserved.