Thought Game

If computer hardware stopped getting better today, then what would software be like in one hundred years?

 

Discoverable feeds for the not-so-liberal

To give IE 7 a hand at finding my feed, I added the following line to the home page:

Apparently this will let IE 7 know that the site has a feed.

Because of the dodgy MeWare I use as a CMS, i can't inject this onto every page.

I'd like to know why MS don't use the Ultra Liberal RSS Locator technique, described by Mark Pilgrim and used by many an aggregator. A case of Not Invented Here Syndrome?. (Or maybe it would lead to serious DDoS type problems if every browser in the world followed it?)

 

seXml: a very dirty little dialect

I was viewing the source code of a website (as you do) and happened upon some of this guff:

A little more scanning showed me:

And I soon learned that the ".dwt" file extension indicates use of a "Dream Weaver Template". Probably a common practice, given the popularity of Dream Weaver.

Interesting, because the format used is identical to a dirty little sub-language I invented one dirty weekend, called 'seXml'.

(Read on, for the truth about seXml)

Ahh seXml!

I'd invented it, fallen in love with it and forgotten it, all in the space of a few hours, in about 2003.

The idea of seXml, (the 'special embeddable, eXtensible markup language') was that it would differ from XML in three chief ways.

Firstly, by default, elements would begin with '<!-- ' instead of '<' and end with ' --!>' instead of '>'.

Secondly, a document doesn't need to have a root element. If no root element is detected, then the body of the document would be embedded inside <!-- seXml --><!-- /seXml --> tags before further parsing.

Third, some very liberal rules allow you to embed a message anywhere in the document that defines different strings to use instead of '<!-- ' and ' --!>'. For example you might way elements to start with '/*** ' and end with ' ***/' so that you can turn a valid C++ document into a valid seXml document.

You can even en-Mesh a valid seXml document in and around a valid XML document. Hence, seXml can be a nice way of documenting XML.

The original idea for seXml was for content editing purposes (as seen in the dream weaver templates). But I soon saw that it could be used to en-mesh meaninful data inside practically any languages.

Because of its strong XML lineage, a seXml parser is really just a pre-parser for XML. You could write your own seXml parser in an afternoon, if only there was a complete spec written for it.

Okay this concludes a week of xml esoterica. An older idea on similar lines, was XPL, but the W3C failed to recognise that one too. Oh well.

 

What does XML look like on other planets?

spot the difference

Beats me. But I have seen what XML looks like in the alternative reality cubicle of my strange friend Gaksloope, fourteen minutes into the future.

Compare Gaksloope's XML side by side with some regular Earth XML.

How many differences can you detect? And what are they all about?

<?xml version=1.0 ?>
<rss/
   <channel/
      <title/Gaksloope/>
      <link/ht:\\org\gaksloope\www\blog\/>
      <description/Gaksloope's Thought Capture Device/>
      <copyright/Gaksloope Zeta-0/>
      <item/
         <title/Nancy Says 'Yes'/>
         <guid/ht:\\org\gaksloope\www\blog\nancy.aspx/>
         <pubDate zone=0 annum=W1/2006-02-05-02-27-36/>
         <description/
            <p/Nancy Reagan admits
            dealing crack to whitehouse staff./>
         /description>
         <category/News/>
      /item>     
   /channel>
/rss>
XML as used by Gaksloope
<?xml version="1.0" ?>
<rss>
   <channel>
      <title>Gaksloope</title>
      <link>http://www.gaksloope.org/blog/</link>
      <description>Gaksloope's Thought Capture Device</description>
      <copyright>Gaksloope Zeta-0</copyright>
      <item>
         <title>Nancy Says 'No'</title>
         <guid>http://www.gaksloope.org/blog/nancy.aspx</guid>
         <pubDate>2006-05-02T02:27:36+0:00</pubDate>
         <description>
            &lt;p&gt;Nancy Reagan denies
            dealing crack to whitehouse staff.&lt;/p&gt;
         </description>
         <category>News</category>
      </item>     
   </channel>
