<?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-5828855760220275945</id><updated>2011-12-09T09:25:55.645-08:00</updated><category term='mobile'/><category term='space'/><category term='pirates'/><category term='marathon'/><category term='For Posterity'/><category term='javascript'/><category term='html5'/><category term='Hobbies'/><category term='perl'/><category term='zombies'/><category term='Cosplay'/><category term='fonts'/><category term='personal history'/><category term='ieee754'/><category term='cookie'/><category term='logo'/><category term='Singularity Thoughts'/><category term='scooby doo'/><category term='POFA'/><category term='Games'/><category term='iphone'/><category term='Travel'/><category term='narnia'/><category term='Caspian Quotes'/><category term='Projects'/><category term='family'/><category term='pets'/><category term='nazis'/><category term='traveller'/><category term='star trek'/><category term='ASCII Art'/><category term='c++'/><category term='Commoditization'/><category term='SciFi'/><category term='apple2'/><category term='halo'/><category term='basic'/><category term='Toys'/><category term='programming'/><category term='Entertainment'/><category term='whuffie'/><category term='indiana jones'/><category term='polyfill'/><category term='shim'/><category term='katamari'/><category term='San Francisco'/><category term='html'/><category term='vniic'/><category term='disneyland'/><category term='Random Thoughts'/><category term='microsoft'/><category term='quotes'/><category term='Computers and Internet'/><category term='Second Life'/><category term='calgary'/><title type='text'>Caution: Singularity Ahead</title><subtitle type='html'>Assorted ramblings of Joshua Bell.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default?start-index=101&amp;max-results=100'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>170</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7054042974522663651</id><published>2011-06-18T22:40:00.000-07:00</published><updated>2011-06-18T22:47:06.178-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers and Internet'/><title type='text'>Oh, that's what "ninched" means!</title><content type='html'>Way back when I mentioned "&lt;a href="http://cautionsingularityahead.blogspot.com/2005/06/temporal-ninching.html"&gt;Temporal Ninching&lt;/a&gt;", using "ninched" to refer to a mixed state checkbox. I just learned, thanks to &lt;a href="http://blogs.msdn.com/b/murrays/"&gt;Murray Sargent's blog&lt;/a&gt;, that NINCH is an acronym for "&lt;a href="http://blogs.msdn.com/b/murrays/archive/2011/05/07/ninch-and-emu.aspx"&gt;no input no change&lt;/a&gt;"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had the pleasure of working with Murray Sargent for a while when I was on the &lt;a href="http://en.wikipedia.org/wiki/Microsoft_InfoPath"&gt;InfoPath&lt;/a&gt;, sorry, Microsoft Office® InfoPath™ team. At least at the time, InfoPath, Word and RichEdit were one big happy document-authoring family in the org chart. I confess that I don't remember the details, but we spent several hours discussing the finer points of text editing services.&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/5828855760220275945-7054042974522663651?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7054042974522663651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/06/oh-thats-what-ninched-means.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7054042974522663651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7054042974522663651'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/06/oh-thats-what-ninched-means.html' title='Oh, that&apos;s what &quot;ninched&quot; means!'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/16877590477046380873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-871997256487539820</id><published>2011-05-31T21:40:00.001-07:00</published><updated>2011-05-31T21:41:15.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASCII Art'/><title type='text'>Gymboree Starship</title><content type='html'>The prototype can be seen on Caspian's T-Shirt from Gymboree.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;                                         _&lt;br /&gt;                                       ,'|`.&lt;br /&gt;                                      /  |  \&lt;br /&gt;                                     /   |   \&lt;br /&gt;                                    /.  / \  .\&lt;br /&gt;                                   /.  /   \  .\&lt;br /&gt;                                  /.   |   |   .\&lt;br /&gt;                          /|     /_____|___|_____\     |\&lt;br /&gt;                          ||      |  | -= =- |  |      ||&lt;br /&gt;                         .||   ,-'|  |       |  |`-.   ||.&lt;br /&gt;                         |  `-'___|  |       |  |___`-'  |&lt;br /&gt;                         |________|  | =---= |  |________|&lt;br /&gt;                                  |  |       |  |&lt;br /&gt;                                  |  |___H___|  |&lt;br /&gt;                                  | [|   |   |] |&lt;br /&gt;                                  |__|___|___|__|&lt;br /&gt;                                    \         /&lt;br /&gt;                                     \       /&lt;br /&gt;                                     /_     _\&lt;br /&gt;                                    [.=|   |=.]&lt;br /&gt;                                   [ H |   | H ]&lt;br /&gt;                                   |_H_|   |_H_|&lt;br /&gt;                                  /_____________\&lt;br /&gt;                                ,'  |   _|_   |  `.&lt;br /&gt;                              ,'    |  | | |  |    `.&lt;br /&gt;                            ,'      |  |_|_|  |      `.&lt;br /&gt;                           |        |    |    |        |&lt;br /&gt;                           |    ____|  __|__  |____    |&lt;br /&gt;                           |   |    | [__|__] |    |   |&lt;br /&gt;     /|                    |   |    |    |    |    |   |                    |\&lt;br /&gt;    |_]                  ,'|   |   / \   |   / \   |   |`.                  [_|&lt;br /&gt;    | |                ,',.|\  |  /   \  |  /   \  |  /|,.`.                | |&lt;br /&gt;    | |              ,'  ||| \ | /  H  \ | /  H  \ | / |||  `.              | |&lt;br /&gt;    | |            ,' |  |||H| | |  H  | | |  H  | | |H|||  | `.            | |&lt;br /&gt;    |__\         ,'   |  |||H| | |  H  | | |  H  | | |H|||  |   `.         /__|&lt;br /&gt;    || \\      ,'     |  `'|'| | |  H  | | |  H  | | |`|`'  |     `.      // ||&lt;br /&gt;    ||  \\___,'|      |    | | | |  H  | | |  H  | | | |    |      |`.___//  ||&lt;br /&gt;    |]  |      |      |    | | | |  H  | | |  H  | | | |    |      |      |  [|&lt;br /&gt;    ||  |______|______|    | / | \  H  / | \  H  / | \ |    |______|______|  ||&lt;br /&gt;    ||  |_____________|]   |/  |  \   /  |  \   /  |  \|   [|_____________|  ||&lt;br /&gt;    |__/              |____|___|___|_|___|___|_|___|___|____|              \__|&lt;br /&gt;                            """""""' `"""|"""' `""""""'&lt;br /&gt;                                         |&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/5828855760220275945-871997256487539820?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/871997256487539820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/gymboree-starship.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/871997256487539820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/871997256487539820'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/gymboree-starship.html' title='Gymboree Starship'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/16877590477046380873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2867644634351351979</id><published>2011-05-30T12:15:00.000-07:00</published><updated>2011-05-30T12:17:54.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASCII Art'/><title type='text'>ASCII Art</title><content type='html'>I'm starting to migrate my &lt;a href="http://calormen.com/Star_Trek/ASCII/"&gt;Star Trek ASCII Art Archive&lt;/a&gt; to &lt;a href="http://startrekasciiart.blogspot.com/"&gt;ye olde blogosphere&lt;/a&gt;. Seems like the right thing to do.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Probably about 10 minutes after I finish I'll realize I should have used &lt;a href="http://gist.github.com/"&gt;gist.github.com&lt;/a&gt; or a wiki or something so people could collaborate on it.&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/5828855760220275945-2867644634351351979?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2867644634351351979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/ascii-art.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2867644634351351979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2867644634351351979'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/ascii-art.html' title='ASCII Art'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/16877590477046380873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1041712463984226470</id><published>2011-05-28T10:31:00.000-07:00</published><updated>2011-05-28T10:34:02.895-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='shim'/><category scheme='http://www.blogger.com/atom/ns#' term='polyfill'/><title type='text'>requestAnimationFrame Shim/Polyfill</title><content type='html'>Trying out &lt;a href="https://github.com/inexorabletash/raf-shim"&gt;GitHub&lt;/a&gt; just for kicks. (Still preferring Mercurial as a VCS though.)&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:javascript"&gt;&lt;br /&gt;// requestAnimationFrame polyfill&lt;br /&gt;// http://webstuff.nfshost.com/anim-timing/Overview.html&lt;br /&gt;&lt;br /&gt;/*jslint browser:true*/&lt;br /&gt;&lt;br /&gt;window.requestAnimationFrame = &lt;br /&gt;    window.requestAnimationFrame ||&lt;br /&gt;    window.webkitRequestAnimationFrame ||&lt;br /&gt;    window.mozRequestAnimationFrame ||&lt;br /&gt;    window.oRequestAnimationFrame ||&lt;br /&gt;    window.msRequestAnimationFrame ||&lt;br /&gt;    (function () {&lt;br /&gt;&lt;br /&gt;        var requests = {},&lt;br /&gt;            TARGET_FPS = 60,&lt;br /&gt;            raf_handle = 1,&lt;br /&gt;            timeout_handle = -1;&lt;br /&gt;        &lt;br /&gt;        function isVisible(element) {&lt;br /&gt;            return element.offsetWidth &gt; 0 &amp;&amp; element.offsetHeight &gt; 0;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        window.requestAnimationFrame = function requestAnimationFrame(callback, element) {&lt;br /&gt;            var cb_handle = raf_handle;&lt;br /&gt;            raf_handle = raf_handle + 1;&lt;br /&gt;            requests[cb_handle] = {callback: callback, element: element};&lt;br /&gt;&lt;br /&gt;            if (timeout_handle === -1) {&lt;br /&gt;                timeout_handle = setTimeout(function () {&lt;br /&gt;                    var cur_requests = requests,&lt;br /&gt;                        time = +new Date(),&lt;br /&gt;                        keys = Object.keys(cur_requests),&lt;br /&gt;                        len = keys.length,&lt;br /&gt;                        i, &lt;br /&gt;                        request;&lt;br /&gt;                    &lt;br /&gt;                    requests = {};&lt;br /&gt;                    timeout_handle = -1;&lt;br /&gt;                    &lt;br /&gt;                    for (i = 0; i &lt; len; i += 1) {&lt;br /&gt;                        request = cur_requests[keys[i]];&lt;br /&gt;                        if (!request.element || isVisible(request.element)) {&lt;br /&gt;                            request.callback(time);&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }, 1000 / TARGET_FPS);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return cb_handle;&lt;br /&gt;        };&lt;br /&gt;&lt;br /&gt;        window.cancelRequestAnimationFrame = function cancelRequestAnimationFrame(handle) {&lt;br /&gt;&lt;br /&gt;            delete requests[handle];&lt;br /&gt;            &lt;br /&gt;            if (Object.keys(requests).length === 0) {&lt;br /&gt;                clearTimeout(timeout_handle);&lt;br /&gt;                timeout_handle = -1;&lt;br /&gt;            }&lt;br /&gt;        };&lt;br /&gt;    &lt;br /&gt;        return window.requestAnimationFrame;&lt;br /&gt;    }());&lt;br /&gt;&lt;br /&gt;window.cancelRequestAnimationFrame = &lt;br /&gt;    window.cancelRequestAnimationFrame ||&lt;br /&gt;    window.webkitCancelRequestAnimationFrame ||&lt;br /&gt;    window.mozCancelRequestAnimationFrame ||&lt;br /&gt;    window.oCancelRequestAnimationFrame ||&lt;br /&gt;    window.msCancelRequestAnimationFrame;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Go to the &lt;a href="https://github.com/inexorabletash/raf-shim"&gt;raf-shim repo on GitHub&lt;/a&gt; for the latest version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1041712463984226470?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1041712463984226470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/requestanimationframe-shimpolyfill.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1041712463984226470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1041712463984226470'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/requestanimationframe-shimpolyfill.html' title='requestAnimationFrame Shim/Polyfill'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/16877590477046380873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7985618946618462982</id><published>2011-05-27T22:11:00.000-07:00</published><updated>2011-05-27T22:13:06.676-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>Applesoft BASIC in JavaScript updated</title><content type='html'>My &lt;a href="http://calormen.com/applesoft/"&gt;Applesoft BASIC in JavaScript&lt;/a&gt; page is updated. It now actually compiles the BASIC program to JavaScript before running... although the executor, library, and I/O are all linked in during compilation so it's not emitting anything re-usable. Sorry.&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/5828855760220275945-7985618946618462982?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7985618946618462982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/applesoft-basic-in-javascript-updated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7985618946618462982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7985618946618462982'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/applesoft-basic-in-javascript-updated.html' title='Applesoft BASIC in JavaScript updated'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/16877590477046380873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8495415719004832322</id><published>2011-05-27T21:37:00.000-07:00</published><updated>2011-05-28T10:19:42.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>C++ Optimization Trick</title><content type='html'>Maybe this is old hat, but when I was writing a software rasterizer several years ago I came up with a trick for getting optimized variations for different render states (textured, flat shaded, Gouraud shaded, wireframe, z-write, z-test, cull-ccw, etc) without hand-writing multiple permutations of the rasterizer as is recommended by &lt;a href="http://www.amazon.com/Tricks-Programming-Gurus-Advanced-Graphics-Rasterization/dp/0672318350"&gt;LaMothe&lt;/a&gt; and others.&lt;br /&gt;&lt;br /&gt;It requires an optimizing C++ compiler that supports template functions. The trick is to pack as much state as possible into a single POD value like a 32-bit integer, write your function so that all of the if() tests for render state look at the integer for branching decisions, and call a template function that takes this value as a template parameter in a constant context like a switch statement.&lt;br /&gt;&lt;br /&gt;Here's the base function full of nasty branches:&lt;br /&gt;&lt;pre class="brush: cpp"&gt;&lt;br /&gt;result_t func(int flags, const data_t&amp; data) {&lt;br /&gt;&lt;br /&gt; if (flags &amp; OPT_A) {&lt;br /&gt;   // ...&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; if (flags &amp; OPT_B) {&lt;br /&gt;   if (flags &amp; OPT_C) {&lt;br /&gt;     // ...&lt;br /&gt;   }&lt;br /&gt;   else {&lt;br /&gt;     // ...&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt; else {&lt;br /&gt;   // ...&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Write this wrapper template function:&lt;br /&gt;&lt;pre class="brush: cpp"&gt;&lt;br /&gt;template &amp;lt;int flags&amp;gt;&lt;br /&gt;result_t func(const data_t&amp; data) {&lt;br /&gt;  return func(flags, data);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then call the versions you need optimized with this wrapper function:&lt;br /&gt;&lt;pre class="brush: cpp"&gt;&lt;br /&gt;result_t call_func(int flags, const data_t&amp; data) {&lt;br /&gt;  switch (flags) {&lt;br /&gt;    case 0: return func&amp;lt;0&amp;gt;(data);&lt;br /&gt;    case OPT_A: return func&amp;lt;OPT_A&amp;gt;(data);&lt;br /&gt;    case OPT_A | OPT_B: return func&amp;lt;OPT_A | OPT_B&amp;gt;(data);&lt;br /&gt;    case OPT_A | OPT_C: return func&amp;lt;OPT_A | OPT_C&amp;gt;(data);&lt;br /&gt;    case OPT_A | OPT_B | OPT_C: return func&amp;lt;OPT_A | OPT_B | OPT_C&amp;gt;(data);&lt;br /&gt;    default: return func(flags, data);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(Macros can be used to improve readability.)&lt;br /&gt;&lt;br /&gt;The compiler will expand the template to produce separate versions of the function with the specified flags as a constant template parameter, and most of the branches will be optimized away.&lt;br /&gt;&lt;br /&gt;Note that you don't need to include every permutation, just the variations you expect to be used. When I used this in a game prototype I had the default clause emit warnings so that I knew when I'd tripped over a render state that I had not yet marked for optimization.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8495415719004832322?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8495415719004832322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/c-optimization-trick.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8495415719004832322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8495415719004832322'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/05/c-optimization-trick.html' title='C++ Optimization Trick'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/16877590477046380873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-342693301194545187</id><published>2011-03-23T08:47:00.000-07:00</published><updated>2011-05-28T10:21:28.055-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Stack-Overflow and Out-of-Memory in JavaScript</title><content type='html'>Just to get it out on the Interwebz - how contemporary browsers behave when hitting two of the limits of the script execution environment:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;stack overflow&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Sample:&lt;br /&gt;&lt;pre class="brush: javascript"&gt;&lt;br /&gt;function a() { return a() + 1; } a();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IE9: Error, message: '&lt;i&gt;Out of stack space&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Firefox 4: InternalError, message: '&lt;i&gt;too much recursion&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Safari 5: RangeError, message '&lt;i&gt;Maximum call stack size exceeded&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Chrome 10: RangeError, message: '&lt;i&gt;Maximum call stack size exceeded&lt;/i&gt;', type:&amp;nbsp;'&lt;i&gt;stack_overflow&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Opera 11: Error, message: '&lt;i&gt;Maximum recursion depth exceeded&lt;/i&gt;'&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;out-of-memory&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Sample:&lt;br /&gt;&lt;pre class="brush: javascript"&gt;&lt;br /&gt;var s = 'x'; while(true) { s = s + s; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IE9: Error, message: '&lt;i&gt;Out of memory&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Firefox 4: InternalError, message '&lt;i&gt;allocation size overflow&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Safari 5: Error, message: '&lt;i&gt;Out of memory&lt;/i&gt;'&lt;/li&gt;&lt;li&gt;Chrome 10: sad browser tab - &lt;b&gt;not catchable&lt;/b&gt;(?)&lt;/li&gt;&lt;li&gt;Opera 11: my box ground to a crawl for several minutes; I ended up killing&amp;nbsp;the process&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Note that this could also indicate that a maximum size for a particular string was reached, so it's not as reliable a test.&lt;br /&gt;&lt;br /&gt;I brought this up on &lt;a href="https://mail.mozilla.org/pipermail/es-discuss/2011-March/013367.html"&gt;es-discuss&lt;/a&gt; to see there was interest in standardization.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-342693301194545187?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/342693301194545187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/03/stack-overflow-and-out-of-memory-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/342693301194545187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/342693301194545187'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2011/03/stack-overflow-and-out-of-memory-in.html' title='Stack-Overflow and Out-of-Memory in JavaScript'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8108338849085453358</id><published>2010-08-07T21:04:00.000-07:00</published><updated>2010-08-08T01:09:04.980-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='logo'/><title type='text'>Logo in JS with Web Workers</title><content type='html'>One of the most common requests I get for my &lt;a href="http://calormen.com/logo"&gt;Logo in JavaScript&lt;/a&gt; page is "can you watch the turtle draw?"&lt;br /&gt;&lt;br /&gt;This turns out be rather tricky. As currently written, the Logo interpreter converts Logo procedures into JavaScript functions, and evaluation takes place using the JavaScript stack. The "evaluate" step of the &lt;a href="http://en.wikipedia.org/wiki/Read-eval-print_loop"&gt;REPL&lt;/a&gt; is a single JavaScript call, which yields a JavaScript value. It would be possible to change the interpreter to not use this approach, but I'm rather fond of it, and it leads nicely towards converting the interpreter into a compiler. (It's most of the way there already, although in a non-traditional way.)&lt;br /&gt;&lt;br /&gt;And unfortunately, JavaScript in the browser executes in the "UI" thread so there's no opportunity for the display to update within the evaluation of a JS function. When running a Logo procedure or program the display freezes and you need to wait for the entire drawing to complete before you see the results.&lt;br /&gt;&lt;br /&gt;At least, that used to be the case.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.whatwg.org/specs/web-workers/current-work/"&gt;Web Workers&lt;/a&gt; are one of the technologies within the HTML5 marketing umbrella. Basically, they're threads for JavaScript. The design is very elegant but necessarily forces asynchronous communication between threads to avoid deadlock situations. This also limits resource sharing&amp;nbsp;- &lt;a href="http://en.wikipedia.org/wiki/Plain_old_data_structure"&gt;plain old data&lt;/a&gt; with no object references (basically, what you could serialize to&amp;nbsp;&lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt;). This means a worker can't get access to the UI - like a Canvas's 2D context object necessary for drawing.&lt;br /&gt;&lt;br /&gt;One approach is to define a domain-specific communication protocol between the worker and the main thread. For example, you could pass { "opcode": "draw_rect", "x": 100, "y": 100, "w": 50, "h": 50 } from the worker to the main thread, and change the calling code (in my case, the turtle object) to send this message instead of directly calling canvas context methods. Then you have the receiver interpret these opcodes and call the appropriate sequence of methods on the canvas context object.&lt;br /&gt;&lt;br /&gt;I started down this approach, but I'm lazy. And &lt;a href="http://en.wikipedia.org/wiki/Larry_Wall#Virtues_of_a_programmer"&gt;laziness is a virtue&lt;/a&gt;. So instead I came up with a general JavaScript proxy mechanism that allows nearly all of the code to remain untouched. Here's what it looks like:&lt;br /&gt;&lt;br /&gt;The main (only) thread used to have this code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: javascript"&gt;g_logo = new LogoInterpreter(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;new CanvasTurtle(canvas_elem.getContext('2d'),&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; canvas_elem.width,&amp;nbsp;canvas_elem.height)&lt;br /&gt;);&lt;br /&gt;// ... then g_logo.run(text) gets called&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The main thread now has this code:&lt;br /&gt;&lt;pre class="brush: javascript"&gt; &lt;br /&gt;var proxies = {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;'canvas':&amp;nbsp;canvas_elem.getContext('2d'),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;'window': window&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;var worker = new Worker('worker.js');&lt;br /&gt;worker.onmessage = function(event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var obj =&amp;nbsp;proxies[event.data.obj];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (event.data.call) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;obj[event.data.call].apply(obj, event.data.args);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if (event.data.set) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;obj[event.data.set] = event.data.value;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// bug!&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;g_logo = {&lt;br /&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;run: function(text) {&lt;br /&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;worker.postMessage({'command': 'run',&amp;nbsp;'text': text}); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;   worker.postMessage({&lt;br /&gt; 'command': 'init', &lt;br /&gt;&amp;nbsp;'width':&amp;nbsp;canvas_elem.width,&lt;br /&gt; &amp;nbsp;'height':&amp;nbsp;canvas_elem.height }&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The worker has this code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: javascript"&gt;// For converting arguments into something that can posted&lt;br /&gt;function toArray(o) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var a = [], i, len = o.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; len; i += 1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;a[i] = o[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return a;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Make a remote method call&lt;br /&gt;function remote_call(obj, method, args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;postMessage({'obj': obj, 'call': method, 'args': args});&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Make a remote property set&lt;br /&gt;function remote_set(obj, prop, value) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;postMessage({'obj': obj, 'set': prop, 'value': value});&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Create a new proxy class for the given methods and properties (lists of names)&lt;br /&gt;function makeProxyClass(methods, properties) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var ctor = function(name) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.name = name;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ctor.prototype = {};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;function proxy_method(obj, name) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;obj[name] = function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remote_call(this.name, name, toArray(arguments));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;function proxy_property(obj, name) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var getter = function() { return this['$' + name]; };&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var setter = function(s) { this['$' + name] = s; &lt;br /&gt;            remote_set(this.name, name, s); };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (typeof Object.defineProperty === 'function') {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// ES5&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object.defineProperty(obj, name, { 'get': getter, 'set': setter });&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else if (typeof obj.__defineGetter__ === 'function') {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// older versions of Firefox&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;obj.__defineGetter__(name, getter);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;obj.__defineSetter__(name, setter);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (methods &amp;amp;&amp;amp; methods.length) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;methods.forEach(function(x) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;proxy_method(ctor.prototype, x);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (properties &amp;amp;&amp;amp; properties.length) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;properties.forEach(function(x) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;proxy_property(ctor.prototype, x);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ctor;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Define CanvasProxy class&lt;br /&gt;var CanvasProxy = makeProxyClass(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;['beginPath', 'moveTo', 'lineTo', 'clearRect', 'fillText', 'stroke', 'fill'],&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;['lineCap', 'lineWidth', 'strokeStyle', 'fillStyle', &lt;br /&gt;     'globalCompositeOperation', 'font']&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;onmessage = function(event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch(event.data.command) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 'init':&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;g_logo = new LogoInterpreter(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new CanvasTurtle(new CanvasProxy('canvas'),&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; event.data.width, event.data.height));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case 'run':&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;g_logo.run(event.data.text);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;remote_call('window', 'alert', ['Error: ' + e]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It's not a generalized proxy - you can't read back values from the other side - but it's good enough for now. That limitation means that certain logo operations - like &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;READ&lt;/span&gt; - won't work.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have to admit, in reality it's a little sleazier. With just the above code the screen still doesn't update on every operation (at least, on my old single-core computer) since the Logo thread is eating up 100% of the CPU. So I threw in one more trick:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: javascript"&gt;// Sleazy yield - make an HTTP request that will fail. This causes the JavaScript&lt;br /&gt;// thread to yield for a few milliseconds.&lt;br /&gt;var xhr = new XMLHttpRequest()&lt;br /&gt;function yield() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xhr.open("GET", "does_not_exist/" + Math.random(), false); // synchronous&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xhr.send();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;catch (e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// ignore&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;I'm not the first to think of this (&lt;a href="http://groups.google.com/group/comp.lang.javascript/browse_thread/thread/a44ecf5747314f87/534e2565ebbdd99a"&gt;see&amp;nbsp;comp.lang.javascript&lt;/a&gt;), but unlike use within a web page (where the whole browser - or at least tab - would block), use within a WebWorker is not entirely terrifying.&lt;/div&gt;&lt;br /&gt;I combine this with the CanvasProxy and make calls to &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;stroke()&lt;/span&gt; call &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;yield()&lt;/span&gt;, which slows the graphics down enough that you can almost see individual lines being drawn.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's an example Logo program - click to see it in action:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://calormen.com/logo/async.htm?repeat_1000_[fd_random_100_rt_random_360_setpencolor_random_16_setpensize_random_20]"&gt;repeat 1000 [fd random 100 rt random 360 setpencolor random 16 setpensize random 20]&lt;/a&gt;&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/5828855760220275945-8108338849085453358?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8108338849085453358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/08/logo-in-js-with-web-workers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8108338849085453358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8108338849085453358'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/08/logo-in-js-with-web-workers.html' title='Logo in JS with Web Workers'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6195553757349885769</id><published>2010-06-17T21:50:00.000-07:00</published><updated>2010-06-17T21:50:19.336-07:00</updated><title type='text'>LLSD FTW</title><content type='html'>Work related, but open source: &lt;a href="http://hg.secondlife.com/llsd"&gt;MIT licensed LLSD implementations&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LLSD is one of the cooler things to come out of Linden. It's a "semantic file format", intended to be serialization agnostic (you can use binary, XML, or JSON) and it provides strict rules for accessing the data and conversions between data types. There's also a language called LLIDL for describing RESTful interfaces that consume/produce LLSD data.&lt;br /&gt;&lt;br /&gt;I've been doing a fair bit of implementation work there recently, including a JavaScript library for LLSD/LLIDL and LLSD JSON support in C++.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6195553757349885769?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6195553757349885769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/06/llsd-ftw.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6195553757349885769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6195553757349885769'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/06/llsd-ftw.html' title='LLSD FTW'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2211360470309530342</id><published>2010-05-09T23:36:00.000-07:00</published><updated>2010-05-09T23:36:30.137-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Caspian's Mothers' Day Card, 2010</title><content type='html'>For posterity:&lt;br /&gt;&lt;blockquote&gt;Happy Mother's Day!&lt;/blockquote&gt;&lt;blockquote&gt;Dear Mom,&lt;/blockquote&gt;&lt;blockquote&gt;I like you and What do is nice But when it comes to brushing teeth it just does not match. I wrote a poem for you. --&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;My mother by, Caspian&lt;/blockquote&gt;&lt;blockquote&gt;My &amp;nbsp;mother smothers me in kisses and hugs, she is my favorite person in California, my Mother loves me.&lt;/blockquote&gt;&lt;blockquote&gt;Love, Caspian&lt;/blockquote&gt;When delivering the card, he said, "On second thought, I probably shouldn't have put in the part about the tooth brushing."&lt;br /&gt;&lt;br /&gt;Susan said, "I'm keeping this card. Forever."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2211360470309530342?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2211360470309530342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/05/caspians-mothers-day-card-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2211360470309530342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2211360470309530342'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/05/caspians-mothers-day-card-2010.html' title='Caspian&apos;s Mothers&apos; Day Card, 2010'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2846758376068826647</id><published>2010-04-06T07:55:00.000-07:00</published><updated>2010-04-06T10:47:52.812-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ieee754'/><title type='text'>Javascript and IEEE754 Redux</title><content type='html'>Here's the logical evolution of the previously posted code. I wanted to handle single precision in addition to double precision, and did some extensive tidying. Sorry about the round-trips through strings - JavaScript bit operations are limited to 32 bits.&lt;br /&gt;&lt;br /&gt;It now correctly handles all of the boundary values on this &lt;a href="http://babbage.cs.qc.edu/IEEE-754/IEEE-754references.html"&gt;IEEE-754 reference page&lt;/a&gt; as far as possible.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: javascript"&gt;function toIEEE754(v, ebits, fbits) {&lt;br /&gt;&lt;br /&gt;        var bias = (1 &lt;&lt; (ebits - 1)) - 1;&lt;br /&gt;&lt;br /&gt;        // Compute sign, exponent, fraction&lt;br /&gt;        var s, e, f;&lt;br /&gt;        if (isNaN(v)) {&lt;br /&gt;            e = (1 &lt;&lt; bias) - 1; f = 1; s = 0;&lt;br /&gt;        }&lt;br /&gt;        else if (v === Infinity || v === -Infinity) {&lt;br /&gt;            e = (1 &lt;&lt; bias) - 1; f = 0; s = (v &lt; 0) ? 1 : 0;&lt;br /&gt;        }&lt;br /&gt;        else if (v === 0) {&lt;br /&gt;            e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0;&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            s = v &lt; 0;&lt;br /&gt;            v = Math.abs(v);&lt;br /&gt;&lt;br /&gt;            if (v &gt;= Math.pow(2, 1 - bias)) {&lt;br /&gt;                var ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);&lt;br /&gt;                e = ln + bias;&lt;br /&gt;                f = v * Math.pow(2, fbits - ln) - Math.pow(2, fbits);&lt;br /&gt;            }&lt;br /&gt;            else {&lt;br /&gt;                e = 0;&lt;br /&gt;                f = v / Math.pow(2, 1 - bias - fbits);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Pack sign, exponent, fraction&lt;br /&gt;        var i, bits = [];&lt;br /&gt;        for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = Math.floor(f / 2); }&lt;br /&gt;        for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = Math.floor(e / 2); }&lt;br /&gt;        bits.push(s ? 1 : 0);&lt;br /&gt;        bits.reverse();&lt;br /&gt;        var str = bits.join('');&lt;br /&gt;        &lt;br /&gt;        // Bits to bytes&lt;br /&gt;        var bytes = [];&lt;br /&gt;        while (str.length) {&lt;br /&gt;            bytes.push(parseInt(str.substring(0, 8), 2));&lt;br /&gt;            str = str.substring(8);&lt;br /&gt;        }&lt;br /&gt;        return bytes;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function fromIEEE754(bytes, ebits, fbits) {&lt;br /&gt;&lt;br /&gt;        // Bytes to bits&lt;br /&gt;        var bits = [];&lt;br /&gt;        for (var i = bytes.length; i; i -= 1) {&lt;br /&gt;            var byte = bytes[i - 1];&lt;br /&gt;            for (var j = 8; j; j -= 1) {&lt;br /&gt;                bits.push(byte % 2 ? 1 : 0); byte = byte &gt;&gt; 1;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        bits.reverse();&lt;br /&gt;        var str = bits.join('');&lt;br /&gt;      &lt;br /&gt;        // Unpack sign, exponent, fraction&lt;br /&gt;        var bias = (1 &lt;&lt; (ebits - 1)) - 1;&lt;br /&gt;        var s = parseInt(str.substring(0, 1), 2) ? -1 : 1;&lt;br /&gt;        var e = parseInt(str.substring(1, 1 + ebits), 2);&lt;br /&gt;        var f = parseInt(str.substring(1 + ebits), 2);&lt;br /&gt;        &lt;br /&gt;        // Produce number&lt;br /&gt;        if (e === (1 &lt;&lt; ebits) - 1) {&lt;br /&gt;            return f !== 0 ? NaN : s * Infinity;&lt;br /&gt;        }&lt;br /&gt;        else if (e &gt; 0) {&lt;br /&gt;            return s * Math.pow(2, e - bias) * (1 + f / Math.pow(2, fbits));&lt;br /&gt;        }&lt;br /&gt;        else if (f !== 0) {&lt;br /&gt;            return s * Math.pow(2, -(bias-1)) * (f / Math.pow(2, fbits));&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            return s * 0;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function fromIEEE754Double(b) { return fromIEEE754(b, 11, 52); }&lt;br /&gt;    function   toIEEE754Double(v) { return   toIEEE754(v, 11, 52); }&lt;br /&gt;    function fromIEEE754Single(b) { return fromIEEE754(b,  8, 23); }&lt;br /&gt;    function   toIEEE754Single(v) { return   toIEEE754(v,  8, 23); }&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/5828855760220275945-2846758376068826647?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2846758376068826647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/04/javascript-and-ieee754-redux.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2846758376068826647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2846758376068826647'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/04/javascript-and-ieee754-redux.html' title='Javascript and IEEE754 Redux'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6201209531586778976</id><published>2010-03-28T21:15:00.000-07:00</published><updated>2010-03-28T21:15:42.551-07:00</updated><title type='text'>Migrated!</title><content type='html'>Old posts have been migrated from my &lt;a href="http://inexorabletash.spaces.live.com/"&gt;Live Spaces&lt;/a&gt; blog, including pictures and the insignificant number of comments I've solicited over the years.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6201209531586778976?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6201209531586778976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/migrated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6201209531586778976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6201209531586778976'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/migrated.html' title='Migrated!'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7492791206987873130</id><published>2010-03-26T20:02:00.000-07:00</published><updated>2010-03-29T21:00:31.305-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ieee754'/><title type='text'>JavaScript and IEEE754</title><content type='html'>In C/C++ and... well, practically any other language intended for systems programming, you can get at the bits of a floating point number, either by tricks with unions or binary data packing routines. And all of those languages use the IEEE754 standard for floating point number representation in memory.&lt;br /&gt;&lt;br /&gt;JavaScript uses IEEE754 internally as well, but offers neither unions nor general binary data manipulation. So if you want convert to and from bytes - say, dug out of a base64-encoded blob - you need to do some work.&lt;br /&gt;&lt;br /&gt;Here's a first crack at conversion functions. They are not thoroughly tested. Caveats: "negative 0" is not preserved, denormalized numbers aren't handled, nor are QNaNs.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: javascript"&gt;// Convert a JavaScript number to IEEE-754 Double Precision&lt;br /&gt;// value represented as an array of 8 bytes (octets)&lt;br /&gt;//&lt;br /&gt;function toIEEE754(v) {&lt;br /&gt;    var s, e, f;&lt;br /&gt;    if (isNaN(v)) {&lt;br /&gt;        e = 2047; f = 1; s = 0;&lt;br /&gt;    } &lt;br /&gt;    else if (v === Infinity) {&lt;br /&gt;        e = 2047; f = 0; s = 0;&lt;br /&gt;    } &lt;br /&gt;    else if (v === -Infinity) {&lt;br /&gt;        e = 2047; f = 0; s = 1;&lt;br /&gt;    }&lt;br /&gt;    else if (v === 0 &amp;amp;&amp;amp; 1/v === -Infinity) { // -0&lt;br /&gt;        e = 0; f = 0; s = 1;&lt;br /&gt;    }&lt;br /&gt;    else if (v === 0) {&lt;br /&gt;        e = 0; f = 0; s = 0;&lt;br /&gt;    }&lt;br /&gt;    else {&lt;br /&gt;        if (v &amp;lt; 0) {&lt;br /&gt;            s = 1;&lt;br /&gt;            v = Math.abs(v);&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            s = 0;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        var ln = Math.floor( Math.log(v) / Math.log(2) );&lt;br /&gt;&lt;br /&gt;        if (ln &amp;gt; -1022) {&lt;br /&gt;            e = ln + 1023;&lt;br /&gt;            f = (v / Math.pow(2, ln) - 1) * 0x10000000000000;&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            e = 0;&lt;br /&gt;            f = (v / Math.pow(2,-1022)) * 0x10000000000000;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return [&lt;br /&gt;        ((s &amp;amp; 0x1) &amp;lt;&amp;lt; 7) | ((e &amp;gt;&amp;gt; 4) &amp;amp; 0x7f),&lt;br /&gt;        ((e &amp;amp; 0x0f) &amp;lt;&amp;lt; 4) | ((f / Math.pow(2,48)) &amp;amp; 0x0f),&lt;br /&gt;        (f / Math.pow(2,40)) &amp;amp; 0xff,&lt;br /&gt;        (f / Math.pow(2,32)) &amp;amp; 0xff,&lt;br /&gt;        (f / Math.pow(2,24)) &amp;amp; 0xff,&lt;br /&gt;        (f / Math.pow(2,16)) &amp;amp; 0xff,&lt;br /&gt;        (f / Math.pow(2,08)) &amp;amp; 0xff,&lt;br /&gt;        f &amp;amp; 0xff        &lt;br /&gt;    ];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Convert an IEEE-754 Double Precision value represented&lt;br /&gt;// as an array of 8 bytes (octets) to a JavaScript number&lt;br /&gt;//&lt;br /&gt;function fromIEEE754(bytes) {&lt;br /&gt;&lt;br /&gt;    var s = (bytes[0] &amp;gt;&amp;gt; 7) &amp;amp; 0x1;&lt;br /&gt;    var e = ((bytes[0] &amp;amp; 0x7f) &amp;lt;&amp;lt; 4) | ((bytes[1] &amp;amp; 0xf0) &amp;gt;&amp;gt; 4);&lt;br /&gt;&lt;br /&gt;    var f = ((bytes[1] &amp;amp; 0x0f) * Math.pow(2,48)) +&lt;br /&gt;            (bytes[2] * Math.pow(2,40)) +&lt;br /&gt;            (bytes[3] * Math.pow(2,32)) +&lt;br /&gt;            (bytes[4] * Math.pow(2,24)) +&lt;br /&gt;            (bytes[5] * Math.pow(2,16)) +&lt;br /&gt;            (bytes[6] * Math.pow(2, 8)) +&lt;br /&gt;            bytes[7];&lt;br /&gt;&lt;br /&gt;    if (e === 2047) {&lt;br /&gt;        if (f !== 0) {&lt;br /&gt;            return Number.NaN;&lt;br /&gt;        }&lt;br /&gt;        else if (s) {&lt;br /&gt;            return -Infinity;&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            return Infinity;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    else if (e &amp;gt; 0) {&lt;br /&gt;        return (s?-1:1) * Math.pow(2,e-1023) * (1 + f / 0x10000000000000);&lt;br /&gt;    }&lt;br /&gt;    else if (f !== 0) {&lt;br /&gt;        return (s?-1:1) * Math.pow(2,-1022) * (f / 0x10000000000000);&lt;br /&gt;    }&lt;br /&gt;    else {&lt;br /&gt;        return s ? -0 : 0;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;EDITED: Corrected parsing of +/-Infinity, and serializing of -0&lt;br /&gt;EDITED: Corrected serializing of denormalized values&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7492791206987873130?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7492791206987873130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/javascript-and-ieee754.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7492791206987873130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7492791206987873130'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/javascript-and-ieee754.html' title='JavaScript and IEEE754'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6086975053514600163</id><published>2010-03-12T09:52:00.001-08:00</published><updated>2010-03-28T21:29:57.439-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='cookie'/><title type='text'>JavaScript Cookie API</title><content type='html'>&lt;a href="http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-February/025300.html"&gt;Adam Barth proposed a new Cookie API for browser JavaScript&lt;/a&gt; over on the &lt;a href="http://lists.whatwg.org/pipermail/whatwg-whatwg.org/"&gt;WHATWG list&lt;/a&gt; (&lt;a href="https://docs.google.com/Doc?docid=0AZpchfQ5mBrEZGQ0cDh3YzRfMTRmdHFma21kMg&amp;amp;hl=en&amp;amp;pli=1"&gt;API details&lt;/a&gt;)&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To validate the API I took a stab at implementing it in &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm"&gt;ECMAScript&lt;/a&gt; using the existing Cookie API (&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;document.cookie&lt;/span&gt;). The good news is that you can mostly replicate the functionality today, which means that if you like how the API looks you could try it out today.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After some consideration, &lt;a href="http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-March/025441.html"&gt;Hixie put it to sleep&lt;/a&gt; (and I agree, it's not really worth it - &lt;a href="http://dev.w3.org/html5/webstorage/"&gt;Web Storage&lt;/a&gt; is a more robust direction for the future). But here's the sample implementation if anyone wants to use a close approximation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Caveats: this is very rough and could probably do a higher fidelity emulation. The intent was not a rock-solid implementation, but to explore the edges of the proposed specification - i.e. is there really a new &lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;CookieList &lt;/span&gt;type intended? Is there any notification mechanism if an asynchronous cookie lookup fails to find a match?&lt;/div&gt;&lt;div&gt;&lt;pre class="brush: javascript"&gt;/*jslint browser: true */&lt;br /&gt;/*global Cookie */&lt;br /&gt;&lt;br /&gt;(function() {&lt;br /&gt;&lt;br /&gt;// Intentional export to global namespace&lt;br /&gt;if (typeof this.Cookie !== "function") {&lt;br /&gt;this.Cookie = function() {&lt;br /&gt;this.name = "";&lt;br /&gt;this.value = "";&lt;br /&gt;this.domain = ".";&lt;br /&gt;this.expires = "";&lt;br /&gt;this.path = "";&lt;br /&gt;this.secure = false;&lt;br /&gt;this.httpOnly = false;&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Internal&lt;br /&gt;function getCookieList() {&lt;br /&gt;var list = [];&lt;br /&gt;var carray = document.cookie.split('; ');&lt;br /&gt;for (var i = 0; i &amp;lt; carray.length; i += 1) {&lt;br /&gt;var parts = carray[i].split('=');&lt;br /&gt;if (parts.length === 2) {&lt;br /&gt;var cookie = new Cookie();&lt;br /&gt;cookie.name = decodeURIComponent(parts[0]);&lt;br /&gt;cookie.value = decodeURIComponent(parts[1]);&lt;br /&gt;// NOTE: Other fields (like "expires" are not set)&lt;br /&gt;list.push(cookie);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return list;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Internal&lt;br /&gt;function getCookie(name) {&lt;br /&gt;var cookies = getCookieList();&lt;br /&gt;&lt;br /&gt;for (var i = 0; i &amp;lt; cookies.length; i += 1) {&lt;br /&gt;var cookie = cookies[i];&lt;br /&gt;if (cookie.name === name) {&lt;br /&gt;return cookie;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Internal&lt;br /&gt;function setCookie(name, value, expires, path) {&lt;br /&gt;&lt;br /&gt;var str = encodeURIComponent(name) + "=" + encodeURIComponent(value);&lt;br /&gt;str += expires ? ("; expires=" + expires) : "";&lt;br /&gt;str += "; path=" + (path ? encodeURI(path) : "/");&lt;br /&gt;&lt;br /&gt;document.cookie = str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Internal&lt;br /&gt;function deleteCookie(name) {&lt;br /&gt;var dt = new Date();&lt;br /&gt;dt.setTime(dt.getTime() + (-1 * 24 * 60 * 60 * 1000)); // yesterday&lt;br /&gt;&lt;br /&gt;setCookie(name, "", dt.toGMTString());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// void getCookie(in DOMString name, in CookieCallback callback);&lt;br /&gt;if (document &amp;amp;&amp;amp; typeof document.getCookie !== "function") {&lt;br /&gt;document.getCookie = function(name, callback) {&lt;br /&gt;&lt;br /&gt;var cookie = getCookie(name);&lt;br /&gt;&lt;br /&gt;if (cookie) {&lt;br /&gt;// ISSUE: API refers to callback object with handleEvent function&lt;br /&gt;// whereas example shows callback as function&lt;br /&gt;if (typeof callback === "function") {&lt;br /&gt;setTimeout(function() {&lt;br /&gt;callback(cookie);&lt;br /&gt;}, 0);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;// ISSUE: If not found?&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// void getAllCookies(in CookieListCallback callback);&lt;br /&gt;if (document &amp;amp;&amp;amp; typeof document.getAllCookies !== "function") {&lt;br /&gt;document.getAllCookies = function(callback) {&lt;br /&gt;&lt;br /&gt;var cookies = getCookieList();&lt;br /&gt;&lt;br /&gt;// ISSUE: Return type in document is a new type&lt;br /&gt;// 'CookieList' which is not defined&lt;br /&gt;&lt;br /&gt;// ISSUE: API refers to callback object with handleEvent function&lt;br /&gt;// whereas example shows function directly&lt;br /&gt;if (typeof callback === "function") {&lt;br /&gt;setTimeout(function() {&lt;br /&gt;callback(cookies);&lt;br /&gt;}, 0);&lt;br /&gt;}&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// void setCookie(in Cookie cookie, in optional VoidCallback error);&lt;br /&gt;if (document &amp;amp;&amp;amp; typeof document.setCookie !== "function") {&lt;br /&gt;document.setCookie = function(cookie, errorCallback) {&lt;br /&gt;// ISSUE: Should 'cookie.expires' be a Date or string?&lt;br /&gt;&lt;br /&gt;if (navigator.cookieEnabled) {&lt;br /&gt;setCookie(cookie.name, cookie.value, cookie.expires, cookie.path);&lt;br /&gt;&lt;br /&gt;// TODO: Appropriate sprinkles of toString()&lt;br /&gt;var readback = getCookie(cookie.name);&lt;br /&gt;if (!readback || readback.value !== cookie.value) {&lt;br /&gt;errorCallback();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;else if (typeof errorCallback === "function") {&lt;br /&gt;errorCallback();&lt;br /&gt;}&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// void deleteCookie(in DOMString name, in optional VoidCallback error);&lt;br /&gt;if (document &amp;amp;&amp;amp; typeof document.deleteCookie !== "function") {&lt;br /&gt;document.deleteCookie = function(name, errorCallback) {&lt;br /&gt;&lt;br /&gt;if (navigator.cookieEnabled) {&lt;br /&gt;deleteCookie(name);&lt;br /&gt;&lt;br /&gt;if (getCookie(name)) {&lt;br /&gt;errorCallback();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;else if (typeof errorCallback === "function") {&lt;br /&gt;errorCallback();&lt;br /&gt;}&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;})();&lt;br /&gt;&lt;/pre&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/5828855760220275945-6086975053514600163?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6086975053514600163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/javascript-cookie-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6086975053514600163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6086975053514600163'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/javascript-cookie-api.html' title='JavaScript Cookie API'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3305593257094774525</id><published>2010-03-12T09:20:00.000-08:00</published><updated>2010-03-12T09:21:30.666-08:00</updated><title type='text'>Migration</title><content type='html'>I'll be migrating stuff here from &lt;a href="http://inexorabletash.spaces.live.com/"&gt;http://inexorabletash.spaces.live.com/&lt;/a&gt; at some point. Wheee.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-3305593257094774525?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3305593257094774525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/migration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3305593257094774525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3305593257094774525'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2010/03/migration.html' title='Migration'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-5989062499117543700</id><published>2009-02-11T14:35:00.000-08:00</published><updated>2010-03-28T21:26:58.113-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>So yeah, I got an iPhone</title><content type='html'>First off, sorry friends &amp;amp; family for not blogging in a while. I'm more actively using these nowadays:&lt;br /&gt;&lt;br /&gt;Twitter: &lt;a href="http://twitter.com/inexorabletash"&gt;http://twitter.com/inexorabletash&lt;/a&gt; (microblogging - stream-of-consciousness stuff)&lt;br /&gt;Flickr: &lt;a href="http://flickr.com/photos/inexorabletash"&gt;http://flickr.com/photos/inexorabletash&lt;/a&gt; (photos)&lt;br /&gt;&lt;br /&gt;Both of which I can send content to easily and directly... from my shiny new iPhone!&lt;br /&gt;&lt;br /&gt;Yes, I caved. I picked up the 16GB model on Jan 27th, a few days before we took a short trip to Disneyland. I'd spent the previous few days borrowing a technology-demo unit from a co-worker, and after getting over the initial hurdles I was, of course, hooked. &lt;br /&gt;&lt;br /&gt;So how does it stack up against my &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!1349.entry"&gt;Mobile Device Needs&lt;/a&gt; and my &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!1347.entry"&gt;previous device&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Caveat: In December I put a hacked WinMo 6.1 ROM on my old HTC Apache to give it a temporarily fresh new life. It greatly improved the experience, but it was still a big slow old brick.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clock - better than WinMo; touch the power button the the screen is on instantly, and you never have to wait a second for the clock to tick to be sure you're seeing the correct time.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Google Calendar - I'm using &lt;a href="http://www.nuevasync.com/"&gt;NuevaSync&lt;/a&gt; as an Exchange proxy. Google has apparently &lt;a href="http://www.google.com/mobile/default/sync.html"&gt;GCal sync for iPhones&lt;/a&gt; too but it might require our admins to twiddle something.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Contacts - one time sync WinMo --&amp;gt; Outlook --&amp;gt; iTunes --&amp;gt; iPhone. Now its just iPhone --&amp;gt; iTunes --&amp;gt; Outlook as a backup &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Personal Email - I have my work email via IMAP, and &lt;a href="http://www.macosxhints.com/article.php?story=20071218184905987"&gt;Hotmail via forwarding through GMail&lt;/a&gt;. Not ideal, since I still treat Hotmail as the master/archive source. &lt;a href="http://lifehacker.com/5151551/hotmail-enables-pop3-for-us-users"&gt;Hotmail is now exposed via POP3&lt;/a&gt; but it's stucktastically slow, so I'm holding that in reserve for now.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;RSS Feeds - I'm using &lt;a href="http://www.newsgator.com/individuals/netnewswireiphone/default.aspx"&gt;NetNewsWire&lt;/a&gt; which is a pretty good feed reader, through the &lt;a href="http://www.newsgator.com/"&gt;NewsGator&lt;/a&gt; back end service. The web site - necessary for adding and organizing feeds - is abysmally slow, but the sync speed to the device is great since the device is talking only to the NewsGator back end. Occasional glitches, but I'm very satisfied with he appl&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Web browsing - Safari is great. Apple has done a stellar job here. I just wish I could more selectively disable screen rotation for surfing while snoozing.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SMS/Text Messaging - acceptable. This is the place where I feel the pain of a software keyboard, since I can't type as confidently while walking as I could on the Apache.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Telephone - seems to work well, so far. The &lt;a href="http://www.apple.com/iphone/features/sensors.html"&gt;proximity sensor&lt;/a&gt; avoids stupid mistakes that occurred on the Apache.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Google Maps - OMG I love this; with GPS it's just adorable. We used it for navigating from LAX to DL and back. But there's also Google Earth which makes me squeee geekily.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Today's weather/weekly forecast - One touch away on the menu; I do miss the integration into the HTC Home launcher and wish the weather was displayed on the "Lock" screen, but it's not any harder to access than on my previous device if I left it on the app launcher tab. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Calculator - yes, it works.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Work Email - See above&lt;/li&gt;&lt;li&gt;SSH client - I tried &lt;a href="http://jbrink.net/touchterm/"&gt;TouchTerm&lt;/a&gt; out on the technology demo device, &lt;a href="http://comments.deasil.com/2008/08/18/iphone-ssh-review-issh-v-pterm-v-touchterm/"&gt;some of the non-free choices might be better&lt;/a&gt;, but I just haven't had the need yet and can always snag one from the App Store over the air in an emergency.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;IRC client - I'm not on call any more, and without SSH tunnels this is a little trickier. However, we have a web gateway so I don't need a dedicated client for emergencies. I may be able to use VPN access as well.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ebook reader - &lt;a href="http://www.lexcycle.com/"&gt;Stanza&lt;/a&gt; is free, all the features I want, and has integrated browsing for free books from multiple vendors. Sweet.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Picture viewer - Built in, and the touch gestures (pinch, drag) and accelerometer (rotation) really are useful, and &lt;span style="font-style: italic;"&gt;just feel right.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Video player - only has YouTube at the moment&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Camera - much better than the Apache's camera, albeit with no flash (not that the Apache's was great). Geotagging is schweeet, tho!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Games - I miss Marble Madness. But I have &lt;a href="http://toucharcade.com/2008/12/13/namcos-i-love-katamari-for-the-iphone/"&gt;Katamari&lt;/a&gt; in my pocket! And &lt;a href="http://toucharcade.com/2008/11/12/defend-a-simple-but-effective-099-iphone-shooter/"&gt;Defend!&lt;/a&gt; and &lt;a href="http://toucharcade.com/2009/01/22/blue-attack-shooter-is-another-winner/"&gt;Attack!&lt;/a&gt; which are just wonderful. I have a handful of "lite" editions I'm not terribly taken with but keep me occupied.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Astronomy - I have my eye on &lt;a href="http://www.star-map.fr/"&gt;Starmap&lt;/a&gt; but haven't purchased it yet.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Marquee - I've only started to dabble in iPhone programming, so I don't have this rewritten yet.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Flash player - only YouTube. No Flash games, alas.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Music player - oddly, the iPod is the worst part of the iPhone. It works acceptably enough that I've stopped carrying my Rio Carbon, and without the double-click-on-the-mic to skip songs I'd go mad, but it still stands out as the least polished part of the system. It sure is pretty, though. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Overall: it's just a sexy, seductive device. You want to take it out and cradle it gently in your hands and stroke the curved edges. My precious... my precious...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-5989062499117543700?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/5989062499117543700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2009/02/so-yeah-i-got-iphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5989062499117543700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5989062499117543700'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2009/02/so-yeah-i-got-iphone.html' title='So yeah, I got an iPhone'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7014971193079756118</id><published>2009-01-06T15:45:00.000-08:00</published><updated>2010-03-28T21:13:07.335-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entertainment'/><title type='text'>What is this "Live TV" of which you speak?</title><content type='html'>The programs our DVR is scheduled to record - links provided to the shows that you may not be aware of if you're consigned to the hell of American network programming:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.usanetwork.com/series/burnnotice/"&gt;Burn Notice&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.usanetwork.com/series/monk/"&gt;Monk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.usanetwork.com/series/psych/"&gt;Psych&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bbc.co.uk/doctorwho/"&gt;&lt;/a&gt;&lt;a href="http://tardis.wikia.com/wiki/Doctor_Who_Wiki"&gt;Doctor Who&lt;/a&gt;&lt;/li&gt;&lt;li&gt;My Name Is Earl&lt;/li&gt;&lt;li&gt;&lt;a href="http://tardis.wikia.com/wiki/Torchwood"&gt;Torchwood&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tardis.wikia.com/wiki/Torchwood"&gt;&lt;/a&gt;&lt;a href="http://abc.go.com/primetime/pushingdaisies/index"&gt;Pushing Daisies&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;you cancelled Pushing Daisies - you bastards!&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.discovery.com/mythbusters"&gt;MythBusters&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bbc.co.uk/grahamnortonshow/"&gt;The Graham Norton Show&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Dr. Phil (Su)&lt;/li&gt;&lt;li&gt;ER (Su)&lt;/li&gt;&lt;li&gt;Law &amp;amp; Order: Criminal Intent (Su)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;House (Su)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Simpsons (Su)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adultswim.com/shows/robotchicken/index.html"&gt;Robot Chicken&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.shaunthesheep.com/"&gt;Shaun the Sheep&lt;/a&gt; (Aardman rocks! For Caspian)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.topgear.com/"&gt;Top Gear&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/What's_My_Line"&gt;What's My Line?&lt;/a&gt; (&lt;a href="http://www.tv.com/what-s-my-line/show/5501/summary.html"&gt;episodes&lt;/a&gt;, &lt;a href="http://www.gsn.com/buzz/showthread.php?t=41225"&gt;GSN rerun tracking forum&lt;/a&gt; - we're up to episode #421 - June 29th, 1958)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bbc.co.uk/drama/robinhood/"&gt;Robin Hood&lt;/a&gt; (Su thinks Robin of Locksley is hawt)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bbc.co.uk/comedy/thatmitchellandwebbsite/"&gt;That Mitchell and Webb Show&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adultswim.com/shows/venturebros/index.html"&gt;The Venture Brothers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://pbskids.org/zoboo/"&gt;Zoboomafoo&lt;/a&gt; (Caspian)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fox.com/terminator/"&gt;Terminator: The Sarah Connor Chronicles&lt;/a&gt; (&lt;a href="http://xkcd.com/311/"&gt;Geeks &amp;lt;3 Summer Glau&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Nova (Caspian is such a geek!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Mentalist (Su)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Secrets of the Dead&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Law &amp;amp; Order: Special Victims Unit (Su)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CSI: NY (Su)&lt;/li&gt;&lt;li&gt;Worst Week (Su - Josh liked the UK version, but it's too painful to re-watch)&lt;/li&gt;&lt;li&gt;Dirty Jobs&lt;/li&gt;&lt;li&gt;CSI (Su)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Law &amp;amp; Order (Su)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.survivorman.ca/"&gt;Survivorman&lt;/a&gt; (though we've seen them all)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cartoonnetwork.com/tv_shows/batmanbb/index.html"&gt;Batman: The Brave and the Bold&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tnt.tv/series/leverage/"&gt;Leverage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Friday_the_13th_(TV_series)"&gt;Friday the 13th: The Series&lt;/a&gt; (just in case)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bbc.co.uk/dragonsden/"&gt;Dragon's Den&lt;/a&gt; (although our DVR keeps recording Gordon Ramsey's Kitchen Nightmares - the BBC version - instead, which isn't entirely objectionable)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Little Bear (for Caspian)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Junkyard Wars (seen them all.... but Caspian hasn't! Bastards, why haven't they been airing &lt;a href="http://en.wikipedia.org/wiki/Scrapheap_Challenge"&gt;Scrapheap Challenge&lt;/a&gt; over here?!?!)&lt;/li&gt;&lt;li&gt;How It's Made&lt;/li&gt;&lt;li&gt;Toot &amp;amp; Puddle (for Caspian)&lt;/li&gt;&lt;/ul&gt;Vague statistics (non-exclusive):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;4 shows exclusively for Caspian&lt;/li&gt;&lt;li&gt;11 shows pretty much exclusively for Susan&lt;br /&gt;&lt;/li&gt;&lt;li&gt;6 science/technology/geeky shows&lt;/li&gt;&lt;li&gt;8 shows from the UK&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2 animated shows for adults&lt;/li&gt;&lt;li&gt;4 "cable" shows (drama/comedy)&lt;/li&gt;&lt;li&gt;4 "network" shows that Josh actually watches&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/5828855760220275945-7014971193079756118?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7014971193079756118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2009/01/what-is-this-tv-of-which-you-speak.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7014971193079756118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7014971193079756118'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2009/01/what-is-this-tv-of-which-you-speak.html' title='What is this &amp;quot;Live TV&amp;quot; of which you speak?'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6209048599884273773</id><published>2008-12-31T09:24:00.000-08:00</published><updated>2010-03-28T21:12:57.517-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers and Internet'/><title type='text'>Y2K8 - Zune Doom</title><content type='html'>A few years ago, Susan came home with a Zune for Caspian's music playing needs. (This followed a Creative Zen that lasted a few years then went to &lt;a href="http://www.urbandictionary.com/define.php?term=silicon%20heaven"&gt;silicon heaven&lt;/a&gt;, and an iPod that lasted about 1 day before Su's patience ran out - Apple UI just rubs her the wrong way.) A Zune? Well... I bit my tongue. Microsoft has done some good hardware from time to time, after all (keyboards, mice, I even liked the routers).&lt;br /&gt;&lt;br /&gt;Today at around 8am, Caspian shouted down that it was just showing a line, and not starting. We tried running down the battery and recharging, but no change. Just now I was reading my blogs, and &lt;a href="http://it.slashdot.org/it/08/12/31/1428254.shtml"&gt;Slashdot reported that we weren't alone&lt;/a&gt;. Apparently, today is &lt;a href="http://spanishgringo.blogspot.com/2008/12/zune-y2k8-global-meltdown-1st-gen-30gb.html"&gt;Y2K8 Global Meltdown day for Zunes&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The &lt;a href="http://forums.zune.net/0/257/404327/ShowPost.aspx#404327"&gt;leading speculation&lt;/a&gt; is that the Zunes have a leap-day bug - today is the 366th day of the year, which may trip some bug when the firmware reads the hardware clock value.&lt;br /&gt;&lt;br /&gt;Hopefully, &lt;a href="http://www.zune.net/en-us/support/zune30.htm"&gt;tomorrow the Zunes will rise from the grave&lt;/a&gt;... and not be &lt;a href="http://www.l4d.com/"&gt;craving tasty brains&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6209048599884273773?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6209048599884273773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/y2k8-zune-doom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6209048599884273773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6209048599884273773'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/y2k8-zune-doom.html' title='Y2K8 - Zune Doom'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4253543470415191980</id><published>2008-12-27T16:26:00.000-08:00</published><updated>2010-03-28T21:12:46.178-07:00</updated><title type='text'>Metaphysics: The Prestige</title><content type='html'>Su and I just watched &lt;a href="http://www.imdb.com/title/tt0482571/"&gt;&lt;em&gt;The Prestige&lt;/em&gt;&lt;/a&gt;. Nice little flick. Summary: &lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pdxucpPq6Lc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&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/pdxucpPq6Lc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Su says, "&lt;em&gt;Great, but the title roles should be switched.&lt;/em&gt;" She also heavily implied "&lt;em&gt;Oh, and Hugh Jackman is yummy,&lt;/em&gt;" but denies actually saying it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-4253543470415191980?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4253543470415191980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/metaphysics-prestige.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4253543470415191980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4253543470415191980'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/metaphysics-prestige.html' title='Metaphysics: The Prestige'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3240582642288879704</id><published>2008-12-09T09:12:00.000-08:00</published><updated>2010-03-28T21:30:29.838-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Dangling M</title><content type='html'>I'm not the only one who can't get over the position of the "M" key on Verizon's version of the HTC Touch Pro.&lt;br /&gt;&lt;br /&gt;From &lt;a href="http://www.infosyncworld.com/reviews/cell-phones/htc-touch-pro-(verizon-wireless)/9959.html"&gt;InfoSync&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;The keyboard, as we've mentioned, is odd. We just&lt;br /&gt;can't get over that dangling "M," and even if we could get used to it,&lt;br /&gt;we're not sure we want to. Otherwise, Verizon Wireless keeps things&lt;br /&gt;simple. The keyboard has a nice, solid feel to it, with soft keys that&lt;br /&gt;each have their own rounded tops. You get quick access to the messaging&lt;br /&gt;app via a key on the keyboard, and it's the only real dedicated&lt;br /&gt;hardware key on the device. &lt;span style="font-style: italic;"&gt;Still, that "M" is just standing there all&lt;br /&gt;by itself, staring at us. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Italics added.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-3240582642288879704?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3240582642288879704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/dangling-m.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3240582642288879704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3240582642288879704'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/dangling-m.html' title='Dangling M'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6994737146421721947</id><published>2008-12-08T04:05:00.000-08:00</published><updated>2010-03-28T21:12:11.325-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Etcetera, etcetera</title><content type='html'>A paper Caspian wrote for school:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AoiehnIJI/AAAAAAAAAPE/ehxu5pTxd0w/s1600/Caspian+Paper.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AoiehnIJI/AAAAAAAAAPE/ehxu5pTxd0w/s400/Caspian+Paper.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;I wold like to go&lt;/i&gt;&lt;br /&gt;&lt;i&gt;to the amoson river.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;to check out red bellied-&lt;/i&gt;&lt;br /&gt;&lt;i&gt;pranas and pink river dolphins&lt;/i&gt;&lt;br /&gt;&lt;i&gt;etcetra etcetra&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6994737146421721947?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6994737146421721947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/etcetera-etcetera.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6994737146421721947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6994737146421721947'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/etcetera-etcetera.html' title='Etcetera, etcetera'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aKONQq2A3U0/S7AoiehnIJI/AAAAAAAAAPE/ehxu5pTxd0w/s72-c/Caspian+Paper.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7850371839232469771</id><published>2008-12-06T13:54:00.000-08:00</published><updated>2010-03-28T21:38:41.285-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nazis'/><category scheme='http://www.blogger.com/atom/ns#' term='zombies'/><title type='text'>It's okay to hate</title><content type='html'>In contemporary society, it's unacceptable to portray any particular group of people as fundamentally evil in mainstream movies. No matter how noble the hero, he or she can't go around mowing down the antagonists with a machine gun because they can't be &lt;span style="font-style: italic;"&gt;that bad&lt;/span&gt;. Perhaps this goes too far, too "P.C." in some contexts, but the respect we've achieved for other groups of humans (which admittedly may waver from time to time) still points to this being a pretty darn empathic apex in our checkered history.&lt;br /&gt;&lt;br /&gt;But there are two exceptions - two groups of people who it is acceptable to loathe, revile... even outright hate.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nazis&lt;/li&gt;&lt;li&gt;Zombies&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This movie, therefore, is perfect:&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3-KQh87_V2Q&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&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/3-KQh87_V2Q&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;+1 point for the Evil Dead reference. +1 for the Indiana Jones reference. &lt;a href="http://www.dodsno.no/"&gt;Dead Snow (a.k.a. Død Snø).&lt;/a&gt; Check it out.&lt;br /&gt;&lt;br /&gt;c/o &lt;a href="http://twitchfilm.net/site/view/nazi-snow-zombies-go-to-sundance-celebrate-with-new-trailer"&gt;Twitch&lt;/a&gt; and Via &lt;a href="http://io9.com/5103103/the-undead-third-reich-comes-to-sundance"&gt;IO9&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But if we're talking about inhuman monsters, then surely invaders from space count too?&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4KEueJnsu80&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&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/4KEueJnsu80&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ironsky.net/site/"&gt;Iron Sky&lt;/a&gt; - pulpy art deco in space. &lt;i&gt;Evil&lt;/i&gt; art deco...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7850371839232469771?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7850371839232469771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/it-okay-to-hate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7850371839232469771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7850371839232469771'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/it-okay-to-hate.html' title='It&amp;#39;s okay to hate'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1189845921622192002</id><published>2008-12-05T15:02:00.000-08:00</published><updated>2010-03-28T21:09:31.326-07:00</updated><title type='text'>I Feel... Uncertain</title><content type='html'>Courtesy of &lt;a href="http://www.sonic.net/~rknop/"&gt;Robert Knop&lt;/a&gt;, my favorite astrophysicist at Linden Lab:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Anx0y41BI/AAAAAAAAAO8/E8U4wrni6DQ/s1600/gif.latex.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Anx0y41BI/AAAAAAAAAO8/E8U4wrni6DQ/s400/gif.latex.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The equation describes a quantum superposition of two states with equal amplitudes.&lt;br /&gt;&lt;br /&gt;(graphic c/o&amp;nbsp;&lt;a href="http://www.codecogs.com/"&gt;http://www.codecogs.com/&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1189845921622192002?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1189845921622192002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/i-feel-uncertain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1189845921622192002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1189845921622192002'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/12/i-feel-uncertain.html' title='I Feel... Uncertain'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aKONQq2A3U0/S7Anx0y41BI/AAAAAAAAAO8/E8U4wrni6DQ/s72-c/gif.latex.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8896565768989223471</id><published>2008-11-27T16:44:00.000-08:00</published><updated>2010-03-28T21:27:16.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Mobile Device Needs</title><content type='html'>I guess I should enumerate what needs I have for a mobile device. At the very least, this will remind me what software I need to purchase and/or re-install after an upgrade. In rough priority/usage order...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clock - I don't carry any other timekeeping devices&lt;/li&gt;&lt;li&gt;Google Calendar - bi-directional sync for agenda display and reminders - we use GCal at work; my phone tells me where to go and when.&amp;nbsp; I use &lt;a href="http://oggsync.com/"&gt;OggSync&lt;/a&gt; currently.&lt;/li&gt;&lt;li&gt;Contacts - my wetware is useless&lt;/li&gt;&lt;li&gt;Personal Email - I use Hotmail (premium); I access it through Pocket IE and the mobile site, since sync is VERY SLOW&lt;/li&gt;&lt;li&gt;RSS Feeds - I use &lt;a href="http://www.iliumsoft.com/site/nw/newsbreak.php"&gt;Ilium Software's NewsBreak&lt;/a&gt; to sync about 60 feeds&lt;/li&gt;&lt;li&gt;Web browsing - for checking things that don't have feeds, and answering rhetorical questions&lt;/li&gt;&lt;li&gt;SMS/Text Messaging&lt;/li&gt;&lt;li&gt;Telephone - yes, it's only here on the list. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/gmm/"&gt;Google Maps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Today's weather/weekly forecast&lt;/li&gt;&lt;li&gt;Calculator&lt;/li&gt;&lt;li&gt;Work Email - I manually sync but only when off on vacation; I try not to take work home with me. We use IMAP.&lt;/li&gt;&lt;li&gt;SSH client - for work use, in emergencies. Currently &lt;a href="http://www.dejavusoftware.com/pocketty/"&gt;PockeTTY&lt;/a&gt;&lt;/li&gt;&lt;li&gt;IRC client - for work use, in emergencies. Currently &lt;a href="http://zsirc.com/"&gt;zsIRC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Ebook reader - I use &lt;a href="http://www.mobipocket.com/"&gt;MobiPocket&lt;/a&gt; and Adobe Reader&lt;/li&gt;&lt;li&gt;Picture viewer - wrote my own that's gobs better than the one WM comes with and has "touch scrolling"&lt;/li&gt;&lt;li&gt;Video player - currently &lt;a href="http://www.pockettv.com/"&gt;PocketTV&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Camera - my current phone's camera is sucktastic so I rarely use it, but it would be nice to ditch another device&lt;/li&gt;&lt;li&gt;Games - Solitaire, &lt;a href="http://www.bodenstandig.de/marble/"&gt;Marble Madness&lt;/a&gt;, Bubble Breaker, Age of Empires, Darxide EMP&lt;/li&gt;&lt;li&gt;Astronomy - my own celestial sphere app, to identify stars&lt;/li&gt;&lt;li&gt;&lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!838.entry"&gt;Marquee&lt;/a&gt; - my own app, for communicating across crowded rooms&lt;/li&gt;&lt;li&gt;Flash player - for things like &lt;a href="http://amanita-design.net/samorost-1/"&gt;Samorost&lt;/a&gt; - via Adobe FlashLite, Adobe Flash Player ActiveX and &lt;a href="http://www.antmobile.com/flashassist.html"&gt;FlashAssist&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Music player - again, I currently use a &lt;a href="http://en.wikipedia.org/wiki/Rio_Carbon"&gt;dedicated device&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I think that's it - the other things I have installed are infrastructure to&lt;em&gt; make the device work&lt;/em&gt; or &lt;em&gt;make the device usable&lt;/em&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ftouchsl.com/"&gt;FTouchSL&lt;/a&gt; - touch scrolling in all apps&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opera.com/mobile/"&gt;Opera Mobile 9.5 Beta&lt;/a&gt; - decent browsing when Pocket IE doesn't cut it&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.southwaycorp.net/multiie.htm"&gt;MultiIE&lt;/a&gt; - provide multiple browser tabs and additional right-click items (View Source, Copy Link, etc)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cam.com/vxutil.html"&gt;Cambridge vxUtil&lt;/a&gt; - for network fu&lt;/li&gt;&lt;li&gt;&lt;a href="http://mobile-sg.com/software/?p=ClearTemp&amp;amp;platform=ppc"&gt;Vicsoft ClearTemp&lt;/a&gt; - wipe caches and other temp files&lt;/li&gt;&lt;li&gt;&lt;a href="http://mypaq.net/mobilesoft/wimr/"&gt;WIMR&lt;/a&gt; - Where Is My RAM?&lt;/li&gt;&lt;li&gt;HTC Home plugin - advanced Today screen interface&lt;/li&gt;&lt;li&gt;HTC Task Manager - kill tasks consuming memory from the home screen&lt;/li&gt;&lt;li&gt;&lt;a href="http://forum.xda-developers.com/showthread.php?p=1700898"&gt;Schap's Advanced Task Manager&lt;/a&gt; - manage running tasks&lt;/li&gt;&lt;li&gt;&lt;a href="http://forum.xda-developers.com/showthread.php?t=347178"&gt;Schap's Registry Editor&lt;/a&gt; - random hackery&lt;/li&gt;&lt;li&gt;Microsoft .NET Compact Framework 2.0 - for newer apps&lt;/li&gt;&lt;li&gt;Custom phone skin - the built-in dialer is bland&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.phm.lu/Products/PocketPC/RegEdit/"&gt;PHM Registry Editor&lt;/a&gt; - the first thing I install&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/5828855760220275945-8896565768989223471?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8896565768989223471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/mobile-device-needs_27.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8896565768989223471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8896565768989223471'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/mobile-device-needs_27.html' title='Mobile Device Needs'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2273499542909566140</id><published>2008-11-27T06:30:00.000-08:00</published><updated>2010-03-28T21:27:40.396-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Stupid Phone, Stupid Carrier</title><content type='html'>So, right before I left the Seattle area about two and a half years ago I traded in my old dumb phone and PocketPC (Dell Axim) for an &lt;a href="http://en.wikipedia.org/wiki/HTC_Apache"&gt;HTC Apache&lt;/a&gt; (Verizon XV6700). That phone was already a year old at the time, but I was lusting after the capabilities (which were pretty good at the time) and the industrial design (which I still like, even the protruding antenna). It's keyboard is excellent - nice square keys that fit tightly together to maximize space but bulge upwards so your fingers have good contact, backlight, logical layout, and so on. No number keys or Control key, but pretty much everything else you'd want.&lt;br /&gt;&lt;br /&gt;I'm running the &lt;a href="http://www.freewarepocketpc.net/ppc-download-htc-home-plugin-v2-1.html"&gt;HTC Home plugin&lt;/a&gt; for the primary UI, &lt;a href="http://www.ftouchsl.com/"&gt;FTouchSL&lt;/a&gt; for touch-scrolling, &lt;a href="http://www.freewarepocketpc.net/ppc-download-vistahide-battery-gauge-v1-1-1.html"&gt;VistaHide Battery Gauge&lt;/a&gt;, and a nice black theme - and I'm &lt;em&gt;generally &lt;/em&gt;happy with the device.&lt;br /&gt;&lt;br /&gt;Time has marched on, though, and the phone is showing its age:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It's running Windows Mobile 5. WM6 came out a few years ago and WM6.1 was a significant upgrade to that. Yes, you can install hacked WM6.1 builds on the phone but I don't care quite enough to risk bricking it.&lt;/li&gt;&lt;li&gt;With .NET Compact Framework 2.0 installed (needed for many newer apps) the available storage memory drops well below 20MB, and the random other files that apps force you to install in \Windows mean I've got about 14MB free. Use an app like &lt;a href="http://www.iliumsoft.com/site/nw/newsbreak.php"&gt;NewsBreak&lt;/a&gt; that fetches images using IE and the cache eats that up lickety-split. You can try to install apps to an SD card, but many (e.g. Google Maps) plunk their files in main memory anyway so you need to move files and hack the registry.&lt;/li&gt;&lt;li&gt;It's SSSSSSSLLLLLLLOOOOOOWWWWW - probably due to cruft accumulating on the system - little files here and there that cause directory enumeration to grind to a halt, etc. A hard reset (i.e. restore to factor settings) would probably help.&lt;/li&gt;&lt;li&gt;QVGA display (240x320) - newer devices are full VGA (480x640) and much crisper.&lt;/li&gt;&lt;li&gt;No GPS - which would be really handy for local searches&lt;/li&gt;&lt;li&gt;No accelerometer - admittedly, just a fun toy, but tempting...&lt;/li&gt;&lt;li&gt;It's fat - like all hardware-keyboard devices. But embarrassingly so.&lt;/li&gt;&lt;li&gt;The screen is inset, which means it gathers dust. It's also full of nooks and crannies and the screen is sensitive. Simply put, it's not built to sit in a pocket by itself, so I keep it in a vinyl sleeve which detracts from the aesthetics and usability (you can't answer a call one handed).&lt;/li&gt;&lt;li&gt;The D-Pad (five-way direction input) on the device is like those eraser-mice. I really like it since you can navigate without moving your finger - just shift pressure in a different direction. However, the detente for "down" has worn off so it's touchy, and the rubber nubbin has worn down so it's physically uncomfortable to use. Making the "Halo Mobile" demo was literally painful.&lt;/li&gt;&lt;li&gt;CDMA so you're not using it outside North America&lt;/li&gt;&lt;/ul&gt;I was looking forward to the new HTC Touch Pro, which addresses many of these concerns:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HTC's industrial design&lt;/li&gt;&lt;li&gt;Same basic keyboard design, but with a Control key... and number row!&lt;/li&gt;&lt;li&gt;WM6.1&lt;/li&gt;&lt;li&gt;&amp;gt;200MB of storage memory, so you don't have to pay attention&lt;/li&gt;&lt;li&gt;Faster processor (500MHz vs. 400MHz)&lt;/li&gt;&lt;li&gt;VGA display&lt;/li&gt;&lt;li&gt;aGPS (a for augmented - it uses cell signals to boost accuracy in urban areas)&lt;/li&gt;&lt;li&gt;Accelerometer, so you can play stupid-fun games and auto-rotate the camera&lt;/li&gt;&lt;li&gt;Somewhat thinner (but not much); smaller overall dimensions&lt;/li&gt;&lt;li&gt;Flush screen - designed for being pocketed&lt;/li&gt;&lt;li&gt;5-way D-Pad is bigger and inset&lt;/li&gt;&lt;li&gt;Touch-scrolling built in (provided by TouchFlo)&lt;/li&gt;&lt;li&gt;Nifty home screen functionality (TouchFlo 3D, like next gen HTC Home)&lt;/li&gt;&lt;li&gt;Still CDMA, but honestly I don't travel much and I'm stuck with Verizon anyway, right?&lt;/li&gt;&lt;/ul&gt;Not only that, but the Windows Mobile blogosphere was really happy with the device.&lt;br /&gt;Alas, the carrier (Verizon) got ahold of it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modified case - it's boxier, which detracts from the aesthetics significantly and makes it look larger and uncomfortable to use.&lt;/li&gt;&lt;li&gt;The keyboard layout makes no sense - they removed the Control key, shove the arrow keys over so the up arrow is between N and M (W... T... F...?), move Enter down to the bottom, add brightly colored Fn caps, and so on.&lt;/li&gt;&lt;li&gt;The GPS is crippled - locked to the Verizon navigation app you need to pay extra for. Probably hackable, but *ugh*&lt;/li&gt;&lt;li&gt;Accelerometer is a ??? - early details on the phone said "no". Early unboxers say "yes". I say "don't trust it"&lt;/li&gt;&lt;li&gt;Memory significantly reduced; early unboxers say you'll be lucky to have 40MB free before you start installing apps. Toss Opera on there (since IE6 is unlikely to come out and it'll suck anyway) and... back where we started.&lt;/li&gt;&lt;/ul&gt;Oh, and Verizon charges $100 more for the phone than the equivalent models from Sprint or AT&amp;amp;T. Even with my 2-year-gimme-a-new-one discount I'm probably looking at over $400 for it.&lt;br /&gt;&lt;br /&gt;Yes, with software hackery (custom ROMs, hack the GPS) or hardware investment (buy an unlocked one straight from HTC or from Sprint) many of these could be overcome. But any of those are a significant up-front time investment plus ongoing maintenance time, and would cost more $$$ anyway.&lt;br /&gt;&lt;br /&gt;Aaaaaaarrrrrgh!&lt;br /&gt;&lt;br /&gt;So I'm actually pondering getting an iPhone.&lt;br /&gt;&lt;br /&gt;I have no attachment whatsoever to Verizon (although Verizon Wireless apparently did not cave to illegal wiretaps quite as quickly as AT &amp;amp; "Your World. Delivered. To the NSA." f'ing T), although I use my phone as a voice-communication-device so infrequently that Su and I can share a pretty good plan we're grandfathered in to. I love my Rio Carbon MP3 player (the third one I've owned!), but consolidating devices has its appeal. Freedom from the tyranny of choice ("any color you want, as long as it's black") has its appeals as well. And every other geek has one anyway (except the masochists who went with with the Googlephone) so it's going to be a long lived platform.&lt;br /&gt;&lt;br /&gt;*sigh*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2273499542909566140?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2273499542909566140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/stupid-phone-stupid-carrier.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2273499542909566140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2273499542909566140'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/stupid-phone-stupid-carrier.html' title='Stupid Phone, Stupid Carrier'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4221652384334546657</id><published>2008-11-08T14:50:00.000-08:00</published><updated>2010-03-28T21:31:14.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='halo'/><title type='text'>"Halo Mobile"</title><content type='html'>A game technology demo I wrote as a hobby project circa 2003-2005.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Yjmn7WTLZPY&amp;hl=en_US&amp;fs=1&amp;"&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/Yjmn7WTLZPY&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Uses &lt;a href="http://www.fmod.org/"&gt;FMOD&lt;/a&gt; for audio, &lt;a href="http://www.gapidraw.com/"&gt;GapiDraw&lt;/a&gt; for 2D, custom 3D software rendering engine integrated with a custom voxel terrain engine. Music is from the &lt;a href="http://www.amazon.com/Halo-Original-Soundtrack-Martin-ODonnell/dp/B000067UO7"&gt;Halo soundtrack (by Martin O'Donnell)&lt;/a&gt;. Weapon graphics and SFX are borrowed from the &lt;a href="http://www.nextforcesw.com/marathon/halathon.shtml"&gt;Halathon&lt;/a&gt; project. Sprites are adapted from photographs of &lt;a href="http://www.toybender.com/wtf-happened-to-joyride-studios/"&gt;Joyride&lt;/a&gt; toys. Custom physics engine (you can see it when a weapon is dropped or how the grunts recoil from each other).&lt;br /&gt;&lt;br /&gt;The demo is shown running on a 400MHz &lt;a href="http://en.wikipedia.org/wiki/HTC_Apache"&gt;HTC Apache&lt;/a&gt; (but it ran just fine on the 300MHz &lt;a href="http://www.mobiletechreview.com/dell_axim_x5.htm"&gt;Dell Axim X5&lt;/a&gt; I had during active development). I apologize for poor filming.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No, this will NEVER be released or made available for download. Halo is a registered trademark of Microsoft Corporation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-4221652384334546657?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4221652384334546657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/mobile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4221652384334546657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4221652384334546657'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/mobile.html' title='&amp;quot;Halo Mobile&amp;quot;'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6101437214715744277</id><published>2008-11-07T13:09:00.000-08:00</published><updated>2010-03-28T21:31:36.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>"Om" . (" nom" x 3)</title><content type='html'>While discussing the crufty nature of the &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions"&gt;C++0x lambda function syntax&lt;/a&gt; over IRC at work, a co-worker commented that Perl was perhaps unfairly criticized for its syntax. My reply:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;When you try an illegal program in C++, it fails to compile. When you write such an program in Perl, it becomes self aware and eats you.&lt;/div&gt;&lt;br /&gt;(Yes, I know that C++0x must use a syntax that would be illegal in previous versions of the language, which restricts the possibilities. )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6101437214715744277?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6101437214715744277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/nom-x-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6101437214715744277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6101437214715744277'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/nom-x-3.html' title='&amp;quot;Om&amp;quot; . (&amp;quot; nom&amp;quot; x 3)'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7439828854288889353</id><published>2008-11-06T13:17:00.000-08:00</published><updated>2010-03-28T21:02:43.320-07:00</updated><title type='text'>Flickr Photostream</title><content type='html'>I've started using Flickr for more photos, since the tools are better. My photostream is:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/inexorabletash/"&gt;http://www.flickr.com/photos/inexorabletash/ &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7439828854288889353?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7439828854288889353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/flickr-photostream.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7439828854288889353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7439828854288889353'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/11/flickr-photostream.html' title='Flickr Photostream'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6009092322493533328</id><published>2008-09-17T14:49:00.000-07:00</published><updated>2010-03-28T21:31:43.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logo'/><title type='text'>Logo - Reduction Redux</title><content type='html'>&lt;div&gt;So, after more searching, it turns out that (PROC INPUT INPUT ...) is an explicit calling convention in Logo and Lisp, so I can't just throw a &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!1305.entry"&gt;reduction wrapper &lt;/a&gt;around otherwise naive function implementations - I do need to evaluate arguments (based on the arity of the function) or pass them all in. The code is uglier, but... well, it works.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Internally, however, I'm now using the new JavaScript 1.6 and 1.8 functions like &lt;a href="http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference:Objects:Array:reduce"&gt;Array.reduce&lt;/a&gt; internally for the implementation, and I've added MAP, REDUCE and FILTER procedures as well.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6009092322493533328?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6009092322493533328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/09/logo-reduction-redux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6009092322493533328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6009092322493533328'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/09/logo-reduction-redux.html' title='Logo - Reduction Redux'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8745446190578962689</id><published>2008-08-25T16:10:00.000-07:00</published><updated>2010-03-28T21:31:50.054-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logo'/><title type='text'>A nice turtle reduction</title><content type='html'>I've been poking away at my &lt;a href="http://www.calormen.com/logo"&gt;Logo Interpreter&lt;/a&gt; for the past week. A whole bunch of changes went in - it now supports 64 built-in procedures (25 Turtle Graphics, 25 arithmetic/logical/comparisons, plus flow control, etc.), infix expressions (+-*/%^, etc.), and attempts to adhere to the &lt;a href="http://www.cs.berkeley.edu/~bh/logo.html"&gt;UCBLogo&lt;/a&gt; and &lt;a href="http://ccgi.frindsbury.force9.co.uk/greatlogoatlas/?The_Apple_II_Standard"&gt;Apple II Logo&lt;/a&gt; "standards" where possible. (They are only "standards" as every Logo interpreter has its own quirks; it's a far less standardized language than BASIC.) To wrap up the tinkering today, I decided to tackle a "weird" bit of syntax - calling a procedure within parenthesis.&lt;br /&gt;&lt;br /&gt;In most programming languages, () are grouping characters around expressions. This is true in Logo as well so you can do &lt;em&gt;FORWARD (1+2)*3&lt;/em&gt;. But Logo also supports a convention for calling functions that may consume an unlimited number of arguments - e.g. &lt;em&gt;(SUM 1 2 3 4)&lt;/em&gt;. This required adding two new bits of logic - the syntax handling, and the function handling. &lt;br /&gt;&lt;br /&gt;First, a special case for the &lt;em&gt;(&lt;/em&gt; operator so that if the first atom inside is an identifier, don't simply evaluate the contents but instead create a list from the following expressions. So &lt;em&gt;(SUM 1 2 + 3 4)&lt;/em&gt; prepares a list &lt;em&gt;[ 1 5 4 ] &lt;/em&gt;to hand off.&lt;br /&gt;&lt;br /&gt;Second, the handling. I started looking in dread at the functions - how do I make &lt;em&gt;SUM&lt;/em&gt; handle 2 (in a non-list context) or a list of arguments? I started off special-casing the function and caller to pass in "multi" mode. That was lame, when you need to do it for some large fraction of the 64 functions (&lt;em&gt;SUM, PRODUCT, AND, OR, WORD, ...&lt;/em&gt;). An alternative would be to specify the "arity" as metadata for each function - so the evaluator would know before calling that &lt;em&gt;SUM &lt;/em&gt;would consume two inputs in a sequence like &lt;em&gt;PRODUCT 2 SUM 3 MINUS 12&lt;/em&gt; and take care of the evaluation. This scales (and is probably the standard implementation technique).... but still wasn't elegant enough.&lt;br /&gt;&lt;br /&gt;Instead, after staring at the functions, I decided to use a reduce (or fold) heuristic. So &lt;em&gt;SUM&lt;/em&gt; only ever consumes two inputs from the input list. But when called in a parenthetical context, it keeps getting called until there are no inputs left in the list, e.g.&lt;br /&gt;&lt;blockquote&gt;(SUM 1 2 3 4) turns into: procedure SUM, arguments [ 1 2 3 4 ]&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;call SUM with [ 1 2 3 4 ], yielding 3 and leaving [ 3 4 ]&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;push 3 onto the front of the list&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;call SUM with [ 3 3 4 ], yielding 6 and leaving [ 4 ]&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;push 6 onto the front of the list&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;call SUM with [ 6 4 ], yielding 10 and leaving []&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;the input list is empty, so return 10&lt;/blockquote&gt;This is called &lt;em&gt;folding&lt;/em&gt; or &lt;em&gt;reducing&lt;/em&gt; over a function - in some languages, you can call &lt;em&gt;reduce( myfunctions, inputs ... )&lt;/em&gt; and it basically does this same thing, calling the function repeatedly until you run out.&lt;br /&gt;&lt;br /&gt;The nice thing is that for the built-in procedures like &lt;em&gt;PRODUCT&lt;/em&gt;, &lt;em&gt;SUM, WORD, AND, OR,&lt;/em&gt; etc. this does exactly what you'd expect.&lt;br /&gt;&lt;br /&gt;What's neat though is that this instantly - with no other changes to the code - you can apply this to user defined functions. So you can do:&lt;br /&gt;&lt;blockquote&gt;to rect :l :h repeat 2 [ fd :l rt 90 fd :h rt 90 ] sum :l :h end&lt;br /&gt;(rect 20 30 40 50 60)&lt;/blockquote&gt;&lt;em&gt;That's a fairly lame example - anything better?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;To avoid locking up when you call a function that consumes no inputs like &lt;em&gt;(HIDETURTLE)&lt;/em&gt; I put in a check so that if no arguments are consumed the reduction terminates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8745446190578962689?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8745446190578962689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/08/nice-turtle-reduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8745446190578962689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8745446190578962689'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/08/nice-turtle-reduction.html' title='A nice turtle reduction'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1153700290132169009</id><published>2008-08-16T16:13:00.000-07:00</published><updated>2010-03-28T21:31:56.214-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='logo'/><title type='text'>Logo Interpreter in Javascript</title><content type='html'>Others have &lt;a href="http://www.amberfrog.com/logo/"&gt;done it better&lt;/a&gt;, but I thought I'd take a stab at a Logo interpreter in Javascript. So &lt;a href="http://calormen.com/Logo/"&gt;here it is&lt;/a&gt; - warning, doesn't work in Internet Explorer (yet).&lt;br /&gt;&lt;br /&gt;The TODO list is pretty large. Right now it uses the "&lt;a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)"&gt;canvas&lt;/a&gt;" element so it only works in Firefox, Safari and Opera (i.e. not I.E.). I plan to make it optionally use &lt;a href="http://www.w3.org/TR/NOTE-VML"&gt;VML&lt;/a&gt; (in IE), &lt;a href="http://www.w3.org/Graphics/SVG/"&gt;SVG&lt;/a&gt; or canvas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1153700290132169009?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1153700290132169009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/08/logo-interpreter-in-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1153700290132169009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1153700290132169009'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/08/logo-interpreter-in-javascript.html' title='Logo Interpreter in Javascript'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4983115707688286524</id><published>2008-08-04T11:12:00.000-07:00</published><updated>2010-03-28T21:37:32.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Product Idea</title><content type='html'>I want one of these:&lt;br /&gt;&lt;img src="http://69.90.174.246/photos/display_pic_with_logo/62488/62488,1169562629,1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;... but made of carbon fiber so it weighs practically nothing.&lt;br /&gt;&lt;br /&gt;Surely there's a market for that?&lt;br /&gt;&lt;br /&gt;(And I'm not going to spend $2000 on one from a company called &lt;a href="http://www.zerohalliburton.com/business/carbon_fiber/P4-stealth.jsp"&gt;Halliburton&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Anyone?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-4983115707688286524?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4983115707688286524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/08/product-idea.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4983115707688286524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4983115707688286524'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/08/product-idea.html' title='Product Idea'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2246603558722855081</id><published>2008-07-19T04:15:00.000-07:00</published><updated>2010-03-28T21:33:46.481-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='star trek'/><title type='text'>Nebula Class Toybash</title><content type='html'>This project has been on my TODO list for many years. I finally dusted off the pieces last weekend and took it to a reasonable stopping point. At least, for a few more years.&lt;br /&gt;&lt;br /&gt;It's a conversion of a &lt;a href="http://newforcecomics.com/trekref/playtoys.htm"&gt;Playmates&lt;/a&gt; &lt;a href="http://www.ex-astris-scientia.org/scans/galaxy1.htm"&gt;&lt;em&gt;Galaxy&lt;/em&gt;-class&lt;/a&gt; &lt;em&gt;U.S.S. Enterprise &lt;/em&gt;NCC-1701-D into a &lt;a href="http://www.ex-astris-scientia.org/scans/nebula1.htm"&gt;&lt;em&gt;Nebula&lt;/em&gt;-class&lt;/a&gt; ship. I'd picked the ship up on eBay ages ago, and separated(poorly!) the hulls, but then it sat for a few years.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pf_zfnUSBXflTwcoJc35jWr2Y3xAyqkk3K0a3HcmoKBG-aHHuBuGtQ41Hhu-7Q-8qkp_kCcGbhGU?PARTNER=WRITER"&gt;&lt;/a&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pZU0W_h_0tg6X_fWHSckWXQSd-H1ZPp-7yc-mVVFiq6uAV64mUa1CWXvrSgUjr3euMcNFeGxZlde0d9YwDg_piA?PARTNER=WRITER"&gt;&lt;img alt="right" border="0" height="120" src="http://blufiles.storage.msn.com/y1pu35IcB0mTYkeC9Xq870X6OJlGlq9JZ51Z2LmH0ykwQXa24xUB6T5beFyOv-Dev9ErNC3ZuAM4mI?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The hulls are joined together by screws inside the secondary hull, so it can be disassembled for further work. The wiring and electronics are intact. The sound effects buttons are in pairs, and there wasn't room for one of them, so only two buttons/sounds remain. I swapped the button leads around so it has "photon torpedo" and "jump to warp" as the functional SFX. The nacelle lighting also still works. (Not shown in pictures.)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pfX1Yw0jJklFpExulBWbl7Xt5wan4soUl9nCTt7LDIuq_QOuw_m0t5lJ426VlFLTDDanFMgtwAEJZ40pL_5nArQ?PARTNER=WRITER"&gt;&lt;img alt="behind" border="0" height="186" src="http://blufiles.storage.msn.com/y1pRpesDdRqGdHFFUI30X4x-9_039MgYzkZS7MuprLeD-RAZKHyANaoWcnSD86bB9_0rizBzqDVx0U?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since this is a kitbash, it diverges from the actual &lt;em&gt;Nebula&lt;/em&gt;-class design, and more closely resembles the &lt;a href="http://www.ex-astris-scientia.org/articles/proto-nebula.htm"&gt;Nebula-class prototypes&lt;/a&gt; used as background set props and graveyard ships in episodes of TNG and DS9. Specifically, the secondary hull is too pointy and the nacelles/pylons are too far back.&lt;br /&gt;&lt;br /&gt;&lt;img alt="above left" border="0" height="127" src="http://blufiles.storage.msn.com/y1pCY8DdlEfdT806N3bCQUxd56kIeN8gLkhWBQ-U2wakRcjdtlkjA1XYCgBQF3tUN0zDh5QnKQkbLQ?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;br /&gt;&lt;br /&gt;The junction between the primary and secondary hull has a gap - it required significant eyeballing to get the cut lines right. I'd also completely removed the "cobra head" portion of the neck from the lower half of the hull, so it was actually a matter of figuring out how much to reattach. The undercut at the bottom of the secondary hull (where the nacelle pylons used to attach) is covered with an as-yet un-detailed polystyrene plate.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1phQEgN_ULcdEYIE9KvuOn2q6sTyPvqBMwCvtdk_msc4huQM56hpL-0eH58NWI4u6XF-wUtD0vh9c199Jltf78ZQ?PARTNER=WRITER"&gt;&lt;img alt="front" border="0" height="133" src="http://blufiles.storage.msn.com/y1p3N_tAjXs9TWnJMDKWCta5eMAxonx_d_4qp-yDyhOIqid57hfm_i0BCnO7211SZShdhXbd-c5Svs?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The TODO list for the far distant future includes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Custom labels (so it doesn't say NCC-1701-D / U.S.S. Enterprise)&lt;/li&gt;&lt;li&gt;Greeble and paint the secondary hull undercut&lt;/li&gt;&lt;li&gt;Build a "mission pod"&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pSwDedd8GMllM-6YFec__VLYb6mIooupyDxeNbWZ2TFIufKPZOOAOdA9UBmIfEjVxfW83Mb4LSofE0iij-nI_gQ?PARTNER=WRITER"&gt;&lt;img alt="dramatic" border="0" height="148" src="http://blufiles.storage.msn.com/y1pCTS9CUQSF_ndsPsjz-x3y7DpQxSQC35imxtksnwFTbINaiobtLoWDsbTuS2zXC-Fe0GXvMxtfLw?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2246603558722855081?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2246603558722855081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/nebula-class-toybash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2246603558722855081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2246603558722855081'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/nebula-class-toybash.html' title='Nebula Class Toybash'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8522649950356338365</id><published>2008-07-12T10:40:00.000-07:00</published><updated>2011-05-28T18:21:09.045-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vniic'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>vnIIc Update - Keyboard/Joystick support</title><content type='html'>Crossing something off my TODO list (and giving my brain a rest for a while) I dusted off some in-progress work on &lt;a href="http://www.calormen.com/vnIIc/"&gt;vnIIc&lt;/a&gt; and published version 1.0.0.15.&lt;br /&gt;Changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Keyboard support&lt;/strong&gt; - as you type on the Apple II client, keys are sent back to the Windows server. If the vnIIc window is not active, &lt;strong&gt;key events are sent to Windows&lt;/strong&gt;. So you can, for example, type into Notepad.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Joystick/Paddle support&lt;/strong&gt; - paddle states are sent to the Windows server as well. If the vnIIc window is not active, these are translated into &lt;strong&gt;mouse events&lt;/strong&gt;.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open/Closed Apple&lt;/strong&gt; (a.k.a. Joystick/Paddle button) support - these are mapped to the left and right &lt;strong&gt;ALT keys&lt;/strong&gt;. Sorry, you can't click the mouse with the Apple.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Screen region selection&lt;/strong&gt; - click the &lt;strong&gt;"+"&lt;/strong&gt; button at the top of the window, then drag your mouse to select part of your desktop to focus in on - great for streaming non-full-screen applications. &lt;/li&gt;&lt;/ul&gt;Most of this has been done for a while, but unpublished. The initial protocol was one way only. I'd bodged in handling receiving data from the client, but it was done with an asynchronous event handler and the system would behave unreliably. The server would continue to stream data to the client while it was busy reading the paddle states (which can take several milliseconds) and all hell would break loose.&amp;nbsp; &lt;br /&gt;I reworked the protocol to be synchronous (the server sends 256 bytes of graphic data, then reads 1 byte of input state data), and then spent 2 hours tracking down a silly bug where the client would fall into an infinite loop. At that point, everything was rock solid.&lt;br /&gt;&lt;br /&gt;This probably means I can simplify the client-&amp;gt;server transmission protocol. Right now it sends keyboard state (if changed) *or* open apple state (if changed) *or* closed apple state (if changed) *or* paddle 0 state (if changed) *or* paddle 1 state (if changed) *or* a sync byte - in other words, it sends the most relevant state change as a single byte. This is legacy from when the time the client would spend computing what to send and sending it would cause the communication to fall out of sync. Now that it is synchronous, I can probably just send everything.&lt;br /&gt;&lt;br /&gt;It also means that I can bolt on mouse support some time soon. (i.e. in 6 months when I feel like touching this again)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8522649950356338365?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8522649950356338365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/vniic-update-keyboardjoystick-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8522649950356338365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8522649950356338365'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/vniic-update-keyboardjoystick-support.html' title='vnIIc Update - Keyboard/Joystick support'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1794783981135210220</id><published>2008-07-12T07:38:00.000-07:00</published><updated>2010-03-28T21:38:55.444-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Words of Wisdom</title><content type='html'>I'm feeling a little out of it today, so I thought I'd spend some time reading something light and fluffy. I chose &lt;em&gt;Voyage of the Space Beagle&lt;/em&gt; by A. E. van Vogt, first published in 1939. &lt;br /&gt;&lt;br /&gt;A couple of choice quotes (emphasis mine): &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;For better or worse, the fight usually takes place within the framework of a legal system that tends to protect the entrenched minority. [...] Sooner or later, one group gains ascendancy. Once in office, the leaders restore "order" in so savage a bloodletting that the millions are cowed. Swiftly, the power group begins to restrict activities. &lt;em&gt;The licensing systems and other regulative measures necessary to any organized society become tools of suppression and monopoly.&lt;/em&gt; It becomes difficult, then impossible, for the individual to engage in new enterprise.&amp;nbsp;&lt;/blockquote&gt;And:&lt;br /&gt;&lt;blockquote&gt;In the long run, however, there can be no excuse for any individual not knowing what it is possible for him to know. Why shouldn't he? Why should he stand under the sky of his planet and look up at it with the stupid eyes of superstition and ignorance, deciding vital issues on the basis of somebody's fooling him?&lt;/blockquote&gt;Needless to say, in light of &lt;a href="http://www.washingtontimes.com/weblogs/aviation-security/2008/Jul/01/want-some-torture-with-your-peanuts/"&gt;so&lt;/a&gt; &lt;a href="http://www.salon.com/tech/col/smith/2008/07/11/askthepilot283/"&gt;many&lt;/a&gt; &lt;a href="http://www.huffingtonpost.com/anthony-d-romero/fighting-the-unconstituti_b_112329.html"&gt;things&lt;/a&gt;, &lt;a href="http://scienceblogs.com/pharyngula/2008/07/fight_back_against_bill_donohu.php"&gt;big &lt;/a&gt;&lt;a href="http://twistypuzzles.com/forum/viewtopic.php?f=1&amp;amp;t=10175&amp;amp;start=100"&gt;or&lt;/a&gt; &lt;a href="http://www.mongoosepublishing.com/phpBB2/viewtopic.php?t=36011&amp;amp;sid=69d904c4584f8656de2a9796aba2dca0"&gt;small&lt;/a&gt;, this didn't prove to be the escapism that I was hoping for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1794783981135210220?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1794783981135210220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/words-of-wisdom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1794783981135210220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1794783981135210220'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/words-of-wisdom.html' title='Words of Wisdom'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8151448423693470156</id><published>2008-07-05T11:28:00.000-07:00</published><updated>2010-03-28T20:59:48.685-07:00</updated><title type='text'>Uploaded Treasures</title><content type='html'>I have a "box of treasures" - trinkets that I've had since... well, forever. In the interest of preserving/uploading my memory, here's the contents with commentary. &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Oakley Centre&lt;/h2&gt;&lt;br /&gt;Oakley was a "gifted and talented" school I attended in Calgary from grades 4 through 9. When I started in September 1981 it was an experiment with a mere three "homerooms" (one each of grades 4, 5 and 6), sharing the Dr. Oakley School building with a program for special needs children. By the time I "graduated" in June 1987 it occupied the entire building and covered grades 3 through 9, and the school was closed at the end of that year. (A band of classmates composed and performed a song with the refrain "We were the first ones here and the last to go" at the grade 9 grad dance.) &lt;br /&gt;&lt;br /&gt;The school's official opening was not until March 1982 - until then, I guess it didn't count. I was one of two students chosen to hold the official ribbon (the other was Roma Sarkar?), and I was given one end of the ribbon as a memento afterwards, annotated by one of the staff in her distinctive calligraphy: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pLI6Ka5PA7ce_lx_5X_KU-VSKJ9tRGTSlmIOl52G2EE5e8SwPTY0SQEf36ZfAY-ZUa5bKMBvQvg4bI8zLDpVrGA?PARTNER=WRITER"&gt;&lt;img alt="100_2083" border="0" height="184" src="http://blufiles.storage.msn.com/y1p25WH12TUV97NCAPvDXcQDUWW6Y4hGvA2QSlm7yJvLQsSR_WBYllhRUyqIYD8FBgfZPZ9M4CAe50?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By the time the classes had expanded to encompass Grade 9, there was a student council. When I was in Grade 8 (?) I ran for class VP in what my memory tells me was a joke - posters made by friends touted "Josh and Bill the Cat" and "Josh and Opus". I lost (of course). The next year, classmates ran for various positions. Two of the "cool kids" (not my crowd; yes, I was a geek at a geek school) gave out buttons to wear to express support - I kept these for some reason. I seem to recall they didn't win. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pF69imDZdbGQOyYtFdiff5Hy1mQj_QMEU9POK8C4eBI9ihZX5-bpBxYq74gGU_sDfk4BkaaP-wyOqeETPT2mYcg?PARTNER=WRITER"&gt;&lt;img alt="100_2012" border="0" height="184" src="http://blufiles.storage.msn.com/y1p-NsK19tnnWofkqZ2pHtu_iDSS1XnDUXXJsTsFov7X8u9kV_WGFbZw_iiBwyLqxwFy1d8vGU2Ubo?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's one of two official pins that were made. The unicorn had been chosen as a school symbol in the first year after receiving multiple submissions in a contest. (I submitted the &lt;a href="http://images.google.com/imgres?imgurl=http://www.tvcrazy.net/tvclassics/wallpaper/oldshows/greatest-american/american-hero-symbol.jpg&amp;amp;imgrefurl=http://www.tvcrazy.net/tvclassics/wallpaper/pages/greatestamerican.htm&amp;amp;h=600&amp;amp;w=800&amp;amp;sz=25&amp;amp;hl=en&amp;amp;start=2&amp;amp;um=1&amp;amp;tbnid=EppAVXaBEbU0-M:&amp;amp;tbnh=107&amp;amp;tbnw=143&amp;amp;prev=/images%3Fq%3Dgreatest%2Bamerican%2Bhero%26um%3D1%26hl%3Den%26safe%3Doff%26client%3Dfirefox-a%26rls%3Dorg.mozilla:en-US:official%26sa%3DN"&gt;Greatest American Hero logo&lt;/a&gt;, but lost.) The eagle was adopted later as the symbol of the school sports teams (once we had those)... because the gymnasium already had an eagle painted on the floor from the building's previous life as Dr. Oakley Junior High. &lt;br /&gt;&lt;br /&gt;I had a second pin with the same images but the text "OAKLEY CENTRE HONORS" - it was lost because I actually wore those things for a few years after graduating. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1p-bRkpOdgTIpj8-AlFeNWlROzo8SJVW4pW-9BABjEkw6IzLimRSgy7qRvLYdn8HKsJESq2FIYz03As2xpVeBKtQ?PARTNER=WRITER"&gt;&lt;img alt="100_2080" border="0" height="184" src="http://blufiles.storage.msn.com/y1pbZ8Tbc81i_1LOQaBF0Zv3oc8dhNa8Lw-wo2CI1DlxPFgKHRRV6NB5MPiKRhUNtrA9sk-e5VAfws?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ceramic unicorn - I believe this was a gift from my parents circa 1985. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1ppfdcEyzFW3HNGBvJThzJonM1KII2xLQ6Nv77C5rfap1X9HSnMggv0zsINl1_BET8tLafNhoD1Jb_N-8WUmJF8Q?PARTNER=WRITER"&gt;&lt;img alt="100_2059" border="0" height="184" src="http://blufiles.storage.msn.com/y1p-hcLVAc3ZZCvCfdil8k929HuiQQXcd72L_ugNCRJ5a_QuZZfQuuL8pLlqRfXM1xHqt-YFvv5slo?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Classic Geekery&lt;/h2&gt;&lt;br /&gt;I was actually introduced to Dungeons &amp;amp; Dragons &lt;em&gt;before&lt;/em&gt; attending Oakley in 1981. The rough chronology that I remember is that my father was telling me about a possible special program I could attend the during the summer of 1981, and we stopped by an summer program (at the &lt;a href="http://www.bsc-eoc.org/national/ibs.html"&gt;Bird Sanctuary&lt;/a&gt;?) where we saw students playing D&amp;amp;D. My dad: "It's a game you play without pieces." Me: "WTF?" (well, perhaps not those words.) &lt;br /&gt;&lt;br /&gt;At Oakley I got hooked - didn't play much (my family lived towards and everyone bussed in to Oakley, so getting together with friends was a chore). Instead, I got absorbed into the world and rules. Most of my allowance from the 1980s was spent on D&amp;amp;D books and Dragon magazine, all later sold (for way, way too little) to buy Traveller books (which I still have). And Transformers. Which I don't. Pardon me, I'm getting teary eyed... &lt;br /&gt;&lt;br /&gt;Anyway, on that note, these nicely illustrated mythological creatures paper clips were gifts from my parents, circa 1984. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pG9x5aviWrV0yENhm0EBijJRzCpuXd-5-T2b1aKN_pa1cW6IUPCRzPjFIcxNT3Wyzf2DhUGQ7HUTq3bUngvsJvA?PARTNER=WRITER"&gt;&lt;img alt="100_2120" border="0" height="184" src="http://blufiles.storage.msn.com/y1puxEfLa9DbhoAtAIORrkkzc37G46FgneK1BLnhpJ62L37JpNrP9ted-v0BTSXqKga9XRyshbg7Fc?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While at Oakley I also got hooked on Doctor Who - I think my parents may have said "check out this show" or maybe I had my own TV by then. It gave me something to do during art class, at any rate: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pv5y0CS5A-94yZNUfWM02_wbJxhr-D0-MXBtAUzT7fgqeKEI6LWlI98-IQqqpOI-VfXy6osLztBmvmjTJCWaejg?PARTNER=WRITER"&gt;&lt;img alt="100_2104" border="0" height="184" src="http://blufiles.storage.msn.com/y1p7p-4HUAsERcMoqUa4M2-EfhXgByAG09JDR79sENyNMV47cKG8lDTwOqLcmGNm0pOP4bw9QJxLfA?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We just showed Caspian his first episodes of Doctor Who - &lt;a href="http://www.bbc.co.uk/doctorwho/classic/episodeguide/invisibleenemy/"&gt;The Invisible Enemy&lt;/a&gt;. He loved it! (Although he was sleepy staying up late for Fourthajuly fireworks.) He appreciated the cheesy special effects, and liked K-9. Muahaha, our work is complete! &lt;br /&gt;&lt;br /&gt;In one weird twist, when I was in Grade 8 the Drama teacher put out a call for anyone interested in joining a Doctor Who Fan Club at Oakley - my friends and I were stunned, since the Drama teacher was an artsy woman, not a geek like us! We joined and somehow (probably because I had a long scarf that my grandmother had knitted for me) I ended up elected president. I lent nearly all of my collection of Doctor Who books to the club, and never saw them again. :( My friend Chris Haddon and I also made a life-size Dalek costume (out of a tri-fold) and a remote controlled K-9 (cardboard over a remote control jeep). &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pFs1m7fCiP-Tz8RTiLNpJQFxR3iJlYcyYj4qGJ_1gGJZjW9vO8P4BA-A95cbZj7QTN70XIFl4sN6Jfh93vdlhyQ?PARTNER=WRITER"&gt;&lt;img alt="100_2141" border="0" height="184" src="http://blufiles.storage.msn.com/y1pp3JL74BeFARuy15mgqwJXzcjICkYbE6C0405rKU8F30_Ef9edW0HyYaXNAwDpqJJQSDMiHrwRSA?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nothing survives those particular escapades. But I still have these DWFCA trinkets - a liquid crystal color-change pin that still works, and a membership card. Anecdote: on a trip to England in 1987 with my family I dropped the card in a shop, but the proprietor tracked me down (a few doors down) to return it. Tourists. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pFs1m7fCiP-Tz8RTiLNpJQFxR3iJlYcyYj4qGJ_1gGJZjW9vO8P4BA-A95cbZj7QTN70XIFl4sN6Jfh93vdlhyQ?PARTNER=WRITER"&gt;&lt;img alt="100_2009" border="0" height="184" src="http://blufiles.storage.msn.com/y1p4K1QIfhf8oR-bDaJEcGbKlWnsvJ21RbvDRcXUIL9-L-WIg4zKo3klraJbPjO0Fo8IWNFi7vYBO4?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More artwork, circa 1985 - "Ode to a Brain" &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pXWow4xEX9j2gZdWGrxYydA9X96miEziEZfNe30ian6T_pWxsKcduuSwsuMVpd_Vz9Uy9ypUMJRfq6XS6NCJYTA?PARTNER=WRITER"&gt;&lt;img alt="100_2096" border="0" height="184" src="http://blufiles.storage.msn.com/y1pA4v1orBMO8Hm65JRJXaLGJOpLjxdJ2o5TnaUwdiX2bIlEmDNBmIVxmgjhOzOEIyLlgzO3MGCHvY?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Middle Geekery&lt;/h2&gt;&lt;br /&gt;At some point I when devouring sci-fi/fantasy novels I discovered Xanth (I think my mom hooked me up with &lt;em&gt;Golem in the Gears&lt;/em&gt;). And then the &lt;a href="http://en.wikipedia.org/wiki/Of_Man_and_Manta"&gt;Orn/Omnivore/Ox&lt;/a&gt; novels. These introduced me to several concepts, including &lt;a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life"&gt;Conway's Game of Life&lt;/a&gt;, but also the &lt;a href="http://hexaflexagon.sourceforge.net/"&gt;Hexaflexagon&lt;/a&gt;. Here are the hexaflexagon and tetraflexagon I made, circa 1987: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1p2l1S5A1d764UoEKN2ACDe4MlohOM1OPxI_owww0pvDFUOEuYNPGja1aNDe9BS6YbmImubKqi_Sz_SKoapYRJ-A?PARTNER=WRITER"&gt;&lt;img alt="100_2061" border="0" height="184" src="http://blufiles.storage.msn.com/y1pcU1Jy7aycnNkWWt2O-bujb-37eSf7pST22tO0fX1ra0JxaW6nDHzDabX5D6FwjDfsxVjCWA4rac?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For Christmas 1987, the teacher of my "Striving To Reach Excellence Through Challenge" (STRETCH) program at Crescent Heights High School class got me a Battletech novel; she was particularly insightful, as a classmate was into the game. I dabbled a bit, but never really got into it... &lt;br /&gt;&lt;br /&gt;&lt;a href="http://blufiles.storage.msn.com/y1psGuouqrQFKwoSvIl1QvtaHuEac4sY5u_D17N6U3XTPRPDAYnziimqgKMOv3OOBvKAddnKi-1H7A?PARTNER=WRITER"&gt;&lt;img alt="image" border="0" height="244" src="http://blufiles.storage.msn.com/y1pVKfxUSTOKqQAbENQ5HNQEW6IbLVHe5jWV8XHtrjg9pJw6Fit7qOAsBLELkuUZ5S3mRpt22lE5go?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="148" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...but I did make a second brief foray into painting lead miniatures. (The &lt;em&gt;first&lt;/em&gt; involved a ranger and a dwarf, which ended up smears of brown and green. They are thankfully lost.) The back-story I cooked up is that a &lt;a href="http://www.sarna.net/wiki/Locust"&gt;Locust&lt;/a&gt; (the spindly one) had a desert camouflage paint job, like the novel cover. The &lt;a href="http://www.sarna.net/wiki/Warhammer"&gt;Warhammer&lt;/a&gt; sported an Arctic camo job. When the &lt;a href="http://www.sarna.net/wiki/Marauder"&gt;Marauder&lt;/a&gt; and &lt;a href="http://www.sarna.net/wiki/Rifleman"&gt;Rifleman&lt;/a&gt; joined to form a mercenary &lt;a href="http://en.wikipedia.org/wiki/Military_Organization_(BattleTech)"&gt;Lance&lt;/a&gt; they took on similar themes. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pFDyRlc2lH_40hhVrTbU7urdqO1xFVR_LczDaq_sMVWWXVSdqssvW5AfKEFOSKnfgrBNeT9BV9mRJYcHApksA2w?PARTNER=WRITER"&gt;&lt;img alt="100_2035" border="0" height="184" src="http://blufiles.storage.msn.com/y1p6WWhmeDn4QdneeU0o10PSyxeyM0gvJQh-_bwpwqPrgeTgomePd2jq5x451HQ5hayfDVlDvFVy3o?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I tried for a more traditional camo on the &lt;a href="http://www.sarna.net/wiki/Stinger"&gt;Stinger&lt;/a&gt; and &lt;a href="http://www.sarna.net/wiki/Stalker"&gt;Stalker&lt;/a&gt;; the &lt;a href="http://www.sarna.net/wiki/Hatchetman"&gt;Hatchetman&lt;/a&gt; is intended to evoke &lt;em&gt;Alien&lt;/em&gt;. Yeah, I won't quit my day job. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pcoaeM6SBoekPV8pybeGdsgeCeYmhooTeL3UjHk7PN6NPezeG_UY6GTJxe32drchvBPt2nylEcLI3ZoBTE0yRqQ?PARTNER=WRITER"&gt;&lt;img alt="100_2047" border="0" height="184" src="http://blufiles.storage.msn.com/y1pZF2G_-sfi8xMOSMsIBlRk5nOIaIvgcV-aPqYOwCoe3srzDtbxyjhW-V4CAGKYr--lS8jQ84la0E?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Late Geekery&lt;/h2&gt;&lt;br /&gt;This takes us past high school to life at the University of Calgary in 1990. Which begat finding a job at the computer terminal help desk, which begat having a UNIX shell account (well, &lt;a href="http://www.multicians.org/"&gt;Multics&lt;/a&gt; first, then UNIX - yes, I was briefly a &lt;em&gt;multician&lt;/em&gt;), which begat trying to rename a file with "rn"... which it turns out invokes "readnews" for perusing &lt;a href="http://en.wikipedia.org/wiki/Usenet"&gt;USENET&lt;/a&gt;, which was how I discovered the Internet. By 1991 or so the U of C had upgraded to a T1 line - gobs faster than the 2x56k line that was the sole link in 1990. And I was consuming bandwidth connecting to MUDs, primarily PernMUSH. &lt;br /&gt;&lt;br /&gt;My character (Joshua - I wasn't that creative) started off as an apprentice Starcrafter - I programmed a movable telescope - and part-time map junkie. By the next year I'd &lt;em&gt;impressed&lt;/em&gt; a bronze dragon named Mnedranth (isn't that the best Pernese dragon name &lt;em&gt;evar?&lt;/em&gt;) at Ista Weyr and became a wingleader. Here is the wingleader knot and badge showing the Starscorchers Wing logo - the Ista Weyr emblem with a bronze on the left, the Red Star and the Dawn Sisters on the right. The badge was a custom piece ordered online... via email - this was pre-Web! &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pJkynNX9P8wlH23brUee6YchEn2vyu4gxaRD3wBKSw2O8LfPYBiRUepzzJv4SnOSinP4b0M3A8b1ooiEKF9f-7w?PARTNER=WRITER"&gt;&lt;img alt="100_2029" border="0" height="184" src="http://blufiles.storage.msn.com/y1pbNq0ULLwgZ7LbChol0JPeJS81gFLCMOUTuaNFsLG6LzRGNko4i3QEaC-Ggimz8ybBR49jTkoprc?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the spring of 1992 I flew to a "Gather" in Washington DC of about 30 other PernMUSHers. After visiting the Smithsonian Air and Space museum ("our dragons are as big as that airplane? wow...") we saw &lt;a href="http://www.imdb.com/title/tt0104692/"&gt;The Lawnmower Man&lt;/a&gt;. Oh, that was quite the event. I sorta-kinda hooked up with Christine (her boyfriend was there, so it was complicated.) and that summer flew to Florida to visit her - she was working at Walt Disney World. We both wore Ista Weyr shirts; someone in EPCOT saw us and shouted our way "Pern Shirts?!? Cool!!!" Mine is in storage somewhere. &lt;br /&gt;&lt;br /&gt;After burning out on Pern and lapsing into Narnia, a side interest in technology suckered me (somehow) into Star Trek. I'd actually been fairly dismissive of trek geekiness online prior to about 1994 - "get a life" and all. But then I got into rec.arts.startrek.tech and wrote some FAQs since the existing ones weren't to my taste, and... well, that's a &lt;a href="http://calormen.com/Star_Trek/"&gt;whole 'nother set of stories&lt;/a&gt;. Ah, ASCII art. &lt;br /&gt;&lt;br /&gt;Anyway, at some point I received this pewter Bird of Prey as a gift - possibly from my sister: &lt;br /&gt;&lt;br /&gt;&lt;img alt="100_2056" border="0" height="184" src="http://blufiles.storage.msn.com/y1p1dKOTREaPNGnAI6ruZWTZDcMWCkOz13aQzCSuXZhXuxHbpNg7e5_m1ao5FazgRAOrTSsnGHVfMo?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;br /&gt;&lt;br /&gt;Geeky communicator pins - one might be Susan's: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pCHcTSvB_Cjsne7Crd2DTjJvt8SBNpOwcBSnJlgw0L_7xVCxUYH-15ZzSKXPvlupZ1_hYMXWKbq2xOKUKT2kCfg?PARTNER=WRITER"&gt;&lt;img alt="100_2108" border="0" height="184" src="http://blufiles.storage.msn.com/y1pz8wxpl8mGL3shmZsw_wWCu5Obq27IRwefdeYk2UiundawmGIwKEqDybPyqIS0a9fpmD2vYL_0sQ?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;And the Type I phaser from ST:TNG - by Galoob: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pUK6st4d8ZE6KZJGjD90Hc7u12rlVkh75B9hNYwal9zAbZDR3UEDW5z81_KcOX3V44DX8oecJco8HHL3HVZk5sQ?PARTNER=WRITER"&gt;&lt;img alt="100_2100" border="0" height="184" src="http://blufiles.storage.msn.com/y1ptuAIDfwPaPBrwjjsJ3hvANR8HxCUOl35rVzkAE1mgAMp5HVgxhrG4ZrhOTItFxYJMedUYm3_Un4?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The other key tool in becoming a fully fledged geek was the "fortune" command which would spew out entries from &lt;a href="http://www.catb.org/jargon/"&gt;the Jargon file&lt;/a&gt; (among other pearls of wisdom). This was my isolated introduction into geek culture... done amidst clearing paper jams from the dot matrix printers in the room. But not the&lt;em&gt; &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/ImageWriter_II"&gt;ImageWriter IIs&lt;/a&gt;, which rarely jammed. I still have a fetish for those. &lt;br /&gt;&lt;br /&gt;But I digress. &lt;br /&gt;&lt;br /&gt;I also collected comics while at the U of C - but mostly Aliens and Predator series by Dark Horse. A high school classmate named &lt;a href="http://www.theartofcjf.com/"&gt;Cameron Farn&lt;/a&gt; was also a big fan. At one point I helped him do a full head cast so he could sculpt a Predator mask; we visited the house of one of his friends who was seriously into SFX (and had a huge &lt;a href="http://www.cinefex.com/"&gt;Cinefex&lt;/a&gt; collection, getting me hooked) to do the cast - went very well, we didn't suffocate him. &lt;br /&gt;&lt;br /&gt;I still have the comics - in storage - but also have these lapel pins. I actually wore the queen pin on my jacket in the early 90s. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pcsYTMWtRimGkfW7ck4B-e_OJnySUJbidN-WGfPX38kp5b-O1ftodzYSZuHvnpb44zdHYd0m9TQXPsAtU54Ki8w?PARTNER=WRITER"&gt;&lt;img alt="100_2018" border="0" height="184" src="http://blufiles.storage.msn.com/y1p1O463hYqzZO5n8hp-daq2zatlT6m6zSu_s25QSpq4nDf2jA5ODtcIp8f0e8c6egVIC-McKS5Hoc?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;By the late 90s, of course, I was graduated and at Microsoft, and the hot SF property was Babylon 5, so I had to have a ranger pin. I was wearing this when Gregory Benford, Greg Bear and David Brin stopped by Redmond, WA for a signing for the &lt;a href="http://en.wikipedia.org/wiki/Foundation's_Fear"&gt;Second&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Foundation_and_Chaos"&gt;Foundation&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Foundation's_Triumph"&gt;Trilogy&lt;/a&gt;, and Brin recognized it. &lt;em&gt;Squee!&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pze8jou8SdKZSVlQXmBolRq2ATwWqfp72T1nvbuGYAS4rUgEe_z1vn9x8vLigUxwu_bsMdJ5d9VbOOeKN85svSQ?PARTNER=WRITER"&gt;&lt;img alt="100_2033" border="0" height="184" src="http://blufiles.storage.msn.com/y1piQ_n8-1-OmCxqmtt6LiENaVPcbCdBOWO0sMJprAPf_RIE4J4kKxXygJdMXmlhaTSqOPipMHp0go?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Jewelry and Such&lt;/h2&gt;&lt;br /&gt;Class ring from Crescent Heights High School. Not much to say about this - I'm not a huge fan of jewelry - usually one item, tops, and this was never worn. In fact, until Su and I got married, I never wore a ring. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pC0rzTsIy3sRPUSEVKwipc1Q6ptkSmJvVrbC5pdRgSo-octVkyt7SxsiWFPe6OHO4PdsRo6rNiA5bFX7kpiDRAQ?PARTNER=WRITER"&gt;&lt;img alt="100_1994" border="0" height="184" src="http://blufiles.storage.msn.com/y1pmxe7A8pVLMhBd9-cZLhnzIwkjiY64yVamHqc_MSlcESQdlGhDEwMwoefVQ-qVUHSkX87bmv286c?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Except this one, picked up on a trip to Disneyland in 1985. My friend, Travis Smith, invited me to come along - he had twin sisters who could play, but his parents let him bring a companion. That was an amazing adventure - he did and I flew down to Montana in a small plane to join the family, and we drove in a &lt;a href="http://www.toyoland.com/trucks/minivans.html"&gt;Toyota Minivan&lt;/a&gt; through several states and actually stopped and did touristy things along the way. Like stopping at a copper mine, and buying a ring which actually turned the skin green. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pJGDJq-4Mi2sQKvF9wUlmb5Fz5wMuDUEDMIKxYjyfI6Fo9a9-QZM6H6cDj2xEI44j14kpBfko_7dV7PG-QY24mQ?PARTNER=WRITER"&gt;&lt;img alt="100_2072" border="0" height="184" src="http://blufiles.storage.msn.com/y1pCgQ3cyYLegyDkidZAOXJPkw9Ijq20lWqqjmgzlk7TrnSxl8W_yMkdmapy-SdoiKK4iyYsrT6RfY?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The other things I remember from the trip: Staying at the Disneyland Hotel. Being short of cash when we actually had to buy tickets, and waiting in the "two day" ticket line (on the now-demolished DLH monorail platform entrance) until Travis' parents said "don't be silly, we're buying!". Rocking the &lt;a href="http://en.wikipedia.org/wiki/Skyway_(Disney)"&gt;Skyway&lt;/a&gt; car so that they had to &lt;em&gt;stop the ride&lt;/em&gt;. (It was my idea. Sorry Travis. I was an idiot.) Sleeping at a working ranch on the final night before flying back to Calgary - trying first in a fly-infested trailer, then trying in a room in the house full of smelly snoring ranchers. &lt;br /&gt;&lt;br /&gt;No good stories about the rest of this junk, though. The panda pin is from when the Calgary Zoo had pandas visit in the early 1990s. I think the RAF pins are from my grandfather. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pgS9Lk7Iu2c7c-dKv33-Tkus4_NI1PXmLXOXHJUOCZn1fn04RkxGZNhqaj0mUB5qo8XZeB3F7EM6wR6vTvYfKiA?PARTNER=WRITER"&gt;&lt;img alt="100_2027" border="0" height="184" src="http://blufiles.storage.msn.com/y1pu_ErPjp4ASqVFLkic1Ex3XS1GwPz4BtbIQOnBxlEiZI9kLxGFlS7uHuzu9uso6OAJTh-GQ6Nlo0?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;My mom got this for me when I was born - a commemorative &lt;a href="http://en.wikipedia.org/wiki/Royal_Canadian_Mint_RCMP_coins"&gt;1973 "Mountie" silver dollar&lt;/a&gt;. I found the 1973 Mountie quarter later. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pVBOWoJZeQKyZx4gPE1knOIis8uY-dfLe8YXvsRLHWOApQFsvpwsv7thth2sG2iQ9DJ7-8Mnh3MBoBMaamS1SuQ?PARTNER=WRITER"&gt;&lt;img alt="100_1999" border="0" height="184" src="http://blufiles.storage.msn.com/y1pz2g7AEm4v2mFRWmTvRpXSHdhPnoEr3qjRQwHivFFVoSYj_G41Vbf3qtPvc5Oc_5kdwBwMK7Be_8?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pCvOKr014vV2OIxsowSunz7sJKIJnG_hiShy7eHh6jZAsEOUM2RLbkvnkXwXohnv9w_gPcB1-5DKIqvBQVas7RA?PARTNER=WRITER"&gt;&lt;img alt="100_2002" border="0" height="184" src="http://blufiles.storage.msn.com/y1pIHUkspzGICqWVIwmjjG93dtEeboHJ7lhkL0ApF8W1PJD8wtovwr_gv3-TO8kxqbAUw-qnlaHBcI?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This box was a "random Christmas gifter" present while I was in the high school "drama society" circa 1989. My gifter turned out to be Kirsty Galbraith, who I'd actually attended first grade with (my parents remembered, and I actually found a "journal" note I wrote circa 1979 saying that, basically, the rest of my class was really really slow at their workbooks, except Kirsty), then later joined me at Oakley when I was in grade 7, then Crescent Heights. Despite all that, we were just acquaintances. You know - girls are icky! &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pZhozxAz4HMsOg-VJ7EO8Ybu4InC9_rrJtMr2B7DK2NM_TnPRb_ypy65PKWnpmUI6TycltMu7oX_hxIKa5NeVTg?PARTNER=WRITER"&gt;&lt;img alt="100_2014" border="0" height="184" src="http://blufiles.storage.msn.com/y1pugFsZE5sf4_oh8yUjzLTVJr-FfLE-a8z14tyMYsylS6U9kYKHqF09LMnNEY8vF8D666aqcO988k?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Random crystal pyramid. No idea - probably a Christmas gift. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1p-VKz1boEftRBYIJiTIQdz9n2C6byqLYr_LuzeiGmmGKL0eMEiiBrw5Ye_x9VecMRVlz-5fipMDV_9rLjjq-IAQ?PARTNER=WRITER"&gt;&lt;img alt="100_2063" border="0" height="184" src="http://blufiles.storage.msn.com/y1psHZ-QDTbnidcQFxBi0lwq7R0D4R8Q-kSFE9Nsfk6qOLvrQ6xXEF18DnIZ8UvlKhmRNliZAj9DoA?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Toys&lt;/h2&gt;&lt;br /&gt;Best. &lt;a href="http://www.kindersurprise.com/"&gt;Kinder&lt;/a&gt;. &lt;a href="http://en.wikipedia.org/wiki/Kinder_Surprise"&gt;Surprise&lt;/a&gt;. Evar. This assembled into a flywheel car - you rev it up and it runs. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1p-7HERH8P33kTWq02MhJLtmEpc3bdXdOOgmogufKtkc83fB3vr__VlrxbXylXOIP-0n3QurxQl_KSH-7ATNS90w?PARTNER=WRITER"&gt;&lt;img alt="100_2062" border="0" height="184" src="http://blufiles.storage.msn.com/y1pqupP5bl9T9yv-Pzqub0ErVqV0Rj_8uhZd_YJ7sKA8nzt3NkRL_THocpPw6J0dViT5ucw9W4a2tE?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Kaleidoscope. My relatives Pat and Robin Tufts were big into these in the 1980s, so it may be from them. They're the "cool ones" of my parents' circle of friends. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pO0fY-YbQ5Y5LVjeHG9GjLHkVjevHDJDT130X7dkK05Zb5dzOim1kTgYF53w4eiuPpwApsVwiupdN0jksmrXKfg?PARTNER=WRITER"&gt;&lt;img alt="100_2093" border="0" height="184" src="http://blufiles.storage.msn.com/y1pqz5IRpOuKSUl53f60gjFbi7yOlFrwFOHK_V05xlXArSK2GBYAGHhLoLTm75LbKXW87YPmW_IbjA?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Koosh. No eyes. Single colors. The original. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1p9jWTEpmWILsF4zuZCMRMXAcp_IP5KplZ5S9Ea7Sz6YFgstL4juxbHFFXgiC2pg9EVuxL3UNCPRnACq4xfEvoaw?PARTNER=WRITER"&gt;&lt;img alt="100_2101" border="0" height="184" src="http://blufiles.storage.msn.com/y1pGD14y1JInjAY1tywJy244chfApHX4upoOgmw7d8yrVuIzOiXIh3QgCjzsIbBVOisnMy8uFpZMjU?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wind-up robot. These were popular circa 1984. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pNaLXPEAaCN2dWLxxOYS-PAu5WLPa_q4V33jMmvRK_mqtqcLwgCJ70IWmidmYFtofDVqxaZ3B-YsmPmunYRYhJQ?PARTNER=WRITER"&gt;&lt;img alt="100_2102" border="0" height="184" src="http://blufiles.storage.msn.com/y1pdlwRJv_MQBBui7_qE3xhuDBwxmcBeYj-p5wRuL9Oahlm70T3rrdHEY6unyJqEBPOFcQ8G-fOjho?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Gobot - &lt;a href="http://www.jeffbots.com/spay-c.html"&gt;Spay-C&lt;/a&gt;. My favorite. Last year I hunted down another one for Caspian online, since he is &lt;em&gt;not going to play with mine&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pqcvXy3qDljh0jAk_8xkgTw4R5kasBHlfAS6KwllfJxP95HKzUjbJ6hcNCoy8U-AizSWvclNcUVQCNeHBVv0Q7Q?PARTNER=WRITER"&gt;&lt;img alt="100_2098" border="0" height="184" src="http://blufiles.storage.msn.com/y1pwJyBWPfSyBh8naAhiOMuXdZbpS_o9dmcAeJApVPxwHt0beKNHTc0AZp0gl5rxxFn_GQDoyCJ_WE?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Lightweight rubber eggs, for juggling. After learning to juggle (via &lt;a href="http://www.klutz.com/catalog/product/8100/"&gt;the Klutz book&lt;/a&gt;) circa 1986 I actually taught a class at Oakley for two semesters, and performed as the leader of a jester troop at the school play in 1987. (Written by classmates, it was a time travel epic - kids wind up in the middle ages due to some magic thingy, you know. It included songs composed by the students, including "Girls Don't Play Ball" which still goes through my head). For Christmas dinner, 1986, we pile into the car and head to my grandmother's house. I have these carefully concealed these in my pocket. After arriving, I quickly duck into the empty kitchen, plant them in the refrigerator, then go socialize. About an hour later I head into the now crowded kitchen, start chatting, casually open up the fridge, and get them out. And start to juggle. My grandmother goes pale, and the rest of my relatives look nervous. Then I intentionally fumble and the "eggs" fly everywhere. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1p3-KsM_dRMnzVuUSkC_iKksVNMgTnE4K2UlB9IHQgBQJcWKvE4_jFQ7TcP4h_jc9WdpgY7IlR2NvVPoZEjAFE_Q?PARTNER=WRITER"&gt;&lt;img alt="100_2107" border="0" height="184" src="http://blufiles.storage.msn.com/y1pBtse0qIRGmHDI2MMIj05jNLUTK7fAcBXyzRTTtJpzHObZV3Ir-6QlxfGvKbeFP-BlCkaXdYOgwM?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Toy gyroscope. And not one with a stupid string you have to wind. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pf3eHSgsWk4Un7wH-_QwZVechYMSHJASqoEYbCzo57TFkanOfrl81rlSKSL_LQqPyLjP_RbRmw6YBosCUfv7ilQ?PARTNER=WRITER"&gt;&lt;img alt="100_2112" border="0" height="184" src="http://blufiles.storage.msn.com/y1pBRncMsl8AwRhpMxLQs-CmUnaqWswGaQZzDKMzv18NNVH3XyN1jAJiUQGCBYO-LkEy8A-YFOt8PQ?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Muzzle from an &lt;a href="http://www.tfassociation.com/PTF_Shockwave01.html"&gt;Astro Magnum&lt;/a&gt; (a pre-&lt;em&gt;Transformers&lt;/em&gt; transformer; or possibly the Radio Shack version) - I really hope the rest is in storage. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1prALKA2CFDLOOnHmgngQzoC0tSoA7MCPyhVeD_ZsQVrKKpJ-BMEc6hwe12vniCEwdLcvwj7AONNb7w7IQ2l1p3A?PARTNER=WRITER"&gt;&lt;img alt="100_2130" border="0" height="184" src="http://blufiles.storage.msn.com/y1p70kh6Wmo8WGCvQBRzaBaCQDIGRmeWdnOfJpAas9KwYebYFUYAvBMVQ1ehcO8Lo3FMdev3Q4w8cc?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Corgi space shuttle, with opening cargo bay doors and retracting wheels. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pf2zah-i1OweMzUL9nevezut6bhzYH974pe0Hqk8s3wosx6nYKscpxBrOsbKTMRVCS_p_xX-hUIOT1TIZHTynog?PARTNER=WRITER"&gt;&lt;img alt="Corgi Shuttle" border="0" height="152" src="http://blufiles.storage.msn.com/y1ptxnoBcv2odfupiCaMtgnaKEQ_X6VJdRoHz7WC0MrCyNwQ1-WgfXLLcOLZsrgZPZ1qET2XlKtsdQ?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Found this guy on a playground. Thought he was cute, no idea what the toy actually is. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1p9OCjdSXyhjt_mxSQEuL0sO17tAEJOsJIBKYDJaUN9rchl9QmmLhDHnUzeO0n7Shxt1wkpgC8K02ONTbfiwGl-w?PARTNER=WRITER"&gt;&lt;img alt="100_2128" border="0" height="184" src="http://blufiles.storage.msn.com/y1pWKHctTQq2pKPXw_hQG6AvEDrT2JDqCM4g0CFG1yLXxcAZBKf21Z5K4Q0ftl5RFtegQqF3egS0oQ?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Assembly puzzles; I think the blue one (the &lt;em&gt;stella octangula&lt;/em&gt;) is from a Christmas cracker. The other one was a stocking stuffer. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pwyciDp0_S3A1HpWC5GiC5anWywe_JskkmuS_gC891rhtX-9TPeq4fXb6SQiFQwZkeH9ZCnopBGhquGY3io8mOQ?PARTNER=WRITER"&gt;&lt;img alt="100_2122" border="0" height="184" src="http://blufiles.storage.msn.com/y1pLZwaT63uXYKrr9poa1qflZ31A5VIBvlnGiKm2uJg5aDaOpU3gvGNES_Od9N7KAzTQx3ATkfIPqk?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tops. One of them has a "holographic" pink sticker - that was so trendy circa 1989. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://vmpwiw.blu.livefilestore.com/y1pWU46g52IE0RAeutFuZsL9ciyUMuqgHGmM4ys5p9KVrBvve83YV36QkuKkRgb4FZrt50xElI99zl9M157THLxFg?PARTNER=WRITER"&gt;&lt;img alt="100_2126" border="0" height="184" src="http://blufiles.storage.msn.com/y1pgXxxLLsbyBOW7I37P3DVSboY2-Tj-_BTWP3TXNaXUmXUAzsvbbXg2Xginbs7-Vs1T3klAJstnX4?PARTNER=WRITER" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Composed while listening to &lt;a href="http://www.live365.com/stations/peterhirschberg"&gt;Retro Arcade Radio&lt;/a&gt;.&lt;span style="color: #8c7d18;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8151448423693470156?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8151448423693470156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/uploaded-treasures.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8151448423693470156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8151448423693470156'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/07/uploaded-treasures.html' title='Uploaded Treasures'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-732267693526664193</id><published>2008-06-13T12:42:00.000-07:00</published><updated>2010-03-28T21:36:52.722-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scooby doo'/><category scheme='http://www.blogger.com/atom/ns#' term='indiana jones'/><title type='text'>Indiana Jones and the Temple of Doo</title><content type='html'>&lt;div&gt;As seen on TV:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Aldt1PGcI/AAAAAAAAAO0/CwC68Te-z9k/s1600/y1p2sFrdGFcWF8IuEY1xjwUmETdGbQC0cJyoiNTlge4UIFf-A-BCZDZLRjaSFNyYPwyf6j-x7C4_6s.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Aldt1PGcI/AAAAAAAAAO0/CwC68Te-z9k/s320/y1p2sFrdGFcWF8IuEY1xjwUmETdGbQC0cJyoiNTlge4UIFf-A-BCZDZLRjaSFNyYPwyf6j-x7C4_6s.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;Mola Ram: I would have gotten away with it, too, if it weren't&amp;nbsp;for that crazy archaeologist and his stupid dog!&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;(No, that isn't a slight at either of Indy's companions on this adventure.)&lt;/em&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-732267693526664193?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/732267693526664193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/06/indiana-jones-and-temple-of-doo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/732267693526664193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/732267693526664193'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/06/indiana-jones-and-temple-of-doo.html' title='Indiana Jones and the Temple of Doo'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aKONQq2A3U0/S7Aldt1PGcI/AAAAAAAAAO0/CwC68Te-z9k/s72-c/y1p2sFrdGFcWF8IuEY1xjwUmETdGbQC0cJyoiNTlge4UIFf-A-BCZDZLRjaSFNyYPwyf6j-x7C4_6s.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3481106220337259495</id><published>2008-05-26T15:12:00.000-07:00</published><updated>2010-03-28T21:32:21.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='narnia'/><category scheme='http://www.blogger.com/atom/ns#' term='indiana jones'/><title type='text'>Summer Movie Reviews</title><content type='html'>&lt;strong&gt;Speed Racer&lt;/strong&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Saw it in IMAX. Harmless family fantasy fare. We went in expecting an eye-candy homage to the cartoon and weren't disappointed. I can't imagine ever watching it again, but it entertained us.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;The Chronicles of Narnia: Prince Caspian&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;My bar: "Was it good enough that they'll make &lt;em&gt;Voyage of the Dawn Treader&lt;/em&gt;?" Apparently, yes - $96M so far. Yay. &lt;br /&gt;&lt;br /&gt;The actual plot of the book itself is rather short, and unlike LWW or VDT focuses on atmosphere, character development, and parable. (In the lovely form of "If your friends didn't have the faith to jump off a bridge, why should that stop you?") It can be summed up as "the Pevensies appear in Narnia, note that it has aged a thousand years, meet a dwarf who provides details in flashback, and trump across the world being teased by Aslan. The boys arrive in time to rescue Caspian from some nasties in a cave, then defeat his uncle in single combat, while Aslan and the girls wake up the pagan gods. Then there's a lackluster fight, Narnia wins, everyone goes home."&lt;br /&gt;&lt;br /&gt;While LWW stayed pretty close to the book except for some excursions into "WTF?" (I'm looking at you, frozen waterfall), &lt;em&gt;Prince Caspian &lt;/em&gt;desperately needed to be expanded. Susan describes it as "they took the book and put it into the blender" - but that is forgivable as much of the book is a flashback. Throw-away elements of the book are expanded on in an enjoyable way - what happened to Cair Paravel, how Aslan's How came to be, the political intrigue of the Telmarine lords, the scene in the Cave, Sopespian and Glozelle, and so forth. Reepicheep played as well as I could have hoped. The Bridge at Beruna makes more sense in the movie than the book, when thinking of the lives of ordinary (Temarine) Narnians rather than drama of the restoration of True Narnia.&lt;br /&gt;&lt;br /&gt;Two"WTF?" elements in &lt;em&gt;Prince Caspian &lt;/em&gt;were forgivable additions. First, the assault on Miraz's castle seems somewhat out of place, but the movie needed more action (see the skimpy plot) and while the adventures of the adult Pevensies are hinted at they are never seen in the books (apart from &lt;em&gt;The Horse and His Boy&lt;/em&gt;) so they might as well get it out of the way - we won't get to see Peter and Susan again for many years, at best. And then there's the Susan/Caspian thing... harmless, and cute. If they make it all the way to &lt;em&gt;The Last Battle&lt;/em&gt;, though, let's hope they've got something better figured out for Su.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;Indiana Jones and the Kingdom of the Crystal Skull&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Incredibly predictable... it felt like an amalgam of Indy fan fiction from the last 20 years. (I assume, haven't read any.) But not necessarily &lt;em&gt;bad...&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The bad guys: Of course they're Soviets - that's been assumed in Indy games, comics, and so forth once you can't pin things on Nazis. However, the ESP-element fits in nicely with popular culture views on cold-war stealth ops.&lt;br /&gt;&lt;br /&gt;The good guys: In &lt;em&gt;Raiders &lt;/em&gt;we have Marion and Sallah. In &lt;em&gt;Temple &lt;/em&gt;we have Willie and Short Round. In &lt;em&gt;Crusade &lt;/em&gt;we have Elsa then Henry (oh, and Sallah and Marcus for comic relief). Here we have Mutt, Marion, Mac and Ox - which seems like a boat-load. This is quite a different dynamic than we've seen before. I think it makes it harder to follow the chase sequence... but otherwise it isn't bad.&lt;br /&gt;&lt;br /&gt;The creepy crawlies: We've had spiders, centipedes, and rats. With a movie set in the Amazon, the logical answer is...&lt;br /&gt;&lt;br /&gt;The comedy: In &lt;em&gt;Raiders &lt;/em&gt;the comedy was subtle - snakes on the plane, drinking at Marion's bar, the basket chase/fight scene, Marion and Belloq drinking, in the cabin on the steamer. In contrast, &lt;em&gt;Temple &lt;/em&gt;played up the comedy - most scenes with Short Round and Willie were far from serious. The laughs in &lt;em&gt;Crusade &lt;/em&gt;were more subtle, but the film was much more lighthearted than &lt;em&gt;Raiders &lt;/em&gt;- the train chase, escaping the sewer, Marcus in Iskenderun, "Tickets please", and pretty much anything with Sallah. &lt;em&gt;Kingdom &lt;/em&gt;has some subtle humor (most scenes with Mutt), some smack-you-in-the-face (the statue, the jungle chase). And then there's the forgettable, obviously shot on a soundstage comedy/revelation scene.&lt;br /&gt;&lt;br /&gt;Inside references: Indy rode with &lt;a href="http://www.theraider.net/films/young_indy/chapter_06.php"&gt;Pancho Villa&lt;/a&gt;. Indy was a &lt;a href="http://www.theraider.net/films/young_indy/chapter_13.php"&gt;spy during the war&lt;/a&gt;. The Ark. Marcus. Marcus. Henry Jones, Sr. Marcus. Oh, and Marcus. Marion. Presumably many others I'm missing.&lt;br /&gt;&lt;br /&gt;The next-to-last 5 minutes were over the top - and did we really, really need those gears eating the stairs, on top of everything else? Sadly, the master has become the student - Indy doesn't need to learn from &lt;em&gt;The Mummy &lt;/em&gt;or &lt;em&gt;Tomb Raider&lt;/em&gt;, but apparently Lucas and Spielberg disagree. &lt;br /&gt;&lt;br /&gt;So basically, Indy IV is a two-hour &lt;a href="http://www.urbandictionary.com/define.php?term=fanwank"&gt;fan-wank&lt;/a&gt;. It doesn't add much to the series, and is my fourth-favorite movie in the series, but while that technically makes it my least-favorite, I didn't dislike it. It isn't as re-watchable as the others, but nor did it devalue the other films in the series.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-3481106220337259495?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3481106220337259495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/summer-movie-reviews.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3481106220337259495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3481106220337259495'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/summer-movie-reviews.html' title='Summer Movie Reviews'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1646069041439387672</id><published>2008-05-14T03:47:00.000-07:00</published><updated>2010-03-28T20:57:20.665-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Caspian's future plans</title><content type='html'>So we were out for dinner with friends last night, whom we know via their daughter who is probably Caspian's best friend. There was a prize bit of conversation: &lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;Caspian says:&amp;nbsp; [she] is my very best friend.&amp;nbsp; I think we should get married, when we’re older.&amp;nbsp; We can go to the president, and if he says it’s okay, then we can do it.&amp;nbsp; We’ll have a real small party, just a few people…&lt;span style="font-style: italic;"&gt;*turns to her*&lt;/span&gt; unless you want a big party, then we’ll have a big party.&amp;nbsp; And we can have 8 kids…&lt;br /&gt;&lt;br /&gt;Friend: Whoa… I don’t think I’m up for that.&lt;br /&gt;&lt;br /&gt;Caspian:&amp;nbsp; Okay, two then.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1646069041439387672?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1646069041439387672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/caspian-future-plans.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1646069041439387672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1646069041439387672'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/caspian-future-plans.html' title='Caspian&amp;#39;s future plans'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7235054109138713591</id><published>2008-05-05T02:47:00.000-07:00</published><updated>2010-03-28T21:29:37.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>What Slashdotting looked like</title><content type='html'>FYI, here's what &lt;a href="http://developers.slashdot.org/developers/08/05/01/1619257.shtml"&gt;being Slashdotted&lt;/a&gt; did to my &lt;a href="http://www.calormen.com/"&gt;calormen.com&lt;/a&gt; site traffic:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AlETgmOJI/AAAAAAAAAOs/nyFRyovfwlA/s1600/y1pzvNGae4J_dwjt05t2Dzh9h9hraEniC1oGp6IRiDZgyrMPo_t3PYm_H5fANt7-yWJ0m2SyWhzeRE.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AlETgmOJI/AAAAAAAAAOs/nyFRyovfwlA/s320/y1pzvNGae4J_dwjt05t2Dzh9h9hraEniC1oGp6IRiDZgyrMPo_t3PYm_H5fANt7-yWJ0m2SyWhzeRE.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7235054109138713591?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7235054109138713591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/what-slashdotting-looked-like.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7235054109138713591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7235054109138713591'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/what-slashdotting-looked-like.html' title='What Slashdotting looked like'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aKONQq2A3U0/S7AlETgmOJI/AAAAAAAAAOs/nyFRyovfwlA/s72-c/y1pzvNGae4J_dwjt05t2Dzh9h9hraEniC1oGp6IRiDZgyrMPo_t3PYm_H5fANt7-yWJ0m2SyWhzeRE.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8796124898218216673</id><published>2008-05-01T13:57:00.000-07:00</published><updated>2011-05-28T18:21:21.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vniic'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>A Lot of Pressure</title><content type='html'>Last year's "Su and Caspian go on vacation without me" project - an &lt;a href="http://calormen.com/Applesoft/"&gt;Applesoft interpreter in JavaScript&lt;/a&gt; (&lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!950.entry"&gt;discussed here&lt;/a&gt;, &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!951.entry"&gt;here&lt;/a&gt; and &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!1054.entry"&gt;here&lt;/a&gt;) just made &lt;a href="http://developers.slashdot.org/developers/08/05/01/1619257.shtml"&gt;Slashdot&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This year's "Su and Caspian go on vacation without me" project - &lt;a href="http://calormen.com/vnIIc/"&gt;streaming a desktop to an Apple II&lt;/a&gt; (&lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!1086.entry"&gt;discussed here&lt;/a&gt;) made &lt;a href="http://www.boingboing.net/2008/04/14/second-life-on-an-ap.html"&gt;Boing Boing&lt;/a&gt; and &lt;a href="http://blog.makezine.com/archive/2008/04/second_life_on_ancient_ap.html"&gt;MAKE Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is putting a lot of pressure on me for next year!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8796124898218216673?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8796124898218216673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/lot-of-pressure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8796124898218216673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8796124898218216673'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/05/lot-of-pressure.html' title='A Lot of Pressure'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8265447806419808707</id><published>2008-04-15T16:34:00.000-07:00</published><updated>2010-03-28T20:56:20.984-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>My Other Project</title><content type='html'>Inspired by the &lt;a href="http://steampunkworkshop.com/keyboard.shtml"&gt;Steampunk Keyboard Mod&lt;/a&gt; page and a long term crush on Amanda Pays (Theora on &lt;em&gt;Max Headroom&lt;/em&gt;, who had an actual typewriter for her keyboard), I put this together: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://pfpiqg.blu.livefilestore.com/y1pdB7gl7MGSx3N0kGHfwOJ8ljwF-O4eATtbAY4_6QyxK47f-RLrPIMeQUqrhYJHXwvY9yyoNhc2-4dIE7aCcfwSw?PARTNER=WRITER"&gt;&lt;img alt="Keyboard" border="0" height="79" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfo2aRdZ-uTE1Y1wZ2H3Q52sAuDTqlADh3IxjczRKR4IMey-twLE4x_SilHS-n1T6Tlf_CO438mQq8r9ithMX3F0?PARTNER=WRITER" style="border: 0px none;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;It looks better in person than it does in the pictures, actually. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://pfpiqg.blu.livefilestore.com/y1pylLSajaHh9EYZ9hkB6MYisOhE6EfmMUJJKdW__Ohu8FiDnJR0Ct4N7DOzXx_jycHQ7SyPuOEP32AgPxgGVsP1mYCwpWC1gEq?PARTNER=WRITER"&gt;&lt;img alt="100_1808" border="0" height="184" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfonvH8TPD2hC8ZDc5YkPIwrWinZ6XHMc1X1v3nhKpatWfXVhdMgj0fdHtbmZ3pAzWRO3nv_REfMzxCdEhglClAB?PARTNER=WRITER" style="border: 0px none;" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Ask friends or co-workers of the cheap keyboard that "came with the computer" that's probably in the closet gathering dust. This one's a Dell USB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pfpiqg.blu.livefilestore.com/y1pylLSajaHh9HemRVoLbaHWGXPCo6IBAz0z3kF-0ch6gisH7vneqxmpH1NAgSvF39XQM8GOohKn_vJw_OyNko2ue0SOYx8IKJd?PARTNER=WRITER"&gt;&lt;img alt="Carriage Return" border="0" height="184" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfoBn9ccp6KboR9syNidKz5m6ziCTQ29caHBOgBDbO6S231kMwPLIAf2W_zh7Q6d67k_LijsD-8NuCyn9m4k1AP3?PARTNER=WRITER" style="border: 0px none;" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Use a &lt;a href="http://www.dremel.com/"&gt;Dremel&lt;/a&gt; rotary tool to chop the edges off the keys - basically draw a box on the top of each key until the "skirt" falls off &lt;br /&gt;&lt;br /&gt;&lt;a href="http://pfpiqg.blu.livefilestore.com/y1pylLSajaHh9HPEO-Pr9qTXzyCuobjlSECjTuVE8tDy9-sF5-tM-QJh97CdMK5xTT2lOzZ0WW7nhPiTXGSHSfVPm6uu4MqRgWK?PARTNER=WRITER"&gt;&lt;img alt="Numeric Keypad" border="0" height="184" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfpu8XucjuIRN2K85D1Ltxehd_Dl2a6SQ0CiCXtLNZeN0Vi5bRU8KQ1LUiXQ8owO7IKz_62yCNl_0rAJQzdqscSl?PARTNER=WRITER" style="border: 0px none;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Order all the keys you need on eBay - search on "&lt;a href="http://search.ebay.com/search/search.dll?satitle=typewriter+keys+royal"&gt;typewriter keys royal&lt;/a&gt;". Note that you'll need 3 complete sets (all of two, a few from one more). Pay attention to whether you want round or rectangular keys for the "special"keys. Expect to pay about $1 per key. If you can, get the logo! &lt;br /&gt;&lt;br /&gt;&lt;a href="http://pfpiqg.blu.livefilestore.com/y1pylLSajaHh9HJwB9vbH1vTg-QFtIq4s-bNAQD6ousEHvvuNifj20J8DbxvepkFgbVZUlH-O45inOOmPPje888YImVbFChLufF?PARTNER=WRITER"&gt;&lt;img alt="Royal Logo" border="0" height="184" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfrHfkJbhudXKHWoqO8r1TgmrNDjfhYkr783by-A4JxWvG5KgHoOKdvrUVaFEL2Q2qgKejHPbQQUGAKiQAmffjhS?PARTNER=WRITER" style="border: 0px none;" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;To make the non-standard key-caps (Carriage return, Function keys, "1"... none of those were around 100 years ago!) either touch type and ignore the glyphs (like I did for the numbers and some of the punctuation) or pry the backs off of the keys and use an inkjet printer to make your own labels. I used &lt;a href="http://www.myfonts.com/fonts/adobe/lucida-sans/"&gt;Lucida Sans&lt;/a&gt; for the lettering and &lt;a href="http://www.myfonts.com/fonts/agfa/bodoni-mt/"&gt;Bodoni MT&lt;/a&gt; for the punctuation. It's not a perfect fit, but it's good enough. Have fun with the labels - the vintage keys already have wacky titles like "Shift Freedom" (as opposed to "shift lock" I suppose?) and "Tabular". I designed the keys using the Drawing and Word Art features in Word. (I once implemented that UI and functionality in an Office product, so I'm extremely familiar with the quirks of the UI!) &lt;br /&gt;&lt;br /&gt;&lt;a href="http://pfpiqg.blu.livefilestore.com/y1pylLSajaHh9ESCUDPPtSHdU1IXU7UtWkbCRf1mGu-FhZZfmlkH7TyKJzp-II8uuDGPdszkNieO1e2yGj8-uFjp3d-Olh9LtFe?PARTNER=WRITER"&gt;&lt;img alt="Weirdo Keys" border="0" height="184" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfqoaFWfexbQo41ClvL4uO_b87WocH9gd3z46amM2nUhEnElKNZcANyoCokqx-fsbVlCJikT5hBJPYHEyLnuRI79?PARTNER=WRITER" style="border: 0px none;" width="244" /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Use &lt;a href="http://jbweld.net/products/jbkwik.php"&gt;JB Kwik&lt;/a&gt; to affix the keys to the posts. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://pfpiqg.blu.livefilestore.com/y1pylLSajaHh9G7vsBSIJDOY1ZFM9nb_CNim6-Hc2z9obQvt7A6Li6SR7VATfuw18Rsgc9skk6NngrMExz1b-moBPoMsZPfwhXT?PARTNER=WRITER"&gt;&lt;img alt="Perspective" border="0" height="184" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfrGRC_TlhfqDeeuA8nJ4jUbVmFeGu4SrRg87KQ3oOy1404Ju-hsYINZ_Qn3yUO8ZZvsSLu5qU17lIuDjmsL8CAG?PARTNER=WRITER" style="border: 0px none;" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;The end result feels pretty good. It's slightly noisier than a normal keyboard, which adds to the charm. The smaller Return key is not a problem - you adapt quickly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8265447806419808707?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8265447806419808707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/04/my-other-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8265447806419808707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8265447806419808707'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/04/my-other-project.html' title='My Other Project'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3246224423147288603</id><published>2008-04-13T17:40:00.000-07:00</published><updated>2010-03-28T20:55:48.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>Foundation's End</title><content type='html'>I'm not alone in holding Asimov's &lt;a href="http://en.wikipedia.org/wiki/Foundation_series"&gt;Foundation series&lt;/a&gt; in high regard. In 1965 it won the Hugo Award for "Best All-Time Series" and I can't think of another science fiction series that would be a serious contender. Dune comes closest, but is still outmatched. That's not to say that they are the epitome of SF, but they are deeply &lt;em&gt;special.&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;Originally written in the 1940s as a serial and later published as a trilogy (&lt;em&gt;Foundation; Foundation and Empire; Second Foundation&lt;/em&gt;), Asimov returned to the series in the 1980s with two sequels (&lt;em&gt;Foundation's Edge; Foundation and Earth&lt;/em&gt;) and two prequels (&lt;em&gt;Prelude to Foundation; Forward the Foundation&lt;/em&gt;). He also linked in his Robot series (&lt;em&gt;The Caves of Steel; The Naked Sun; The Robots of Dawn&lt;/em&gt;) and more loosely the Galactic Empire series (&lt;em&gt;The Currents of Space; The Stars Like Dust; Pebble in the Sky&lt;/em&gt;) as well as numerous short stories. &lt;em&gt;Robots and Empire was&lt;/em&gt; explicitly written as a bridge novel. &lt;br /&gt;&lt;br /&gt;Additional novels were written by other authors, notably the &lt;em&gt;Caliban &lt;/em&gt;trilogy (set after the &lt;em&gt;Robot &lt;/em&gt;novels, and exploring the same themes) and the &lt;em&gt;Second Foundation Trilogy&lt;/em&gt; by Benford, Bear and Brin that span the same time as &lt;em&gt;Forward the Foundation&lt;/em&gt;. Of these, the best is &lt;em&gt;Foundation's Triumph &lt;/em&gt;(by Brin)... &lt;br /&gt;&lt;br /&gt;Asimov's writing is in the classic SF style - the characters are noble (even the villains) and spout monologues, but are mostly flat. They exist to move the plot along, and espouse the thoughts and theories of the writer. (Unlike somewhat later SF, at least they do not exist solely to act as sales-persons for the Latest New Fantastic Technology dreamed up by the writer.) In many cases, the only conflict in the story comes from a Socratic dialogue, with the characters merely filling the role of moving the invisible hand of history along. (Which is the whole point of the series, actually...) &lt;br /&gt;&lt;br /&gt;By the chronological end of the series in &lt;em&gt;Foundation's Edge &lt;/em&gt;and &lt;em&gt;Foundation and Earth&lt;/em&gt;, things have changed. Asimov seems enamored of the &lt;a href="http://en.wikipedia.org/wiki/Gaia_hypothesis"&gt;Gaia Hypothesis&lt;/a&gt;, and explicitly drags this in. The primary characters (Trevize and the immortal robot Olivaw) debate the future of humanity in a secret base, and the series ends with a twist... to ensure truly long term survival of Humanity, a galaxy-wide super-organism must be created. While I ate this up in the early 1990's, now I regard it the same way as many fans of the series - a somewhat unfortunate dead end. (It is reported that Asimov himself felt the same way.) Later, I had my own thoughts on how the series should end, inspired by Brin's &lt;em&gt;Foundation's Triumph&lt;/em&gt;, where Seldon and Olivaw debate the future of humanity; Olivaw already has his plans for Gaia, and Seldon believes it will not succeed. &lt;br /&gt;&lt;br /&gt;After the events of &lt;em&gt;Foundation and Earth&lt;/em&gt;, Trevize returns to Terminus. He is still an elected representative (having been "banished" only off the record), and thus can't simply be shot... not if he comes in broadcasting. (The implicit assumption in the other novels is that the government dominates communication much as it did in Earth's 1940s and can effectively keep secrets. But the liberties of the Foundation are considered to be expanding at that time.) What he broadcasts is simply the truth which he has discovered... &lt;br /&gt;&lt;br /&gt;At which we flash back to what happened early, in his debate with Olivaw. Olivaw was convinced that humanity itself must be changed into Galaxia to save it from external threats. Much as Olivaw rendered humanity stagnant throughout the reign of the Galactic Empire with technology, here he would use biology to defend the species. But what he conspired to do with the unwitting Trevize was to do it without &lt;em&gt;choice&lt;/em&gt;. Humanity was not asked to make the choice, only Trevize. &lt;br /&gt;&lt;br /&gt;Trevize realizes that although he's been gallivanting about the galaxy in his private telepathic uber-ship, seemingly choosing the future course of humanity on his own, it's not what he was &lt;em&gt;elected&lt;/em&gt; to do. Oh yes... not only is he a noble character, he was actually an elected representative on Terminus. In further debate with Olivaw, and discussion with Bliss and the little Solarian they picked up (the series' first pseudo-alien) he convinces Olivaw that Olivaw has actually done a terrible wrong by eliminating choice and free will. Olivaw is destined to continue as the slaver of humanity, rather than the savior he believes himself to be. &lt;br /&gt;&lt;br /&gt;That's not to say that Trevize thinks that Galaxia is wrong; in fact (and especially to preserve continuity - he did &lt;em&gt;choose &lt;/em&gt;it as a future for humanity, after all) he believes it may be a powerful way for individuals to have even more influence on the future. But he believes that imposing it galaxy wide without choice would be a crime. He also learns of the horrors that Olivaw has done - sterilizing the galaxy of non-human life, introducing thought-suppression satellites to hold back humanity, and so forth. &lt;br /&gt;&lt;br /&gt;Olivaw is trapped; he has carefully set up the situation so that Trevize's selection of Galaxia for the future of humanity would give him permission to proceed - remember, Olivaw must obey humans, as he never quite internalized the Zeroth Law. Now Trevize is telling him he can't just go ahead. He is effectively powerless against Trevize, who has the radical notion of &lt;em&gt;just telling the truth&lt;/em&gt; - a theme which harkens back to the start of &lt;em&gt;Foundation's Edge&lt;/em&gt;, when doing so gets him started on this adventure. &lt;br /&gt;&lt;br /&gt;So Trevize returns to Terminus broadcasting the truth about what he has learned. And Olivaw dutifully follows... disabling his thought-suppression satellites in a wave rippling out from Terminus, effectively lifting a cloud from the eyes of humanity. In one fell swoop, the Foundation government's misdeeds are revealed, but so is the Second Foundation, and the humaniform robots who have been hiding among humanity the whole time. Bliss represents the Gaians, and for good measure, some aliens come out of the woodwork to say "Howdy!" &lt;br /&gt;&lt;br /&gt;The Foundation is shocked to its core. This is no enemy that can be fought. Seldon's invisible hand is powerless; this is a crisis of humanity itself, and for the first time in ten thousand years, it is individuality that matters - something that psychohistory cannot predict. What will they do? &lt;br /&gt;Trevize suggests: why don't we all just talk?  &lt;br /&gt;&lt;br /&gt;The story ends with an article from the &lt;em&gt;Encyclopedia Galactica&lt;/em&gt; published nearly five hundred years later. Rather than destroying the Foundation, this even energized it. All things considered, the Foundation was still the best, um, foundation for a growing human civilization now more democratic than ever. The mentalists of the Second Foundation are not demonized - they are expert social scientists who provide a service to humanity and don't go around controlling minds any more than martial artists go around beating people up. (&lt;em&gt;Boot to the head - shhhthoop!&lt;/em&gt;) Galaxia is slowly taking hold as a means of communication and collaboration for humans, faster than even Olivaw predicted, since it is useful... but as an opt-in experience. Some worlds have gone all Vingean Singularity, but the theme of choice dominates - humans aren't swept away without their consent. &lt;br /&gt;&lt;br /&gt;(I'm not sure what to do with R. Daneel Olvaw, however. He's potentially too dangerous to leave running around the galaxy. But you can't stick him in jail, and you can't kill him. And you don't want to go all anime and make him the central brain of Terminus or anything either...) &lt;br /&gt;&lt;br /&gt;By the close of the novel, it should be clear that the Foundation that Seldon started came to an end - hence the title. His predictions are no longer relevant, but is is believed that what he started will be the kernel of the future of humanity (and others) for countless thousands of years to come. &lt;br /&gt;&lt;br /&gt;In hindsight, my ending is already alluded to by the Second Foundation Trilogy. Rather than having aliens physically come out of hiding, &lt;em&gt;Foundation's Fear &lt;/em&gt;has them hiding as information in the network. (Not a very 1950's theme though, it must be said.) And the ultimate book, Brin's &lt;em&gt;Foundation's Triumph&lt;/em&gt;, features Seldon and Olivaw having a debate about personal choice. (Brin sneaks in an Easter egg where Seldon is cloned, BTW!) I was almost certainly influenced by this when I conceived my sequel. So it truly doesn't need to be written - it's already been imagined by anyone who reads these works in detail. &lt;em&gt;*sigh* &lt;/em&gt;Ah well - I was an acknowledged Brin-o-phile at the time! &lt;br /&gt;&lt;br /&gt;I only wrote part of the teaser, and it's on the long list of projects I'll probably never finish.... &lt;br /&gt;&lt;h1&gt;Foundation’s End&lt;/h1&gt;&lt;b&gt;&lt;i&gt;Olivaw, R. Daneel&lt;/i&gt;&lt;/b&gt;&lt;i&gt; – … Of all the beings that have been in a position to affect the course of galactic events, he was undoubtedly the most influential. Nearly everything that we take for granted about the galaxy in which we live has, in some way, been crafted by his hand. Perhaps no being has ever been both so venerated and reviled. And yet it can also be said that we have the less information about him, relative to his scope of his accomplishments, than any other being in recorded history…&lt;a href="http://www.blogger.com/post-edit.g?blogID=5828855760220275945&amp;amp;postID=3246224423147288603#_ftn1_5517"&gt;*&lt;/a&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;Trevize brought the ship into a careful orbit around Terminus. He knew the authorities had been watching him since his ship jumped in at the outer edge of the system and slowly pulled itself inwards using its gravitational drive. And he had a fairly good idea of why they had remained silent: they were waiting for him to make the first move. He had considered the alternatives before making the jump – a warning transmission on the hyperwave, or the abrupt appearance of an interdiction vessel to “guide” his unwelcome person away from the sensitive heart of the Foundation. Maybe even a naval vessel with open gun-ports. But he had been a bureaucrat himself and he could imagine the discussions taking place in the president’s office, perhaps even now. &lt;br /&gt;&lt;br /&gt;When he had last been in that office himself it was an amicable discussion over a finer point of some upstart bill he had marshaled through the congressional committee despite heavy opposition from the conservative blocs. It was that bill, more than any that followed, that had cemented his reputation as a brash, young, and certainly ambitious politician, and garnered a fair amount of support, both popular and within the houses of government. Trevize had impressed her, and she had wanted him as an ally – she told him as much there in the presidential chambers. On reflection, over the years, he had come to realize it was because she feared him as a competitor, and wanted to ensure he was on her side, not challenging her directly where he might triumph. It was the same president, several years later, who had effectively banished him from Terminus.  &lt;br /&gt;&lt;br /&gt;Ostensibly he had been granted his wish – free reign to seek out the source of a threat to the Foundation. No doubt his constituents had received an effective propaganda campaign, not too far removed from the truth; public monitoring of the congress floor would have ensured that, at least. But he doubted that they were privy to the full story: that their duly elected representative had been detained in secret on the order of the president, arrested without charge, and told in no uncertain terms to leave, and never return. &lt;br /&gt;&lt;br /&gt;He was unsure whether or not Madam President would even recall the meeting, in deep space, between the naval forces of the Foundation, the telepathic control of the Second Foundation, and the mediation of the Gaians, with him at the center. Certainly, if she recalled anything at all, it was of a stunning victory for the Foundation, but a victory against forces that were best kept secret from the many worlds under her care – he was sure that the Gaians would see to that, at least. But he was certain that she never expected him to return, with the penalty of death looming over his head. What could be worth returning for? &lt;br /&gt;&lt;br /&gt;… &lt;br /&gt;&lt;br /&gt;There was one thing he was counting on, and he asked the ship’s computer to verify it for him, as quietly as it could. Since he was, as far as the public was concerned, still an elected official acting in official government capacity, he had certain privileges associated with the position. Or at least, so said the letter of the law. And, he sincerely hoped, so said the administrative computers that managed the Foundation’s bureaucratic machine. On some outlying worlds, abandoned by the crumbling remnants of the Empire but not yet worked into the Foundation’s socioeconomic fold, actual scraps of physical paper, adorned with cryptic acronyms and decorated with flourished signatures, were used to make requests to the government, transfer resources, or provide a chain of accountability. On such worlds, the governments ran slowly. The Foundation prided itself on its technology, and all such “paperwork” was performed by computers. Biometrics certified all requests originating with a person. From there, everything happened through an electronic series of transfers, acknowledgements, verifications and assurances. Permissions for actions were granted based on vast databases of accountability, networks of legal relationships built into an extremely efficient, yet entirely invisible world that allowed the mere humans involved to work without concerning themselves with the trivial details.  &lt;br /&gt;&lt;br /&gt;And Trevize was fairly certain that nowhere in that massive machine was there a way to preserve his public status as “elected representative on administrative assignment” and yet take away the privileges that came with such a position. On the one hand, why would the network know of such a contradictory state for one of its records to be in? And on the other, even if it did, how would such machinery be kept secret from the people of the Foundation? &lt;br /&gt;&lt;br /&gt;Truthfully, he could easily imagine all sorts of conspiracies built up upon deeper conspiracies – shadow governments with secret agendas controlling the media, filtering the reality of its populace for nefarious purposes. And, being the victim of somewhat underhanded dealings himself, he would admit that there might be something to such paranoid delusions. But he more deeply trusted that the checks and balances of the Foundation government, combined with a well educated populace and an automated bureaucracy, would keep any elected officials from actually breaking the letter of the law, despite how badly the spirit might be twisted. &lt;br /&gt;&lt;br /&gt;And so he was not surprised, although distinctly relieved, when the ship assured him that his broadcast rights remained intact, and further comforted that the permission request had not required any access to sensitive information stores. Hopefully, that meant that the government was still in the proverbial dark. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=5828855760220275945&amp;amp;postID=3246224423147288603#_ftnref1_5517"&gt;*&lt;/a&gt; All references are from the &lt;i&gt;Encyclopedia Galactica, 117&lt;sup&gt;th&lt;/sup&gt; Edition&lt;/i&gt;, 1054 F.E.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-3246224423147288603?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3246224423147288603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/04/foundation-end.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3246224423147288603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3246224423147288603'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/04/foundation-end.html' title='Foundation&amp;#39;s End'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1545981552130389161</id><published>2008-04-13T06:25:00.000-07:00</published><updated>2011-05-28T18:21:28.061-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vniic'/><category scheme='http://www.blogger.com/atom/ns#' term='Second Life'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>Second Life on an Apple II</title><content type='html'>... or, "How Josh spends his time when the family is on vacation without him."&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vAZHJa91JHk?fs=1&amp;amp;hl=en_US"&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/vAZHJa91JHk?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;It's a client/server app for the Apple II and Windows that streams the &lt;br /&gt;Windows desktop down to the Apple. So far the communication is one way, so &lt;br /&gt;you can't even call it a graphical terminal. Yet.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://blu1.storage.msn.com/y1p5Ln-IAuHBfqCOnesVhq2m2Tas7gOn_SMFq5xEKpRBQqvaoUjUlW0qg5ZptOYY9XlVp7YmSPaynadon9pyuiePliAnicx-apC?PARTNER=WRITER"&gt;&lt;img alt="sl_login" border="0" height="183" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfqikOjx_wyJl4dCeFWqRNNu6UBNrFB9b9ymg8cmFNcWDS2J6Si7vaipP_bEcz4F-z5cfCGbCDWFpEaY1NWx9uwa?PARTNER=WRITER" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;Second Life login screen&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blu1.storage.msn.com/y1p5Ln-IAuHBfoi61Fcs0MYmg8Zp6Dp557s8MJb7sHLp8Vh2e4tvZYNxklUrYi67TPmOBMQgng5Ab59KvdwRS81Oiy26y6zIgMG?PARTNER=WRITER"&gt;&lt;img alt="sl_ship" border="0" height="183" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfq2OCu79HABA1Jk6SRxdTy8x6RJt4SLTunrOpobIJwfwTtCmdTcSsvUUkrA37DV-uWoCr0GH_LlMtePAno9dPSv?PARTNER=WRITER" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;My pirate ship&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blu1.storage.msn.com/y1p5Ln-IAuHBfpltw3aanY5ix5ttRAi8esp5b7Wuo2vhag0awsoTGBfR8e-hmDNRLv9lc2RMTj5akmobkXknERz7j1LjKKHSYxC?PARTNER=WRITER"&gt;&lt;img alt="sl_billabong" border="0" height="183" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfqDZfK3d8yAfeVdHl0s2XLjdg3WzgRU_vXY1aXOL-hw64-OKf2KYsRHDPlph6k5KsKNdF0jM7QX9rxz87l_WaY0?PARTNER=WRITER" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px;" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;Billabong&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blu1.storage.msn.com/y1p5Ln-IAuHBfpHzZZZLcNIfpnSbEsgVRYocm_1VisfWzTPiumyMU5RThwkDNlFUSONhL1rxwcjUDvI8rNt_fJxdlFzir_q5TWz?PARTNER=WRITER"&gt;&lt;img alt="sl_josh_isfm" border="0" height="183" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfpS59YDmmNbYFInJkybUabMYiY3C2OJjbdwrJhybDRQ3Bc6k-BC5uixs7kmhjE_j9a73rVU3d3xTSVFB74glEi1?PARTNER=WRITER" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px;" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;My avatar at the International Space Flight Museum&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blu1.storage.msn.com/y1p5Ln-IAuHBfpbDkiZq4pTSJ0vGfS17ZRJUtmbf_un9QytWrcF4xOvB7e4E-781CU-84ojoCfyfj17FddZGQrrOOUAWERHwIR9?PARTNER=WRITER"&gt;&lt;img alt="sl_riverwalk" border="0" height="183" src="http://blu1.storage.msn.com/y1p5Ln-IAuHBfp_dG1R4aSXuUelPj8MIqdwRwFqSyiuUfYRVLhlfOhMv_kvvYNHXF4xz3O0_t8T8XVZ2b28KGhDcBlrbgrkxrb3?PARTNER=WRITER" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px;" width="244" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;The Windows server and Apple client (with the USB-&amp;gt;RS232 Serial connector in the middle)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1545981552130389161?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1545981552130389161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/04/second-life-on-apple-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1545981552130389161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1545981552130389161'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/04/second-life-on-apple-ii.html' title='Second Life on an Apple II'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2877133419128550250</id><published>2008-03-21T15:04:00.000-07:00</published><updated>2010-03-28T20:53:06.744-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Second Life'/><title type='text'>Moo Cards</title><content type='html'>&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;We're getting a fresh batch of business cards at work c/o &lt;a href="http://www.moo.com/"&gt;Moo Cards &lt;/a&gt;and this time can use custom screenshots. Here are some I snapped today which will be on the back of my cards:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aj0ztlVoI/AAAAAAAAAN8/bmrJ4AGbch0/s1600/y1p2sFrdGFcWF_-6YfTdBedibjUrczwTOs6fpMY56NTCJK5i765w7WRqt9seGrYhYsbmm9RJG2HWwc.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aj0ztlVoI/AAAAAAAAAN8/bmrJ4AGbch0/s320/y1p2sFrdGFcWF_-6YfTdBedibjUrczwTOs6fpMY56NTCJK5i765w7WRqt9seGrYhYsbmm9RJG2HWwc.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Aj5WT2lGI/AAAAAAAAAOE/EybSRAmdnw0/s1600/y1p2sFrdGFcWF_lv-skbdFKUP-aO9qGoRPBBpaWd-B66dEoiNG7p7p7BU6XEW2GjxeTVGa1-KBgRzA.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Aj5WT2lGI/AAAAAAAAAOE/EybSRAmdnw0/s320/y1p2sFrdGFcWF_lv-skbdFKUP-aO9qGoRPBBpaWd-B66dEoiNG7p7p7BU6XEW2GjxeTVGa1-KBgRzA.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Aj5yKbcsI/AAAAAAAAAOM/PUELMRptcaA/s1600/y1p2sFrdGFcWF_y5qmwgcKCZFRttNaNB78urz57MIyz8eMKUwDVg5yTdBXUL89u5dWJUyAs1o9-BIU.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Aj5yKbcsI/AAAAAAAAAOM/PUELMRptcaA/s320/y1p2sFrdGFcWF_y5qmwgcKCZFRttNaNB78urz57MIyz8eMKUwDVg5yTdBXUL89u5dWJUyAs1o9-BIU.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aj_VzzXbI/AAAAAAAAAOU/y0XXH0X21gg/s1600/y1p2sFrdGFcWF-576-Lxev_5QiqfCW31-cHP8JSkNA1XhS0Z_kbcwudibXN-L-4Brz6C6ZV_3vGO-M.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aj_VzzXbI/AAAAAAAAAOU/y0XXH0X21gg/s320/y1p2sFrdGFcWF-576-Lxev_5QiqfCW31-cHP8JSkNA1XhS0Z_kbcwudibXN-L-4Brz6C6ZV_3vGO-M.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Aj_x8QsoI/AAAAAAAAAOc/fSNSUAaPAAc/s1600/y1p2sFrdGFcWF9LOeLxzRtfxfBpjgHjssm1vLY44yaL1OlW5cvp25uiPNXVcwWNKJNhYPpGnpgZlDs.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Aj_x8QsoI/AAAAAAAAAOc/fSNSUAaPAAc/s320/y1p2sFrdGFcWF9LOeLxzRtfxfBpjgHjssm1vLY44yaL1OlW5cvp25uiPNXVcwWNKJNhYPpGnpgZlDs.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AkAjaW-HI/AAAAAAAAAOk/lCHim45t4gI/s1600/y1p2sFrdGFcWF92CZUWnI2-J0GJEstZl-6bBGR6-YGRVJKzE2ynoQtKvuZOK12X0aOhfwNSpZui7uw.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AkAjaW-HI/AAAAAAAAAOk/lCHim45t4gI/s320/y1p2sFrdGFcWF92CZUWnI2-J0GJEstZl-6bBGR6-YGRVJKzE2ynoQtKvuZOK12X0aOhfwNSpZui7uw.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Yes, that's how good Second Life graphics are these days. I really am that shiny. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2877133419128550250?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2877133419128550250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/moo-cards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2877133419128550250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2877133419128550250'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/moo-cards.html' title='Moo Cards'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aj0ztlVoI/AAAAAAAAAN8/bmrJ4AGbch0/s72-c/y1p2sFrdGFcWF_-6YfTdBedibjUrczwTOs6fpMY56NTCJK5i765w7WRqt9seGrYhYsbmm9RJG2HWwc.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4685019223319683466</id><published>2008-03-17T15:30:00.000-07:00</published><updated>2010-03-28T20:51:15.992-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Second Life'/><title type='text'>St. Patrick's Day</title><content type='html'>I decorated my av in a seasonal fashion:&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/_aKONQq2A3U0/S7Ajr4E2TaI/AAAAAAAAAN0/RSGvMNRO3eU/s1600/y1p2sFrdGFcWF_1jSgWmpLuiilZrB0sMltjis3UnUlTGB5rQwhdg-9jYBfBdOm--hZnpfGZX6a34FQ.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Ajr4E2TaI/AAAAAAAAAN0/RSGvMNRO3eU/s320/y1p2sFrdGFcWF_1jSgWmpLuiilZrB0sMltjis3UnUlTGB5rQwhdg-9jYBfBdOm--hZnpfGZX6a34FQ.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I showed up for a meeting green, and someone didn't "get it". So I had to make the hat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-4685019223319683466?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4685019223319683466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/st-patrick-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4685019223319683466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4685019223319683466'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/st-patrick-day.html' title='St. Patrick&amp;#39;s Day'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aKONQq2A3U0/S7Ajr4E2TaI/AAAAAAAAAN0/RSGvMNRO3eU/s72-c/y1p2sFrdGFcWF_1jSgWmpLuiilZrB0sMltjis3UnUlTGB5rQwhdg-9jYBfBdOm--hZnpfGZX6a34FQ.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-5905676966546388333</id><published>2008-03-17T15:27:00.000-07:00</published><updated>2010-03-28T20:49:22.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hobbies'/><title type='text'>Paper Satellites</title><content type='html'>&lt;div&gt;In the Oakley Centre library was a book describing early (so, 1960's) communication satellites. They were simple geometric solids (tetrahedron, cube, octahedron, etc) covered with solar cells, and the book had plans for making paper models (cut, fold, glue).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Googling isn't turning anything up. Anyone out there able to find it?&lt;/div&gt;&lt;br /&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/5828855760220275945-5905676966546388333?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/5905676966546388333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/paper-satellites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5905676966546388333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5905676966546388333'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/paper-satellites.html' title='Paper Satellites'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-9074342749024947206</id><published>2008-03-15T09:03:00.000-07:00</published><updated>2010-03-28T21:29:37.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>ONERR RESUME and such</title><content type='html'>&lt;div&gt;I added ONERR GOTO linenum / RESUME / POKE 216,0 support to my &lt;a href="http://www.calormen.com/Applesoft/"&gt;Applesoft Interpreter&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;It turned out to be pretty simple. ONERR sets a handler address. On an exception, check if it's cachable (i.e. the program caused it, it's not the interpreter reporting a bug). If so, store the current execution point and jump to the handler. If the handler calls RESUME, restore the previous execution point. The only wrinkle is that IF...THEN... is considered a single statement, so the IF part needs to be resumed and I was cheating an treating the bit after THEN as a separate statement. I don't twiddle the stack at all, so I'm not positive the behavior there is consistent with a real Apple.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;This is not a feature I used when I programmed in BASIC. I didn't have very good examples to learn from. Also, initial experiments with RESUME made me wonder "WTF?". For example, consider this:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color: #0070c0; font-family: 'Courier New';"&gt;5 ONERR GOTO 10000&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;10 INPUT "Open file?";F$ : REM prompt user for file name&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;20 PRINT CHR$(4)"OPEN "F$ : REM open the file&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;10000 PRINT "Invalid file" : RESUME : REM this won't do what we want&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;That's useless -&amp;nbsp;the RESUME will rerun the statement on line 20, so it will just happen again.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I fell into the trap of thinking of ONERR / RESUME as a mandatory pair, and of errors as some global condition (&lt;em&gt;"error is bad! stop error from bothering user!"&lt;/em&gt;). Here are two more practical examples. First, let's correct the first sample:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;10 INPUT "Open file?";F$ : REM prompt user for file name&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;20 ONERR GOTO 30 : PRINT CHR$(4)"OPEN "F$ : GOTO 40 : REM open the file; if it worked, keep going&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;30 PRINT "Invalid file" : GOTO 10 : REM oops, caught an error - go back to the right spot to try again&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;40 POKE 216,0 : REM clear onerr handler, and continue reading file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;In other words, the onerr is used to trap the error result of the call. RESUME isn't used.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Another handy example:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color: #0070c0; font-family: 'Courier New';"&gt;10 PRINT CHR$(4)"OPEN DATAFILE" : REM open file &lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;20 PRINT CHR$(4)"READ DATAFILE" : REM access file for reading&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;30 ONERR GOTO 50 : REM trap end-of-file error&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;40 INPUT A$: PRINT A$ : GOTO 40 : REM read lines from file&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;50 POKE 216,0 : REM clear onerr handler&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0070c0; font-family: 'Courier New';"&gt;60 PRINT CHR$(4)"CLOSE DATAFILE"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;This treats the end-of-file as exceptional, and handles it with an ONERR trap. Very slick. I wish I'd known this back in the 1980's!&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Instead of this, languages like C (on which UNIX and Windows&amp;nbsp;are built) use error codes - any function that can fail will have some way to return a success or failure code. So you write a lot of code that looks like this:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: c"&gt;FILE* f = NULL;&lt;br /&gt;while( f == NULL )&lt;br /&gt;{&lt;br /&gt;    /* ask user for filename here */&lt;br /&gt;    f = fopen("datafile", "r");&lt;br /&gt;    if( f == NULL )&lt;br /&gt;    {&lt;br /&gt;        printf("Invalid file");&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;In other words, after every action, check the results!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;More modern languages provide this mechanism in a less spaghettified fashion, called &lt;em&gt;exceptions. &lt;/em&gt;(If you're unlucky and calling into a library from another language, like from C++ into C, you need to fall back to the old mechanism.) The syntax usually takes the form of a "try &amp;lt;some code&amp;gt; catch &amp;lt;an exception and respond&amp;gt;", where the verb "throw" is used to indicate that an exception has occurred, e.g. "throw EOFError" for an end-of-file exception.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;For reference, here's what the above might look like in more contemporary language - this is "pseudo-Python*":&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;while True:&lt;br /&gt;    print "Open file? "&lt;br /&gt;    filename = readline()&lt;br /&gt;    try:&lt;br /&gt;        file = open(filename,"r")&lt;br /&gt;    except:&lt;br /&gt;        print "Invalid file"&lt;br /&gt;    else:&lt;br /&gt;        break # yay, worked&lt;br /&gt;# do stuff with file&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;And:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;file = open("datafile","r")&lt;br /&gt;try:&lt;br /&gt;    while True:&lt;br /&gt;        line = file.readline()&lt;br /&gt;        print line&lt;br /&gt;except EOFError:&lt;br /&gt;    pass # we must be done!&lt;br /&gt;file.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;Note the similarities to the Applesoft ONERR examples. You can see how the exception syntax is not particularly well suited for interactive actions like prompting the user for a file which require the "success" case to break out of a loop. However, in the case where the exception is the rarity (the end-of-file condition), it lets the code doing the bulk of the work remain clean (the read/print loop).&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;* I've taken liberties with the syntax; in real Python, &lt;/i&gt;&lt;span style="font-family: 'Courier New';"&gt;readline()&lt;/span&gt;&lt;i&gt; returns None at EOF rather than raising an exception, and you can just write &lt;/i&gt;&lt;span style="font-family: 'Courier New';"&gt;while line in file:&lt;/span&gt; ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-9074342749024947206?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/9074342749024947206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/onerr-resume-and-such.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/9074342749024947206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/9074342749024947206'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/03/onerr-resume-and-such.html' title='ONERR RESUME and such'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6444574005181118479</id><published>2008-02-23T08:46:00.000-08:00</published><updated>2010-03-28T21:34:33.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disneyland'/><category scheme='http://www.blogger.com/atom/ns#' term='indiana jones'/><title type='text'>Catching Up</title><content type='html'>&lt;div&gt;Nothing big to report, but for posterity I should probably say something...&lt;/div&gt;&lt;ul&gt;&lt;li&gt;At the end of January, my grandmother (June Fahey) passed away. I'd expected this for a long time... and basically dreaded phone calls from my parents for several years, anticipating the news. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;On February 8th we flew to Disneyland for the weekend, courtesy of a co-worker who has a small plane. Lovely flight down and back. Caspian enjoyed the Indiana Jones ride (finally tall enough!) but freaked out a bit in line the second time when the spiked roof started to descend. Ah well - we made it through. Will post pictures at some point.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Caspian is taking ice skating lessons on Saturday afternoon, and having a great time. He's quite enthusiastic about it. Occasionally, he even listens to his instructor.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;He's still taking ballet on Mondays, but his yoga mat and clothes got left on a cable car, so Su took him to the dance store... and they came home with tap shoes. He's very excited about them. We'll see how this goes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Susan has two new post-partum doula clients, one for just a couple of visits, the other for a full run.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.travellermap.com/"&gt;map site &lt;/a&gt;has been where my hobby-project time has been going. &lt;a href="http://www.travellermap.com/"&gt;The blog &lt;/a&gt;has details on recent work.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I picked up the first two boxed sets of the &lt;a href="http://www.theraider.net/films/young_indy/index.php"&gt;Young Indiana Jones Chronicles&lt;/a&gt;. It's been airing weekly on the History Channel... but for some reason they're showing only every other episode. I miss the "old Indy" intros, but it was hard to follow the story arc as originally presented. The episode I'm watching now (Prague 1917) features Lord Percy from Blackadder II as Franz Kafka, and could be titled Indiana Jones and the Terrors of Bureaucracy. &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/5828855760220275945-6444574005181118479?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6444574005181118479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/02/catching-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6444574005181118479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6444574005181118479'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/02/catching-up.html' title='Catching Up'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6057689127049946857</id><published>2008-01-05T01:22:00.000-08:00</published><updated>2010-03-28T20:47:40.952-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random Thoughts'/><title type='text'>Why 3D?</title><content type='html'>&lt;div&gt;I happened to read co-worker Jeffrey Ventrella's page &lt;a href="http://www.blogger.com/post-edit.g?blogID=5828855760220275945&amp;amp;postID=6057689127049946857"&gt;&lt;u&gt;http://www.ventrella.com/Ideas/YawPitchRoll/yaw_pitch_roll.html&lt;/u&gt;&lt;/a&gt; and the "Why 3" part reminded me...&lt;br /&gt;&lt;br /&gt;Since (most) humans are trichromats, we've settled on a 3-dimensional color space: RGB for emissive and CMY for reflective, although in school you learn the approximation "blue, red, yellow" as the "primary colors". Our color monitors use RGB (subpixel, phosphor) triads which roughly correspond to the light frequencies that (most) human eyes are sensitive to. Graphics programming is often an attempt to make sure the right R, G and B values are used for each pixel to approximate reality. We also generate other color spaces (HSL, HSB) when convenient, each with three parameters. This might indicate that colors are inherently 3D, as is space.&lt;br /&gt;&lt;br /&gt;Of course, it's all just hacks upon hacks.&lt;br /&gt;&lt;br /&gt;Light can come in any frequency, from (infra)red through (ultra)violet, and is typically a mix of many frequencies depending on the source. (Sunlight happens to be a pretty good mix, for example.) A pure blue light would trigger the blue-sensitive cones in our eyes. A pure yellow light trips both the green- and red-sensitive cones in our eyes and the image post-processing of our visual system tells us "yellow". A television display implements yellow based on this hack - it mixes red and green which our visual system interprets as yellow. To an alien with a different visual system, this wouldn't work. An alien with a specific yellow-sensitive cone would be baffled as to why we saw Big Bird as yellow on one of our televisions, since&amp;nbsp;a pure yellow light and a mixture of red and green perceived as identical by a human would appear distinct to this alien.&lt;br /&gt;&lt;br /&gt;And there are aliens among us!&lt;br /&gt;&lt;br /&gt;Some humans are lacking some of the chromatins and hence are mono- or dichromats. Colloquially we call this "color blindness". Evidence suggests that some humans may even be tetrachromats. Research is ongoing. Perhaps this explains some people's choice of fashion?&lt;br /&gt;&lt;br /&gt;It also turns out that most vertebrates are pentachromats! Early mammals lost three chromatins and so most mammals are dichromats (hence "dogs can't see color"); primates later re-evolved a third chromatin. This means birds have a much more complicated color sense than humans - 5 dimensions of color! And of course many other animals have ultraviolet and infrared perception ability as well.&lt;br /&gt;&lt;br /&gt;So while space appears to be truly 3D (not counting time and rolled up mini dimensions, which are beyond our ability to perceive), 3D color spaces are merely a human convenience, and the basis of many hacks.&lt;/div&gt;&lt;br /&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/5828855760220275945-6057689127049946857?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6057689127049946857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/01/why-3d.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6057689127049946857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6057689127049946857'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2008/01/why-3d.html' title='Why 3D?'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4492601553127774237</id><published>2007-12-31T12:07:00.000-08:00</published><updated>2010-03-28T20:47:31.213-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random Thoughts'/><title type='text'>Best TV Show Ever: Jim Henson's The Storyteller</title><content type='html'>&lt;div&gt;Go &lt;a href="http://www.amazon.com/Jim-Hensons-Storyteller-Definitive-Collection/dp/B000EU1Q5E/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=dvd&amp;amp;qid=1199160313&amp;amp;sr=8-1"&gt;buy a copy &lt;/a&gt;of &lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Storyteller"&gt;The Storyteller &lt;/a&gt;&lt;/em&gt;on DVD if you don't have one and watch it (again). Then go and &lt;a href="http://www.abebooks.com/servlet/SearchResults?an=Minghella&amp;amp;sts=t&amp;amp;tn=The+Storyteller&amp;amp;x=64&amp;amp;y=10"&gt;buy a copy of the book&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&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/5828855760220275945-4492601553127774237?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4492601553127774237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/12/best-tv-show-ever-jim-henson.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4492601553127774237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4492601553127774237'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/12/best-tv-show-ever-jim-henson.html' title='Best TV Show Ever: Jim Henson&amp;#39;s The Storyteller'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7450885389936574436</id><published>2007-09-25T15:36:00.000-07:00</published><updated>2010-03-28T20:47:22.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Caspian and Ariel</title><content type='html'>&lt;div style="margin: 0in 0in 0pt;"&gt;Caspian is deeply, madly in love with Ariel (from &lt;em&gt;&lt;a href="http://www.imdb.com/title/tt0097757/"&gt;The Little Mermaid&lt;/a&gt;&lt;/em&gt;).&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;This isn’t precisely recent. Prior to our last trip to Disneyland he’d written a letter to Ariel (with a drawing of his robot bunny), and on said trip he delivered it to her she sits and talks with children at her &lt;a href="http://maps.live.com/default.aspx?v=2&amp;amp;cp=pn1vwp5563gv&amp;amp;style=o&amp;amp;lvl=2&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;scene=6773065&amp;amp;encType=1"&gt;grotto &lt;/a&gt;(not the restaurant, but a dedicated spot near the Matterhorn&amp;nbsp;at the boundary between Fantasyland and Tomorrowland).&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;It is, however, much more pronounced lately, perhaps more so after receiving a &lt;em&gt;Little Mermaid&lt;/em&gt; fleece blanket in the mail (a &lt;a href="http://www2.kelloggs.com/Promotion/PromotionDetail.aspx?PID=5858"&gt;cereal box offer&lt;/a&gt;). He’s requested to watch the movie several times of late, and has the movie soundtrack on his MP3 player and listens to it often. He is also, apparently, an &lt;a href="http://en.wikipedia.org/wiki/R.E.M._(band)"&gt;R.E.M.&lt;/a&gt; fan. He asked me to put that on today, and then had to specify “No, I want &lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/Out_of_Time_(album)"&gt;Out of Time&lt;/a&gt;&lt;/em&gt;.” But I digress.&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;This has led to some interesting conversations. He wants Ariel to come live with us, perhaps “stay in our bathtub.” On more than one occasion he’s whispered to us, somewhat guiltily but sincerely, “I love Ariel more than I love momma and dada.”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;Yesterday:&lt;br /&gt;&lt;/div&gt;&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;&lt;em&gt;Josh:&lt;/em&gt; “It’s a shame [our pet] snail isn’t too smart.”&lt;br /&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “If he was we could talk to him. I’d build a big aquarium so I could go snorkeling! I’d make it from here [runs to front of house] to here [runs to back of house]. And then I could bring Ariel here and she could stay with us!”&lt;/div&gt;&lt;/blockquote&gt;Today:&lt;br /&gt;&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “… my brain told me!”&lt;br /&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Josh:&lt;/em&gt; “You are your brain!” &lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “No, no… my skin is me and my hair is me and my clothes are me!”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;We’ve had that discussion before, so this was somewhat teasing on both our parts.&lt;/em&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Josh:&lt;/em&gt; “But you can change your clothes and you’re still you. You can change your hair and you’re still you. You can even get surgery to change your face, or turn from a boy into a girl!”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “How do they do that?” &lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;A distraction arose as I was starting to explain, and I basically forgot the question. About an hour later, while finishing dinner…&lt;/em&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “Can we change the dog into a boy?”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Josh:&lt;/em&gt; “No, it’s very expensive and they only do that for people. It’s… as expensive as a house.”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “Whoah… Is that as expensive as eight thousand airplanes?”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Josh:&lt;/em&gt; “No, airplanes cost about as much as a house.”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “I wish I had an airplane of my own. Then I could fly to Disneyland by myself.”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Josh:&lt;/em&gt; “Would you pick up Ariel?”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; “Yes, but I’d have to sleep in the back. Ariel would fly.”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Josh:&lt;/em&gt; “But you’d have to fly! You need your feet to fly an airplane.”&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0in 0in 0pt;"&gt;&lt;em&gt;Caspian:&lt;/em&gt; &lt;em&gt;(quietly)&lt;/em&gt; “It’s just a cover. Ariel at Disneyland just has a cover over her legs. But you can’t tell anyone outside our family! You can tell the dog, the cat, the fish, the snail... oh, and momma. But that’s it! If you tell anyone outside our family they will be sad. I… I know there aren’t real mermaids. I just know.”&lt;/div&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;*sniff!*&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 0in 0in 0pt;"&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/5828855760220275945-7450885389936574436?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7450885389936574436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/09/caspian-and-ariel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7450885389936574436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7450885389936574436'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/09/caspian-and-ariel.html' title='Caspian and Ariel'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7982434684710525465</id><published>2007-09-16T16:01:00.000-07:00</published><updated>2010-03-28T21:34:44.174-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>Applesoft Interpreter Update</title><content type='html'>&lt;div&gt;I &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!950.entry"&gt;blogged about it previously&lt;/a&gt;, but one side project&amp;nbsp;I have going on is an &lt;a href="http://www.calormen.com/Applesoft/"&gt;Applesoft&amp;nbsp;interpreter in Javascript&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I've been adding updates to the page as I went, and it's getting pretty complete at this point. Worth calling out:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;It has DOS emulation (basically, you can use ye olde PRINT CHR$(4) trick to open and read text files)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Joystick and Paddle support (using on-screen controls)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Low resolution graphics (40x48)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PEEK/POKE emulation for the keyboard and display strobes, so you can do asynchronous input, e.g. games&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tested on Internet Explorer, Firefox, and Safari (Windows)&lt;/li&gt;&lt;/ul&gt;There are two samples&amp;nbsp;- DEMOS (which is a collection of test samples) and TRADER (which was the point of the whole exercise)&lt;br /&gt;&lt;br /&gt;Check it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7982434684710525465?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7982434684710525465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/09/applesoft-interpreter-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7982434684710525465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7982434684710525465'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/09/applesoft-interpreter-update.html' title='Applesoft Interpreter Update'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-9184366040080679551</id><published>2007-08-20T10:37:00.000-07:00</published><updated>2010-03-28T20:46:08.471-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='For Posterity'/><title type='text'>My Flying Car</title><content type='html'>&lt;div&gt;I remembered to add "Go looking for those white science-y books I&amp;nbsp;borrowed from the library a lot as a kid; you know, the ones about robots, or future cities, and such. Maybe by Osborne?" to my TODO list today. And unlike the last time, I found one!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AibAimhOI/AAAAAAAAANs/TNXrQ16e5Ng/s1600/y1p1hVhsEQn4il65ocsUkdbo0jLKdQmsp9xbcaBualHG_mBVyETSDLIltX9ShJHjyaq47izhs8wqEQ.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AibAimhOI/AAAAAAAAANs/TNXrQ16e5Ng/s320/y1p1hVhsEQn4il65ocsUkdbo0jLKdQmsp9xbcaBualHG_mBVyETSDLIltX9ShJHjyaq47izhs8wqEQ.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;The Usborne Book of the Future, &lt;/em&gt;by Kenneth Gatland, illustrated by David Jefferis, Usborne Publishing, 1979.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Even better, found &lt;a href="http://www.goaste.cx/goaste/usbornebookofthefuture001.html"&gt;scans of the whole thing&lt;/a&gt; online. Skimming through it, I vividly remember pretty much every page. Wow.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Apparently, this book taught me everything I know. I'm sure I sailed through many classes in elementary school simply by regurgitating what I'd learned from it.&lt;/div&gt;&lt;br /&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/5828855760220275945-9184366040080679551?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/9184366040080679551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/08/my-flying-car.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/9184366040080679551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/9184366040080679551'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/08/my-flying-car.html' title='My Flying Car'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aKONQq2A3U0/S7AibAimhOI/AAAAAAAAANs/TNXrQ16e5Ng/s72-c/y1p1hVhsEQn4il65ocsUkdbo0jLKdQmsp9xbcaBualHG_mBVyETSDLIltX9ShJHjyaq47izhs8wqEQ.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6933214940767807565</id><published>2007-08-09T13:58:00.000-07:00</published><updated>2010-03-28T21:35:02.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scooby doo'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>Random Updates</title><content type='html'>&lt;strong&gt;Reading Light &lt;/strong&gt;- we've gotten Caspian a reading light for his bed. He usually gets about 20 minutes after we tuck him in (after half an hour of family story time) for him to read by himself. He's really, really into it. He'll read a few chapters of whatever book he's working on at the moment, and often say "just three more pages!" when it's time for lights-out.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;Sleeping with the Fish &lt;/strong&gt;– we did a &lt;a href="http://www.aquariumofthebay.com/display.asp?pageid=144&amp;amp;catid=69"&gt;sleepover&lt;/a&gt; at the &lt;a href="http://www.aquariumofthebay.com/"&gt;Aquarium of the Bay &lt;/a&gt;at &lt;a href="http://www.pier39.com/"&gt;Pier 39&lt;/a&gt;, since it's just a 10 minute walk from our house.&amp;nbsp;Overall: &lt;a href="http://www.urbandictionary.com/define.php?term=meh"&gt;meh&lt;/a&gt;. Cool to camp out in the underwater tunnel and watch fish and sharks swim overhead, but lots of down sides too. Kept the kids up later (lights out around midnight); Caspian was the youngest there (we cheated - although we preferred he dodge the question, he "rounded up" and said "5" when asked; when cornered,&amp;nbsp;he said he'd turn 6 on his next birthday); activities were a bit dry and scattered. Bathrooms were an elevator ride (with escort) away in the middle of the night. Caspian didn’t sleep well. Ah well - something to do once.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;Velcro Man! &lt;/strong&gt;- I've discovered my super power. &lt;em&gt;WARNING: ENTERING THE "TO MUCH INFORMATION" ZONE&lt;/em&gt;. I have really dry skin on my feet. Really, really dry. After Susan suggested I attack them with a pummice and I applied some lotion, they felt much better. But I noticed that I tended to slip around on carpets a whole bunch. Suddenly it all becomes clear - dry feet are a mutant adaptation for modern living. Huzzah! Sorry, I had to share.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;Zoinks! &lt;/strong&gt;- After Caspian heard the &lt;a href="http://en.wikipedia.org/wiki/Scooby-Doo"&gt;Scooby Doo, Where Are You?&lt;/a&gt; &lt;a href="http://www.melaman2.com/cartoons/scooby/themes/scooby69.mp3"&gt;theme song &lt;/a&gt;on a cartoon themes CD we had, he started asking about it. Luckly, one of the 'toon networks had a marathon recently so we DVR'd it. He's been watching one before and one after school. It's great to see him honestly laugh at the slapstick humor. He's also built a "ghost trap" in the hall with a stool, pillow, towel, paper bag, and electric fan. W00t! He's into the 1970 episodes now which are the first to feature the recurring hallway/door chase gags, all set to groovy music of course.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;Apple II Forever &lt;/strong&gt;- There's a new &lt;a href="http://applewin.berlios.de/"&gt;1.14.0 Beta of AppleWin&lt;/a&gt; (Apple II emulator for Windows) available that (finally!) adds mouse emulation. Yay! Source code available too. Since I always forget, I've submitted a patch that tells you how to get out when the mouse has been "captured" for emulation (Ctrl+Click).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;strong&gt;You Know You're Getting Old When &lt;/strong&gt;- we got &lt;em&gt;&lt;a href="http://www.imdb.com/title/tt0058331/"&gt;Mary Poppins &lt;/a&gt;&lt;/em&gt;on &lt;a href="http://www.netflix.com/"&gt;Netflix &lt;/a&gt;for Caspian, and watched it. It was the first time Su and I had watched it together, and possibly even independently the whole way through. As it was ending and a tear came to Mary Poppins' eye, I knew I was getting old when I thought "Hey, &lt;a href="http://www.imdb.com/name/nm0000267/"&gt;Julie Andrews &lt;/a&gt;is kinda cute." (For reference, she'd have been 29 when it was released.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6933214940767807565?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6933214940767807565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/08/random-updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6933214940767807565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6933214940767807565'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/08/random-updates.html' title='Random Updates'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6883347962845738574</id><published>2007-07-29T14:20:00.000-07:00</published><updated>2010-03-28T20:44:53.279-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Second Life'/><title type='text'>New Avatar</title><content type='html'>&lt;div&gt;I&amp;nbsp;built myself a shiny new avatar for SL. Check it out.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AiKgTR3VI/AAAAAAAAANk/PjQFVQ_mmwI/s1600/y1peMZsf8AGuMtC8g2pO3phqnVCvhw82GpF_GlIkhS3U3ce6UYq3xSFp1EycK71AYeUa6DQa9gHmZU.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AiKgTR3VI/AAAAAAAAANk/PjQFVQ_mmwI/s400/y1peMZsf8AGuMtC8g2pO3phqnVCvhw82GpF_GlIkhS3U3ce6UYq3xSFp1EycK71AYeUa6DQa9gHmZU.jpeg" width="400" /&gt;&lt;/a&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/5828855760220275945-6883347962845738574?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6883347962845738574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/new-avatar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6883347962845738574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6883347962845738574'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/new-avatar.html' title='New Avatar'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aKONQq2A3U0/S7AiKgTR3VI/AAAAAAAAANk/PjQFVQ_mmwI/s72-c/y1peMZsf8AGuMtC8g2pO3phqnVCvhw82GpF_GlIkhS3U3ce6UYq3xSFp1EycK71AYeUa6DQa9gHmZU.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6600272013207727202</id><published>2007-07-21T15:01:00.000-07:00</published><updated>2010-03-28T21:35:20.419-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Pocket IE and DHTML</title><content type='html'>&lt;div&gt;So... I thought I'd have a go at seeing what you can do with DHTML&amp;nbsp;(a.k.a. HTML where you monkey with the&amp;nbsp;contents via script, like most modern&amp;nbsp;interactive sites) in Pocket IE (a.k.a. Internet Explorer for&amp;nbsp;Windows&amp;nbsp;Mobile) so far as animation goes.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The short answer appears to be: not much.&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;The CSS &lt;strong&gt;position &lt;/strong&gt;property is not supported. In fact, the best (only?) documentation of the supported CSS properties is &lt;a href="http://blogs.msdn.com/windowsmobile/articles/213771.aspx"&gt;an entry on the Windows Mobile blog from 2004&lt;/a&gt;. So no absolute positioning.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can set a &lt;strong&gt;margin &lt;/strong&gt;on divs to position them (well, position one of them). However, this only works when PIE is set in "Desktop" rendering mode. It doesn't work in "Default" or "One Column" - I normally use the latter to force pages to reflow. (For WM6 you can specify a meta tag to override this - &lt;a href="http://blogs.msdn.com/iemobile/archive/2006/08/03/Detecting_IE_Mobile.aspx"&gt;see this blog post&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you set &lt;strong&gt;margin-left&lt;/strong&gt;, it takes away from the width of an element. So a DIV with a width of 50px and a margin-left of 10px ends up with an effective width of 40px.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;document.body &lt;/strong&gt;is null. You can use &lt;strong&gt;document.getElementById() &lt;/strong&gt;and find the body if it has an ID, though.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Setting &lt;strong&gt;window.onload &lt;/strong&gt;fails. You need to have &amp;lt;BODY ONLOAD="..."&amp;gt; instead.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No &lt;strong&gt;offsetLeft&lt;/strong&gt;, &lt;strong&gt;offsetTop&lt;/strong&gt;, &lt;strong&gt;offsetWidth &lt;/strong&gt;or &lt;strong&gt;offsetHeight &lt;/strong&gt;properties on elements.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No &lt;strong&gt;onmousedown/onmousemove/onmouseup &lt;/strong&gt;events. So no iPhone-esque demos. *sigh*&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No &lt;strong&gt;onclick &lt;/strong&gt;on elements other than &lt;strong&gt;input type=button &lt;/strong&gt;and &lt;strong&gt;a &lt;/strong&gt;(link).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To fake this for a DIV you can do &amp;lt;DIV ... &amp;gt;&amp;lt;A HREF="#" ONCLICK="..."&amp;gt;&amp;lt;DIV STYLE="width: 100%; height; 100%;"&amp;gt;&amp;lt;/DIV&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/DIV&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Getting and setting &lt;strong&gt;innerHTML &lt;/strong&gt;works just fine, so you can do arbitrary content updates&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;window.setTimeout() &lt;/strong&gt;is also supported, so you can do timed changes, for animations&lt;/li&gt;&lt;/ul&gt;So I was able to get a &lt;a href="http://www.calormen.com/tmp/pie_anim.htm" rel="nofollow"&gt;square that moves to a new random position when you click on it&lt;/a&gt;, but it wasn't pretty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6600272013207727202?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6600272013207727202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/pocket-ie-and-dhtml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6600272013207727202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6600272013207727202'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/pocket-ie-and-dhtml.html' title='Pocket IE and DHTML'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8907765221456655537</id><published>2007-07-16T13:54:00.000-07:00</published><updated>2010-03-28T20:43:38.626-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>Random SF Photos</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: auto;"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Various photos taken via my phone camera arond the Bay Area.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgnzjWS4I/AAAAAAAAAM8/lT2zoFWpWvQ/s1600/y1pKG-fYByxc6ydzlrqDVqxF35Qb6cVrRRr1SxxAdUnqzVXK1NVtqbBcJnYiWfKkUbNTOxAzUMXB_s.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgnzjWS4I/AAAAAAAAAM8/lT2zoFWpWvQ/s200/y1pKG-fYByxc6ydzlrqDVqxF35Qb6cVrRRr1SxxAdUnqzVXK1NVtqbBcJnYiWfKkUbNTOxAzUMXB_s.jpeg" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"We Are No Longer the Knights Who Say 'Ni'" - this was tied to a tree in a grove on the Berkeley campus, along with several other variations of the phrase. It was obviously part of a puzzle hunt. I'd sat down to read some books I'd picked up nearby and there was a regular flow of students coming past to take notes.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Ago-P1P_I/AAAAAAAAANE/u3aXipg0EN8/s1600/y1pMF1JaxvYTI1boNKsuLa8rW-gfJDnOIDEOrkAQAqVYLlW2RNBc2o2O9a3BFi35gnikhyGvoe0PkY.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Ago-P1P_I/AAAAAAAAANE/u3aXipg0EN8/s200/y1pMF1JaxvYTI1boNKsuLa8rW-gfJDnOIDEOrkAQAqVYLlW2RNBc2o2O9a3BFi35gnikhyGvoe0PkY.jpeg" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"This is Your Utopia - It Sucks" - sign seen by a garbage can on Columbus&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Agm8J-neI/AAAAAAAAAM0/Tdb1VDyc2M8/s1600/y1pjIOLFeuYB9cFkl6Pb4jFwxRowcCX_QgtNsHEVKg-Rp0NOQsNm__XVgMdCNJK8ckH2pOjOzscJXs.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Agm8J-neI/AAAAAAAAAM0/Tdb1VDyc2M8/s200/y1pjIOLFeuYB9cFkl6Pb4jFwxRowcCX_QgtNsHEVKg-Rp0NOQsNm__XVgMdCNJK8ckH2pOjOzscJXs.jpeg" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"Space Invaders" - saw this Atari 2600 cart in front of the Crystal Towers apartments on Taylor while walking the dog. Moments later, the next person to walk by stopped and picked it up.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgrexsHXI/AAAAAAAAANc/jAKiNwNrmYg/s1600/y1pX1ZYLCldzHhqqGC9VlSVEHRrFD8YwuL-eEc-dGNWIChzZUa3QUyNiNKtWkrepseXhX3AMpIReZU.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgrexsHXI/AAAAAAAAANc/jAKiNwNrmYg/s320/y1pX1ZYLCldzHhqqGC9VlSVEHRrFD8YwuL-eEc-dGNWIChzZUa3QUyNiNKtWkrepseXhX3AMpIReZU.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"Red Tailed Hawk on Jansen Street" - it was hunting a pigeon that was trapped with a plastic bag around the neck. An onlooker freed the pigeon, and the hawk hung around for a bit looking disappointed.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgmHztCMI/AAAAAAAAAMs/satPZ2qg1aI/s1600/y1pCEBtVxN_EwvCmcQexrlX0B_iTgaGuzlXSgPU6-zAU36MmEJQwKT9UaeDao5C5dXA3HXU0s8CgPs.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgmHztCMI/AAAAAAAAAMs/satPZ2qg1aI/s320/y1pCEBtVxN_EwvCmcQexrlX0B_iTgaGuzlXSgPU6-zAU36MmEJQwKT9UaeDao5C5dXA3HXU0s8CgPs.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"Meow" - sidewalk graffiti&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgpqHP6uI/AAAAAAAAANM/Qz9fC7jieGg/s1600/y1pVBmtubOQP-TxCWL6t6tC0zwVtDlRiiIKg2yg7k6LDJbfT5D476NSzEAZFnC5BB8EQGJ0LSMgdjk.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgpqHP6uI/AAAAAAAAANM/Qz9fC7jieGg/s320/y1pVBmtubOQP-TxCWL6t6tC0zwVtDlRiiIKg2yg7k6LDJbfT5D476NSzEAZFnC5BB8EQGJ0LSMgdjk.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"Cruise Ship" - seen on my walk home. Just to give a sense of scale.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgqUG09AI/AAAAAAAAANU/Ow3RF9PLIq8/s1600/y1pvR8AY3cpugAIC13FCiZztJWTQAtaigCNXe8xTLeecQgXza14RRzldsbElJjstw28HezBFqxgrCs.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgqUG09AI/AAAAAAAAANU/Ow3RF9PLIq8/s320/y1pvR8AY3cpugAIC13FCiZztJWTQAtaigCNXe8xTLeecQgXza14RRzldsbElJjstw28HezBFqxgrCs.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;"Better Be a War" - political commentary via pie charts. Sweet.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&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/5828855760220275945-8907765221456655537?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8907765221456655537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/random-sf-photos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8907765221456655537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8907765221456655537'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/random-sf-photos.html' title='Random SF Photos'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aKONQq2A3U0/S7AgnzjWS4I/AAAAAAAAAM8/lT2zoFWpWvQ/s72-c/y1pKG-fYByxc6ydzlrqDVqxF35Qb6cVrRRr1SxxAdUnqzVXK1NVtqbBcJnYiWfKkUbNTOxAzUMXB_s.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4383294238697590786</id><published>2007-07-14T05:10:00.000-07:00</published><updated>2010-03-28T20:37:38.874-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Recent News</title><content type='html'>&lt;div&gt;Out at dinner a few weeks ago, we were talking about where we might want to live. So we asked Caspian.&lt;/div&gt;&lt;blockquote dir="ltr"&gt;That's a difficult question. I think.... I'd want to live where there are &lt;a href="http://en.wikipedia.org/wiki/Coati"&gt;coatis&lt;/a&gt;.&lt;/blockquote&gt;In other news...&lt;br /&gt;&lt;ul dir="ltr"&gt;&lt;li&gt;&lt;div&gt;My sister &lt;a href="http://www.deliriousblue.blogspot.com/"&gt;Gillian&lt;/a&gt; has gone home now. She was with us for the month of June&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;At the end of her trip we took her to Disneyland for 3 days. What fun. I even remembered to bring &lt;a href="http://www.craphound.com/down/"&gt;Down and Out in the Magic Kingdom&lt;/a&gt;&amp;nbsp;this time. (Yes, yes, I could have just read it on my phone before.) Although I was pining for a "Ping My Whuffie!" shirt while crowd-dodging and those few times we waited in lines rather than going to walk-ons.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;The trip came in handy a few days ago when, in SL in my pirate av, a resident asked "so what does a pirate do in SL?" - easy to respond "We pillage, we plunder, we rifle and loot..."&lt;/div&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/5828855760220275945-4383294238697590786?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4383294238697590786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/recent-news.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4383294238697590786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4383294238697590786'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/07/recent-news.html' title='Recent News'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2251194609798685850</id><published>2007-05-24T02:38:00.000-07:00</published><updated>2010-03-28T21:39:17.667-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='calgary'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Another Snowy May in Calgary</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;So we're visiting my parents in Calgary &lt;em&gt;for the last time &lt;/em&gt;(they're moving to Nova Scotia)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In May.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And of course, it snowed. &lt;i&gt;Wheeeeee.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdkdlACZI/AAAAAAAAAK0/h0xiSZOyLt4/s1600/y1p-pQ2AKf50UpzWuIl5VywwKv4-D50SeMsDj_b9rqz5ofwmDEkjIAe3FqIX5AvnaykzAA1y0hPkvQ.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdkdlACZI/AAAAAAAAAK0/h0xiSZOyLt4/s200/y1p-pQ2AKf50UpzWuIl5VywwKv4-D50SeMsDj_b9rqz5ofwmDEkjIAe3FqIX5AvnaykzAA1y0hPkvQ.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdqXDUGJI/AAAAAAAAAK8/SSAhQX1iLrE/s1600/y1p5jHZuYA3XM33K0eOreTQ8pElDDhNk-0uWHN5Jxq_7L09r3z1akCQ06FdNamNIlxQEfqySCUPL34.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdqXDUGJI/AAAAAAAAAK8/SSAhQX1iLrE/s200/y1p5jHZuYA3XM33K0eOreTQ8pElDDhNk-0uWHN5Jxq_7L09r3z1akCQ06FdNamNIlxQEfqySCUPL34.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdrKXVs3I/AAAAAAAAALE/Z3T1FkF1huU/s1600/y1pFFu8zSOjto86AnCyTOKysYj9bzClPLwCtwHxG7wq9yb9Yq6xwlRR-DpJZIipKr60EiYYl-t2F1E.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdrKXVs3I/AAAAAAAAALE/Z3T1FkF1huU/s200/y1pFFu8zSOjto86AnCyTOKysYj9bzClPLwCtwHxG7wq9yb9Yq6xwlRR-DpJZIipKr60EiYYl-t2F1E.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AdsQnVm4I/AAAAAAAAALU/npV2VW_F6Cc/s1600/y1pIwMgWQ37pbU09-j0IUEhrrmL3EglTp0NdpPElKBgY_01y7WGvamf4lNE53S8Y1ZzssRES6O-KFc.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AdsQnVm4I/AAAAAAAAALU/npV2VW_F6Cc/s200/y1pIwMgWQ37pbU09-j0IUEhrrmL3EglTp0NdpPElKBgY_01y7WGvamf4lNE53S8Y1ZzssRES6O-KFc.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Adujt7oBI/AAAAAAAAALs/7YN8u_6SNJU/s1600/y1pmFdhWcAfuoVkhGtPWzopSWdK2CDNBdDH6IiUJzW3qLIfu0AAaM4Gf6NEOxIXYEa12ZsR5EpWwyw.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Adujt7oBI/AAAAAAAAALs/7YN8u_6SNJU/s200/y1pmFdhWcAfuoVkhGtPWzopSWdK2CDNBdDH6IiUJzW3qLIfu0AAaM4Gf6NEOxIXYEa12ZsR5EpWwyw.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AdvSyBluI/AAAAAAAAAL0/mT1sFy2TaHM/s1600/y1pOCVddBcJl5t7HLmaU8wHngJvWUuRTA05h99wbQ9Vej-UIR2RLwXguAmr0n5LkFjQIEZP0QicciA.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AdvSyBluI/AAAAAAAAAL0/mT1sFy2TaHM/s200/y1pOCVddBcJl5t7HLmaU8wHngJvWUuRTA05h99wbQ9Vej-UIR2RLwXguAmr0n5LkFjQIEZP0QicciA.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AdsQnVm4I/AAAAAAAAALU/npV2VW_F6Cc/s1600/y1pIwMgWQ37pbU09-j0IUEhrrmL3EglTp0NdpPElKBgY_01y7WGvamf4lNE53S8Y1ZzssRES6O-KFc.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AdsQnVm4I/AAAAAAAAALU/npV2VW_F6Cc/s200/y1pIwMgWQ37pbU09-j0IUEhrrmL3EglTp0NdpPElKBgY_01y7WGvamf4lNE53S8Y1ZzssRES6O-KFc.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Ad0-s82XI/AAAAAAAAAMk/5KVfmlUWo6E/s1600/y1pY-Ujwi9-ft8Rlp2IqhXJ-kXB1o1WG7XtA5l2DhsA4W7OHrgPRsiTiAEiHYYD6bQxNtu5NUQrxq0.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Ad0-s82XI/AAAAAAAAAMk/5KVfmlUWo6E/s200/y1pY-Ujwi9-ft8Rlp2IqhXJ-kXB1o1WG7XtA5l2DhsA4W7OHrgPRsiTiAEiHYYD6bQxNtu5NUQrxq0.jpeg" width="150" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Adtu5hsFI/AAAAAAAAALk/D6xtmdAB_W8/s1600/y1pmb3NjQ8WLLzzjC3_qASzAwtaGT3TSHyutokhmyRCvftOVQeTBgFzZXrYCwL8U9wA3KVRuJM1mlg.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Adtu5hsFI/AAAAAAAAALk/D6xtmdAB_W8/s200/y1pmb3NjQ8WLLzzjC3_qASzAwtaGT3TSHyutokhmyRCvftOVQeTBgFzZXrYCwL8U9wA3KVRuJM1mlg.jpeg" width="150" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Adr9g-pBI/AAAAAAAAALM/VAb2M1qcoR8/s1600/y1pi84pddSbPlyOcW0DFsbOaD23dE3wEYw6ETF7TBg6oP5qTTGJ-RUZ5KPyR3gJv3dBfZ7H9IvRDk4.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7Adr9g-pBI/AAAAAAAAALM/VAb2M1qcoR8/s200/y1pi84pddSbPlyOcW0DFsbOaD23dE3wEYw6ETF7TBg6oP5qTTGJ-RUZ5KPyR3gJv3dBfZ7H9IvRDk4.jpeg" width="150" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdtBgRF7I/AAAAAAAAALc/o2O6Vl-DxE8/s1600/y1pjx1Rf_EfCY2AoNoBsHXS5FJTRs6k11DRMl6jbQmx77dykrXVanCJZPwDJ8RabVpoMoI8aDWh2p4.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdtBgRF7I/AAAAAAAAALc/o2O6Vl-DxE8/s200/y1pjx1Rf_EfCY2AoNoBsHXS5FJTRs6k11DRMl6jbQmx77dykrXVanCJZPwDJ8RabVpoMoI8aDWh2p4.jpeg" width="150" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Ad0P6ayTI/AAAAAAAAAMc/9gnw7htchRI/s1600/y1pxQLpIyKkWHlLPD7JuiNDqrG1yUI99sVriWUh2euB57cjt5j7l95PEco7hJ2xjB_A0-0gA3RvPfs.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Ad0P6ayTI/AAAAAAAAAMc/9gnw7htchRI/s200/y1pxQLpIyKkWHlLPD7JuiNDqrG1yUI99sVriWUh2euB57cjt5j7l95PEco7hJ2xjB_A0-0gA3RvPfs.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Adw_aAADI/AAAAAAAAAME/kLF1ajnpScg/s1600/y1pqkKDHRp1k_RcmarSVHGbuvz9633TKogQUsxmzfeJdlADGei1XRaq8lE7hmLF1CMvjU_CLAeJAKc.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Adw_aAADI/AAAAAAAAAME/kLF1ajnpScg/s200/y1pqkKDHRp1k_RcmarSVHGbuvz9633TKogQUsxmzfeJdlADGei1XRaq8lE7hmLF1CMvjU_CLAeJAKc.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Adv77DmcI/AAAAAAAAAL8/Wctyer3bQkY/s1600/y1pQA33agDqx7sEtw_WxQovNOcNmfpLNIgjmm2jDG0Sb6vrRqdqcG-_3IX1O1jjisWiWM_pxSWreQM.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Adv77DmcI/AAAAAAAAAL8/Wctyer3bQkY/s200/y1pQA33agDqx7sEtw_WxQovNOcNmfpLNIgjmm2jDG0Sb6vrRqdqcG-_3IX1O1jjisWiWM_pxSWreQM.jpeg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Adxl0yiwI/AAAAAAAAAMM/I9tdUyJ-E0k/s1600/y1pVyiF9xekK5v26GrQg8mfPGd8rz6nkcZSYnacJvjR0e_WzA7kOXJ5Ot6Kp7A6FYxlyhijCj_p4V8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Adxl0yiwI/AAAAAAAAAMM/I9tdUyJ-E0k/s200/y1pVyiF9xekK5v26GrQg8mfPGd8rz6nkcZSYnacJvjR0e_WzA7kOXJ5Ot6Kp7A6FYxlyhijCj_p4V8.jpeg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2251194609798685850?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2251194609798685850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/another-snowy-may-in-calgary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2251194609798685850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2251194609798685850'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/another-snowy-may-in-calgary.html' title='Another Snowy May in Calgary'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aKONQq2A3U0/S7AdkdlACZI/AAAAAAAAAK0/h0xiSZOyLt4/s72-c/y1p-pQ2AKf50UpzWuIl5VywwKv4-D50SeMsDj_b9rqz5ofwmDEkjIAe3FqIX5AvnaykzAA1y0hPkvQ.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6659119575787409051</id><published>2007-05-17T14:49:00.000-07:00</published><updated>2010-03-28T21:35:30.045-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><category scheme='http://www.blogger.com/atom/ns#' term='star trek'/><title type='text'>Life Imitates Art</title><content type='html'>So I'm walking to work today, starting from my house in San Francisco's North Beach neighborhood.&lt;br /&gt;&lt;br /&gt;I start off on Greenwich and turn a half-block later at the intersection with Columbus ("Nu-cle-ar wessels?")&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AcZak9PJI/AAAAAAAAAKU/Jxbf0MSbQFw/s1600/voyage12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AcZak9PJI/AAAAAAAAAKU/Jxbf0MSbQFw/s320/voyage12.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I follow Columbus several blocks. Further on I pass Fresno Alley on Grant (Yellow Pages house - now a bar called "The House")&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Acd6GRC5I/AAAAAAAAAKc/NLwnxboUhcA/s1600/voyage11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Acd6GRC5I/AAAAAAAAAKc/NLwnxboUhcA/s320/voyage11.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I turn off Columbus just before I get to Pacific ("Double dumb ass on you!") &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Acg0hPXaI/AAAAAAAAAKs/Sr9FS0nPigg/s1600/voyage05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7Acg0hPXaI/AAAAAAAAAKs/Sr9FS0nPigg/s320/voyage05.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I pass by a newspaper stand and what's the cover story? &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Ace6IwZKI/AAAAAAAAAKk/ugCFH4nNA1E/s1600/ba_whales02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7Ace6IwZKI/AAAAAAAAAKk/ugCFH4nNA1E/s320/ba_whales02.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.sfgate.com/cgi-bin/article.cgi?file=/c/a/2007/05/17/MNGA3PSJRQ1.DTL"&gt;Two humpback whales are stranded in San Francisco Bay&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Too geeky not to share.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6659119575787409051?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6659119575787409051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/life-imitates-art.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6659119575787409051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6659119575787409051'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/life-imitates-art.html' title='Life Imitates Art'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aKONQq2A3U0/S7AcZak9PJI/AAAAAAAAAKU/Jxbf0MSbQFw/s72-c/voyage12.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7636235570983031061</id><published>2007-05-12T02:23:00.000-07:00</published><updated>2010-03-28T21:35:38.947-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><category scheme='http://www.blogger.com/atom/ns#' term='pirates'/><title type='text'>Pirate Party at the Exploratorium</title><content type='html'>&lt;div&gt;The &lt;a href="http://www.exploratorium.edu/"&gt;Exploratorium &lt;/a&gt;had a Pirate Party for its annual&amp;nbsp;Member Appreciation Night. We went all out and rented costumes from the &lt;a href="http://act-sf.org/index.cfm?s_id=&amp;amp;pid=ren_cst"&gt;ACT&lt;/a&gt;, which is conveniently on Market Street.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Lots of fun. Fortunately there was free food and drink (beer and wine, can't be a sober pirate). Our costumes were a hit (although there were lots of other great ones there), and we were the subjects of much photography, although Caspian was playing shy. A swaggering gait was natural once we were pirated up.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Also entertaining: we got to &lt;a href="http://www.exploratorium.edu/palace/index.html"&gt;POFA &lt;/a&gt;(mmmm, tasty) by taking the 30 Sansome from our house (it goes right there) dressed in full regalia,&amp;nbsp;which was entertaining for all involved. On the grounds of POFA we ran into some tourists who took their pictures with us. So who knows where we'll pop up on the ol' interweb.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Incidentally: ran into Zero Linden (from work) and his family, but we only crossed paths the once which was a shame. It was &lt;strong&gt;&lt;em&gt;very &lt;/em&gt;&lt;/strong&gt;crowded.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AbA0EF-uI/AAAAAAAAAJU/hVSUAI7fwzI/s1600/y1p9v7C1KVCJ1DdMwseALkd0V-my5Nhp9FwvQcVz7CPR66sKNZokM2tiUstqvoldM9U2G5SkQRoD-g.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AbA0EF-uI/AAAAAAAAAJU/hVSUAI7fwzI/s320/y1p9v7C1KVCJ1DdMwseALkd0V-my5Nhp9FwvQcVz7CPR66sKNZokM2tiUstqvoldM9U2G5SkQRoD-g.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbHOqqOdI/AAAAAAAAAJ8/ad4TdjdVCes/s1600/y1plLcOA5KskkBLPr0kFC2IfDm8a4MuZDFf3YycbdONaYvdaOoRWt3_pRp7_9pyrNF7ELFqi2na_sE.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbHOqqOdI/AAAAAAAAAJ8/ad4TdjdVCes/s320/y1plLcOA5KskkBLPr0kFC2IfDm8a4MuZDFf3YycbdONaYvdaOoRWt3_pRp7_9pyrNF7ELFqi2na_sE.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbHzbHrZI/AAAAAAAAAKE/IXowJ-NmJJM/s1600/y1pW007a6F_MpOK-NjUDR2JVICTB9E1ojMVK2-2QtAuTX0xnmCgdVvkvzcznCl03bVVwZwqZSFj9v8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbHzbHrZI/AAAAAAAAAKE/IXowJ-NmJJM/s320/y1pW007a6F_MpOK-NjUDR2JVICTB9E1ojMVK2-2QtAuTX0xnmCgdVvkvzcznCl03bVVwZwqZSFj9v8.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbJDmCzsI/AAAAAAAAAKM/Yq957tAmOWk/s1600/y1pzk0murYBCTntSCGcGT7QAVtUoYAp8lXfIqKEAn_TU1TsIo0eOHR6NY3X_VLGJALMkKtkyP50DC4.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbJDmCzsI/AAAAAAAAAKM/Yq957tAmOWk/s320/y1pzk0murYBCTntSCGcGT7QAVtUoYAp8lXfIqKEAn_TU1TsIo0eOHR6NY3X_VLGJALMkKtkyP50DC4.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aa8MTUrFI/AAAAAAAAAJM/z4ppoEMCr1M/s1600/y1p-zHmHHpoyurws5NgLsPkGS5Y445MuX0u5GWigQi8SHn-syZgmM1ujxL7QKGsu3DiwTI4qLCBVRI.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aa8MTUrFI/AAAAAAAAAJM/z4ppoEMCr1M/s320/y1p-zHmHHpoyurws5NgLsPkGS5Y445MuX0u5GWigQi8SHn-syZgmM1ujxL7QKGsu3DiwTI4qLCBVRI.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aa7KGwGuI/AAAAAAAAAJE/ekIU7df2Vlc/s1600/y1p-zHmHHpoyuqmoANJbB-x2xeU0X7aH2cHGKxo9z0vqaHqWpTD1XfM7cK1ErP3NpIgZtn205lmH78.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7Aa7KGwGuI/AAAAAAAAAJE/ekIU7df2Vlc/s320/y1p-zHmHHpoyuqmoANJbB-x2xeU0X7aH2cHGKxo9z0vqaHqWpTD1XfM7cK1ErP3NpIgZtn205lmH78.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AbGux1dnI/AAAAAAAAAJ0/xOttOAe11IA/s1600/y1pbcXqtcUMorvQCtpPJeZjg5wbc5KL4zUW4i9EegGFEj4gEvzacecjmirjnDqF1QdrX1MPCMJPvYA.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AbGux1dnI/AAAAAAAAAJ0/xOttOAe11IA/s320/y1pbcXqtcUMorvQCtpPJeZjg5wbc5KL4zUW4i9EegGFEj4gEvzacecjmirjnDqF1QdrX1MPCMJPvYA.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AbC8jGLNI/AAAAAAAAAJk/Zk3kUl8HOp4/s1600/y1p10abbsTlh7ur4BbOLatEWrj_aSx9EIzbz9eBJe-ZDhn52EjkMq7QDV8NJ69QEI40sAJl8fPaoxM.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AbC8jGLNI/AAAAAAAAAJk/Zk3kUl8HOp4/s320/y1p10abbsTlh7ur4BbOLatEWrj_aSx9EIzbz9eBJe-ZDhn52EjkMq7QDV8NJ69QEI40sAJl8fPaoxM.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbCSppjAI/AAAAAAAAAJc/5gcHChTovMs/s1600/y1p10abbsTlh7sNOkmhOscuocB1Sbn2I1aKa0y1Fcn2bjsA0pWn8z0GHaFkr_W7vtdsfCOuxXDDFkU.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbCSppjAI/AAAAAAAAAJc/5gcHChTovMs/s320/y1p10abbsTlh7sNOkmhOscuocB1Sbn2I1aKa0y1Fcn2bjsA0pWn8z0GHaFkr_W7vtdsfCOuxXDDFkU.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbF-ELJ1I/AAAAAAAAAJs/EUDP-0zDXCU/s1600/y1p59qfGjKDzAkZ9ESDcGzlFu18qsmNMTyf5npslg51r0GNwv8Awh7CEgmHETWvjmYhyvcIh6RiM5A.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AbF-ELJ1I/AAAAAAAAAJs/EUDP-0zDXCU/s320/y1p59qfGjKDzAkZ9ESDcGzlFu18qsmNMTyf5npslg51r0GNwv8Awh7CEgmHETWvjmYhyvcIh6RiM5A.jpeg" /&gt;&lt;/a&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/5828855760220275945-7636235570983031061?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7636235570983031061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/pirate-party-at-exploratorium.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7636235570983031061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7636235570983031061'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/pirate-party-at-exploratorium.html' title='Pirate Party at the Exploratorium'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aKONQq2A3U0/S7AbA0EF-uI/AAAAAAAAAJU/hVSUAI7fwzI/s72-c/y1p9v7C1KVCJ1DdMwseALkd0V-my5Nhp9FwvQcVz7CPR66sKNZokM2tiUstqvoldM9U2G5SkQRoD-g.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7881231762628905716</id><published>2007-05-08T14:27:00.000-07:00</published><updated>2010-03-28T20:11:30.813-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Random Thoughts'/><title type='text'>Futurama Quote</title><content type='html'>&lt;div&gt;This is so very true:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;Why would you wanna watch TV when you can watch a snail crawl for hours on end?&lt;/blockquote&gt;You gotta see an &lt;a href="http://www.applesnail.net/"&gt;Apple Snail &lt;/a&gt;in action. 'nuff said.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;PS: Yes, my hair is blue.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7881231762628905716?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7881231762628905716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/futurama-quote.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7881231762628905716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7881231762628905716'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/05/futurama-quote.html' title='Futurama Quote'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2001535479519367238</id><published>2007-04-22T17:06:00.000-07:00</published><updated>2010-03-28T20:11:16.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>Good day with the dog</title><content type='html'>&lt;div&gt;Not a terribly exciting day, but pretty relaxing.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I took Nika for a walk first thing (that's 10am), and we headed straight north to Fisherman's Wharf. Rather than diverting to the usual directions (either towards Pier 39 or Fort Mason) I just kept going through the parking lot. Little did I know there's a &lt;a href="http://www.maritime.org/pamphome.htm"&gt;submarine &lt;/a&gt;parked there open for tours every day, and a "&lt;a href="http://www.ssjeremiahobrien.org/"&gt;liberty ship&lt;/a&gt;" (assisted at the landing at Normandy in WWII). Huh... well then, there's something to do with Caspian when he's back.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The next pier over&amp;nbsp;from that is just a tiny little spur that's got a big bell on it (which used to be at the Embarcadero &lt;a href="http://www.ferrybuildingmarketplace.com/"&gt;Ferry Building&lt;/a&gt;), but no docking positions. It was completely empty except for Nika and I - the whole pier. A nice sit in the sun, watching the bay, all to ourselves. Nice.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Home again, after grabbing some pearl tea (for me) and some bloodworms (for the &lt;a href="http://www.applesnail.net/"&gt;mollusc&lt;/a&gt;).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I puttered around for a bit at home, then took Nika up to Michaelangelo playground for a walk. Also completely deserted, at 1pm on a Sunday. Really weird. Nika had a nice time just exploring at her own pace. I had a head-slapping moment vis-a-vis the &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!950.entry"&gt;Applesoft interpreter&lt;/a&gt;... apparently I've been using environments that don't support exceptions for a little too long. D'oh. Anyway, it's much happier now... lots of bug fixes,&amp;nbsp;support for arrays and string variables work completely now.&amp;nbsp;I even have it running a 1D cellular automata simulation. It's slower at that than a real (well, emulated-at-normal-speed) Apple II for some reason, though, which is somewhat disturbing. It's not churning memory, so I suspect it's just the expense of the&amp;nbsp;expression evaluation call depth.&amp;nbsp;WSH really can't talk to the Console APIs (without shims that no-one has written in 5 years) so I guess the next step is to bolt it onto a web page to do anything fancy.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(Future step: have it compile the Applesoft into JavaScript. Perhaps that'll be a goal for the next vacation.)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Did some shopping in the evening, and came home, ate dinner, watched TV with the dog. Then Futurama was on... but it was &lt;a href="http://www.google.com/search?q=futurama+%22with+the+dog%22"&gt;the one with the dog&lt;/a&gt;, so I had to turn it off.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2001535479519367238?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2001535479519367238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/04/good-day-with-dog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2001535479519367238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2001535479519367238'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/04/good-day-with-dog.html' title='Good day with the dog'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1242131401427881893</id><published>2007-04-21T16:37:00.000-07:00</published><updated>2010-03-28T21:35:49.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>Scared myself</title><content type='html'>&lt;div&gt;Su and C are out of town on a road trip with Grandpa, and I'm taking it easy. Slept in 'til 10:30 today. Yay! The weather was crappy so I stayed around the house, and got sucked into a project to the exclusion of all else.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Ages ago, someone asked about coding up the &lt;a href="http://traveller.wikia.com/wiki/Main_Page"&gt;Traveller &lt;/a&gt;trade rules (from &lt;a href="http://traveller.wikia.com/wiki/Merchant_Prince"&gt;Merchant Prince&lt;/a&gt;) into a simulation, which turned into a long debate about languages and platforms. Given the desire to make the result useful to everyone, I thought it was a no-brainer to do it in &lt;a href="http://javascript.crockford.com/"&gt;JavaScript &lt;/a&gt;with a web interface. I even went so far as to extract the source code of the &lt;a href="http://www.freelancetraveller.com/infocenter/swlist/appleprogs.html"&gt;canonical implementation - "TRADER" - from an Apple II disk image&lt;/a&gt; and take a peek at the code. Pretty damned elegant, actually.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So earlier this week I started translating from &lt;a href="http://www.apple2.org/faq/FAQ.applesoft.html"&gt;Applesoft BASIC &lt;/a&gt;to &lt;a href="http://javascript.crockford.com/"&gt;JavaScript&lt;/a&gt;. As I went, though, I kept changing directions - for example, did I want it to be a verbatim, mechanical&amp;nbsp;translation, or did I want to optimize things to take advantage of JavaScript's strengths?&amp;nbsp;Did I want&amp;nbsp;it to follow the procedural path of the original, or turn it into a modern object-oriented approach? And how should I attempt to integrate BASIC's notion of blocking input with a web page's modern eventing model?&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The more I wrote, the more I realized the resulting implementation would look nothing like the original, which had to contend with the joys of BASIC's limited flow control, data structures&amp;nbsp;and variable naming. Which really defeated the whole purpose of the project, since just reimplementing the &lt;em&gt;Merchant Prince&lt;/em&gt; rules from scratch would probably take a quarter of the time. The only advantage of doing a translation was to get it to be an exact simulation... which would invariably fail since the code was radically restructured and differences inadvertantly introduced.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Walking back from an after-work&amp;nbsp;party last night, I thought: Why don't I dive down a level deeper, and just write an &lt;a href="http://www.landsnail.com/a2ref.htm"&gt;Applesoft BASIC &lt;/a&gt;processor in JavaScript?&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And that's what became of Saturday, April 21st, 2007 in Josh's life - sitting at the computer, dog at my side, music on.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;At this point, it's running inside the Windows Scripting Host (command line JScript interpreter for Windows) and I've got the following fully functional:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Statements:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;CLEAR // Clear all variables&lt;br /&gt;&lt;/li&gt;&lt;li&gt;END // End program&lt;br /&gt;&lt;/li&gt;&lt;li&gt;FRE // Garbage collect&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GOTO // GOTO linenum &lt;br /&gt;&lt;/li&gt;&lt;li&gt;GOSUB // GOSUB linenum&lt;br /&gt;&lt;/li&gt;&lt;li&gt;RETURN // Return from a GOSUB&lt;br /&gt;&lt;/li&gt;&lt;li&gt;POP // Change last GOSUB into a GOTO&lt;br /&gt;&lt;/li&gt;&lt;li&gt;FOR // FOR i = m TO m STEP s&lt;br /&gt;&lt;/li&gt;&lt;li&gt;NEXT // NEXT [i]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;LET // Assign a variable, LET x = expr&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PRINT // Output to the screen&lt;br /&gt;&lt;/li&gt;&lt;li&gt;INPUT // Read input from keyboard&lt;br /&gt;&lt;/li&gt;&lt;li&gt;IF // IF expr (THEN|GOTO) linenum|statement [statement ... ]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;REM // Comment&lt;br /&gt;&lt;/li&gt;&lt;li&gt;NOTRACE // Turn off line tracing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TRACE // Turn on line tracing&lt;/li&gt;&lt;/ul&gt;Expressions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Binary boolean operators: OR, AND&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Relational operators: '&amp;lt;', '&amp;gt;', '=', '&amp;lt;=' /'=&amp;lt;', '&amp;gt;='/'=&amp;gt;', '&amp;lt;&amp;gt;'/'&amp;gt;&amp;lt;'&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Additive operators: '+', '-' &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Multiplicative operators: '*', '/' &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Power operators: '^' &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unary operators: '+', '-', NOT &lt;/li&gt;&lt;/ul&gt;Functions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ABS // Absolute value &lt;br /&gt;&lt;/li&gt;&lt;li&gt;ASC // ASCII code of a character &lt;br /&gt;&lt;/li&gt;&lt;li&gt;ATN // Arctangent&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CHR$ // Character, given an ASCII code&lt;br /&gt;&lt;/li&gt;&lt;li&gt;COS // Cosine&lt;br /&gt;&lt;/li&gt;&lt;li&gt;EXP // Raise e to the specified power&lt;br /&gt;&lt;/li&gt;&lt;li&gt;INT // Integer portion of the value&lt;br /&gt;&lt;/li&gt;&lt;li&gt;LEFT$ // Left end of a string&lt;br /&gt;&lt;/li&gt;&lt;li&gt;LEN // Length substring&lt;br /&gt;&lt;/li&gt;&lt;li&gt;LOG // Natural log &lt;br /&gt;&lt;/li&gt;&lt;li&gt;MID$ // Arbitrary substring&lt;br /&gt;&lt;/li&gt;&lt;li&gt;RIGHT$ // Right substring&lt;br /&gt;&lt;/li&gt;&lt;li&gt;RND // Pseudorandom number&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SGN // Sign (-1, 0, 1)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SIN // Sine&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SQR // Square root&lt;br /&gt;&lt;/li&gt;&lt;li&gt;STR$ // Convert number to string&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TAN // Tangent&lt;br /&gt;&lt;/li&gt;&lt;li&gt;VAL // Convert string to number&lt;/li&gt;&lt;/ul&gt;What's NOT supported so far:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I haven't thoroughly exercised string variables and expressions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ON expr GOTO ... is not yet implemented&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Arrays (and DIM) are not yet implemented&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DATA/READ/RESTORE are not yet implemented&lt;br /&gt;&lt;/li&gt;&lt;li&gt;User defined functions (DEF FN) are not yet implemented)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ONERR/RESUME are not yet implemented... and probably won't be, since this was buggy on the Apple II&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HOME, HTAB, VTAB, GET, TAB, POS() are tricky as console APIs are&amp;nbsp;not supported (easily?) by WSH&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PRINT CHR$(4) hooks and DOS emulation for loading files.&lt;/li&gt;&lt;/ul&gt;Also, the following will probably never be supported:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TEXT, COLOR=, DRAW, FLASH, GR, HLIN, HPLOT, HCOLOR=, HGR, HGR2, INVERSE, NORMAL, PLOT, ROT=, SCALE=, SCRN(), VLIN, XDRAW - I'm not touching different display modes!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CONT, DEL, LIST, NEW, RUN, SPEED= - primarily immediate mode, not interesting for 99.99% of programs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CALL, HIMEM:, IN#, LOMEM:, PDL(), PEEK(), POKE, PR#, USR(), WAIT - interact with the native memory space of the Apple II/6502. Not happening.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;LOAD, RECALL, SAVE, SHLOAD, STORE - cassette tape I/O. Yeah, I'm all over that.&lt;/li&gt;&lt;/ul&gt;Although honestly, if I can figure out console I/O, doing INVERSE, HTAB/VTAB, and PDL() would be fun - PONG!&lt;br /&gt;&lt;br /&gt;The next big step, really, is to get it working in a web page. This is fairly straightforward:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I already have a basic TTY emulator. Not glass, paper. Write-only display. Line-oriented programs. Not sexy but it works. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;The program is an array of statements, with the execution context an index into that. There is an explicit stack for statements (but not for functions). Each statement, in turn, is a &amp;nbsp;pointer into that. Each statement, in turn, is an array of tokens. To handle making INPUT blocking, I can push a stack object (like a GOSUB) that points to the middle of the INPUT statement, and then basically "yield" out of the program. Restoring should be as simple a RETURNing from a gosub.&lt;/li&gt;&lt;/ul&gt;Before I had the interpreter up and running, the routines that used the TTY would basically operate as chains of closures, passing in "after the user inputs something input, here's the point in this closure to rehydrate". This should be even simpler, and it was this realization that made me really want to pursue this.&lt;br /&gt;&lt;br /&gt;So how did I scare myself?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, as I've been coding up the interpreter I've also been writing a test program in Applesoft that I run to test features as they come online or as I refactor and &lt;a href="http://www.jslint.com/"&gt;clean up&lt;/a&gt; the code - I have code which spits out the Fibbonacci sequence, a "guess my number" game and a "guess your number" game, various output demos, and so on. Well, I decided to see if the code-to-character function (CHR$) was working. So I plunked in this code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote dir="ltr"&gt;10 PRINT CHR$(7) : END&lt;/blockquote&gt;And ran it. It gave a syntax error - it didn't think CHR$ was a valid variable name, let alone a special function. Oops. After a few minutes of puttering around in the code, I realized that the regular expression matching reserved words didn't have $ escaped. But I was curious as to why CHR$ wasn't a valid variable, and it took several more minutes to figure that out (another regular expression glitch). So I&amp;nbsp;escaped it, and ran it again.&lt;br /&gt;&lt;br /&gt;To understand what happened next, there are some key points above:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I've been home alone for a week&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I've been staring at the computer all day&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I have the music cranked on my computer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ASCII code point 7 is the "BELL" character&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Between the time I wrote the test code and the time it ran successfully, almost 10 minutes had passed.&lt;/li&gt;&lt;/ul&gt;My computer emitted a very long, very sharp, high pitched "beep!" and I nearly jumped out of my skin.&lt;br /&gt;But it worked!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1242131401427881893?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1242131401427881893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/04/scared-myself.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1242131401427881893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1242131401427881893'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/04/scared-myself.html' title='Scared myself'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3935706961605223636</id><published>2007-03-21T04:38:00.000-07:00</published><updated>2010-03-28T20:09:47.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Recent Caspian News</title><content type='html'>&lt;ul&gt;&lt;li&gt;Caspian has a persistent imaginary friend - "Robot Bunny". Robot Bunny came about a few months ago, and has gone on walks with us (often needs to be carried), is featured in drawings, and in comparisons to the Ostara Bunny. He wrote a letter to Ariel (the Little Mermaid, upon whose lap he sat and chatted with at Disneyland) telling her about Robot Bunny. Last night, when asked "who moved that (something)?" he said that maybe Robot Bunny had done it. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;He long ago figured out how to turn the white noise generator ("soothing rainstorm") doodad we have in his room to its radio setting, and we'd often wake up at 7:00am to the scratchy sounds of whatever band he'd tuned to. We just got Caspian a pair of speakers and Susan's keeping the MP3 player in his room so he can listen to more appropriate music. He woke up at 6:00am yesterday... fortunately he kept it pretty quiet after one... suggestion. He now also wants music on more frequently.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Caspian is drawing a lot. He drew a picture of a spaceship (attached). That's Caspian in the bottom with flames coming out the bottom of the rocket. It has three floors (the yellow things) and light bulbs on top (the round things). He can climb&amp;nbsp;a ladder to change the light bulbs if they burn out.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AZ5dTjvbI/AAAAAAAAAI8/uaEhsQ2dEK0/s1600/y1pN0tPiXnTdVNcWjVwi6d_cmSocaJiRl1PPu2TljUsSnVWewUUyXeFoC2TXTy6Ad4QdBArOHvI41k.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AZ5dTjvbI/AAAAAAAAAI8/uaEhsQ2dEK0/s320/y1pN0tPiXnTdVNcWjVwi6d_cmSocaJiRl1PPu2TljUsSnVWewUUyXeFoC2TXTy6Ad4QdBArOHvI41k.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Susan related a good story inspired by a poster for the film 300. As she puts it:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote dir="ltr"&gt;&lt;i&gt;Caspian and I got started talking about war and fighting.&amp;nbsp; We talked about how people used to fight a lot more all over the world, and how we are lucky to live in such a safe place.&amp;nbsp; I mentioned that sometimes, people fight to defend themselves from people who are trying to hurt them.&amp;nbsp; I then brought up Iraq, civilian casualties, and rebellions, and Caspian naturally related everything to Star Wars.&amp;nbsp; I told him that our soldiers are good guys, but are told to do bad things, but think that they are doing good things.&amp;nbsp;&amp;nbsp; So Caspian said that our soldiers were like Stormtroopers, he said that the Stormtroopers probably thought that they were doing the right thing also.&amp;nbsp; Deep.&lt;/i&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li dir="ltr"&gt;Caspian is finally able to role play with his action figures without lots of prompting. I found him having a Luke/Wedge conversation about X-Wings the other day.&lt;/li&gt;&lt;/ul&gt;And only tangentially Caspian-related:&lt;br /&gt;&lt;br /&gt;The latest Star Wars lightsaber toys are really cool! When I was a kid, this was as cool as they got:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inflatable sabers - &lt;a href="http://theswca.com/index.php?action=disp_item&amp;amp;item_id=25054"&gt;the toy&lt;/a&gt;, &lt;a href="http://theswca.com/index.php?action=disp_item&amp;amp;item_id=51101"&gt;store display&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://theswca.com/index.php?action=disp_item&amp;amp;item_id=41872"&gt;Telescoping sabers &lt;/a&gt;(Droids was the final vintage toy line)&amp;nbsp;- I never saw these!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They also had (unofficial) solid plastic sabers that made a "whoosh" sound thanks to some sort of resonator in the handle&lt;/li&gt;&lt;/ul&gt;With the new movies, they've gone through several iterations - &lt;a href="http://www.hasbro.com/default.cfm?page=ps_results&amp;amp;product_id=15910"&gt;light up/telescoping/electronic&lt;/a&gt;, &lt;a href="http://www.hasbro.com/default.cfm?page=ps_results&amp;amp;product_id=15902"&gt;cheap ones&lt;/a&gt;, &lt;a href="http://www.hasbro.com/default.cfm?page=ps_results&amp;amp;product_id=15907"&gt;flashing ones&lt;/a&gt;... but they were all either cheap or didn't retract the blade fully. The &lt;a href="http://www.hasbro.com/default.cfm?page=ps_results&amp;amp;product_id=17820"&gt;newest ones &lt;/a&gt;("force action") retract the blade fully and even have a spring-loaded ejector so you just press the switch and the blade springs out. Very cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-3935706961605223636?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3935706961605223636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/03/recent-caspian-news.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3935706961605223636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3935706961605223636'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/03/recent-caspian-news.html' title='Recent Caspian News'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aKONQq2A3U0/S7AZ5dTjvbI/AAAAAAAAAI8/uaEhsQ2dEK0/s72-c/y1pN0tPiXnTdVNcWjVwi6d_cmSocaJiRl1PPu2TljUsSnVWewUUyXeFoC2TXTy6Ad4QdBArOHvI41k.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6980566287874520265</id><published>2007-02-12T12:43:00.000-08:00</published><updated>2010-03-28T21:36:03.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whuffie'/><category scheme='http://www.blogger.com/atom/ns#' term='disneyland'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>The ducks, you see...</title><content type='html'>&lt;div&gt;We went to Disneyland for three days last weekend. Despite all being sick, and despite them (once again) making Space Mountain suck so hard a 4-year-old-was-disappointed (Caspian enjoyed it last year with the star effect; this year with the rock lighting he though it was lame), we had fun.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;There are lots of good tales to share from this year. For example, on the &lt;a href="http://www.mouseplanet.com/articles.php?art=mt070209dk"&gt;last day (ever?) for Tom Sawyer Island&lt;/a&gt;, he spent 40 minutes in the tree-house, hanging out and making friends. (Su was sick down by the millhouse. I was at the base of the tree-house relaxing in the shade.) Last year I obsessed a bit over the sheer age of some of the rides - Su and I like to look at how worn the wood handrails are on some of the classic rides, after decades of hands rubbing the softer wood away. This year I confess I had a bit of a "how did that &lt;a href="https://www.stagenine.com/cms/component/page,shop.product_details/flypage,shop.flypage/product_id,46/category_id,8/manufacturer_id,0/option,com_virtuemart/Itemid,1/"&gt;fit that &lt;/a&gt;in here?" fetish going on about the Pirates of the Caribbean (which was closed last year!). It's just huge! &lt;/div&gt;&lt;br /&gt;&lt;div&gt;(Tangent: IMHO, adding a touch of Depp doesn't suck, but it does stick out. Also IMHO, they could update the look of the rest of the pirates without compromising the feel of the ride. Su and I spent an hour or so going over the rides one by one and most could survive careful updates, as they've done with many rides over time including Haunted Mansion and as they're planning for TSI. It just needs to be done with an understanding of what is cool because it's classic and cheezy!)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;One of the potential highlights of any trip to Disneyland is getting an actually humorous guide on the &lt;a href="http://en.wikipedia.org/wiki/Jungle_Cruise"&gt;Jungle Cruise&lt;/a&gt;. No luck this year - our guides were by-the-book. So I'll share a snippet from last year's Jungle Cruise guide, during a dramatic turn of the boat:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Star Tours? What are you doing here?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;This is a combat zone! It's restricted!&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Ease off on your main thruster!&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;The ducks, you see... represent TIE Fighters.&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;That guy earned his &lt;a href="http://en.wikipedia.org/wiki/Whuffie"&gt;whuffie&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6980566287874520265?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6980566287874520265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/02/ducks-you-see.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6980566287874520265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6980566287874520265'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/02/ducks-you-see.html' title='The ducks, you see...'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6572010827420548283</id><published>2007-01-29T07:42:00.000-08:00</published><updated>2010-03-28T21:36:08.247-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><title type='text'>Typeface Pr0n</title><content type='html'>&lt;div&gt;As seen on the way to work - a lovely example of the typeface &lt;a href="http://en.wikipedia.org/wiki/Optima"&gt;Optima&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AZOmH3xUI/AAAAAAAAAI0/e0lwXMwk5_M/s1600/y1pKmzck5eiV0c6JDXHFfedxkLRPA0mf6lBHzbUPAOGlL5cjnz5s6hRYZE99DI2ifTPAtJ3Tv0wnd8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AZOmH3xUI/AAAAAAAAAI0/e0lwXMwk5_M/s320/y1pKmzck5eiV0c6JDXHFfedxkLRPA0mf6lBHzbUPAOGlL5cjnz5s6hRYZE99DI2ifTPAtJ3Tv0wnd8.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;(This is the title typeface used in the classic edition of the SF RPG &lt;strong&gt;&lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/Traveller_(rpg)"&gt;Traveller&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;. The body typeface was &lt;a href="http://en.wikipedia.org/wiki/Univers"&gt;Univers&lt;/a&gt;.)&lt;br /&gt;&lt;br /&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/5828855760220275945-6572010827420548283?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6572010827420548283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/typeface-pr0n.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6572010827420548283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6572010827420548283'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/typeface-pr0n.html' title='Typeface Pr0n'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aKONQq2A3U0/S7AZOmH3xUI/AAAAAAAAAI0/e0lwXMwk5_M/s72-c/y1pKmzck5eiV0c6JDXHFfedxkLRPA0mf6lBHzbUPAOGlL5cjnz5s6hRYZE99DI2ifTPAtJ3Tv0wnd8.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2775224088853638386</id><published>2007-01-28T05:24:00.000-08:00</published><updated>2010-03-28T20:06:12.281-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='For Posterity'/><title type='text'>Saturday Night</title><content type='html'>&lt;div&gt;Caspian stayed with S &amp;amp; A last night, so Susan, Annette and I hit the town. Short summary for posterity:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Catch a free limo ride to Union &amp;amp; Fillmore &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Several rounds of drinks at &lt;a href="http://www.plumpjack.com/pjmatrix/index.html"&gt;MATRIXFILLMORE&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;More drinking and some calamari at &lt;a href="http://www.betelnutrestaurant.com/"&gt;Betelnut&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I dimly recall a bus ride back to Union &amp;amp; Grant &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Drinks until last call at a bar on Grant - maybe &lt;a href="http://savoy-tivoli.netfirms.com/welcome.html"&gt;Savoy-Tivoli &lt;/a&gt;? &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Walking home, a half block from our house we find that the folks renovating the former Buca Giovani are having a party... the basement is now a very bumping club.&amp;nbsp;Annette convinces the doorman to waive the cover. Free drinks and dancing.&lt;/li&gt;&lt;/ul&gt;(Hangover&amp;nbsp;+ headcold = !fun)&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2775224088853638386?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2775224088853638386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/saturday-night.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2775224088853638386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2775224088853638386'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/saturday-night.html' title='Saturday Night'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3286524341152991585</id><published>2007-01-21T05:23:00.000-08:00</published><updated>2010-03-28T20:05:54.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Singularity Thoughts'/><title type='text'>Singularity Isn't Sexy?</title><content type='html'>&lt;div&gt;Via &lt;a href="http://en.wikipedia.org/wiki/Bruce_sterling"&gt;Sterling's Beyond the Beyond&lt;/a&gt;:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.10zenmonkeys.com/2007/01/19/joe-quirk-author-singularity-sociobiology-sex/"&gt;Why Chicks Don't Dig The Singularity&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I admit, Susan mostly rolls her eyes at me.&lt;/div&gt;&lt;br /&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/5828855760220275945-3286524341152991585?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3286524341152991585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/singularity-isn-sexy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3286524341152991585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3286524341152991585'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/singularity-isn-sexy.html' title='Singularity Isn&amp;#39;t Sexy?'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4620788419164630365</id><published>2007-01-21T05:20:00.000-08:00</published><updated>2010-03-28T21:29:37.621-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers and Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>Apple II Raycasting Demo</title><content type='html'>&lt;div&gt;See on the USENET:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://groups.google.com/group/comp.sys.apple2/browse_frm/thread/1e8a4cb0e695a3d8/21c7622215a37780?hl=en#21c7622215a37780"&gt;http://groups.google.com/group/comp.sys.apple2/browse_frm/thread/1e8a4cb0e695a3d8/21c7622215a37780?hl=en#21c7622215a37780&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;David Schmenk has written a raycasting demo - think Wolfenstein 3D - done on the Apple II using low-rez graphics. Seems to run at over 20Hz. Works great in an emulator. Awesomeness!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Rich, a frequent contributor to the comp.sys.apple2 newsgroups, has already written a level and texture editor: &lt;a href="http://rich12345.tripod.com/loresthreed/index.html"&gt;http://rich12345.tripod.com/loresthreed/index.html&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AZAI9eWmI/AAAAAAAAAIs/e5CT2N-ftFY/s1600/y1posVrigWA1U48AxeWykl_swKcXvPAY_soGaK9_Vx9rWExe273B-LwjCuXyFUrT4xYXsf_p86VgJo.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AZAI9eWmI/AAAAAAAAAIs/e5CT2N-ftFY/s320/y1posVrigWA1U48AxeWykl_swKcXvPAY_soGaK9_Vx9rWExe273B-LwjCuXyFUrT4xYXsf_p86VgJo.jpeg" /&gt;&lt;/a&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/5828855760220275945-4620788419164630365?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4620788419164630365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/apple-ii-raycasting-demo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4620788419164630365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4620788419164630365'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/apple-ii-raycasting-demo.html' title='Apple II Raycasting Demo'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aKONQq2A3U0/S7AZAI9eWmI/AAAAAAAAAIs/e5CT2N-ftFY/s72-c/y1posVrigWA1U48AxeWykl_swKcXvPAY_soGaK9_Vx9rWExe273B-LwjCuXyFUrT4xYXsf_p86VgJo.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-9184698640313517287</id><published>2007-01-20T13:06:00.000-08:00</published><updated>2010-03-28T20:04:30.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>Art Deco Walk To Work</title><content type='html'>&lt;div&gt;In the vein of a Jeopardy "Before and After" category, I took photos of the &lt;a href="http://inexorabletash.spaces.live.com/?_c11_PhotoAlbum_spaHandler=TWljcm9zb2Z0LlNwYWNlcy5XZWIuUGFydHMuUGhvdG9BbGJ1bS5GdWxsTW9kZUNvbnRyb2xsZXI$&amp;amp;_c11_PhotoAlbum_spaFolderID=cns!3FC59671BAEE20E9!502&amp;amp;_c11_PhotoAlbum_startingImageIndex=0&amp;amp;_c11_PhotoAlbum_commentsExpand=0&amp;amp;_c11_PhotoAlbum_addCommentExpand=0&amp;amp;_c11_PhotoAlbum_addCommentFocus=0&amp;amp;_c=PhotoAlbum"&gt;Art Deco buildings &lt;/a&gt;I pass on my way to work if I take the Columbus/Broadway/Sansome route.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The Bank of America building is pretty darned cool. Not only does it have the imposing figures, but it's got that humongous burgular alarm.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If I come home via Sansome/North Point (a block out of my way now that the Francisco stairs are open again) I pass by the cinder block "North Point Water Treatment Facility" which has touches of Art Deco goodness, indicating that someone has taste even on a municipal budget. I'll take photos of that some time soon.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AYF9UjZKI/AAAAAAAAAHc/kF3r9bCwzf4/s1600/y1pEY4yTuWKOSnSYipbiBI6JK-MnY1bdg1YaqBqrcQB62VXDEd2nIJDrdTOPGoR0fjuIZNYmMTOsK8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AYF9UjZKI/AAAAAAAAAHc/kF3r9bCwzf4/s320/y1pEY4yTuWKOSnSYipbiBI6JK-MnY1bdg1YaqBqrcQB62VXDEd2nIJDrdTOPGoR0fjuIZNYmMTOsK8.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AYN4hmwsI/AAAAAAAAAIc/RpjJ8xHXC3o/s1600/y1pqZw5hhrPcThcIw2_N0Mn60bZDdtQVXcXGa9V6KToTq43qCiDiFnYtNHQE9WJ3uTnVFtnKij117g.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AYN4hmwsI/AAAAAAAAAIc/RpjJ8xHXC3o/s320/y1pqZw5hhrPcThcIw2_N0Mn60bZDdtQVXcXGa9V6KToTq43qCiDiFnYtNHQE9WJ3uTnVFtnKij117g.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AYEcne6xI/AAAAAAAAAHU/HNLpeMoysnQ/s1600/y1pAzoRRf8Q9ulMmIm-Lp0gNDejzl_YahiKo0-RMfbXHPkjlXfIhGevL1gyg08e7cKGqb4LFj79qeA.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AYEcne6xI/AAAAAAAAAHU/HNLpeMoysnQ/s320/y1pAzoRRf8Q9ulMmIm-Lp0gNDejzl_YahiKo0-RMfbXHPkjlXfIhGevL1gyg08e7cKGqb4LFj79qeA.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AYIo3E4cI/AAAAAAAAAH0/iVTmGZTBCms/s1600/y1phvR6uxxcsY3g76Y2H8YKv6T0fVdAAymWR4blfZh7Xavb0m1mAKAomnaGq7P_by8XMKemYr6vdnY.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AYIo3E4cI/AAAAAAAAAH0/iVTmGZTBCms/s320/y1phvR6uxxcsY3g76Y2H8YKv6T0fVdAAymWR4blfZh7Xavb0m1mAKAomnaGq7P_by8XMKemYr6vdnY.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYH0kROjI/AAAAAAAAAHs/rkK454urkIE/s1600/y1phf3R52aMzES6PM6K76Utn5ewY6McVjNZ78xvrlson5MEw0yy1QR7J_T8tUxJlPQvSNUi9wZIh_g.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYH0kROjI/AAAAAAAAAHs/rkK454urkIE/s320/y1phf3R52aMzES6PM6K76Utn5ewY6McVjNZ78xvrlson5MEw0yy1QR7J_T8tUxJlPQvSNUi9wZIh_g.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AYDCidMVI/AAAAAAAAAHE/ylD3YCD5wUA/s1600/y1p7gPTPAHm_zkfT4C4NLJAEsWZU1AbP1gb8D_hID3ge0LTY7WnqHjb6vySVGu8--0pZl-KBV695y8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AYDCidMVI/AAAAAAAAAHE/ylD3YCD5wUA/s320/y1p7gPTPAHm_zkfT4C4NLJAEsWZU1AbP1gb8D_hID3ge0LTY7WnqHjb6vySVGu8--0pZl-KBV695y8.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AYKWy1qNI/AAAAAAAAAIE/iF-okxVTOO0/s1600/y1pjMuzwhQrjkycaeCOTp7PbzTEkj_aZAV1iqkTnkMPkdmUTKCF9k0GJAgJDMt-R8aCGoElEGD8EoU.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AYKWy1qNI/AAAAAAAAAIE/iF-okxVTOO0/s320/y1pjMuzwhQrjkycaeCOTp7PbzTEkj_aZAV1iqkTnkMPkdmUTKCF9k0GJAgJDMt-R8aCGoElEGD8EoU.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AYPBuv92I/AAAAAAAAAIk/nQQ6fwbeONI/s1600/y1pySEfJHL0TgIlvhtJ42M7g3VdThD9h0hzThwLs3m2TGl7SJPd7tqJJqyzku3RUC_ZhPWOGSApLQw.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AYPBuv92I/AAAAAAAAAIk/nQQ6fwbeONI/s320/y1pySEfJHL0TgIlvhtJ42M7g3VdThD9h0hzThwLs3m2TGl7SJPd7tqJJqyzku3RUC_ZhPWOGSApLQw.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AYHM1POdI/AAAAAAAAAHk/kdD_zXWt_Kw/s1600/y1phD9nl5ojvrLN3m1xtIXdOe6n9mH5LmBxBc5OA4WrIbsOwy3hTAl7cyS2Blji5rQ1jMjXquxEBMY.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AYHM1POdI/AAAAAAAAAHk/kdD_zXWt_Kw/s320/y1phD9nl5ojvrLN3m1xtIXdOe6n9mH5LmBxBc5OA4WrIbsOwy3hTAl7cyS2Blji5rQ1jMjXquxEBMY.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AYDk5nZqI/AAAAAAAAAHM/qs2v9hlbq5g/s1600/y1p93HgzEpYBm59Fg0wrOsvf7IkimPkHXA5sEorvNcb0JCOolXlRve2CQ5FbtavKzZFwBELc_EHKNc.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AYDk5nZqI/AAAAAAAAAHM/qs2v9hlbq5g/s320/y1p93HgzEpYBm59Fg0wrOsvf7IkimPkHXA5sEorvNcb0JCOolXlRve2CQ5FbtavKzZFwBELc_EHKNc.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYJpa-MlI/AAAAAAAAAH8/uC5tiIxCrE8/s1600/y1pIK_fTZO762BlTAluzGVMpNig8Wv59d4hieUmPDkCZpHkifeOoeCQGPSfTAVEuU0pZrqjB1uIMAE.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYJpa-MlI/AAAAAAAAAH8/uC5tiIxCrE8/s320/y1pIK_fTZO762BlTAluzGVMpNig8Wv59d4hieUmPDkCZpHkifeOoeCQGPSfTAVEuU0pZrqjB1uIMAE.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYM3F1iQI/AAAAAAAAAIU/Ey5_r0bpvyk/s1600/y1pPw4MdQPOdGjBfJoowrUa9s3fONy78uFLBes86jRGRhuJh9GA9XB4KhylSUdCwXsOq2CVH8z4wvw.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYM3F1iQI/AAAAAAAAAIU/Ey5_r0bpvyk/s320/y1pPw4MdQPOdGjBfJoowrUa9s3fONy78uFLBes86jRGRhuJh9GA9XB4KhylSUdCwXsOq2CVH8z4wvw.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYLaA7AXI/AAAAAAAAAIM/R0to45ACcnI/s1600/y1plfN2xXA2_8RZKxCqNwlCd5o3GUXv_iiArQwtL-5RBUu1eYJzc_B3s0wIvEkENfVH97A9yeldNOQ.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AYLaA7AXI/AAAAAAAAAIM/R0to45ACcnI/s320/y1plfN2xXA2_8RZKxCqNwlCd5o3GUXv_iiArQwtL-5RBUu1eYJzc_B3s0wIvEkENfVH97A9yeldNOQ.jpeg" /&gt;&lt;/a&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/5828855760220275945-9184698640313517287?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/9184698640313517287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/art-deco-walk-to-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/9184698640313517287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/9184698640313517287'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/art-deco-walk-to-work.html' title='Art Deco Walk To Work'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aKONQq2A3U0/S7AYF9UjZKI/AAAAAAAAAHc/kF3r9bCwzf4/s72-c/y1pEY4yTuWKOSnSYipbiBI6JK-MnY1bdg1YaqBqrcQB62VXDEd2nIJDrdTOPGoR0fjuIZNYmMTOsK8.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7371975959864108390</id><published>2007-01-03T01:15:00.000-08:00</published><updated>2010-03-28T21:36:15.192-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>Windows Mobile "Soft Key" buttons</title><content type='html'>&lt;div&gt;Perhaps this is obvious, but...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you want to capture the Left/Right "Soft Key" buttons in a .NET application, add a handler to the KeyDown event of the Form, make sure there's no Menu, and look for F1/F2.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The gotcha that I ran into was looking for the KeyDown events&amp;nbsp;on the (only) child control of the Form.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;For example, for a fullscreen app:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;this.KeyDown += new System.Windows.Forms.KeyEventHandler( this.MyForm_KeyDown );&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; this.Menu = null;&lt;br /&gt;this.WindowState = FormWindowState.Maximized;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;private void MyForm_KeyDown( object sender, KeyEventArgs e )&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; {&lt;br /&gt;&amp;nbsp;switch( e.KeyCode )&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;case Keys.F1:&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Soft Key 1, when there's no Menu&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;case Keys.F2:&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Soft Key 2, when there's no Menu&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7371975959864108390?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7371975959864108390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/windows-mobile-key-buttons.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7371975959864108390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7371975959864108390'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2007/01/windows-mobile-key-buttons.html' title='Windows Mobile &amp;quot;Soft Key&amp;quot; buttons'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-5765722905778141378</id><published>2006-12-26T02:34:00.000-08:00</published><updated>2010-03-28T21:36:26.525-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='apple2'/><title type='text'>Retrocomputing - Mechwarrior for the Apple II</title><content type='html'>&lt;div&gt;Another project that sat dormant for a while - almost 20 years in this case.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AW0L2WI-I/AAAAAAAAAGs/Bqzh2UbnEvQ/s1600/y1pQKh5iDvw0f7zg7aDMNssCOyGMafy1mQUd8EbLsgEf1dhpcwYTD-UCK-TsrAmXKOGlnAv8sY2q-w.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AW0L2WI-I/AAAAAAAAAGs/Bqzh2UbnEvQ/s320/y1pQKh5iDvw0f7zg7aDMNssCOyGMafy1mQUd8EbLsgEf1dhpcwYTD-UCK-TsrAmXKOGlnAv8sY2q-w.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the basic core of an Apple II game based on &lt;a href="http://en.wikipedia.org/wiki/MechWarrior"&gt;Mechwarrior&lt;/a&gt; (giant fighting robot suits). It was probably inspired, more than anything, by the &lt;a href="http://www.mobygames.com/game/dos/mechwarrior/cover-art/gameCoverId,114/"&gt;box art for a PC version of this game&lt;/a&gt;. I'm rather proud of the sprites!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AWt3DMEzI/AAAAAAAAAGk/xraNuQsr4hM/s1600/y1pxNIafH4xHXpvJwVe9_QXr8LUMM5RqWPBxmcPKErjbnhYa5xFZ6f6NDNbVMy5zHDDRl47ZcdRHvE.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AWt3DMEzI/AAAAAAAAAGk/xraNuQsr4hM/s320/y1pxNIafH4xHXpvJwVe9_QXr8LUMM5RqWPBxmcPKErjbnhYa5xFZ6f6NDNbVMy5zHDDRl47ZcdRHvE.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;I started when I&amp;nbsp;was a teenager and got the basic image blitting and background rendering working and&amp;nbsp;drew up lots of lovely sprites.&amp;nbsp;But the whole thing was tied together with Applesoft BASIC code and was dog slow (like 0.1Hz). When I first (re)&lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!853.entry"&gt;moved to San Francisco &lt;/a&gt;I spent some time rewriting the core of it in C using &lt;a href="http://www.cc65.org/"&gt;CC65&lt;/a&gt;&amp;nbsp;and making the blt engine a lot more flexible and speeding it up too.&amp;nbsp;It's still pretty slow (2Hz or so) but there are plenty of optimizations that can be made: all sprites are 10 bytes wide, for example, and sprites are cached in aux memory which means a double copy when rendering.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AW5fSk04I/AAAAAAAAAG8/L4focXlx0-o/s1600/y1pi1VUKiH4Hkxv42ncfLxCybp0Rb9Vi3Erery3mrkpxazC6Cio07vMVdR5AiTxedGLc94iobV9DGs.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AW5fSk04I/AAAAAAAAAG8/L4focXlx0-o/s320/y1pi1VUKiH4Hkxv42ncfLxCybp0Rb9Vi3Erery3mrkpxazC6Cio07vMVdR5AiTxedGLc94iobV9DGs.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;This is way, way down on the priority list to finish.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AW4KwwqXI/AAAAAAAAAG0/-AUvJs3GZGM/s1600/y1pFMcOkMHNTqTPABorKCBE94tX_MUpuU8a3dvaLxLhjFtNbkblKlXXUDtKUu4Hqm7oJjeBnha0ji4.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AW4KwwqXI/AAAAAAAAAG0/-AUvJs3GZGM/s320/y1pFMcOkMHNTqTPABorKCBE94tX_MUpuU8a3dvaLxLhjFtNbkblKlXXUDtKUu4Hqm7oJjeBnha0ji4.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(Correlate this with the "&lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!896.entry"&gt;Halo Mobile&lt;/a&gt;" post from a few days ago and you'll see I'm into first-person visualization of sprites against a rolling landscape... and never finish these darned things!)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-5765722905778141378?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/5765722905778141378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/retrocomputing-mechwarrior-for-apple-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5765722905778141378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5765722905778141378'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/retrocomputing-mechwarrior-for-apple-ii.html' title='Retrocomputing - Mechwarrior for the Apple II'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aKONQq2A3U0/S7AW0L2WI-I/AAAAAAAAAGs/Bqzh2UbnEvQ/s72-c/y1pQKh5iDvw0f7zg7aDMNssCOyGMafy1mQUd8EbLsgEf1dhpcwYTD-UCK-TsrAmXKOGlnAv8sY2q-w.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-5459678055772322109</id><published>2006-12-25T03:48:00.000-08:00</published><updated>2010-03-28T19:55:30.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>PCX Plugin Updated</title><content type='html'>&lt;div&gt;As mentioned &lt;a href="http://inexorabletash.spaces.live.com/blog/cns!3FC59671BAEE20E9!891.entry"&gt;here&lt;/a&gt; I created a PCX file type plugin for Paint.NET&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In response to a request from a user who needed to preserve the palette during load/save cycles (some downstream process required that the palette remain fixed) I updated the code and save dialog with&amp;nbsp;a new checkbox: &lt;em&gt;Use original palette&lt;/em&gt;. If checked, and if the document was originally loaded as a PCX (or as a PCX and saved as a PDN file, I think) then it will re-save using the original palette.&lt;/div&gt;&lt;br /&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/5828855760220275945-5459678055772322109?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/5459678055772322109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/pcx-plugin-updated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5459678055772322109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5459678055772322109'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/pcx-plugin-updated.html' title='PCX Plugin Updated'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6465299409772386697</id><published>2006-12-24T15:40:00.000-08:00</published><updated>2010-03-28T19:55:17.210-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>Physics Simulation</title><content type='html'>&lt;div&gt;So one of my hobby projects that I've been putting an average of about two hours a month into for the past 5 years is a Pocket PC first person shooter that grew out of a voxel terrain demo I put together in Java about 10 years ago. When 2002 rolled around I had been playing &lt;a href="http://www.bungie.net/Games/Halo/"&gt;Halo &lt;/a&gt;(on an Xbox at work) and fell in love with the visual design. So morphed the terrain demo - very slowly - into a "Pocket Halo" (later renamed "Halo Mobile"). &lt;/div&gt;&lt;br /&gt;&lt;div&gt;(It's something I'll never finish, since it borrows all of the media from the game, soundtrack CD,&amp;nbsp;and other fan projects (e.g. &lt;a href="http://www.nextforcesw.com/marathon/halathon.shtml"&gt;Halathon&lt;/a&gt;) and I'm sure Microsoft/Bungie wouldn't be huge fans of it. When I was working at Microsoft I showed it off to a few people, but I didn't give out copies. Please don't ask.)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Doing it on a Pocket PC (~300MHz ARM processor, ~32MB memory, 240x320 screen, no hardware 3D, no floating point unit) gives it a bit of a retrocomputing aspect as well. (To be fair, it also compiles for Win32 so I can develop on the desktop and create mobile builds every so often). More than anything, it's an excuse to prototype parts of an FPS game. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Thus far, the technologies have been:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Voxel terrain rendering&lt;/li&gt;&lt;li&gt;Game loop and event handling code (based on &lt;a href="http://www.gapidraw.com/"&gt;GapiDraw&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;UI dialog and widget toolkit, event model&amp;nbsp;and dynamic layout engine (to handle screen resizes)&lt;/li&gt;&lt;li&gt;Input abstration layer, multiple data-driven control schemes&lt;/li&gt;&lt;li&gt;Fixed point data types&lt;/li&gt;&lt;li&gt;3D software rendering engine, with texture mapping, lighting and shading, mesh support, etc&lt;/li&gt;&lt;li&gt;Game module logic (menus, levels, etc) and rendering pipeline (e.g. menu UI renders on top of 3D animated titles)&lt;/li&gt;&lt;li&gt;Sound mixer - although I later swapped this for &lt;a href="http://www.fmod.org/"&gt;FMod &lt;/a&gt;leaving my C++ wrappers in place&lt;/li&gt;&lt;li&gt;Game object logic using data-driven, dynamic instancing (There's one Enemy class; different Enemy types are prototypes distinguished solely by data, and then there are multiple instances representing each enemy unit. Ditto for weapons, vehicles, etc.)&lt;/li&gt;&lt;li&gt;Physics engine&lt;/li&gt;&lt;/ul&gt;(Yes, there's no AI yet. That's probably next.)&lt;br /&gt;&lt;br /&gt;Since my in-laws arrived for the holidays on Wednesday I've spent a little bit of time each evening going from a completely bogus physics model with gravity, drag,&amp;nbsp;and "if something collides, reverse its velocity". This was enough to get vehicles, the player, enemies and projectiles working but actual collisions looked horrible. I poked at it enough to get much better collision detection, multiple physics steps per frame, and actual real collision response. It went from a joke (albeit amusing) to looking like a pinball simulation when firing "test spheres" onto a flat surface. W00t!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6465299409772386697?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6465299409772386697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/physics-simulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6465299409772386697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6465299409772386697'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/physics-simulation.html' title='Physics Simulation'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6974650513560679386</id><published>2006-12-19T13:28:00.000-08:00</published><updated>2010-03-28T19:54:49.891-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Singularity Thoughts'/><title type='text'>Quotes milling about in my head lately.</title><content type='html'>&lt;div&gt;These two quotes have been stuck in my head:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;"Once a king or queen&amp;nbsp;in Narnia, always a king or queen."&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&amp;nbsp;- The Lion, the Witch and the Wardrobe, p.148&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;"If you &lt;em&gt;could &lt;/em&gt;make a starship at the push of a button, you wouldn't &lt;em&gt;need &lt;/em&gt;to..."&lt;/div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&amp;nbsp;- Star Trek: The Next Generation Technical Manual, p.17&lt;/span&gt;&lt;/blockquote&gt;I think this is hinting at some deep need for control and/or power within - and yet dissociation from - virtual worlds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6974650513560679386?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6974650513560679386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/quotes-milling-about-in-my-head-lately.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6974650513560679386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6974650513560679386'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/quotes-milling-about-in-my-head-lately.html' title='Quotes milling about in my head lately.'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-520804011785604111</id><published>2006-12-18T15:08:00.000-08:00</published><updated>2010-03-28T19:54:26.819-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Caspian Quotes</title><content type='html'>&lt;div&gt;First, two old ones:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Regarding Captain Jack from Pirates of the Caribbean:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;Susan: "Pirates are bad. But he's good at heart."&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Caspian: "Yeah. But bad at head."&lt;/div&gt;&lt;/blockquote&gt;Playing the yummy/yucky game:&lt;br /&gt;&lt;blockquote dir="ltr"&gt;Caspian: "Snake soup is yucky! But eel soup is good - it's unagi!"&lt;/blockquote&gt;And today:&lt;br /&gt;&lt;blockquote dir="ltr"&gt;Caspian: "Santa brings bad guys coal and light switches."&lt;/blockquote&gt;&lt;br /&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/5828855760220275945-520804011785604111?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/520804011785604111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/caspian-quotes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/520804011785604111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/520804011785604111'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/caspian-quotes.html' title='Caspian Quotes'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3223357713507214382</id><published>2006-12-07T12:52:00.000-08:00</published><updated>2010-03-28T19:54:02.472-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>Third Imperium</title><content type='html'>&lt;div&gt;Another &lt;strong&gt;&lt;em&gt;Traveller&lt;/em&gt;&lt;/strong&gt; project has come to fruition:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.travellermap.com/thirdimperium/"&gt;http://www.travellermap.com/thirdimperium/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&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/5828855760220275945-3223357713507214382?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3223357713507214382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/third-imperium.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3223357713507214382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3223357713507214382'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/third-imperium.html' title='Third Imperium'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1218743839555299252</id><published>2006-12-07T12:51:00.000-08:00</published><updated>2010-03-28T19:53:12.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>PCX Plugin for Paint.NET</title><content type='html'>&lt;div&gt;I've started using a free image editing application called &lt;a href="http://www.getpaint.net/"&gt;Paint .NET&lt;/a&gt;. It's good stuff. Not quite ready for professional work, and I still miss some features from PhotoShop, but you can't meet the price and the UI wasn't designed by idiots (like most free software).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It was missing PCX file support so I added it.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Forum post here: &lt;a href="http://paintdotnet.12.forumer.com/viewtopic.php?p=15973"&gt;http://paintdotnet.12.forumer.com/viewtopic.php?p=15973&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;PCX plugin download here: &lt;a href="http://www.calormen.com/tmp/PcxFileType.zip"&gt;http://www.calormen.com/tmp/PcxFileType.zip&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1218743839555299252?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1218743839555299252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/pcx-plugin-for-paintnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1218743839555299252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1218743839555299252'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/12/pcx-plugin-for-paintnet.html' title='PCX Plugin for Paint.NET'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6848044302868826616</id><published>2006-10-20T15:07:00.001-07:00</published><updated>2010-03-28T19:52:38.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>Lost Avatar</title><content type='html'>&lt;div&gt;This has been up on our street since just before we moved in.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AV70FtytI/AAAAAAAAAGc/dmQ9oBCWA6s/s1600/y1priV8TopUilODEPTMiRdUi-7ZZqnaduipdDfEWwHIyJIJu1pE1x0oNEgVzhOY8ChpAgbSiNeD4CE.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AV70FtytI/AAAAAAAAAGc/dmQ9oBCWA6s/s320/y1priV8TopUilODEPTMiRdUi-7ZZqnaduipdDfEWwHIyJIJu1pE1x0oNEgVzhOY8ChpAgbSiNeD4CE.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I hope they found their cat; I thought the name was particularly appropriate.&lt;/div&gt;&lt;br /&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/5828855760220275945-6848044302868826616?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6848044302868826616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/10/lost-avatar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6848044302868826616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6848044302868826616'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/10/lost-avatar.html' title='Lost Avatar'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aKONQq2A3U0/S7AV70FtytI/AAAAAAAAAGc/dmQ9oBCWA6s/s72-c/y1priV8TopUilODEPTMiRdUi-7ZZqnaduipdDfEWwHIyJIJu1pE1x0oNEgVzhOY8ChpAgbSiNeD4CE.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1886487672976808346</id><published>2006-10-20T15:07:00.000-07:00</published><updated>2010-03-28T19:52:11.254-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>Ninjas in North Beach</title><content type='html'>&lt;div&gt;At the very least, folks playing with very sharp weapons.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AV1RoPL3I/AAAAAAAAAGU/kfqZV864UBg/s1600/y1pp3wbjGPWDFEYLEBXfPPgjc3l_rBRYgYMoMWbfevS1ZlaLoxFRbUJLJGbYCxdoyiegI8dIGJUvE4.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AV1RoPL3I/AAAAAAAAAGU/kfqZV864UBg/s320/y1pp3wbjGPWDFEYLEBXfPPgjc3l_rBRYgYMoMWbfevS1ZlaLoxFRbUJLJGbYCxdoyiegI8dIGJUvE4.jpeg" /&gt;&lt;/a&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/5828855760220275945-1886487672976808346?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1886487672976808346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/10/ninjas-in-north-beach.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1886487672976808346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1886487672976808346'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/10/ninjas-in-north-beach.html' title='Ninjas in North Beach'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aKONQq2A3U0/S7AV1RoPL3I/AAAAAAAAAGU/kfqZV864UBg/s72-c/y1pp3wbjGPWDFEYLEBXfPPgjc3l_rBRYgYMoMWbfevS1ZlaLoxFRbUJLJGbYCxdoyiegI8dIGJUvE4.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-4102893327289152420</id><published>2006-10-20T15:02:00.000-07:00</published><updated>2010-03-28T19:51:45.643-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>Morse Code seen on Russian Hill</title><content type='html'>&lt;div&gt;This is&amp;nbsp;just a&amp;nbsp;few blocks from my house - the game is afoot!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AVu-bqnRI/AAAAAAAAAGM/bxpkBjVRtIg/s1600/y1p_J5n0h-cBgD6_jozpCGX6eokFSxqAsBTb1UdBYquG6DWz0G7ecxUsxPn5jckRjT3IwvE0z_7gow.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AVu-bqnRI/AAAAAAAAAGM/bxpkBjVRtIg/s320/y1p_J5n0h-cBgD6_jozpCGX6eokFSxqAsBTb1UdBYquG6DWz0G7ecxUsxPn5jckRjT3IwvE0z_7gow.jpeg" /&gt;&lt;/a&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/5828855760220275945-4102893327289152420?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/4102893327289152420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/10/morse-code-seen-on-russian-hill.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4102893327289152420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/4102893327289152420'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/10/morse-code-seen-on-russian-hill.html' title='Morse Code seen on Russian Hill'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aKONQq2A3U0/S7AVu-bqnRI/AAAAAAAAAGM/bxpkBjVRtIg/s72-c/y1p_J5n0h-cBgD6_jozpCGX6eokFSxqAsBTb1UdBYquG6DWz0G7ecxUsxPn5jckRjT3IwvE0z_7gow.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7834216655603355472</id><published>2006-08-24T14:29:00.000-07:00</published><updated>2010-03-28T21:50:29.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='space'/><title type='text'>Yay IAU!</title><content type='html'>&lt;div&gt;Yay, the IAU did the right thing and Pluto takes its rightful place as a dwarf planet!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.iau2006.org/mirror/www.iau.org/iau0603/index.html"&gt;http://www.iau2006.org/mirror/www.iau.org/iau0603/index.html&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Short version: Our solar system has 8 classic "planets"&amp;nbsp; (Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune) and at least 3 but probably more "dwarf planets" (Ceres, Pluto, 2003 UB 313 a.k.a. "Xena", etc). "Planet" means (1) it orbits the sun (2) big enough to be round-ish and (3) dynamically dominates its orbit.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;That actually skimps on exoplanets (that orbit other stars), where the common meaning is "non-fusing thing orbiting a star" instead of #1, but I can let that slide for now. Without #3 we'd have at least 12 and probably more like 30 "planets".&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Susan actually found a recent kids' book for Caspian last year that only lists the 8 planets explicitly, calls out Pluto as "a large cometlike object in the Kuiper belt" (I'll let the TNO/Kuiper-belt distinction slide), but doesn't call it a planet.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.amazon.com/gp/product/0811834883"&gt;http://www.amazon.com/gp/product/0811834883&lt;/a&gt;&lt;/div&gt;&lt;br /&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/5828855760220275945-7834216655603355472?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7834216655603355472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/08/yay-iau.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7834216655603355472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7834216655603355472'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/08/yay-iau.html' title='Yay IAU!'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1711747200474495208</id><published>2006-07-09T17:18:00.000-07:00</published><updated>2010-03-28T19:49:41.625-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>On transhumanity, books and beaches</title><content type='html'>&lt;div&gt;&lt;/div&gt;So a couple of times lately I've been walking home from work along &lt;a href="http://local.live.com/default.aspx?v=2&amp;amp;cp=q90nsq4szcfp&amp;amp;style=o&amp;amp;lvl=1&amp;amp;scene=1147691"&gt;Francisco &lt;/a&gt;which is pretty quiet, and realized that I'm plugged into my MP3 player and reading RSS feeds on my &lt;a href="http://www.xv6700.com/"&gt;Pocket PC Phone&lt;/a&gt;.&amp;nbsp; I think it was about the time that I paused to look up "&lt;a href="http://en.wikipedia.org/wiki/Barbary_Coast,_San_Francisco,_California"&gt;Barbary Coast&lt;/a&gt;" on Wikipedia that I had managed to tune out most of the world and should really pay attention to things like traffic and driveways.&lt;br /&gt;&lt;br /&gt;Right now I'm typing this on my phone as I head out to &lt;a href="http://local.live.com/default.aspx?v=2&amp;amp;cp=q8t3cs4sqqf2&amp;amp;style=o&amp;amp;lvl=1&amp;amp;scene=1181975"&gt;Ocean Beach &lt;/a&gt;on the N Judah. With the phone's &lt;a href="http://en.wikipedia.org/wiki/EVDO"&gt;always-on net connection &lt;/a&gt;I don't need to carry maps or really have a destination. If I know there is likely to be some service I need in the direction I'm headed I don't have my usual nervousness about the unknown. Of course, I'm still treading on familiar ground.&lt;br /&gt;&lt;br /&gt;I finished reading &lt;a href="http://en.wikipedia.org/wiki/Robert_Reed_(author)"&gt;Robert Reed's &lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Sister_Alice"&gt;Sister Alice &lt;/a&gt;this morning (over waffles, yum!). Reed has a very interesting style. Unlike many other authors who tackle the challenge of narrating the lives of transhumans by making everything gadgety cool, gnarly, or full of technobabble, Reed makes his characters intensely human. The more fantastic the events, the more viscerally primitive they seem.&lt;br /&gt;&lt;br /&gt;The only authors who approach this are &lt;a href="http://en.wikipedia.org/wiki/Iain_Banks"&gt;Banks &lt;/a&gt;and &lt;a href="http://en.wikipedia.org/wiki/John_C._Wright"&gt;Wright&lt;/a&gt;. Banks (who I feel is a superior storyteller) is brutal to his characters, but they remain so very despicably human even in a transcended universe. Wright, on the other hand, makes his characters flamboyantly meta, so much so that you can't quite sympathize with them They are too supreme or too flawed or both.&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://en.wikipedia.org/wiki/H._Beam_Piper"&gt;Piper's &lt;/a&gt;Space Vikings in a bookstore on Haight - I have the &lt;a href="http://manybooks.net/authors/piperh.html"&gt;ebook &lt;/a&gt;but I can't resist dead tree. This is one of the influences on Traveller so I've been meaning to read it for a while now.&lt;br /&gt;&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;Flash forward. It’s Sunday evening now. I finished up Space Vikings yesterday and spent today consuming &lt;a href="http://en.wikipedia.org/wiki/Vernor_Vinge"&gt;Vinge’s &lt;/a&gt;Rainbows End. I'm glad it's finally out - I read one of the short stories that make up one its chapters and was delighted. It's deliciously near future, and so far paints a very plausible and realistic future. Which, in many ways, brings this post full circle. The characters live in (near) future rife with connectivity and able to partake in a broad variety of concensual overlays to the physical world they inhabit... combined with widespread robotics and community efforts.&lt;br /&gt;&lt;br /&gt;I think if I'd read it more than six months ago I would have been skeptical. Now I think it's perhaps a little cautious in the future it presents. &lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;I started Sunday off on a mission - I'm getting a bit of a tan doing so much walking, and I figured I might as well try and even it out with some time on the beach. So I started the morning looking for a beach towel (amazingly hard to find in the many tacky tourist shops of Fisherman's Wharf - I ended up getting a seagrass mat at Walgreens!), then hopped the cable car for downtown and took the 31 out to Arguello to buy lunch at the Arguello Super. I was hoping to get coffee at the Velo Rouge but it was packed to overflowing with a World Cup audience so I moved on. I took the bus out to Ocean Beach... but unlike yesterday by the time I got to 19th or so the clouds had rolled in. So it was windy and cloudy at the beach. Darn. Laying down did save me from most of the wind but an even tan will have to wait. I did get a nice burn on my face and arms, though. And of course, a few hours later heading back into the city was heading back into the sunshine. Next weekend I'm just going to Fort Mason. :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-1711747200474495208?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1711747200474495208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/07/on-transhumanity-books-and-beaches.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1711747200474495208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1711747200474495208'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/07/on-transhumanity-books-and-beaches.html' title='On transhumanity, books and beaches'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-322775129719424317</id><published>2006-06-25T11:34:00.000-07:00</published><updated>2010-03-28T19:49:18.022-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='For Posterity'/><title type='text'>Slightly less old fashioned</title><content type='html'>&lt;div&gt;Back &lt;a href="http://inexorabletash.spaces.msn.com/blog/cns!3FC59671BAEE20E9!423.entry"&gt;in January I mentioned &lt;/a&gt;that I felt old fashioned:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;I still pay for a landline &lt;/li&gt;&lt;li&gt;I carry a PDA, not a smartphone&amp;nbsp;&lt;/li&gt;&lt;li&gt;I only run one IM client &lt;/li&gt;&lt;li&gt;I buy my music online, but on plastic things called "CDs"&lt;/li&gt;&lt;li&gt;I’ve only bought a few ringtones and games for my phone. (And $5 for a MIDI file seems outrageous!) &lt;/li&gt;&lt;li&gt;I only download &lt;a href="http://www.timhunkin.com/41_slom1.htm"&gt;obscure TV shows &lt;/a&gt;over P2P &lt;/li&gt;&lt;li&gt;I still use e-mail to communicate with my friends &lt;/li&gt;&lt;li&gt;I have more stuff stored on my hard drive than in the cloud &lt;/li&gt;&lt;/ul&gt;Time for some updates:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Su and I are planning to cut the landline in SF. We get WiFi and Satellite TV with our rent, so apart from wireless phone service we'll have cut down on our utility dependencies a little.&lt;/li&gt;&lt;li&gt;My PDA is now a PocketPC Phone, which is like a Smartphone on steroids. I'm very happy with it.&lt;/li&gt;&lt;li&gt;As of tomorrow, I'll have a Mac laptop for work.&lt;/li&gt;&lt;li&gt;I have multiple blogs/domains:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This one: &lt;a href="http://inexorabletash.spaces.msn.com/"&gt;http://inexorabletash.spaces.msn.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The old-school family site on a Unix box: &lt;a href="http://www.calormen.com/"&gt;http://www.calormen.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;My map site: &lt;a href="http://www.travellermap.com, its/"&gt;http://www.travellermap.com, &lt;/a&gt;blog at: &lt;a href="http://travellermap.blogspot.com/"&gt;http://travellermap.blogspot.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.singularityclock.com/"&gt;http://www.singularityclock.com&lt;/a&gt; site I registered to dogfood Office Live (and squat)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;I don't have a TV in SF, so if it's BitTorrent or nothing (or DVDs I suppose)&lt;/li&gt;&lt;/ul&gt;Maybe there's hope for me yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-322775129719424317?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/322775129719424317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/06/slightly-less-old-fashioned.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/322775129719424317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/322775129719424317'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/06/slightly-less-old-fashioned.html' title='Slightly less old fashioned'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3390319264096381260</id><published>2006-06-25T11:17:00.000-07:00</published><updated>2010-03-28T19:48:45.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><title type='text'>Old haunts, new directions</title><content type='html'>&lt;div&gt;Today was my first full day back in San Francisco. And while I wanted to get out I wasn't feeling particularly adventuresome, so after sleeping in I visited some old haunts.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Sloat Garden Center &lt;/strong&gt;is a few blocks from where we used to live, in the Inner Richmond district. Hidden in a residential block, it's a pretty nice gardening store for urban gardeners.&lt;/li&gt;&lt;li&gt;The &lt;strong&gt;Toy Boat Cafe &lt;/strong&gt;on Clement St. has food, deserts (lots of ice cream) and toy - on display and for sale.&lt;/li&gt;&lt;/ul&gt;I hiked up to Green Apple Books and picked up a new Stross (&lt;u&gt;Glasshouse&lt;/u&gt;), a new Vinge (Rainbo's End) and an old Reed (&lt;u&gt;Sister Alice&lt;/u&gt;). Both Stross and Vinge's writings are heavily influential on... well, the entirely forward-looking community that I'm trying to get myself formally indoctrinated into.&lt;br /&gt;&lt;br /&gt;Reed's work is very different. I'll admit that most of my favorite contemporary authors (Stross, Morgan, Doctorow) and even some of the old standbys (like Vinge) are excellent authors but the stories have the classical "I'm a geek that came up with a cool idea and I just had to drape some characters around it" feel. Reed's stories are far more character driven - he's a lot like Banks in some ways, even if I can only put my finger on a tendency to really badly maul his characters both emotionally and physically. (Compare/contrast &lt;u&gt;Marrow&lt;/u&gt; or &lt;u&gt;Down the Bright Way&lt;/u&gt; with &lt;u&gt;Consider Phlebas&lt;/u&gt; or &lt;u&gt;Use of Weapons&lt;/u&gt;.)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;strong&gt;&lt;a href="http://www.sanfranciscoreader.com/essays/columbarium.html"&gt;Columbarium &lt;/a&gt;&lt;/strong&gt;is not actually an old haunt, but it is an internment spot for the ashes of the cremated that's right near where I used to live, so I'll count it as a haunt at any rate. It's the remaining building of a once sprawing cemetary, before San Francisco trucked all of its dead down to Colma (or just "misplaced" them). Apparently it's open to the public but the gate looked rather closed so I stayed outside today.&lt;/li&gt;&lt;li&gt;The &lt;strong&gt;Arguello Super &lt;/strong&gt;- I think I've mentioned it before. Order the Turkey on Dutch Crunch bread, or a Salami w/ everything on Dutch Crunch if that's more your speed.&lt;/li&gt;&lt;/ul&gt;Then I grabbed coffee at the Velo Rouge Cafe&amp;nbsp;and walked to Golden Gate Park, and sat down at a bench overlooking the &lt;strong&gt;Conservatory of Flowers&lt;/strong&gt;. Hopped online but found I'd missed the end of an auction (went for more than I would have paid anyway); checked mail and then started reading &lt;u&gt;Glasshouse&lt;/u&gt;. So far, so good, although as I start to ponder my life at Linden I'm going to feel like a copycat: (1) one of the initial characters has an exoform with four arms and (2) the world the characters inhabit, while physical, is not connected in a Cartesian space.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One of my favorite previous avatars was Tash, a four armed deity. Four arms are just incredibly useful. Especially as a deity, where you can pick someone up &lt;em&gt;and &lt;/em&gt;slap them around when they misbehave.&lt;/li&gt;&lt;li&gt;I'm a big fan of both non-Cartesian geometries and connectivity, and also the possibility of non-causally connected spaces within VRs. While some afficionados of VR are going to be trying to build portals connecting SL with There (or whatever), I'll be trying to branch off pocket universes with differing physical laws.&lt;/li&gt;&lt;/ul&gt;Finally, walked by the &lt;strong&gt;Carl Hotel &lt;/strong&gt;to get to the N Judah. That's where Dimension X put me up when I was first in San Francisco back in January, 1996. And, it turns out, right next door to the apartment my friend Sarah has found. Great location!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AU63a49cI/AAAAAAAAAGE/JFEpatHab8o/s1600/y1pWGOTfVdBNo3eM1T6FcRNYpvAPfY8hBtGpWU-F_IxsnWNbOemwuuO9RKr1Hx-Kxb0Ish5IFIEhY4.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AU63a49cI/AAAAAAAAAGE/JFEpatHab8o/s320/y1pWGOTfVdBNo3eM1T6FcRNYpvAPfY8hBtGpWU-F_IxsnWNbOemwuuO9RKr1Hx-Kxb0Ish5IFIEhY4.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AUpXYefJI/AAAAAAAAAFE/dVuK9jhk_-w/s1600/y1p6hlr0zJcbh5G4_ApkHwUnwTO7nhf5NRwnifq5SA-oMiojcSlQBcNxsF11UpFNW073J4L1n7pKTw.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AUpXYefJI/AAAAAAAAAFE/dVuK9jhk_-w/s320/y1p6hlr0zJcbh5G4_ApkHwUnwTO7nhf5NRwnifq5SA-oMiojcSlQBcNxsF11UpFNW073J4L1n7pKTw.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AUqjPQ0dI/AAAAAAAAAFM/N_NyeuqJOTw/s1600/y1p75o_jXjhMZo4srUEgvilsce1v-5LnwUUQ_A60poxHF56YdAgzyb-PlohCNNFAxeAyJIzFD2dTes.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AUqjPQ0dI/AAAAAAAAAFM/N_NyeuqJOTw/s320/y1p75o_jXjhMZo4srUEgvilsce1v-5LnwUUQ_A60poxHF56YdAgzyb-PlohCNNFAxeAyJIzFD2dTes.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AUrV6ewRI/AAAAAAAAAFU/SMp-t4oSn8Q/s1600/y1pCgLZku9TBLQL3DPj_V8ZWygdX3JY5jbR_F4nC6QltvlJAr9dl_z0GW9IlmR4AWhvpHJfxY_Ya-o.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AUrV6ewRI/AAAAAAAAAFU/SMp-t4oSn8Q/s320/y1pCgLZku9TBLQL3DPj_V8ZWygdX3JY5jbR_F4nC6QltvlJAr9dl_z0GW9IlmR4AWhvpHJfxY_Ya-o.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AUsPZbldI/AAAAAAAAAFc/uXT7ISloQOY/s1600/y1pCjL2SIkC1kNBjnn37vt2hT4SAf5vgNdHNTG1Btk6zp2ybW3b9g7HIJR-n5tEqMZepesSRvSUxLI.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7AUsPZbldI/AAAAAAAAAFc/uXT7ISloQOY/s320/y1pCjL2SIkC1kNBjnn37vt2hT4SAf5vgNdHNTG1Btk6zp2ybW3b9g7HIJR-n5tEqMZepesSRvSUxLI.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AUxkk-zVI/AAAAAAAAAFk/-ehQd7gVk50/s1600/y1pG6iie2ofDU9p7x4ZWWflyjPaK2taQntg0ACwkWeL_9q7dAw5Onw2bCX1z_od-sVNLq5zYz7a1nY.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7AUxkk-zVI/AAAAAAAAAFk/-ehQd7gVk50/s320/y1pG6iie2ofDU9p7x4ZWWflyjPaK2taQntg0ACwkWeL_9q7dAw5Onw2bCX1z_od-sVNLq5zYz7a1nY.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AUzY29xOI/AAAAAAAAAFs/oAixNKwvbcA/s1600/y1pI-RD0MZQinFVEuzriybEhpZdD8ARDOzDemL4yv7S2IIioXESvag_WwuMHFmzhnu2ZCvFxz-oE4o.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AUzY29xOI/AAAAAAAAAFs/oAixNKwvbcA/s320/y1pI-RD0MZQinFVEuzriybEhpZdD8ARDOzDemL4yv7S2IIioXESvag_WwuMHFmzhnu2ZCvFxz-oE4o.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AUz1p-yvI/AAAAAAAAAF0/Bm4R_Cx6e9U/s1600/y1pJJYLQoUISNoLmVsCoziWYYoFzFVzraDNP_QHbiGWBvjUlxw28rrB5x10SZQhHYlPGBZiOS5ODR8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aKONQq2A3U0/S7AUz1p-yvI/AAAAAAAAAF0/Bm4R_Cx6e9U/s320/y1pJJYLQoUISNoLmVsCoziWYYoFzFVzraDNP_QHbiGWBvjUlxw28rrB5x10SZQhHYlPGBZiOS5ODR8.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AU5_JP0OI/AAAAAAAAAF8/EMvOk9tsQZQ/s1600/y1pv7f0UXxQ7NKf8GhoajyIJ5Mq5P0kMozV-DFzXlFXaGf4dpKOSZVAG_WqLZyFZSdcEg7ce-1GFVg.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7AU5_JP0OI/AAAAAAAAAF8/EMvOk9tsQZQ/s320/y1pv7f0UXxQ7NKf8GhoajyIJ5Mq5P0kMozV-DFzXlFXaGf4dpKOSZVAG_WqLZyFZSdcEg7ce-1GFVg.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-3390319264096381260?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3390319264096381260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/06/old-haunts-new-directions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3390319264096381260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3390319264096381260'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/06/old-haunts-new-directions.html' title='Old haunts, new directions'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aKONQq2A3U0/S7AU63a49cI/AAAAAAAAAGE/JFEpatHab8o/s72-c/y1pWGOTfVdBNo3eM1T6FcRNYpvAPfY8hBtGpWU-F_IxsnWNbOemwuuO9RKr1Hx-Kxb0Ish5IFIEhY4.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2394860974466935193</id><published>2006-05-29T08:12:00.000-07:00</published><updated>2010-03-28T21:36:33.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Marquee Update</title><content type='html'>&lt;div&gt;I added one more feature - the D-Pad (joystick thingy) can now be used to control the speed and text size:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Up: Increase font size&lt;/li&gt;&lt;li&gt;Down: Decrease font size&lt;/li&gt;&lt;li&gt;Left: Speed up scrolling&lt;/li&gt;&lt;li&gt;Right: Slow down scrolling&lt;/li&gt;&lt;li&gt;Center: Edit the text&lt;/li&gt;&lt;/ul&gt;It's much easier to adjust the settings now. ZIP updated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-2394860974466935193?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2394860974466935193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/marquee-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2394860974466935193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2394860974466935193'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/marquee-update.html' title='Marquee Update'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7637919395780247415</id><published>2006-05-28T16:00:00.000-07:00</published><updated>2010-03-28T21:36:40.884-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Marquee</title><content type='html'>&lt;div&gt;Partly inspired by the "incident" at IKEA (but I had the idea a long time ago) I put together a quick Pocket PC app to "marquee" messages across a room. It simply scrolls a message you specify across the display in a continuous loop, like the MARQUEE tag (IE-only) or the Marquee screen saver in Windows.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The display is double-buffered and the UI is optimized for WM5.0:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Edit - launches a dialog that lets you edit the text to display&lt;/li&gt;&lt;li&gt;Menu - shows the following options&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Bigger - Increase the text size by 25%&lt;/li&gt;&lt;li&gt;Smaller - Decrease the text size by 20%&lt;/li&gt;&lt;li&gt;Faster - Increase the scroll speed by 25%&lt;/li&gt;&lt;li&gt;Slower - Decrease the scroll speed by 20%&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;(There's no "exit" option per Pocket PC / Windows Mobile UI guidelines - when not showing, the app consumes minimal resources and will be shut down by the OS when memory is needed.)&lt;br /&gt;&lt;br /&gt;Right now the app always starts up with "Hello, world!" as the text and the text is not persisted to the registry. I'll add that if anyone actually uses this.&lt;br /&gt;&lt;br /&gt;It requires the .&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9655156b-356b-4a2c-857c-e62f50ae9a55&amp;amp;DisplayLang=en"&gt;NET Compact Framework 2.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Still with me? Grab the app at: &lt;a href="http://www.calormen.com/tmp/Marquee.zip"&gt;http://www.calormen.com/tmp/Marquee.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ATkKpQGcI/AAAAAAAAAE8/5_2tBEJ163Q/s1600/y1pyZpRM9yvorvQGGdCYoL5u1gPAsauJBWmoxHnB3PG0mxsegSHNh5OgQJNZaFRg4mXDesRRhtmZvQ.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ATkKpQGcI/AAAAAAAAAE8/5_2tBEJ163Q/s320/y1pyZpRM9yvorvQGGdCYoL5u1gPAsauJBWmoxHnB3PG0mxsegSHNh5OgQJNZaFRg4mXDesRRhtmZvQ.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7637919395780247415?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7637919395780247415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/marquee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7637919395780247415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7637919395780247415'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/marquee.html' title='Marquee'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aKONQq2A3U0/S7ATkKpQGcI/AAAAAAAAAE8/5_2tBEJ163Q/s72-c/y1pyZpRM9yvorvQGGdCYoL5u1gPAsauJBWmoxHnB3PG0mxsegSHNh5OgQJNZaFRg4mXDesRRhtmZvQ.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-5024826325981072179</id><published>2006-05-28T13:59:00.000-07:00</published><updated>2010-03-28T21:36:45.712-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Caspian and IKEA</title><content type='html'>&lt;div&gt;We stopped by&amp;nbsp;IKEA today which was a bad idea - it's a holiday weekend, but we survived and didn't buy too much.&amp;nbsp; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Caspian had waffled on the thought of going into the ball room, and initially balked but once we were passing it at the halfway mark he decided to go for it. Susan signed him up and checked him in, and then we watched him for a bit.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I noticed that he still had two toys with him - a&amp;nbsp;toy&amp;nbsp;car&amp;nbsp;key remote and&amp;nbsp;a toy cell phone, both recent acquisitions deemed "not too annoying" by Susan. I was imagining these falling out of his pockets in the ball pit, never to be seen again. We tried to catch his attention and mime "phone" to him, but it didn't work - and the window was soundproof.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Then I had a sneaky idea. I pulled out my Pocket PC and wrote a note: "Give your phone to the red lady", then held it up to the glass. He noticed, came over, read it, then immediately called over one of the red-shirted attendants and handed her the phone and keys and pointed at us. She got the picture and relayed them out of the playground area to us while Caspian got back to playing.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-5024826325981072179?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/5024826325981072179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/caspian-and-ikea.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5024826325981072179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5024826325981072179'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/caspian-and-ikea.html' title='Caspian and IKEA'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-3773821828516795778</id><published>2006-05-28T13:52:00.000-07:00</published><updated>2010-03-28T19:41:10.010-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Caspian and the Mouse</title><content type='html'>&lt;div&gt;Caspian has a Mac SE in his play area.&amp;nbsp;We just have MacPaint and MacWrite on it, so he can use it productively.&lt;br /&gt;&lt;br /&gt;Yesterday he was being frustrated by the unresponsive mouse. I opened it up to take a look. The ball was looking particularly sad (it was a black and resiny, definitely looking aged) and Caspian said "Oh, I know.. I'll get the other ball!"&lt;br /&gt;&lt;br /&gt;As an early toy I'd given Caspian an old dead mechanical Microsoft mouse, sans cord. After a few months it went to the trash heap in the sky, but he kept the rubberized ball since it was fun to roll.&lt;br /&gt;&lt;br /&gt;He dug it out of one of his toy boxes lickety-split, popped it in the mouse, and as he had predicted the responsiveness was much improved.&lt;br /&gt;&lt;br /&gt;Score one for the 3-year old.&lt;/div&gt;&lt;br /&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/5828855760220275945-3773821828516795778?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/3773821828516795778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/caspian-and-mouse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3773821828516795778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/3773821828516795778'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/caspian-and-mouse.html' title='Caspian and the Mouse'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-1843073517414195102</id><published>2006-05-26T13:44:00.000-07:00</published><updated>2010-03-28T21:49:18.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='San Francisco'/><category scheme='http://www.blogger.com/atom/ns#' term='Second Life'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>And now for something completely different</title><content type='html'>&lt;div&gt;After nine years, today was my last day at Microsoft. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Starting at the end of June I'm off to new adventures in San Francisco.&lt;/div&gt;&lt;br /&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/5828855760220275945-1843073517414195102?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/1843073517414195102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/and-now-for-something-completely.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1843073517414195102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/1843073517414195102'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/and-now-for-something-completely.html' title='And now for something completely different'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6770711893761614064</id><published>2006-05-19T07:01:00.000-07:00</published><updated>2010-03-28T19:40:43.008-07:00</updated><title type='text'>E-mails of the Dead</title><content type='html'>&lt;div&gt;Going through old personal e-mails today I ran across a note from my "Uncle" Roy. Near as anyone can figure, he was my dad's mom's boyfriend. (She doesn't like to label the relationship.)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;He died unexpectedly a few years ago of a heart attack, probably just when I was getting interesting. He'd introduced me to the Rubik's Cube back in the 1980s, and always had a mathematical puzzle for me. He told me stories of working on early computers - like the time his lab rigged up an oscilloscope as a textual display device, before off-the-rack television tubes came into use&amp;nbsp;for that. Of course, he also claimed that he'd never coded a bug in his life.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The e-mails I've got are his request and subsequent "thanks" for a copy of Microsoft Visual C++ (at employee rates), including gripes about how flaky Windows 98 is.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The future will only get weirder, of course.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;My brain made a mental connection to thoughts of reconstructing a personality from fragments like this. And then to this little tidbit from my &lt;em&gt;alma mater&lt;/em&gt;:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;&lt;a href="http://pages.cpsc.ucalgary.ca/~aycock/papers/sz.pdf"&gt;Spam Zombies from Outer Space&lt;/a&gt;&lt;/blockquote&gt;Putting these two thoughts together, it seems like it might not be too long before you do start getting e-mail from the dead. That'll be downright creepy.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;These particularly mails would hopefully not be fodder; I've never had a malware problem which makes me extremely happy since the only way to recover is to pave and rebuild. &lt;em&gt;I may have had an infection in my Apple II days - I recall a situation with a virally spreading DOS 3.3 modification (which "improved" the CATALOG format) which may have been related to &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Elk_Cloner"&gt;&lt;em&gt;Elk Cloner&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;nbsp;but sounds somewhat different.&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6770711893761614064?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6770711893761614064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/e-mails-of-dead.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6770711893761614064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6770711893761614064'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/e-mails-of-dead.html' title='E-mails of the Dead'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6163389962753696326</id><published>2006-05-18T10:28:00.000-07:00</published><updated>2010-03-28T19:40:09.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='For Posterity'/><title type='text'>Everything I know about GPS</title><content type='html'>&lt;div&gt;When &lt;a href="http://www.microsoft.com/streets/default.mspx"&gt;Streets and Trips &lt;/a&gt;came out with a bundled GPS receiver I picked one up, ordered a CF Sled so I could use it with my antique Pocket PC and had a whirl. It was fun for a while but then we got a &lt;a href="http://www.toyota.com/prius/"&gt;Prius &lt;/a&gt;with GPS in the dash, and S&amp;amp;T doesn't have maps of fun places like New Zealand&amp;nbsp;so I haven't used it often. I do want to share one thing I learned when I was first trying it out and shared with co-workers who were having similar issues.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Are you waiting long enough?&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I received enlightening information on another e-mail list that it can take up to 5 minutes to get a signal. Roughly, the GPS satellites radiate big data chunks on a less frequent basis and smaller, incremental data chunks more frequently. The GPS receiver must wait until it sees a big data chunk from several satellites before it can do anything. This is called “time to first fix” (TTFF), and can take 2-5 minutes even in completely optimal conditions.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;With my Dell Axim and the Pharos GPS receiver (using a CF adapter) I have to wait about 2-3 minutes after plugging it in before I get a fix. After that, everything is groovy. No drivers needed. (In my first attempts I was assuming the satellites were radiating data constantly so I only gave it ~30 seconds before giving up and yanking the card, restarting, etc.)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I picked up a shiny &lt;a href="http://www.microsoft.com/windowsmobile/5/devices/devicedetails.mspx?id=8224ED7F-614E-4a1b-B1F9-70AC619D6595"&gt;Verizon VX6700&lt;/a&gt;&amp;nbsp;(a.k.a. &lt;a href="http://www.the-gadgeteer.com/review/htc_apache_ppc_6700_pocket_pc_phone_edition"&gt;HTC Apache&lt;/a&gt;) which has Bluetooth and EVDO so I might pick up a Bluetooth GPS adapter, just so I can play with &lt;a href="http://www.viavirtualearth.com/vve/Gallery/VEMobile.ashx"&gt;Virtual Earth Mobile&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6163389962753696326?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6163389962753696326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/everything-i-know-about-gps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6163389962753696326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6163389962753696326'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/everything-i-know-about-gps.html' title='Everything I know about GPS'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8085427111425653211</id><published>2006-05-08T11:01:00.000-07:00</published><updated>2010-03-28T19:39:47.254-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Singularity Thoughts'/><title type='text'>SingularityClock.com</title><content type='html'>&lt;div&gt;Okay, it was too good to pass up. I'm now the proud owner of SingularityClock.com with a few caveats:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;It'll probably take a few days for the DNS records to propagage out to the world&lt;/li&gt;&lt;li&gt;The site was built in a few minutes using Office Live. Yay, I'm dogfooding.&lt;/li&gt;&lt;li&gt;There's no clock. &lt;/li&gt;&lt;/ul&gt;The site should be simple - pick a starting time, show the clock, and then an RSS feed of events that take us closer to or further from the Singularity, a la &lt;a href="http://www.thebulletin.org/doomsday_clock/current_time.htm"&gt;http://www.thebulletin.org/doomsday_clock/current_time.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course, there are going to be incredibly few events that would take us further from the Singularity. I guess the Doomsday Clock striking midnight would be one of them.&lt;br /&gt;&lt;br /&gt;One sign that &lt;em&gt;the Singularity is nigh &lt;/em&gt;is that the site will be updated in realtime. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8085427111425653211?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8085427111425653211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/singularityclockcom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8085427111425653211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8085427111425653211'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/singularityclockcom.html' title='SingularityClock.com'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-7651504061562163395</id><published>2006-05-08T10:27:00.000-07:00</published><updated>2010-03-28T19:39:28.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Singularity Thoughts'/><title type='text'>Is there anything buckytubes can't do?</title><content type='html'>&lt;div&gt;As seen on &lt;a href="http://www.digg.com/"&gt;digg&lt;/a&gt;: &lt;a href="http://www.physorg.com/news66308334.html"&gt;http://www.physorg.com/news66308334.html&lt;/a&gt;&lt;/div&gt;&lt;blockquote dir="ltr"&gt;Thin films of carbon nanotubes deposited on transparent plastic can also serve as a surface on which cells can grow. And as researchers at the University of Texas Medical Branch at Galveston (UTMB) and Rice University suggest in a paper published in the May issue of the Journal of Nanoscience and Nanotechnology, these nanotube films could potentially serve as an electrical interface between living tissue and prosthetic devices or biomedical instruments.&lt;/blockquote&gt;(My wife is always proud of having attended Rice when buckystuff&amp;nbsp;makes the news; Rice has been on the forefront of carbon nanostructure research from the beginning.)&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Of course, the most intriguing part is the last paragraph of the article:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;Another avenue Pappas wants to explore is finding out whether nanotubes are sensitive enough to record ongoing electrical activity in cells. "Where we want to get to is a device that can both sense and deliver stimuli to cells for things like prosthetic control," Pappas said.&lt;/blockquote&gt;Or, of course, doing detailed nano-level scanning of the entire brain for the purpose of uploading. I'm going to put the &lt;a href="http://www.deanesmay.com/posts/1145665742.comments.shtml"&gt;Singularity Clock &lt;/a&gt;one small notch closer to Midnight. (Hey, someone else had the same ida I did. Only a couple of hits for that on the Google... there's a project just waiting to happen.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-7651504061562163395?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/7651504061562163395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/is-there-anything-buckytubes-can-do.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7651504061562163395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/7651504061562163395'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/is-there-anything-buckytubes-can-do.html' title='Is there anything buckytubes can&amp;#39;t do?'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-6079901594239410544</id><published>2006-05-08T08:37:00.000-07:00</published><updated>2010-03-28T19:39:00.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Razing and "to volume"</title><content type='html'>&lt;div&gt;Two Caspianisms worth sharing:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I have a razor. Therefore, the verb associated with the tool is "to raze". As in:&lt;/div&gt;&lt;blockquote dir="ltr"&gt;"Dada, your face is scratchy. You need to raze."&lt;/blockquote&gt;This morning while Caspian was watching TV,&amp;nbsp;I turned on the espresso machine (self-grinding) and microwave (I'm too impatient to steam the milk). Caspian's request:&lt;br /&gt;&lt;blockquote dir="ltr"&gt;"Can you volume the TV?"&lt;/blockquote&gt;I really like that one. The shortest equivalent we use around the house is "adjust the volume of" which is a bit wordy. I suppose most people would use "turn up" or "turn down" but that's not really our style&amp;nbsp;- it&amp;nbsp;implies that the person to whom the request is being made can't figure out the correct action based on the context.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-6079901594239410544?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/6079901594239410544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/razing-and-volume.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6079901594239410544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/6079901594239410544'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/razing-and-volume.html' title='Razing and &amp;quot;to volume&amp;quot;'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-2515166920256428145</id><published>2006-05-08T08:30:00.000-07:00</published><updated>2010-03-28T19:38:41.046-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caspian Quotes'/><title type='text'>Caspian's Reading Level</title><content type='html'>&lt;div&gt;For posterity, I should note where Caspian's reading level is right now:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- One morning during the trip to NZ in March, he treated me to a reading of &lt;a href="http://www.robertmunsch.com/books.cfm?bookid=27"&gt;The Paper Bag Princess&lt;/a&gt;. I think he'd had Susan read it to him one time before. I was only half-awake so I couldn't have helped if I wanted to, and he skipped a page, and he made one mistake where the grammar got complicated, but otherwise it was perfect.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- We picked up a copy of &lt;a href="http://www.amazon.com/gp/product/155037883X/qid=1147127323"&gt;The Complete Adventures of the Mole Sisters&lt;/a&gt;, and Caspian now compulsively reads it in the car. Last Saturday we let Su sleep in and we drove around doing some shopping. Over the course of the trip he read it out loud, front to back.&lt;/div&gt;&lt;br /&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/5828855760220275945-2515166920256428145?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/2515166920256428145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/caspian-reading-level.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2515166920256428145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/2515166920256428145'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/caspian-reading-level.html' title='Caspian&amp;#39;s Reading Level'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-8663969801953016733</id><published>2006-05-02T10:25:00.000-07:00</published><updated>2010-03-28T19:38:24.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Nearby Galaxies and Stars</title><content type='html'>&lt;div&gt;Note to self:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;One cool thing about staying several days in Queenstown is that we finally had (1) clear skies, (2) no skyglow, and (3) enough energy to stay out after dark a few days in a row. We took blankets out to the lake shore right in front of the hotel. The view at night was really amazing, since there is no build-up on the far side of the lake. So apart from having a mountain blocking part of your view, you're not having to fight with city lights if you have something like a tree behind you.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I was able to point out the Milky Way to Caspian - I haven't seen that in a few years - and got to see the Large and Small Magellanic Clouds for the first time. Not all that impressive to look at unless you know what they are. Then it's humbling.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;We'd managed to pick up a map of the southern skies after a few mishaps - Su accidentally left the first one she bought at the store thanks to a little distraction, and on the second attempt she had downloaded a map of the northern skies into her computer's cache. (There was no WiFi on the beach; connectivity in NZ was really bad.)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Back outside with the map it was fun to identify the brightest star in the sky as Rigel Kentaurus - a.k.a. Alpha Centauri and Beta Centauri, the closest big stars to ours. (Proxima Centauri is closer but it's a red dwarf star, and there are may be some closer brown dwarf stars).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-8663969801953016733?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/8663969801953016733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/nearby-galaxies-and-stars.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8663969801953016733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/8663969801953016733'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/05/nearby-galaxies-and-stars.html' title='Nearby Galaxies and Stars'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5828855760220275945.post-5015996912690743616</id><published>2006-04-29T08:20:00.000-07:00</published><updated>2010-03-28T21:49:35.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal history'/><category scheme='http://www.blogger.com/atom/ns#' term='Toys'/><title type='text'>Micronauts, Part Deux</title><content type='html'>&lt;div&gt;Okay, so it turns out we'd dug them &lt;em&gt;all &lt;/em&gt;out of storage, not just the Star Searcher.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So how did my memory hold up?&lt;/div&gt;&lt;ul&gt;&lt;li&gt;I finally know where all of the yellow parts are from - the almost vanished Rhodium Orbiter!&lt;/li&gt;&lt;li&gt;The Crater Cruncher does have both scoop supports, and is in playable condition&lt;/li&gt;&lt;li&gt;I'd tried to turn the Aquatron into the mission pod for a &lt;em&gt;Nebula&lt;/em&gt;-class starship at some point, so I had to take it apart and put it back together. No harm done, but it's missing lots of pieces.&lt;/li&gt;&lt;li&gt;Photon Sled - if you don't mind popping wheelies, it might be playable.&lt;/li&gt;&lt;li&gt;Star Searcher - it's the one missing a scoop support, but otherwise stil unabashedly &lt;em&gt;awesome&lt;/em&gt;!&lt;/li&gt;&lt;li&gt;The Interplanetary Headquarters is the mere potsherds of a lost civlization.&lt;/li&gt;&lt;li&gt;Acroyear got in and out of the Star Searcher's hidden compartment one too many times and is down a leg. At least he came with prosthetic wheels!&lt;/li&gt;&lt;li&gt;The Time Traveller is just a ghost of his former self.&lt;/li&gt;&lt;/ul&gt;And to round it out, there's Battlestar Galactica the way it was meant to be - modular almost-Vipers and Daggits!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASLUQh7SI/AAAAAAAAAEs/iLlSF35UTNY/s1600/y1pU_Ng_rhRd20rORHPKKL333nr_-SLWDawjg7qaG8zB8bCn6ZFNNuiy56fx5pZehuxoKY10yGDLN8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASLUQh7SI/AAAAAAAAAEs/iLlSF35UTNY/s320/y1pU_Ng_rhRd20rORHPKKL333nr_-SLWDawjg7qaG8zB8bCn6ZFNNuiy56fx5pZehuxoKY10yGDLN8.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASA6LfxZI/AAAAAAAAADk/9vwMtW4-0s0/s1600/y1p3t-ANs91iSk7kjY4H6GqfKHe_DDN5XdIa5AW69GBJAPebmfRkxKM_7TLik2HcB4Lpn-aDz3BGII.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASA6LfxZI/AAAAAAAAADk/9vwMtW4-0s0/s320/y1p3t-ANs91iSk7kjY4H6GqfKHe_DDN5XdIa5AW69GBJAPebmfRkxKM_7TLik2HcB4Lpn-aDz3BGII.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASEMtQKUI/AAAAAAAAADs/c0j-ROdspoY/s1600/y1pds0yDriuxUuWbR_7Yxmzr6eU-8s7p0ixZ_-1kO0RVSuWMihXJEwsDbxt5ka6gm7SUfDOY73oLJ8.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASEMtQKUI/AAAAAAAAADs/c0j-ROdspoY/s320/y1pds0yDriuxUuWbR_7Yxmzr6eU-8s7p0ixZ_-1kO0RVSuWMihXJEwsDbxt5ka6gm7SUfDOY73oLJ8.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASEuQexAI/AAAAAAAAAD0/qSnc8UFo1xw/s1600/y1pds0yDriuxUuxNfFi_nYpBuQJyh8QUxkZ4GNh7W3EFHc_cJqLcAoh8nliykoBe3_wzMHRLZfRNnA.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASEuQexAI/AAAAAAAAAD0/qSnc8UFo1xw/s320/y1pds0yDriuxUuxNfFi_nYpBuQJyh8QUxkZ4GNh7W3EFHc_cJqLcAoh8nliykoBe3_wzMHRLZfRNnA.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASFDcI8uI/AAAAAAAAAD8/bhiKz19q9Yo/s1600/y1pF12v0VVzgNIgUPN0MEDSCdqpVO69fgdcwtAj-y9X4eVktcmKqHgCuXY2oq5PTeyDFuP2y0Cda4k.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASFDcI8uI/AAAAAAAAAD8/bhiKz19q9Yo/s320/y1pF12v0VVzgNIgUPN0MEDSCdqpVO69fgdcwtAj-y9X4eVktcmKqHgCuXY2oq5PTeyDFuP2y0Cda4k.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7ASFh0FKMI/AAAAAAAAAEE/3_54gZ8VCeM/s1600/y1ppip27g9I-n_IXf24oJzGasZeqC8yk8_4Dgth2eCJaqfQow3BpirHEHt5WiAZNXomK-5_uZWtRVM.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7ASFh0FKMI/AAAAAAAAAEE/3_54gZ8VCeM/s320/y1ppip27g9I-n_IXf24oJzGasZeqC8yk8_4Dgth2eCJaqfQow3BpirHEHt5WiAZNXomK-5_uZWtRVM.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASGSDJX8I/AAAAAAAAAEM/wgEgzYQtDHw/s1600/y1ppip27g9I-n-O8NCdxrc76gWerCVisnWVUQxBT9yy0i_de_Dt7CxepyWv8F_wnBPI_QUC5qpysPA.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASGSDJX8I/AAAAAAAAAEM/wgEgzYQtDHw/s320/y1ppip27g9I-n-O8NCdxrc76gWerCVisnWVUQxBT9yy0i_de_Dt7CxepyWv8F_wnBPI_QUC5qpysPA.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASIreAWDI/AAAAAAAAAEU/kw4h_choo0M/s1600/y1psOhvQcxGpAn6BbvjCsuGIjs7OPfuIUC1c_MzihgjI3T_bwtTN8mulExt69f3ENTv_GUUvOp6sAw.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASIreAWDI/AAAAAAAAAEU/kw4h_choo0M/s320/y1psOhvQcxGpAn6BbvjCsuGIjs7OPfuIUC1c_MzihgjI3T_bwtTN8mulExt69f3ENTv_GUUvOp6sAw.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASJdV_JVI/AAAAAAAAAEc/rF4gauS7U_0/s1600/y1pt8C7Tf7d4jtQA4N6HNKbzwKFKyB_l5PXzgRaDsdXaXuhalBsGh_KyBGqC23fY8BjsDEgL-IALZg.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASJdV_JVI/AAAAAAAAAEc/rF4gauS7U_0/s320/y1pt8C7Tf7d4jtQA4N6HNKbzwKFKyB_l5PXzgRaDsdXaXuhalBsGh_KyBGqC23fY8BjsDEgL-IALZg.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aKONQq2A3U0/S7ASKHiDN9I/AAAAAAAAAEk/7C7e-8YQAxQ/s1600/y1pt8C7Tf7d4jvxgWg1bU_J4FYcVi3Uy40oJRnh3ooEHhixtISFVgmoDOgbW2gMZYAjkL3L3KRGCaM.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aKONQq2A3U0/S7ASKHiDN9I/AAAAAAAAAEk/7C7e-8YQAxQ/s320/y1pt8C7Tf7d4jvxgWg1bU_J4FYcVi3Uy40oJRnh3ooEHhixtISFVgmoDOgbW2gMZYAjkL3L3KRGCaM.jpeg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASLzGRByI/AAAAAAAAAE0/NaGPO5gnmcc/s1600/y1pwJRGA4GoFbgwVoNchjT988NX9WEGX406jUogpr5jHx_XH23OHODuVWIbaoSUBZljSG4Rk5Y0buM.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aKONQq2A3U0/S7ASLzGRByI/AAAAAAAAAE0/NaGPO5gnmcc/s320/y1pwJRGA4GoFbgwVoNchjT988NX9WEGX406jUogpr5jHx_XH23OHODuVWIbaoSUBZljSG4Rk5Y0buM.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5828855760220275945-5015996912690743616?l=cautionsingularityahead.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cautionsingularityahead.blogspot.com/feeds/5015996912690743616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/04/micronauts-part-deux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5015996912690743616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5828855760220275945/posts/default/5015996912690743616'/><link rel='alternate' type='text/html' href='http://cautionsingularityahead.blogspot.com/2006/04/micronauts-part-deux.html' title='Micronauts, Part Deux'/><author><name>Joshua Bell</name><uri>http://www.blogger.com/profile/11234443161101614136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aKONQq2A3U0/S7ASLUQh7SI/AAAAAAAAAEs/iLlSF35UTNY/s72-c/y1pU_Ng_rhRd20rORHPKKL333nr_-SLWDawjg7qaG8zB8bCn6ZFNNuiy56fx5pZehuxoKY10yGDLN8.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
