<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2260601671083443121</id><updated>2011-10-16T02:38:20.967-07:00</updated><category term='nostalgia'/><category term='teamwork'/><category term='education'/><category term='finance'/><category term='erlang'/><category term='books'/><category term='problem-solving'/><category term='art'/><category term='Rationale'/><category term='salesforce'/><category term='leadership'/><category term='software development'/><category term='feynman'/><category term='argument mapping'/><category term='Sales'/><category term='academia'/><category term='user feedback'/><category term='agile'/><category term='internet culture'/><category term='genius'/><category term='family'/><category term='sicp'/><category term='tdd'/><category term='bselling'/><category term='web programming'/><category term='programming languages'/><category term='football'/><category term='learning'/><category term='software culture'/><category term='teaching'/><category term='science'/><category term='kids'/><category term='economics of software'/><category term='vanity'/><category term='scheme'/><category term='solution selling'/><category term='research'/><category term='consumerism'/><category term='thank-yous'/><category term='humour'/><category term='parenting'/><category term='software tools'/><category term='judaism'/><category term='software design'/><category term='games'/><category term='programming tips'/><category term='philosophy of programming'/><category term='meta-programming'/><category term='imagination'/><category term='legalese'/><category term='interviewing'/><category term='hacks'/><category term='food'/><category term='abstraction'/><category term='functional programming'/><category term='search'/><category term='puzzles'/><category term='mathematics'/><category term='marketing'/><category term='design'/><category term='acting'/><category term='gambling'/><category term='htdp'/><category term='career'/><category term='fun'/><category term='testing'/><category term='waffles'/><category term='blogging'/><category term='austhink'/><title type='text'>The Daily Kibitz</title><subtitle type='html'>Un-called for advice and occasional musings</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default?start-index=101&amp;max-results=100'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>124</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2938241616230826492</id><published>2010-07-27T17:52:00.000-07:00</published><updated>2010-11-05T13:01:10.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software culture'/><title type='text'>Some ideas for programmer metrics</title><content type='html'>Lines of code is a terrible metric of programmer productivity, prone to all sorts of gaming of the system, and here's a great story to illustrate: &lt;a href="http://folklore.org/StoryView.py?project=Macintosh&amp;amp;story=Negative_2000_Lines_Of_Code.txt"&gt;-2000 lines of code&lt;/a&gt; (+ &lt;a href="http://news.ycombinator.com/item?id=1545452"&gt;some nice discussion&lt;/a&gt;).&amp;nbsp; Bill Atkinson ends up subverting the simplistic management by entering -2000 under the lines of code box, signifying the net number of lines he contributed during the week.&lt;br /&gt;&lt;br /&gt;Of course, what this didn't capture was the qualitative detail of his work: identifying bugs, deleting, adding, fixing, abstracting, simplifying.&amp;nbsp; No single number can capture that.&lt;br /&gt;&lt;br /&gt;Indeed, the great &lt;a href="http://en.wikipedia.org/wiki/W._Edwards_Deming"&gt;W Edwards Deming&lt;/a&gt; warned -- but who takes notice? -- that taking any measure (simple or complex) and rewarding or punishing according to it is asking to be gamed.&amp;nbsp; Doing so made #3 in his list of &lt;a href="http://en.wikipedia.org/wiki/W._Edwards_Deming#Seven_Deadly_Diseases"&gt;seven deadly diseases&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;1. Lack of constancy of purpose&lt;br /&gt;2. Emphasis on short-term profits&lt;br /&gt;3. &lt;b&gt;Evaluation by performance, merit rating, or annual review of performance&lt;/b&gt;&lt;br /&gt;4. Mobility of management&lt;br /&gt;5. Running a company on visible figures alone&lt;br /&gt;6. Excessive medical costs&lt;br /&gt;7. Excessive costs of warranty, fueled by lawyers who work for contingency fees&lt;/blockquote&gt;That said, it's not to say that metrics can't be useful as a source of insight.&amp;nbsp; I wonder whether a simple multi-dimensional metric on lines-of-code could be helpful.&lt;br /&gt;&lt;br /&gt;Suggestion:&lt;br /&gt;&lt;blockquote&gt;1. Lines of own code added&lt;br /&gt;2. Lines of own code deleted&lt;br /&gt;3. Lines of others' code added&lt;br /&gt;4. Lines of others' code deleted&lt;br /&gt;5. Lines of code deleted by others&lt;/blockquote&gt;I envisage that collecting this kind of data on a weekly basis (say) could show interesting patterns for individuals over time, and corroborate gut feelings about who is refactoring vs adding functionality vs breaking stuff etc.&lt;br /&gt;&lt;br /&gt;Another aspect to consider is the scope of these metrics.  Does one measure individuals, pairs, or whole teams?  If the metrics were implemented for the whole team as a means of self-assessment changes over time could be due to external factors (changes in the kind of functionality requested, crunch times, etc.) or internal factors (learning, change of personnel, change of practices, etc.).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2938241616230826492?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2938241616230826492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2938241616230826492' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2938241616230826492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2938241616230826492'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/07/some-ideas-for-programmer-metrics.html' title='Some ideas for programmer metrics'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5353726618527911660</id><published>2010-07-04T17:03:00.000-07:00</published><updated>2010-07-06T12:36:49.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><category scheme='http://www.blogger.com/atom/ns#' term='software tools'/><title type='text'>Nerdy things I want to learn properly</title><content type='html'>&lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; (fast, distributed version control): &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4XpnKHJAok8"&gt;Linus's Google tech talk&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://eagain.net/articles/git-for-computer-scientists/"&gt;Git for Computer Scientists&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://orgmode.org/"&gt;Org-mode&lt;/a&gt; (TODO + tagging + calendar + outliner on steroids) in &lt;a href="http://www.gnu.org/software/emacs/"&gt;Emacs&lt;/a&gt; :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://orgmode.org/manual/index.html#Top"&gt;User manual&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://orgmode.org/talks/index.html"&gt;Carsten Dominik's Google tech talk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://members.optusnet.com.au/~charles57/GTD/gtd_workflow.html"&gt;"Getting Things Done" with Org mode and Emacs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mobileorg.ncogni.to/"&gt;MobileOrg&lt;/a&gt;: Free org-mode on the iPhone&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5353726618527911660?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5353726618527911660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5353726618527911660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5353726618527911660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5353726618527911660'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/07/nerdy-things-i-want-to-learn-properly.html' title='Nerdy things I want to learn properly'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7286034633510256205</id><published>2010-06-19T14:21:00.000-07:00</published><updated>2010-06-19T14:21:29.499-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><title type='text'>Resources for learning Javascript and jQuery</title><content type='html'>&lt;ul&gt;&lt;li&gt;Douglas Crockford's &lt;a href="http://javascript.crockford.com/"&gt;JavaScript articles&lt;/a&gt;&amp;nbsp;and book (&lt;a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742"&gt;JS: The Good Parts&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;John Resig's &lt;a href="http://ejohn.org/blog/"&gt;blog&lt;/a&gt;&amp;nbsp;and &lt;a href="http://jsninja.com/Overview"&gt;JS Secrets book&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Rebecca Murphy, &lt;a href="http://www.rebeccamurphey.com/jqfundamentals/"&gt;jQuery Fundamentals&lt;/a&gt;&amp;nbsp;(inludes JS primer)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7286034633510256205?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7286034633510256205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7286034633510256205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7286034633510256205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7286034633510256205'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/06/resources-for-learning-javascript-and.html' title='Resources for learning Javascript and jQuery'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3033851350012318208</id><published>2010-06-15T19:12:00.000-07:00</published><updated>2010-06-15T21:52:58.066-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><title type='text'>Turning MS Office into a game</title><content type='html'>There's now a plugin to Microsoft Office, &lt;a href="http://www.officelabs.com/ribbonhero"&gt;Ribbon Hero&lt;/a&gt;, that adds simple game dynamics to encourage users to better learn how to drive the darn thing, betwixt coffee breaks.&lt;br /&gt;&lt;br /&gt;Informative article, &lt;a href="http://www.lostgarden.com/2010/01/ribbon-hero-turns-learning-office-into.html"&gt;here&lt;/a&gt;.&amp;nbsp; Excellent slides:&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_4133947" style="width: 400px;"&gt;&lt;object height="428" id="__sse4133947" width="477"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/doc_player.swf?doc=wordcamp2010-public-100517214725-phpapp02&amp;stripped_title=wordcamp-2010-public" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse4133947" src="http://static.slidesharecdn.com/swf/doc_player.swf?doc=wordcamp2010-public-100517214725-phpapp02&amp;stripped_title=wordcamp-2010-public" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="428"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;&lt;br /&gt;Beats the hell out of reading the manual.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3033851350012318208?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3033851350012318208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3033851350012318208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3033851350012318208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3033851350012318208'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/06/turning-ms-office-into-game.html' title='Turning MS Office into a game'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-4320793702234667777</id><published>2010-05-04T17:31:00.000-07:00</published><updated>2010-05-04T17:32:24.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>Bad writing</title><content type='html'>&lt;blockquote&gt;"The truth is, most US academic prose is appalling: pompous, abstruse, claustral, inflated, euphuistic, pleonastic, solecistic, sesquipedalian, Heliogabaline, occluded, obscure, jargon-ridden, empty: resplendently dead."&lt;br /&gt;&lt;br /&gt;-- David Foster Wallace, in &lt;a href="http://www.amazon.com/Consider-Lobster-David-Foster-Wallace/dp/0316156116#reader_0316156116"&gt;Authority and American Usage&lt;/a&gt;&lt;/blockquote&gt;Seen on &lt;a href="http://news.ycombinator.com/item?id=1319835"&gt;Hacker  news&lt;/a&gt;.&amp;nbsp; See also &lt;a href="http://www.inc.com/magazine/20100501/why-is-business-writing-so-awful.html"&gt;this article&lt;/a&gt; on business writing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-4320793702234667777?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/4320793702234667777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=4320793702234667777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4320793702234667777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4320793702234667777'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/05/bad-writing.html' title='Bad writing'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8797023299907801209</id><published>2010-04-13T18:48:00.000-07:00</published><updated>2010-04-13T18:48:49.771-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software culture'/><title type='text'>C# is *slowly* turning into Eiffel</title><content type='html'>When I &lt;i&gt;first&lt;/i&gt; read Bertrand Meyer's fabulous tome, &lt;a href="http://www.amazon.com/Object-Oriented-Software-Construction-Book-CD-ROM/dp/0136291554"&gt;Object-oriented Software Development, (2nd edition)&lt;/a&gt;. in 1997 I guessed that it was ten years ahead of its time. &amp;nbsp;Seems like I wasn't too far off the mark, with .NET 4 introducing language independent support for &lt;a href="http://en.wikipedia.org/wiki/Design_by_contract"&gt;Design by Contract&lt;/a&gt;, as &lt;a href="http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx"&gt;code contracts&lt;/a&gt;, and patching up some of the covariance and contravariance issues of previous versions.&lt;br /&gt;&lt;br /&gt;How long it will take for most programmers to use the techniques well is anyone's guess, but having mainstream tools that support these approaches is a &lt;i&gt;good thing&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8797023299907801209?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8797023299907801209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8797023299907801209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8797023299907801209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8797023299907801209'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/04/c-is-slowly-turning-into-eiffel.html' title='C# is *slowly* turning into Eiffel'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3257102921772525302</id><published>2010-04-07T21:40:00.000-07:00</published><updated>2010-04-07T21:40:22.642-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Non-functional requirements</title><content type='html'>There's a lot of unglamorous stuff in software that is just "expected", and accounts for some of the project cost that you will miss when imagining two guys in a garage (or cafe) knocking out a quickie project.&amp;nbsp; Here's a handy list: &lt;a href="http://leadinganswers.typepad.com/leading_answers/2009/03/nonfunctional-requirements-minimal-checklist.html"&gt;Non-functional requirements: Minimal checklist&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3257102921772525302?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3257102921772525302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3257102921772525302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3257102921772525302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3257102921772525302'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/04/non-functional-requirements.html' title='Non-functional requirements'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-4998651977598224717</id><published>2010-03-11T15:27:00.000-08:00</published><updated>2010-03-11T15:28:37.731-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web programming'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>ToneMatrix: A fun, simple music synthesizer</title><content type='html'>&lt;a href="http://lab.andre-michelle.com/tonematrix?"&gt;ToneMatrix&lt;/a&gt; (Flash-based): The pattern determines the sound.&amp;nbsp; Example pattern:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_W079YQswWQw/S5l7wKF8UkI/AAAAAAAAAOY/FVuWwKP6H9E/s1600-h/Screen+shot+2010-03-12+at+10.23.15+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_W079YQswWQw/S5l7wKF8UkI/AAAAAAAAAOY/FVuWwKP6H9E/s320/Screen+shot+2010-03-12+at+10.23.15+AM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Right-click copy and paste let's you save compositions as text.&lt;br /&gt;&lt;br /&gt;Examples abound in the &lt;a href="http://www.reddit.com/r/programming/comments/bbx6p/i_think_i_just_wasted_a_good_hour_on_this_thing/"&gt;reddit discussion&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I must try my kids on this ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-4998651977598224717?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/4998651977598224717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=4998651977598224717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4998651977598224717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4998651977598224717'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/03/tonematrix-fun-simple-music-synthesizer.html' title='ToneMatrix: A fun, simple music synthesizer'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_W079YQswWQw/S5l7wKF8UkI/AAAAAAAAAOY/FVuWwKP6H9E/s72-c/Screen+shot+2010-03-12+at+10.23.15+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-9078773649224110723</id><published>2010-03-10T19:21:00.000-08:00</published><updated>2010-03-10T19:21:36.907-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web programming'/><title type='text'>Harmony: A neat drawing tool in JavaScript</title><content type='html'>Flash-free graphics in the browser is getting easier to do, and snazzier:&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="240"&gt;&lt;param name="movie" value="http://www.youtube.com/v/To1A-EPz79w&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/To1A-EPz79w&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="240"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Try it &lt;a href="http://mrdoob.com/lab/javascript/harmony/"&gt;here&lt;/a&gt;.  View the source to see the JavaScript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-9078773649224110723?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/9078773649224110723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=9078773649224110723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/9078773649224110723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/9078773649224110723'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/03/harmony-neat-drawing-tool-in-javascript.html' title='Harmony: A neat drawing tool in JavaScript'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1250284361138996226</id><published>2010-03-08T19:31:00.000-08:00</published><updated>2010-05-04T17:06:22.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><title type='text'>mmmm ... CoffeeScript</title><content type='html'>The most commonly used programming language in the world today, certainly within the browse, &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt; superficially resembles the &lt;a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29"&gt;Java&lt;/a&gt; programming language in its syntax, but at deeper levels it owes far more to lesser-known languages, such as &lt;a href="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29"&gt;Scheme&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Self_programming_language"&gt;Self&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Java part of the name and syntax apparently came about as a result of a decree from Marketing that Java was the next hot thing, and inventor Brendan Eich worked feverishly to swiftly put a Java-esque sheen over the top.&amp;nbsp; This, plus the cutesy name, helped mislead a lot of people for a lot years into thinking that it was a toy scripting language, and only with the more recent success of &lt;a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29"&gt;AJAX&lt;/a&gt; has its underlying power come to the fore.&lt;br /&gt;&lt;br /&gt;And yet we are still burdened with the clunky syntax.&lt;br /&gt;&lt;br /&gt;However, &lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeeScript&lt;/a&gt; promises to change that, with a new, lightweight syntax for JavaScript that owes a fair bit to &lt;a href="http://en.wikipedia.org/wiki/Python_%28programming_language%29"&gt;Python&lt;/a&gt;&amp;nbsp;and &lt;a href="http://en.wikipedia.org/wiki/Ruby_%28programming_language%29"&gt;Ruby&lt;/a&gt;&amp;nbsp;syntaxes,&amp;nbsp;and a lot to experience with JavaScript.&amp;nbsp; An example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: #999999;"&gt;# Uses a binary search algorithm to locate a value in the specified array.&lt;/span&gt;&lt;span style="color: #0b5394;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: #0b5394;"&gt;binary_search&lt;/span&gt;: (items, value) -&amp;gt;&lt;br /&gt; &lt;br /&gt;  &lt;span style="color: #0b5394;"&gt;start&lt;/span&gt;: 0&lt;br /&gt;  &lt;span style="color: #0b5394;"&gt;stop&lt;/span&gt;: items.length - 1&lt;br /&gt;  &lt;span style="color: #0b5394;"&gt;pivot&lt;/span&gt;: &lt;span style="color: #0b5394;"&gt;Math&lt;/span&gt;.floor((start + stop) / 2)&lt;br /&gt; &lt;br /&gt;  &lt;b&gt;while&lt;/b&gt; items[pivot] &lt;b&gt;isnt&lt;/b&gt; value &lt;b&gt;and&lt;/b&gt; start &amp;lt; stop&lt;br /&gt; &lt;br /&gt;    &lt;span style="color: #999999;"&gt;# Adjust the search area.&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0b5394;"&gt;stop&lt;/span&gt;: pivot - 1 &lt;b&gt;if&lt;/b&gt; value &amp;lt; items[pivot]&lt;br /&gt;    &lt;span style="color: #0b5394;"&gt;start&lt;/span&gt;: pivot + 1 &lt;b&gt;if&lt;/b&gt; value &amp;gt; items[pivot]&lt;br /&gt; &lt;br /&gt;    &lt;span style="color: #999999;"&gt;# Recalculate the pivot.&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0b5394;"&gt;pivot&lt;/span&gt;: &lt;span style="color: #0b5394;"&gt;Math&lt;/span&gt;.floor((stop + start) / 2)&lt;br /&gt; &lt;br /&gt;  &lt;span style="color: #999999;"&gt;# Make sure we've found the correct value.&lt;/span&gt;&lt;br /&gt;  &lt;b&gt;if&lt;/b&gt; items[pivot] &lt;b&gt;is&lt;/b&gt; value &lt;b&gt;then&lt;/b&gt; pivot &lt;b&gt;else&lt;/b&gt; -1&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;span style="color: #999999;"&gt;# Test the function.&lt;/span&gt;&lt;br /&gt;puts(2 &lt;b&gt;is&lt;/b&gt; binary_search([10, 20, 30, 40, 50], 30))&lt;br /&gt;puts(4 &lt;b&gt;is&lt;/b&gt; binary_search([-97, 35, 67, 88, 1200], 1200))&lt;br /&gt;puts(0 &lt;b&gt;is&lt;/b&gt; binary_search([0, 45, 70], 0))&lt;br /&gt;puts(-1 &lt;b&gt;is&lt;/b&gt; binary_search([0, 45, 70], 10))&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;At time of writing CoffeeScript is only up to version 0.5.5, and syntax is not guaranteed to stabilize until 1.0, but IMO it's well worth a look.&lt;br /&gt;&lt;br /&gt;P.S. A neat little &lt;a href="http://awardwinningfjords.com/2010/03/01/a-learning-experience-iphone-style-checkboxes-in-coffee-script.html"&gt;blog post&lt;/a&gt; about CoffeeScript (with short examples) from Thomas Reynolds.&lt;br /&gt;&lt;br /&gt;P.P.S. There are similar tools/nicer syntaxes for HTML (&lt;a href="http://en.wikipedia.org/wiki/Haml"&gt;HAML&lt;/a&gt;), and CSS (&lt;a href="http://sass-lang.com/"&gt;Sass&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1250284361138996226?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1250284361138996226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1250284361138996226' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1250284361138996226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1250284361138996226'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/03/mmmm-coffeescript.html' title='mmmm ... CoffeeScript'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3730478753809470209</id><published>2010-03-02T15:59:00.000-08:00</published><updated>2010-03-02T16:20:13.348-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>What makes a good entrepeneurial blog</title><content type='html'>In his good-bye to blogging &lt;a href="http://www.inc.com/magazine/20100301/lets-take-this-offline.html"&gt;article&lt;/a&gt; Joel Spolsky of &lt;a href="http://www.google.com.au/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;ved=0CAgQFjAA&amp;amp;url=http%3A%2F%2Fwww.joelonsoftware.com%2F&amp;amp;ei=KauNS5zUBdGLkAXRreSsCA&amp;amp;usg=AFQjCNEWL-MVExEX0B1yhtRworv2q0Plcw&amp;amp;sig2=Iy906xekulFxWRKM5TMujQ"&gt;Joel on Software&lt;/a&gt; fame paraphrases &lt;a href="http://headrush.typepad.com/"&gt;Kathy Sierra&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;To really work, Sierra observed, an entrepreneur's blog has to be about something bigger than his or her company and his or her product. This sounds simple, but it isn't. It takes real discipline to not talk about yourself and your company. Blogging as a medium seems so personal, and often it is. But when you're using a blog to promote a business, that blog can't be about you, Sierra said. It has to be about your readers, who will, it's hoped, become your customers. It has to be about making them awesome.&lt;/blockquote&gt;Now, that's not the aim of this blog, which started off as a combo. semi-regular frustrated rant / the traditional idea of a web log (keeping a log of cool things the author found on the web) / cute things about my kids, but nonetheless I reckon it's spot-on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3730478753809470209?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3730478753809470209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3730478753809470209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3730478753809470209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3730478753809470209'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/03/what-makes-good-blog.html' title='What makes a good entrepeneurial blog'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5388189684511394888</id><published>2010-02-10T21:32:00.000-08:00</published><updated>2010-02-10T21:44:21.391-08:00</updated><title type='text'>They should be remaking bad movies ... and fixing them</title><content type='html'>Wise talk from &lt;a href="http://en.wikipedia.org/wiki/Edwin_Catmull"&gt;Ed Catmull&lt;/a&gt;, president of Pixar and Disney Animation studios, on what he's learned:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/k2h2lvhzMDc&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/k2h2lvhzMDc&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Gems (paraphrased):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Give a good idea to mediocre people and they'll muck it up; give a mediocre idea to good people and they'll fix the idea, or throw it out and get a good one.&lt;/li&gt;&lt;li&gt;A movie or product isn't just one idea, it's thousands, and most of them need to be done right for you to succeed, so you need a good team&lt;/li&gt;&lt;li&gt;People are always remaking good movies; they should be remaking bad ones that were based on good ideas, but poorly executed&lt;/li&gt;&lt;li&gt;People and how they function is more important than ideas&lt;/li&gt;&lt;li&gt;It's very possible to misunderstand the reasons for your success&lt;/li&gt;&lt;li&gt;What's important are the things that affect behavior&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Plus insights into why people don't like to do post-mortems, gaming "the system", communication structure vs company structure, and why successful companies fail.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5388189684511394888?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5388189684511394888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5388189684511394888' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5388189684511394888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5388189684511394888'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/02/they-should-be-remaking-bad-movies-and.html' title='They should be remaking bad movies ... and fixing them'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2893871527547469452</id><published>2010-01-31T14:50:00.000-08:00</published><updated>2010-02-01T02:11:27.604-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software culture'/><title type='text'>Hygiene and Motivation</title><content type='html'>In &lt;a href="http://www.softwarebyrob.com/2006/10/31/nine-things-developers-want-more-than-money/"&gt;Nine Things Developers Want&lt;/a&gt;, Rob references Herzberg's Two Factor Theory:&lt;br /&gt;&lt;blockquote&gt;In the 1950s a researcher named &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FMotivation-Work-Frederick-Herzberg%2Fdp%2F156000634X%2Fsr%3D8-1%2Fqid%3D1162593849%3Fie%3DUTF8%26s%3Dbooks&amp;amp;tag=softwarbyrob-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325" target="_blank"&gt;Frederick Herzberg&lt;/a&gt; studied 200 engineers and accountants in the US. He asked them a few simple questions and came up with what is one of the most widely-accepted theories on job satisfaction called &lt;a href="http://www.12manage.com/methods_herzberg_two_factor_theory.html" target="blank_" title="Two Factor Theory"&gt;Two Factor Theory&lt;/a&gt;. &lt;br /&gt;His theory breaks job satisfaction into two factors:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;hygiene factors&lt;/span&gt; such as working conditions, quality of supervision, salary, safety, and company policies&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;motivation factors&lt;/span&gt; such as achievement, recognition, responsibility, the work itself, personal growth, and advancement&lt;/li&gt;&lt;/ul&gt;Hygiene factors are necessary to ensure employees don’t become dissatisfied, but they don’t contribute to higher levels of motivation. Motivation factors are what create motivation and job satisfaction by fulfilling a person’s need for meaning and personal growth.&lt;/blockquote&gt;In his cracking TED Talk Dan Pink delves into some of the behavioral research that explores the consequences of using extrinsic factors such as monetary rewards as motivational tools:&lt;br /&gt;&lt;br /&gt;&lt;object height="243" width="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rrkrvAUbU9Y&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/rrkrvAUbU9Y&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="243"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Bottom line: &lt;i&gt;extrinsic&lt;/i&gt; rewards tend to narrow focus and hamper creativity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2893871527547469452?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2893871527547469452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2893871527547469452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2893871527547469452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2893871527547469452'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/01/hygene-and-motivation.html' title='Hygiene and Motivation'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6638217473375137200</id><published>2010-01-28T15:05:00.000-08:00</published><updated>2010-06-30T20:06:35.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web programming'/><title type='text'>Some powerful Javascript tools</title><content type='html'>As the web-browser turns into the client of choice, it's good to have powerful tools to hand.&amp;nbsp; To whit:&lt;b&gt; &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;HTML/CSS manipulation&lt;/b&gt; (esp. for Ajax): &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Javascript Optimizer/Checker&lt;/b&gt;: Google's &lt;a href="http://code.google.com/closure/compiler/"&gt;Closure compiler&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Information Visualization&lt;/b&gt;: &lt;a href="http://thejit.org/"&gt;JavaScript InfoVis Toolkit&lt;/a&gt; and &lt;a href="http://vis.stanford.edu/protovis/"&gt;Protovis&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Javascript charts and graph&lt;/b&gt;s: &lt;a href="http://webdesignledger.com/resources/13-useful-javascript-solutions-for-charts-and-graphs"&gt;A selection of 13 tools&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Vector graphics&lt;/b&gt;: &lt;a href="http://raphaeljs.com/"&gt;Raphael&lt;/a&gt; (plus charting extension, &lt;a href="http://g.raphaeljs.com/"&gt;gRaphael&lt;/a&gt;): &lt;a href="http://spitleaf.com/30days/day4.html"&gt;clock example&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Client-side GraphViz: &lt;/b&gt;&lt;a href="http://code.google.com/p/canviz/"&gt;CanViz&lt;/a&gt;&lt;b&gt; &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Background processing&lt;/b&gt;: &lt;a href="http://www.whatwg.org/specs/web-workers/current-work/"&gt;Web-workers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Push&lt;/b&gt;: &lt;a href="http://armstrongonsoftware.blogspot.com/2009/12/comet-is-dead-long-live-websockets.html"&gt;Web-sockets&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;No doubt more to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6638217473375137200?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6638217473375137200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6638217473375137200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6638217473375137200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6638217473375137200'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/01/some-powerful-javascript-tools.html' title='Some powerful Javascript tools'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2096405801213855111</id><published>2010-01-21T01:25:00.000-08:00</published><updated>2010-01-21T01:51:55.008-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>See no evil, hear no evil, speak no evil</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;The &lt;a href="http://en.wikipedia.org/wiki/Three_wise_monkeys"&gt;three wise monkeys&lt;/a&gt;&amp;nbsp;together embody goodness of mind, speech, and action.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_W079YQswWQw/S1gcNz-Vr4I/AAAAAAAAAN0/G928yTJZcbs/s1600-h/Screen+shot+2010-01-21+at+8.14.11+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/_W079YQswWQw/S1gcNz-Vr4I/AAAAAAAAAN0/G928yTJZcbs/s400/Screen+shot+2010-01-21+at+8.14.11+PM.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Daughter Ella, aged four, embodies cheekiness of mind, speech, and action.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2096405801213855111?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2096405801213855111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2096405801213855111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2096405801213855111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2096405801213855111'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2010/01/see-no-evil-hear-no-evil-speak-no-evil.html' title='See no evil, hear no evil, speak no evil'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W079YQswWQw/S1gcNz-Vr4I/AAAAAAAAAN0/G928yTJZcbs/s72-c/Screen+shot+2010-01-21+at+8.14.11+PM.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1893732808781770512</id><published>2009-11-20T22:23:00.000-08:00</published><updated>2009-11-22T00:47:12.769-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><title type='text'>My son just conducted the Melbourne Symphony Orchestra!</title><content type='html'>This morning our family went to a Classic Kids concert given by the &lt;a href="http://www.mso.com.au/cpa/htm/htm_home.asp"&gt;Melbourne Symphony Orchestra&lt;/a&gt;.  Lots of fun music and dancing and learning about the instruments and sections of the orchestra.  The different sections were dressed in different colored tops to aid identification, &lt;i&gt;a la&lt;/i&gt; &lt;a href="http://en.wikipedia.org/wiki/The_Wiggles"&gt;the Wiggles&lt;/a&gt;, and the conductor had a multi-colored top on.&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W079YQswWQw/SweMVeGXkBI/AAAAAAAAAL4/3uwZmEMpME4/s1600/mso.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 165px;" src="http://2.bp.blogspot.com/_W079YQswWQw/SweMVeGXkBI/AAAAAAAAAL4/3uwZmEMpME4/s320/mso.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5406444178166485010" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;The MSO, in more formal attire&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A boy and girl were selected to conduct &lt;a href="http://en.wikipedia.org/wiki/The_Liberty_Bell_(march)"&gt;The Liberty Bell&lt;/a&gt;, and my kids, who were seated at the front were predictably disappointed not to be picked.  But wait ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After kicking off the &lt;i&gt;finale&lt;/i&gt;, &lt;a href="http://www.youtube.com/watch?v=JkymTHSbWe0"&gt;The William Tell Overture&lt;/a&gt; ("Hi ho Silver - &lt;a href="http://www.youtube.com/watch?v=GTdt-Tyaa3M"&gt;away&lt;/a&gt;!"), one of the most thrilling showpieces in the orchestral repertoire, the conductor, Ben -- &lt;a href="http://www.benjaminnorthey.com/Benjamin_Northey_-_Conductor/Home.html"&gt;Benjamin Northey&lt;/a&gt;, bless him, may he have a long life and outstanding career -- dashed into the audience, asked Jake's Mum if he'd like to conduct (swift affirmative response), and led Jake to the podium where he handed Jake the baton.  Jake proceeded to perform with verve, enthusiasm and undisguised joy for about 3 minutes, all the way to the end of the &lt;i&gt;finale&lt;/i&gt;, followed by wild applause from the audience.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W079YQswWQw/SweLwBGiwDI/AAAAAAAAALw/FOcTgzbX1aA/s1600/BenNorthey.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 194px; height: 235px;" src="http://4.bp.blogspot.com/_W079YQswWQw/SweLwBGiwDI/AAAAAAAAALw/FOcTgzbX1aA/s320/BenNorthey.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5406443534727430194" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Benjamin Northey, my favorite conductor&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was awesome.  I was in tears, Andi (Jake's mum was in tears), and Ella no doubt expects to get to conduct the orchestra next time round.  It was awesome and inspiring.  A child came up to Jake afterwards and said that he was better than the real conductor; that kid will not grow up to be a music critic, but bless him too!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On questioning Jake said that the fast bits were more challenging to conduct than the slow bits, and that even though conducting was fun, he would prefer to be an inventor of new musical instruments when he grows up than an orchestra conductor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Jake &lt;a href="http://dailykibitz.blogspot.com/2008/04/just-little-bit-proud.html"&gt;played Moses at kindergarten&lt;/a&gt; (with stick), and conducted the MSO at age 5 in the William Tell Overture with baton.  What a little legend!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Andi's &lt;a href="http://patchandi.blogspot.com/2009/11/my-son-conductor.html"&gt;post&lt;/a&gt; on the same incident.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Update&lt;/b&gt;: Andi wrote to Benjamin Northey to thank him.  Here's his reply:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;b&gt;From&lt;/b&gt;: Benjamin Northey&lt;br /&gt;&lt;b&gt;Sent&lt;/b&gt;: Sunday, 22 November 2009 11:32 AM&lt;br /&gt;&lt;b&gt;To&lt;/b&gt;: Andi Herman&lt;br /&gt;&lt;b&gt;Subject&lt;/b&gt;: Re: Thank you&lt;br /&gt;&lt;br /&gt;Hi Andi,&lt;br /&gt;&lt;br /&gt;So kind of you to share this with me.  Jake was pretty much the highlight of the week for us!  The orchestra loved him and as you say, to see such pure joy was very special indeed - very moving.  Loved reading the blogs also.&lt;br /&gt;&lt;br /&gt;I hope that this is something Jake will remember for a long time.  Please say hi to BOTH of your children from  me!&lt;br /&gt;&lt;br /&gt;all best, Ben&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;We hope so too.  Thanks again, Ben.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1893732808781770512?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1893732808781770512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1893732808781770512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1893732808781770512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1893732808781770512'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/11/my-son-just-conducted-melbourne.html' title='My son just conducted the Melbourne Symphony Orchestra!'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W079YQswWQw/SweMVeGXkBI/AAAAAAAAAL4/3uwZmEMpME4/s72-c/mso.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3968095134173760161</id><published>2009-11-17T12:38:00.000-08:00</published><updated>2009-11-17T12:45:15.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>So he writes books about movies?</title><content type='html'>From the "Overheard" section in &lt;a href="http://www.mxnet.com.au/"&gt;mX&lt;/a&gt;:&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;b&gt;Girl&lt;/b&gt;: I'm going to see &lt;i&gt;Taming of the Shrew.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;/i&gt;&lt;b&gt;Friend&lt;/b&gt;: Is that like the book that's based on the movie &lt;i&gt;Ten Things I Hate About You&lt;/i&gt;?&lt;/div&gt;&lt;div&gt;&lt;b&gt;Girl&lt;/b&gt;: Not quite.  It's by William Shakespeare.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Friend&lt;/b&gt;: Didn't he do &lt;i&gt;Romeo and Juliet&lt;/i&gt;?&lt;/div&gt;&lt;div&gt;&lt;b&gt;Girl&lt;/b&gt;: That's the one.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Friend&lt;/b&gt;: So he writes books about movies?&lt;/div&gt;&lt;div&gt;&lt;b&gt;Girl&lt;/b&gt;: Have you ever been to English class?&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;Classic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3968095134173760161?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3968095134173760161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3968095134173760161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3968095134173760161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3968095134173760161'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/11/so-he-writes-books-about-movies.html' title='So he writes books about movies?'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8857648099945600509</id><published>2009-11-13T03:09:00.000-08:00</published><updated>2009-11-13T03:18:29.111-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><title type='text'>Opposite rhymes</title><content type='html'>My daughter Ella, who is not yet four, has invented a new word game called "opposite rhymes".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You know how the word game "opposite pairs" works: Name pairs of words that are opposites.  For example:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Big - little&lt;/li&gt;&lt;li&gt;Black - white&lt;/li&gt;&lt;li&gt;Hot - cold&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;And "rhyming pairs":&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Fiddle - middle&lt;/li&gt;&lt;li&gt;Hot - cot&lt;/li&gt;&lt;li&gt;Head - said&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;But in opposite rhymes (also known as rhyming opposites) you have to do both at once, making it considerably harder:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Ella: Tall - small&lt;/li&gt;&lt;li&gt;Andi: Happy - crappy&lt;/li&gt;&lt;li&gt;Andi: Sad - glad&lt;/li&gt;&lt;li&gt;Dan: Familiar - unfamiliar (deemed unacceptable)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;So I'm pretty impressed with my little girl for inventing this new form of wordplay and finding the first one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Can you find of any others?  It ain't easy.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8857648099945600509?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8857648099945600509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8857648099945600509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8857648099945600509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8857648099945600509'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/11/opposite-rhymes.html' title='Opposite rhymes'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6143050072885556508</id><published>2009-11-08T15:47:00.000-08:00</published><updated>2009-11-08T16:13:02.558-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>Which religion should I follow?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Gone are the days when one simply followed the religion of one's forefathers and foremothers.  For those who find themselves confused by all the different choices on the market, here's a handy visual guide:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W079YQswWQw/SvdY1GYRUfI/AAAAAAAAALg/IKD1w0yKlHM/s1600-h/Religion-Flowchart.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 615px;" src="http://3.bp.blogspot.com/_W079YQswWQw/SvdY1GYRUfI/AAAAAAAAALg/IKD1w0yKlHM/s400/Religion-Flowchart.jpg" alt="" id="BLOGGER_PHOTO_ID_5401883947322921458" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Click for a larger and clearer version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Hopefully people of all faiths and non-faiths are equally offended and amused.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6143050072885556508?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6143050072885556508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6143050072885556508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6143050072885556508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6143050072885556508'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/11/which-religion-should-i-follow.html' title='Which religion should I follow?'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_W079YQswWQw/SvdY1GYRUfI/AAAAAAAAALg/IKD1w0yKlHM/s72-c/Religion-Flowchart.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1518107501086962369</id><published>2009-10-26T15:41:00.000-07:00</published><updated>2009-10-26T15:58:22.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Promoted - again!</title><content type='html'>It seems to be the season.  Around this time last year I was &lt;a href="http://dailykibitz.blogspot.com/2008/11/promoted-kibitzer-becomes-kibitzed.html"&gt;promoted to CTO&lt;/a&gt;, and this time round, my boss has decided to move on, and I have stepped up to the hot seat of CEO-dom.&lt;br /&gt;&lt;br /&gt;All of this has been bad for my Kibitz blogging, although I have been contributing to a &lt;a href="http://bcisiveonline.blogspot.com/"&gt;new blog&lt;/a&gt; all about our emerging visual collaboration product: &lt;a href="http://www.bcisiveonline.com/"&gt;bCisive Online&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NCmMYTi-30s/SuYosJDgF8I/AAAAAAAAAGs/eESuwq5DpHM/s1600-h/Screen+shot+2009-10-27+at+9.53.35+AM.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 285px;" src="http://1.bp.blogspot.com/_NCmMYTi-30s/SuYosJDgF8I/AAAAAAAAAGs/eESuwq5DpHM/s320/Screen+shot+2009-10-27+at+9.53.35+AM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5397045942260078530" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;A&lt;i&gt; diagram quickly knocked up in bCisive Online - click to enlarg&lt;/i&gt;e&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;Divide and conquer&lt;/i&gt; meets &lt;i&gt;visual thinking&lt;/i&gt; meets true &lt;i&gt;real-time collaboration&lt;/i&gt;.  Interested?  Check it out, and get in touch.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That said, I'll try and post the occasional kibitz or update here too.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1518107501086962369?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1518107501086962369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1518107501086962369' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1518107501086962369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1518107501086962369'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/10/promoted-again.html' title='Promoted - again!'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NCmMYTi-30s/SuYosJDgF8I/AAAAAAAAAGs/eESuwq5DpHM/s72-c/Screen+shot+2009-10-27+at+9.53.35+AM.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6272747981880656126</id><published>2009-05-14T16:49:00.000-07:00</published><updated>2009-05-14T19:46:11.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bselling'/><category scheme='http://www.blogger.com/atom/ns#' term='Sales'/><title type='text'>bSelling from the Top Down (and bottom up)</title><content type='html'>When we first developed &lt;a href="http://sites.force.com/appexchange/apex/listingDetail?listingId=a0N300000016d1FEAQ"&gt;bSelling Opportunity Management Software&lt;/a&gt; we had a choice: Focus on bottom-up or top-down issues.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;We chose bottom-up first&lt;/span&gt;: Make the software easy and fun to use, and useful to the individual sales rep.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Almost immediately, our early adopters made us very aware that as much as they loved what we already had, there were burning &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;top-down issues &lt;/span&gt;that needed to be addressed asap:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;How can the sales manager get an effective overview of all open opportunities?  And then drill down.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Similarly, how can an individual salesperson get perspective of all his opportunities in order to better gauge where and how to focus effort?&lt;/li&gt;&lt;li&gt;How can a sales manager customize the qualification process to fit her team's needs?&lt;/li&gt;&lt;li&gt;How can a sales person or manager share insights with other team members, or present a pitch to clients?&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;We listened and have carefully crafted some exciting new features, again blending visual flair with smart functionality:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Better overviews: The bSelling Opportunity Explorer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The bSelling Opportunity Explorer is a new dashboard that shows every open Opportunity and positions it graphically based on its qualification percentage -- the likelihood of success as determined through the bSelling flip-card based Qualify tool -- and the expected Amount in $ from a successful close:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NCmMYTi-30s/SgzWy7C4cZI/AAAAAAAAAFA/_jsSxGxe-lc/s1600-h/Picture+4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 287px;" src="http://2.bp.blogspot.com/_NCmMYTi-30s/SgzWy7C4cZI/AAAAAAAAAFA/_jsSxGxe-lc/s400/Picture+4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5335875828858778002" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Click to view a larger image&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The size of the bubble shows how much effort the rep. has been devoting to the opportunity.  Hovering on an opportunity identifies it and gives precise numbers.  Clicking opens up bSelling for that opportunity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Overview&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Looking at the overall distribution gives an at-a-glance overview of where all opportunities are at, and where the effort is going.  The four quadrants are labelled to assist interpretation:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Excellent&lt;/span&gt;: The upper right contains the best-qualified, highest amount opportunities&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Safe bets&lt;/span&gt;: The lower right are well qualified, lower amount opps&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Pie in the sky&lt;/span&gt;: The upper left contain the high amount, not yet well qualified opps&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Poor&lt;/span&gt;: The lower left contains poorly qualified, low yield opps&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Reading the patterns&lt;/span&gt;&lt;/div&gt;&lt;div&gt;With very little practice, certain patterns should start to leap out as meaningful:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;In the image above the line of small circles on the vertical axis are unqualified opportunities.  Why haven't they been qualified yet?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Large circles in the left quadrants reflect opportunities where a lot of effort is going in without much progress.  Some of the "pies in the sky" may be worth persisting with (for a while), but the "poor" opps need to be quickly qualified across or dropped.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;For the individual salesperson this overview can be a powerful tool to help manage his pipeline.  For the manager, it allows her to see how the team as a whole is performing, and focus action where needed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Customization: Tailoring the process&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The bSelling Qualify Tool adds rigor and guidance to qualification by asking the salesperson to flip through virtual card-decks that rate all the important factors associated with an opportunity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NCmMYTi-30s/Sdv9RnXqN2I/AAAAAAAAAEg/fsex8TayAH0/s1600-h/qualify.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 270px;" src="http://2.bp.blogspot.com/_NCmMYTi-30s/Sdv9RnXqN2I/AAAAAAAAAEg/fsex8TayAH0/s320/qualify.PNG" alt="" id="BLOGGER_PHOTO_ID_5322125863736194914" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is now possible with bSelling premium to customize this standardized tool across a team or organization to meet a preferred methodology or to cater to specialized needs:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NCmMYTi-30s/SdwCW0lxWNI/AAAAAAAAAEo/jms-iqT1bcE/s1600-h/qualify+customization.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_NCmMYTi-30s/SdwCW0lxWNI/AAAAAAAAAEo/jms-iqT1bcE/s320/qualify+customization.PNG" alt="" id="BLOGGER_PHOTO_ID_5322131450742528210" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And here's an &lt;a href="http://dailykibitz.blogspot.com/2009/04/to-customize-is-cool.html"&gt;in-depth overview&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Sharing: Exporting to PowerPoint&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sales and account managers often need to report on key opportunities to executives and other non-sales colleagues.  To illustrate their understanding of an opportunity and to help their audience understand the client contacts' perspectives, bSelling premium now includes a convenient "export to PowerPoint" facility in the Diagnose Pain tool.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;When pitching to a customer, diagrams prepared in Present &amp;amp; Sell can be turned into a sequence of PowerPoint slides in the same way.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Conclusion&lt;/span&gt;&lt;/div&gt;&lt;div&gt;bSelling remains fun and friendly, but has grown more power-packed.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It blends bottom-up advantages (usefulness, simplicity, fun) with top-down virtues (overview, customizability) and communication (visualization, PowerPoint export).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We'll keep refining it, and can also further customize to meet more specialized needs.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6272747981880656126?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6272747981880656126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6272747981880656126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6272747981880656126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6272747981880656126'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/05/bselling-from-top-down-as-well-as.html' title='bSelling from the Top Down (and bottom up)'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NCmMYTi-30s/SgzWy7C4cZI/AAAAAAAAAFA/_jsSxGxe-lc/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-398398513220284732</id><published>2009-04-16T16:18:00.000-07:00</published><updated>2009-04-16T21:03:02.705-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='software culture'/><title type='text'>Fartlek development</title><content type='html'>The amusingly named &lt;a href="http://en.wikipedia.org/wiki/Fartlek"&gt;Fartlek training&lt;/a&gt; is a form of athletic training in which high intensity work and low intensity work are alternated in the course of each training session.  The two forms of work are complimentary in that they stress the you in different ways  (anaerobic and aerobically) and allow you a chance to recover.&lt;br /&gt;&lt;br /&gt;I think that this is a good model for software development in software start-ups.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Priority one&lt;/span&gt;: Build something that people want, fast&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The main risk in a software start-up is making something that people don't want.  So you want to find out whether your initial idea has merit, fast.  So -- if at all possible -- you build a small prototype, and test it out in the marketplace, fast. &lt;br /&gt;&lt;br /&gt;In order to satisfy the need for speed, you cut a few corners, and because it's small (and your team is good) you can get away with this approach (for now).&lt;br /&gt;&lt;br /&gt;If no-one wants your prototype, you scrap it, and you haven't wasted time on lots of process that was supposed to pay off in the long-run (because there is no long-run).&lt;br /&gt;&lt;br /&gt;On the other hand, if it the prototype is promising, you will learn from the market feedback how to make it better, and it will start to grow.  &lt;span style="font-weight: bold;"&gt;This is where it is critical to switch gears and slow down&lt;/span&gt; (at least for a while).  Because if you do not, you will find yourself in the realm of cowboy development, the bugs will start to bite, and the pace of development will drop as your team gradually spends more and more time debugging, less time developing, resulting in a drop of confidence -- "I don't want to quickly make this change because it might break something" -- and loss of tempo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Priority two&lt;/span&gt;: Restore quality (and sanity&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;The alternative is to switch modes.  &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;Fred Brooks&lt;/a&gt; said "build one to throw away", but at a minimum you should review what has been done to date and investigate and prioritize the very real risks of continuing with a prototype.  These might well include:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Customer or prospective customer loses data or has it corrupted&lt;/li&gt;&lt;li&gt;Customer or prospective customer experiences bugs, crashes, or loss of service&lt;/li&gt;&lt;li&gt;A crash or a bug during a demo&lt;/li&gt;&lt;li&gt;The software does not scale, so performance degrades over time&lt;/li&gt;&lt;li&gt;Development slows so that critical new features can not be delivered in a timely fashion&lt;/li&gt;&lt;/ol&gt;Improving the quality of the software process is what is needed for most of these, and many of the kinds of measures that help have largely been formalized in the Agile development processes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Pair programming&lt;/span&gt;: Two heads are better than one, plus it offers real time code reviews, mentoring, camaraderie and friendly competition, less web-surfing&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Test-driven development&lt;/span&gt;: Writing automated tests clarifies the design and as they build up offer an early warning system when a change breaks something unexpectedly (Design by Contract gives similar benefits)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Continuous integration&lt;/span&gt;: Frequently "checking-in" and automatically running the automated test-suite identifies incompatible changes made by different programmers or pairs sooner rather than later; saves you from merge hell&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Refactoring&lt;/span&gt;: By reviewing code, eliminating duplication, reducing coupling, and improving the use of abstraction, your software base will become more concise, readable and maintainable&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Short iterations / planning game&lt;/span&gt;: By maintaining a list of feature requests and bug-fixes that the developers estimate and the internal customer prioritizes (within a budget based on the amount of work accomplished in the previous iteration), a sustainable rhythm is established, and healthy prioritization is forced&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sustainable pace&lt;/span&gt;: Working more than an eight hour day / forty-hour week leads rapidly to damaging the code base, loss of morale, and bull sessions as people are present in body, but not in spirit -- avoid the "Death march" scenario&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Additionally, a &lt;span style="font-weight: bold;"&gt;design review&lt;/span&gt; will be needed to knock the existing architecture and code into shape, and tests will needed to be added retrospectively if you didn't practice test-driven development in the initial prototype phase.&lt;br /&gt;&lt;br /&gt;For a web-based service additional infrastructural elements and diagnostics should be reviewed and added.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;All of this is manageable as long as the prototype is small, but the longer these steps are delayed, the greater the costs that must be paid.&lt;/span&gt;  It's a lot like going into debt.  You not only have to repay the loan, but also the accumulated interest.  Some people call this &lt;a href="http://c2.com/cgi/wiki?DesignDebt"&gt;design debt&lt;/a&gt;.  (And the interest rates on design debt tend to be high.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;And then the cycle turns&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While making incremental changes continued agile iterations is probably the way to go, slow and steady (but not slowing down).  When the time comes to make a leap forward, knocking up a quick prototype is a great way to vary the routine, and makes business sense.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;Almost everyone who learns to program first experiences the joys of "cowboy development" on small personal projects, but when they "turn pro" or start working on larger projects they soon learn that it doesn't scale beyond what you can easily hold in your head.&lt;br /&gt;&lt;br /&gt;Some people think that up-front design and analysis will save the day, but this leads to waterfall with its 1/3 design, 1/3 development, 1/3 testing rule-of-thumb when done well.  But then you discover that the requirements were wrong (they always are), and another long iteration is required.&lt;br /&gt;&lt;br /&gt;Smart people rediscover short iterations, and lately these have been articulated as Agile Methods, and also include other ways to make the computer (e.g. automated tests) and human nature (e.g. pair programming) work effectively and more satisfactorily.  The cost is a bit of deferred gratification by having to do some things up front (e.g. writing tests, refactoring) that pay off over time.&lt;br /&gt;&lt;br /&gt;However, it would be wrong to say that an Agile approach is the best for everything, at every scale.  In particular, in knocking up a quick prototype one may well be justified in reverting to some of the cowboy practices for a short period.  Note that it is not compulsory to drop all the agile practices when doing so -- do what suits the situation.&lt;br /&gt;&lt;br /&gt;The tricky bits are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Not leaving it too long&lt;/li&gt;&lt;li&gt;Paying off the accumulated technical debt&lt;/li&gt;&lt;li&gt;Getting back into the discipline of following the practices&lt;/li&gt;&lt;li&gt;Combating the likely organizational pressure to continue at the previous pace!&lt;/li&gt;&lt;/ol&gt;So good luck with the fartlek development*, and let me know what you think.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*My esteemed colleague -- and former Olympian -- Ben Loft points out that &lt;a href="http://en.wikipedia.org/wiki/Interval_training"&gt;interval training&lt;/a&gt; may offer a better analogy, but the name isn't as memorable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-398398513220284732?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/398398513220284732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=398398513220284732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/398398513220284732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/398398513220284732'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/04/fartlek-development.html' title='Fartlek development'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1560115113787773435</id><published>2009-04-12T18:57:00.000-07:00</published><updated>2009-04-12T21:57:51.337-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sales'/><category scheme='http://www.blogger.com/atom/ns#' term='solution selling'/><title type='text'>Provocation-based Selling (and Provocative Writing)</title><content type='html'>Who doesn't love a controversy?  Want to get noticed?  Provoke!  Capture attention!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The trick is to follow up with something that hits the spot lest you alienate your suddenly alert audience.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One way to provoke attention is to insult a big-name.  In a recent article in the Harvard Business Review -- &lt;a href="http://hbr.harvardbusiness.org/2009/03/in-a-downturn-provoke-your-customers/ar/1"&gt;In a Downturn, Provoke Your Customers&lt;/a&gt; -- the authors (including Geoffrey "&lt;a href="http://www.amazon.com/Crossing-Chasm-Marketing-High-Tech-Mainstream/dp/0066620023"&gt;Crossing the Chasm&lt;/a&gt;" Moore) slam the generic notions of consultative selling and especially solution selling (as opposed to the more specific Consultative Selling and Solution Selling®) either through ignorance or in a straightforward grab for attention.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only problem -- as Keith Eades, CEO of SPI &lt;a href="http://solutionselling.wordpress.com/2009/04/09/reponse-to-harvard-business-review-article-on-provocative-selling/"&gt;correctly points out&lt;/a&gt; --  is that they have done so to a large extent by over-simplifying Solution Selling,  and  then  comparing their "new" approach to a whittled down husk: &lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;Whereas solution-selling salespeople listen for “pain points” that the customer can clearly articulate, provocation works best when it outlines a problem that the customer is experiencing but has not yet put a name to. -- from the article&lt;/blockquote&gt;But Solutions Selling has a powerful way to think about where your customer is at, before getting into "pain points":  &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Levels of Need*&lt;/span&gt;: &lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Latent need&lt;/span&gt;: Unaware of a need that could be satisfied by purchase (perhaps they are unaware that there's a problem, or in denial, or resigned to coping with the status quo)&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;In pain&lt;/span&gt;: Aware of the need ("in pain"), but unaware of how your offering can help&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Vision creation&lt;/span&gt;: The prospect has a vision or a "Solution", ideally including your offering. &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;A key part of Solutions Selling is to move the customer upward through these Levels of Need.  The article mis-characterizes Solution Selling as simply asking the prospect about their pain (i.e. jumping in at level 2 - In pain), while correctly pointing out that during a downturn many more people will tend to be at level 1 because they are doing their best to make-do with much-reduced budgets and discretionary funds.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A key part of "provocation-based selling" seems to be to provoke a response by forcefully articulating a problem that the customer has, get them to acknowledge it, and then make a bee-line to the person who has the authority to do something about it (and who can release funds to purchase).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is all good Solution Selling, just in slightly different terms.  In classic Solution Selling one would first try to stimulate the interest of a contact with a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Reference Story&lt;/span&gt;, typically describing a person in a similar situation to their current one and how you were able to help that person.  Hopefully the contact will respond by either confirming that (s)he has similar issues, or -- equally good -- say something like, "No, we don't have those problems.  This is what's really bugging me ...".  Either way, you are engaging and on your way to level 2.  While exploring the prospect's pain, you should also be finding out who else is affected (i.e. who else you need to speak to get a fuller organizational picture of the pains, and also who can authorize a sale), etc.   [I have a fuller summary of Solution Selling &lt;a href="http://dailykibitz.blogspot.com/2009/01/distillation-of-solution-selling.html"&gt;here&lt;/a&gt;.]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The authors of the HBR article have a good point to make: That during a downturn a forceful -- or provocative -- approach may be a good way to jolt prospects into thinking about what can be done to improve their business, including alerting them to problems that they may be reluctant to address.  They suggest a mixture of fear -- "if you don't do something you're doomed" -- and hope -- "but we can help you get through this".  This seems like a good approach, provided you have accurate information, and can pull it off without alienating your prospect by coming across as arrogant: "I know your problems better than you"!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So "props" to the authors of In a Downturn, ... for being provocative, and thereby garnering some attention for the important issue of jolting people out of latency during a downturn.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My guess is that the authors feigned ignorance of Solution Selling etc. to whip up controversy, and that's probably a good thing!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Austhink's add-on to SalesForce crm -- &lt;a href="http://sites.force.com/appexchange/apex/listingDetail?listingId=a0N300000016d1FEAQ"&gt;bSelling Opportunity Management&lt;/a&gt; -- augments SalesForce's contact information (which is a bit more Miller-Heiman-esque out-of-the-box) with a Level of Need field.  Naturally, we also do pain points!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1560115113787773435?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1560115113787773435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1560115113787773435' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1560115113787773435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1560115113787773435'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/04/provocation-based-selling-and.html' title='Provocation-based Selling (and Provocative Writing)'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2570014847222810571</id><published>2009-04-07T18:20:00.000-07:00</published><updated>2009-04-07T19:06:37.640-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bselling'/><category scheme='http://www.blogger.com/atom/ns#' term='Sales'/><category scheme='http://www.blogger.com/atom/ns#' term='salesforce'/><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>To Customize is Cool</title><content type='html'>It's cool to customize!  It practically has the word "customer" in it, so what's not to love?&lt;br /&gt;&lt;br /&gt;Seriously: When prospective customers see the Qualify tool -- part of Austhink's &lt;a href="http://sites.force.com/appexchange/apex/listingDetail?listingId=a0N300000016d1FEAQ"&gt;bSelling&lt;/a&gt; add-on to Salesforce crm  ...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NCmMYTi-30s/Sdv9RnXqN2I/AAAAAAAAAEg/fsex8TayAH0/s1600-h/qualify.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 270px;" src="http://2.bp.blogspot.com/_NCmMYTi-30s/Sdv9RnXqN2I/AAAAAAAAAEg/fsex8TayAH0/s320/qualify.PNG" alt="" id="BLOGGER_PHOTO_ID_5322125863736194914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;they say two things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Wow&lt;/span&gt;!&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Can I customize it&lt;/span&gt;?&lt;/li&gt;&lt;/ol&gt;The "Wow!" reaction is because here is a tool that &lt;span style="font-weight: bold;"&gt;really helps the salesperson &lt;/span&gt;with a vital but difficult task -- sales qualification -- in a &lt;span style="font-weight: bold;"&gt;fun &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;way&lt;/span&gt;.  It provides useful &lt;span style="font-weight: bold;"&gt;feedback&lt;/span&gt; -- an overall percentage, and sensible concrete ways to boost the score.  Ok: Most of the wow is because of the fun factor and groovy way it plays (like flipping through photos on a Mac).&lt;br /&gt;&lt;br /&gt;The second reaction -- the wish for customization -- is natural.   Although at Austhink we believe that the  &lt;span style="font-style: italic;"&gt;out-of-the-box&lt;/span&gt; system is quite generic, sales teams do of course vary in their terminology, types of customers, and overall slant sales.&lt;br /&gt;&lt;br /&gt;So, I recommend a suck it before you salt it approach:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Try out the generic version (that comes with the free version of bSelling) on a few opportunities to get the feel for the process.  Just pick a neutral "card" if a factor doesn't seem to apply.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make notes about where the terminology needs revision, which "factors" don't apply, and which (if any) are missing.&lt;/li&gt;&lt;li&gt;Upgrade to the premium version of bSelling and make use of our soon-to-be-released customize feature.&lt;/li&gt;&lt;li&gt;If you need extra help, we can arrange consultation!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The customize feature allows your company to change the wording, options, factors, and weightings -- i.e. everything -- of the Qualify tool to tailor it to fit your unique situation.  Just like the tool itself, it looks great,  is fun-to-use and  it has a game-like feel.  Here's a sneak peak:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NCmMYTi-30s/SdwCW0lxWNI/AAAAAAAAAEo/jms-iqT1bcE/s1600-h/qualify+customization.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://3.bp.blogspot.com/_NCmMYTi-30s/SdwCW0lxWNI/AAAAAAAAAEo/jms-iqT1bcE/s320/qualify+customization.PNG" alt="" id="BLOGGER_PHOTO_ID_5322131450742528210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Each line represents a deck of cards in the tool, and each block represents a single card.  The length of each line represents the weight of each factor. You just click on a box to edit some wording (shown), or click on an end box to stretch or squash a line (to make a factor more or less important compared to the others).  Other operations are similarly simple.&lt;br /&gt;&lt;br /&gt;By the way: If you think of the Qualify tool as a level in a game, the customization tool is like the level-designer that allows an obsessed user to design new game levels for their friends to play.  In this case, the customization tool allows the sales-manager to tweak (or totally revamp)  the qualification process to fit local conditions, and better monitor (and mentor) the sales team.&lt;br /&gt;&lt;br /&gt;We are about to trial the customization tool with a select group of beta-testers -- email me at dan@austhink.com  if you want to give it a whirl -- and the first version should be available in the next week or so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2570014847222810571?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2570014847222810571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2570014847222810571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2570014847222810571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2570014847222810571'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/04/to-customize-is-cool.html' title='To Customize is Cool'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NCmMYTi-30s/Sdv9RnXqN2I/AAAAAAAAAEg/fsex8TayAH0/s72-c/qualify.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1587746992776073711</id><published>2009-04-03T22:08:00.000-07:00</published><updated>2009-04-03T22:39:09.623-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acting'/><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='judaism'/><title type='text'>From Moses to Moses ...</title><content type='html'>"From Moses to Moses there was none like Moses".  The two Moses's of the quote are Moses the lawgiver -- he 0f the 10 commandments etc. --  and &lt;a href="http://en.wikipedia.org/wiki/Maimonides"&gt;Moses Maimonedes&lt;/a&gt; the greatest Jewish sage of the middle ages.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Loyal readers of this blog will remember that &lt;a href="http://dailykibitz.blogspot.com/2008/04/just-little-bit-proud.html"&gt;last year&lt;/a&gt; my son Jake portrayed the earlier Moses in the kindergarten Pesach (Passover) play:&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NCmMYTi-30s/SCFe62ycw1I/AAAAAAAAACE/TTiQVoA62iY/s1600-h/Jake+as+moses+cropped.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_NCmMYTi-30s/SCFe62ycw1I/AAAAAAAAACE/TTiQVoA62iY/s320/Jake+as+moses+cropped.jpg" alt="" id="BLOGGER_PHOTO_ID_5197539810194801490" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Jake as Moses&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Witnesses said that his manner and physical resemblance to the biblical Moses was uncanny, and it seemed it would be a long time before anyone would else would pull off such a convincing portrayal ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That was until Jake's little sister Ella put on the beard!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W079YQswWQw/SdbvT9gVBJI/AAAAAAAAAIY/i3Ejuik6hJs/s1600-h/Ella+as+Moses.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_W079YQswWQw/SdbvT9gVBJI/AAAAAAAAAIY/i3Ejuik6hJs/s320/Ella+as+Moses.jpg" alt="" id="BLOGGER_PHOTO_ID_5320703135991530642" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Ella as Moses&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apparently Ella was a little more tentative in her portrayal than Jake had been, but she is a year younger than he was when he took on the role.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nevertheless, I am again very proud indeed.  (And amused.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1587746992776073711?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1587746992776073711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1587746992776073711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1587746992776073711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1587746992776073711'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/04/from-moses-to-moses.html' title='From Moses to Moses ...'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NCmMYTi-30s/SCFe62ycw1I/AAAAAAAAACE/TTiQVoA62iY/s72-c/Jake+as+moses+cropped.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7477507479723665647</id><published>2009-03-15T14:10:00.000-07:00</published><updated>2009-03-15T16:13:46.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sales'/><category scheme='http://www.blogger.com/atom/ns#' term='austhink'/><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>First web-based product released: bSelling</title><content type='html'>Last week we -- Austhink Software -- released our first web-based product, &lt;a href="http://bcisive.austhink.com/solutions/bselling"&gt;bSelling Opportunity Management&lt;/a&gt;, an add-on application to the web-based &lt;a href="http://www.salesforce.com/"&gt;Salesforce CRM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Yay team!&lt;br /&gt;&lt;br /&gt;Here are some brief notes about the product (a visual tool to enhance the performance of sales teams), its placement (as an add-on to Salesforce CRM available through salesforce.com's AppExchange), and the development experience (using Adobe Flex + Django talking to Salesforce).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Product&lt;/span&gt;&lt;br /&gt;The best way to get a taste for this add-on, which helps the salesperson to better Qualify (i.e. estimate the percentage chance of closing the deal) , better understand the customer's pain(s), and ultimately pitch more effectively to the customer's needs -- is to check out the 2 minute (approx.) introductory video:&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;img style="width: 397px; height: 306px;" src="http://images.bcisive.austhink.com/bcisive/PlaybSellingDemo.png" title="Watch the bSelling demo" class="png" alt="Watch the bSelling demo" /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;bSelling video&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;For non-sales people, here's my &lt;a href="http://dailykibitz.blogspot.com/2009/01/distillation-of-solution-selling.html"&gt;distillation of Solution Selling&lt;/a&gt;, one of a family of consultative approaches to sales -- along with SPIN, Strategic and Consultative Selling -- that bSelling is intended to support.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Placement&lt;/span&gt;&lt;br /&gt;Austhink's Softwares previous products, &lt;a href="http://bcisive.austhink.com/"&gt;bCisive&lt;/a&gt; and &lt;a href="http://rationale.austhink.com/"&gt;Rationale&lt;/a&gt; were PC-based and intended to create new markets: Rationale for improving Critical Thinking in education, and bCisive for applying Visual Thinking to business.&lt;br /&gt;&lt;br /&gt;For our first web-offering we decided to pick a more targeted application -- consultative selling -- and apply our visual approach more narrowly.  This enabled us to go from "let's port bCisive to the web" (a daunting undertaking on account of the size of the pre-existing product) to "let's port the bits of bCisive that will help with consultative selling" (a smaller and more customer-centric) undertaking.&lt;br /&gt;&lt;br /&gt;We aimed from the outset to put the resulting application on Salesforce.com's &lt;a href="https://www.salesforce.com/appexchange/category_list.jsp?NavCode__c=a0130000006P6IoAAK-f8#top"&gt;AppExchange&lt;/a&gt;, as a way to make bSelling visible to our chosen market segment, and to offer easy integration with the leading web-based CRM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Development Experience&lt;/span&gt;&lt;br /&gt;We accomplished this with a team of 3 in just over two months, admittedly making use of some initial work on a web-port from last year, plus our accumulated experience from bCisive, Rationale and some earlier non-commercial web-based projects, most notably Aaron's side-project, &lt;a href="http://www.pathofahero.com/"&gt;Path of a Hero&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We found that Adobe Flex / AS3  gave us the graphic power (and portability across browsers) that we wanted for the front-end, with our architecture hanging off a slightly souped-up version of the &lt;a href="http://puremvc.org/"&gt;PureMVC&lt;/a&gt; framework.  We use Django / Python  / MySQL for the back-end and use AMF3 / &lt;a href="http://pyamf.org/"&gt;PyAMF&lt;/a&gt; to get fast communication between the back and front-ends.&lt;br /&gt;&lt;br /&gt;The big unknown for us was integration with Salesforce CRM.  It turns out that their APIs and docs are pretty good, and we were able to embed our app as a web-page in their S-Control.&lt;br /&gt;&lt;br /&gt;Now, it is possible to build apps entirely on their force.com platform, but we chose not to because:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It required a steeper learning curve&lt;/li&gt;&lt;li&gt;We had a pre-existing technology investment&lt;/li&gt;&lt;li&gt;It would couple us completely to their platform&lt;/li&gt;&lt;/ul&gt;On the negative side this meant that we had to subject ourselves to a nerve-wracking &lt;span style="font-weight: bold;"&gt;security review&lt;/span&gt;.  This involved submitting our organization's written policies plus go under attack from their review team.  It was certainly "an experience", a bit liking going back to University for another exam, but their liaison was helpful in guiding us through the process, and we achieved a provisional pass first time (much relief).  &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;One note&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;for&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;start-ups&lt;/span&gt;: There is normally a $US5000 application fee for the review (annual!).  The two ways to waive this are to develop directly on the force.com platform (i.e. inside the Salesforce sandbox), or to supply a free version of your app.  We went with the free version.&lt;br /&gt;&lt;br /&gt;Compared to the security review, the &lt;span style="font-weight: bold;"&gt;final review&lt;/span&gt; was less demanding.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Future&lt;/span&gt;&lt;br /&gt;We are putting the finishing touches on an "export to PowerPoint" feature for the paid version, so that a salesperson can grab some snappy visual slides to supplement customer presentations.&lt;br /&gt;&lt;br /&gt;Naturally  getting the word out is paramount -- thanks to AppExchange we've already had some people checking out the video and installing bSelling-- and we look forward to responding to customer feedback with further refinements.  To this end we have set-up &lt;a href="http://uservoice.com/"&gt;UserVoice&lt;/a&gt; to help out with this.  The AppExchange infrastructure requires people to leave details, so we will also follow up (selectively and politely) with some of the early adopters to find out worked and what didn't.&lt;br /&gt;&lt;br /&gt;Beyond bSelling on Salesforce we are also look at integrating it with other online platforms (&lt;a href="http://www.sugarcrm.com/crm/"&gt;SugarCRM&lt;/a&gt; is an obvious candidate).&lt;br /&gt;&lt;br /&gt;And beyond that lie other applications in Sales and other business verticals.  We aim to apply our skills and technology to create other "Enterprise 2.0" apps, but in these -- ahem -- challenging times we need to be strategic about picking off targets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7477507479723665647?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7477507479723665647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7477507479723665647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7477507479723665647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7477507479723665647'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/03/first-web-based-product-released.html' title='First web-based product released: bSelling'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5175934873782024508</id><published>2009-03-13T15:54:00.000-07:00</published><updated>2009-03-13T16:24:36.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><title type='text'>Hooray for Captain Balding!  And Captain Underpants!</title><content type='html'>Having recently started school, my son Jake reports that he spends many a happy recess playing super-heroes with his friend, Max:&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Which super-heroes do you play?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"I am always Captain Balding and Max is always Captain Underpants.", says Jake.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Intriguing.  &lt;span class="Apple-style-span" style="font-style: italic;"&gt;What is Captain Balding's super-power?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"We have different powers every time, but one power we always have is super-phones."&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;It all sounds marvelously imaginative, and they are fixated on these characters.  But where do they come from?  My best guess is that the Captain Balding character originated as a kind of a cross between me -- bald and apt to make my children address me as "Captain Daddy" -- and Groucho Marx's &lt;a href="http://en.wikipedia.org/wiki/Captain_Spaulding_(Groucho_Marx)"&gt;Captain Spaulding&lt;/a&gt; in Animal Crackers:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jCvz8y_DUSY&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/jCvz8y_DUSY&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Song: Hooray for Captain Spaulding (not Balding)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Now, as for Captain Balding's great partner in crime-fighting, &lt;a href="http://en.wikipedia.org/wiki/Captain_Underpants"&gt;Captain Underpants&lt;/a&gt;, a little research reveals that he is a legit. super-hero after all:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3jPLGgaHMwo&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/3jPLGgaHMwo&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Captain Underpants rap&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;With these two heroes to protect us, we simple townsfolk can again sleep safe at night ... &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;... I think.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5175934873782024508?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5175934873782024508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5175934873782024508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5175934873782024508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5175934873782024508'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/03/hooray-for-captain-balding-and-captain.html' title='Hooray for Captain Balding!  And Captain Underpants!'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3757307984123441729</id><published>2009-03-11T21:31:00.000-07:00</published><updated>2009-03-11T22:00:19.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet culture'/><title type='text'>This Prager is a bigger nerd than me</title><content type='html'>We share the same initials and the same surname, but &lt;a href="http://en.wikipedia.org/wiki/David_Prager"&gt;David Prager&lt;/a&gt; is (clearly) a bigger nerd:&lt;br /&gt;&lt;blockquote&gt;When a stranger broke into Silicon Valley executive David Prager's house yesterday, he did not call police or reach for a gun - he logged on to Twitter and set up a live video stream.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.smh.com.au/articles/2009/03/12/1236447360700.html"&gt;Read on ...&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;So there you go: Another D. Prager -- other than &lt;a href="http://en.wikipedia.org/wiki/Dennis_Prager"&gt;Dennis&lt;/a&gt; -- in the news.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3757307984123441729?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3757307984123441729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3757307984123441729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3757307984123441729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3757307984123441729'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/03/this-prager-is-bigger-nerd-than-me.html' title='This Prager is a bigger nerd than me'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6141632906107314558</id><published>2009-02-20T17:21:00.001-08:00</published><updated>2009-02-20T17:28:17.751-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><title type='text'>Three things that my children have learned</title><content type='html'>Just for fun I asked my son, who has just started school, what three things he has learned at school.  Jake's (very definite) response:&lt;div&gt;&lt;ol&gt;&lt;li&gt;Respect,&lt;/li&gt;&lt;li&gt;Sport, "and finally:"&lt;/li&gt;&lt;li&gt;Italian.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;I then asked a similar question of my daughter, who has recently commenced kindergarten.  Ella's reply:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;How to draw,&lt;/li&gt;&lt;li&gt;That [another child] is not my friend, and&lt;/li&gt;&lt;li&gt;That I do not know how to draw.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6141632906107314558?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6141632906107314558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6141632906107314558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6141632906107314558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6141632906107314558'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/02/three-things-that-my-children-have.html' title='Three things that my children have learned'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6810871214269717243</id><published>2009-02-18T14:05:00.000-08:00</published><updated>2009-02-20T17:42:40.663-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional programming'/><category scheme='http://www.blogger.com/atom/ns#' term='htdp'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy of programming'/><title type='text'>HtDP for the experienced programmer</title><content type='html'>I am a fan of Scheme (a programming language for the soul) and &lt;a href="http://mitpress.mit.edu/sicp/"&gt;SICP&lt;/a&gt; "the greatest book on programming ever written", but my hat goes off to the creators of DrScheme, a great interactive environment for the beginner and experienced programmer alike.&lt;br /&gt;&lt;br /&gt;The other night I swallowed my pride and started to work through &lt;a href="http://htdp.org/"&gt;HtDP&lt;/a&gt; (How to Design Programs), the &lt;a href="httphttp://www.plt-scheme.org/"&gt;PLT Scheme&lt;/a&gt; gang's reaction to the fact that SICP (which came from MIT) while great for the suitably talented individual does not by-and-large work for the mainstream.  In this book they explicitly teach &lt;span style="font-weight: bold;"&gt;program design&lt;/span&gt;, a systematic approach to thinking and problem-solving that it seems only a few people get by the more traditional osmotic process.&lt;br /&gt;&lt;br /&gt;HtDP is covers a great range.  Although principally geared to college level, it can be taught in high schools (at a slower pace), and can teach most experienced practitioners more than a thing or two.&lt;br /&gt;&lt;br /&gt;Additionally, the people on the PLT Scheme mailing list are incredibly friendly and supportive.  Here's what &lt;a href="http://en.wikipedia.org/wiki/Matthias_Felleisen"&gt;Matthias Felleisen&lt;/a&gt;, first author of HtDP (among many other things) wrote when I mentioned that I was starting to work through HtDP, but was having difficulty restraining myself from skipping ahead:&lt;br /&gt;&lt;blockquote  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;If you are an experienced programmer, you should read HtDP like this:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Read the sections whose title starts with "Designing ...."&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;  Also read the "iterative refinement" sections&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;  Pick five exercises in the preceding and/or follow-up section and solve them&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt; according to the recipe&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;[my emphasis]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;  Unless you're stuck move forward&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;  Try to understand the "symmetry" between data definitions and templates&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;I expect that somewhere around late part II, you will slow down. You may pick up real reading as of part III, though some may make it thru III and only "stutter" in IV.&lt;br /&gt;&lt;br /&gt;Also:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;  Use check-expect to express your examples/tests&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;  Avoid draw.ss exercises, replace them with world.ss but that's a non-trivial switch&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;And holler if you are having trouble -- Matthias &lt;/span&gt;&lt;/blockquote&gt;In short: Great tools, great teaching materials, supportive and experienced community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6810871214269717243?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6810871214269717243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6810871214269717243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6810871214269717243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6810871214269717243'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/02/htdp-for-experienced-programmer.html' title='HtDP for the experienced programmer'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5316659958815238243</id><published>2009-02-18T13:37:00.001-08:00</published><updated>2010-08-17T19:58:20.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Software Product Design and the Collaboration Process</title><content type='html'>In the last few months my team and I at Austhink software have had a wonderful graphic designer -- David Urbinder -- consult on our products.  Much more than design icons and images, collaborating with David has led to improvements in overall visual design, and more deeply into dynamic behavior (interaction design) and consequently the overall usability and appeal of our products. &lt;br /&gt;&lt;br /&gt;Working with someone from a complementary design background helps to trigger creative sparks.  David has pointed me to this &lt;a href="http://www.cooper.com/journal/2008/11/a_unified_approach_to_design.html"&gt;article&lt;/a&gt; by Nate Fortin about the non-separability of design into different disciplines in Cooper Journal.  Cooper Journal is hosted by &lt;a href="http://www.cooper.com/"&gt;Cooper Design&lt;/a&gt;, whose principal Alan "Father of Visual Basic" Cooper wrote the influential book &lt;a href="http://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/0470084111"&gt;About Face&lt;/a&gt;, and the provocative and important &lt;a href="http://www.amazon.com/Inmates-Are-Running-Asylum-Products/dp/0672326140/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234993652&amp;amp;sr=1-2"&gt;The Inmates are Running the Asylum&lt;/a&gt;, both of which I also highly recommend.&lt;br /&gt;&lt;br /&gt;One of the issues that we are grappling with is how best to engage expert outside design consultants like David.  At the moment we are doing a blend of some consulting time, plus directed tasks, spread out over time.  The benefit of the spreading out is that we get the benefit of David's creative input early, when it can have a formative effect, and guidance at later stages too as the product becomes more "locked down".  Coordinating our schedules is a "fun" part of this approach, and is of course more challenging than just employing him for confined blocks.&lt;br /&gt;&lt;br /&gt;Finally, if you want to commission David, I would love to link to his web-site, but I believe that it is not ready for public consumption just yet (hint, hint ;-).  In the meantime, David can be contacted on email at &lt;span style="font-weight: bold;"&gt;urbinder@gmail.com&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5316659958815238243?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5316659958815238243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5316659958815238243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5316659958815238243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5316659958815238243'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/02/software-product-design-and.html' title='Software Product Design and the Collaboration Process'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3608660735868583684</id><published>2009-02-16T15:14:00.000-08:00</published><updated>2009-02-16T15:19:28.393-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='austhink'/><title type='text'>New tag line?</title><content type='html'>The problem (from my &lt;a href="http://dailykibitz.blogspot.com/2009/02/mullenwegs-12-rules-for-getting-from-1.html"&gt;last post&lt;/a&gt;): Get our draft mission statement:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;We use our skills in software, game design and visual animation to make our customers' business applications more fun (and much more effective).&lt;/blockquote&gt;down to a snappy under-five-words tag-line.&lt;br /&gt;&lt;br /&gt;Here is an unfiltered  list that I came up with while sitting through a talk on "cloud computing":&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make work fun&lt;/li&gt;&lt;li&gt;Make work visual and fun&lt;/li&gt;&lt;li&gt;Make work fun and visual&lt;/li&gt;&lt;li&gt;Work as a game&lt;/li&gt;&lt;li&gt;Game the system&lt;/li&gt;&lt;li&gt;Games that work&lt;/li&gt;&lt;li&gt;Turn on your brain&lt;/li&gt;&lt;li&gt;Work meets play&lt;/li&gt;&lt;li&gt;Smart play&lt;/li&gt;&lt;li&gt;Intelligent play&lt;/li&gt;&lt;li&gt;Play smart; work smarter&lt;/li&gt;&lt;li&gt;bFun. bSmart.&lt;/li&gt;&lt;/ul&gt;More ideas?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3608660735868583684?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3608660735868583684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3608660735868583684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3608660735868583684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3608660735868583684'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/02/new-tag-line.html' title='New tag line?'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-327797361468517235</id><published>2009-02-15T15:12:00.000-08:00</published><updated>2009-02-15T15:22:24.553-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software culture'/><title type='text'>Mullenweg's 12 rules for getting from 1 to 100,000 users</title><content type='html'>Matt "Wordpress, Akismet, Ping-o-matic" Mullenweg has &lt;a href="http://raincitystudios.com/blogs-and-pods/matt-mullenweg-scaling-for-your-first-100k-users"&gt;12 rules for getting to a large number of users&lt;/a&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You have to be the most passionate person involved.&lt;/li&gt;&lt;li&gt;Get off the computer - the act of writing things down on paper frees the mind, allows for the juices to really flow.&lt;/li&gt;&lt;li&gt;Obsess about the details, down to the space between two letters.&lt;/li&gt;&lt;li&gt; Do your own support. You have to be able to feel the pain of your users. Document everything. Make it as easy as possible for your users to contact you.&lt;/li&gt;&lt;li&gt; Blog every step of the way. Keep all of your users in the loop at all times - they will love you. Communicate with them and put them in the driver's seat.&lt;/li&gt;&lt;li&gt;Have a great tagline. If you can't describe what you are doing in less than 5 words, edit it, shave it down.&lt;/li&gt;&lt;li&gt; Frame everything you're talking about in a context for your users. What are you going to do for them?&lt;/li&gt;&lt;li&gt; Get out of version 1.0 as fast as possible. Most people make their successes on something different from where they started. Be flexible. User feedback is the most valuable asset. Don't let yourself be too led by your first users. Listen to the silent majority. Keep the majority in mind.&lt;/li&gt;&lt;li&gt;Track yourself. &lt;/li&gt;&lt;li&gt; Know what to do if you are successful.&lt;/li&gt;&lt;li&gt; Start strong, end strong. People don't often remember what was in the middle.&lt;/li&gt;&lt;li&gt;Be a pain killer, not a vitamin.&lt;/li&gt;&lt;/ol&gt;The 46-minute &lt;a href="http://www.baychi.org/calendar/20060808a/#2"&gt;podcast&lt;/a&gt; of Matt's talk.&lt;br /&gt;&lt;br /&gt;Excellent food for thought.  One that caught my eye was #6.  The problem: Get the shiny draft mission statement down to a snappy under-five-words tag-line.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-327797361468517235?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/327797361468517235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=327797361468517235' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/327797361468517235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/327797361468517235'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/02/mullenwegs-12-rules-for-getting-from-1.html' title='Mullenweg&apos;s 12 rules for getting from 1 to 100,000 users'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6105341477288705652</id><published>2009-02-10T18:18:00.000-08:00</published><updated>2009-02-10T18:19:10.178-08:00</updated><title type='text'>Victorian bushfires: A personal appeal</title><content type='html'>Unprecedented &lt;a href="http://news.google.com.au/news?q=victorian+bushfires+2009&amp;amp;oe=utf-8&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;hl=en&amp;amp;ei=4TOSSeKJPIiO6gPOkKW4AQ&amp;amp;sa=X&amp;amp;oi=news_group&amp;amp;resnum=1&amp;amp;ct=title"&gt;bushfires&lt;/a&gt; have affected my home state of Victoria, Australia, since last Saturday. I live in the capital city, Melbourne which has been largely unaffected, but like almost everyone else I have friends and family who have had narrow escapes.&lt;br /&gt;&lt;br /&gt;Unfortunately, many have not been so lucky. Over one-hundred-and-eighty people are confirmed dead with estimates that this will rise to over 300.&lt;br /&gt;&lt;br /&gt;Today I was saddened and shaken by the news that a family that I know -- a mum, a dad and two children (only a few years older then my own) -- perished while defending their home.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;What to do?&lt;/span&gt;&lt;br /&gt;Like most Victorians we are donating money, in our case through the &lt;a href="http://www.redcross.org.au/default.asp"&gt;Red Cross Bushfire Appeal&lt;/a&gt;.  In addition Andi is &lt;a href="http://patchandi.blogspot.com/2009/02/bushfire-appeal-crafters-unite.html"&gt;donating patchwork quilts&lt;/a&gt; to the destitute.  We are looking into other ways that we can help.&lt;br /&gt;&lt;br /&gt;I urge all Australians -- especially Victorians -- to donate generously, and if possible to also help by donating goods, personally volunteering, and offering shelter to those rendered homeless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6105341477288705652?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6105341477288705652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6105341477288705652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6105341477288705652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6105341477288705652'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/02/victorian-bushfires-personal-appeal.html' title='Victorian bushfires: A personal appeal'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2332414888409656553</id><published>2009-02-09T13:23:00.000-08:00</published><updated>2009-02-09T13:35:25.353-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><title type='text'>My son the vigilante</title><content type='html'>In the round-up to Jake's &lt;a href="http://patchandi.blogspot.com/2009/02/first.html"&gt;first week at school&lt;/a&gt;, when asked about his day, Jake said in passing:&lt;br /&gt;&lt;blockquote&gt;"I had to wrestle one boy, to stop him from being mean to another child."&lt;br /&gt;&lt;/blockquote&gt;Further questioning failed to yield meaningful elaboration.  In the absence of calls from the school I guess we'll just have to assume (hope?) that Jake was on the side of the angels.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zZwIaqzPeyY/SYeqB8DFn5I/AAAAAAAAAyg/xixhZqSSJxs/s1600-h/Kinder+boy+2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_zZwIaqzPeyY/SYeqB8DFn5I/AAAAAAAAAyg/xixhZqSSJxs/s400/Kinder+boy+2.jpg" alt="" id="BLOGGER_PHOTO_ID_5298390436900347794" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Shall we learn, or wrassle?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So to any bullies reading this, remember: "Don't mess with red".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2332414888409656553?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2332414888409656553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2332414888409656553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2332414888409656553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2332414888409656553'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/02/my-son-vigilante.html' title='My son the vigilante'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zZwIaqzPeyY/SYeqB8DFn5I/AAAAAAAAAyg/xixhZqSSJxs/s72-c/Kinder+boy+2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3652579275152224657</id><published>2009-01-28T13:38:00.000-08:00</published><updated>2009-01-28T13:52:11.536-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interviewing'/><title type='text'>Great interview question</title><content type='html'>&lt;a href="http://www.globalnerdy.com/2009/01/28/the-interview-question-you-should-always-ask/"&gt;This article&lt;/a&gt; suggests that you should &lt;span style="font-weight: bold;"&gt;always &lt;/span&gt;ask&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;"What do you do in your spare time?"&lt;/blockquote&gt;since it tells you a lot about what the candidate is passionate about.&lt;br /&gt;&lt;br /&gt;Now, I have been asking this sort of question in social settings because I am not a great smalltalker -- although I'd like to learn one day ;-)  -- and usually asking that question (or what's your passion or hobby) get's people engaged and open up.  Unfortunately some people are very obsessional and will launch into long monologues at the sniff of such an invitation, in which case it's time for me to interrupt, excuse myself and go and get another drink (especially in this heat).&lt;br /&gt;&lt;br /&gt;Anyway, while I think it's an interesting question, I am not sure that it is that easy to interpret the answers.  I would suggest supplementing it with a follow-up when there is no obvious connection:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;"What have you learned from full contact macrame [or whatever] that relates to your day-job?&lt;/span&gt;"&lt;br /&gt;&lt;/blockquote&gt;Let the interviewee do the hard work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3652579275152224657?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3652579275152224657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3652579275152224657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3652579275152224657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3652579275152224657'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/01/great-interview-question.html' title='Great interview question'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5856390784532617324</id><published>2009-01-28T13:19:00.000-08:00</published><updated>2009-01-28T13:28:33.942-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming languages'/><title type='text'>Truth in Parody</title><content type='html'>If you can't decide whether something is a conspiracy or a stuff-up, assume a stuff-up.&lt;br /&gt;&lt;br /&gt;But often the conspiracy theory is much funnier, and just rings truer.  Witness this &lt;a href="http://odgaard.org/jeod/funny/interview.html"&gt;spoof interview&lt;/a&gt; with Bjarne Stroustrup, creator of the C++ programming language.  Snippet :&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;span style="font-weight: bold;"&gt;Bjarne: &lt;/span&gt;Well, one day, when I was sitting in my office, I thought of this little scheme, which would redress the balance a little.  I thought 'I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers?&lt;/blockquote&gt;Gold.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5856390784532617324?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5856390784532617324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5856390784532617324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5856390784532617324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5856390784532617324'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/01/truth-in-parody.html' title='Truth in Parody'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8120847811531257991</id><published>2009-01-20T16:46:00.000-08:00</published><updated>2009-02-01T17:45:41.186-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sales'/><title type='text'>Distillation of Solution Selling</title><content type='html'>A few months ago we did a training course on &lt;a href="http://en.wikipedia.org/wiki/Solution_selling"&gt;Solution Selling&lt;/a&gt;, and yesterday I bought &lt;a href="http://www.amazon.com/Solution-Selling-Creating-Difficult-Markets/dp/0786303158"&gt;the book&lt;/a&gt;. After reading the introduction -- a bit more to go! -- thought that it would be a useful exercise to try to describe its essence in my own words:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Origins&lt;/span&gt;&lt;br /&gt;Solutions Selling is a codification of smart sales practices by &lt;a href="http://www.mikebosworth.com/index.asp?page=home"&gt;Mike Bosworth&lt;/a&gt; dating back to 1983.  Originally Bosworth went straight from College to pursue a career in the technical support at Xerox corp., before it was suggested that he try his hand at sales, which he did (at first reluctantly). &lt;a href="http://www.amazon.com/Solution-Selling-Creating-Difficult-Markets/dp/0786303158"&gt;The book&lt;/a&gt; was published in 1995.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;A Consultative Approach&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Rather than foist your product on an unwilling (or even willing) prospect the Solutions Selling approach encourages you take the buyer's perspective&lt;/span&gt; and work with him or her in a non-pitchy way.  By the end of the process a decision to buy should be a "no-brainer":&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the customer should feel ownership of the resulting solution&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the value should be evident to the customer how the purchase leads to enhanced capabilities&lt;/li&gt;&lt;li&gt;these enhancements should be quantifiable, so that the purchase price is justified to other people in the customer's organization&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the customer should feel personally empowered by the experience and the result&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the personal relationship with the salesperson should be perceived as positive&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Applicability&lt;/span&gt;&lt;br /&gt;Solution selling lends itself particularly well to large complex offerings.  For example&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Service and product combination&lt;/li&gt;&lt;li&gt;When you compete on &lt;span style="font-weight: bold;"&gt;customization &lt;/span&gt;and/or &lt;span style="font-weight: bold;"&gt;integration&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;However, the principles can be applied on smaller scales as well, exercising judgment about how much and which parts of the process to apply.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Theory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Let's divide prospective customers into groups / stages:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Not in target market&lt;/span&gt;: No need for your offering(s).&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Latent need&lt;/span&gt;: Not aware of a need that could be satisfied by purchase&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;In pain&lt;/span&gt;: Aware of the need ("in pain"), but unaware of how your offering can help&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Vision creation: &lt;/span&gt;The prospect has a vision or a "Solution", ideally including your offering&lt;/li&gt;&lt;/ol&gt;The key is to be aware of where the prospect is between steps two-to-four, and not get out-of-synch. with the prospect.  Classic example: There's no point trying to tell someone that they need your product if they don't perceive it that way.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Examples&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If the prospect is in group 1, go after someone else rather than try to sell them something they simply don't need.  Better to steer them in the right direction and build trust and respect for the longer term.&lt;/li&gt;&lt;li&gt;If the prospect is in group two, use appropriate questioning to get more clarity, but also to move the prospect toward a clear perception that they have a real need (which would move them into group 3)&lt;/li&gt;&lt;li&gt;Quantify the pain, find out who else in the client organization is affected (and go talk to them), find out who has the power to buy, find out which hypothetical capabilities would enable them to address their pain&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Two possibilities: They are already heavily leaning towards a competing vendor's vision / offering (you need to realize this, and use FUD to un-sell them and get them to come over to your vision -- "re-engineering"), or use what was learned previously to put forward a jointly-developed vision that they know will give them real, quantifiable value.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;Application&lt;/span&gt;&lt;br /&gt;The actual Solutions Selling methodology explicitly fleshes out how to do it!&lt;br /&gt;&lt;br /&gt;It includes lots of advice and tools including a detailed and distinctive&lt;a href="http://solutionselling.wordpress.com/2008/10/07/do-you-9-block/"&gt; nine-block vision processing model&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Challenges in putting it into practice&lt;/span&gt;&lt;br /&gt;Naturally, Solutions Selling is not a panacea (silver-bullet):&lt;br /&gt;&lt;br /&gt;In a freely available McKinsey &amp;amp; Co. report (registration required), &lt;a href="http://jobfunctions.bnet.com/abstract.aspx?docid=160414"&gt;Solutions Selling: Is the pain worth the gain?&lt;/a&gt;, the following points are made:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Unfortunately, our discussions with over 60 solutions sellers suggest that three out of four companies selling solutions fail to see sustainable economic impact.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;They suggest that some possible keys to getting Solutions Selling to work well (&lt;span style="font-weight: bold;"&gt;my emphasis&lt;/span&gt;):&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;First, you have to understand how a solution is positioned in terms of two key variables, &lt;span style="font-weight: bold;"&gt;customization &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;integration&lt;/span&gt;.  This positioning drives the basis of your competitive advantage and - most crucially -the "pain/gain" trade-offs you need to understand.&lt;br /&gt;&lt;br /&gt;Then, you have to execute quite differently from a standard product-based go-to-market model in &lt;span style="font-weight: bold;"&gt;at least the first two&lt;/span&gt; - and preferably all - of five key dimensions:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li style="font-style: italic;"&gt;Create distinctive solutions value propositions using customer business metrics, not product price/performance metrics.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Radically change the selling approach, and if necessary, the sales talent.&lt;br /&gt;&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Price solutions based on total business value delivered, not component features.&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Align the entire organization, not just sales, with the solutions opportunity.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Maintain control of all aspects of implementation to ensure end-to-end value delivery.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Solutions selling is not for everyone.  But for those who understand and can implement these imperatives, there is tremendous upside.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Comment&lt;/span&gt;: The essential dimensions, one and two,  on my reading amount simply to properly applying certain parts of Solutions Selling properly (as distinct, I suppose, from paying lip-service).&lt;br /&gt;&lt;br /&gt;However, this may not always be simple.  The report suggests that on average 2/3 of salespeople with a background in product-centered sales are unable to successfully make the shift to Solutions Selling.  They recommend that "stars" be recruited from other areas, suggesting that star-sellers are either:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Already doing things similar to Solutions Selling (so the shift is smaller),&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Are more adaptable than regular salespeople in terms of trying a different approach, or&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;Will be successful independent of the methodological approach adopted by the sales-team!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;Solutions Selling is a consultative sales methodology that reminds me a bit of the &lt;a href="http://www.amazon.com/Getting-Yes-Negotiating-Agreement-Without/dp/0395631246/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1232509477&amp;amp;sr=1-1"&gt;Getting to Yes&lt;/a&gt; school of negotiation in that it aims to move away from negative relations between the two parties (e.g. adversarial, distrust, fear) towards cooperative problem-solving to seek out win-wins.&lt;br /&gt;&lt;br /&gt;It has repercussions for the individual salesperson in that it encourages a specific systematic approach, but promises improvements in:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;efficiently deciding which opportunities to pursue&lt;/li&gt;&lt;li&gt;improved client engagement&lt;/li&gt;&lt;li&gt;better professional relationships and reputation&lt;/li&gt;&lt;/ul&gt;leading to conversion-rate, sales figures and referrals.  For the organizations that successfully embrace it, better sales performance is anticipated, but the following are needed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Suitable organizational alignment with suitable offerings and pricing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sales and other staff to execute on the approach (or at least most of it)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;Granted organizational alignment, it stands to reason that certain organizational initiatives can increase the likelihood of individual and company-wide success when adopting Solutions Selling (and similar approaches):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Training&lt;/li&gt;&lt;li&gt;Mentoring&lt;/li&gt;&lt;li&gt;Recruiting&lt;/li&gt;&lt;li&gt;Technological support (tools that make the tasks easier, help apply essential parts of the methodology appropriately)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8120847811531257991?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8120847811531257991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8120847811531257991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8120847811531257991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8120847811531257991'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/01/distillation-of-solution-selling.html' title='Distillation of Solution Selling'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5747925127453116366</id><published>2009-01-20T16:01:00.000-08:00</published><updated>2009-01-20T16:46:29.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy of programming'/><title type='text'>Inspiration</title><content type='html'>Bob Franklin, who programmed up the first electronic spreadsheet, VisiCalc, in 1978 working with Dan Bricklin -- whose idea it was --  has been &lt;a href="http://www.frankston.com/public/?name=implementingVisicalc"&gt;writing up the history&lt;/a&gt;.  I found the following inspirational and salutory.  How to build a software product:&lt;br /&gt;&lt;h2&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;h2&gt;Design Principles&lt;/h2&gt;           &lt;p&gt;VisiCalc was a product, not a program. Decisions were made with the product in  mind and, to the extent possible the programming was towards this end. In practice  it was more complicated as we were designing against the limitations of the personal  computers, price point and, most important, what the user could understand.&lt;/p&gt;           &lt;p&gt;The goal was to give the user a conceptual model which was unsurprising -- it  was called the principle of least surprise. We were illusionists synthesizing an  experience. Our model was the spreadsheet -- a simple paper grid that would be laid  out on a table. The paper grid provided an organizing metaphor for a working with  series of numbers. While the spreadsheet is organized we also had the back-of-envelope  model which treated any surface as a scratch pad for working out ideas. Since we  were used to working with powerful computers without worry about the clock running,  we already had the experience of focusing on the users needs rather than the computers  needs.&lt;/p&gt;           &lt;p&gt;The ability for Dan and I to work as a team was crucial. While he could've written  the program, the fact that he wasn't gave him the freedom to focus on what the program  should do rather than how to do it. I could appreciate his reasons and would eventually  accept that I had to change code that I had labored over. We were able to find ways  to take advantage of the limited space available for the program in deciding what  features to include or not include.&lt;/p&gt;           &lt;p&gt;The original version put the entry area at the bottom of the screen. By playing  with this simple prototype Dan found that it was better to put the entry area at  the top of the screen and I made the change to the evolving program.&lt;/p&gt;           &lt;p&gt;In addition to prototyping, Dan put together a reference card for users. If we  couldn't figure out how to explain a feature on the reference card we would change  the program. The original method for copying formulas was too complicated so we  just changed the design rather than try to explain it.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;The more things change, the more they stay the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5747925127453116366?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5747925127453116366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5747925127453116366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5747925127453116366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5747925127453116366'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/01/inspiration.html' title='Inspiration'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1715925570515293166</id><published>2009-01-14T15:25:00.000-08:00</published><updated>2009-01-14T15:30:42.600-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gambling'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>Understanding the Financial Crisis</title><content type='html'>Here's a &lt;a href="http://www.semyon.com/crisis.html"&gt;readable explanation&lt;/a&gt; of the Financial Crisis as explained by a former president of the MIT Black-jack team, in terms of &lt;a href="http://en.wikipedia.org/wiki/Martingale_%28betting_system%29"&gt;martingale&lt;/a&gt; strategies, reward systems, and self-deception.&lt;span class="comhead"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1715925570515293166?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1715925570515293166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1715925570515293166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1715925570515293166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1715925570515293166'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/01/understanding-financial-crisis.html' title='Understanding the Financial Crisis'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7757443058696804352</id><published>2009-01-14T09:25:00.000-08:00</published><updated>2009-01-14T09:51:48.412-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>Kids Rule</title><content type='html'>Over the holidays we gave Ella her own room (formerly the "play room"), and redecorated both &lt;a href="http://dailykibitz.blogspot.com/2008/06/where-did-red-hair-come-from.html"&gt;her and Jake&lt;/a&gt;'s rooms in the process.  They didn't really want to be separated, but were appeased when it was pointed out that they could visit each other for sleep-overs.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I felt that they should be able to set the rules in their &lt;a href="http://patchandi.blogspot.com/2009/01/birthdays-and-bedrooms.html"&gt;respective&lt;/a&gt; &lt;a href="http://patchandi.blogspot.com/2009/01/new-years-catch-up.html"&gt;rooms&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Jake's Rules for his Room&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Don't take away a train when someone's playing with it.&lt;/li&gt;&lt;li&gt;Don't rip the Thomas and Mr Men and Little Miss books.&lt;/li&gt;&lt;li&gt;Don't break up the track.&lt;/li&gt;&lt;li&gt;Don't interrupt a story.&lt;/li&gt;&lt;li&gt;Be gentle with the lego.&lt;/li&gt;&lt;li&gt;Don't rust the trains, and don't scratch people.&lt;/li&gt;&lt;li&gt;Don't jump on the bed.&lt;/li&gt;&lt;li&gt;Be careful when you wind up the sling bridge; it might break.&lt;/li&gt;&lt;li&gt;Don't come in when I have privacy.&lt;/li&gt;&lt;li&gt;I like tickling, and stop when I want you to stop.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Ella's Rules for her Room&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Don't jump on the bed, pillow and doona.&lt;/li&gt;&lt;li&gt;Don't interrupt my books and don't break my boxes.&lt;/li&gt;&lt;li&gt;I like tickling, but stop when I have had enough.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://patchandi.blogspot.com"&gt;Andi&lt;/a&gt; and &lt;a href="http://maaml.blogspot.com"&gt;I&lt;/a&gt; are still working on our rules for the rest of the house, but here's a preliminary list:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Mummy and Daddy are the bosses of the house.&lt;/li&gt;&lt;li&gt;No biting, slapping, or hitting.&lt;/li&gt;&lt;li&gt;When you finish your food, bring your plate to the kitchen bench.&lt;/li&gt;&lt;li&gt;Use an inside voice.&lt;/li&gt;&lt;li&gt;No TV on school mornings.&lt;/li&gt;&lt;li&gt;Children must brush teeth and get into pyjamas before getting "bedtime choices".&lt;/li&gt;&lt;li&gt;All family members must support the &lt;a href="http://dailykibitz.blogspot.com/2008/05/got-art.html"&gt;Collingwood Football club&lt;/a&gt;, or leave home.&lt;/li&gt;&lt;li&gt;You get what you get, and you don't get upset.&lt;/li&gt;&lt;li&gt;Remember to put out the bins on Thursday nights.&lt;/li&gt;&lt;li&gt;Full participation is expected during Shabbat blessings, and this includes guests.&lt;/li&gt;&lt;li&gt;Don't waste water; the farmers need it.&lt;/li&gt;&lt;li&gt;A quick game's a good game.&lt;/li&gt;&lt;li&gt;The house must be tidy before the cleaner comes to clean.&lt;/li&gt;&lt;li&gt;Obsessions, such as &lt;a href="http://maaml.blogspot.com/"&gt;martial arts&lt;/a&gt;, &lt;a href="http://patchandi.blogspot.com"&gt;patchwork quilting&lt;/a&gt;, trains and fairies are to be tolerated, nay, respected.&lt;/li&gt;&lt;li&gt;&lt;a href="http://dailykibitz.blogspot.com/2008/08/tickle-mickle.html"&gt;Tickle the mickle&lt;/a&gt; is the preferred format for tickling.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7757443058696804352?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7757443058696804352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7757443058696804352' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7757443058696804352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7757443058696804352'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/01/kids-rule.html' title='Kids Rule'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7400460659617510963</id><published>2009-01-12T02:55:00.000-08:00</published><updated>2010-11-30T03:11:04.707-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Read my other blog like a book</title><content type='html'>I recently added a table of contents page to my other blog, &lt;a href="http://maaml.blogspot.com/"&gt;Martial Arts and Modern Life&lt;/a&gt;, with section headings available from every page of the blog.  It should make that blog much easier to read for the someone coming to it for the first time:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_W079YQswWQw/SXee9R_rNZI/AAAAAAAAAFQ/se0YyjD5y7k/s1600-h/blogtoc.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5293874662636991890" src="http://2.bp.blogspot.com/_W079YQswWQw/SXee9R_rNZI/AAAAAAAAAFQ/se0YyjD5y7k/s400/blogtoc.PNG" style="cursor: pointer; display: block; height: 198px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;The table-of-contents post appears on the left, with chapter headings and links, but the neat "feature" is the table-of-contents that appears on the top-right of my blog, making it easy for me to navigate, and for readers to get an overview and dive in to whatever interests them.&lt;br /&gt;&lt;br /&gt;Already I have had some positive feedback about this feature, and I would encourage others to emulate it for the sake of their readers.  It seems to make a nice complement to tags, which are a bit more like an index, and archives, which tell you what's new.&lt;br /&gt;&lt;br /&gt;The set-up steps in Blogger (it should be similar for other platforms) are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Invent chapter headings for your blog&lt;/li&gt;&lt;li&gt;Create the table-of-contents blog entry: E.g. myblog.blogspot.com/toc.html, or (nowadays) a page and include your chapter headings.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tag every heading with using Edit HTML in the blogger editor by wrapping it in anchor tags: e.g. &lt;pre&gt;&amp;lt;a name='chapter1'&amp;gt;Chapter1&amp;lt;/a&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Go through all your old posts and put links to the better ones under the appropriate chapters.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make a text widget that points to your table-of-contents entry and the chapter headings.  The hyperlinks from the chapter-headings take the form &lt;pre&gt;&amp;lt;a href="http://www.blogger.com/myblog.com/toc.html#chapter1"&amp;gt;Chapter1&amp;lt;/a&amp;lt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Place the text widget somewhere prominent.&lt;/li&gt;&lt;/ol&gt;Maintenance is even easier:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Each time you add a new post that fits your theme, add a link in your table-of-contents post.  &lt;/li&gt;&lt;li&gt;Occasionally you may want to add a new "chapter", which involves editing the widget as well, but this should be a fairly rare event once you have your categories straight.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now I just need to apply the same technique to this blog!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7400460659617510963?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7400460659617510963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7400460659617510963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7400460659617510963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7400460659617510963'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2009/01/read-my-other-blog-like-book.html' title='Read my other blog like a book'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_W079YQswWQw/SXee9R_rNZI/AAAAAAAAAFQ/se0YyjD5y7k/s72-c/blogtoc.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5277774604363643652</id><published>2008-12-31T14:56:00.000-08:00</published><updated>2008-12-31T15:29:57.145-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><title type='text'>Happy New Year / Kids and Maths</title><content type='html'>Happy New Year!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This morning -- January 1 2009 -- Jake and I went for a walk around the park and greeted various joggers and bike-riders and walkers with hellos, often resulting in replies of "Happy New Year!".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the way back Jake -- who is almost five -- said to me, "Daddy, do you want to hear something that I know that you don't know?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Sure", I said.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"There are two fours in eight, &lt;span class="Apple-style-span" style="font-style: italic;"&gt;and&lt;/span&gt; four twos in eight!"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Actually I did know that, but didn't say it, and instead felt very proud, and asked Jake how many twos there are in six, and how many threes.  I also asked him how he got to his first result: He "figured it out".  So I told him that he was noticing patterns in numbers, and that that is a good thing to do.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just for the record, without much prompting from me, basically just encouraging him to count forwards and backwards, counting on fingers, tallying, and recognizing written numbers, my boy spontaneously noticed a pattern illustrating not only a feel for division, but also for symmetry, or more specifically the commutativity of multiplication (a*b = b*a always) albeit in this one case.  And this before noticing commutativity of addition (a+b = b+a always), and even the trick of "counting on".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll take this as evidence that (at least for Jake) encouraging an awareness of numbers and patterns is not a bad way to go. This contrasts with my experience of doing pages of simple sums and subtractions (4+3= ...) at age four, which apparently I enjoyed!  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not a bad new year's present for a dad!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5277774604363643652?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5277774604363643652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5277774604363643652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5277774604363643652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5277774604363643652'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/12/happy-new-year-kids-and-maths.html' title='Happy New Year / Kids and Maths'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1295501655612867838</id><published>2008-12-21T20:38:00.000-08:00</published><updated>2008-12-21T20:55:36.423-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thank-yous'/><title type='text'>Peter Sbarski has submitted</title><content type='html'>Congratulations to Peter Sbarski on submitting his PhD thesis (just in time for Christmas).  Peter developed the layout algorithms used in Authink's software, and more besides.  His supervisors were Prof Kim Marriott of Moansh University and Austhink founder Dr Tim van Gelder, but Peter was kind enough to also thank me  for my help and sometime mentoring:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;Dan, I must thank you for all your advice and work that you have put into this thing. I know that my thesis wouldn't be the same without your help. I really do appreciate everything that you have done and I'll always remember it. In fact, I feel so very lucky that I got to work with you. A huge chunk of this thesis belongs to you.&lt;/blockquote&gt;[Quoted with permission.]&lt;br /&gt;&lt;br /&gt;It should be pointed out that Peter was kind enough to include me as a co-author on some of the papers that came out of his thesis work, which I appreciate.&lt;br /&gt;&lt;br /&gt;Peter is a bright fellow and collaborating with him and Kim has been a pleasure.  I wish him all the best, and hope to work with him again one day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1295501655612867838?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1295501655612867838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1295501655612867838' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1295501655612867838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1295501655612867838'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/12/peter-sbarski-has-submitted.html' title='Peter Sbarski has submitted'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8805338211050022325</id><published>2008-12-17T12:57:00.000-08:00</published><updated>2008-12-17T13:19:15.530-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='vanity'/><category scheme='http://www.blogger.com/atom/ns#' term='programming languages'/><title type='text'>Programming Languages as Cars, Religions</title><content type='html'>I owe part of my &lt;a href="http://dailykibitz.blogspot.com/search?q=vanity"&gt;vanity rank&lt;/a&gt; to my contribution to Michael Vanier's amusing &lt;a href="http://www.cs.caltech.edu/%7Emvanier/hacking/rants/cars.html"&gt;If programming languages were cars&lt;/a&gt; ... rant:&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Ada&lt;/b&gt;   is a tank. A butt-ugly tank that never breaks down. People laugh uncontrollably if you tell them you drive Ada, but really, do you want to be driving a sports car in a war zone?&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Assembly Language&lt;/b&gt;   is a bare engine; you have to build the car yourself and manually supply it with gas while it's running, but if you're careful it can go like a bat out of hell.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Assembly Language:&lt;/b&gt;   you are the car.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Basic&lt;/b&gt;   is a simple car useful for short drives to the local shops.  Once popular with learner drivers, it has recently been stripped down to a shell and rebuilt by a major manufacturer, The new version has been refurbished for longer journeys, leaving only cosmetic similarities to the original model. [from Przemyslaw Wrzos]&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;C&lt;/b&gt;   is a racing car that goes incredibly fast but breaks down every fifty miles.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Cobol&lt;/b&gt;   is reputed to be a car, but no self-respecting driver will ever admit having driven one.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;C#&lt;/b&gt;   is a competing model of family station wagons. Once you use this, you're never allowed to use the competitors' products again.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;   is a souped-up version of the C racing car with dozens of extra features that only breaks down every 250 miles, but when it does, nobody can figure out what went wrong.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Eiffel&lt;/b&gt;   is a car that includes a built-in driving instructor with a French accent.  He will help you quickly identify and learn from your mistakes, but don't you dare argue with him or he'll insult you and throw you out of the car. [From &lt;a href="http://austhink.com/about/staff/daniel-prager"&gt;Daniel Prager&lt;/a&gt; with some embellishments]&lt;/p&gt;&lt;/li&gt;&lt;li&gt;etc. etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;Now amz (and friends) have been inspired to write: &lt;a href="http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html"&gt;If programming languages were religions...&lt;/a&gt;. Not quite as pithy, but possibly more accurate!  Cut-down version:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;C&lt;/span&gt; would be &lt;span style="font-weight: bold;"&gt;Judaism&lt;/span&gt; - it's old and restrictive, but most of the world is familiar with its laws and respects them. The catch is, you can't convert into it - you're either into it from the start, or you will think that it's insanity. Also, when things go wrong, many people are willing to blame the problems of the world on it.&lt;span class="fullpost"&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Java&lt;/span&gt; would be &lt;span style="font-weight: bold;"&gt;Fundamentalist Christianity&lt;/span&gt; - it's theoretically based on C, but it voids so many of the old laws that it doesn't feel like the original at all. Instead, it adds its own set of rigid rules, which its followers believe to be far superior to the original. Not only are they certain that it's the best language in the world, but they're willing to burn those who disagree at the stake.&lt;/p&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;C++&lt;/span&gt; would be &lt;span style="font-weight: bold;"&gt;Islam&lt;/span&gt; - It takes C and not only keeps all its laws, but adds a very complex new set of laws on top of it. It's so versatile that it can be used to be the foundation of anything, from great atrocities to beautiful works of art. Its followers are convinced that it is the ultimate universal language, and may be angered by those who disagree. Also, if you insult it or its founder, you'll probably be threatened with death by more radical followers.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt; would be &lt;span style="font-weight: bold;"&gt;Mormonism&lt;/span&gt; - At first glance, it's the same as Java, but at a closer look you realize that it's controlled by a single corporation (which many Java followers believe to be evil), and that many theological concepts are quite different. You suspect that it'd probably be nice, if only all the followers of Java wouldn't discriminate so much against you for following it.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Lisp&lt;/span&gt; would be &lt;span style="font-weight: bold;"&gt;Zen Buddhism&lt;/span&gt; - There is no syntax, there is no centralization of dogma, there are no deities to worship. The entire universe is there at your reach - if only you are enlightened enough to grasp it. Some say that it's not a language at all; others say that it's the only language that makes sense.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Haskell&lt;/span&gt; would be &lt;span style="font-weight: bold;"&gt;Taoism&lt;/span&gt; - It is so different from other languages that many people don't understand how can anyone use it to produce anything useful. Its followers believe that it's the true path to wisdom, but that wisdom is beyond the grasp of most mortals.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Erlang &lt;/b&gt;would be &lt;b&gt;Hinduism&lt;/b&gt; - It's another strange language that doesn't look like it could be used for anything, but unlike most other modern languages, it's built around the concept of multiple simultaneous deities.&lt;/p&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;p&gt;&lt;b&gt;Ruby &lt;/b&gt;would be &lt;b&gt;Neo-Paganism&lt;/b&gt; - A mixture of different languages and ideas that was beaten together into something that might be identified as a language. Its adherents are growing fast, and although most people look at them suspiciously, they are mostly well-meaning people with no intention of harming anyone.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Python&lt;/b&gt; would be &lt;b&gt;Humanism&lt;/b&gt;: It's simple, unrestrictive, and all you need to follow it is common sense. Many of the followers claim to feel relieved from all the burden imposed by other languages, and that they have rediscovered the joy of programming. There are some who say that it is a form of pseudo-code.&lt;/p&gt;&lt;p&gt;&lt;span class="fullpost"&gt;&lt;p&gt;&lt;b&gt;COBOL&lt;/b&gt; would be &lt;b&gt;Ancient Paganism&lt;/b&gt; - There was once a time when it ruled over a vast region and was important, but nowadays it's almost dead, for the good of us all. Although many were scarred by the rituals demanded by its deities, there are some who insist on keeping it alive even today.&lt;/p&gt;&lt;p&gt;&lt;b&gt;APL&lt;/b&gt; would be &lt;b&gt;Scientology&lt;/b&gt; - There are many people who claim to follow it, but you've always suspected that it's a huge and elaborate prank that got out of control.&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Visual Basic&lt;/b&gt; would be &lt;b&gt;Satanism &lt;/b&gt;- Except that you don't REALLY need to sell your soul to be a Satanist...&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Although I have nothing to add -- at this time -- I did enjoy many of the &lt;a href="http://www.reddit.com/r/programming/comments/7juuy/if_programming_languages_were_religions/c06uras"&gt;comments on proggit&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8805338211050022325?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8805338211050022325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8805338211050022325' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8805338211050022325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8805338211050022325'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/12/programming-languages-as-cars-religions.html' title='Programming Languages as Cars, Religions'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6168747144263319002</id><published>2008-12-11T02:44:00.000-08:00</published><updated>2008-12-11T03:05:54.699-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='waffles'/><title type='text'>Waffles are go!</title><content type='html'>My &lt;a href="http://dailykibitz.blogspot.com/2008/11/my-quest-for-waffles.html"&gt;quest for waffles&lt;/a&gt; is over.  Last Saturday I saw a modern waffle-maker at K-Mart with my beloved and gingies, and -- despite being there to purchase gifts to place under the Wishing Tree, and not stuff for ourselves -- I &lt;span style="font-style: italic;"&gt;had&lt;/span&gt; to have it.  Now it is mine:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W079YQswWQw/SUDwQekFjhI/AAAAAAAAAEQ/NkqapuParww/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_W079YQswWQw/SUDwQekFjhI/AAAAAAAAAEQ/NkqapuParww/s320/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5278482929151217170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The recipe was complicated, including sifting, separating eggs and beating the whites until they stiffened, folding, and -- most challengingly -- leaving the mixture to sit for 10 minutes.&lt;br /&gt;&lt;br /&gt;Then you cook each waffle for &lt;span style="font-style: italic;"&gt;exactly&lt;/span&gt; 3 minutes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W079YQswWQw/SUDwQh0I4fI/AAAAAAAAAEY/cT-X0_OSwmU/s1600-h/2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_W079YQswWQw/SUDwQh0I4fI/AAAAAAAAAEY/cT-X0_OSwmU/s320/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5278482930023850482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;cool them on a rack:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_W079YQswWQw/SUDwQ23MBSI/AAAAAAAAAEg/ElL9eg8Ybpk/s1600-h/3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_W079YQswWQw/SUDwQ23MBSI/AAAAAAAAAEg/ElL9eg8Ybpk/s320/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5278482935673783586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now cut them up and sprinkle with sugar, Belgian style:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W079YQswWQw/SUDwRao_jOI/AAAAAAAAAEo/HdhfIEe4yEU/s1600-h/4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_W079YQswWQw/SUDwRao_jOI/AAAAAAAAAEo/HdhfIEe4yEU/s320/4.jpg" alt="" id="BLOGGER_PHOTO_ID_5278482945277922530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And admire the complexity of the waffle-creation process:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W079YQswWQw/SUDyNap05BI/AAAAAAAAAE4/edycIyVwO3w/s1600-h/5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_W079YQswWQw/SUDyNap05BI/AAAAAAAAAE4/edycIyVwO3w/s320/5.jpg" alt="" id="BLOGGER_PHOTO_ID_5278485075585197074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now enjoy!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W079YQswWQw/SUDwRkVqj2I/AAAAAAAAAEw/wBgTnJPMDe8/s1600-h/8.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_W079YQswWQw/SUDwRkVqj2I/AAAAAAAAAEw/wBgTnJPMDe8/s320/8.jpg" alt="" id="BLOGGER_PHOTO_ID_5278482947881209698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hmmm:  They tasted like ... waffles!  I.e.  Good.  The general consensus was that they are even better with ice-cream and Maple syrup.  There was so much mixture that we were able to freeze some for later.  I think that they should reheat quite nicely in the toaster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6168747144263319002?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6168747144263319002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6168747144263319002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6168747144263319002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6168747144263319002'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/12/waffles-are-go.html' title='Waffles are go!'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W079YQswWQw/SUDwQekFjhI/AAAAAAAAAEQ/NkqapuParww/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6915344105343566970</id><published>2008-11-21T18:21:00.000-08:00</published><updated>2008-11-21T18:51:58.776-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acting'/><category scheme='http://www.blogger.com/atom/ns#' term='teamwork'/><category scheme='http://www.blogger.com/atom/ns#' term='leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Interesting articles on programming and management</title><content type='html'>The following are informative and frequently humorous resources for those of us working professionally in software development:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.seebs.net/faqs/hacker.html"&gt;The Hacker FAQ&lt;/a&gt;: Explains hackers to managers&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.seebs.net/faqs/manager.html"&gt;The Manager FAQ&lt;/a&gt;: Explains managers to hackers&lt;/li&gt;&lt;li&gt;&lt;a href="http://samizdat.mines.edu/howto/HowToBeAProgrammer.html"&gt;How to be a Programmer&lt;/a&gt;: Answers questions for those at various stages of the programming career-ladder&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Anyone who fits the hacker archetype described in the Hacker FAQ may also find &lt;a href="http://www.lambdassociates.org/blog/bipolar.htm"&gt;The Bipolar Lisp Programmer&lt;/a&gt; interesting.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6915344105343566970?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6915344105343566970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6915344105343566970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6915344105343566970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6915344105343566970'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/11/interesting-articles-on-programming-and.html' title='Interesting articles on programming and management'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5422166294794212893</id><published>2008-11-18T18:35:00.000-08:00</published><updated>2008-11-18T18:42:14.170-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='nostalgia'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>My quest for waffles</title><content type='html'>As a child we had an old-fashioned waffle-iron.  It was a two-handled affair that you would pour the batter into, close, and then cook over the stove.  I favored my waffles with maple syrup and ice-cream.&lt;br /&gt;&lt;br /&gt;Now that my children are eating solid food and enjoying occasional Sunday pancake (really crepe) breakfasts, I find myself pining for waffles, and wanting to share the experience with them.&lt;br /&gt;&lt;br /&gt;So I am on a quest for a waffle iron, and I am torn: Do I go for authenticity and purchase a waffle iron of metal -- perhaps even an expensive Italian one that brands the maker's-mark into the waffle -- or a modern jaffle-like contraption that promises more consistent results, and easier cleaning?&lt;br /&gt;&lt;br /&gt;Yesterday I bought a waffle at the local food-hall, and while adequate and not cheap, it was re-heated and not ideal.&lt;br /&gt;&lt;br /&gt;Stay tuned.  Meanwhile here is an article about the ancient and noble &lt;a href="http://www.theage.com.au/news/epicure/an-ancient-and-lasting-pleasure/2005/12/19/1134840780551.html?page=fullpage#contentSwap2"&gt;history of waffles&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5422166294794212893?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5422166294794212893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5422166294794212893' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5422166294794212893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5422166294794212893'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/11/my-quest-for-waffles.html' title='My quest for waffles'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-933906672265447277</id><published>2008-11-11T12:59:00.000-08:00</published><updated>2008-11-11T13:32:20.299-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Promoted: The Kibitzer becomes the Kibitzed</title><content type='html'>Around the start of the month I was promoted from Lead Software Developer to Chief Technology Officer at &lt;a href="http://austhink.com"&gt;Austhink Software&lt;/a&gt;.  [Look ma, I' m a &lt;a href="http://austhink.com/about/key-staff-profiles#dp"&gt;CTO&lt;/a&gt;!  If only we had an executive washroom. ;-)]  I will still be hands on -- designing, programming, pairing, etc. -- but with the new title comes some additional power and responsibilities.  In particular, I now have a hand in setting technology strategy plus additional leadership duties. &lt;br /&gt;&lt;br /&gt;An interesting effect of the promotion has been that where previously I was the &lt;a href="http://dailykibitz.blogspot.com/2007/03/whats-kibitz.html"&gt;kibitzer&lt;/a&gt; -- giving unsolicited and sometimes unwelcome advice -- I have now become the kibitzed!  The guys on my team -- Ben and Aaron -- are becoming increasingly assertive in stating to me what they think should be done.  And that's fine with me.  It seems to me that the allied challenge is to become a better communicator: Both in listening closely to the kibitzs (advice) and kvetchs (complaints), and in clearly articulating the over-arching priorities, so that we can all work together in setting and executing our plans.&lt;br /&gt;&lt;br /&gt;Other than that, my motto since making the change has been: "Review, re-focus, and get on with it."  The &lt;span style="font-weight: bold;"&gt;review &lt;/span&gt;part has been about taking stock of where we are, the &lt;span style="font-weight: bold;"&gt;re-focus&lt;/span&gt; is about articulating concrete changes in approach, and &lt;span style="font-weight: bold;"&gt;getting on with it&lt;/span&gt; is all about moving forwards.&lt;br /&gt;&lt;br /&gt;So I  expect that there will be a change tone in future entries, arising from my new perspective at work.  OTOH: Whenever I run out of ideas I can always look back over my old blogs for inspiration!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-933906672265447277?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/933906672265447277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=933906672265447277' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/933906672265447277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/933906672265447277'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/11/promoted-kibitzer-becomes-kibitzed.html' title='Promoted: The Kibitzer becomes the Kibitzed'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7018422836758108971</id><published>2008-11-11T01:38:00.000-08:00</published><updated>2008-11-11T01:41:06.834-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><title type='text'>What Ella wants for her 3rd birthday party</title><content type='html'>&lt;ol&gt;&lt;li&gt;Cupcakes: No icing&lt;/li&gt;&lt;li&gt;Pink icy-poles&lt;/li&gt;&lt;li&gt;Mozzarella&lt;/li&gt;&lt;li&gt;Cheese sticks&lt;/li&gt;&lt;li&gt;Apricots&lt;/li&gt;&lt;li&gt;Snakes&lt;/li&gt;&lt;li&gt;Chocolate frogs&lt;/li&gt;&lt;li&gt;Lollipops&lt;/li&gt;&lt;li&gt;Birthday cake&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7018422836758108971?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7018422836758108971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7018422836758108971' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7018422836758108971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7018422836758108971'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/11/what-ella-wants-for-her-3rd-birthday.html' title='What Ella wants for her 3rd birthday party'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3581600562039725946</id><published>2008-10-02T17:10:00.000-07:00</published><updated>2008-10-02T17:14:33.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Cross-promotion</title><content type='html'>My patchwork quilt obsessed  partner has started her own blog: &lt;a href="http://patchandi.blogspot.com/"&gt;Patch Andi&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;We're a blogging family now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3581600562039725946?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3581600562039725946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3581600562039725946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3581600562039725946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3581600562039725946'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/10/cross-promotion.html' title='Cross-promotion'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7847538536801668381</id><published>2008-09-26T02:37:00.000-07:00</published><updated>2009-01-13T13:32:53.495-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vanity'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='internet culture'/><title type='text'>What's your vanity rank?</title><content type='html'>A &lt;a href="http://www.urbandictionary.com/define.php?term=vanity+search"&gt;vanity search&lt;/a&gt; is when you type your own name into a search engine.&lt;br /&gt;&lt;br /&gt;Now, most of us vanity searchers have learned that we are not alone -- there are pretenders out there using our names!  So I propose a new term: "Vanity rank".  To determine your vanity rank, simply do a vanity search and find the first link that refers to you rather than some doppelganger.&lt;br /&gt;&lt;br /&gt;What's my vanity rank?  At time of writing -- using Google -- it is 2 as Daniel Prager, and 1 as Dan Prager.&lt;br /&gt;&lt;br /&gt;Please look out for my coming book, "How to boost your vanity rank", Narcissus Press, a subsidiary of Mirror Corp.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7847538536801668381?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7847538536801668381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7847538536801668381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7847538536801668381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7847538536801668381'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/09/whats-your-vanity-rank.html' title='What&apos;s your vanity rank?'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6081830984690821806</id><published>2008-09-16T15:58:00.000-07:00</published><updated>2008-09-16T16:17:09.500-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='meta-programming'/><title type='text'>Why Scheme rocks</title><content type='html'>Scheme is a modern Lisp dialect.  It's what I program in for fun, and to learn new stuff.&lt;br /&gt;&lt;br /&gt;Why is it so great?  In a word, &lt;span style="font-style: italic;"&gt;meta-programming&lt;/span&gt;.   I can &lt;span style="font-weight: bold;"&gt;bend &lt;/span&gt;the language to my will.&lt;br /&gt;&lt;br /&gt;For example, I have just added my own tracing to function definitions, without touching the insides of the function.  Instead of using the built-in (&lt;span style="font-style: italic;"&gt;define &lt;/span&gt;...) I use my own 12-line* macro (&lt;span style="font-style: italic;"&gt;define-with-trace&lt;/span&gt; ...).  Now all I need to do is figure out how to redefine &lt;span style="font-style: italic;"&gt;define&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Here is a more &lt;a href="http://www.sarg.ryerson.ca/%7Edmason/common/scheme-paean.html"&gt;poetic endorsement&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Plus 4 lines of auxiliary code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6081830984690821806?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6081830984690821806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6081830984690821806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6081830984690821806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6081830984690821806'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/09/why-scheme-rocks.html' title='Why Scheme rocks'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-9098851296780296821</id><published>2008-09-15T15:57:00.000-07:00</published><updated>2008-09-15T16:15:29.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='economics of software'/><category scheme='http://www.blogger.com/atom/ns#' term='feynman'/><title type='text'>Let My Textbooks Go!</title><content type='html'>There are three problems with prescribed textbooks:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;A generally low standard&lt;/span&gt;: Feyman's &lt;a href="http://www.textbookleague.org/103feyn.htm"&gt;anecdote&lt;/a&gt;.  Has anything changed since the 60's?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;An inflated sticker price:&lt;/span&gt; A NY Times &lt;a href="http://www.nytimes.com/2008/09/15/technology/15link.html"&gt;article&lt;/a&gt; explains how textbook publishers are like big pharma.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Limited content: &lt;span style="font-weight: normal;"&gt;So learn how to search the interweb!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Textbooks are &lt;span style="font-style: italic;"&gt;starting&lt;/span&gt; to be given away for free.  One free one that I have bought -- because I wanted a dead leaves version -- "one of the great classics of Computer Science" - &lt;span style="font-style: italic;"&gt;Paul Graham&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This is free as in free beer, which addresses point 2.  Point 1, the generally low standard, might be helped by more collaborative work on the content, taking a leaf out of the free software movement.&lt;br /&gt;&lt;br /&gt;We'll see ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-9098851296780296821?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/9098851296780296821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=9098851296780296821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/9098851296780296821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/9098851296780296821'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/09/let-my-textbooks-go.html' title='Let My Textbooks Go!'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6734986333187887739</id><published>2008-09-08T15:18:00.000-07:00</published><updated>2008-09-08T15:33:42.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Unit testing vs Scenario testing</title><content type='html'>Miško Hevery gives some excellent advice on designing testable software &lt;a href="http://misko.hevery.com/2008/07/08/how-to-think-about-the-new-operator/"&gt;here&lt;/a&gt;, and elaborated &lt;a href="http://googletesting.blogspot.com/2008/09/my-main-method-is-better-than-yours.html"&gt;here&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Unit Testing as the name implies asks you to test a Class (Unit) in isolation.&lt;/li&gt;&lt;li&gt;If your code mixes Object Construction with Logic you will never be able to achieve isolation.&lt;/li&gt;&lt;li&gt;In order to unit-test you need to separate object graph construction from the application logic into two different classes&lt;/li&gt;&lt;li&gt;The end goal is to have either: classes with logic OR classes with “&lt;span style="font-family:courier new,monospace;"&gt;new&lt;/span&gt;” operators.&lt;/li&gt;&lt;/ul&gt;Here's the explanation / summary:&lt;br /&gt;&lt;blockquote&gt;Asking for your dependencies instead of constructing them withing the application logic is called “Dependency Injection” and is nothing new in the unit-testing world. But the reason why Dependency Injection is so important is that within unit-tests you want to test a small subset of your application.&lt;br /&gt;&lt;br /&gt;The requirement is that you can construct that small subset of the application independently of the whole system. If you mix application logic with graph construction (the &lt;span style="font-family:courier new,monospace;"&gt;new&lt;/span&gt; operator) unit-testing becomes impossible for anything but the leaf nodes in your application.&lt;br /&gt;&lt;br /&gt;Without Dependency Injection &lt;span style="font-weight: bold;"&gt;the only kind of testing you can do is scenario-testing&lt;/span&gt;, where you instantiate the whole application and than pretend to be the user in some automated way.&lt;/blockquote&gt;My &lt;span style="font-weight: bold;"&gt;emphasis&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now, this is not to say that you don't need scenario testing, but I have found by bitter experience that trying to mock bits and pieces in scenario tends to be more trouble than it is worth: You end up with large and unwieldy pieces of testing infrastructure.&lt;br /&gt;&lt;br /&gt;My current recommendation is that you need to test in both isolation and integration:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;For isolation (unit testing) use TDD and dependency injection, or DBC&lt;/li&gt;&lt;li&gt;For integration, use scenario-based testing on the actual application using some kind of scripting interface.&lt;/li&gt;&lt;/ol&gt;Other specialist tools may be useful.  For example, for highly graphic applications it is invaluable to be able to step-through the scenario tests to visually confirm what is happening on-screen.   Visual diagnostics are also a great help for this "semi-manual" testing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6734986333187887739?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6734986333187887739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6734986333187887739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6734986333187887739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6734986333187887739'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/09/unit-testing-vs-scenario-testing.html' title='Unit testing vs Scenario testing'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-266689237240765596</id><published>2008-09-08T14:56:00.000-07:00</published><updated>2008-09-23T21:56:03.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consumerism'/><title type='text'>Amazon's recommendation system is too good</title><content type='html'>Amazon makes it too easy to reliably find -- and purchase -- good books.&lt;br /&gt;&lt;br /&gt;The histogram of star-ratings, the user reviews, the cross-referencing with other books bought by people who bought a particular item, and what people ended up buying who looked at all make it easy to track down top books in any given area.  Not to mention the access to second-hand books, especially for out-of-print items.&lt;br /&gt;&lt;br /&gt;Coupled with the recent strength of the Aussie dollar and the exorbitant cost of purchasing locally, Amazon has proved a recent drain on my finances and a burden to my bookshelves.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;So I am resolved: I am not ordering any more books from Amazon for the rest of 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-266689237240765596?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/266689237240765596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=266689237240765596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/266689237240765596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/266689237240765596'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/09/amazons-recommendation-is-too-good.html' title='Amazon&apos;s recommendation system is too good'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8147442817678585635</id><published>2008-08-30T17:43:00.000-07:00</published><updated>2008-08-30T17:48:29.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='imagination'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><title type='text'>Tickle the Mickle</title><content type='html'>The kids and I invented a new game today, called "Tickle the Mickle".&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A player announces, "I am the Mickle!", and lies supine (tummy up) on the couch or floor.&lt;/li&gt;&lt;li&gt;Everyone else says, "Tickle the Mickle!", and starts tickling the Mickle.&lt;/li&gt;&lt;li&gt;This continues until the Mickle says "Stop!".&lt;/li&gt;&lt;li&gt;Someone else takes a turn to be the Mickle.&lt;/li&gt;&lt;/ol&gt;In a competitive game the winner is the Mickle who can endure the most tickling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8147442817678585635?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8147442817678585635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8147442817678585635' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8147442817678585635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8147442817678585635'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/08/tickle-mickle.html' title='Tickle the Mickle'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7728103037433551213</id><published>2008-08-24T16:13:00.000-07:00</published><updated>2008-08-24T16:28:51.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><title type='text'>Alan Kay on Research into Learning and Teaching</title><content type='html'>SecretGeek asked Alan Kay about the paper "The Camel Has Two Humps", and received a &lt;a href="http://www.secretgeek.net/camel_kay.asp"&gt;fascinating reply&lt;/a&gt;.  Excerpts:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Notion 1&lt;/span&gt;: Good science can rarely be pulled off in an environment with lots of degrees of freedom unless the cause and effect relationships are really simple. Trying to assess curricula, pedagogy, teaching, and the learners all at once has lots of degrees of freedom and is *not* simple.&lt;/p&gt;&lt;p&gt;So for example we've found it necessary to test any curriculum idea over three years of trials to try to normalize as much as possible to get a good (usually negative) result.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Notion 2&lt;/span&gt;: Most assessments of students wind up assessing almost everything but. This is the confusions of "normal" with "reality".&lt;/p&gt;&lt;p&gt;For example, in our excursions into how to help children learn powerful ideas, we observed many classrooms and got some idea of "what children could do". Then I accidentally visited a first grade classroom (we were concerned with grades 3-6) in a busing school whose demographic by law was representative of the city as a whole. However, every 6 year old in this classroom could really do math, and not just arithmetic but real mathematical thinking quite beyond what one generally sees anywhere in K-8 [&lt;em&gt;kindergarten and grades 1 through 8&lt;/em&gt;].&lt;/p&gt;&lt;p&gt;This was a huge shock, and it turned out that an unusual teacher was the culprit. She was a natural kindergarten and first grade teacher who was also a natural mathematician. She figured out just what to do with 6 year olds and was able to adapt other material as well for them. The results were amazing, and defied all the other generalizations we and others had made about this age group.&lt;/p&gt;&lt;p&gt;This got me to realize that it would be much better to find unusual situations with "normal" populations of learners but with the 1 in a million teacher or curriculum.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;Kay gives two examples of quite famous teachers who have written books about their methods:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I found &lt;a href="http://en.wikipedia.org/wiki/Tim_Gallwey"&gt;Tim Gallwey&lt;/a&gt; [Inner Tennis, Inner Work, etc.], who could teach anyone (literally) how to play a workable game of tennis in 20 minutes, and observed him do this with many dozens of learners over several years.&lt;/p&gt;&lt;p&gt;I found &lt;a href="http://en.wikipedia.org/wiki/Betty_Edwards"&gt;Betty Edwards&lt;/a&gt; [Drawing with the Right Side of the Brain] who could teach (again literally) anyone to draw like a 2nd year art student in one intense week.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt; &lt;/p&gt;It is also an interesting social question as to why it is ok to celebrate amazing teachers in film -- e.g.  &lt;a href="http://en.wikipedia.org/wiki/Jaime_Escalante"&gt;Jaime Escalante&lt;/a&gt; in Stand and Deliver --  but not to look more closely at their methods and try to work with them to re-jig teacher identification, training and school curricula.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7728103037433551213?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7728103037433551213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7728103037433551213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7728103037433551213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7728103037433551213'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/08/alan-kay-on-research-into-learning-and.html' title='Alan Kay on Research into Learning and Teaching'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1223352681200736601</id><published>2008-08-21T16:01:00.000-07:00</published><updated>2008-08-24T15:31:22.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kids'/><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>My Virtual Museum of Modern Art</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W079YQswWQw/SLHhHJsZTqI/AAAAAAAAAA0/w4tCfHphEYQ/s1600-h/9baf73210336c5dd_o.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_W079YQswWQw/SLHhHJsZTqI/AAAAAAAAAA0/w4tCfHphEYQ/s400/9baf73210336c5dd_o.jpg" alt="" id="BLOGGER_PHOTO_ID_5238215354586058402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_W079YQswWQw/SK30f3TevwI/AAAAAAAAAAo/Rq5Osfx-DIg/s1600-h/f379e14250171b45_o.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://1.bp.blogspot.com/_W079YQswWQw/SK30f3TevwI/AAAAAAAAAAo/Rq5Osfx-DIg/s400/f379e14250171b45_o.jpg" alt="" id="BLOGGER_PHOTO_ID_5237110769960533762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_W079YQswWQw/SK30OsZlU-I/AAAAAAAAAAg/pJ0sa41WLIE/s1600-h/76d49b145f3c42b9_o.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://3.bp.blogspot.com/_W079YQswWQw/SK30OsZlU-I/AAAAAAAAAAg/pJ0sa41WLIE/s400/76d49b145f3c42b9_o.jpg" alt="" id="BLOGGER_PHOTO_ID_5237110474975564770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can create your own modern art at &lt;a href="http://www.dumpr.net/museumr.php"&gt;museumr&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1223352681200736601?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1223352681200736601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1223352681200736601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1223352681200736601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1223352681200736601'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/08/my-virtual-museum-of-modern-art.html' title='My Virtual Museum of Modern Art'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_W079YQswWQw/SLHhHJsZTqI/AAAAAAAAAA0/w4tCfHphEYQ/s72-c/9baf73210336c5dd_o.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-4767247673999180898</id><published>2008-08-12T14:46:00.000-07:00</published><updated>2008-08-12T15:22:32.478-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Science at Home</title><content type='html'>In our current home arrangement my kids share a bedroom, and have a separate toy-room.  The spare bedroom is my dearest's sewing room, although it often reverts to junk-room state.  We use the dining-room as a kind of study.&lt;br /&gt;&lt;br /&gt;My son would like a room to permanently set up electric train tracks.  The toy room isn't big enough so he uses the floor in the "good room", but we make him pack it up at night.&lt;br /&gt;&lt;br /&gt;I have said for some time that I would like a home dojo (martial arts area), preferably in a basement so as not to frighten the neighbours.  As something of a homage, I would call it &lt;a href="http://en.wikipedia.org/wiki/Hart_House_%28Alberta%29"&gt;The Dungeon&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Additionally, there is the prospect of "doing science at home".  Now, when I did year 12 chemistry I was fortunate to have a  skilled laboratory partner, Steve Alcorn, who led the experiments while I took the lead on the calculation.  However, my general experience at school and later at Uni. was that lab. work was dull, except on one occasion when I re-designed an experiment to make it work.  That was a blast; the creativity and imagination were re-injected.&lt;br /&gt;&lt;br /&gt;Reading Oliver Sacks's memoir &lt;a href="http://www.amazon.com/Uncle-Tungsten-Memories-Chemical-Boyhood/dp/0375704043/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1218579070&amp;amp;sr=1-1"&gt;Uncle Tungsten&lt;/a&gt; conveys the joy (and obsessionality!) of designing and performing one's owns experiments.  In my case, as a teenager I satisfied that desire in the more abstracted world of exploratory computer programming, but I would like to expose my kids to the more concrete worlds of chemistry, electronics, and -- probably -- robotics first.  Biological experiments can wait until they are older!&lt;br /&gt;&lt;br /&gt;Apparently chemistry sets don't come with chemicals anymore.  Here's a link to &lt;a href="http://www.amazon.com/dp/0596514921/ref=nosim/kkorg-20"&gt;The Illustrated Guide to Home Chemistry Experiments&lt;/a&gt;, which &lt;a href="http://www.kk.org/cooltools/archives/002954.php"&gt;sounds like&lt;/a&gt; a great place to start.  Apparently you can &lt;a href="http://blog.makezine.com/archive/2008/08/home_science_under_attack.html"&gt;get in trouble&lt;/a&gt; with the authorities for daring to do Science at home, so perhaps I should secrete "The Lab" behind the Dungeon.&lt;br /&gt;&lt;br /&gt;Of course I don't really need a bigger house to do all this great stuff, just time, a little discipline (for cleaning up) and more importantly the patience to wait for the kids to show sparks of interest.  Here's a &lt;a href="http://home.adelphi.edu/sbloch/class/hs/testimonials/prabhakar.shtml"&gt;nice story&lt;/a&gt; of a parent engaging a child in learning.  For now, I'll try to encourage the kids to keep messing around with play-dough and paints, and try not to gripe too much about the mess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-4767247673999180898?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/4767247673999180898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=4767247673999180898' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4767247673999180898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4767247673999180898'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/08/science-at-home.html' title='Science at Home'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8232808813814726409</id><published>2008-08-06T20:43:00.000-07:00</published><updated>2008-08-06T21:37:46.693-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>What can go wrong with Agile approaches</title><content type='html'>Over the years, most (competent) software developers discover that an iterative approach -- Prototype; demonstrate; modify; demonstrate; rinse and repeat -- is essential for successful software development.  In recent years this kind of approach has been formalized and elaborated as the Agile family of methods: XP, Scrum etc.&lt;br /&gt;&lt;br /&gt;Here Gojko Adzic reports on a talk given by Henrik Kniberg -- author of &lt;a href="http://www.amazon.com/Scrum-Trenches-Enterprise-Software-Development/dp/1430322640/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1218083555&amp;amp;sr=8-1"&gt;Scrum and Xp from the Trenches&lt;/a&gt; -- on how software development can be &lt;a href="http://gojko.net/2008/08/06/10-ways-to-screw-up-despite-scrum-and-xp/"&gt;screwed up anyway&lt;/a&gt;.  He presented a long list of issues that have cropped up in Agile projects and -- interestingly -- had audience members hold up cards to signify how much of a problem each pathology was to them.&lt;br /&gt;&lt;br /&gt;A good professional development exercise would be to go through a subset of the list with red/green/cards, and talking about the whys, wherefores,  and possible remedies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8232808813814726409?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8232808813814726409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8232808813814726409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8232808813814726409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8232808813814726409'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/08/what-can-go-wrong-with-agile-approaches.html' title='What can go wrong with Agile approaches'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2444823648778836481</id><published>2008-07-29T21:19:00.000-07:00</published><updated>2008-07-29T21:36:57.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='legalese'/><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><title type='text'>My Suggestion for a Privacy Statement</title><content type='html'>Most privacy statements for web-sites include something about the use of &lt;a href="http://en.wikipedia.org/wiki/HTTP_cookie"&gt;cookies&lt;/a&gt;.  Recently I was peripherally involved in the re-drafting of one such section.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sanseverything.files.wordpress.com/2007/11/cookie-monster3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://sanseverything.files.wordpress.com/2007/11/cookie-monster3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;No, not that kind of cookie&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;Here's my "draft", which could be used as a &lt;a href="http://en.wikipedia.org/wiki/Honeypot_%28computing%29"&gt;honeypot&lt;/a&gt; to see if anyone ever reads these things:&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-AU"&gt;&lt;blockquote&gt;We do not use cookies to determine the identity of individual users, unless you log in,  in which case we track you using all available means, including, but not limited to: satellite, your mobile phone, secret service operatives, cookies, ice cream, fudge, radio-receivers implanted in your molars, and miniature remote-control insects.  Depending on what we catch you doing we may use this information for blackmail or our own amusement at in-house video-nights.  However, rest assured that we do not permanently store any of the gathered information.&lt;/blockquote&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  Naturally, this is not the version that we are going forward with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2444823648778836481?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2444823648778836481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2444823648778836481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2444823648778836481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2444823648778836481'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/07/my-suggestion-for-privacy-statement.html' title='My Suggestion for a Privacy Statement'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-566177943744896206</id><published>2008-07-24T22:12:00.001-07:00</published><updated>2008-07-24T22:16:37.268-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming tips'/><title type='text'>Some excellent OO programming tips (and discussion)</title><content type='html'>Some classy advice from &lt;a href="http://www.reddit.com/user/munificent/"&gt;munificent &lt;/a&gt;on a &lt;a href="http://www.reddit.com/r/programming/"&gt;proggit&lt;/a&gt; thread:&lt;br /&gt;&lt;div id="body_t1_c04syoo" class="commentbody border"&gt;&lt;div class="md"&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Do not copy and paste.&lt;/strong&gt; Move code around, but don't duplicate it. Disabling Ctrl-C on IDEs would improve the world's programming better than anything I can think of.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Decouple decouple decouple.&lt;/strong&gt; Of all of the things you can do to improve code, reducing coupling will, by far, have the greatest impact at making your life better.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Don't store what you can calculate.&lt;/strong&gt; The fewer member variables, the better. Avoid storing any redundant data unless you want to fix synchronization bugs forever.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Make classes immutable when possible.&lt;/strong&gt; It's easiest to use something you can't break.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Don't get too excited about inheritance.&lt;/strong&gt; If you aren't using polymorphism, you probably don't need to use inheritance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Use all of the features of your language.&lt;/strong&gt; Delegates (function pointers), static (i.e. non-member) functions, etc. are just as useful with OOP as within straight procedural.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;If you have a hard time naming a class, it's poorly defined.&lt;/strong&gt; That being said, don't let lack of a name stop you, you can always find and replace later. Likewise, rename classes if their purpose changes over time.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Never call anything "FooManager".&lt;/strong&gt; Objects are supposed to manage themselves. Get rid of the manager and put the code in Foo.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Don't be afraid to make little classes.&lt;/strong&gt; Making a class just to bundle a couple of function args is perfectly fine. A few months later you'll find you've all sorts of other usefulness to it.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Refactor constantly.&lt;/strong&gt; Coding without refactoring is gardening without weeding and pruning. You can't just keep packing new plants into your yard.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;There is some good further discussion and qualifications in the &lt;a href="http://www.reddit.com/comments/6t9wa/ask_reddit_what_are_your_object_oriented_rules_of/c04syoo"&gt;sub-comments&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-566177943744896206?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/566177943744896206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=566177943744896206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/566177943744896206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/566177943744896206'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/07/some-excellent-oo-programming-tips-and.html' title='Some excellent OO programming tips (and discussion)'/><author><name>Dan Prager</name><uri>http://www.blogger.com/profile/14234352019207324148</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/_W079YQswWQw/SX1QGExi_7I/AAAAAAAAAFk/g_DLEpMxDGs/S220/Reverse.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7472137758583777442</id><published>2008-07-24T20:03:00.000-07:00</published><updated>2008-07-24T22:30:46.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy of programming'/><title type='text'>Alan Kay's Reading List</title><content type='html'>Alan "Smalltalk" Kay gives a &lt;a href="http://www.squeakland.org/sqmedia/books/book_list.html"&gt;list of books&lt;/a&gt; for people interested in the ideas and philosophies that influenced &lt;a href="http://www.squeak.org/"&gt;Squeak&lt;/a&gt;.   It looks like a good list for anyone interested in software invention.&lt;br /&gt;&lt;br /&gt;I have read a smattering of the books and some other works by authors on the list, and they were generally outstanding.  I will try to sample the remainder (over time).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7472137758583777442?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7472137758583777442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7472137758583777442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7472137758583777442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7472137758583777442'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/07/alan-kays-reading-list.html' title='Alan Kay&apos;s Reading List'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5046411323352124719</id><published>2008-07-23T20:23:00.000-07:00</published><updated>2008-07-23T20:53:20.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><title type='text'>A witty remark</title><content type='html'>The other day I was standing in my bedroom, and went to take a step, only to find that I could not.  My son, Jake, aged 4 1/2, was lying full length and prone on the floor with arms extended and both hands securely clamped around my left ankle.  Andi looked on.  This had happened before.&lt;br /&gt;&lt;br /&gt;Jake ordered me to drag him along the floor: "Walk!", came the command from below.&lt;br /&gt;&lt;br /&gt;"I refuse to walk anywhere while there's a manacle attached to my leg", I replied.&lt;br /&gt;&lt;br /&gt;"That's not a manacle; that's a boy-acle!", said my beloved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5046411323352124719?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5046411323352124719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5046411323352124719' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5046411323352124719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5046411323352124719'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/07/witty-remark.html' title='A witty remark'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1611423961355049379</id><published>2008-07-22T15:26:00.000-07:00</published><updated>2008-07-22T16:46:03.182-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Laws of Logins</title><content type='html'>Privacy issues aside, when it comes to logins, I want convenience.&lt;br /&gt;&lt;br /&gt;When using a web-page that provides a service, I want it to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Allow me to try or taste the service without entering a username and password (or I won't it use it).&lt;/li&gt;&lt;li&gt;Never supply username and password if the service is once only (or I won't use it).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Allow me to login and use a nice administrative interface if it is a site that allows me to create content.  For this, I not only accept having to supply login details; I want to be able to login.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Of course having to remember multiple logins for multiple sites (point 3) is a PITA.  Can OpenID help with this?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1611423961355049379?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1611423961355049379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1611423961355049379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1611423961355049379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1611423961355049379'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/07/laws-of-logins.html' title='Laws of Logins'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8546899068137219141</id><published>2008-06-22T17:54:00.000-07:00</published><updated>2008-06-24T17:13:11.464-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Order-dependence of design decisions</title><content type='html'>When the &lt;a href="http://www.reddit.com/r/programming/"&gt;proggit&lt;/a&gt; community was asked for their best piece of &lt;a href="http://www.reddit.com/info/6ohfz/comments/"&gt;Best piece of insight for computer programming/software engineering?&lt;/a&gt; some excellent responses were elicited, including this one from &lt;span style="font-style: italic;"&gt;hamsterboy&lt;/span&gt;:&lt;br /&gt;&lt;blockquote&gt;The quality of the design of a piece of software depends on &lt;em&gt;the order in which you make the design decisions.&lt;/em&gt; 5 years from now, the earliest decisions will have the most far-reaching consequences, and will be the most difficult to re-think.&lt;/blockquote&gt;This can be taken incorrectly as an indictment of incremental approaches or, more acutely, as justification for periodic re-design.&lt;br /&gt;&lt;br /&gt;Recently I have been working on a port /re-design of a 2.5 year-old product and it has been an absolute pleasure to be able to take advantage of the insights learned the first time round.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8546899068137219141?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8546899068137219141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8546899068137219141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8546899068137219141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8546899068137219141'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/06/order-dependence-of-design-decisions.html' title='Order-dependence of design decisions'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3388076612240022796</id><published>2008-06-11T15:49:00.001-07:00</published><updated>2008-12-10T21:18:43.269-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><title type='text'>Where did the red hair come from?</title><content type='html'>Here's a picture of my kids, both of whom are &lt;a href="http://en.wikipedia.org/wiki/Red_hair"&gt;gingies&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NCmMYTi-30s/SFBW0srE3TI/AAAAAAAAACc/aO1PeKnCgjI/s1600-h/ella_and_jake.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_NCmMYTi-30s/SFBW0srE3TI/AAAAAAAAACc/aO1PeKnCgjI/s400/ella_and_jake.jpg" alt="" id="BLOGGER_PHOTO_ID_5210760232212684082" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Ella (left) and Jake&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Since neither I nor Andi (Mum) is a red-head we are incessantly asked "Where did the red hair come from?"&lt;br /&gt;&lt;br /&gt;Popular answers include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Postman Pat&lt;/li&gt;&lt;li&gt;Alien abduction&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They are freaky mutants&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Incidentally, none of their grand- or great-grand-parents were red-heads, but they have a few carrot-headed cousins.&lt;br /&gt;&lt;br /&gt;Apparently the genetics of red-hair is not simple.  In particular, it is not just a case of a recessive gene hiding away for a few generations.&lt;br /&gt;&lt;br /&gt;Andi and I are not planning any further children.  I have suggested that we try for a non-redhead, but the danger of a third gingy has proven to scary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3388076612240022796?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3388076612240022796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3388076612240022796' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3388076612240022796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3388076612240022796'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/06/where-did-red-hair-come-from.html' title='Where did the red hair come from?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NCmMYTi-30s/SFBW0srE3TI/AAAAAAAAACc/aO1PeKnCgjI/s72-c/ella_and_jake.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6333927109675761352</id><published>2008-06-11T15:01:00.000-07:00</published><updated>2008-06-27T02:31:27.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='judaism'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><title type='text'>Jake's 10 Commandments</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.shofartallit.com/images/2245.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.shofartallit.com/images/2245.jpg" alt="" border="0" /&gt;&lt;/a&gt;As part of this year's &lt;a href="http://dailykibitz.blogspot.com/2007/05/10-comapments.html"&gt;Shavuot &lt;/a&gt;celebrations at my son's kindergarten every child devised his or her own version of the 10 commandments.  This is what &lt;a href="http://dailykibitz.blogspot.com/2008/04/just-little-bit-proud.html"&gt;Jake&lt;/a&gt; came up with:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Jake's 10 Commandments&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;No jumping on other people.&lt;/li&gt;&lt;li&gt;After eating at kindergarten please have a drink to wash down the food that is stuck in your teeth.&lt;/li&gt;&lt;li&gt;No poo-ing in your undies.&lt;/li&gt;&lt;li&gt;I will not bend my glasses.&lt;/li&gt;&lt;li&gt;My sister cannot slap me.&lt;/li&gt;&lt;li&gt;I will not take the mattress off my bed and throw it on the floor.&lt;/li&gt;&lt;li&gt;Do not slam the door on somebody's fingers.&lt;/li&gt;&lt;li&gt;No touching the stove when it is on.&lt;/li&gt;&lt;li&gt;No screaming.&lt;/li&gt;&lt;li&gt;No tipping water out of the bath.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6333927109675761352?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6333927109675761352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6333927109675761352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6333927109675761352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6333927109675761352'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/06/jakes-10-commandments.html' title='Jake&apos;s 10 Commandments'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1888035119662704029</id><published>2008-05-27T15:17:00.000-07:00</published><updated>2008-05-27T15:36:40.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Signs of Good Design</title><content type='html'>It is a good sign when something you design solves problems not originally envisaged.  This indicates depth and robustness.&lt;br /&gt;&lt;br /&gt;Another good sign is when a third party of high standing makes a recommendation.&lt;br /&gt;&lt;br /&gt;Both these signs are apparent in the increasing adoption of the Erlang language and libraries for distributed computing problems.  Originally designed for telecommunications software, Erlang is now being used by Amazon, Facebook, and others as part of their infrastructure.&lt;br /&gt;&lt;br /&gt;Also, Steve Vinoski, an authority on CORBA, an older technology for distributed computing, has been singing the praises of Erlang for largely "getting it right".  In response Joe Armstrong (inventor of Erlang) has thanked Steve for going down the wrong path and living to tell the tale.  Here's &lt;a href="http://armstrongonsoftware.blogspot.com/2008/05/road-we-didnt-go-down.html"&gt;Joe on Steve&lt;/a&gt;, and &lt;a href="http://steve.vinoski.net/blog/2008/05/27/joe-armstrong-erlang-and-rpc/"&gt;Steve on Joe&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I hope that everyone working in distributed computing can take note of the lessons that Steve (and Joe) learned the hard way, without necessarily repeating all the hard yards.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remember&lt;/span&gt;: It is always a good time to learn from other people's mistakes (and your own).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1888035119662704029?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1888035119662704029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1888035119662704029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1888035119662704029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1888035119662704029'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/05/signs-of-good-design.html' title='Signs of Good Design'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2007971170345626074</id><published>2008-05-22T17:03:00.000-07:00</published><updated>2008-12-10T21:18:43.827-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='football'/><title type='text'>Got Art?</title><content type='html'>Last night my beloved and I splurged on a piece of modern art.  In the past we've made our own -- in a "Jackson Pollock" style -- but Andrea spotted this work by local artist Gary Solomon while driving home yesterday:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NCmMYTi-30s/SDYKn2IMEWI/AAAAAAAAACM/QzDJ1XABXAw/s1600-h/our+new+painting.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_NCmMYTi-30s/SDYKn2IMEWI/AAAAAAAAACM/QzDJ1XABXAw/s400/our+new+painting.jpg" alt="" id="BLOGGER_PHOTO_ID_5203358099134222690" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Go 'Pies!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A screech of brakes, much excitement, a quick discussion of finances, and we're newly minted patrons of the arts.  Now we just need more wall-space (and money) to grow our collection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2007971170345626074?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2007971170345626074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2007971170345626074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2007971170345626074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2007971170345626074'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/05/got-art.html' title='Got Art?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NCmMYTi-30s/SDYKn2IMEWI/AAAAAAAAACM/QzDJ1XABXAw/s72-c/our+new+painting.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2676424019725983617</id><published>2008-05-15T15:23:00.000-07:00</published><updated>2008-05-15T15:52:47.126-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy of programming'/><title type='text'>Programming Yin and Programming Yang</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Q: Why is programming fun?&lt;/span&gt; &lt;br /&gt;A: It is a form of play and exploration in which a "one-time" "small" effort (writing the program) yields a large reward (the program does something).  It combines the artistic joy of creation with the scientific reward of nutting out a puzzle.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q: Why is programming hell?&lt;/span&gt; &lt;br /&gt;A1: When the program fails to produce the expected results a diagnostic process of "debugging" follows.  As the program grows in size and power and (hence) complexity, this debugging phase dominates the programmer's time, and brings mainly relief rather than reward.&lt;br /&gt;&lt;br /&gt;A2: When requirements change the program may need to be re-jigged to accommodate them, and this re-jigging, similar to  debugging lacks the immediate rewards.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;So, to increase the rewards of programming -- and incidentally productivity and profitability -- techniques are sought to reduce the dross (debugging and re-jiggering), and increase the rewards (features and elegance).&lt;br /&gt;&lt;br /&gt;On the Yang side of programming I include design, architecture, algorithm invention, and implementation of new features.&lt;br /&gt;&lt;br /&gt;On the Yin side I include practices like &lt;a href="http://en.wikipedia.org/wiki/Design_by_contract"&gt;Design By Contract&lt;/a&gt; (DBC), &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development&lt;/a&gt; (TDD), and &lt;a href="http://en.wikipedia.org/wiki/Continuous_integration"&gt;Continuous Integration&lt;/a&gt; (CI).  These provide no up-front reward, but pay for themselves over time. &lt;br /&gt;&lt;br /&gt;Interestingly, all three involve using programming to write better programs.  DBC and TDD may be regarded -- with some licence -- as simple forms of meta-programming.  We are writing program fragments to help test our programs.  Also, the act of making tacit assumptions explicit helps us to think about and hence improve the underlying design.&lt;br /&gt;&lt;br /&gt;By putting in place these effective (Yin) measures, we can be bolder (Yang) in adding new functionality, having built a software safety net as we step forward.&lt;br /&gt;&lt;br /&gt;True meta-programming, writing &lt;a href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29"&gt;programs that write programs&lt;/a&gt; brings us back to the Yang side.&lt;br /&gt;We are now truly working at a higher level of abstraction, with correspondingly more leverage, but when bugs appear in our meta-programs the debugging gets harder too ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2676424019725983617?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2676424019725983617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2676424019725983617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2676424019725983617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2676424019725983617'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/05/programming-yin-and-programming-yang.html' title='Programming Yin and Programming Yang'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-77243652143323971</id><published>2008-05-12T15:24:00.000-07:00</published><updated>2008-05-12T15:34:41.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Fred Brookes on Online Collaboration</title><content type='html'>DL Weinreb, one of the co-creators of Common Lisp, took some &lt;a href="http://dlweinreb.wordpress.com/2007/10/28/3/"&gt;notes &lt;/a&gt;at the OOPSLA 2007 conference.  One of the talks was by given by Fred Brooks:&lt;br /&gt;&lt;blockquote&gt;Fredrick Brooks Jr., author of the classic book “The Mythical Man-Month”, talked about telecollaboration. Most of the talk was about collaboration itself, and under what circumstances it’s a good thing: not always! His main point is that collaboration is great for determining system requirements and brainstorming about possible approaches, but that you really need a single system architect in order to achive conceptual integrity. The system architect can delegate parts of the architecture to others (e.g. the user interface czar), but he distinguishes sharply between delegating design (OK) and sharing design (not OK).&lt;br /&gt;&lt;/blockquote&gt;Readers of The MMM, will not be surprised by Brooks's reiteration of the need for a single designer to ensure a unified vision, but it's nice to have strong position brought to light in a new context.&lt;br /&gt;&lt;br /&gt;For me, Brooks's pronouncement raises a couple of questions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To what extent does his advice apply to non-software enterprises?&lt;/li&gt;&lt;li&gt;To what extent should collaborative software endeavour to encourage "good practice" through constraining its users?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-77243652143323971?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/77243652143323971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=77243652143323971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/77243652143323971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/77243652143323971'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/05/fred-brookes-on-online-collaboration.html' title='Fred Brookes on Online Collaboration'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6787060711269141911</id><published>2008-05-05T15:42:00.000-07:00</published><updated>2008-05-24T20:23:40.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Algorithms vs Architecture</title><content type='html'>There are many facets to software design.  Some, like user-interface design, are apparent to the end user.  Others take place almost entirely &lt;span style="font-style: italic;"&gt;under the hood.  &lt;/span&gt;These are the bones on which the software is built.&lt;br /&gt;&lt;br /&gt;Two significant under-the-hood aspects are &lt;span style="font-weight: bold;"&gt;algorithms&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;software architecture&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Algorithms &lt;/span&gt;form a major strand of computer science.  They are concerned with&lt;br /&gt;the nitty-gritty of getting the computer to &lt;span style="font-style: italic;"&gt;do stuff&lt;/span&gt;.  The major aspects of an&lt;br /&gt;algorithm include: what it does, its domain of valid inputs, and its time- and&lt;br /&gt;space-efficiency.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Software architecture&lt;/span&gt;, on the other hand, is concerned with the high-level structure and conventions of a software system, and is more of a topic for industry than academia.  Good architectural choices contribute to the overall performance, resilience, and extensibility of a system.&lt;br /&gt;&lt;br /&gt;We need both!  And interestingly, you neglect either one at your peril.&lt;br /&gt;&lt;br /&gt;For example, recently when we noticed a significant slow-down in performance the issue turned out to be an architecture-algorithm interaction.  While the algorithm was O(n^2)  in time, an imperfection in the architecture led to it being executed as each item was added to the structure, making it effectively O(n^3), and correspondingly sluggish.&lt;br /&gt;&lt;br /&gt;As usual, when the problem is tricky to track down, it is often due to the interaction of two separate-seeming factors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6787060711269141911?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6787060711269141911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6787060711269141911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6787060711269141911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6787060711269141911'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/05/algorithms-vs-architecture.html' title='Algorithms vs Architecture'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3250587742072018012</id><published>2008-04-16T14:41:00.000-07:00</published><updated>2008-12-10T21:18:44.097-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acting'/><category scheme='http://www.blogger.com/atom/ns#' term='judaism'/><category scheme='http://www.blogger.com/atom/ns#' term='parenting'/><title type='text'>Just a Little Bit Proud</title><content type='html'>What with the recent passing of &lt;a href="http://en.wikipedia.org/wiki/Charlton_heston"&gt;Charlton Heston&lt;/a&gt; a newcomer had to step in and play the lead role of &lt;a href="http://en.wikipedia.org/wiki/Moses"&gt;Moses &lt;/a&gt;in our local kindergarten's model &lt;a href="http://en.wikipedia.org/wiki/Passover_Seder"&gt;Passover Seder&lt;/a&gt;* later today,  and my son Jake has scored the honour, leaving me &lt;span style="font-style: italic;"&gt;just a little bit&lt;/span&gt; proud.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.beliefnet.com/moviemom/charlton_heston_plays_moses.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://blog.beliefnet.com/moviemom/charlton_heston_plays_moses.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Charlton Heston as Moses&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NCmMYTi-30s/SCFe62ycw1I/AAAAAAAAACE/TTiQVoA62iY/s1600-h/Jake+as+moses+cropped.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_NCmMYTi-30s/SCFe62ycw1I/AAAAAAAAACE/TTiQVoA62iY/s320/Jake+as+moses+cropped.jpg" alt="" id="BLOGGER_PHOTO_ID_5197539810194801490" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Jake as Moses&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;Here are the lyrics to one of the more amusing &lt;a href="http://www.adatshalom.net/holidays/pesachsongs.html"&gt;Passover songs&lt;/a&gt; that the children will be singing today, recalling the second of the ten plagues that Moses called down upon Pharaoh (and the Egyptians):&lt;br /&gt;&lt;h2 class="sechd"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p class="base"&gt; &lt;/p&gt;&lt;h2 class="sechd"&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;h2 class="sechd"&gt;&lt;span style="font-size:130%;"&gt;The Frog Song  (Shirley Cohen)&lt;/span&gt; &lt;/h2&gt;  &lt;p class="base"&gt;One morning when Pharoah awoke in his bed&lt;br /&gt;There were frogs in his bed, and frogs on his head&lt;br /&gt;Frogs on his nose and frogs on his toes&lt;br /&gt;Frogs here, frogs there&lt;br /&gt;Frogs were jumping everywhere.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="base"&gt; &lt;/p&gt;Fittingly, both of his grandfathers will be in attendance, and I look forward to hearing reports,  seeing photos and -- technology permitting -- video of Jake with his "overflowing beard" in action.&lt;br /&gt;&lt;br /&gt;*The Passover Seder is a special meal in which the story of the Jews' escape from slavery in Egypt is retold and celebrated with food, wine and singing.  The &lt;span style="font-style: italic;"&gt;model &lt;/span&gt;Seder is the kids' version where they learn how it all works.  It's a bit like a Christmas pageant, but with more food.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3250587742072018012?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3250587742072018012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3250587742072018012' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3250587742072018012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3250587742072018012'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/04/just-little-bit-proud.html' title='Just a Little Bit Proud'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NCmMYTi-30s/SCFe62ycw1I/AAAAAAAAACE/TTiQVoA62iY/s72-c/Jake+as+moses+cropped.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7023010146047910209</id><published>2008-04-14T15:10:00.000-07:00</published><updated>2008-04-16T15:57:33.906-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interviewing'/><title type='text'>Interview Questions for Candidate Software Developers</title><content type='html'>Basically I am looking for evidence of the following&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Smart&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Gets things done&lt;/li&gt;&lt;li&gt;Communicates effectively&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Passionate about software development&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Has a solid technical foundation&lt;/li&gt;&lt;li&gt;Quick learner&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cultural fit (sense of humor, down to earth, enjoys working &lt;span style="font-style: italic;"&gt;with&lt;/span&gt; others)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;In the past I have written down my questions for candidate software developers 0n scraps of paper, which get lost.  Here are some somewhat open questions:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Work history&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Why are you interested in this job / company?&lt;/li&gt;&lt;li&gt;Why now?&lt;/li&gt;&lt;li&gt;Tell me about a tough lesson from your last job.&lt;/li&gt;&lt;li&gt;What are the key things that you have learned about maintaining and enhancing a pre-existing software system?&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Object-Orientation&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;What is the difference between a class and an object?&lt;/li&gt;&lt;li&gt;What is an interface?  Why are interfaces useful?&lt;/li&gt;&lt;li&gt;What is inheritance?  Compare and contrast single and multiple inheritance.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Programming Language Theory&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;What is recursion?&lt;/li&gt;&lt;li&gt;What is an advantage of iteration over recursion?&lt;/li&gt;&lt;li&gt;What is an advantage of recursion over iteration?&lt;/li&gt;&lt;li&gt;*What is a closure?&lt;/li&gt;&lt;li&gt;*What is a continuation?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Agile  (assumes some [claimed] knowledge)&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Have you worked in an "agile team" before?&lt;/li&gt;&lt;li&gt;Have you read up about Agile / XP / Scrum?&lt;/li&gt;&lt;li&gt;Explain difference between waterfall and iterative development&lt;/li&gt;&lt;li&gt;Explain some of the XP practices (e.g. pair-programming, test-driven development, continuous integration, re-factoring)&lt;/li&gt;&lt;li&gt;What's Scrum about?  How does it work?&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Testing&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Difference between manual and automated testing?&lt;/li&gt;&lt;li&gt;Which kinds of automated testing have you used?&lt;/li&gt;&lt;li&gt;In which areas is it trickier to test automatically&lt;/li&gt;&lt;li&gt;Test first or code first?  Why?&lt;/li&gt;&lt;li&gt;*What is Design By Contract?&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Motivation&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Favorite things about working in IT / software development?&lt;/li&gt;&lt;li&gt;Worst things?&lt;/li&gt;&lt;li&gt;What do you want to learn more about?&lt;/li&gt;&lt;li&gt;Let me solve it and report back, or let's figure this out together?&lt;br /&gt; &lt;/li&gt;&lt;li&gt;What are the key elements that make for a good team?&lt;br /&gt; &lt;/li&gt;&lt;li&gt;Tell me about a cool tool, language, or technique that you have learned and applied recently.&lt;/li&gt;&lt;li&gt;Favorite and least favorite programming languages that you have used professionally?&lt;/li&gt;&lt;li&gt;Why?&lt;/li&gt;&lt;li&gt;What's wrong with [favorite]?&lt;/li&gt;&lt;li&gt;What's good about [least favorite]?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Of course, a lot of the interview is about gauging the tone (affect) of the response and following up on interesting responses.&lt;br /&gt;&lt;br /&gt;Additionally, I usually do a pair-programming exercise / challenge with technical candidates, usually with a little design phase and some test-driven development.  This tells me a lot, but it is time-consuming and can be quite draining (especially if it doesn't go well!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7023010146047910209?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7023010146047910209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7023010146047910209' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7023010146047910209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7023010146047910209'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/04/interview-questions-for-candidate.html' title='Interview Questions for Candidate Software Developers'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5161531684323270878</id><published>2008-04-06T14:29:00.000-07:00</published><updated>2008-04-06T15:00:19.733-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Cross-ferretization</title><content type='html'>&lt;span style="font-style: italic;"&gt;Cross-ferretization, n.&lt;/span&gt;  The art of &lt;strike&gt;stealing&lt;/strike&gt; ferreting out ideas from other fields and applying them to one's own.&lt;br /&gt;&lt;br /&gt;In programming, there are many generic job descriptions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;programmer&lt;/li&gt;&lt;li&gt;software developer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;software engineer&lt;/li&gt;&lt;li&gt;software architect&lt;/li&gt;&lt;li&gt;computer scientist&lt;/li&gt;&lt;li&gt;hacker&lt;/li&gt;&lt;li&gt;etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Each of these has its own connotations, some overlapping, some contradictory.&lt;br /&gt;&lt;br /&gt;Recently I have been delving back into (physical) architecture, and finding out a bit more about that field. &lt;br /&gt;&lt;br /&gt;(Physical) architects are the generalists in a once-unified field that has splintered into civil engineers, draughtsmen, builders, interior designers, etc.  Consequently their training delves into many fields, and in practice they work with many specialists, especially on large projects.&lt;br /&gt;&lt;br /&gt;So it seems reasonable that there is a role for (software) architects in the (virtual) world, although such titles seem to be largely self-bestowed and not really as well-defined as (physical) architects.&lt;br /&gt;&lt;br /&gt;Another reason for the interest in architecture in software development is the influence of Christopher Alexander and his notions of patterns and pattern languages on programming.  This gave rise, largely via the famous &lt;a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1207518343&amp;amp;sr=8-1"&gt;Gang-of-Four book&lt;/a&gt;, to the notion of patterns in software (although the notion of pattern languages) was not as widely imported. &lt;br /&gt;&lt;br /&gt;For what it is worth, Alexander's original writings have always resonated with me in a way that the Gang-of-Four's have not.  So the other day when I spied an attractively packaged little book aimed at (physical) architects and students of architecture, entitled &lt;a href="http://www.amazon.com/101-Things-Learned-Architecture-School/dp/0262062666/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1207517472&amp;amp;sr=8-1"&gt;101 Things I Learned in Architecture School&lt;/a&gt; by Matthew Frederick, I purchased it with little hesitation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quick review&lt;/span&gt;: "101" is not just a book for architects, but for anyone with an interest in any kind of design.   Many of the "things" are of general applicability-- I especially like #29, about the importance of  being process- rather than product-oriented, and #45, which contrasts simplicity with complexity and informed-simplicity.  Such of the ideas are really very general.  Others are specific to architecture, either practical points or theoretical tidbits, often admitting useful analogies.  Each thing is accompanied by an illustration.&lt;br /&gt;&lt;br /&gt;Every field needs a book like this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5161531684323270878?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5161531684323270878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5161531684323270878' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5161531684323270878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5161531684323270878'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/04/cross-ferretization.html' title='Cross-ferretization'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2473299317034580419</id><published>2008-03-26T14:37:00.000-07:00</published><updated>2008-03-26T14:55:45.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy of programming'/><title type='text'>Bit rot vs Re-usable code</title><content type='html'>The intellectual property in a software company is diffuse.  The &lt;span style="font-weight: bold;"&gt;explicit&lt;/span&gt; IP can be found in patents, papers, documents and, above all, the code base.  The &lt;span style="font-weight: bold;"&gt;tacit&lt;/span&gt; IP exists in people's heads.&lt;br /&gt;&lt;br /&gt;It is the tacit IP that allows for innovation and change.  Indeed, a good way of understanding the possibility of change is the extent to which the maintainers of the software have a theory of how it works.  If they do, they can change and extend it.  If they cannot they are likely damaging the conceptual integrity of the code-base.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://www.oreillynet.com/onlamp/blog/2008/03/the_worthlessness_of_code.html"&gt;The Worthlessness of Code&lt;/a&gt; James Turner  advocates regularly rewriting to ensure that the software development team understands what they are working with, and in-particular, so that the original designers effectively refresh and transfer their knowledge to new hires.&lt;br /&gt;&lt;br /&gt;In the comments the rebuttals of "continuous re-writing", and "re-usable code" are raised.  Personally, I sympathize with Turner.   I used to have a motto: &lt;span style="font-weight: bold;"&gt;Before re-use, use&lt;/span&gt;.  This mocked the scenario of people trying to writing libraries or frameworks that would be used multiply, before being deployed successfully even once.  Oy!  The better alternative is to extract, abstract and generalize &lt;span style="font-style: italic;"&gt;after &lt;/span&gt;an initial success or two.&lt;br /&gt;&lt;br /&gt;What about libraries?  The good ones do have a long life.  This comment from the &lt;a href="http://reddit.com/r/programming/info/6dh2i/comments/"&gt;Reddit &lt;/a&gt;comments on Turner's article draws an important distinction:&lt;br /&gt;&lt;blockquote&gt;How about "reusable code is an asset, single-use code is a liability"?&lt;br /&gt;&lt;/blockquote&gt;I like this idea.  There is the abstracted, cleaned stuff that ends up in libraries, and gets re-used, and there is the more scripty stuff that glues things together and gets the short-term job done.&lt;br /&gt;&lt;br /&gt;This raises the possibility of a new, somewhat informal metric: Ratio of multiple-use (quality code) to single-use (get-it-done code).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2473299317034580419?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2473299317034580419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2473299317034580419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2473299317034580419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2473299317034580419'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2008/03/bit-rot-vs-re-usable-code.html' title='Bit rot vs Re-usable code'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5056022801993872609</id><published>2007-10-18T15:09:00.000-07:00</published><updated>2008-05-08T18:17:34.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><title type='text'>What makes X hard?</title><content type='html'>Mark Guzdial has written a nice article, &lt;a href="http://www.amazon.com/gp/blog/post/PLNK2DYCU7ANMP5E6"&gt;What makes programming so hard?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But I say, "Programming: Easy.  Dancing: Hard."  What he is really talking about is the bimodal nature of skill acquisition.  In many areas: Some people really get it; and others don't get it at all, and then there is the group in the middle who kinda get it.&lt;br /&gt;&lt;br /&gt;Of course this, split is not accepted in certain fundamental skills: Talking, walking, self-feeding, toileting, where only those with significant disabilities are excused a reasonable competence.&lt;br /&gt;&lt;br /&gt;In fact, everyone will find many things hard and many things easy.  For example, when I audited a drama subject as part of a teaching degree I found a bunch of (lovely) people who united in their terror of mathematics.   In my mathematics subjects, I am sure that I would have found some who felt the same way about getting up on stage.&lt;br /&gt;&lt;br /&gt;So what are the elements of (basic) programming?&lt;br /&gt;&lt;br /&gt;* Composition&lt;br /&gt;* Decomposition&lt;br /&gt;* Visualization&lt;br /&gt;* Precision and clarity&lt;br /&gt;* Use of and acquisition of formal language&lt;br /&gt;* Memory&lt;br /&gt;* Planning&lt;br /&gt;* Logic&lt;br /&gt;* Numeracy&lt;br /&gt;&lt;br /&gt;Deficiency in any of these is likely to lead to frustration.  But I maintain that there are two qualities that are necessary for &lt;span style="font-weight: bold;"&gt;any &lt;/span&gt;kind of learning:&lt;br /&gt;&lt;br /&gt;* Wanting to learn X&lt;br /&gt;* Patience when an element of X does not come easily&lt;br /&gt;&lt;br /&gt;Another factor is having learned something in the past which interferes with the new area of learning.   Examples:&lt;br /&gt;&lt;br /&gt;* Tennis requires a firm wrist on impact; squash a flexible wrist&lt;br /&gt;* Riding a bike caused me to almost throw myself off an adult-sized trike&lt;br /&gt;* My English grammar makes it hard for me to adapt to Hebrew&lt;br /&gt;* "You can teach anyone Lisp in 1 day, but it takes 3 if they already know C" (the use of parentheses is radically different)&lt;br /&gt;&lt;br /&gt;If someone really wants to learn something, and is patient and quietly determined, and has access to an instructor who can help in the basic areas, learning is possible, and may be surprisingly fruitful.&lt;br /&gt;&lt;br /&gt;One test of a dance teacher is whether (s)he can teach someone who lacks a sense of rhythm or is uncoordinated can teach these fundamentals, not just so that they can be applied in learning dances, but are transferable to other areas.&lt;br /&gt;&lt;br /&gt;Similarly for other teachers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5056022801993872609?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5056022801993872609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5056022801993872609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5056022801993872609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5056022801993872609'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/10/what-makes-x-hard.html' title='What makes X hard?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6778991864591403417</id><published>2007-09-17T20:55:00.000-07:00</published><updated>2007-09-17T21:19:19.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzles'/><title type='text'>How many boys?  How many girls?</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=";font-family:Arial;font-size:10;color:blue;"   &gt;&lt;span style="color: rgb(0, 0, 0);font-family:times new roman;" &gt;I hadn’t heard this one before, but I like it a lot:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;In a country in which people only want boys, every family continues to have children until they have a boy. &lt;o:p&gt;&lt;/o:p&gt;If they have a girl, they have another child. If they have a boy, they stop. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;What is the proportion of boys to girls in the country?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);font-family:times new roman;font-size:10;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;color:blue;"   &gt;&lt;span style="color: rgb(0, 0, 0);font-family:times new roman;" &gt;Apparently used as a Google interview question (not that I’m a great fan of puzzle-based interviewing).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;My long solution first&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);font-family:Arial;font-size:10;"  &gt;Distribution of families as proportions of all families in the country:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;            &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  lang="DA" &gt;&lt;o:p&gt;&lt;/o:p&gt;½: B&lt;br /&gt;¼: GB&lt;br /&gt;1/8: GGB&lt;br /&gt;1/16: GGGB&lt;br /&gt;etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Let F be the number of families.&lt;span style=""&gt;&lt;/span&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;How many boys?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Since every family stops after they get a boy the number of boys is F.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Alternatively, we can count the contributions of the different families:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Total boys =&lt;span style=""&gt;   &lt;/span&gt;F x (½ + ¼ + 1/8 + 1/16 + ...)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;This demonstrates that the infinite sequence&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;     &lt;/span&gt;½ + ¼ + 1/8 + 1/16 + …&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;sums to 1, which is also apparent if you stand 1 meter from a wall and 50 cm then 25 cm etc., etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;b style=""&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;How many girls?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Again we sum:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Total girls / F = ¼ x 1 + 1/8 x 2 + 1/16 x 3 + …&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=""&gt;= 1/4 + 1/8 + 1/16 + …&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;+ 1/8 + 1/16 + …&lt;br /&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;     &lt;/span&gt;+ 1/16 + …&lt;br /&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;           &lt;/span&gt;+ …&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;= &lt;span style=""&gt; &lt;/span&gt;1/2 x (½ + ¼ + 1/8 + 1/16 + ...)&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;+ 1/4 x (½ + ¼ + 1/8 + 1/16 + ...)&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;+ 1/8 x (½ + ¼ + 1/8 + 1/16 + ...)&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;+ …&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;= &lt;span style=""&gt; &lt;/span&gt;1/2 x 1&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;+ 1/4 x 1&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;+ 1/8 x 1&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;+ …&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=""&gt;= ½ + ¼ + 1/8 + 1/16 + ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;= 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;So, Total girls = F&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Solution&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Equal numbers!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Simplifying assumptions?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Birth rate of 50-50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul style="margin-top: 0cm; color: rgb(0, 0, 0);" type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;No multiple births&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Large population &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;No account made of multiple      generations&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Even without these assumptions, I would guess that the solution roughly holds.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Simple solution&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;Each child born has a 50-50 chance of being a boy or a girl.  Each birth is independent, and not influenced by decisions of this, or any other family, so naturally half are boys and half are girls.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:10;color:blue;"   &gt;&lt;span style="color: rgb(0, 0, 0);font-family:times new roman;" &gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;color:blue;"   &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6778991864591403417?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6778991864591403417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6778991864591403417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6778991864591403417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6778991864591403417'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/09/how-many-boys-how-many-girls.html' title='How many boys?  How many girls?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3821413930199558572</id><published>2007-09-16T16:58:00.000-07:00</published><updated>2007-09-16T17:15:11.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='software culture'/><title type='text'>What's important?</title><content type='html'>Computer scientist and mathematician Richard Hammond -- he of the Hamming Code -- used to ask his colleagues two questions.  In order:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;What the most important issues in your field?,&lt;/span&gt; and the follow-up&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Why aren't you working on those?&lt;/li&gt;&lt;/ol&gt;Often this induced a cold-shoulder response, but others were grateful for the nudge.&lt;br /&gt;&lt;br /&gt;I have been meditating on what the equivalent question should be in a business, as  opposed to Science. My tentative questions are:&lt;br /&gt;&lt;ol&gt;&lt;li style="font-style: italic;"&gt;What are the most important issues facing our customers?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Why aren't we working on those?&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;From this it follows that deeply understanding our customers' issues is of paramount importance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3821413930199558572?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3821413930199558572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3821413930199558572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3821413930199558572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3821413930199558572'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/09/whats-important.html' title='What&apos;s important?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1507560420455214831</id><published>2007-08-26T15:03:00.000-07:00</published><updated>2007-08-26T15:28:21.014-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>Academic Cross-Training</title><content type='html'>Cross-training is not a new idea.&lt;br /&gt;&lt;br /&gt;In most professional sports  cross-training is incorporated into the usual training regime.  Although weight-training and swimming are popular there are more exotic options around.  Some Australian Rules footballers have even &lt;a href="http://www.realfooty.com.au/news/news/a-champion-with-amazing-grace-bows-out/2007/08/25/1187462588281.html"&gt;dabbled in ballet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In cultures that emphasize the development of the individual as well as excellence, breadth &lt;span style="font-style: italic;"&gt;and  &lt;/span&gt;depth are valued.  And for those who like the etymological definition of philosophy -- love of learning -- this is a bit of a no-brainer.&lt;br /&gt;&lt;br /&gt;Now, if you are focussed on a narrow goal over a wide-ranging journey the diversions of breadth may prove a waste of time.  But if the converse holds you will find that there is much to learn by exploring other disciplines.  Here's what happened when physicist Richard Feynman &lt;a href="http://www.multitran.ru/c/m.exe?a=DisplayParaSent&amp;fname=Richard%20Feynman%5CChapter09"&gt;ventured into biology&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If two academic disciplines are dealing with similar material at a deep level, chances are that each has something to offer an individual who crosses over from the other side.&lt;br /&gt;&lt;br /&gt;Of course forcing everyone to compulsorily study X, usually leads to resentment from a significant proportion of those so conscripted, so when I say &lt;span style="font-style: italic;"&gt;should&lt;/span&gt; &lt;span style="font-style: italic;"&gt;study&lt;/span&gt;, I really mean &lt;span style="font-style: italic;"&gt;should be encouraged to study&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In terms of excellence, someone should make a list of people who have achieved excellence &lt;span style="font-style: italic;"&gt;after&lt;/span&gt; switching fields. &lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;In sports, it is well-known that gymnasts do well after switching to diving and ski-jumping.  From this I infer that gymnastics teaches transferable skills.&lt;br /&gt;&lt;br /&gt;What are the nominations for the gymnastics of academic disciplines?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1507560420455214831?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1507560420455214831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1507560420455214831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1507560420455214831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1507560420455214831'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/academic-cross-training.html' title='Academic Cross-Training'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6605817335619367180</id><published>2007-08-23T15:43:00.000-07:00</published><updated>2010-08-17T19:55:42.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software culture'/><title type='text'>The Programming Djinni Grants Wishes</title><content type='html'>As a commercial product develops the wish-list grows longer and longer.  User suggestions and feedback are collated and prioritized.  Pretty soon you have a &lt;span style="font-style: italic;"&gt;very &lt;/span&gt;large list. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;The tragedy of the C cases&lt;/span&gt;&lt;br /&gt;Here's the problem: Lots of worthy but little items are continually pushed to the bottom of the pile, by the latest big feature. &lt;br /&gt;&lt;br /&gt;I call this "the tragedy of the C cases".  These items of functionality may languish, if proper discipline is respected, never bubbling to the top.&lt;br /&gt;&lt;br /&gt;There are disciplined ways around this use Scrum and XP style planning, but these require buy-in from the non-programmers and may not be achievable within your organization. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;The magic approach&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Here's a simple and fun alternative for a small company or department: One day per month -- customarily on the 23rd (or the nearest weekday)  --  one or more programmers turn into djinnis who attempt to grant reasonable and achievable wishes to one lucky person in the company.&lt;br /&gt;&lt;br /&gt;This breaks up the usual routine (a good thing as per the &lt;a href="http://en.wikipedia.org/wiki/Hawthorne_effect"&gt;Hawthorne effect&lt;/a&gt;), is engaging for the lucky person -- who sees some immediate results -- and it is also good for the programmers, who get the satisfaction of working directly with a tangible person for a change rather than through a mediated priority list.  And the software gets nicely polished.&lt;br /&gt;&lt;br /&gt;Try it: See how you go; let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6605817335619367180?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6605817335619367180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6605817335619367180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6605817335619367180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6605817335619367180'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/programming-djinni-grants-wishes.html' title='The Programming Djinni Grants Wishes'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3408051067770299590</id><published>2007-08-21T20:59:00.000-07:00</published><updated>2007-08-21T21:09:33.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics of software'/><title type='text'>Re-write or re-factor?</title><content type='html'>On individual projects I have usually found that a re-write leads to smaller, cleaner, faster solutions. &lt;br /&gt;&lt;br /&gt;I attribute this to learning acquired from the previous attempts/versions, which I can incorporate in the form of improved abstractions and better trade-offs subsequently.&lt;br /&gt;&lt;br /&gt;Some re-use of "golden nuggets" from earlier iterations may also be possible, and is certainly desirable.&lt;br /&gt;&lt;br /&gt;Some lessons learned can be incorporated incrementally through re-factorings, but there are times when incremental improvement takes you to a local maximum and traps you there.&lt;br /&gt;&lt;br /&gt;On big commercial projects other considerations come into play.  Until the new code-base is up you need to contend with the cost of parallel development, and this period will be longer the greater the legacy.  Unless, of course, your new abstractions are brilliantly efficient, and/or you can cut away a lot of stuff that was not needed.&lt;br /&gt;&lt;br /&gt;Once a project is sufficiently large, given finite resources, it may eventually be too late to &lt;span style="font-style: italic;"&gt;ever &lt;/span&gt;re-write!&lt;br /&gt;&lt;br /&gt;Here's some more &lt;a href="http://notes-on-haskell.blogspot.com/2007/08/rewriting-software.html"&gt;useful discussion&lt;/a&gt; by Adam Turoff on these issues prompted by &lt;a href="http://www.oreillynet.com/onlamp/blog/2007/08/informal_survey_do_rewrites_re.html"&gt;survey question&lt;/a&gt; by Ovid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3408051067770299590?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3408051067770299590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3408051067770299590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3408051067770299590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3408051067770299590'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/re-write-or-re-factor.html' title='Re-write or re-factor?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-4721327845171112691</id><published>2007-08-21T15:36:00.000-07:00</published><updated>2007-08-21T15:54:50.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>Is Law a Branch of Computer Science?</title><content type='html'>I studied Law as well (as Science) early in my University career before relinquishing it on account of near-terminal boredom during Contracts (the content of the first third of which ironically proved quite useful to me subsequently).&lt;br /&gt;&lt;br /&gt;I remember a visiting lecture by a Government draftsperson, whose job it was to draft legislation.  He also happened to be blind.  Aha, I thought, this is why legislation is so appallingly structured.  That was undoubtedly unfair.&lt;br /&gt;&lt;br /&gt;Later I came to the view that lawyers should study programming in order to learn how to structure large descriptions about processes and contingencies.&lt;br /&gt;&lt;br /&gt;Now, Dave has come along with this brilliant comparison of &lt;a href="http://blogs.netapp.com/dave/2007/08/think-of-a-will.html"&gt;legal language and programming languages&lt;/a&gt;.  It is funny because there are several truths in there.&lt;br /&gt;&lt;br /&gt;So, perhaps in the 21st century it is time to include a compulsory "programming for lawyers" unit, along with "legal process" as an introductory subject?&lt;br /&gt;&lt;br /&gt;This would extend the wider view of Computer Science as a Natural Science, to cultural endeavours such as Law.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-4721327845171112691?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/4721327845171112691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=4721327845171112691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4721327845171112691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/4721327845171112691'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/is-law-branch-of-computer-science.html' title='Is Law a Branch of Computer Science?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8147583086912970219</id><published>2007-08-20T15:14:00.000-07:00</published><updated>2007-08-20T15:47:42.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>Calculus?  Which Calculus?</title><content type='html'>In high school and University I learned Calculus, by which I mean the Differential and Integral Calculus of Newton and Leibniz, and their extensions.  I do not think that I really grasped the meaning of a continuous function until I studied &lt;span style="font-style: italic;"&gt;metric topology&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I like calculus, I have used it professionally, and it is a glory of the modern age, but I do question the cost/benefit of teaching it to millions (billions?) of children on account of its difficulty.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;What makes calculus &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;hard&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;?  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I would say the relatively high level of abstraction, and in particular becoming comfortable with with either limits or infinitesimals (hello: non-standard Analysis).  These things strain our intuition.&lt;br /&gt;&lt;br /&gt;Why is calculus taught in high-school?  My guesses:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is essential for physics and engineering, and other quantitative fields&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is very beautiful and powerful (but you will not see that at high school)&lt;/li&gt;&lt;li&gt;It is challenging&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It has a filtering effect on students&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tradition&lt;/li&gt;&lt;/ul&gt;Since it has to be re-taught at College / University, I wonder whether it might be time to start teaching other Calculi in high school, just to mix things up a bit.&lt;br /&gt;&lt;br /&gt;Perhaps a progressive school could hold a "calculus bake-off" and try to gauge the suitability and broad benefits of teaching and learning the various calculi?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Which other calculi could be taught?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Some might opt for the predicate calculus (also known as&lt;a href="http://mathworld.wolfram.com/First-OrderLogic.html"&gt; first-order logic&lt;/a&gt;), but my vote goes to the &lt;a href="http://en.wikipedia.org/wiki/Lambda_calculus"&gt;lambda calculus&lt;/a&gt;, which is fundamental to the theory of computing, and useful in practice.  In fact there are computer languages such as Scheme (a Lisp dialect), ML, and Haskell that are essentially souped-up forms of the lambda calculus.&lt;br /&gt;&lt;br /&gt;And if high-school sounds a bit late to get started with such an important subject, here is a &lt;a href="http://worrydream.com/AlligatorEggs/"&gt;game&lt;/a&gt; designed for eight year-olds that introduces the essential ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8147583086912970219?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8147583086912970219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8147583086912970219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8147583086912970219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8147583086912970219'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/calculus-which-calculus.html' title='Calculus?  Which Calculus?'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-3898840371704687023</id><published>2007-08-16T15:35:00.000-07:00</published><updated>2007-08-16T15:47:33.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='academia'/><title type='text'>There is no such thing as Computer Science</title><content type='html'>Not my words, but from a rather enjoyable &lt;span style="font-style: italic;"&gt;rant&lt;/span&gt;, &lt;a href="http://unqualified-reservations.blogspot.com/2007/08/whats-wrong-with-cs-research.html"&gt;What's wrong with CS research&lt;/a&gt;.  Here's the bit containing the best quote (&lt;span style="font-weight: bold;"&gt;my emphasis&lt;/span&gt;):&lt;br /&gt;&lt;blockquote&gt;So here's the first thing that's wrong with CS research: there's no such thing as CS research. First, there is no such thing as "computer science." Except for a few performance tests and the occasional usability study, nothing any CS researcher does has anything to do with the Scientific Method. Second, there is no such thing as "research." &lt;span style="font-weight: bold;"&gt;Any activity which is not obviously productive can be described as "research."&lt;/span&gt; The word is entirely meaningless. All just semantics, of course, but it's hardly a good sign that even the &lt;span style="font-style: italic;"&gt;name&lt;/span&gt; is fraudulent.&lt;br /&gt;&lt;br /&gt;When we look at what "CS researchers" actually do, we see three kinds of people.  We can describe them roughly as &lt;span style="font-style: italic;"&gt;creative programmers&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;mathematicians&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;bureaucrats&lt;/span&gt;.&lt;br /&gt;&lt;/blockquote&gt;If only he had claimed that there was no such thing as Science, now that would have been a fun proposition to explore!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-3898840371704687023?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/3898840371704687023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=3898840371704687023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3898840371704687023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/3898840371704687023'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/there-is-no-such-thing-as-computer.html' title='There is no such thing as Computer Science'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-1896850967425437356</id><published>2007-08-12T15:49:00.000-07:00</published><updated>2007-08-20T15:49:49.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional programming'/><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><title type='text'>Learning about (Computational) Monads</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;I am interested in acquiring programming idioms -- or if you like &lt;span style="font-style: italic;"&gt;patterns&lt;/span&gt; -- that facilitate a clear and disciplined approach&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;to organizing &lt;span style="font-style: italic;"&gt;state&lt;/span&gt;.  As applications grow large and certain operations transform state in a large-scale fashion, it becomes harder to understand and modify program behavior.&lt;br /&gt;&lt;br /&gt;Perhaps &lt;span style="font-style: italic;"&gt;monads &lt;/span&gt;offer a better way, but I don't really get them yet ...&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;What are Monads?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I think Leibniz invented the term &lt;span style="font-style: italic;"&gt;monad&lt;/span&gt; to describe some kind of indivisible fundamental entity in his philosophy: Presumably the term &lt;span style="font-style: italic;"&gt;atom&lt;/span&gt; was too Greek  for him.  Anyway: I do not mean philosophical monads, or biological monads, or mathematical -- category theory -- monads  (although now we are getting warmer).&lt;br /&gt;&lt;br /&gt;Right now I mean computational monads, the ones so beloved of Haskell programmers, but potentially of use elsewhere.&lt;br /&gt;&lt;blockquote&gt;A &lt;span style="font-style: italic;"&gt;monad &lt;/span&gt;is a family of types &lt;span style="font-family:courier new;"&gt;M t&lt;/span&gt;, based on a polymorphic type constructor &lt;span style="font-family:courier new;"&gt;M&lt;/span&gt;, with functions&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    return :: t -&gt; M t&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    (&gt;&gt;=) :: M t -&gt; (t -&gt; M u) -&gt; M u&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;satisfying&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    return a &gt;&gt;f = f a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    m &gt;&gt;= return = m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    m &gt;&gt;= (\a -&gt; (f a) &gt;&gt;=g) = (m &gt;&gt;= f) &gt;&gt;= g&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;This definition gave me flashbacks to Pure Mathematics Honours (4th year University) where I encountered some classes so abstract as to seem totally detached from reality: "Hello Banach Spaces and Algrebras!"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;How to get it&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But having survived a mathematics education and having a ridiculously high sense of self-efficacy I know how to get through this kind of obstacle.  There are two methods:&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Abstractions first:&lt;/span&gt; Treat this as a game where the rules are given, and play with them until they become familiar and &lt;span style="font-style: italic;"&gt;seem &lt;/span&gt;natural.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Empirical approach&lt;/span&gt;: Walk in the footsteps of the discoverers by building some practical experience first, so that the abstractions begin to make sense.&lt;/li&gt;&lt;/ol&gt;Better still, work from both ends.  Anyway, both approaches require doing, as opposed to reading, and I am starting with the following tutorial:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html"&gt;You Could Have Invented Monads! (And Maybe You Already Have)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;which seems to be helping, and belongs to the latter camp.&lt;br /&gt;&lt;br /&gt;More later ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-1896850967425437356?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/1896850967425437356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=1896850967425437356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1896850967425437356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/1896850967425437356'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/learning-about-computational-monads.html' title='Learning about (Computational) Monads'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-880116155299200125</id><published>2007-08-09T14:22:00.000-07:00</published><updated>2007-08-09T14:49:51.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='functional programming'/><title type='text'>Functional Programming Interest Group</title><content type='html'>An idea has been slowly germinating in my mind:  Try to start a new special interest group (SIG) meeting in Melbourne once a month, but also with a virtual presence.&lt;br /&gt;&lt;br /&gt;I have been working slowly through Abelman &amp; Sussman's Structure and Interpretation of Computer Programming (SICP) and exercises, the MIT classic "introductory" text&lt;span style="font-style: italic;"&gt;&lt;/span&gt;, but would like to share the experience.  The great thing about SICP is that it is free online, as are accompanying video lectures -- the first was inspirational, but subsequently I have relied on the text.  The tools are available online and free.  The language used is Scheme (a teaching/research Lisp), but it's the ideas that come through.&lt;br /&gt;&lt;br /&gt;There are other books out there which promise to capture exciting ideas using various f.p.-ish languages as vehicles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hudak, &lt;span style="font-style: italic;"&gt;The &lt;span style="font-weight: bold;"&gt;Haskell &lt;/span&gt;School of Expression&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Armstrong, &lt;span style="font-style: italic;"&gt;Programming in &lt;span style="font-weight: bold;"&gt;Erlang&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Siebel, &lt;span style="font-style: italic;"&gt;Practical &lt;span style="font-weight: bold;"&gt;Common Lisp &lt;/span&gt;&lt;/span&gt;(text available online)&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;I believe that languages such as these are worth studying for the ideas that they develop:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Haskell: &lt;/span&gt;Lazy evaluation, monadic computation, mathematical modelling, and more ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Erlang: &lt;/span&gt;Practical, reliable, massive parallelism, ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lisps: &lt;/span&gt;Code-data duality&lt;br /&gt;&lt;br /&gt;I am also interested in F# (as the .NET representative of the ML / OCAML) family, but am waiting on the publication and review of more books.  [Forgive me for leaving Smalltalk, Forth, plus the various languages &lt;span style="font-style: italic;"&gt;du jour&lt;/span&gt; off my list: There may well be too many already.]&lt;br /&gt;&lt;br /&gt;Other probably books worth looking into:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Graham, &lt;span style="font-style: italic;"&gt;On Lisp&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Norvig et al, &lt;span style="font-style: italic;"&gt;PAIP&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;AI: A modern approach&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Kiczales, The Art of the Meta-Object Protocol&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Sussman and Wisdom, Structure and Interpretation of Classical Mechanics&lt;/span&gt; (text available online)&lt;/li&gt;&lt;li&gt;Doets and van Eijck, &lt;span style="font-style: italic;"&gt;The Haskell Road to Logic, Maths and Programming&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Okasaki, &lt;span style="font-style: italic;"&gt;Purely Functional Data Structures&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="bindingBlock"&gt;&lt;/span&gt;Of course these are just some highly rated books, and not &lt;span style="font-weight: bold;"&gt;the literature, &lt;/span&gt;but my objective  here is to survey some of the more mature parts of field; the leading edge can wait.&lt;br /&gt;&lt;br /&gt;It's all about the joy of new and ongoing learning; with the bonus of becoming more skillful, productive, and having a chance of successfully working with the coming generation of massively multi-core machines.&lt;br /&gt;&lt;br /&gt;I would be interested in hearing expressions of interest, suggestions for format plus any experiences and tips from anyone involved in such groups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-880116155299200125?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/880116155299200125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=880116155299200125' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/880116155299200125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/880116155299200125'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/08/functional-programming-interest-group.html' title='Functional Programming Interest Group'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-5717977296573458566</id><published>2007-07-22T14:34:00.001-07:00</published><updated>2007-07-24T02:28:08.466-07:00</updated><title type='text'>XML and ASN.1</title><content type='html'>In 2002 -- 5 years ago! -- I spent a year working with Steven Legg on establishing a decent mapping between ASN.1 (the standard for directory structures) and an appropriate encoding in XML.  Since then I have gone onto other things, but Steven has continued to work away and last week this work reached IETF request for comment status:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;        RFC 4910&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      Title:      &lt;a href="http://www1.ietf.org/mail-archive/web/ietf-announce/current/msg03904.html"&gt;Robust XML Encoding Rules (RXER)&lt;/a&gt;&lt;br /&gt;                  &lt;a href="http://www1.ietf.org/mail-archive/web/ietf-announce/current/msg03904.html"&gt;for Abstract Syntax Notation One (ASN.1)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;      Author:     S. Legg, D. Prager&lt;br /&gt;&lt;br /&gt;      Status:     Experimental&lt;br /&gt;&lt;br /&gt;      Date:       July 2007&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Congratulations, Steven!&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-5717977296573458566?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/5717977296573458566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=5717977296573458566' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5717977296573458566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/5717977296573458566'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/07/xml-and-asn1.html' title='XML and ASN.1'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6550229261915618323</id><published>2007-07-10T16:27:00.000-07:00</published><updated>2007-07-10T16:56:29.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Parsimony in Design</title><content type='html'>William Clinger writes in the introduction to the revisions to the Scheme programming language standards (&lt;span style="font-weight: bold;"&gt;my emphasis&lt;/span&gt;):&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Programming languages &lt;/span&gt;should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.  &lt;span style="font-weight: bold;"&gt;Scheme&lt;/span&gt; demonstrates that a&lt;span style="font-weight: bold;"&gt; very small&lt;/span&gt; number of rules for forming&lt;span style="font-weight: bold;"&gt; expressions&lt;/span&gt;, with &lt;span style="font-weight: bold;"&gt;no &lt;/span&gt;restrictions on how they are&lt;span style="font-weight: bold;"&gt; composed&lt;/span&gt;, suffice to form a practical and efficient &lt;span style="font-weight: bold;"&gt;programming language &lt;/span&gt;that is flexible enough to support most of the major &lt;span style="font-weight: bold;"&gt;programming &lt;/span&gt;paradigms in use today.&lt;/blockquote&gt;It would be great to be able to similarly say:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Applications &lt;/span&gt;should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.  &lt;span style="font-weight: bold;"&gt;Rationale &lt;/span&gt;demonstrates that a &lt;span style="font-weight: bold;"&gt;small &lt;/span&gt;number of rules for forming &lt;span style="font-weight: bold;"&gt;structures&lt;/span&gt;, with &lt;span style="font-weight: bold;"&gt;minimal &lt;/span&gt;restrictions on how they are &lt;span style="font-weight: bold;"&gt;employed&lt;/span&gt;, suffice to form a practical and efficient &lt;span style="font-weight: bold;"&gt;application &lt;/span&gt;that is flexible enough to support most of the major &lt;span style="font-weight: bold;"&gt;decision-making &lt;/span&gt;paradigms in use today.&lt;/blockquote&gt;Step 2: Make it so!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6550229261915618323?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6550229261915618323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6550229261915618323' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6550229261915618323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6550229261915618323'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/07/parsimony-in-design.html' title='Parsimony in Design'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6144406119054333154</id><published>2007-07-02T15:44:00.000-07:00</published><updated>2007-07-03T15:25:48.220-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Taking stock</title><content type='html'>I have been working at Austhink now for a little under two years.  I am not sure what my employee number is, but it is less than 10.&lt;br /&gt;&lt;br /&gt;My job title says "Senior Software Developer", but Austhink is or was a start-up, and at a start-up everyone chips in where-ever they can.  What have I actually been up to?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Project Management / Team Leadership&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I have been the senior hands-on guy in an Agile Team&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Estimating and clarifying use-cases / user stories&lt;/li&gt;&lt;li&gt;Mentoring other team members (and learning from them too), largely through pair-work and mostly daily meetings&lt;/li&gt;&lt;li&gt;Working with Andy Bulka -- our Technical Director -- to create and sustain an effective and productive atmosphere&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;I have acted as second-level support&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Software Design&lt;/span&gt;&lt;br /&gt;I have contributed to the detailed design Austhink's flagship product, Rationale, and associated licensing system.  Examples of my touch include my on-going crusade against modes, and searching for simplifications, such as the use of an integrated page-preview instead of a separate print-preview window.  And let us not forget the humourous messages that appear on start-up.&lt;br /&gt;&lt;br /&gt;I have made many more suggestions and performed many more experiments than have made it into the final product, but I believe that the objective is creativity and net output, rather than high hit rate (but lower output).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Architecture&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I have made several key contributions to the architecture of the software including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Researched options and made technology recommendations.  E.g.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Make:&lt;/span&gt; The development of a home-grown graph visualization layer (not using Windows Forms) rather than  building on top of a third-party product.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Buy:&lt;/span&gt; The purchase of DotNetBar's Office 2007-style Ribbon Interface tool rather than using more traditional Windows menus, in early 2006&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The use of a programming language syntax (Python) for our file-format -- instead of the more obvious choice of XML -- an idea borrowed from Lisp  which has provided several dividends:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Our API became our file-format, rather than a separate interface&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Identical format is used for copy / paste&lt;/li&gt;&lt;li&gt;Allowed an elegant solution (also mine) to the problem of forward-compatibility  (i.e. opening up a file from a later version of the application in an older copy of the software leads to graceful degradation, including an error report)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Found a way to combine Windows drag-and-drop with our own system (almost, but not quite seamlessly)&lt;/li&gt;&lt;li&gt;Designed a functional-programming style animation sub-system that is being incrementally introduced into Rationale&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The extension of the Command Pattern with nestable Begin and End "blocks" to solve the problem of placing compound expressions on the undo/redo-stack that effectively solved the problem of making necessarily sequential multi-step actions easily undo-able and re-doable in a simple fashion.. This was a considerable improvement on our previous "solutions" which were slowing development and increasing complexity.&lt;/li&gt;&lt;li&gt;The use of digital-signing as part of our licensing-system&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Software Implementation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Have taught and coached the use of effective techniques such as Test-Driven Development, Design-by-Contract, and Refactoring to generate a fairly robust, efficient and featureful product in quick time.&lt;/li&gt;&lt;li&gt;Have written or co-written much of the algorithmic code myself, especially in the advanced aspects of the workspace area (drop-zones, overview window)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Have managed to stay out of some areas to allow junior colleagues some freedom to develop without "constant" interference&lt;/li&gt;&lt;li&gt;I have found and fixed or worked around several nasty bugs, including one doozy in the Microsoft's .NET framework&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Intellectual Property&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I have helped liaise and collaborated with our PhD student Peter Sbarski on his algorithmic work&lt;/li&gt;&lt;li&gt;Invented a means for drawing "organic edges" used in Analysis Mode&lt;/li&gt;&lt;li&gt;Invented a repulsion algorithm (in conjunction with Ben Loft)&lt;/li&gt;&lt;li&gt;Invented a way to relax the Picture Rail Principle (which Peter has since generalized)&lt;/li&gt;&lt;li&gt;Helped draft a patent application&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Business Stuff&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Suggested simplifications to business processes, especially to licensing.  E.g.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Observed that we did not need to define a separate product from upgrading ReasonAble users, but could use the Coupon system instead&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Entered the winning suggestion for the name of the monthly Rationale newsletter, Ratatouille&lt;/li&gt;&lt;li&gt;Monitored the web for relevant trends (i.e. read reddit and Y-Combinator news :-)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;People Stuff&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Assisted the Technical Director interview for permanent staff and contractors&lt;/li&gt;&lt;li&gt;Initiated the tradition of bi-weekly lunches in Lygon Street&lt;/li&gt;&lt;li&gt;Contributed to the Rationale mailing list&lt;/li&gt;&lt;li&gt;Supplied festive food (e.g. cheesecake) on culturally significant occasions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hosted the 2006 Austhink X-mas party&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So that is some of what I have been doing for the last two years.   On the personal side I became a father for the second time, received my second-degree black belt in Jiu-Jitsu (and first-degree in Judo), continued to run my martial arts club (now in its third year), started two blogs, and begun to develop a very basic competence in spoken Hebrew.&lt;br /&gt;&lt;br /&gt;Next stop is to plan a bit of what I would like to do in the next couple of years.&lt;br /&gt;&lt;br /&gt;Goal #1: Completion of toilet training.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6144406119054333154?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6144406119054333154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6144406119054333154' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6144406119054333154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6144406119054333154'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/07/taking-stock.html' title='Taking stock'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-925670983453158206</id><published>2007-06-24T14:48:00.000-07:00</published><updated>2007-06-24T15:20:30.012-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><category scheme='http://www.blogger.com/atom/ns#' term='user feedback'/><title type='text'>The Medical Model of User Feedback</title><content type='html'>From a Business Week &lt;a href="http://www.businessweek.com/innovate/content/jun2007/id20070615_198176.htm"&gt;interview &lt;/a&gt;with Clayton Christensen, author of &lt;a href="http://www.amazon.com/Innovators-Dilemma-Revolutionary-Business-Essentials/dp/0060521996/ref=pd_bbs_sr_1/103-9480112-8645412?ie=UTF8&amp;s=books&amp;amp;qid=1182721845&amp;sr=8-1"&gt;The Innovator's Dilemma&lt;/a&gt;:&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;blockquote&gt;&lt;strong&gt;In &lt;cite&gt;The Innovator's Dilemma&lt;/cite&gt; you warn that the maxim "staying close to your customers" can lead you astray. Wouldn't a cursory reading of the book say "don't listen to your customers?"&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;You're exactly right. The cursory reading is "don't listen." The deep reading is you have to be careful which customers you listen to, and then you need to watch what they do, not listen to what they say.&lt;/blockquote&gt;The last part of this -- watch what they do / don't listen to what they say -- while perhaps superficially disrespectful is a key part of what I call the &lt;span style="font-weight: bold;"&gt;Medical Model of User Feedback&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Symptoms and Signs&lt;/span&gt;&lt;br /&gt;When a (medical) doctor examines a patient she will usually ask for &lt;span style="font-weight: bold;"&gt;symptoms &lt;/span&gt;-- what is the patient's experience? -- and look for &lt;span style="font-weight: bold;"&gt;signs&lt;/span&gt; -- her own observations. &lt;br /&gt;&lt;br /&gt;Generally signs are regarded as the more significant, since the patient is typically neither particularly well-trained at interpretation nor unbiased.  This is why watching people is invaluable when tuning software features. &lt;br /&gt;&lt;br /&gt;By all means listen to User Feedback and requests, but consider it an early step towards revision and improvement, not the last word.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-925670983453158206?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/925670983453158206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=925670983453158206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/925670983453158206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/925670983453158206'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/06/medical-model-of-user-feedback.html' title='The Medical Model of User Feedback'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7487042294929551693</id><published>2007-06-14T15:38:00.000-07:00</published><updated>2007-06-14T16:08:52.259-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics of software'/><title type='text'>Pareto and The Wedding Reception Principle</title><content type='html'>Lately I have been thinking about points of diminishing returns, and perfectionism.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto Principle&lt;/a&gt; or 80-20 Rule says -- among other things -- that roughly 80% of benefit is derived from 20% of the work.  Another statement is, "the first 90% of a task takes 90% of the time, and the last 10% takes the other 90% of the time".&lt;br /&gt;&lt;br /&gt;Now, for maximum productivity, one should always pull-up short when the first 80% or -- thereabouts -- is covered, and move on to other tasks.  But in practice there will be times when you need to go that last 20%.  For example, if you are competing on quality, that last 20% is going to be important at least some of the time.&lt;br /&gt;&lt;br /&gt;I have my own principle, &lt;span style="font-weight: bold;"&gt;The Wedding Reception Principle&lt;/span&gt;, which is even  more useful than the Pareto Principle.  It states that in any broad endeavour,  if all aspects are up to a good-standard then people will be struck by the excellence of one-or-two outstanding aspects.  On the other hand, if &lt;span style="font-style: italic;"&gt;any&lt;/span&gt; one thing is sub-standard, that is what people will remember, regardless of whether everything else is exceptionally good.&lt;br /&gt;&lt;br /&gt;For example, at a wedding reception, if the food is bad, that will be what everyone talks about, not how great the speeches were or how much fun the dancing was.  But if the food was merely ok, and the speeches outstanding, it will be the speeches that everyone remembers and talks about, and their general impression will be positive.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In other words: &lt;/span&gt;Make everything good, nothing bad, and a few things extraordinary.  And pick those things that you intend to be extraordinary carefully, because you will be fighting Pareto and spending lots of time on them.  It would be a shame if they turned out to be relatively unimportant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7487042294929551693?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7487042294929551693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7487042294929551693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7487042294929551693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7487042294929551693'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/06/pareto-and-wedding-reception-principle.html' title='Pareto and The Wedding Reception Principle'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-7472633896560630001</id><published>2007-06-11T14:53:00.000-07:00</published><updated>2007-06-11T19:27:53.687-07:00</updated><title type='text'>Kids and Language</title><content type='html'>At time of writing my son is almost three-and-a-half, and my daughter is one-and-a-half.&lt;br /&gt;&lt;br /&gt;Jake's English is exceptional, but he was slow to get started. Jake learned English vocabulary, structure, and some accent according to the &lt;a href="http://www.blogger.com/www.hitentertainment.com/thomasthetankengine/"&gt;Thomas the Tank Engine&lt;/a&gt; method.&lt;br /&gt;&lt;br /&gt;He is now inventing words.  My favorite so far is &lt;span style="font-weight: bold;"&gt;ignoying&lt;/span&gt;, as in "Daddy, stop ignoying me", to which I sometimes respond: "Jake you're ignoying me, too".  I think it's a keeper.  I must start using it around work :-)&lt;br /&gt;&lt;br /&gt;Ella, on the other hand is more precocious, already saying many words and even a few two word sentences: "Herro Daddy".  I have started trying to speak -- and latterly learn -- Hebrew in an effort to get Andrea to talk to the kids in her fluent Hebrew.  It works this way: I speak in broken Hebrew and Andrea corrects me, and is reminded to use it a bit more,  and apparently feels less self-conscious about her (perceived) lack of vocabulary.&lt;br /&gt;&lt;br /&gt;[I am now trying to learn conversational Hebrew, and am enjoying making some progress, although I seem unable to reproduce the guttural "r" for love or money.]&lt;br /&gt;&lt;br /&gt;Ella is already saying "Toh-dah!" (thank-you) with aplomb.  Jake is more cool, sometimes imitating, but sans enthusiasm, and sometimes saying, "Don't speak to me like that!"&lt;br /&gt;&lt;br /&gt;I think that if I keep talking Andrea will keep speaking and Ella will learn for sure.  As for Jake, on this issue at least, I intend to continue ignoying him.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-7472633896560630001?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/7472633896560630001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=7472633896560630001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7472633896560630001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/7472633896560630001'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/06/kids-and-language.html' title='Kids and Language'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-551491385147771364</id><published>2007-05-27T16:37:00.000-07:00</published><updated>2007-05-27T17:10:09.859-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='argument mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='user feedback'/><title type='text'>Good User Feedback</title><content type='html'>Via Fiona (Austhink's Education Coordinator):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Startup screen is great, but how do I get it back?&lt;/li&gt;&lt;li&gt;Spell-check please!&lt;/li&gt;&lt;li&gt;Some well-heeled schools are getting the powerful combo of tablet PCs for staff and all students in conjunction with a projector (in preference to smart-boards)&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;Text pane open/close button goes missing&lt;/li&gt;&lt;li&gt;Some lap-tops have neither mice nor track-pads, making dragging of maps painful&lt;/li&gt;&lt;/ol&gt;Observations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Many (most?)  secondary-school students kick off an argument map with a question&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Often encouraged to do so by their teachers&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Students asking for links between boxes -- other than hierarchical relationships -- within a map&lt;/li&gt;&lt;li&gt;Kids are becoming more visual &lt;span style="font-style: italic;"&gt;and &lt;/span&gt;audial&lt;/li&gt;&lt;li&gt;Connection to the &lt;span style="font-weight: bold;"&gt;synthesizing mind&lt;/span&gt; and the &lt;span style="font-weight: bold;"&gt;disciplined mind&lt;/span&gt; in Howard "multiple intelligences" Gardner's &lt;a href="http://http://www.camsp.com/cornerstone/5minds/index.html"&gt;latest opus&lt;/a&gt;, &lt;span class="sans"&gt;&lt;a href="http://www.amazon.com/Five-Minds-Future-Howard-Gardner/dp/1591399122"&gt;Five Minds for the Future&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Other positives:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;.NET is becoming more pervasive (as more products require it)&lt;/li&gt;&lt;li&gt;Installation process is smooth&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-551491385147771364?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/551491385147771364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=551491385147771364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/551491385147771364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/551491385147771364'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/05/good-user-feedback.html' title='Good User Feedback'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6204000092512445118</id><published>2007-05-27T15:44:00.000-07:00</published><updated>2007-05-27T16:03:56.209-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software design'/><title type='text'>Abstract or Separate</title><content type='html'>As Rationale evolves we at Austhink -- the designers and programmers -- are again and again faced with a tension between on the one hand simplicity through separation, and on the other hand power through integration.&lt;br /&gt;&lt;br /&gt;Each time we add a new feature we face the design decision of whether it should be deeply integrated into existing features, or tacked on somewhat separately.   [Of course there is something of a continuum here.]&lt;br /&gt;&lt;br /&gt;For example, the ability to add an image to &lt;font style="font-style: italic;"&gt;any&lt;/font&gt; box generalizes the facility for images which were previously available only for basis boxes (and were in that case compulsory).  The generalization has the following consequences:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Basis boxes may now have &lt;font style="font-style: italic;"&gt;other&lt;/font&gt; images than the pre-defined ones&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Basis boxes are now less special than previously&lt;/li&gt;&lt;/ol&gt;I claim point 2. because whereas previously basis boxes were&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Visually distinct (on account of being the only boxes with images)&lt;/li&gt;&lt;li&gt;The only terminal category of box&lt;/li&gt;&lt;li&gt;Had a separate place in the epistemology of argument-mapping&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Now that point 1 has been eroded, we are left with points 2 and 3.  The argument in favor of these points are that they provide good "scaffolding" to ease the learning of the system, making them good for beginners, so they should be retained.&lt;br /&gt;&lt;br /&gt;This is argument is analogous to the following:&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;Bicycles are difficult to learn to ride on account of their instability, so all bicycles should have training wheels.&lt;/blockquote&gt;Of course, in the case of bicycles we allow the training wheels to be removed, and we provide tricycles for small children and even for adults with limitations to their balance or who failed to learn to ride a bicycle sans training wheels when young.&lt;br /&gt;&lt;br /&gt;So, when examining simplicity vs. power trade-offs the bicycle metaphor may be a good source of inspiration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6204000092512445118?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6204000092512445118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6204000092512445118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6204000092512445118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6204000092512445118'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/05/abstract-or-separate.html' title='Abstract or Separate'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-8898939842388475205</id><published>2007-05-22T15:17:00.000-07:00</published><updated>2008-12-10T21:18:44.216-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='judaism'/><title type='text'>The 10 Comapments</title><content type='html'>&lt;p&gt;Today is &lt;a href="http://www.ou.org/chagim/shavuot/aseret.htm"&gt;Shavuot&lt;/a&gt;, which marks the giving of the 10 commandments to Moses (&lt;a href="http://3.bp.blogspot.com/_NCmMYTi-30s/SCFe62ycw1I/AAAAAAAAACE/TTiQVoA62iY/s1600-h/Jake+as+moses+cropped.jpg"&gt;photo&lt;/a&gt;) and his homies.&lt;/p&gt;To celebrate this occasion there we will be cheesecake for morning tea.  &lt;a href="http://www.kabbalaonline.org/Holydays/shavuoth/Why_Cheesecake$.asp"&gt;Why cheesecake?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And to demonstrate that Shavout is not just about artery hardening goodies I have constructed a comparison chart of the original 10 commandments and a respected modern interpretation.&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;The Ten Commandments&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;The Ten &lt;/b&gt;Co&lt;b&gt;map&lt;/b&gt;ments&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Given to&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moses&lt;/td&gt;&lt;td&gt;Dan&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;By&lt;/b&gt;&lt;/td&gt;&lt;td&gt;God&lt;/td&gt;&lt;td&gt;Some dude&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;On&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Stone tablets&lt;/td&gt;&lt;td&gt;A slightly soiled napkin&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Where&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Atop Mt Sinai&lt;/td&gt;&lt;td&gt;Outside a small cafe in Carlton&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;I am the Lord your God who brought you out of slavery in Egypt.&lt;/td&gt;&lt;td&gt;I am Rationale&lt;sup&gt;TM&lt;/sup&gt; your mapping tool who freed you from the bonds of confusion.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall have no other gods but me.&lt;/td&gt;&lt;td&gt;You shall have no other mapping software but me*.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall not misuse the name of the Lord your God.&lt;/td&gt;&lt;td&gt;You shall not omit the little &lt;sup&gt;TM&lt;/sup&gt; symbol.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall remember and keep the Sabbath day holy.&lt;/td&gt;&lt;td&gt;You shall have a nice break between mapping exercises.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;5&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Honor your father and mother.&lt;/td&gt;&lt;td&gt;Pay your subscription / buy the upgrades.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;6&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall not murder.&lt;/td&gt;&lt;td&gt;You shall not own a Mac.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;7&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall not commit adultery.&lt;/td&gt;&lt;td&gt;You shall follow the Holding Hands rule, but that's all!&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;8&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall not steal.&lt;/td&gt;&lt;td&gt;You shall use many sources, and give references.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;9&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall not bear false witness against thy neighbour.&lt;/td&gt;&lt;td&gt;You shall not construct defamatory example maps about your colleagues.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;10&lt;/b&gt;&lt;/td&gt;&lt;td&gt;You shall not covet.&lt;/td&gt;&lt;td&gt;You shall not ask for too many new features at once.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;*And &lt;a href="http://bcisive.austhink.com/"&gt;bCisive&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-8898939842388475205?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/8898939842388475205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=8898939842388475205' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8898939842388475205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/8898939842388475205'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/05/10-comapments.html' title='The 10 Comapments'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-2399913968758040646</id><published>2007-05-17T20:45:00.000-07:00</published><updated>2008-12-10T21:18:44.412-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='argument mapping'/><title type='text'>A suspect for murder</title><content type='html'>Joseph Laronge &lt;a href="http://inferencepath.edublogs.org/2007/05/13/are-all-critical-questions-for-argument-schemes-critical/"&gt;presents a useful comparison&lt;/a&gt; of two different styles of mapping applied to the problem of whether Bob is a suspect for murder.&lt;br /&gt;&lt;br /&gt;The first is an argument map:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://download-v5.streamload.com/d8bd1542-f2bc-4e87-bce4-681a7779661b/storyshaping/Hosted/critical%20question%20May%2012%202007.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 156px; height: 176px;" src="http://download-v5.streamload.com/d8bd1542-f2bc-4e87-bce4-681a7779661b/storyshaping/Hosted/critical%20question%20May%2012%202007.jpeg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;and the second uses Laronge's own "path-mapping" conventions which he calls "pyramid style":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://download-v5.streamload.com/d8bd1542-f2bc-4e87-bce4-681a7779661b/storyshaping/Hosted/critical%20question%20May%2012%202007%20path%202.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 94px; height: 214px;" src="http://download-v5.streamload.com/d8bd1542-f2bc-4e87-bce4-681a7779661b/storyshaping/Hosted/critical%20question%20May%2012%202007%20path%202.jpeg" alt="" border="0" /&gt;&lt;/a&gt;I have taken the time to do my own argument map, which in a way which gives I think the best of both worlds:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The structure is largely taken from Laronge's particular path map, but&lt;/li&gt;&lt;li&gt;The co-premises are pulled out, making it easy to show where the reasoning and evidence are open to challenge&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NCmMYTi-30s/Rk0lJgYGfSI/AAAAAAAAABM/u9aeAKzJHrM/s1600-h/bob-is-a-murder-suspect.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_NCmMYTi-30s/Rk0lJgYGfSI/AAAAAAAAABM/u9aeAKzJHrM/s320/bob-is-a-murder-suspect.png" alt="" id="BLOGGER_PHOTO_ID_5065746001101749538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It looks like argument mapping in a legal context is ripe for advancement.  It will need people with skills in both mapping and the Law to work together to figure out how best to do it, both in terms of refining the method and conventions, and developing a sufficiently rich visual language.&lt;br /&gt;&lt;br /&gt;In my example I would like to have been able to indicate through a strong visual device the following "legal concepts", which are somewhat implicit at present:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A piece of cited law&lt;/li&gt;&lt;li&gt;Which which "side" is favored by each premise&lt;/li&gt;&lt;/ol&gt;This could be accomplished in a few ways, but I will not go into that point at this stage.  I am amore interested in finding out what else deserves to be reified in these kinds of maps.&lt;br /&gt;&lt;br /&gt;Ideally, once the visual language is sorted out it should be possible to provide "road-maps" and templates that can be readily molded to reflect a particular case.&lt;br /&gt;&lt;br /&gt;A big job indeed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-2399913968758040646?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/2399913968758040646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=2399913968758040646' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2399913968758040646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/2399913968758040646'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/05/suspect-for-murder.html' title='A suspect for murder'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NCmMYTi-30s/Rk0lJgYGfSI/AAAAAAAAABM/u9aeAKzJHrM/s72-c/bob-is-a-murder-suspect.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2260601671083443121.post-6359887646932200988</id><published>2007-05-16T14:45:00.000-07:00</published><updated>2008-12-10T21:18:45.129-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='argument mapping'/><title type='text'>Clumping: The Missing Mode</title><content type='html'>&lt;a href="http://www.austhink.com/rationale"&gt;Rationale&lt;/a&gt; -- the product that my working life revolves around -- currently has three mapping "modes": grouping; reasoning; and analysis.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reasoning mode&lt;/span&gt; is for loose informal reasoning:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NCmMYTi-30s/RkuAAAYGfMI/AAAAAAAAAAc/0pptzyo3trQ/s1600-h/private-vs-public-reasoning.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_NCmMYTi-30s/RkuAAAYGfMI/AAAAAAAAAAc/0pptzyo3trQ/s320/private-vs-public-reasoning.png" alt="" id="BLOGGER_PHOTO_ID_5065282943497698498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To tighten up the argument I use &lt;span style="font-weight: bold;"&gt;analysis mode&lt;/span&gt;, which allows me to break out the hidden premises:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NCmMYTi-30s/RkuNawYGfPI/AAAAAAAAAA0/Fzgtz2qszuU/s1600-h/private-vs-public-analysis.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_NCmMYTi-30s/RkuNawYGfPI/AAAAAAAAAA0/Fzgtz2qszuU/s320/private-vs-public-analysis.png" alt="" id="BLOGGER_PHOTO_ID_5065297696710360306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Grouping mode&lt;/span&gt; allows me to create tree-like structures for non-reasoning purposes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NCmMYTi-30s/RkuO-AYGfQI/AAAAAAAAAA8/wK_slRRHcJ0/s1600-h/private-vs-public-grouping.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_NCmMYTi-30s/RkuO-AYGfQI/AAAAAAAAAA8/wK_slRRHcJ0/s320/private-vs-public-grouping.png" alt="" id="BLOGGER_PHOTO_ID_5065299401812376834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So while the &lt;span style="font-weight: bold;"&gt;reasoning &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;analysis &lt;/span&gt;modes provide specialized support for argument mapping, it is &lt;span style="font-weight: bold;"&gt;grouping &lt;/span&gt;mode that one turns to for all other tasks.  I.e. Less sophisticated = more general.&lt;br /&gt;&lt;br /&gt;And through the magic of our powerful "morphing" facilities it is possible to start working in one mode and then have Rationale convert the map into either of the other modes almost instantly.  Very useful when you find yourself in the wrong mode!&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;So what's the missing mode?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In fact, it is possible to do reasoning in&lt;span style="font-weight: bold;"&gt; grouping mode&lt;/span&gt;, just without quite as much constraint as in &lt;span style="font-weight: bold;"&gt;reasoning mode&lt;/span&gt;, because fundamentally both of these modes manipulate "tree" structures.&lt;br /&gt;&lt;br /&gt;What's missing is a mode which generalizes &lt;span style="font-weight: bold;"&gt;analysis&lt;/span&gt; in the same way that &lt;span style="font-weight: bold;"&gt;grouping&lt;/span&gt;&lt;br /&gt;generalizes &lt;span style="font-weight: bold;"&gt;reasoning&lt;/span&gt;.  Let's call this new mode &lt;span style="font-weight: bold;"&gt;clumping&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;clustering&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I am not quite sure what the applications will be, but I am confident that they will emerge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2260601671083443121-6359887646932200988?l=dailykibitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dailykibitz.blogspot.com/feeds/6359887646932200988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2260601671083443121&amp;postID=6359887646932200988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6359887646932200988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2260601671083443121/posts/default/6359887646932200988'/><link rel='alternate' type='text/html' href='http://dailykibitz.blogspot.com/2007/05/clumping-missing-mode.html' title='Clumping: The Missing Mode'/><author><name>Daniel Prager</name><uri>http://www.blogger.com/profile/05502083078481742896</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/_NCmMYTi-30s/Svivw1YDXwI/AAAAAAAAAIU/k0SNR_3QYlg/S220/Screen+shot+2009-11-09+at+9.10.50+AM.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NCmMYTi-30s/RkuAAAYGfMI/AAAAAAAAAAc/0pptzyo3trQ/s72-c/private-vs-public-reasoning.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
