Saturday, June 25, 2005

Dave Winer : Why [do] we have to design our software to the user who freaks out? ... when we are basically disempowering the user who is curious? ... People aren't stupid. And people who design software for people who are stupid, get what they deserve, which is stupid users. I prefer to design software for people who are smart, because I'd much prefer to work with people who are smart.

And ... sometimes people who are smart act stupid because you treat them like they're stupid. So I prefer to treat them like they're smart.


Great Morning Coffee ramble. :-)

MP3 here :

Tuesday, June 21, 2005

I've been meaning to read Hugh Macleod's How to be creative for a while but never got round to it until today.

Haven't finished yet, but wow!, it's good. (So far)
Interesting question : Where to find a startup company if you want to work for one.
Sigurd Rinde vs. hierarchy :

Do the test:

1. Write a letter, using a word processor, to a friend about some tax issues, some personal stuff and a great new joke you just heard.

2. Save the file to a folder. Choose the folder according to either recipient, theme or whatever you normally choose. Your choice.

3. Wait two months.

4. Find it.

Did you find it immediately? Or did you have to think hard, trying to put yourself into your own mind two months ago - was it in a folder named 'Friends', 'Letters', 'Jokes' or in a folder somewhere named 'Tax issues'?

I also like this :

The sticky point about two dimensional tree-structures is that you have to assimilate the logic of somebody else. Or yourself two months ago.

Tree structures should be chopped down

Sigurde then goes on to suggest something even wilder. Why not tag people within organizations rather than put them into slots in the org.chart.

Hey! You can officially be a programmer, and accountant, and tea-maker : all at the same time, if that's the part you play.

Seems like Thingamy are going to support this idea in their software too :

Hang on a few weeks, we're tinkering with a slightly wacky CMS for the heck of it (and to test these ideas in practice) to produce navigation-bar-less-no-trees-in-sight websites/knowledge repositories, should be fun. Watch this space.

Monday, June 20, 2005

Ross Mayfield blogs Thomas Malone's CTC Keynote
So, I was all set to start writing some unit tests to begin the refactoring I described below.

But then I needed to do a bit of procrastination, first. :-)

That article is good advice for procrastinators. But what grabbed me was this :

You can accomplish a lot more in small increments -- even fifteen minutes is enough time to do a little bit of quality work. Just get a decent start, and don't worry so much about finishing. If you start often enough, the end will take care of itself.

That's the ideal for the smart disorganized individual. Working in a lot of 15 minute (or shorter) fragments according to your inspiration, energy and available time.

But there's a big problem : switching costs. Every time you drop something and pick it up later, you have to re-aquaint yourself with the context of what you were doing. You have to recharge the short-term memory. Of course, if you'd documented what you were up-to initially, returning would be easier. But in fifteen minute bursts, who has time to write documentation too?

Without that, a lot of your fifteen minutes, and a lot of your energy, get wasted on rediscovering what you were doing previously. Or even, if you've totally forgotten (as I sometimes have), redoing something that was already done! That makes the SDI way less effective than someone who can actually concentrate and stick at one task for a reasonable length of time.

Not surprisingly, I think personal wiki is the beginnings of a solution. What's needed is somewhere to keep track of what you're doing as simply as possible. And while you are doing it.

Notes should be written to accompany the process. Ideally, you can open a notebook, create a new page and just get down to it in less than a minute. Using the notebook as a scratch-pad for your ideas while you work.

Then, when you want to switch out of that context, You want to hit "save" and be finished with it. Not hit "save" and be having to think : "where shall I put this document in the file-system? Oh, God! Is it better to put it under 'My Documents/teaching/advanced-programming/examples/' or better to put it under 'Development/Python/adPro/' Wow! I'm such a loser because I can't keep my files sorted"

Similarly, when you return to the project, to make the most of those 10 - 15 minutes, you want to recover that context quickly, not frantic scrabbling around hard-to-click little folder-icons in Windows Explorer, waiting for the turgid "Find files or folders".

You usually remember enough about the project to remember its name. So you really just want to type that name into a convenient place on the screen and be there.

