InfoQ: Realistic about Risk: Software development with Real Options
The presentation pacing is slow. The Q&A at the end is worthwhile.
Scratch 1.4 Released!
"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
Found via Daniel Pink.
What the fuck has happened to Saturday morning cartoons?
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.
Mixing E-ink and ZigBee?
The rate of personal data accumulation is just crazy
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
Are you who you say you are?
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
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
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
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
The start of a bookmarklet for generating passwords
( 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
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.
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
FYI: The timing of local news cycles
Journalism and the new news organization's three products
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.

