Thought Game
If computer hardware stopped getting better today, then what would software be like in one hundred years?
If computer hardware stopped getting better today, then what would software be like in one hundred years?
To give IE 7 a hand at finding my feed, I added the following line to the home page:


<link rel="alternate" type="application/rss+xml" title=".: secretGeek.net :." href="https://secretgeek.net/rss.asp">
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?)
I was viewing the source code of a website (as you do) and happened upon some of this guff:


<!-- InstanceEndEditable -->
A little more scanning showed me:


<!-- InstanceBegin template="/Templates/template.dwt" codeOutsideHTMLIsLocked="false" -->
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'.
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.
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?
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:
Adding manpower to a late software project makes it later.
("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.
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.
1 communication. 0 miscommunication.
Now imagine a new guy, Charlie, joins. We now have three employees: Alfred, Betty and Charlie (A, B and C).
3 communication. 6 miscommunication.
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.
6 communication. 24 miscommunication.
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.
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:
There are many more ways to talk about someone behind their back than in front of their face.
"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.
Images snaffled from here. Sorry about the profanity. That one just slipped out.
Finally a good use for PowerPoint!
This particular prototype was put together in PowerPoint as a fairly inexpensive way to mock up a basic Ribbon and to see whether people got the concept. Basically, we put a picture of each tab of the Ribbon in a separate slide in the PowerPoint deck. We turned off the "click to advance" functionality for each slide, and then drew a nearly transparent square around each tab of the Ribbon. Each of these squares was hooked up to an action so that clicking on them advanced to the slide that revealed the picture of the tab you were clicking on.
In this way, we were able to simulate a tabbed user interface just by drawing 8 or 10 pictures. None of the commands within the Ribbon really worked in these early prototypes; we just would watch and listen to see where they clicked within the tab.
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)
Thanks to Demo Charge (from 'Yes Software'), I've made an animation that shows "How Contextual Help Works in Visual Studio 2003".
It's 190 Kb, so it shouldn't kill your skinny-band internet connection. I hope that you find it informative. I assume this will be the same in Visual Studio 2005.

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.
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
... and turn your mostly black image to mostly white:
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.]