Alternatively, stick a link to each project, slap bang on the start-up page of the notebook in large letters. In a personal wiki this is trivial. You just hit edit; type the page-name link; save; go to the page. Now the context is reachable within one click of opening the wiki.

If you have several projects on the go, put a bullet list of links to them as the first thing on your front page. That puts them all easily within reach. When the project finishes or becomes less of a priority, you can move the link elsewhere : further down the page or onto another one.

On the other hand, maybe when you started thinking about "BirthdayInvites" yesterday, you forgot to link this from the front-page. It's not really a big project, but today it would be nice to get there quickly. But what did you call it? In this situation, the RecentChanges button is invaluable. Hit "Recent" and yesterday's (and the day before's, and the ... etc.) edits are within one-click.

In exceptional circumstances you forgot the name of the page; you last touched it months ago; and you don't remember a route to it from the front-page. Now "search" comes into its own. If you can remember just a name or word that's likely to be in the page, you can search for it. It's a little longer, but it will still get you there faster than wandering cluelessly in Windows Explorer.

Why is wiki so good for this? Well, having built-in search and RecentChanges is handy. But hypertext, not hierarchy means that a wiki can have "small world" properties. Everywhere is only a few clicks from everywhere else. Compare this to what happens once your file-system gets crowded and in getting from the Ping project to the Pong project you might find yourself going up five or six levels to find a common root of the two, and then navigating (more or less blindly) down another branch of the file-system. Going down is less comfortable than going up. You have to scroll around to find the right icon to click in the absurdly cramped "file open" dialog. That's assuming you recognise which route to take at all. Often you find yourself guessing wrong, going down the wrong sub-branch, and having to backtrack.
Bill Seitz agrees about the importance of smart-ascii as fundamental. He says the trick is finding a "style" of plaintext editing that can be rendered to a format that can then provide an outliner-ish view (collapsing hierarchies, etc.) (I'm pretty sure that can still just be HTML v4). And then Transclusion comes next... or an [Outlin Ing] editor that gives you more capability in restructuring the page, but still saves in that Smart Ascii format so you can still get work done in a plain browser window...

I think I like all of this. Today I had a series of small brain-quakes which might have reconfigured the geography of SdiDesk dramatically.

Here's a list of random thoughts.

  • Yep, pages won't change from being smart-ascii underneath.

  • But maybe internally I can represent them as a more tree-shaped structure.

  • A page can be a sequence of PageSections. Each of which can be either a paragraph, or a table or a bullet-list (sub-tree)

  • In fact, in the last refactoring, I experimented with the decorator pattern. Networks are actually decorators for ordinary pages. They implement the "Page" interface, have an inner component which is a MemoryResidentPage, but offer extra functionality. I've been thinking of doing the same for Tables.

  • Now I am wondering if I can define a standard interface called "PageSection" or something : make each object : Page, Network, Table, BulletList etc. implement it. And use it as the basic component of a tree-shaped document.

  • At the moment I have some rather confusingly (clunkily) named function which serialize Tables and Networks into Smart Ascii and parse them back again. (I was calling these serializations the Pretty Persist. And so there were functions like SpitAsPrettyPersist etc.)

  • But the cleaner, more logical thing would be that raw should be a public, string property of any PageSection. And setting it would automatically update the object, and getting it would also get the most up-to-date version.

  • Same could be true of Pages themselves, of course. I would then have a common interface convention for ...


This is where it gets awkward. I'd like a fully generic, nestable, recursive structure. That's easy to do internally, but I'm quite a long way from that with my particular markup implementation. Can you do fully recursive in Smart Ascii? How? And how do you stop that becoming as awkward as XML?

I guess that's what Bill means by "a "style" of plaintext ... that can be rendered to a format that can then provide an outliner-ish view"

Hmmm. That was fairly stream of consciousness. I hope it made sense. It helped me anyway. And comments on this, welcome as usual.

ps : Transclusion I already have, of course. (Or at least, including the body of one document in another.) If I could only solve how to embed a network in an ordinary HTML page, then I could make that general as well.
Channel 9 talks to David Ornstein, who's a wiki guy inside Microsoft and creator of FlexWiki.

Some interesting points on name-spaces, semantics, and the limits of wiki-popularity.

Friday, June 17, 2005

Bill Seitz : I think treating every page as an outline is a better direction to go

I'm wondering what this means in the SdiDesk context. That every page should really be a tree, rather like an HTML or XML document?

That the basic, underlying representation of pages is plain-text is a non-negotiable virtue for me. I don't want to get involved in XML as the base representation.

On the other hand, at present SdiDesk treats pages with a bunch of heuristic substitutions (much as traditional wiki does). You can go a long way with this approach, but my rewriting bullet-lists is actually an admission that a more structured way of thinking works for this part of a page.

The same is true of tables too. These are parsed into a special Table class.

And if I allow table objects and list objects to be embedded sub-parts of pages, why shouldn't we treat the page as a list of "nodes" which can be either table, bullet-list or paragraph?

Could also be used to generate "table of contents" as with wikipedia . And allow finer (purple) addressing.

Aaargh! Too many ideas to implement. Not enough time. Worth mulling over though. Comments welcome, as usual.
My friend Scribe asked about outliners on

I'm not an outliner person, I prefer freeform rhyzomes myself. But recently I find I'm starting to write a bit of an outliner as part of SdiDesk.

I didn't plan to. I was simply trying to nail some of the bugs in the code which renders the nested bullet lists. However, the code was getting a bit long and convoluted, a so I realized I needed a more coherent way to parse and process it.

I pulled out the code that was doing this, which was simply part of the whole WikiToHtml class and have made a special NestedBulletList class which is essentially a recursive tree data-structure. This is used to represent bullet-lists, and has the code which parses them from the raw text, which can render them in HTML.

It could easily be adapted to allow sub-trees to be hidden or not and provide some other outliner-like features. I already record whether items are "checked" etc. I could record whether they're open, or the estimated time, or the percent done, too. (I have some Perl which already does something like this from a couple of years ago.)

Not sure I want to go that way yet. What's more likely, short term, is that I'll make outlines a separate page-type, the way network diagrams and tables are. This would allow me, at some point in the future, to have a special edit modes for them, as with these other types, that could include a standard expanding / collapsing view.

After I've got this component and used it to clean up the parsing, I don't think adding more features is actually next on my to-do list. (Exporting is a much higher priority.) But it's on option which is open.

Any comments. Who'd like to see more outlining, or project management lite (a la ta-da, task-toy etc.) in SdiDesk?

Thursday, June 16, 2005

I know I said I wouldn't talk about this kind of thing.

But it does make me wonder. Whatever happened to Filofax? If they were smart they'd be all over this trend, hiring David Allen, putting ads on 43 Folders, buying Tasktoy etc.

Or even, ahem, sponsoring SdiDesk :-)

As it is, there isn't the slightest hint of recognition on their site.

While on the subject of paper-based organizers and incestuous cross-branding and consolidation in the life-hacking space, I wonder how long it will be before Lulu or Cafe Press offer print-on-demand 3'' x 5'' cards?
Toby Segaran thinking of setting up a wiki to support tasktoy.
Good (but only temporarily available) discussion on Web 2.0 stuff (wikis, blogs, RSS feeds etc.) and the way they challange and change business.

The big surprise for me is this, quote from Philip Evans.

One of the simplest arguments I've used to get people out of a traditional mindset is to point out a statistic -- the cost of transactions in the U.S. More than 50% of the non-government GDP in the U.S. is based on transaction costs. Now, what's interesting is that the way most people think about economics is that execution costs are on the periphery. If you start from the premise that transaction costs are central to the productivity of any system, and if you then recognize that most of our time is spent negotiating, securing, monitoring, making sure people did what we expected them to do, dealing with the fact that motivations aren't entirely aligned, and so on, you realize that we have to find a way of working together amid this asymmetry of information. About half of our time is spent doing those things.

This changes the way you think about productivity in organizations where innovation, adaptability and dealing with complexity are the key challenges. So much of reengineering, which is what major corporations have been about for the last 10 or 15 years, has been about linear efficiency -- lining everything up in as tight a way as possible along a path. That's wonderful if you know exactly what it is you want to do, and the aim of that task will never change. Increasingly, that's not the relevant challenge. The challenge is adaptability, complexity, uncertainty and your capacity to mine the elements of your business, people and knowledge into different and new combinations. If that's what you are trying to do, then your transaction costs become the biggest inhibitor to your capacity to do that."

I'm not surprised that we need to get more flexible (disorganized). I'm surprised that the opportunity is so measurably large. Yet more reason to be searching for disorganized strategies.
Dave Winer's Bootstrapping vision.

He's at it again. is a forum dedicated to screen-casting. I put up my debugcast to get some feedback.

Tuesday, June 14, 2005

Wired News: Wiki Targets How-To Buffs

Interesting. The guy buys a dot.bomb site with some content, but no editorial work being done, and essentially "open sources" it as a wiki.

I wonder what else that would work for?
More examples of how you could use instant outlining
Ross Mayfield links wiki videos
Maybe Instant Outlining can run hierarchical organizations better than email.
Jon Udell has a good story on Wikipedia and the social construction of knowledge. I don't follow the "social construction" of knowledge line myself. As a critical rationalist I think this guy has a better understanding of knowledge. One which is also 100% compatible with wiki-nature.

ps : and Wow! Udell thinks Wales deserves the Nobel Prize. If he does, he ought to share it with Ward Cunningham.

Monday, June 13, 2005

Ross Mayfield's Weblog: Doug Englebart, Rebooted
Chris Dent is less partisan than I was about software for individuals, vs software for institutions

He sees the division as being between two "necessary and useful" types :

One type is interested in enabling or augmenting the subtle interplay of people found in synchronous encounters, in synchronous settings as well as extended into asynchronous settings. These extroverts are the true and hopeful believers in collaborative action.

The other type is more interested in augmenting the individual to allow them to manipulate information so it can be found, created and then distributed in a way that it can be manipulated by others. Introverts in an augmented dialectic.

I think that's an interesting distinction to make. Although I think the Smart Disorganized Individual embraces both. The SDI is not the opposite of extrovert. She believes in collective action and intelligence. Supporting the SDI is simply a strategy towards that end.

I also like Chris's point about diversity of tools. Individuality is a competitive advantage. You need tools which can see round corners precisely because they aren't the tools everyone else is using. If you rely on Word and Excel for all your augmented thinking, then how are you able to differentiate yourself from all the other Word and Excel users? Many times you are going to be involved in a minority game but your tools won't help you to see things differently.

Of course, there's a tension. Because information tools also need to exchange information. So there's always a tendency towards standards and even "lock in". But evolution requires that there's variation.

Final thought. Wiki is a kind of genius. As you start to load it with more interlinked pages, you start to find yourself discovering new connections between ideas you hadn't associated before. There's no technological wizardry about it. It's just that you connect X to Y, and find that Y is already connected to Z, but you'd never thought about X and Z together at the same time. Now you do, and often the results is a little mental explosion.

Sunday, June 12, 2005

Lifehack gets it. On the virtues of using wiki : Good tool to brainstorm ideas: If you are not familar with tools like FreeMind for mind mapping, wiki may be your best tool.


But the real insight is this : It is all due to the fact that the way that wiki markup able one to edit content easily.


Though, remember everyone, that the virtues of wiki-nature also apply to local wiki-like things, such as, say, SdiDesk. ;-)

