InfoQ: Realistic about Risk: Software development with Real Options

The Realistic about Risk: Software development with Real Options presentation on Agile development practices is interesting. It explains how agile projects and agile firms can further improve their portfolio management by more overtly using financial options practices -- both as a buyer and as a seller. I don't fully understand all that was said, yet, but it did strike me as a useful perspective for thinking about a project's and a firm's cost risks and revenue risks.

The presentation pacing is slow. The Q&A at the end is worthwhile.

Scratch 1.4 Released!

Scratch is one of the best tools for early teaching of programming. I have been eager to use this with Henry and Owen but have held off as it -- that is, abstract, analytical thinking by 9 year olds -- conflicts with many of the principles of the Waldorf school they attend. It does not really matter when you learn to program, but when you do try Scratch.
"We are happy to announce the release of Scratch 1.4. With this new version, you can ask users to input text from the keyboard (using the new "ask" and "answer" blocks), take photos directly from built-in or USB webcams, and control robotics with LEGO WeDo. This version has a more flexible user interface, so that it can work on smaller screens, such as on netbook computers."

More at Scratch 1.4 Release Notes.

The pinnacle of secondary math education should not be calculus but statistics and probability

Arthur Benjamin says that the pinnacle of secondary math education should not be calculus but statistics and probability. There is nothing wrong with calculus it is just that very few people need to use it in their daily lives. Knowing statistics and probability, however, can be used by almost everyone at some point in their day or week. How would budget conversations change if you could use uncertainty in revenue projections with your audience? Worth 3 minutes of your time.



Found via Daniel Pink.

What the fuck has happened to Saturday morning cartoons?

I am working in the living room and the kids are watching the Saturday morning cartoons in the the next room. I am only hearing what is happening on the shows and my anxiety level and accompanying physiological response is rising. The extreme levels of intensity, confrontation, and pure anger expressed in the music, the voices, and the stories is disturbing. After an hour of this I am feeling as an agitated and short tempered as the story's characters are and so are my children.

What the fuck has happened to Saturday morning cartoons? I am not expecting all sweetness and light but I am expecting a reasonable mixture of fantasy and reality, and of good times and bad. What my kids are seeing is a greatly distorted view of conflict and resolution and no view whatsoever of what it means to be human (even if expressed through animals). This is not new news as such. What is new is the almost single minded focus of this in every story.

Needless to say, Henry and Owen will not be watching this crap any more until we determine how to have balance. Any advise on what is new and what is old that it worth watching by 9 year olds is greatly appreciated.

The village is so wholly broken in the USA.

Underpants Gnomes. Here in RI. On Smith Hill.

Mixing E-ink and ZigBee?

Regards Extra space, Is there a device out there that mixes E-ink and ZigBee? I am interested in the idea of sending "fact sheets" to the device every few seconds or days for continual display.

The rate of personal data accumulation is just crazy

The rate of personal data accumulation is just crazy. Today I discovered I had only 8 G of disk space left on my new MacBook. I have had the MacBook for about 2 months and I was already 93% (112 G/120 G) through it. How can this be? Reviewing what was there I see

8 G free
5 G software development tools/applications (ok this is what I use for a living)
6 G other tools/applications (ok, some of these I use for a living, others for fun)
30 G customer data (ok, important to have and to keep)
23 G personal data (what!)
40 G that I couldn't specifically attribute (what!)

How did this happen? How did I have 23 G of personal data? It turns out that 10 G of it is an iPhone development video lecture series: Once I watch it I can delete it. But still, 13 G was just my shit. And this does not include all the gigabytes of data I have on my home server. 13 G is a lot of personal stuff. Perhaps not any more with the number of images, music, movies, and other large digital formats. But then, I really don't want to store those movies and that music I own. I just want their use whenever I want. But, alas, I can't have that yet without incurring the cost of storing them.

The lesson is that while I can manage some of this growth -- thin out my personal collections every now and then -- I can't manage most of it and so I need to find a really cheep source of local storage. Sigh.

Looking for visual designer

If you are a visual designer for web (mostly static) and/or print and are interested in collaborating with me please send email to andrew@andrewgilmartin.com. I don't have any projects today but there seems to be work in early Fall that I would like to win. Looking forward to talking with you.

Are you who you say you are?

Are you who you say you are? Establishing your identity authoritatively on the internet is almost impossible to do. Just because an email account, LinkedIn id, Twitter id, Facebook profile, Ning profile, AOL id, etc uses the letters A N D R E W G I L M A R T I N does not mean it is me. The only way to establish identity is to build a body of evidence online. So that when I search for you online I find a lot of information (bits) that link these online presences to your life of family, friends, work, and possessions. If you are a politician, administrator, candidate, or anyone with the need to have a public identity make sure you get online soon and build that body of evidence.

