A blog looking at business communication, knowledge management, scripting tools, OS technology news and other things of interest to mobile tech workers. As I find interesting news this will also contain pointers to thoughts related to configuration managment, change management and general software development.
James Surowiecki's remarkable book The Wisdom of Crowdshas caused me to re-think many of my ideas, and one of those ideas is the value and importance of experts. The concept of 'pathfinder' customers outlined above assumes that, to some extent, these ahead-of-the-curve customers are experts in their business and hence can provide expertise to your business above and beyond what the 'average' customer can offer. Surowiecki provides compelling evidence that experts are prone to overconfidence in their predictions and are not nearly as good at making predictions as larger numbers of 'ordinary' people reasonably informed and engaged in the issue. He would suggest, I think, that 'pathfinder' customers could well lead your company down the wrong path. What is needed, he argues, is a mechanism to capture the collective wisdom of a sizeable (the larger the better) group of intellectually diverse, independent, decentralized (i.e. each having access to unique, special knowledge) customers. He also argues that the process of bringing together groups of people to exchange and build on each others' ideas (as in Focus Groups and 'Thinking the Customer Ahead' sessions), while valuable in some contexts, can actually be worse than simply independently polling the group, because of the propensity of groups to 'Groupthink' -- to prematurely discount 'minority' views, and to self-censor radical thoughts and ideas. I'll have much more to say about The Wisdom of Crowds in an upcoming article. But it is clear that innovative companies need a mechanism to objectively capture customers' and employees' collective wisdom, not just the ideas of an elite few creative forward-thinkers.
aspects is a python module that enables Aspect Oriented Programming in Python. For now, it provides a set of ready-to-use aspects and an easy way to create your own aspects. The current possibilities are still a bit limited, but it will soon provide a more exhaustive way to define and use more complex aspects.
Most readers are already familiar with the concepts of object-oriented programming: inheritance, encapsulation, polymorphism. But the creation of objects of a given class, with certain parents, is usually thought of as a "just so" operation. It turns out that a number of new programming constructs become either easier, or possible at all, when you can customize the process of object creation. Metaclasses enable certain types of "aspect-oriented programming," for example, you can enhance classes with features like tracing capabilities, object persistence, exception logging, and more.
As far as I can see only Lightweight Python AOP seems to work with Jython. I was able to successfully run the tracer example with Jython although the timing example failed but not in the aspect library code. The other libraries require Python 2.2 or greater which currently eliminates Jython.
If you are new to Aspect Oriented Programming, here is a quick definition:
Aspect Oriented Programming (AOP) is a technique for separating and isolating crosscutting concerns into modular components called aspects. A crosscutting concern is a behaviour that "cuts" across the boundaries of assigned responsibility for a given modular element. Examples of crosscutting concerns are process synchronization, location control, execution timing constraints, persistence, and failure recovery. There is also a wide range of algorithms and design patterns which are more naturally expressible using AOP.
-Christopher Diggins, Aspect Oriented Programming in C++, August 2004, Dr Dobbs Journal
Jonathon Swartz points to this summary and copy of the the latest column (via Robert Paterson) from David Kirkpatrick which captures some of the panel interaction from from Fortune's Brainstorm Conference.
Technology enables a reduction in transaction costs. It's changing the way people collaborate across companies and across continents. In the past what corporations did internally were those things that had higher transaction costs than doing it externally. Now that dynamic has changed. And to follow that one more step, over the next few years it is going to be really critical for a corporation to understand what it is. What does a company need to be doing itself? Now its transaction costs have come down, so the ability to collaborate across regions and across continents has increased.
Matt is writing a book code named Brain Hacks for the O'Reilly Hack series that looks very interesting. Here is the quick summary:
100 practical and understandable probes into the design quirks of the brain, concentrating on the sensory and motor functions and their coordination.
An unusual presentation about how our brain works. He goes on to say:
And this is the motivation: To get where it is, the brain has made some fascinating design decisions. The layering of systems has produced a complex environment, with automatic and controlled highly mixed. This development over biological time has introduced constraints. As has the architecture--it takes time for slow signals to make their way from one area to another. And there are computational difficulties too: How much of its capabilities can the brain afford to invoke when a sub-second response is required? The tricks used leave traces. There are holes in our visual field that we continually cover up. There are certain sensory inputs that grab our attention faster and more thoroughly than we'd expect.
You don't need to know all of neuroscience, cognitive psychology and so on to know how your brain works. I'm not a neuroscientist. I write, my undergraduate degree is in physics, I hack in my spare time, and I work in new media. But neuroscience has got to such a level now - with the imaging techniques in the last three or four years - that we can make focused probes into particular functions, and illustrate the traces that these design decisions have left (see where+how they are, and draw that up the stack towards conscious experience) and we can look at them one by one.
And so you can learn how your brain works. I'm not talking about a map or general mechanisms ("there are neurons which are connected blah") and I'm not talking about really high-level stuff ("this bit is active when you're motivated blah"). I'm talking about minute-by-minute stuff: This is why you scratch your face when somebody else does. This is what will grab your attention in the corner of your eye, and this is what won't. Why the status icons in the corner of your desktop should be black and white and not in colour. That's what Brain Hacks is about, letting you see how all that works, from a standing start.