Thursday, June 09, 2005

WebKEW: Welcome to WebKEW!
How to Make a Million Dollars, by Marshall Brain
The second Seth Godin piece linked from the earlier story is so good, I'm going to give it special attention here : Seth's Blog: more on small
Free from 9 to 5 � When is software ready to ship?
Project Aardvark has started to come alive. Looks like they're working hard.
Seth Godin on keeping it small - Signal vs. Noise (by 37signals)
Wow! A lot of buzz around the creation of sub-networks of blogs to appeal to advertisers.

Two thoughts strike me :

One is that there's nothing in John Battelle's address, good though it is, that should surprise anyone who's read one of the classic, early thinkers on web-publishing.

The other, is that aggregation is a common answer to the micropayment problem, and that it's still an important strategy for smart-disorganized individuals. The trick is how to aggregate without building some kind of hierarchical structure.

An affinity network of like-minded blogs may be one such strategy. It creates a scene and builds momentum. It makes the participants visible. But at the same time they don't help each other much. If you've come to my blog and clicked on the ads here, you won't necessarily be so likely to click on the same ads on a similarly themed blog in my blogroll.

The alternate strategy, of a stable of different blogs, doesn't suffer that problem. But risks the alternative, that there's no real benefit from membership, unless you're trying to appeal to very generic brands.