This posting is inspired by Twitter to verify accounts for politicians, agencies and other celebs. Which is an idea doomed from the start to failure.

You might also be interested in Geoffrey Bilder's trust tag on Delicious.

Re: FlairBuilder review

This evening I received from Cristian Pascu a response to my FlairBuilder review. I am posting Cristian's entire message as it does help better understand FlairBuilder and its audience. That Cristian took the time to directly address my criticisms does speak well of his commitment to creating a valuable product.

From: Cristian Pascu
To: andrew@andrewgilmartin.com
Date: Tue, Jun 2, 2009 at 7:59 PM

Hi Andrew,

Thank you for taking a look to FlairBuilder and for your honest review. With your permission I would like to add my comments to your thoughts only because there are somethings on which are agree with you and some other that I’m not sure I understood them exactly.

"There are no general nesting widgets and no split pane widget.”

I tried to introduce a split pane widget but then I faced the issue of having a liquid layout, something that is possible in coded prototypes but harder to do when defining an UI by simple absolute positioning. There is a trade off between having coded like prototypes with nested widgets like tabs, accordions and a simple plain contraints-free layout. I am not at all saying that I found the middle ground between these two, and feedback like your surely help me see where I stand exactly the this time.

On the other hand I don’t understand what do you mean by general nesting widgets? My single container is a canvas, starting with pages themselves. Tabs and accordions are also comprised of set of canvases. When focused, a canvas is surrounded by a yellow border denoting an area to which contained widgets are bounded. Unfortunately yes, to unbound an widget you’d have to cut/paste it else where. This is a limitation no one really complained too much about until now. Nevertheless, it is something I want to correct as soon as possible. I was thinking about Ctrl+drag to move outside the container or simply detach dragged widget once its boundaries have gone outside the container margins. This widget bound to a container was mainly forced by the tabs/accordions because you’d want to be able to flip from one tab to another. Having widgets simply absolute positioned within the page would not have allowed me to mimic a tabbed interface.

"All the widgets are fixed size and so my approach of laying out the widgets using their natural nesting and then tuning their positions and properties was not possible.”

What exactly do you mean by fixed size? Couldn’t you resize widgets? In case of some widgets like Tabs or Groub box you’d have to Ctrl+click the area inside that widget to selected the widget itself and then resize it, or Ctrl+drag to move it around. Otherwise, any other simple widget should be easy. I’m bit puzzeled here and I suspect that in fact other was the the issue you were facing. Would you mind clearifing this for me?

"this indirect model of interaction can be difficult for non-programmers”

I have users that when communicating with me use a non-programmer language, but still they seem to be able to use FlairBuilder. Not that you are not right, I’m just hoping that I’m not too far from a non-programmer friendly user interface. I am very much afraid of introducing very technical terms into the FB’s UI and I admit that this is very much possible given my background.

I strive to provide a tool that makes it easy for non-programmers to build interactive prototypes, the kind of prototypes they have been creating in PowerPoint or Excel or PDF. Therefore, provide the minimum set of l’n’f customization and a sufficient set of interactions to describe desired behavior up the level where it mimics enough the intended real product. I personally believe that not everyone have to skill to see far enough behind a static image, especially when it comes to more advances interactions. I may very well be wrong here.

Once again I thank you for sharing your thoughts about FlairBuilder. I will surely use your feedback trying to make it a useful product

Cristian

FlairBuilder review

A client asked me to quickly take a look at FlairBuilder. FlairBuilder is a cross-platform tool for rapid authoring of interactive wireframes and software prototypes. The 2¢ summary is I generally liked Flairbuilder but would not use it much.

I used it to create a simple two window interface where the second window pops up from the first. The interface creation tools were adequate to build the interface's look and interaction. Before building the interface I had a mental model of how the components were nested -- radio button groups within field sets within panels within split panes, etc -- but I could not directly apply this mental model to FlairBuilder's implementation model. While nesting is supported it is very rough in comparison to pure GUI builders like NetBeans' Matisse. There are no general nesting widgets and no split pane widget. Un-nesting is not possible as far as I can tell. (Perhaps it is just cut and paste.) All the widgets are fixed size and so my approach of laying out the widgets using their natural nesting and then tuning their positions and properties was not possible. Instead, you really need to have planned the interface before using the tool. Using the tool to explore is, I feel, not its strength.

