Saturday, April 12, 2008

Surface and Symbol

My wife and I are launching a new site for our design work. She is a fashion designer concentrating on children's clothing while I primarily dabble in electronica compositions and the odd monograph. Anything from hermeneutics on Gadamer of his writings on the  /agathon/ (Beautiful) in Platonic Dialogs to the writings of Michel  Houellebecq to the cinema of Yasujiro Ozu. 

In fact, a short monograph on Ozu's late cinematic efforts is close to completion. Check out the site. The online catalog should be available soon.

Thursday, January 03, 2008

Nintendo DS and the OLPC

This Christmas we purchased a One Laptop Per Child device (OLPC) and a Nintendo DSlite for our five year old daughter. The Nintendo DS (NDS) is the clear winner as an interactive device and learning platform. It truly is a paradigm shift for UI/UX. Our daughter was able to figure out how to configure two DSs for PictoChat (via WiFi) and now constantly wants to "IM" pictures and text with me. It's an eye-openning experience.

The OLPC is the utter disappointment though. Everything about it is sluggish, unresponsive, cryptic and just sub-optimal. It's a device I really wanted to love given the integration of so much multimedia software and the new UI called "Sugar". But it is irredeemably slow - applications take upwards of 30-40 seconds to launch. The device itself is far from the DS's instant on - it takes about 40-50 seconds to bring up the Sugar "main" stage. The applications themselves are poorly designed and distinctly amateurish in feel and usability. The Web Browser is almost unusable even over fast WiFi. I have a faster experience running my iPhone over AT&T's GPRS network. Even the python editor is lame. I hate to say it but a Commodore 64 had a more intuitive UI out of the box. More importantly, the device costs nearly $180 dollars (well, $425 since I had to donate one)
. WiFi access and configuration was a pure "press random buttons until you figure it out" affair and the antenna and WiFi performance is trounced by the NDS.

The Nintendo DS on the other hand is really very close to an ideal device for the same market targeted by the OLPC. Its BOM cannot be more than $30-40. the WiFi support in the device and most applications (ahem, games) are fabulous. This includes downloading via WiFi games to other NDSs - so that multiplayer support is well-conceived and executed. The viral marketing is justa bonus. The NDS also boosts a throughly touch and gesture-based UX - far more radical than Sugar's - which is really a simple modal menu-ing system with radial layout of buttons/menu items. In a game like Zelda: The Phantom Hourglass - you get gestural UI, voice-based UI, and touch-oriented interaction with the addition of multiplayer mode. The relatively low-power processor and sprite hardware are really put to good use - there is a night and day difference between the NDS and OLPC. The NDS delivers a cinematic experience with true interactivity. teh OLPC delivers a very - how shall I put this - "academic" idea of what people (children) will want and like. The NDS was clearly tested and usability done on each aspect. The OLPC looks like all the decisions were hardcoded early on by a brain trust of "experts" without any thought of the actual experience of using, maintaining or enhancing the device.

As we try to propagate the technology/IT revolution to all markets it strikes me that the NDS is a better baseline/reference design than the OLPC. it has a built-in virtual keyboard, support for English and Japanese (while, Katankana and Hiragana), voice/IM/chat, WiFi sharing and play and more than sufficient "experience engine" (XE) to generate educational as well as entertainment solutions. The upgrading model, cards, is also a great way to produce self-contained applications without "DLL Hell" or the other problems of doing general purpose legacy-oriented OSs. NDS's OS, I am certain, is a minimalist affair - as it should be!

NDS is thw clear winner with the five year old and a great tool for me to teach some aspects of UX and computing to her. it's also a great medium for father and daughter to share experiences and remove all "technology phobias". For $125 retail that is a true bargain.

Tuesday, May 22, 2007

Watching Bird Flocks: Turbulence and Emergent Order

My daughter Mina and I were driving this morning to school and work when she noticed a flock of birds circling over her school. It was quite jarring to see the state transition from turbulent, semi-ordered motion (circles of epi-circles of birds flying at various elevations and tryign to /stabilize/) to a nicely ordered /line/ of them start off in one direction. The line is approximate but definitely visible. An order was present that was missing just seconds before. It really drove home the point of emergence visually. Of course, it took my daughter noticing them out of the car window to draw my attention. Chrildren simply see more because they experience more purely their immediate environment. It takes years of epistemic accretion to bury the sense of beauty beneath cognitive stereotypes and mundane /models/. This, of course, got me thinking about the mathematics of describing that dynamic process and Craig Reynold's groundbreaking work on Boids and flocking algorithms. He identified three main rules in the flocking systems - which are broadly applicable beyond just bird flocks (think fish, insects, etc.).

