Saturday, May 26, 2012

Ward Cunningham Interview

The job was really to take C++, which was a fairly static language, and show people how to write dynamic programs in a static language. That's what most of the patterns in that book were about. And in the process, patterns extended the life of C++ by a decade, which is not what I thought would happen. What I thought would happen is people, when they learned these patterns, would look at them and say, "Wow, these patterns are hard in C++ and they're easy in Smalltalk. So if I want to think in terms of these patterns, I might as well use a language where they're easily expressed." And extend the life of Smalltalk by a decade. But the opposite happened.
I always suspected that the patterns everyone got so excited about were basically a way of overcoming static typing. Ward confirms it :-)

Friday, May 25, 2012

System Modeller

Wolfram Research present "System Modeller".

I've always been interested in this kind of software, so I need to check this out.

Wednesday, May 23, 2012

1337

Anyone else noticed that in terms of Unix Time we're in a 1337 era?


Tuesday, May 22, 2012

Wiki Renaissance

I believe we're in a wiki renaissance. The Smallest Federated Wiki signals a new era of wiki, slick enough for the age of HTML5, mobile devices and the "internet of things".

So here's a quick manifesto (in progress) that I'm writing about what's at stake in the new era, how it's the same as and different from the previous one. 

Friday, May 11, 2012

Meteor

Just looking at the quickstart demo of Meteor, the hot new web framework people seem to be getting excited about.

First thought. Seems to me that far more important than using the same language for the client and server is being able to write the client and server code in the same file.

That is something I've been waiting for for a long time.

Thursday, May 10, 2012

LightTable

Interesting this new surge of dynamic IDEs. First there was Brett Victor's awesome demo. Now there's LightTable (promoted on KickStarter, discussed on Quora)

Sporadic thoughts.

Is this implemented in the browser? (Bespin? CodeMirror)? Perhaps we're seeing this explosion of innovation as IDE authors move to the cloud.

A Kickstarter project? That's cool. But motivated by early investors getting licenses? Does it also mean that this next wave of software innovation will be abandoning Open Source as a model?

Elements of Jonathan Edwards's Subtext in the tree of updates. Of course, he's paying attention.

Tuesday, May 01, 2012

Quick SFW Generator

Smart Disorganized Individual philosophy is about doing things piecemeal; engaging in small opportunistic actions as and when the inspiration strikes. Today was just such a quick burst with the Smallest Federated Wiki.

I love SFW a lot, but it's a bit of a pain to bring a page or large chunk of writing from elsewhere into it. Adding one paragraph at a time is a nuisance.

So here's a quick tool to create an SFW page from an arbitrary large, multi-paragraph chunk of text. Just paste your text into the box, add a title and choose whether you want ordinary paragraphs (of the kind that most SFW installations use) or whether you want "wikish" (the UseMod derived format which is somewhat compatible with UseMod / SdiDesk markup). Hit the submit button, and it will deliver a json file suitable for dropping into the pages directory of your SFW installation.

Update : the source-code for this is part of Project ThoughtStorms on GitHub.  (Note: I may have broken other import scripts in the refactoring to make this import script work. Please log an issue if you find this.)

Sunday, April 22, 2012

SmallTalk Unix

A quick thought I had a week or so ago on the "failure" of SmallTalk. What if SmallTalk hadn't abandoned the file system? What if it had become the official graphical shell of Unix?

Here : http://thoughtstorms.info/view/smalltalkunix

Saturday, March 24, 2012

Project ThoughtStorms Goes Live

ThoughtStorms has been ported across to the Smallest Federated Wiki.

Of course, there are plenty of failures, missing pages, bits of markup that aren't handled correctly etc. But this is wiki, right? It's never perfect. It's always living and dying and composting. The problems will get flushed out, or worked-around, or become charming ruins over time.

That doesn't mean Project ThoughtStorms is over. It's barely even got started. There are more wikis to port. There's an SdiDesk converter to write. There's plenty of gardening that I am committing to doing.

And then there's the really exciting stuff ... ;-)

Thursday, March 22, 2012

Project ThoughtStorms

As mentioned previously, I've been looking into Ward Cunningham's "Smallest Federated Wiki" concept. And I'm increasingly impressed.

So much so, that I've re-oriented a lot of my projects around it.

What do I mean? A decent follow-up to SdiDesk has been promised for an embarrassingly long time. Over the years I've struggled with exactly what it should be and how it should be implemented. Largely whether it should be a desktop application or something you access via the browser. The browser has always been the logical answer but, until recently, the network diagramming aspect of SdiDesk was not really an option in mainstream browsers. OTOH, desktop GUIs open a can of worms. Which OS? Which GUI framework? How do I write installers and distribute? (And, frankly, what is my, as a non-Mac owner / developer, attitude towards the iPad?)