Is there a middle way? A strategy whereby different people can link complimentary blogs profitably?
Keith To-done is rolling, here :

Geek To Live
wikiHow : a giant wiki howTo.

Tuesday, June 07, 2005

Thinking of working in construction? Don't bother, advises the Construction Contractor's Blog :

Smart, disorganized people in construction are common and not well compensated nor respected.

Being well organized is everything, apparently :-(

The Construction Contractor's Blog: Field Management Archives

Sunday, June 05, 2005

On the subject of early releases, Slashdot says the Linux Kernel gets a fully automated test across platforms within 15 minutes of release.

That's something to aspire to.
Does Canada suffer from too many small start-ups and not enough medium sized players?

Something Ventured - May 20th, 2005

Friday, June 03, 2005

Ultimately what we see is the re-conceiving of the role of the firm. Traditionally the role of the firm has been to increase the efficiency of transaction costs, whereas we see more and more that the firm has to provide opportunities for capability building of the people within the firm. If the firm cannot do that, people will leave and seek out environments that can help them accelerate capability building better. It's a very different way of thinking about what the firm needs to provide to its employees, and the role of the employees within the firm.

Read it all :
Can Your Firm Develop a Sustainable Edge? Ask John Hagel and John Seely Brown
Ross Mayfield's Weblog: A Flip/Flop Bubble of Microventures?

Thursday, June 02, 2005

Finally managed to make a DebugCast that didn't crash my machine.

Here it is. Just a simple bug, nailed in the unit-tests. But conclusive evidence that I'm working ... ;-)
Today's exercise :

Compare this article on the segments of The Long Tail with Ross Mayfield's Ecosystem of Networks.

Way cool!

Spell with flickr :-)


