Saturday, October 10, 2009

Automating "Lean Startups"

Recently I've been learning about something called "Lean Startups", which is an extension of the "Lean Manufacturing" concepts from physical production to software production.

"Lean Manufacturing" derives from the famous Toyota Production System (and see also Goldratt's "Theory of Constraints" et. al.)

Steve Blank, Eric Ries

There's a very interesting guy named Steve Blank who has a student named Eric Ries who, as far as I know, is the person who first came up with the concept of "Lean Startup".

Ries has done a lot of talks (check out the video linked from this blog post) describing the "origin story" of the "Lean Startup" concept.

They tend to be a little sparse on the details of exactly what and how Reis' company, IWVU, does to implement the ideas, but one Timothy Fitz, employee at IMVU, describes their outrageous Continuous Deployment strategy in a post on his blog.

Steve Blank is no slouch either. Check out his "Customer Development Model".

Blank stresses, among other things, that business decisions should be made on the basis of verified facts rather than the opinions (I would call them hallucinations after the NLP usage) of the people in the company. They advocate a quasi-scientific approach of creating formal hypotheses and actually testing them out, as well as developing explicit feedback mechanisms and metrics to make sure things are happening like you think they are (and that when they're not, you know about it ASAP.)

Algorithm for Flushing Out Hypotheses

There's an interesting tool called Cucumber for "Outside-In" Behavior Driven Development (BDD) that has potential for use in "Lean Startup". You can watch a video of a presentation given by Ben Mabey that demonstrates it.

You create "feature descriptions" in a form that can be "run" by Cucumber something like unittests. The term "Outside-In" refers to the idea that these features should be tied to business values (i.e. increasing revenue, reducing cost, increasing value to your customers, etc...) before being implemented. Instead of writing the code first and then hoping it will deliver something of value to you and your customers, you write the "value" first and then write only the code necessary to implement it.

In order to tie features to business value the BDD folks recommend something they call "popping the why stack". You take a feature and ask "why are we implementing this?" and then you take the answer to that and repeat the process. You continue to ask "why?" until you've found a chain of reasoning that terminates in one or more business values. The Cucumber wiki page has an IRC transcript that is an excellent example of "popping the why stack".

If you go read that transcript now, you'll notice that each answer to the question "why?" is just such a business value hypothesis as Steve Blank and Eric Reis tell you to elucidate.

"Popping the why stack" leads directly to explicit testable assumptions about how you intend to get business value from your software.

Beyond Business Value

"Popping the why stack" can be considered a subset of something called the Core Transformation Process.

This is an NLP psychological algorithm developed by Connirae Andreas that starts with a problem or issue you're having and, through "eliciting the outcome chain" driving it, transforms it into an experience of the Divine.

I have used the Core Transformation Process on myself and others, and I can attest that the results are deep and profound.

In essence you suss out your "meta-intentions" for your behavior by asking, "What do you want, through having that, that's even more important?", which is a specifically crafted way to ask "why?", and then for each answer you repeat the question.

After about five to seven iterations you reach an incredibly profound "Core State" that can be described variously as "Oneness", "Bliss", "Unity"...

The universality of the results of this process imply that everything we do has, as its ultimate aim and motivation, the same beautiful and harmonious goal. In the courses of our lives this ultimate motivator gets "sidetracked" or redirected into more or less effective strategies for achieving "sub-goals".

I urge you, in removing waste from your processes and improving your effectiveness via real-world feedback, do not limit yourself to seeking value just in your business. Seek the deeper reason.

Live and be well.

For more on the Core Transformation Process I recommend this interview with Tamara Andreas (Connirae Andreas' sister and a teach of the process) and this excellent history of the development of the process.

Wednesday, June 10, 2009

Alan Kay and Viewpoints Research Institute

Alan Kay and the good folks at the Viewpoints Research Institute may usher in the next grand step in our love affair with the machine. They hope to...
"create a model of an entire personal computer system that is extremely compact (under 20,000 lines of code) and yet is quite practical enough to serve as a system for succeeding versions of the $100 laptop and for embedded systems of the future"
...and revolutionize computers all over again.

Their existing work includes feats like language-to-language translation, automatic generation of low-level blit functions from mathematical descriptions of the desired geometry and graphics, and a tiny TCP/IP stack in a few dozen lines of specialized parser code.

They are also exploring the ability to represent or model the system in itself, and then having it automatically reason about how to allocate resources and choose algorithms to solve problems and run better.

If you really want to blow your mind read their 2007 progress report "STEPS Toward The Reinvention of Programming" (PDF). I've never seen anything like it anywhere else.

It's difficult to explain what they're doing concisely. There's a rich history to the work, and the current research and results are themselves densely woven from heavy deep parts. This is all stuff that rewards your perusal.

Monday, May 18, 2009

Wells Scale


Malcolm Wells, the father of underground building, wrote an article that appeared in the "Next Whole Earth Catalog" about, among other things, this simple and ingenious device for rating the desirability of a building.

It's a form that you fill out by rating a building or site according to a bunch of common-sense criteria about what makes it good, healthy, and sustainable.

The left side is sinister stuff and the right side are positive counterparts. There are things like "Destroys pure water vs. Creates pure water" and "Wastes solar energy vs. Uses solar energy".

Not rocket science as they say. It's fun (or rather usually depressing) to rate the various buildings you use in your daily life. I certainly hope you find positive ratings for them. If not then it's time to move or improve.

There are lots of ways to improve existing buildings. Rainwater catchments are an easy win, even if you only use the water to irrigate. If you add an attached greenhouse to a building you can gain several advantages at once: create pure air; produces own food; creates rich soil; uses and stores solar energy; consumes its own wastes (composting); matches nature's cycles; provides human habitat; and, if done well, is beautiful.

With proper planning and a bit of engineering we can create really cool homes and buildings that exist in harmony with Nature. This simple score card makes it easy to wrap your head around what needs to be done to do it.

Monday, May 11, 2009

Ted Nelson

Theodor Holm Nelson is an iconoclastic visionary who wrote the amazing book "Computer Lib / Dream Machines", which is how I first heard of him. He's credited with coining the term "hypertext" although the system he envisioned, called Xanadu, included abilities and structure beyond what the current WWW provides.
"The purpose of computers is human freedom."
~"Ted Nelson's Computer Paradigm, Expressed as One-Liners"

He has spent 30~40 years watching the computer industry not measure up to his innovative visions and by now he seems a little pissed off. This is from a 1999 rant "Way Out of the Box":
...the computer world is entirely built out of artificial, arbitrary constructs. Word processing, spreadsheet, database aren't fundamental, they're just different ideas that different guys have whomped up, ideas that could be totally different in their structure. But these ideas have a plausible air that has set like concrete into a seeming reality. Macintosh and Windows look alike, therefore that must be reality, right?

Wrong. Apple and Windows are like Ford and Chevrolet (or perhaps Tweedledum and Tweedledee), who in their co-imitation create a stereo illusion that seems like reality. The computer guys don't understand computers in all their manifold possibilities; they think today's conventions are how things really are, and so that's what they tell all the new victims. So-called "computer literacy" is an illusion: they train you in today's strange conventions and constructs-- (Desktop? This to you looks like a desktop? A vertical desktop? ) --and tell you that's what computers really are. Wrong.

Today's computer constructs were made up in situations that ranged from emergency to academia, which have been piled up into a seemingly meaningful whole. Yet the world of the screen could be anything at all, not just the imitation of paper. But everybody seems to think the basic designs are finished.
Amen brother!

He's written a new book on the history of computers, and remember that he was there while a lot of this was happening, occasionally directly involved. He has book blurbs by Woz and Stewart Brand.

Check out Chapter Summaries of "GEEKS BEARING GIFTS" for a wild ride.

He has continued his Don Quixote tilting at the windmills of our paucity of access to true power of computing machinery with at least two systems other than Xanadu. First, a bizarre information representation system that seems a billion times better than anything I've heard of to date (to the point where I want to drop everything and develop it) called ZigZag:
And also something called transclusion, which allows a deeper kind of hypertext which he calls Transliterature.

All of Nelson's work is worth reviewing if you're at all involved in creating software that people use. Here's a link to his homepage: http://ted.hyperland.com/

He's sort of like the Oracle at Delphi, and it would suck if he were to be treated like Cassandra.

Sunday, February 24, 2008

Fiscodynamics

This is an idea I've been kicking around for several years. It's a way of representing money dynamically.

You use circles, and the diameter and colour represent the amount and periodicity of a cash flow, both on a logarithmic scale.

The diameter of a circle in millimeters is based on the log of the amount of money under consideration. We add three to the log so that one cent is 1mm, ten cents is 2mm, a dollar is 3mm, a million dollars is 9mm, a billion 12mm, a trillion 15mm, you get the picture.

You can set this up mathematically so you can work with other-than-even-millimeter diameter circles. Also, notice that no matter what size circle you start with, ten of them will add to make a circle with 1mm larger diameter. (Also, three of them will add to make a not-quite-0.5mm larger circle.)



The color of the circle represents the frequency of the cash flow, again on a logarithmic scale. We map the log of the period in seconds of the cash flow to a color on a spectrum. The red end of the spectrum corresponds to high frequency events (tenths of a second are red, seconds orange...) and the blue end to the low frequency events (years are aqua-ish, decades blue. Note that this is exactly opposite to the actual light frequencies involved. Red light is low frequency while blue is much higher. I switched them around because I think it makes more sense "psychologically" to have the "hot" colors represent fast flows and "cold" colors represent slow ones.)

I made a "first draft" color map and labelled the usual temporal divisions (day, week, month (lunar), etc..) I'm not completely satisfied with it yet, but it's good enough to work with for now.

Sunday, February 17, 2008

Figs from a Salt Desert in less than Two Years

If you're curious about the practical applications of Permaculture or want to introduce it to other people, you can direct them to this short Flash movie "Greening the Desert" put out by Geoff Lawton and the good folks at the Permaculture Research Institute of Australia.

It's about a project in the desert of Jordan to reclaim an area of heavily salted farmland. Using Permaculture techniques they manage to grow figs and other crops while de-salting the land and replenishing the water table.

Getting the Currently Selected Text in Tkinter

I tracked down the technique for getting the current text selection in Tkinter, as opposed to getting the current contents of the clipboard, and put them both in a nice neat function:
def _getCurrentText(widget, clipboard=False):
'''
Given a Tkinter widget, return the currently selected text (clipboard
is False) or the current contents of the system clipboard (clipboard
is True) or None if no text is currently available.
'''

try:
if clipboard:
return widget.selection_get(selection='CLIPBOARD')
else:
return widget.selection_get()
except TclError:
pass
The mechanics of that selection_get() method reach through Tk all the way to to the ICCCM standard and the X protocol!