In 2012 though, HTML5 and CoffeeScript have become extremely plausible options for the client. And the server can become a simple wrapper around a basic PageStore. That's an architecture I've been meaning to get down to write. But it's the architecture that already exists for the SFW.

So, great! By hooking onto that project, I get my basic server / PageStore / client architecture free.

Furthermore it's extensible via plugins. So I can embed special types of paragraph data and special renderers. That's exactly what I wanted to do with the new SdiDesk - instead of having *pages* that were network diagrams or grids, have these as individual components of pages. This is perfect. I can concentrate on what interests me - the special plugin types - and Ward's team can do the infrastructure. :-)

Not to mention, Ward and co. are doing amazing plugin wizardry already : hooking data-feeds from Arduinos, graphing it, bytebeats, calculators. It already has a lot of what looked nice about QEDWiki.

The multi-panel view surprised me initially, but it's really useful for refactoring. And that's going to help me considerably with wiki-composting.

Finally, the "federated" part of the Simplest Federated Wiki is the answer to a bunch of problems I didn't even know I had. Or, at least, didn't conceptualise well. How do I have a private wiki (like a local SdiDesk, where I like to draft things before they go public) AND a public wiki (like ThoughtStorms) and make it easy to move newly public stuff from one to the other? How do I balance the desire to have special project focused wikis (like the OPTIMAES one) with wanting to refer to that stuff from the main wiki? How do I balance contributing to my own wiki and contributing to other communities' wikis?

So, I'm sold. As Dave Winer likes to say, it's the second mover who makes the standard. And that's what I want to help with. There's enough overlap between the SFW and the things I've been wanting to do over the last few years that it makes sense for me to implement my ideas as plugins for the SFW, to port my wikis over to to it and to go around shouting about how wonderful it is. Because, actually, it is pretty damned wonderful.

So, Project ThoughtStorms is where I'm putting the code: so far, converters from the ThoughtStorms UseMod and the SdiDesk formatted pages, and plugins to render the markup. I'll be porting ThoughtStorms over to a SFW server soon. Then I'll be doing some serious refactoring and cleaning up the actual writing. Trashing a lot of the ephemeral junk and dead-links. TS has become a bit of a museum, which it shouldn't be. It should be a living, learning, and forgetting thing.

After that, I'll be sitting down to do some of the other things I've wanted to do in a wiki context but not had the platform to do justice to.  Now I think I have one.

Thursday, March 15, 2012

Unicode

OK. I'm an idiot.

So here's today's BIG Unicode lesson; understand this and, maybe, half your troubles will evaporate.

Unicode is NOT a "code".

No. Unicode is a kind of platonic ideal of which everything else is an "encoding".

ASCII is an encoding. UTF-8 is an encoding. That weird character set you got with Portuguese accented letters is an encoding.

Hence the verb "encode" means to turn a Unicode string into a byte string.

And "decode" means to turn a byte string (say one imported from another application) back into the pure Unicode. 

I repeat. You DO NOT encode byte-strings into Unicode-strings. You decode them into Unicode. And then you re-encode them when you want to export them (as, say, XML or JSON).

read --> decode --> do stuff in your app --> encode --> write

Thanks ... that's all.


Sunday, March 11, 2012

Updating node.js on Ubuntu

Node.js in the main Ubuntu repo is fairly out of date. Here's a useful page on installing the latest.

Thanks Yodi Aditya.

Tuesday, March 06, 2012

Smallest Federated Wiki

I can't believe I haven't looked more carefully at Ward Cunningham's Smallest Federated Wiki. I did glance at it before, but am now making my way through the videos. Lot's of absolutely perfectly pitched ideas working together.

Friday, March 02, 2012

HUD

Personally, I'm looking forward to the new Ubuntu interface : HUD. Looks to me a lot like Humanised Enso (which I was a big fan of when I used Windows regularly)

Monday, February 27, 2012

Three.js

Bloody hell! Three.js is cool. And CSG.

What can't you do in the browser these days?

Friday, February 24, 2012

Rails Off The Rails

Seems like the same thing has happened with Ruby on Rails as happened with, say, Zope.

Giles does a pretty good analysis. The key point is that as frameworks mature they start supporting legacy users and applications who, in turn, have different requirements and values from those looking for a quick way to build new applications.