2004/10/30

Well:

Mr. Bin Laden is helpfully removing any wiggle room that Kerry thought he had on the subject of national security. Probably not quite the "October surprise" the Bush administration was hoping for.

Now let's pray Osama's blowing smoke...

2004/10/25

Hallelujah

I now have ADSL.

2004/10/22

The second trend...

...the way web design is changing. Everyone knows nested tables are old-school, clean semantic (-ish) XHTML is newschool. On top of that, ECMAScript is finally being used as it should be in places like GMail etc. etc, leading us to decent webapps that actually take advantage of 6-series functionality (I would argue that Gecko, Opera 7 and Safari will go "7-series", i.e. next generation, if they ever adopt some of the specs that WHATWG is working on.)

However, in terms of UI interactivity and dynamicism, HTTP and SOAP can only take us so far - as far as client-server can take us, after which we need to look to P2P. This is where you're left with the choices of ActiveX or Flash. XMPP is my attempt at a third way, by providing a network layer in which we can do (e.g.) multicast, and all the other stuff that the JEPs offer us.

XMPP and DOM together can offer us a lot more than just a chat sidebar. It can do RSS [as PubSub shows, see comment], VP like Lluna, etc. etc.

However, a dangerous side-effect of giving a DOM full XMPP capabilities could be spam and self-replicating documents. This is something I'm working on. Until I have a 100% bullet- and spam-proof solution my solution is "don't do it". I think that most solutions seen so far, especially those revolving around code-signing, are completely broken, purely because they don't express exactly what TRUST means in this context. Would you trust a company called "click here for your free calendar"? Neither would I, and what this means is that the interface is broken and users are being mislead.

Enjoy your weekends.

2004/10/19

Guess what:

Life is tough. Bad things happen, and sometimes you need a break.

But: the MINUTE you let yourself relax, even a little, you backslide. So don't do it.

2004/10/15

Note to self:

On the 30th I'm going to restart work on Gradient. It's going to be a 1.1, i.e. a feature release. The features:
  • Get rid of XMPP-based document transfer. It's ugly, hard on the network, and goes against the XMPP server model. HTTP will become the primary document transport. Meta tags or tags with alternate namespaces will contain an XMPP "server" JID.

  • (Another approach) Consider adding a JID and/or JID-derived token to be included as an "X-JID" header (or something) in HTTP requests from a logged in client. Interesting problem: can we prove that the XMPP server has authenticated us out of band? If not, there's no point in doing it. Also, it might break the model. (JID != cookie/user info)

  • Get some decent examples up and running. PollingReport.com has good figures, or I could subscribe to Gallup. (Probably contravenes their TOS.)

  • Improve the serverside API, which kinda sucks right now. It should be either interfaced and static-proxied, or dynamically proxied, or EJB...

I also want to fix some things in the known problems list, (UI issues). One or two things from the roadmap, specifically allowing directives to apply to attributes and text nodes, would also be good additions.

The incomparable Smack API now understands Data Forms and Feature Negotiation, as well as Disco, so I now have the freedom to make this a lot more flexible/complicated if I wanted to.

The next release planning was based on the assumption that this would be a real app, and not a demonstrator for a set of very cool DOM extensions, but still has some weight. Some stuff in there should be done too, probably.

My end result, ten years from now, is that I want to be able to do things like: pull up a map of the world, and then chart trade deficits from one server, strategic oil reserves from another, and defense budgets and standing army sizes from yet another, all on the same map/chart, and then make those numbers dance on the resulting infographic.

2004/10/07

The first trend that I am trying to keep on top of:

(Perfection is the enemy of completion. Structure should be inferred, not imposed.)

There are two big things on the web that are undergoing sea changes. The second is the web platform and web design ideology. (I would have loved to be @ Web 2.0.)

FIRSTLY, the continual evolution of the way in which we use the web to communicate, organise, co-operate, and collaborate. The biggest firework in the box is the blog, but this is just one example of a trend that is exemplified by lean, fast user interfaces, attention to information architecture, accessibility, utility. Deli.cio.us, Meetup, GMail, Flickr, etc. Google, of course.