Basic flocking is controlled by three simple rules:

Separation - avoid crowding neighbours
Alignment - steer towards average heading of neighbours
Cohesion - steer towards average position of neighbours

I really amazed repeatedly by the beauty of such elegantly simple systems to extract order out of a dynamic system without any /master controller/. So much fothe software and IT systems we build require the /ghost in the machine/ figure coordinating everything. This isn't how Nature works. Why are we surprised then when our IT systems hit scalability walls? This morning it took a child's interest in birds flying over our traffic-jammed car to remind me of the rich world outside the scheduled commute and overly ordered routine of adulthood.

Tuesday, May 08, 2007

Patterns and Generative Algorithms of Architectural Design

This short work is another example of the confluence of algorithmics, aesthetics and engineering - in this case architectural engineering of space. The authors deploy several forms/patterns and define them algorithmically as well as illustrating them visually while providing a design context. It is a delightful treatise/monograph and somwhat along the lines of the Atlas of Tectonics. The description of the text provided by the publisher includes: "In Tooling, the latest installment in our renowned Pamphlet Architecture series, the technologically progressive young firm Aranda/Lasch illustrates how advanced computational methods and algorithmic codes can be used to foster architectural design. Tooling explores patterns generated by computer codes that in turn create an organizational template assembling projects."

Mathematics is beautiful.

Tuesday, February 13, 2007

Logic Programming: Why has it Failed?

Someone recently asked me about Concurrent Prolog and whether it would make sense to do a version for CLR/.Net. Although I am a serious partisan of goal-directed and data-directed programming, I have to admit that the pure logic and functional programming schools have always left me feeling suspicious of their claims. Restricting my comments to Prolog and its derivatives, it seems that there are some insurmountables to their adoption as mainstream languages.

1. Horn Clause syntax is just too unfamilar and cumbersome for "really simple tasks" and many people get confused by aspects such as the treatment of negation, clausal-ordering effects on programs termination (this last one is a major flaw and show-stopper), use of "cut", etc.
2. Pure logical variables (pattern matching) is non-deterministic in ways that frighten many programmers and require a different way of thinking about value assignment, scope, and binding
3. The pervasive use of recursion and search in program execution for Prolog and derivates is a steep learning curve for many trained in languages of the C family with its emphasis on iteration and programmer controlled statespace "exploration"
4. Debugging Concurrent Prolog is a significant skill and requires quite a bit of training (costly)
5. The majority of programmers are queasy about determinism (don't care and don't know varieties) and only in a few cases (such as SQL query processors and optimizers) have programmers been convinced to "let the runtime do its magic" and control execution semantics, operator application, etc.

There are educational projects such as PSharp and PJava out there but they remain academic curiosities. The real action, in my opinion, is in goal-directed programming informed by mathematical programming techniques as well as constraint programming. Constraint programming can be seen as a major evolution over the fixed execution semantics and proof strategy of Prolog (DFS, simple backtracking, cut, etc. of the standard WAM). Constraint processing when combined with the appropriate "phrase structure grammar" for a domain can make all of the difference between academic curiosity and widespread adoption (look at Outlook inbox rules).

Monday, February 05, 2007

Structure and Interpretation of Computer Programs

A link to the full online version of the best theoretical computer science book published for undergraduates. Section 2.4.3 on data-directed programming is worth careful study. Nothing in the text is especially Scheme-specific, the techniques transcend the programming language with reasonable modification. The effects on the reader's/programmer's "way of seeing" (to paraphrase John Berger) are profound.

Monday, January 22, 2007

Generative Grammar of the Immune System

This is fascinating application of Chomskian generative grammar concepts to the study of immunological system behavior and function. This article is the 1985 Nobel Prize speech by NK Jerne. It might be interesting to take recent work on principles and parameters by Chomsky, Baker, Pinker and others and update this interesting "cross-pollination" of medicine and formal linguistics.