As a result of working with clients such as Habitat and Levi’s, LShift is launching Expro, a retail-specific Product Information Management system. Expro helps retailers manage product information centrally and then distribute it across all their sales and marketing channels. Visit the Expro website to find out more about our Product Information Management Solution.
While I wait for some StickyWiki ideas to gestate, I’ve been playing with stock TiddlyWiki, co-opting some plugins from elsewhere to make it work how I’d like. It has surpassed paper-on-my-desk as the place I keep ideas and notes.
In the last week or so, Jeremy released TiddlyWiki 2.0. There’s a lot of work gone into it: a great deal of refactoring, a more elegant model for rendering using templates, and many of the snippets, plugins, and fixes contributed since the 1.0.x releases.
The interface in TiddlyWiki version 2.0 is much the same as before, with a change in colour scheme; however, customisation of the interface is much easier and cleaner. For a start, the layout of pages and entries is provided by editable templates, as are the CSS styles (with a nifty include mechanism).
The biggest improvement is probably in the refactored code. As well as being able to accomplish many things just be adapting templates or writing macros, plugin writers have a tidier set of objects to work with, requiring fewer potentially destructive or conflicting changes.
I was a little apprehensive about upgrading my personal wiki, because most of the plugins I’ve co-opted or written necessarily take advantage of the internal workings of TiddlyWiki, which have changed significantly. However, the regular developers are good at keeping up, and with lots of help from Simon Baird’s excellent adaptation Monkey Pirate Tiddly Wiki (which I’ve closely followed for my wiki) I updated plugins where I could, and disabled (and vowed to rewrite, since they were mostly mine) where I couldn’t.
Subtext from Jonathan Edwards is an interesting development. Like Self [was linked to http://research.sun.com/self/ see http://c2.com/cgi/wiki?SelfLanguage now?] (and indeed Edwards cites Self as an influence in his FAQ), Subtext is based on prototypes; however it uses them both for structures (records) and for procedures. It also echos the morphic user interface, by firstly allowing direct manipulation of values, and secondly by making explicit visually the links between references and what they reference. The ‘program’ in Subtext is an editable representation of the runtime state.
Watching the demonstration movie, I have mixed feelings. While I have sympathy for the motivation behind it, I was dismayed by the amount of multi-modal interaction just to generate a factorial function, and the complex structure that results. Sure, like any language, thinking time decreases with experience, but input time is a constant overhead, and the runtime object tree looks no simpler to grok than an equivalent piece of code in a regular language.
As a programming language, a prototypical one even, it doesn’t live up to the talk just yet. The main thrust of the demonstration is that keeping lots of abstractions in one’s head is difficult, regular programming languages require a great deal of this, and Subtext doesn’t. Really what Subtext is doing is making the (runtime) wiring explicit, and most of this wiring is something programmers grasp without difficulty, and can certainly verify in a debugger. Further, the action/agent system reminds me strongly of monads — exactly what the author expresses a mistrust of in his manifesto, which seems a little dishonest.
Putting aside these misgivings, there’s reasons to be excited. At its heart, Subtext is about making programming languages more usable, which I can only applaud, and Edward’s statement of intent makes me optimistic that he’ll keep making gains.
As well, Subtext has plenty of lessons for IDE designers. Small touches, like the large arrows marking the current selection — why bother being subtle when that is exactly where the user’s attention will be? — and smart features, like setting a test case for a piece of code by freezing an example of the calculation.
LShift developer wins cipher-breaking prize.
LShift senior developer Paul Crowley has won a $1000 prize from UIC professor Daniel J Bernstein for his paper, “Truncated differential cryptanalysis of five rounds of Salsa20″.
Salsa20 is a new cipher designed by Bernstein. To encourage others to analyse its strengths and weaknesses he pledged a $1000 prize to the analysis that he found most interesting by the end of 2005. The winning paper does not show that the whole cipher is weak, but breaks a reduced version of the cipher.
Paul only got into cryptography for the girls. :)
The cipher and prize: http://cr.yp.to/snuffle.html#prizes
The paper: http://www.ecrypt.eu.org/stream/papersdir/073.pdf (59K).
You are currently browsing the LShift Ltd. blog archives for January, 2006.