ION RSS seems to be a company focused purely on RSS.
Good story on the rise of blogs, wikis and social software in business.

Blogs and social networks and wikis, oh my! | CNET

Don't forget. Wikis are going to be massive over the next few years. They will take over everywhere for collaboration. Most desktop software will be wikified in some way : collaboratively edited spreadsheets and documents will be the norm.

Wednesday, June 01, 2005

What is trackback?

A friend of mine just asked me this question. So as I've spent 10 writing a quick description in an email, I might as well post it here.

The original idea of trackback is to help find out who links to you.

Your blog publishes a URL which I can "ping", ie. which alerts your blog to the fact that I have a post on mine that links to it.

Trackback is a kind of automation of the practice of posting a comment on someone's blog saying "You're wrong. And I responded over at .... "

Normally, the blog which receives the trackback shows a short snippet of the responding post.

I think it's still heavily used, but might be falling out fashion due
to the blog search engines. If I respond to you on my blog I still
need to find your trackback URL and ping it, often manually. OTOH, as you're already probably using Technorati etc. to find people who link to you anyway, maybe I don't need to bother.

I could be wrong about this. And trackback is possibly still playing an important (and increasingly popular) part in the ecosystem. I have no statistics to back me up. It's just that people aren't "talking" about trackback much ... OTOH maybe it just works :-)
Good Lord! I "earned" 64 cents from AdSense in May. :-)
Good interview with Weed, the file-sharing, pyramid marketing people.

They have some interesting ideas about how to sell content in an age where information can always be copied.