Aspects of related trends include the whole GTD phenomenon, and software like Quicksilver, things like wifi, etc. What these prove are:

(a) That this not just a net-related phenom, but a true change in the way people work and interact
(b) That next-level UI is coming from Geeks hacking neat code on UNIX-based platforms. Duh. (see also: dashboard)

Also, this is a big social thing. Trust, authority, organisation (as per Buzzmachine).

2004/09/22

Ben Harper

If you have not yet heard of and experienced Ben Harper and the Innocent Criminals, then you must RUN not walk to the nearest CD shop or computer and immediately introduce yourself to him. Start with anything from the album named "The Will to Live" and live from there.

2004/09/21

And no sooner were the words out of his mouth...

...he has to eat them again.

Ladies and gentlemen: A smart analyst.

2004/09/17

ANALYSTS

I've heard it said that that market analysts are to PR what black holes are to matter - they continually suck up all PR within their gravity well, the end result of which is an ultra-dense "event horizon" of hype from which no facts emerge.

It sounds like JWZ, or one of his commenters.

Follow up to brain-scan based HCI

The head- and eye-controlled cursor is very cool, and gets rid of the most damaging half of the keyboard/mouse pair. (via NS). It's software that is usable now, and even might make me go out and buy a webcam to test it out.

My only improvement would be to use left- and right- wink for left- and right-click, instead of using the equivalent of double-left-and-right click to mean click. And it will do 3D soon! Fantastic.

(To answer the "silliness" charge levelled in the NS article by the analyst, I do not care one bit about looking silly if it saves me torturing myself with the mouse, and people look stupid talking with headsets, or with headphones, so...)

Previous posts in this area: Questions, Answers, Concepts

Update: Having tried the software, I have to admit it's not there yet. I'm sure we'll get there eventually. (Also: try playing with moving your hand in front of your face...)

2004/09/09

I hate printers.

  • They are always hungry.
  • When they aren't hungry, they're ill-tempered.
  • They eat TREES.

Photocopiers are something that Apple should have done - just once - to show everyone else how to get the interface right.

2004/09/08

Question:

How many cities do you have to lose control of before declaring a state of civil war?
  • Fallujah
  • Sadr City
  • Najaf
  • Ramadi
  • Samarrah
Anyone? Anyone? Rumsfeld?

2004/09/01

Your password is too short...


This is a random password generator that I stuck in my CryptUtils file. It's reasonable for website logins, etc.

private static final String VOWELS = "aeiou";
private static final String CONSONANTS = "bcdfghjklmnpqrstvwxyz";

private static transient SecureRandom random;

static {
try {
random = SecureRandom.getInstance("SHA1PRNG");
} catch(NoSuchAlgorithmException nsae) {
//... static logging here.
}
}

public static final String newPassword(int length) {

if(random == null) {
throw new RuntimeException("PRNG not initialised!");
}

if(length < 8) length = 8;

length -= 3;

char[] blabla = new char[length];

for(int i = 0; i < blabla.length; i+= 2) {
if(i >= blabla.length) break;
blabla[i] = CONSONANTS.charAt(random.nextInt(CONSONANTS.length()));
}

for(int i = 1; i < blabla.length; i+= 2) {
if(i >= blabla.length) break;
blabla[i] = VOWELS.charAt(random.nextInt(VOWELS.length()));
}

String result = new String(blabla);

if(result.indexOf("eni") != -1) {
return newPassword(length+3);
}

return result + Integer.toString(random.nextInt(999));
}


2004/08/31

A bit nuts, but very, very smart.

I am NOT going to use this whack theory to justify frame- and applet- based website navigation.

READ AND UNDERSTAND:
"Any time you engage with information, the reality that you extract from that information is shaped by the tools that deliver it. Microsoft’s information presentation is such a monoculture that it edits out a lot of other realities. So you have a new kind of monopoly that affects the way people think in ways that are invisible to them.

...