You can create interactive models of the application. I find this less useful than showing specific scenarios in a storyboard presentation form. However, creation interaction within FlairBuilder is easy for a programmer to use. That is, the model of interaction as a series of "actions" responding to "events" has become natural to a programmer as this is how most GUI toolkits are implemented. However, this indirect model of interaction can be difficult for non-programmers.

The pixel perfect widgets -- radio buttons look like real radio buttons and data tables look like real data tables -- will inevitably lead me down the path of unnecessary precision in the prototype. This unnecessary precision would become a huge time-sink as I twiddle with widget properties, colors, and especially spacing. Given that there is no automatic widget sizing there would be lots of small changes necessary when re-aligning widgets.

I recommend considering Wireframe Sketcher and Balsamiq.

Update: See Cristian Pascu's response inRe: FlairBuilder review.

New master plan for Mecca is stunning

Wow! The new master plan design for Mecca is remarkable. 2 million worshipers can be accommodated. This can increase to 5 million if the whole mosque is replaced. The video presentation is at Fast Company.

Extra space

A great example of why your tool's screen-bounded user interface will never accommodate your user's needs. Found in Our Favorite Tools for Sketching.

This also reminds me to post a picture from Scott McClouds Making Comics -- which I think is his best book of the Understanding, Making, and Reinventing series -- of him (or is it his character?) sitting at a drafting table. So much useful empty space around the drawing paper. How easily and effectively can I use the empty space around this window I am typing into?

I have the idea that any day, real soon now, I will be able to get a half dozen wireless display panels to associate with my desktop and just spread them around as my working surface. I have been waiting since I first read The Computer for the 21st Century in Scientific American in 1991.

Oh, by the way, I am happy with monochrome panels of only several hundred pixels square using a low power protocol such as ZigBee.

It is a one-ways hash

I keep on forgetting to correct my use of terms. The substitution cipher in the last postings is really a one-way hash function. That is, you can not reverse the ciphering process and get the, in this example, domain name. This is because more than one character is mapped to a single digit. In the demonstration grid all instances of 'a', 'g','m', and 's' are replaced with 1. And everything that is not between 'a' and 'x' is replaced with 0. This is a one-way hash. The most famous is the MD5.

The start of a bookmarklet for generating passwords

Following up on yesterday's password generation posting, here is a Javascript generate passwords based on the last two names in the domain name. It is presented in a form suitable for use in a bookmarklet.


( function( substitution_cipher_grid ) {
substitution_cipher_grid = substitution_cipher_grid.replace(/\s+/g,'');
var substitution_cipher={};
var rows = substitution_cipher_grid.split('.');
for ( var r = 0; r < rows.length; r++ ) {
var cells = rows[r].split( '' );
for ( var c = 0; c < cells.length; c++ ) {
substitution_cipher[cells[c]]=c+1
}
}
var domain = window.location.host.split('.').reverse().splice(0,2).reverse().join('.');
var password=domain.split('').map( function(c) { return substitution_cipher[c] || 0; } ).join('');
window.prompt( 'Password for '+domain+' is:', password );
} ) ( " a b c d e f . \
g h i j k l . \
m n o p q r . \
s t u v w x " );


The substitution_cipher_grid is expressed as a Javascript string where each row is separated by a period and each cell is separated by a space. Again, the actual grid used here is only for demonstration and should not be actually used.

The most significant flaw in this example is having the substitution_cipher_grid encoded in the bookmarklet. Ideally, the first time the bookmarklet is used it would ask for the grid and store it away until you quit the browser or its time expires. This is the functionality of a cookie. Unfortunately, I do not know how to make a cookie that is only associated with a bookmarklet. Another caching mechanism would be acceptable too. Any ideas anyone?

Update: The code has been updated to not use the strip() function. I did not realize during testing that I was within a site that was using Prototype which adds methods to Javascript objects. One of these methods is strip().

A password generator I can remember

I want a password generator that I can remember. In most cases I will have my phone or computer that can be used to regenerate the password. However, I don't want to be so reliant on these tools for this. It would be great if I had a system that worked outside of the virtual world too. I want to be able to regenerate the password with pencil and paper if I need to. What I need is a substitution cipher and a secret or two.

For example, lets say the secrets about the password are that 1) it uses the substitution cipher on the domain name and 2) appends a memorable suffix. For example, for "yahoo.com" the substitution cipher is "012330331", the suffix is "MainSt", and so the password is "012330331MainSt". This is a fairly good password. It is not a dictionary word and it contains a mixture of numbers and letters of different case.

