Offline is back Online

Sorry I haven’t blogged for a while…I’ve been keeping myself busy with several changes to ccTiddly!

I’m pleased to announce the imminent release of ccTiddly v1.7! This version of ccTiddly was originally going to contain the new server side plugin functionality. It was decided that the next release would contain so much new functionality that it would be inappropriate and in fact confusing to release it as v1.6.5, and so v1.7 does not include server side plugins. Plugins are still planned for the next release: ccTiddly v1.8.

Syncing Functionality

From v1.7 of ccTiddly onwards, users will be able to take a copy of a ccTiddly workspace (collaborative wiki) with them on a train, plane or anywhere without an internet connection. While a user is offline the wiki will save changes locally like a conventional TiddlyWiki file.

When the user has finished making changes offline, and when reconnected to the internet, they can click the sync button on their local version of ccTiddly and their changes will be sent back to the server.

Based on the changes, TiddlyWiki will show the following options before syncing:

This is very new functionality. It’s working in Firefox nicely. Unfortunately, I now need to get it working in IE6. Given that IE6 is likely to be challenging, I don’t want to make any promises about release dates. However I suspect it will be out in the next few weeks! If you can’t wait to have a play the code is in the TiddlyWiki subversion repository.

By using a TiddlyWiki adaptor, ccTiddly can now provide support for enhancements including lazy loading (see below) and integration with projects such as TiddlySnip (a firefox extension for moving web content to your wiki).

New Macros

As part of the ccTiddly project, I have been rewriting many of the ccTiddly macros so that they work with TiddlyWiki slightly better than they did originally.

ccTiddly 1.7 will introduce the following new macros :

<<ccLogin>>

Ok, so this is not a new macro but it’s been completely redesigned and making full use of the TiddlyWiki wizard framework. It has also been integrated with the register macro. If the register macro is installed there will be a register button on the login screen.

I hope to extend this mechanism for things like OpenID login.

<<ccEditWorkspace>>

This macro will allow users to update the permissions on an existing workspace. It currently only allows users to set permissions for anonymous users but will be extended to support setting permissions for admins, logged in users and possibly groups.

<<ccManage>>

The ccManage macro will allow workspace administrators to grant other users administration access to a given workspace.

New Skins

TiddlyWiki recently introduced the concept of single tiddler themes. These allow developers to pack many different tiddlers into a single tiddler which makes up a theme e.g. stylesheet, pageTemplate and viewTemplate. ccTiddly now makes full use of the theme mechanism. We will distribute ccTiddly 1.7 with three themes.

Improved Architecture

We have now reached an important milestone in ccTiddly where the Javascript and PHP code are completely separate. This greatly simplifies ccTiddly. All modification to theTiddlyWiki file are loaded from the /tiddlers/ folder as either .js files or .tiddler files.

There is a file: /includes/ccAssignments.php which creates the ccAssignments tiddler. This is the only point where the PHP and Javascript cross over.

Any requests made from the client to the server are handled by a file in the /handle/ folder.

Lazy Loading

With “Lazy loading” a subset of tiddlers are loaded in the first instance, and then others are only loaded upon request.

In ccTiddly, it’s possible to pass the tags variable in the URL. If the tags variable is specified in the URL, the ccTiddly workspace will only load tiddlers with the specified tag. For example;

tags=task

…would only return the tiddlers tagged ‘task’ in the requested workspace. If users click on links to tiddlers which are not tagged task, they would be loaded at that point.

This technique can be used to dramatically improve loading times of TiddlyWiki files. As soon as ccTiddly v 1.7 is available I will announce it on the ccTiddly groups.

Advertisements

How to save your Enterprise some money

Here is something I have noticed: the people that specify enterprise software requirements and success criteria are rarely the end user. They are business owners and spreadsheet supervisors.

The software produces great reports but the experience to the end user is rarely properly considered. The tendency is to meet the objectives of the business owner rather than the needs of end users.

So this blog post is about saving money. Well, time is money…right? Take an expenses system. If your employees spend their time trying to work out how to use the system, that’s time not being spent making money.

Imagine saving every employee 5-10 minute each month. Across 100,000 people, that’s 100,000 – 200,000 man hours a year!

Enterprise software pays a reasonable amount of attention to accessibility but not enough to usability. Now I’m no user experience expert but I have been exploring some experience design techniques with Phil recently (for the new ccTiddly macros). I think the correct use of such techniques within the enterprise would make a massive difference. In fact any technique that stops developers thinking so much like developers and more like the poor sod who’s going to be relying on the software the better.

Imagine being able to apply the time savings across each of JP’s four pillars : Search, Syndication, Conversation and fulfillment.

Google Images in TiddlyWiki…and maybe flickr?

After playing with the server side search for ccTiddly and knowing there were some project on the horizon that wanted to integrate google search into tiddlywiki results I decided to add google search into TiddlyWiki. An example of which can be found here.

As an extension to that I decided to add a google images search.

I have uploaded an example to Tiddlyspot at:

http://imgsearch.tiddlyspot.com/

The tiddlers which make it all work  are:

http://imgsearch.tiddlyspot.com/#googleImage

Overrides search onKeyPress function so that tw searches google when the users presses enter.

http://imgsearch.tiddlyspot.com/#MarkupPostHead

Includes the google javascript file, you will need to change the API key (at the end of the URI) if using on a domain other than Tiddlyspot.

http://imgsearch.tiddlyspot.com/#imageView

Code that creates the drop down list of images.

http://imgsearch.tiddlyspot.com/#taggedTemplateTweak

Allows tiddlers tagged “image” to use a different template.