You now have two distinct ways of gathering information beyond what you yourself can experience. One of them is less a medium than an environment -- the Internet -- with a huge multiplicity of points of view, lots of different ways to find out what’s going on in the world. Lots of people are tuned to that, and a million points of view have bloomed. It creates a cacophony of viewpoints that doesn’t have any political coherence at all, a beautiful melee, but it doesn’t have the capacity to create large blocs of belief.

The other medium, TV, has a much smaller share of viewers than at any time in the past, but those viewers get all their information there. They get turned into a very uniform belief block. TV in America created the most coherent reality distortion field that I’ve ever seen. Therein is the problem: People who vote watch TV, and they are hallucinating like a sonofabitch. Basically, what we have in this country is government by hallucinating mob."


So says John Perry Barlow.

2004/08/27

XMPP, data transfer etc., redux

OK, so where I'm coming from:

Firstly, this post and the one below are tangentially related to Volity, but I should emphasise that I don't hack on Volity myself - the hard-working Volity coders being Doug Orleans, Karl von Laudermann & Jason McIntosh.

Secondly, these are just my serialized brainstrikes on how I riff on the whole "XML documents <-> XMPP" shebang, which is my approach to the whole idea of taking the web as a quantum leap in data density, and looking to build on that in line with the whole idea of navigable info/dataspace as an end-target.

I should mention that my next idea is to try and get the whole Gradient system working with an HTML viewport as opposed to SVG.

  • I want to get surfable pages that do things like Gradient out there - this is a next-level leap in the capabilities of hypertext systems, and it's possible to do right now - preferably without any client-side installation (see below 'graphs & posts for ideas)

  • The JEPs for file transfer via XMPP are, as far as I can see (and someone please correct me if I'm wrong) targeted at P2P use cases, and if one of the XMPP clients becomes a "server" of documents and starts receiving 1000 requests per second, the XMPP server starts to ask questions like "Why God WHY?!", and with good reason.

  • Fortunately, we already have HTTP, which scales better than the (admittedly nonstandard) method of inserting an XML document as the child element of an IQ RESULT stanza that I use in Gradient.

  • Volity are using HTTP for file transfer, and this is eminently sensible.

  • HTTP can't do the kind of things XMPP can do to markup (with the help of Gradient), which why both Volity & Gradient implement two different solutions for doing the interactive & dynamic stuff. Apart from broadcast, server-client RPC is one of the things that is technically possible using some kind of hack to add a callback function on a client using the newly-crossplatform SOAP ECMAScript objects and/or the DOM3 load/save functions, but this is not exactly the most elegant of solutions, to put it mildly.

THEREFORE, and taking into account that we want normal web-pages to be able to enhance themselves using this stuff while remaining accessible to normal users, it seems reasonable to do something like this:

a) Joe loads his HTML page via HTTP.

b.i) (client-side mod) A Mozilla extension either (a) looks for <meta name="gradient" value="user@xmpp-server.example.com/index.html"> or (b) Looks for <gradient:service gradient="http://foo.com/blabla" jid="user@xmpp-server.example.com/index.html">, and upon finding one, connects to the server and does the twist using some as-yet-unspecified-or-standardized XMPP extension.

b.ii) (no installation necessary, not sure if possible) page includes an applet (up: I needn't code C++, down: applets.) that is given a reference to the Document and plays with it like so. Not entirely sure of the security issues, it's all doable.

I know that from the PoV of a web designer, webmaster, information architect or usability engineer that applets suck, admittedly, but imagine a sidebar/frame applet that (a) has a decent dynamic ToC as per the Weblogic 8 admin tool, (b) decent site-search/index as per RoboHelp, (c) IM interface letting you chat/collaborate with other surfers as per Lluna, and enables your currently viewed document to be updatable in realtime etc. etc. etc.

(I know frames also suck in general but this frame is in lieu of a Mozilla sidebar)

So, if this is the grand vision, why did I start muddying the crystalline waters of disco? My somewhat hazy vision of disco was as defining a set of IQ's for querying a hierarchical nodeset. For each page or each site that has this something like this, the client would want to know (e.g.) do we support site chat using the Lluna extensions, do we do MUC, do we have a ToC (which would be a disco tree) for the site, etc. At which point we're kinda blurring the semantics between site "features" and site "services".