The cipher is made by arranging the letters of the alphabet in a grid. The substitution is had by finding the letter in the grid and recording its cell position – choosing the x and y or perhaps just one dimension as done here. Any character not in the grid is replaced with 0. The grid used for the cipher above is

cypher-grid-a

The grid is 4 rows of 6 columns with the alphabet filling the cells from left to right and top to bottom. The column numbers are the substitutions. This is not a very good substitution cipher, however: It is shown here simply to have a clear example. The following grid is better as the alphabet fills the cells in a non-obvious way but, for me, easily remembered.

cypher-grid-b

The "yahoo.com" substitution is "012440243".

A hacker might try using a substitution cipher on your password but it would take them up to 40,353,607 guesses – there are 7 replacement numbers (0 through 6) multiplied by the number of characters in the domain name (9), eg 7^9 -- but they still would not have the secret suffix. Further, well before 40,353,607 login attempts Yahoo! would have locked out the account.

I am not sure if I will use this technique just yet. It has all the characteristics I want. It is also easily coded as a bookmarklet or web application and an iPhone application.

If you know of similar password generators or better ones please send me a note.

Chickens: Status 18 May AM


Well, we can't tell which of the eight chickens are sick. In fact, after reading far too much about the composition of chicken poop we are not even sure that they are sick. Nevertheless, all the chickens are now in their own recuperation box, under lights in the studio's bathroom. If there was any doubt about our sanity this picture clearly clears that doubt away.

Jim Coombs's tools

The Extreme Geek piece by Cory Doctorow on writing tools reminds me of Jim Coombs's tools. Writers using geek tools to aid the research and composition process. Coomb's tools used XEDIT under IBM's mainframe VM/CMS operating system. His tools were implemented well before the web and so not much evidence of their existence is easily found today. This period is captured in McCarty's HUMANIST: Lessons from a Global Electronic Seminar.

FYI: The timing of local news cycles

The timing of local news cycles nicely supports some of what I wrote about in yesterday's Journalism and the new news organization's three products.

Journalism and the new news organization's three products

I agree with comments (other places) that much of the discussion about the demise of newspapers did not distinguish newspaper publishing and journalism. The newspaper publishing business model is on its last legs. While I will miss the physical artifact I don't mind seeing it go. Journalism, however, is needed now more than at any other time in its history.

Government at all levels encompasses more of people's lives that ever before. It is huge: from products to processes to places there is not much that is not touched by a regulation. Without investigative journalism we, as a country, will be lost. Any corruption we have now will pale in comparison to what we will have. Any danger we have now will pale in comparison to the future dangers we will have. Journalists study these things. They are the nudge that gets answers. Journalism needs to be supported.

There is talk that David Geffin will buy the New York Times and make it a non-profit. Something like what was done for the St Petersburg Times in Florida. On the surface this seems like a good thing for the New York Times. However, given how much debt the Times has it is already a non-profit. But seriously, making all news entities non-profits does not make long term sense. I am sure that there is enough philanthropic money out there to do it but journalism needs to stand on its own feet. We don't want "journalism" to have the same air as "academic" has today -- work distinct and unrelated to everyday lives.

What to do? My opinion is that news organizations need three products. The products are distinguished by factors of intellectual effort and historical perspective. Each has a different business model. They all derive benefit from skills and act of investigative journalism.

The first product is the "news stream." The recently released Times Wire is a model presentation for this. News streams represent the events and reportage happening now. A better Twitter for the news room. The content is enough for the reader to get the gist of the story. Sometimes the content comes from journalists but content can automatically from the raw data available from sources such as government administration, police, fire, hospitals, etc. Overall, there is very little editing that does into the news stream. The news stream is paid for by advertising. It is free to the reader.

The second product is the "news edition." Its primary function is to present a day's or a week's worth of general local and regional news and information to the public. It is similar to the newspapers and news magazines we have today. This contains some of what is in news stream but in longer form. Long form investigative pieces are its bread and butter. What is investigated is, in part, driven by the readers choices. The news edition is paid for by advertising, subscriptions, and single issue purchases. Advertisements must be subscriber specific (just as Google search is today) so a higher advertising rate can be charged.

The third product is the "news horizon." They are reports containing a deep investigative analysis of a single topic. "Commercial Fishing in South Kingstown", for example. It is informed by the current and historical trends and the current and historical facts. Depending on the topic it is updated biennially , yearly, or quarterly. It is considered the principle source of an objective perspective on the topic. Its readers are businesses and investors and sometimes the general public. The news horizon is a subscription service and single issue purchases. Any advertising would be limited to an underwriting notice.