</rss>
How the same doc might look in XML 1.0





















 

Miscommunication Grows Faster than Communication

network of gossip

Something occurred to me on my bus ride home recently. As an organisation grows, the potential for miscommunication grows far more quickly than the potential for good communication.

There's a fairly well known (and debated) principle, referred to as 'the network effect' (or 'the communication explosion') which demonstrates how adding more people to a group causes the potential for communication to quickly become complex.

The 'network effect' is based on Metcalfe's law (which was originally concerned with ethernets, not social networks), and it's one of the priciples that underpins a much loved saying among programmers:

("Brooks' Law", Frederick P Brooks, 'Mythical Man Month')

The 'network effect' for social groups says that as a group grows, the potential for direct communication is in proportion to the member count, squared.

(Usually described as n*(n-1)/2. We divide by two, since each link is two way; we subtract one, since a node can't communicate with itself.)

Meanwhile, the potential for gossip, backstabbing, slander, scandal and rumourmongering grow in proportion to a factorial of the member count.

(Continues, with diagrams...)

He said, she said

Let's watch the growth in comminication and the explosion in miscommunication as a small group expands.

We'll start with a company that has two employees, Alfred and Betty. There is one avenue of communication and no avenues of miscommunication.

Now imagine a new guy, Charlie, joins. We now have three employees: Alfred, Betty and Charlie (A, B and C).

There are three lines of direct communication: Alfred to Betty, Betty to Charlie, and Charlie to Alfred.

But, suddenly, we have six potential lines of miscommunication: Alfred passes on what Betty told Charlie about him. Betty passes on what Charlie told Alfred about her.... and so on.

When Dave joins the company, we take on three more potential lines of communication (Dave can talk to any of the existing people). But the potential avenues for miscommunication has, in short time, reached a staggering figure of twenty-four! (i think..)

After I left uni, I hit the reset button on the part of my brain that learnt about permutations, combinations and so on. But i'm pretty sure there's a factorial at work here. I'd like to see the actual equation, maybe have it printed on a t-shirt.

Surviving the Organisation

A number of organisational effects exist in any organisation, some explicitly, some implicitly. These structures include things like sub-groups, dominance and subservience, ranking (chain of command), class-systems (or even Castes), cliques, competitive teams and so on. I think the reason why these effects develop is not that it protects the group from "communication explosion."

A far stronger effect is "The Gossip Explosion" which, if left unchecked, would destroy any significantly large group.

Anyway, here's a cute summary of the miscommunication effect:


Related/Referenced Stuff

 

The Face of Ruby on Rails

"Ruby On Rails" may be the single greatest advance in popular, usable, programming for the next one thousand years.

Pity you have to look like a pouting artsy wanker to contribute.

marceldavid
floriannicholas

Images snaffled from here. Sorry about the profanity. That one just slipped out.

 

Quick Prototyping Technique

office 12 ribbon

Finally a good use for PowerPoint!

From: The Feature Bob Invented at Jensen Harris's Office User Interface blog.

(The site beyond bullets has a few more tips on good use of powerpoint)

 

Launch the Code Editor on startup

put the ide in your startup folder

Productivity tip (for Programmers) -- Put the IDE in your startup menu.

Otherwise you can mess around half the day, checking and responding to email or surfing the net before you even 'fire up the damn editor'.

I used to eschew use of the startup folder, aiming for a quicker startup. My new philosophy is that it's worth slowing down the computer if it speeds up the human. I put the shortcut there about six months ago and still consider it a good thing that helps keep the code flowing.

 

Printing 'Console' Screenshots? Save your Toner/Ink

a black console image

Need to print a console image, but don't want to waste a lot of toner/ink?

Use the 'Invert Colors' option, under the 'Image' menu in MSPaint.exe

colour inversion option in MSPaint

... and turn your mostly black image to mostly white:

Toner-Angry!Toner-Friendly!

This is particularly useful when the images are numerous and embedded in a document.

[Sometimes you can change the actual console's colours... but by the time the images are in a document, it's often too late.]