http://imgsearch.tiddlyspot.com/#EditTemplate

Adds images link to the EditTemplate. Im sure there is a better way of doing this.

http://imgsearch.tiddlyspot.com/#ImageViewTemplate

It all works by storing the URI to the thumbnail in the tiddler title. With this template we hide the title.

and Flickr?

I started playing with the flickr API, its returning the results in JSON but I have not had time to integrate that into the above script.

If you look at the flickr tiddler its currently searching for “simonmcmanus”

http://wikidev.osmosoft.com/flickr

Given that im now on holiday its not going to get done for quite a while. If anyone wants to make a tiddlywiki flickr plugin the pieces are all in place.

Comments and suggestions welcome as usual but pls be aware that I may not respond for a good few weeks. 🙂

Server Side Search for ccTiddly.

We are starting to deploy ccTiddly within BT and have been importing various types of data. In the same way that users experience issues with a Tiddlywiki files greater than 1 or 2 mbs the same issue occurs on ccTiddly.

Being server side there are a number of things we can do to reduce these issues. One idea we have is only loading the title data for each of the tiddlers onLoad. With such techniques the client side search (and some other areas) will lose value. As a result I have started experimenting with a server side search solution for ccTiddly.

The nice thing about this code is that it can later be used to search across revisions, tiddlywiki’s bag’s and even across different servers. It could also be modified quite easily to incorporate google search results.

The code is made up of two parts :

The plug-in (you need to update the server,  url and then create a tiddler and tag it with systemConfig) :

Plugin :

search.txt

PHP Code :

searchphp.txt

(you will need to rename the file from searchphp.txt to search.php)

This code has been written for ccTiddly 2.0 but you should be able to get it working on ccTiddly 1.2 with minimal problems. In this case search.php was added to a folder called ‘handle’ in the root ccTiddly directory.

This is the format we will be using in ccTiddly 2.x

A temporary example of this script can be found running at :

http://wikidev.osmosoft.com/search#search – Please note this is a dev server only.

Time for a blog post about twitter.

I was a slow starter when it came to twitter, im now subscribed to about 54 people and they generates a good few tweats.(updates) I now rarely read beyond the first page so I miss quite a few of them.

I found it interesting how the whole twitter experience became more enjoyable again when I unsubscribed from @Scobleizer. The human brain may be good at filtering information but its alot happier when it doesn’t have to. For a while twitter was reminding me of Outlook. It turns out that was because I was using it like Outlook by not missing a tweat.

That is where I was going wrong….

An email never guarantees that it has been received, and certainly not that due care and attention has been paid to reading and digesting the information contained with in it. That however is exactly what people expect. With twitter I have not seen the same expectations.

I like to think about tweats as throw away comments that may not be read by any one, and thats fine, but they could also make someone smile or avoid two people doing exactly the same piece of work.

I am really looking forward to having ccTiddly at a stage where we can recreate things like twitter. If twitters success is all about constraints it will be really interesting to see what happens when we tweak those constraints for different environments.

Life Streaming in ccTiddly

This afternoon I noticed Phil Hawksworth playing around with a script to add a life streaming to his blog.

Thanks to , for the original code

With very few changes I have got the script working in ccTiddly.
In index.php you simply need to add the code contained in this file (lifestream1.txt) under

<div id=”storeArea”>

in Index.php

And below is the end result.

picture-2.png

This code probably wont make it into the next release of ccTiddly but I thought I would get it out there for you to play with.

Some of the date sorting bits are not actually required here because Tiddlywiki can do the date sorting.

Enjoy, comments and suggestions welcome as always.

ccTiddly System Tiddler Plugins

ccTiddly currently uses a modified version of the basic TiddlyWiki HTML code. This means that whenever there’s an update to the core code, we have to manually update ccTiddly to the new version (which involves some fiddly manual steps).

The goal is to make it so that ccTiddly uses a clean, unadorned copy of empty.html from tiddlywiki.com, and to have it automatically splice in the extra bits and pieces that are needed by ccTiddly.

These extra bits and pieces are a bunch of plugins and some “stock” tiddlers that use macros from those plugins to expose them to the user.

If, like me, you get confused about the difference between a plugin and a macro, remember that a plugin is just a tiddler tagged “systemConfig”, a plugin can  can contain many different macros (which use config.macros)

For instance, there is a plugin called “CreateWorkspacePlugin” that provides the <<ccCreateWorkspace>> macro. The macro produces a user interface that allows users to interactively create a new workspace. So, we need to include the plugin in the HTML file, and we also need to, say, add a new tiddler called “CreateWorkspace” that contains a call to <<ccCreateWorkspace>> the create workspace macro.

Here’s the complete list:
Macro <<ccCreateWorkspace>> (from CreateWorkspacePlugin)

This macro allows the user to create a new ccTiddly workspace by specifying a name, and the permissions for both anonymous and registered users. We’ll make the macro available to users via the backstage area, since this isn’t a particularly common operation.

Macro <<ccEditWorkspace>> (from EditWorkspacePlugin)

This plug in will allow users to manage permissions on a workspace which already exists (assuming they have the correct permission). Going forward this will probably include the master workspace management which will then be moved to its own plug in.

Macro <<ccUserTiddler>> (From UserTiddlerPlugin) 

This tiddler will be used to change your email address, password and user specific tiddlers.

Macro <<ccLogin>> – (From LoginPlugin)

This macro displays the login UI.  When not logged in it will allow the users to login  using OpenID, LDAP or the internal user database. When logged in the user will be informed who they are logged in as and be given the option to log out.