<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Preston L. Bannister  { random memes }</title>
	<atom:link href="http://bannister.us/weblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://bannister.us/weblog</link>
	<description>A personal viewpoint about software, the web, and anything else of note.</description>
	<lastBuildDate>Thu, 14 Mar 2013 06:35:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Puzzle pieces and emotion</title>
		<link>http://bannister.us/weblog/2013/03/01/puzzle-pieces-and-emotion/</link>
		<comments>http://bannister.us/weblog/2013/03/01/puzzle-pieces-and-emotion/#comments</comments>
		<pubDate>Sat, 02 Mar 2013 03:30:07 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1949</guid>
		<description><![CDATA[This is the picture that broke my drawing. In college I took a single drawing class, and did somewhat well. Always wanted to take this a bit further. I took up drawing again, a couple years ago. A local artist hosted sessions in his studio where I could draw against a live model. My drawing [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/dreadedhill/5983561647/"><img src="http://farm7.staticflickr.com/6004/5983561647_bd37054a1e.jpg"/></a></p>
<p>This is the picture that broke my drawing.</p>
<p>In college I took a single drawing class, and did somewhat well. Always wanted to take this a bit further.</p>
<p>I took up drawing again, a couple years ago. A local artist hosted sessions in his studio where I could draw against a live model. My drawing improved to the point that I could do figures well enough, but needed practice with faces. Went into my saved favorites from Flickr to find the best faces for practice.</p>
<p>After the above, my drawings became mechanistic, crude, and no longer improved. Had no idea why. My frustration level at the end of a session was incandescent, and I eventually stopped drawing. </p>
<p>In the last several weeks I have gone back to the hosted sessions and tried to draw. My drawings were crude and my frustration level extreme. </p>
<p>&#8230;</p>
<p>Of late I have spent time with folk (musicians) whose emotions are very much on the surface. Very different from the engineers in my working life. Feeling everything seems to be connected with making good music. This connection brought to mind the earlier drawing sessions. When I was drawing well &#8230; my emotions were very much active. In a sense, I was a bit in love with subtle female curves, and how light touched the model&#8217;s body. (And have a positive disinterest in drawing male models.) The end of a session was a bit painful &#8211; like falling out of love.</p>
<p>Thinking back, the drawing above was the inflection point. I had to suppress emotion and could not finish the drawing. In later drawing sessions, my emotions were still off, and I drew poorly. </p>
<p>Went back to the artist&#8217;s studio this week. Intentionally kept my emotions on. For the first time in a long while, my drawing improved.</p>
<p>Connections &#8230; the girl in the above picture posted a series of photographs to Flickr that were, frankly, brilliant. After a time, her postings slowed, and then stopped. At first she claimed her camera had lost it&#8217;s focus. A bit later she admitted the camera was not at fault. I wonder if she too suppressed emotion, without knowing. Feeling everything is painful.</p>
<p><i>Update:</i> Three weeks and three drawing sessions later, my drawing continues to improve. </p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2013/03/01/puzzle-pieces-and-emotion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another Lisp flashback</title>
		<link>http://bannister.us/weblog/2012/03/18/another-lisp-flashback/</link>
		<comments>http://bannister.us/weblog/2012/03/18/another-lisp-flashback/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 09:00:42 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1940</guid>
		<description><![CDATA[Reading up on Dependency injection in the Spring Framework. Class-binding is late-assigned in XML (mainly). Spring uses another (different) interpreted language, derived from JSP expressions. Reading up on the Standard Template Library for C++. Class templates are written in this semi-interpreted template-script with tricky semantics, rather different from C++. Right. This is doing badly a [...]]]></description>
				<content:encoded><![CDATA[<p>Reading up on Dependency injection in the Spring Framework. Class-binding is late-assigned in XML (mainly). Spring uses another (different) interpreted language, derived from JSP expressions.</p>
<p>Reading up on the Standard Template Library for C++. Class templates are written in this semi-interpreted template-script with tricky semantics, rather different from C++.</p>
<p>Right. This is doing badly a long-ago learned lesson. Lisp does all it&#8217;s meta-level stuff in &#8230; Lisp. A decades old insight. C++ has this newly-invented semi-interpreted declarative script for templates &#8230; that is tricky to interpret and not reusable. JSP and Spring share a very limited expression language, that is very much a niche, and not much worth reusing.</p>
<p>The Lisp community learned decades back the lesson of using the same language for meta-level stuff as for the regular level. </p>
<p>In the Java domain, I would use Javascript as the meta-language. Not quite the same level, but close enough, and able (in the case of Rhino) to readily access the Java world. The JSP expression language is a limited wart. Use Javascript.</p>
<p>There are lots of higher-order languages that could fit in this space, but the presence of Javascript in the browsers offers a selection criteria. Javascript is good enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2012/03/18/another-lisp-flashback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Predictable ego &#8211; or &#8220;Shotwell&#8221; is a piece of crap &#8211; and priorities.</title>
		<link>http://bannister.us/weblog/2012/03/14/predictable-ego-or-shotwell-is-a-piece-of-crap-and-priorities/</link>
		<comments>http://bannister.us/weblog/2012/03/14/predictable-ego-or-shotwell-is-a-piece-of-crap-and-priorities/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 08:09:23 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1938</guid>
		<description><![CDATA[The prior photo-handler in Ubuntu was implemented in a slightly idiosyncratic language. Could be pragmatic, or could be programmer-ego. Not immediately obvious, which. The current photo-handler in Ubuntu (and OpenSUSE) is Shotwell &#8230; implemented in a *completely* idio &#8230; idiot &#8230; er, &#8220;unique&#8221; language. And it crashes on uploading photos &#8230; for months. (A photo-manager [...]]]></description>
				<content:encoded><![CDATA[<p>The prior photo-handler in Ubuntu was implemented in a slightly idiosyncratic language. Could be pragmatic, or could be programmer-ego. Not immediately obvious, which. The current photo-handler in Ubuntu (and OpenSUSE) is Shotwell &#8230; implemented in a *completely* idio &#8230; idiot &#8230; er, &#8220;unique&#8221; language. And it crashes on uploading photos &#8230; for months. (A photo-manager that cannot upload photos. Right.) There is an anti-pattern here.</p>
<p>We might make fun of Microsoft and the closed-source community for predictable sorts of anti-patterns &#8230; but the &#8220;open source&#8221; community is also prone to (different) sorts of anti-patterns. The photo-manager community is on a different sort of non-functional ego-trip, at present.</p>
<p>Not sure how much I care. Given a couple more (somewhat likely) upgrades at work, I may just buy a Mac, and stop spending my time getting this nonsense to work. (In my current role, less wasted personal time might translate to millions in revenue on the company&#8217;s bottom-line, through shortened product timelines. Nothing instantly provable, nor will I try. Personal motives still trump in personal time.)</p>
<p>Guess I am somewhat amused with the current tension. I do very much enjoy my work, but on personal time have more time than money. I have in past enjoyed spending personal time getting open source software to work &#8230; but not so much of late. Of late my personal time goes into my family, and to personal priorities. I spend personal time painting my house, fixing leaky toilets, driving my kids from one place to another, and other things. Would my work get more value if I could pay to get some of those things done? Very likely &#8230; but not easily provable, and I have no reason to try. As a guess, in my current situation, I would not be surprised if a thousand dollars of personal time translated into a million dollars of company revenue (or more). Given no way and no reason to prove &#8230; no point for me in spending time.</p>
<p>In a macro-economic sense, I am reasonably sure my choices are non-optimal. In the current economic system, my choices are personally optimal. This tension I find amusing.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2012/03/14/predictable-ego-or-shotwell-is-a-piece-of-crap-and-priorities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Progress</title>
		<link>http://bannister.us/weblog/2012/03/04/progress/</link>
		<comments>http://bannister.us/weblog/2012/03/04/progress/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 09:03:03 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1936</guid>
		<description><![CDATA[Not much on my weblog in the past year. The past year has been about personal change. At the work-level, went from working at a dull company with a dull product (kept alive only by a couple extreme efforts on my part). Served the purpose I needed. Allowed me a decade at home to raise [...]]]></description>
				<content:encoded><![CDATA[<p>Not much on my weblog in the past year. The past year has been about personal change. </p>
<p>At the work-level, went from working at a dull company with a dull product (kept alive only by a couple extreme efforts on my part). Served the purpose I needed. Allowed me a decade at home to raise my kids. The kids are doing great, and no longer need the time. The new job is anything but dull. (There was a bit of a worry on my part. Maybe I had become dull? As is turns out, hell no! This is fun &#8230; and my work could turn into more revenue for the new company than the entire gross income of the old company. Fun. A strong challenge. Definitely fun.)</p>
<p>At a personal level, had knee surgery about a year back, and working to bring my physical self in line with my self image. Hard to explain, perhaps. There was a time between high school and university when I did not know if I could reach the future I wanted. Hope was uncertain. Something woke, an aspect of my self, that took me then from an average cyclist to riding with UCSF category 2 cyclists (which at the time meant able to compete at a state and national level). These pictures are from that time:</p>
<p><a href="http://www.flickr.com/photos/dreadedhill/17460431/"><img src="http://farm1.staticflickr.com/13/17460431_aa076291d6_m.jpg" alt="Before the race" /></a><a href="http://www.flickr.com/photos/dreadedhill/17460586/"><img src="http://farm1.staticflickr.com/14/17460586_de0b4b0328_m.jpg" alt="... and after" /></a></p>
<p>Somewhere at the back of my mind, my mental self-image has always been something like what was in my mind at that time. In the past year, that long sleeping aspect awoke. Clearly I will never again be physically capable of what I could do as a 19-year-old kid, but I will do all that I can. Which as it turns out, is quite a lot. My weight has dropped, a lot. My endurance has increased. And I have added muscle mass. Lots of iteration needed. And something else.</p>
<p>Climbed up Saddleback Peak last weekend. The second time since resuming hiking. (The first was September 25, last weekend February 25.) My time to the top was close to 3 hours (for 8+ miles with 4000 feet of elevation change) with a similar time for the hike down. Perhaps my strongest hike yet, on that mountain. Took my regular ~11 mile longer hike through Whiting Ranch this weekend, and finished in my fastest time yet (a bit over 3 hours for ~2500 feet of elevation change &#8211; expected to be a slower, as still recovering from the Saddleback hike.) Getting steadily stronger.</p>
<p>Not done yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2012/03/04/progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mind tricks</title>
		<link>http://bannister.us/weblog/2012/02/02/mind-tricks/</link>
		<comments>http://bannister.us/weblog/2012/02/02/mind-tricks/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 06:39:30 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1934</guid>
		<description><![CDATA[During the &#8220;Art Walk&#8221; in Laguna Beach. Walking along a dark, crowded, noisy sidewalk. &#8220;Do you have a cigarette?&#8221; Heard distinctly from an approaching blonde girl, when still twenty-odd feet away. &#8220;No.&#8221; I answered, as the couple passed. &#8220;What??&#8221; She turned after we passed. &#8220;What did you say??&#8221; She had a very odd expression, as [...]]]></description>
				<content:encoded><![CDATA[<p>During the &#8220;Art Walk&#8221; in Laguna Beach. Walking along a dark, crowded, noisy sidewalk.</p>
<p>&#8220;Do you have a cigarette?&#8221; Heard distinctly from an approaching blonde girl, when still twenty-odd feet away.</p>
<p>&#8220;No.&#8221; I answered, as the couple passed.</p>
<p>&#8220;What??&#8221; She turned after we passed. &#8220;What did you say??&#8221; She had a very odd expression, as she approached.</p>
<p>&#8220;I do not smoke.&#8221; She continued to stare. &#8220;You look surprised. Do I look like someone who smokes?&#8221;</p>
<p>&#8220;Yes.&#8221;</p>
<p>I smiled, turned and walked away.</p>
<p>Later, I could not quite place her expression. First, I thought she was surprised, but that did not fit. Puzzled is closer.</p>
<p>Perhaps she was asking the question of her companion, though she was looking directly at me, and she spoke clearly enough to be heard quite a distance away. That might account for the puzzlement.</p>
<p>On reflection, I heard her very clearly from a distance &#8211; I usually have trouble in noisy environments, even up close &#8211; and I do not recall seeing her lips move. Mind tricks. Dark sidewalk, many distractions &#8230; but why the expression?</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2012/02/02/mind-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When in doubt, confuse the innocent.</title>
		<link>http://bannister.us/weblog/2011/10/26/when-in-doubt-confuse-the-innocent/</link>
		<comments>http://bannister.us/weblog/2011/10/26/when-in-doubt-confuse-the-innocent/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 05:36:01 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1933</guid>
		<description><![CDATA[It is fun, having intelligent children. Was trying to remember a phrase. I have an odd memory. I cannot remember a person&#8217;s name, told to me moments ago, but came recall an interesting notion from decades back. There was a quote. Something like &#8220;Confuse the idiots&#8221;, but deliciously subtle. I could not recall the exact [...]]]></description>
				<content:encoded><![CDATA[<p>It is fun, having intelligent children. Was trying to remember a phrase. I have an odd memory. I cannot remember a person&#8217;s name, told to me moments ago, but came recall an interesting notion from decades back.</p>
<p>There was a quote. Something like &#8220;Confuse the idiots&#8221;, but deliciously subtle. I could not recall the exact phrase, so my daughter started hammering at Google, trying to find variants. Not sure that we found (eventually) the exact phrase, but this comes at least close in subtlety:</p>
<blockquote><p>When in doubt, confuse the innocent.</p></blockquote>
<p>Sometimes I think, as a Father, I did not completely screw up. <img src='http://bannister.us/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Just after, I found this: <a href="https://www.facebook.com/photo.php?fbid=245599892155361&#038;set=a.245579952157355.55710.236058619776155&#038;type=1&#038;theater">Adam&#8217;s Family reference</a> Still looking for my <a href="http://en.wikipedia.org/wiki/Morticia_Addams">Morticia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/10/26/when-in-doubt-confuse-the-innocent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Misplaced Music?</title>
		<link>http://bannister.us/weblog/2011/07/18/misplaced-music/</link>
		<comments>http://bannister.us/weblog/2011/07/18/misplaced-music/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 08:40:53 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1928</guid>
		<description><![CDATA[Trying to rebuild a personal social network. Something I neglected over the last decade. Music &#8230; local social groups offer &#8220;tribute&#8221; bands. Not interested. I liked &#8230; at the time &#8230; a lot of the then-popular bands. The &#8220;tribute&#8221; groups are bands that cannot produce of value their own music. I did like the &#8217;70&#8242;s [...]]]></description>
				<content:encoded><![CDATA[<p>Trying to rebuild a personal social network. Something I neglected over the last decade.</p>
<p>Music &#8230; local social groups offer &#8220;tribute&#8221; bands. Not interested. I liked &#8230; at the time &#8230; a lot of the then-popular bands. The &#8220;tribute&#8221; groups are bands that cannot produce of value their own music. I did like the &#8217;70&#8242;s bands &#8230; in the 70&#8242;s. I liked the &#8217;80&#8242;s bands, in the &#8217;80&#8242;s. In the present? I find the old bands (and their reproductions) a bit boring.</p>
<p>Who is new and who is interesting?</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/07/18/misplaced-music/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Active organizing in place of passive participation?</title>
		<link>http://bannister.us/weblog/2011/07/02/active-organizing-in-place-of-passive-participation/</link>
		<comments>http://bannister.us/weblog/2011/07/02/active-organizing-in-place-of-passive-participation/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 08:25:46 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1926</guid>
		<description><![CDATA[I am trying to tie together a whole lot of threads into a coherent whole. This is going to be rough (very very rough), in the first iterations, under I can better sort things out. Of late, I have been wandering around, trying random things, trying to get socially reconnected. But I am odd. What [...]]]></description>
				<content:encoded><![CDATA[<p>I am trying to tie together a whole lot of threads into a coherent whole. This is going to be rough (very very rough), in the first iterations, under I can better sort things out.</p>
<p>Of late, I have been wandering around, trying random things, trying to get socially reconnected. But I am odd. What I find interesting is not what is most common. That means the existing venues are &#8211; for me &#8211; just not interesting.</p>
<p>The first part of the problem is the shape of our current suburban society. In fact, there is not a whole lot of society. For reasons that are both <a href="http://bannister.us/weblog/2004/06/19/suburban-planning/">too simple and too complex</a>, most folk live in a physical and social environment that promotes silos and isolation. No intention, no design &#8211; and not enough understanding of the problem.</p>
<p>Well &#8230; we cannot revamp the physical world, but perhaps through focused choices, intentional action, we can route around what does not work.</p>
<p>Quite a lot of social coherence grows out of incidental interaction &#8211; which for the most part just does not happen by default in suburban society. Can we intentionally build social coherence? I think so. There are always a few exceptional actors, but they need a clear plan, and a plan that works. What plan works?</p>
<p>One notion that I find interesting is <a href="http://shareable.net/blog/how-to-host-a-stranger-dinner">Stranger Dinners</a>. I suspect that what works for a single 20-something attractive female as a host does not necessary work for another host or age group &#8230; but the base notion is still interesting. The notion of pulling together mostly-unrelated folk for interesting incidental social interaction seems to make some sense &#8211; if we can find a simple formula that can be readily replicated, for many hosts.</p>
<p>Pulling folk together outside of our usual silos has to be a primary. Putting together mutually interesting small meetings of dissimilar folk has to be also(?) primary. </p>
<p>Initial Questions:
<ul>
<li>How distinct in terms of group should be each participant?</li>
<li>Am I massively over-analyzing the problem? (likely)</li>
</ul>
<p>The above all needs to be reduced to a simple and clear message.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/07/02/active-organizing-in-place-of-passive-participation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Longevity Project</title>
		<link>http://bannister.us/weblog/2011/07/01/the-longevity-project/</link>
		<comments>http://bannister.us/weblog/2011/07/01/the-longevity-project/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 18:01:08 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1925</guid>
		<description><![CDATA[Picked up a pretty good book, on a random browse through the bookstore &#8211; which is unusual as most books I end up buying through recommendations and Amazon. The Longevity Project website, Borders (where I bought the book), Amazon, NPR, Atlantic, Stanford, Psychology Today The interesting bit (for me) is that this is a eight [...]]]></description>
				<content:encoded><![CDATA[<p>Picked up a pretty good book, on a random browse through the bookstore &#8211; which is unusual as most books I end up buying through recommendations and Amazon. </p>
<p><b>The Longevity Project</b><br />
<a href="http://www.howardsfriedman.com/longevityproject/">website</a>, <a href="http://www.borders.com/online/store/TitleDetail?sku=1594630755">Borders (where I bought the book)</a>, <a href="http://www.amazon.com/Longevity-Project-Surprising-Discoveries-Eight-Decade/dp/1594630755">Amazon</a>, <a href="http://www.npr.org/2011/03/24/134827587/secrets-to-longevity-its-not-all-about-broccoli">NPR</a>, <a href="http://www.theatlantic.com/life/archive/2011/03/the-longevity-project-decades-of-data-reveal-paths-to-long-life/72290/">Atlantic</a>, <a href="http://www.stanfordalumni.org/news/magazine/2000/julaug/articles/terman.html">Stanford</a>, <a href="http://www.psychologytoday.com/blog/beautiful-minds/200909/the-truth-about-the-termites">Psychology Today</a></p>
<p>The interesting bit (for me) is that this is a eight decade long study of gifted middle class children from public schools in California &#8211; a group of folk much like myself &#8211; so the results should be more than usually applicable. The derived conclusions are rather encouraging. Turns out I might have a good chance to live much longer than some of my short-lived closest relatives. <img src='http://bannister.us/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/07/01/the-longevity-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An odd insight &#8211; Dyson on Feynman</title>
		<link>http://bannister.us/weblog/2011/05/11/an-odd-insight-dyson-on-feynman/</link>
		<comments>http://bannister.us/weblog/2011/05/11/an-odd-insight-dyson-on-feynman/#comments</comments>
		<pubDate>Wed, 11 May 2011 18:44:54 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1921</guid>
		<description><![CDATA[Finished reading Freeman Dyson&#8217;s book Disturbing the Universe a few weeks back. Gained a couple unexpected insights &#8211; one about nuclear power and one about the Physics of Richard Feynman. Before going to university I read quite a few books about science and Physics, but the local city library had very little about (then) recent [...]]]></description>
				<content:encoded><![CDATA[<p>Finished reading Freeman Dyson&#8217;s book <a href="http://www.amazon.com/Disturbing-Universe-Sloan-Foundation-Science/dp/0465016774/ref=sr_1_2?s=books&#038;ie=UTF8&#038;qid=1305135954&#038;sr=1-2">Disturbing the Universe</a> a few weeks back. Gained a couple unexpected insights &#8211; one about <a href="http://bannister.us/weblog/2011/03/27/what-went-wrong-with-nuclear-power/">nuclear power</a> and one about the Physics of Richard Feynman.</p>
<p>Before going to university I read quite a few books about science and Physics, but the local city library had very little about (then) recent Physicists. When at university I certainly heard about Feynman, who has then teaching at CalTech, not far from UCI where I was attending. In school my reading was mainly textbooks. As my interests shifted from Physics to software, my readings shifted as well. So far as I know, I have never read anything written by Feynman.</p>
<p>Though Physics is not my domain, occasional play with notions about Physics has always been in the back of my mind. Lacking the math needed to do real work, there is no consequence to my idle thoughts. </p>
<p>Rather a while ago, I settled on an <a href="http://bannister.us/weblog/2008/12/06/the-other-tiger/">odd intuitive</a> <a href="http://bannister.us/weblog/2008/12/09/metaphors-and-reality/">view</a> of Physics. The surprise in reading Dyson&#8217;s book was finding that Feynman had arrived at his own unique view of Physics, that seems to exactly match my own. Clearly Feynman was capable of doing the relevant math, and I am not. Did I at one point read something of Feynman&#8217;s, and it only recently bubbled to the surface, or did I come to the same view entirely on my own? No way to tell, for certain.</p>
<p>Started practicing drawing again. The only Art course I have ever taken in my life was a year at university, of which only the first few months was drawing. Picked up drawing relatively quickly, compared to those of similar experience, but was hopelessly poor compared to those who had practiced their entire (then young) lives. Always wanted to develop further, and my recent practice is a good way to trim any excess ego. (Read: I am improving, but have a <strong>long</strong> way to go!) A friend recommended an excellent book: <a href="http://www.amazon.com/New-Drawing-Right-Side-Brain/dp/0874774195/ref=ntt_at_ep_dpi_1">Drawing on the Right Side of the Brain</a>. Turns out the book has taught me nothing about drawing, exactly, as the recommended practices I had already somehow found on my own. Instead what I got from the book was a bit of enlightenment &#8211; that somehow I have always had a fully turned on &#8220;intuitive&#8221; mind. This explains some of the <a href="http://bannister.us/weblog/2009/08/26/building-things/">odd moments</a> in my past, and how I approach my work.</p>
<p>Apparently Feynman was odd in the same way. Wonder what would have happened if I had encountered Feynman when in school. Would I have stayed in Physics?</p>
<p>Curious.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/05/11/an-odd-insight-dyson-on-feynman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When spending time with doctors and hospitals is good news.</title>
		<link>http://bannister.us/weblog/2011/05/11/when-spending-time-with-doctors-and-hospitals-is-good-news/</link>
		<comments>http://bannister.us/weblog/2011/05/11/when-spending-time-with-doctors-and-hospitals-is-good-news/#comments</comments>
		<pubDate>Wed, 11 May 2011 17:33:07 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1919</guid>
		<description><![CDATA[Been spending a lot of time with doctors, hospitals, getting tests &#8211; and it is all good news. During my last bout with pneumonia, had to find a new doctor. Got very lucky. My doctor in turn gave an excellent recommendation for a knee doctor. Lots of tests, including a visit to a cardiologist (there [...]]]></description>
				<content:encoded><![CDATA[<p>Been spending a lot of time with doctors, hospitals, getting tests &#8211; and it is all good news.</p>
<p>During my last bout with pneumonia, had to find a <a href="http://bannister.us/weblog/2011/03/29/found-a-doctor-i-like-for-the-very-first-time/">new doctor</a>. Got very lucky.</p>
<p>My doctor in turn gave an excellent recommendation for a knee doctor. Lots of tests, including a visit to a cardiologist (there are heart problems on both sides of my family tree), all with good results. Got surgery on both knees a bit over four weeks back. Have been able to <a href="http://runkeeper.com/user/dreadedhill/profile">resume hiking</a>, for the first time in several years. Got a long ways to go, but &#8230; <em>Hell Yes!</em></p>
<p>My doctor ordered an unusual set of tests, found a clue, and gave an excellent recommendation for a Pulmnologist. The lung doctor ordered quite a series of tests, leading to a lung biopsy &#8211; not a fun procedure. There is a bunch of &#8220;weird shit&#8221; at the bottom of my right lung, that the doctor suspects is &#8220;Valley fever&#8221; &#8211; a fungus that sometimes settles in and causes repeated bouts of pneumonia. About every four years, for the last forty years, I have a fairly nasty bout with pneumonia. If the tests confirm the doctor&#8217;s suspicion, this is treatable. For the first time in forty years I could be free of this unwanted &#8220;guest&#8221; that constantly drains my immune system, and has tried to kill me about every four years. <em>Hell, yes.</em></p>
<p>Very seriously jazzed. Apparently I can be quite entertaining when seriously &#8220;up&#8221;, at least based on the nurses&#8217; reactions. <img src='http://bannister.us/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/05/11/when-spending-time-with-doctors-and-hospitals-is-good-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sex is cheap?</title>
		<link>http://bannister.us/weblog/2011/05/02/sex-is-cheap/</link>
		<comments>http://bannister.us/weblog/2011/05/02/sex-is-cheap/#comments</comments>
		<pubDate>Mon, 02 May 2011 18:50:12 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1916</guid>
		<description><![CDATA[Ran across an article in Slate: Sex Is Cheap Why young men have the upper hand in bed, even when they&#8217;re failing in life. What the article says fits with the behavior I see around my sons. Sex seems to very available, and cheap. Guess I was born into the wrong generation. On the other [...]]]></description>
				<content:encoded><![CDATA[<p>Ran across an article in <b>Slate</b>:</p>
<p><a href="http://www.slate.com/id/2286240/pagenum/all/"><strong>Sex Is Cheap</strong><br />
Why young men have the upper hand in bed, even when they&#8217;re failing in life.</a></p>
<p>What the article says fits with the behavior I see around my sons. Sex seems to very available, and cheap. Guess I was born into the wrong generation. <img src='http://bannister.us/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>On the other hand, I have a daughter &#8230; wonder if there are still colleges with a larger male population.</p>
<p>Saw a reference &#8230; somewhere &#8230; that this crosses generations, that 20-something younger women are hunting out the more &#8220;valuable&#8221; older men, and that the greatest impact is on the late-30&#8242;s career-minded woman, who suddenly finds the dating pool near her age depleted. Cannot find that reference&#8230;</p>
<p>Very &#8230; odd?</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/05/02/sex-is-cheap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Segregation &#8211; Partition the problem</title>
		<link>http://bannister.us/weblog/2011/04/15/segregation-partition-the-problem/</link>
		<comments>http://bannister.us/weblog/2011/04/15/segregation-partition-the-problem/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 19:04:39 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1914</guid>
		<description><![CDATA[My question (in 2002) to Steve Theby, who originally told this story: You were part of a project deploying a large database application. Response/processing times were not reliable or predictable until each computer was dedicated to a specific kind of transaction. At least this is my somewhat hazy collection. Steve&#8217;s answer: Yes&#8230;I did work on [...]]]></description>
				<content:encoded><![CDATA[<p>My question (in 2002) to Steve Theby, who originally told this story:</p>
<blockquote><p>You were part of a project deploying a large database application.<br />
Response/processing times were not reliable or predictable until each<br />
computer was dedicated to a specific kind of transaction.</p>
<p>At least this is my somewhat hazy collection.
</p></blockquote>
<p><em>Steve&#8217;s answer:</em></p>
<p>Yes&#8230;I did work on a very large project that essentially constructed a predictable response framework for American Express credit card processing. I worked on it under a contract with McDonnell Douglas in St. Louis (we had the world&#8217;s largest computer room with over 100 IBM system engineers permanently on site). The tape hanger personnel used to wear roller skates so they could mount/unmount drives faster (I&#8217;m not making this up). We had at least 300 tape drives the size of a four drawer, 30&#8243; filing cabinet and a tape archive storing more than 30,000 tapes. Anyway&#8230;I digress&#8230;</p>
<p><strong>Application</strong></p>
<p>This was a world-wide application responsible for evaluating and authorizing credit transactions. They planned to have several large IBM mainframes located in the US and the UK to balance out the US and European transaction loads. Our work headed us to Brighton, UK for about a one year period. The application was written in COBOL using the CICS transaction monitor plus the IMS shallow network database. CICS gave us a terminal handling front end that allowed the application to scale up with respect to connections and IMS gave us a very quick, indexed hierarchical lookup capability.</p>
<p><strong>Architecture</strong></p>
<p>The initial architecture for the application pushed all transactions through a single machine in a FIFO queue. Although this somewhat worked for small loads (when the machine was below 40% utilization), it failed quite predictably at medium to large loads. Even at small loads we could not reliably predict closure times across transactions. This was primarily because each transaction had different resource requirements in terms of database I/O, CPU and communication transit time and they were mixed together.</p>
<p>The goal was for a single mainframe to handle 2000 terminals. As I recall, the 40% mark was reached at about 200 terminals (a bit shy of expectations). This was a monster machine (something like a 30MHz CPU with 512K of awesome memory and 30MB 2119 removable disk packs). I will say that the thing really ran due to its wonderful I/O channels&#8230;.something PCs still don&#8217;t have&#8230; I believe that each merchant had a special dialup 1200 baud modem for super fast connectivity. Our Solution &#8211; separate transactions into like sets and route to different machines</p>
<p>We started a transaction QA group that put together a process called CPA for Call Pattern Analysis. This process evaluated each transaction sequence for its CPU, I/O and database resources required. We ended up strongly typing each transaction based on where it fit in this resource profile. If I recall correctly, it went something like this:</p>
<table>
<thead>
<tr>
<th>Type</th>
<th>CPU</th>
<th>I/O</th>
<th>DB</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>0.0 &lt; seconds &lt; 0.1</td>
<td>0 &lt; bytes &lt; 500</td>
<td>00 &lt; calls &lt; 05</td>
</tr>
<tr>
<td>2</td>
<td>0.1 &lt; seconds &lt; 0.5</td>
<td>500 &lt; bytes &lt; 1000</td>
<td>05 &lt; calls &lt; 20</td>
</tr>
<tr>
<td>3</td>
<td>0.5 &lt; seconds &lt; 3.0</td>
<td>1000 &lt; bytes &lt; 2000</td>
<td>20 &lt; calls &lt; 50</td>
</tr>
<tr>
<td>4 (batch)</td>
<td>3.0 &lt; seconds</td>
<td>2000 &lt; bytes</td>
<td>50 &lt; calls</td>
</tr>
</tbody>
</table>
<p>We then routed transactions of the same type to a designated machine so that we could predict when a transaction would finish (this put all the same size stones in the same hour glass instead of mixing sand, stones and boulders).</p>
<p>This really helped things out and wound up meeting the expectations of American Express. Even though this meant that some machines were frequently idle, each type of transaction was fairly dealt with and dispatched in a uniform, consistent manner.</p>
<p>Before this arrangement, we had small transactions executing very quickly (&lt; 1 sec) one time and then stalling out for 10 seconds the next time because of a &#8216;boulder&#8217; transaction hogging everything.</p>
<p>Hopefully this helps. I looked briefly for some of our old documentation but couldn&#8217;t find anything (that was 12 years, 10 managers and 3 companies ago).</p>
<div><i>Stephen Theby (stheby@drsys.com), PRO-IV Tools, Architect<br />
1-714-724-5640 (Irvine, Ca), 1-314-214-4025 (St. Louis, Mo)</i></div>
<hr />
<p><strong>Implications</strong></p>
<p>
Applied to the present, I believe this story has interesting implications. Start with the fact that the inexpensive PCs of today are remarkably powerful, compared to the machines of 10 or 15 years ago. Almost ridiculously so.</p>
<p>Add to this the lesson from the above story about partitioning the problem, so that similar operations are on one machine.</p>
<p>In the past it made sense to run lots of services (mail, news, database, files, etc.) off one machine, as computers were expensive. This is no longer the case. Computers are cheap. Today you are likely better off using each server for a single purpose, and no other purpose. Once a server is running reliably, lock the box in a closet, and leave it alone.</p>
<p>Note that this model also applies to the desktop.</p>
<p>The Windows PCs of today are in a sense turning into the mainframes of yesteryear. Fully install Windows NT and Microsoft Office and you get hundreds of megabytes of seldom used services. Address books, spelling and grammar checkers, database engines, and lots of other seldom (if ever) used services. Hundreds of megabytes of code and data, most of which will never be used.</p>
<p>Imagine instead that we carve off chunks of functionality to dedicated servers.</p>
<p>Spelling checkers run on a dedicated spelling check server. All that runs on the client is a small bit of code to make requests of the server. Performance is likely better as a properly configured (and now inexpensive) server is likely able to turn around requests in less time than it would take to load the spelling checker and word lists from local disk. Not incidentally a spelling check server is likely to have current lists of company specific words, and so is able to prove not only faster but also better answers.</p>
<p>Apply the same model to address books. An address book server (LDAP is of interest here) can have individual, department and company address books. With proper configuration, you again can get both faster and better answers.</p>
<p>Repeat for every activity that is not inherently local to the desktop.</p>
<p>Note that unlike the mainframes of yesteryear, the goal for a &#8220;properly configured&#8221; dedicated server, is to optimize response time. Where once we would try to make use of every spare mainframe cycle, with dedicated servers the goal is to respond to incoming requests as quickly as if the server were idle.</p>
<p>One way of looking at this notion is as a natural step in the evolution from shared mainframes, though desktop PCs, to network computers.</p>
<ul>
<li>With mainframes the idea was for all users and tasks to share a single machine.</li>
<li>With desktop PCs the idea was for all tasks for one user to share a single machine.</li>
<li>With network computers and dedicated servers the idea is for any single task use as many machines as needed to complete quickly.</li>
</ul>
<p>All this inferred from an old application that today could run off a single server with an attached RAID <img src='http://bannister.us/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/04/15/segregation-partition-the-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Story based reasoning and interviews</title>
		<link>http://bannister.us/weblog/2011/04/15/story-based-reasoning-and-interviews/</link>
		<comments>http://bannister.us/weblog/2011/04/15/story-based-reasoning-and-interviews/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 18:39:41 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1912</guid>
		<description><![CDATA[Roger Schank (a prominent AI figure) gave a talk at UCI several years back. His notion was the humans do not naturally reason deductively, rather we use something he called &#8220;story-based reasoning&#8221;. In fact most of human communication is in the form of &#8220;mini-stories&#8221;. This upset the deductive AI people to no end, but to [...]]]></description>
				<content:encoded><![CDATA[<p>Roger Schank (a prominent AI figure) gave a talk at UCI several years back. His notion was the humans do not naturally reason deductively, rather we use something he called &#8220;story-based reasoning&#8221;. In fact most of human communication is in the form of &#8220;mini-stories&#8221;. This upset the deductive AI people to no end, but to me seemed to make a great deal of sense.</p>
<p>(There is a certain amount of recursion here).</p>
<p>When I have done interviews I have found it useful to get the interviewee to tell stories. In particular stories about work they have done in the past &#8211; what worked, what didn&#8217;t, points of interest, how did they approach the problem.</p>
<p>My notion is that if you can cast your experiences as a story, bringing out points of interest both high and low, then you are likely to have gained a good understanding.</p>
<p>In one run of interviews we divided up so that one set of interviewers did the detailed tech questions, and I tried to pull stories from the interviewee about work they had done. Our opinions after the interviews agreed remarkably. Those interviewed who could tell good stories, generally did well on the tech questions. In a few cases the interviewee did well in the tech questions, but not at telling stories.</p>
<p>In those cases where a candidate did well on the tech questions, but not at telling stories, our opinions agreed. The interviewers who had asked the tech questions were usually uncomfortable with these interviewees.</p>
<p>(So I&#8217;ve just told you a story, about eliciting stories from the interviewee, to evaluate reasoning ability, in terms of stories&#8230;).</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/04/15/story-based-reasoning-and-interviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firsts</title>
		<link>http://bannister.us/weblog/2011/04/15/firsts/</link>
		<comments>http://bannister.us/weblog/2011/04/15/firsts/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 18:34:19 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1913</guid>
		<description><![CDATA[A list of programming languages is not very informative, so I compiled this list. (Right. Like this page really has a serious purpose.) 1973 - First program in Fortran 1974 - First program in Basic 1978 - First program in Pascal 1979 - First program in Lisp 1983 - First program in Modula-2 1984 - [...]]]></description>
				<content:encoded><![CDATA[<p>A list of programming languages is not very informative, so I compiled this list.<br />
<em>(Right. Like this page really has a serious purpose.)</em></p>
<p>1973	- First program in Fortran<br />
1974	- First program in Basic<br />
1978	- First program in Pascal<br />
1979	- First program in Lisp<br />
1983	- First program in Modula-2<br />
1984	- First VCR program<br />
1984	- First program for DOS<br />
1984	- First program for Windows (barely)<br />
1985	- First program for Unix<br />
1985	- First program in C<br />
1986	- First used SQL (with Oracle)<br />
1987	- First program in AWK<br />
1992	- First program in C++ (maybe 1989? When did g++ come out?)<br />
1992	- First program in Visual Basic<br />
1992	- Second program for Windows<br />
1993	- First Web page<br />
1994	- First program in Java<br />
1998	- First program in Perl<br />
1999	- First ATL/COM program (not counting some small stuff in 1996)<br />
1999	- First Java servlets<br />
1999	- First IBM mainframe program (since 1973)<br />
2002	- First PHP script<br />
2003	- First full dynamic web application: HTML, CSS, Javascript, Java</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/04/15/firsts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Burning Man isn&#8217;t &#8211; anymore</title>
		<link>http://bannister.us/weblog/2011/04/04/burning-man-isnt-anymore/</link>
		<comments>http://bannister.us/weblog/2011/04/04/burning-man-isnt-anymore/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 22:25:43 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1911</guid>
		<description><![CDATA[First time I heard of the Burning Man event it sounded pretty cool &#8211; a scrappy creative exercise outside the usual bounds. At the time I was wrapped up in the tail end of a bad marriage, and had young kids to tend. Attending was just not practical. A few days back, saw an announcement [...]]]></description>
				<content:encoded><![CDATA[<p>First time I heard of the <a href="http://en.wikipedia.org/wiki/Burning_Man">Burning Man</a> <a href="http://www.burningman.com/">event</a> it sounded pretty cool &#8211; a scrappy creative exercise outside the usual bounds. At the time I was wrapped up in the tail end of a bad marriage, and had young kids to tend. Attending was just not practical.</p>
<p>A few days back, saw an announcement for a local group to build an exhibit for Burning Man. Sounded interesting &#8211; a break from my usual routine, and chance to be a little random. Have been slowly turning my garage into a personal workshop. I like to build things, and this would not be the first time I fabricated something without &#8230; coloring between the lines. </p>
<p>The drive through Los Angeles and into Hollywood lived up to the LA reputation for lousy traffic (this on a Sunday evening), but was not too bad. Got to the meeting place at the appointed time (was the only one to show up of those that promised), chatted for a while with the guy who posted the announcement, chewed on some notions, then &#8211; when it became clear no one else was going to show &#8211; headed home. Spent the drive home thinking of possible practical-to-fabricate riffs on the main theme.</p>
<p>Pretty interesting, so far. There were some odd notes in the conversation that I could not place. When I got home, checked the Burning Man site for pragmatics.</p>
<p>Ticket prices are just shy of $400/person. Oh. Right. Now the odd notes made sense. This is no longer the scrappy/creative event it once was. Burning Man is no longer Dadaist, but rather a very bourgeois cool-kids party. Scrappy is gone. My model is whether I would go as a cash-strapped college student (as I once was). To the original Burning Man, yes. To the present example, no. Substantial ticket prices exclude the more random and keep out the riffraff.</p>
<p>With that realization, my interest evaporated.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/04/04/burning-man-isnt-anymore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Found a doctor I like &#8230; for the very first time</title>
		<link>http://bannister.us/weblog/2011/03/29/found-a-doctor-i-like-for-the-very-first-time/</link>
		<comments>http://bannister.us/weblog/2011/03/29/found-a-doctor-i-like-for-the-very-first-time/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 05:02:04 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1898</guid>
		<description><![CDATA[A remarkable thing, thus the remark. For the very first time, quite by accident, I have found a doctor that I like. Unexpected, that. If you live in south Orange County, California and you need a doctor, I suggest you check out: Michael A. Waldman, M.D., FACP DIPLOMATE AMERICAN BOARD OF INTERNAL MEDICINE #2 Hughes [...]]]></description>
				<content:encoded><![CDATA[<p>A remarkable thing, thus the remark. For the very first time, quite by accident, I have found a doctor that I like. Unexpected, that. If you live in south Orange County, California and you need a doctor, I suggest you check out:</p>
<blockquote><p>
Michael A. Waldman, M.D., FACP<br />
<small>DIPLOMATE AMERICAN BOARD OF INTERNAL MEDICINE</small><br />
#2 Hughes<br />
Suite 175<br />
Irvine, California  92618<br />
phone: 949.600.8260
</p></blockquote>
<p>By far the sharpest guy I have ever met at a doctor&#8217;s appointment. <img src='http://bannister.us/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><b>Update:</b> Turns out the other folk he has sent me to are also very good. </p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/03/29/found-a-doctor-i-like-for-the-very-first-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What went wrong with nuclear power</title>
		<link>http://bannister.us/weblog/2011/03/27/what-went-wrong-with-nuclear-power/</link>
		<comments>http://bannister.us/weblog/2011/03/27/what-went-wrong-with-nuclear-power/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 18:08:49 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Society]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1896</guid>
		<description><![CDATA[Oddly enough, I found one of my missing pieces yesterday, quite by accident. Reading Freeman Dyson&#8217;s book &#8220;Disturbing the Universe&#8221; (1979). Did not know he had anything to do with nuclear reactors. Turns out he was part of a small very capable group that designed an early &#8220;fail-safe&#8221; nuclear reactor &#8211; one that did not [...]]]></description>
				<content:encoded><![CDATA[<p>Oddly enough, I found one of my missing pieces yesterday, quite by accident. </p>
<p>Reading Freeman Dyson&#8217;s book &#8220;Disturbing the Universe&#8221; (1979). Did not know he had anything to do with nuclear reactors. Turns out he was part of a small very capable group that designed an early &#8220;fail-safe&#8221; nuclear reactor &#8211; one that did not require active systems to maintain safety. (The same kind that was in the basement of the Physics building at UCI, before and while I was there.)</p>
<p>I had long suspected that something had gone wrong, and innovation in reactor design was somehow derailed, but all I had was a suspicion. In Dyson&#8217;s book there is a rather long section where he ascribes the failure of nuclear power to match the initial high hopes to interference from government and business, and the shutdown of progress on new designs.</p>
<p>And he was writing in 1979, from first-hand experience.</p>
<p>When someone asks if I am &#8220;pro-nuclear&#8221;, the answer is a little long. I am very much against using old reactor designs that always require active systems to maintain safety (exactly the problem the Japanese are having right now). But engineers and scientists are clever folk. Given the right folk and enough resources, my bet is they could come up with designs that &#8220;fail-safe&#8221;, and generate far less waste. Given safe reactors and small waste, we could have plentiful power, and <b>very</b> much less impact on the environment than we get now, burning fossil fuels.</p>
<p>Dyson&#8217;s early group (some very idealistic folk) designed a &#8220;fail-safe&#8221; small research reactor (not for power generation). General Atomic has sold hundreds of copies &#8230; and they are boring. Basically, nothing ever goes wrong. This is an example of the very best design, by the very best folk.</p>
<p>Imagine what the world would be like if research had continued, we got ultra-safe nuclear reactor designs, and instead of 30-40 years of depleting fossil fuels (and all the attendant political mess), we had plentiful cheap energy from completely boring non-polluting plants.</p>
<p>Many of those very early folk (many who had worked on early nuclear weapons) were very idealistic. They wanted a better world, and very much wanted to put nuclear power to positive use. The story of how that went wrong is &#8230; tricky.</p>
<p>Nuclear power is at present the only long term viable solution to meet the bulk of our energy needs. Given the best possible engineering, nuclear power should also do the least harm to the environment (and would undo a lot of the harm presently done). But before building new reactors in large numbers, we need to take a good hard look at improving the designs. We want designs that will serve us best over the long stretch of history, not whatever is quickest to build, today.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/03/27/what-went-wrong-with-nuclear-power/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Very pleased</title>
		<link>http://bannister.us/weblog/2011/03/19/very-pleased/</link>
		<comments>http://bannister.us/weblog/2011/03/19/very-pleased/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 05:20:33 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1890</guid>
		<description><![CDATA[Wanted to capture this picture for years. Green grass, blue skies, an animal in the right place &#8230; all are unusual. This last Wednesday, everything lined up.]]></description>
				<content:encoded><![CDATA[<p>Wanted to capture this picture for years.</p>
<p><a href="http://www.flickr.com/photos/dreadedhill/5533507210/"><img src="http://farm6.staticflickr.com/5055/5533507210_023490c520_n.jpg" alt="Good thing he cannot read" width="320" height="240" /></a></p>
<p>Green grass, blue skies, an animal in the right place &#8230; all are unusual.<br />
This last Wednesday, everything lined up.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/03/19/very-pleased/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Help the Libyans</title>
		<link>http://bannister.us/weblog/2011/03/04/help-the-libyans/</link>
		<comments>http://bannister.us/weblog/2011/03/04/help-the-libyans/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 17:10:08 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1889</guid>
		<description><![CDATA[For once, I wish my government would do the right thing, rather than what is easy or expedient. The Libyans are standing up, and pushing back, against their old corrupt government. This is an amazing thing. But the corrupt old man has had decades, and the wealth of his nation, to buy weapons and followers. [...]]]></description>
				<content:encoded><![CDATA[<p>For once, I wish my government would do the right thing, rather than what is easy or expedient.</p>
<p>The Libyans are standing up, and pushing back, against their old corrupt government. This is an amazing thing. But the corrupt old man has had decades, and the wealth of his nation, to buy weapons and followers. The cost in human lives could be high.</p>
<p>We could help. It is very much in the character of the American people to admire such things. But folk in the Middle East are deeply ambivalent about American involvement, with some reason. We need to be careful in what we do. But a substantial gesture of some sort seems in order.</p>
<p>Sending weapons does not seem quite right. There are more than enough weapons sloshing around the world.</p>
<p>Sending money does not seem right. Money tends to carry too many quiet corruptions.</p>
<p>What we could do is remove the old man&#8217;s advantage, correct the imbalance. Strike hard, once, where the Libyan rebels want, and then leave. We do not want Americans pointing guns at other folk longer than absolutely necessary. The peace should be won and held by Libyans. </p>
<p>The fully unleashed American military is an awesome thing. The old man may find his supporters suddenly few, just from knowing what is to come. Give them a day&#8217;s warning &#8211; no more. Could save a lot of Libyan lives.</p>
<p>The gesture is right. We are willing to back in spirit and blood folk who are trying to make their country &#8211; and the world &#8211; a better place. We would rather win friends than play the old games of corruption. </p>
<p>For once, I wish my government would do the right thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/03/04/help-the-libyans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change in North Africa</title>
		<link>http://bannister.us/weblog/2011/02/20/change-in-north-africa/</link>
		<comments>http://bannister.us/weblog/2011/02/20/change-in-north-africa/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 05:41:44 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Society]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1888</guid>
		<description><![CDATA[Simple statement &#8211; the &#8220;Arab&#8221; world I do not really understand. Past friends from that world gave some insight, but I could not measure the endurance of oppressive regimes. The present changes in the Arab world are amazing and inspiring. I know good people there are dying. I know the outcome is in doubt (there [...]]]></description>
				<content:encoded><![CDATA[<p>Simple statement &#8211; the &#8220;Arab&#8221; world I do not really understand. Past friends from that world gave some insight, but I could not measure the endurance of oppressive regimes.</p>
<p>The present changes in the Arab world are amazing and inspiring. I know good people there are dying. I know the outcome is in doubt (there are always the wrong folk that seek power). But to make things better, you have to try. I had no clue this was in the character of the Arab folk. (&#8220;Arab&#8221; may be the wrong label, my failing.) To find substantial character in the Arab folk is wonderful. That so many folk chose action to move forward their nation, does, I believe, move the entire world to a better future. </p>
<p>Also I know &#8211; somewhat belated &#8211; that America served for centuries as inspiration to the rest of the world. Ironic that my country should be in a sort of dark ages, when great events are happening in unexpected places. (Or is this some sort of requirement in the larger span of history and society?) I believe America will come out of the present confusion. Events elsewhere may prove the trigger. The message is hope and inspiration. That the message should come from what seemed an unlikely place is amazing.</p>
<p>I know my government may make stupid choices in the near future. For that, as an American, I offer my apologies. Correcting a government that has gone astray is the work of decades, as you already know. Keep that in mind, please.</p>
<p>This is &#8211; I believe &#8211; an inflection point in history. That the Arab folk are advancing the entire human race, is amazing and encouraging. Almost as though hope is a token that must pass from one society to the next, and this time is the Arab world&#8217;s turn.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/02/20/change-in-north-africa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is an efficient &#8220;Free Market&#8221;?</title>
		<link>http://bannister.us/weblog/2011/02/06/what-is-an-efficient-free-market/</link>
		<comments>http://bannister.us/weblog/2011/02/06/what-is-an-efficient-free-market/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 18:17:33 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Economics]]></category>
		<category><![CDATA[Society]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1887</guid>
		<description><![CDATA[The &#8220;Free Market&#8221; meme is very popular. The usual definition is a market without government intervention, and somehow efficient. From where does this notion come? One gift to European-derived societies, earned in the &#8220;Dark Ages&#8221;, is the notion that society and government are separate, and that society can exist without government (where we associate &#8220;government&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p>The &#8220;Free Market&#8221; meme is very popular. The usual definition is a market without government intervention, and somehow efficient.</p>
<p>From where does this notion come?</p>
<p>One gift to European-derived societies, earned in the &#8220;Dark Ages&#8221;, is the notion that society and government are separate, and that society can exist without government (where we associate &#8220;government&#8221; with the larger nation-state). Our notions of &#8220;free market&#8221; probably date back to that period.</p>
<p>Try and imagine how that might have worked &#8230;.</p>
<p>A buyer and seller meet in the woods (free of any sort of regulation). The buyer does not like the seller&#8217;s price, kills the seller, and takes the goods.</p>
<p>Oops &#8230; that did not work.</p>
<p>Maybe the seller was only wounded. Next time the buyer and seller meet, the seller brings guards. The buyer does not like the seller&#8217;s price, so the seller has his guards kill the buyer and take his money.</p>
<p>Maybe the buyer was only wounded. Next time the buyer and seller meet, they both bring guards. The money and goods are more than the guards pay, so the guards rob them both.</p>
<p>Hmm &#8230; seems that the transaction costs are getting a little high. For an efficient market, you need civil behavior on the part of both buyer and seller. Interesting word: &#8220;civil&#8221;. Implies both good behavior and organized society. Maybe the answer to this question is built into our language, and the concepts in our language are derived from lessons in our common history.</p>
<p>Lets see if we can come up with a more efficient arrangement. Instead of buyers and sellers each hiring guards, charge a small fee and hire a common set of guards for the entire market place. The market place needs an agreed set of rules that buyers and sellers follow, and that the guards enforce. </p>
<p>Of course, if the marketplace fees and regulation become too burdensome, you could always try meeting in the woods &#8230; but that does not always end well.</p>
<p>Free markets imply civil behavior. Civil implies society. Society implies rules governing behavior. In other words, an efficient market requires buyers, sellers, and government on the scale of the marketplace.</p>
<p>How did the current popular notion of a free market without government get started, when the lessons are embedded in our history and built into our language?</p>
<p>When you read the books, and strip away all the abstractions, the build up to our current economic mess is not very different from sellers robbing buyers in the woods. Even better &#8230; the sellers want to go on doing business in the same manner.</p>
<p>We need to be clear on what makes up an efficient free market.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/02/06/what-is-an-efficient-free-market/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>That’s not correct (on economics)</title>
		<link>http://bannister.us/weblog/2011/02/05/that%e2%80%99s-not-correct-on-economics/</link>
		<comments>http://bannister.us/weblog/2011/02/05/that%e2%80%99s-not-correct-on-economics/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 21:42:30 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Economics]]></category>
		<category><![CDATA[Society]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1885</guid>
		<description><![CDATA[Seems the folk that write about economics are largely idiots. OK &#8230; maybe that is a bit strong, but with so many examples like this, it is hard to come to any other conclusion. The shift in income shares since the 1970s — from the middle and bottom to the top, as well as from [...]]]></description>
				<content:encoded><![CDATA[<p>Seems the folk that write about economics are largely idiots. </p>
<p>OK &#8230; maybe that is a bit strong, but with so many examples like <a href="http://economix.blogs.nytimes.com/2011/02/03/cowen-vs-meyerson-on-inequality/">this</a>, it is hard to come to any other conclusion.  </p>
<blockquote><p>
The shift in income shares since the 1970s — from the middle and bottom to the top, as well as from the top to the very, very top — is a big reason incomes for the middle class and poor have grown so slowly.<br />
<small>[snipped a bit about another writer]</small><br />
That’s not correct. Look at the chart here, showing average annual economic growth over three-year periods since 1950, and you’ll see that growth since the 1970s has been slower than growth before the 1970s. The peaks on the right side of the chart are lower than the peaks on the left.
</p></blockquote>
<p>A simple observation &#8211; economic growth is about consumption. You only produce goods when you have interested consumers. To increase consumption you must have more folk getting paid more money &#8211; and not stashing away increased income in investments. This point is by no means new, as I have seen writings from the 1950&#8242;s that made the very same observation &#8211; and it could easily be far older. </p>
<p>If your income increased quite a lot, some folk will spend it all, but most put a much larger portion into savings. To the extent that investment is good for the economy, this is a good thing. In a capital-starved economy, unequal income distribution might be a <i>very</i> good thing. When the income distribution shifted disproportionately to a smaller group, what we got is less consumption and more investment. Less consumption depresses economic growth. Note that this is a destabilizing feedback pattern. </p>
<p>The above referenced article fails to make the connection &#8211; and this failure is very common in the Wall Street universe.</p>
<p>I came out of an engineering / science background. The best folk in those disciplines are well-capable of distinguishing causes from effects, and ruthless in their practice of analysis. By comparison, most writings in economics &#8211; in terms of analysis &#8211; seem hopelessly flabby. (Growing up, the few folk I knew who went into economics were far from brightest, so perhaps the poor state of economics as a discipline is predictable.) </p>
<p>What would the world look like if capital was far in excess of economic needs?</p>
<p>Back in the 1950&#8242;s my father considered going into farming, but found that farm prices had jumped far out of reach. Back in the 1970&#8242;s house prices were rising far faster than costs (at least around here). In the 1980&#8242;s and 90&#8242;s computer and software companies rode enormous bubbles in price on stock markets, though very few ever paid a dividend, and most are gone today. There are and were lots of other bubbles.  Any time something looks like a good investment, lots of money flows in and prices rise dramatically. Looks like there is a lot of money looking for a place to invest.</p>
<p>Our present world looks very much like what you would expect with too much capital. </p>
<p>In fact, if we use the history of the stock market as an measure, then it would seem that excess capital (or at least misdirected capital) was a problem as far back as the 1920&#8242;s. The original notion of the stock market makes sense &#8211; you buy stock in a company, the company expands, and the stock pays dividends. The price of the stock reflects the investors expected return on investment. What we have now is a market that places little or no value on dividends, and prices reflect what investors expect when the stock is sold in the future. The current stock market is little more than yet another form of gambling. What made the stock market transition from something useful to gambling? The answer lies in too much capital chasing too few places to invest &#8211; and from our history it seems this was true as far back as the 1920&#8242;s.</p>
<p>For symbolic reasons, I think we should move all the stock exchanges to Nevada. Could help the economy in Nevada. Might make New York a much more livable city &#8211; more like it once was. But the main reason is to make plain the association between gambling and the stock market.</p>
<p>Stop for a moment. Try to imagine what the world would be like if the economy had followed a steady boom from early 1900&#8242;s, without crashing and stumbling through the 1930&#8242;s. Without the economic crash, Germany might not have gone to war, and World War II might never have happened. If through those decades we had steady growth, and less waste on warfare &#8211; what would the world look like now? Keep that in mind the next time someone suggests that our current economic system works at all well.</p>
<p>We have an economic system that generates too much capital, and the result is unstable. </p>
<p>Unstable feedback loops are something for which a good engineer knows how to look &#8211; and designs carefully to avoid. When I looked at our economy, it seemed to be filled with unstable feedback loops &#8211; but for a long time I assumed that appearance was due to my incomplete understanding. After living through a major economic malfunction, with the nominal economic experts largely clueless &#8230; I&#8217;m thinking my first impression was right.</p>
<p>Ironically, one solution to this problem is quite old, but reviled by true believers in the Wall Street zeitgeist. To help limit excess capital and promote growth, you need more folk saving less and consuming more. How do you get folk to save less? Remove the need to save &#8220;for the future&#8221;. If as a society you guarantee that folk do not worry about their future expenses, then you will see more consumption (and more growth), and take a good chunk out of the excess capital.</p>
<p>So if you are wealthy, and you want a good return on your investments, it is logical for you to promote socialism. (A logical conclusion I fully expect will terminally confuse all true believers in the Wall Street zeitgeist.)</p>
<p>The central driving cause behind all this instability is singular wonderful fact &#8211; dramatically rising productivity. By this I mean productivity at producing real things &#8211; growing food, and the manufacture of real goods &#8211; not the government measure that counts less useful activity. Over the past century or so, the rate at which work produces goods expanded enormously. The problems come from a theory of economic organization that does not offer a stable model though which to channel rising productivity &#8211; but the underlying cause is wonderful. </p>
<p>Classic science fiction takes a singular premise, asks &#8220;what if&#8221; the premise were extrapolated into the future, and tries to sketch out what might be the result. Quite a while back, an author took the premise of rising productivity, and extrapolated into a future when only one person out of a hundred had to work to supply all material needs. The story was a failure. The author could not tell a convincing story, which might be a direct reflection of our present confusion about how to structure a working economy.</p>
<p>The more I study economics and politics, the more it seems the last century was little more than a turbulent interlude. Farsighted individuals asked the right questions long ago, but as a society we have yet to fully comprehend the questions, and are yet further from workable answers.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/02/05/that%e2%80%99s-not-correct-on-economics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The end of the world &#8230; and we do not care.</title>
		<link>http://bannister.us/weblog/2011/02/03/the-end-of-the-world-and-we-do-not-care/</link>
		<comments>http://bannister.us/weblog/2011/02/03/the-end-of-the-world-and-we-do-not-care/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 04:12:29 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1883</guid>
		<description><![CDATA[The IPv4 address space is officially exhausted &#8230; and we should not care. Internet addresses depletion reflects wired world Take this as a distinction between engineers and &#8230; the real world. The number of network-addressable objects connected to the Internet is climbing dramatically. The IPv4 address space is limited to 2^32 (~4 billion) addresses. For [...]]]></description>
				<content:encoded><![CDATA[<p>The IPv4 address space is officially exhausted &#8230; and we should not care.</p>
<p><a href="http://www.reuters.com/article/2011/02/03/idINIndia-54646720110203">Internet addresses depletion reflects wired world</a></p>
<p>Take this as a distinction between engineers and &#8230; the real world.</p>
<p>The number of network-addressable objects connected to the Internet is climbing dramatically. The IPv4 address space is limited to 2^32 (~4 billion) addresses. For an engineer, clearly there is the possibility of many network-addressable devices per human. Since the world population is in excess of 4 billion, the IPv4 address space is clearly not enough.</p>
<p>Engineers are mainly good-willed constructive folk. As such they tend not to think easily about how technology can be subverted. To an engineer it makes perfect sense to place every semi-intelligent device on the open Internet, to allow the maximum number of constructive interactions. Engineers are good folk.</p>
<p>The world has quite a number of not-so-good folk, who are more than willing to subvert the work of well-intentioned engineers. The chance of subversion means the devices should not be placed on the global Internet, unless there is good reason, and unless very <i>very</i> well-defended.</p>
<p>Caution means most potentially network-addressable nodes should not be on the open Internet. (Do you want your robot vacuum exposed on the Internet? How about your smart front door lock? Your TV video recorder? Your not-entirely-secured daughter&#8217;s laptop?) Caution means the number of nodes exposed on the open Internet should be far less than one per human.</p>
<p>If the number of exposed nodes on the open Internet is much less than the number of humans, suddenly IPv4 limits are much less of a problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/02/03/the-end-of-the-world-and-we-do-not-care/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Example of certificate creation with OpenSSL</title>
		<link>http://bannister.us/weblog/2011/02/02/example-of-certificate-creation-with-openssl/</link>
		<comments>http://bannister.us/weblog/2011/02/02/example-of-certificate-creation-with-openssl/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 22:22:02 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1882</guid>
		<description><![CDATA[If you need to create certificates for a test setup, the online examples and O&#8217;Reilly OpenSSL book examples &#8211; while instructive &#8211; seem rather awkward and obscure. The fault lies with OpenSSL (otherwise a great piece of software) and the mash of parameters between the configuration file, the command line, and interactive entry. The mash [...]]]></description>
				<content:encoded><![CDATA[<p>If you need to create certificates for a test setup, the online examples and O&#8217;Reilly OpenSSL book examples &#8211; while instructive &#8211; seem rather awkward and obscure. The fault lies with OpenSSL (otherwise a great piece of software) and the mash of parameters between the configuration file, the command line, and interactive entry. The mash makes OpenSSL usage obscure, so you get a lot of examples of cargo-cult programming in the public examples.</p>
<p>I hate cargo-cult programming.</p>
<p>When a command requires a complex set of parameters, I prefer to pull the parameters from a file. Parameter files can be generated by script, archived, and/or stored in source control. With OpenSSL you cannot (quite) do that. Even worse, the default configuration file mashes together parameters from distinct commands in a non-obvious way. Thus folk looking at OpenSSL usage are often uncertain about what is used and when &#8230; and you get &#8220;I hacked this until it worked, but not sure how&#8221; examples. </p>
<p>Since I have to feed parameters to OpenSSL both in the configuration file and on the command line, I chose to use shell scripts, create the configuration files from script when needed, and run the command with any remaining needed parameters. </p>
<p>The example is a Mercurial repository at:
<pre>http://hg.bannister.us/public/ca</pre>
<p>Or just clone the set via:
<pre>hg clone hg.bannister.us:/public/ca</pre>
<p>All the parameters for CA creation are in <b>do/ca-create.sh</b>
<pre>

test -d root || mkdir root || exit 1
test -d history || mkdir history || exit 2

export password1='really cool password'
export password2="$password1"

export config=history/ca-create.cnf

cat > $config &lt;&lt; XXX

default_md		= sha1
default_bits		= 2048
x509_extensions	        = root_ca_certificate_extensions

# You will want to change this, when security matters.
input_password		= $password1
output_password		= $password2

[ root_ca_certificate_extensions ] 

subjectKeyIdentifier	= hash
keyUsage 		= digitalSignature,keyCertSign,cRLSign
#authorityKeyIdentifier	= keyid:always,issuer:always
basicConstraints	= critical,CA:true

[ req ]

prompt                  = no
distinguished_name	= root_ca_distinguished_name

[ root_ca_distinguished_name ]

# You will want to change this, to match your target server.
# The order of these attributes is significant.
countryName		= <i>US</i>
#stateOrProvinceName	= <i>California</i>
organizationName	= <i>Bannister @ Home</i>
organizationalUnitName	= Root Certification Authority
commonName		= <i>bannister.home CA</i>
emailAddress		= <i>preston@bannister.us</i>

XXX
	
openssl req -config $config -x509 -new -days 365 -keyout root/ca-private-key.pem -out root/ca-certificate.pem
</pre>
<p>The bits above that you will want to change are in italics. To create your CA run:
<pre>sh do/ca-create.sh</pre>
<p>To get a certificate for a named entity, first you have to generate a certificate request. For public web servers, the certificate request is what you send to one of the CA roots (Verisign, etc.) along with money, to get your certificate signed. For test setups, better to sign your own certificates. (Large organizations &#8211; like the DoD &#8211; also sign their own certificates.) All the parameters for creating certificate requests, with the exception of the entity name, are in the file <b>do/request.sh</b>:
<pre>
test -z "$1" &#038;&#038; {
	echo 'Usage: request-certificate name'
	exit 1
}
test -d history || mkdir history || exit 2

export name=$1
echo name = $name

export password1='really cool password'
export password2="$password1"

export config=history/request-$name.cnf
export base="cn-$name"

test -d requests || mkdir requests || exit 1
test -d $base || mkdir $base || exit 2

cat > $config &lt;&lt; XXX

default_md		= sha1
default_bits		= 2048
x509_extensions		= root_ca_issued_certificate_extensions

# You will want to change this, when security matters.
input_password		= $password1
output_password		= $password2

[ root_ca_issued_certificate_extensions ] 

basicConstraints	= CA:false

# PKIX recommendations.
subjectKeyIdentifier	= hash
authorityKeyIdentifier	= keyid,issuer:always

# Typical in keyUsage for a client certificate.
# keyUsage 		= nonRepudiation, digitalSignature, keyEncipherment

[ req ]

prompt                  = no
distinguished_name	= request_distinguished_name

[ request_distinguished_name ]

# You will want to change this, to match your target server.
# The order of these attributes is significant.
countryName		= <i>US</i>
#stateOrProvinceName	= <i>California</i>
organizationName	= <i>Bannister @ Home</i>
organizationalUnitName	= <i>Testing</i>
commonName		= $name
emailAddress		= <i>preston@bannister.us</i>

XXX

openssl req -config $config -new -keyout $base/private-key.pem -nodes -out requests/$name.pem
</pre>
<p>Again, the part you will want to change is in italics. For example: to generate a certificate request to server named &#8220;foozle&#8221; you would run the command:
<pre>sh do/request.sh foozle</pre>
<p>Repeat the command for all your named entities.</p>
<p>Once you have created all certificate requests, have your CA sign all the certificates. All the parameters for processing certificate requests are in the file <b>do/requests.sh</b>:
<pre>

test -d root/db || {
	mkdir root/db || exit 1
	touch root/db/index.txt
	echo 01 > root/db/serial
}
test -d history || mkdir history || exit 2
export issued=root/issued
test -d $issued || mkdir $issued || exit 3

export password1='really cool password'
export password2="$password1"

export config=history/ca.cnf

cat > $config &lt;&lt; XXX

default_md		= sha1

# You will want to change this, when security matters.
input_password		= $password1
output_password		= $password2

[ ca ]

default_ca		= root_ca

[ root_ca ]

certs			= root/certificates
new_certs_dir		= $issued
crl_dir			= root/crl

database		= root/db/index.txt
serial			= root/db/serial 		
crlnumber		= root/db/crlnumber	

certificate		= root/ca-certificate.pem 	
private_key		= root/ca-private-key.pem
crl			= root/crl.pem

default_days		= 365
default_crl_days	= 30
unique_subject		= no
#preserve		= no

policy			= root_ca_policy
x509_extensions		= root_ca_issued_certificate_extensions

[ root_ca_policy ]

countryName		= supplied
stateOrProvinceName	= optional
organizationName	= supplied
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= supplied

[ root_ca_issued_certificate_extensions ] 

basicConstraints	= CA:false

XXX

for request in `ls requests` ; do
	echo "===== Processing request: $request"
	export out="cn-`basename $request .pem`/certificate.pem"
	if openssl ca -config $config -batch -in requests/$request -key "$password1" > $out ; then 
		mv requests/$request history/.
		echo "..... OK - Generated: $out"
	else
		rm $out
		echo "\n***** ERROR in processing request: $request\n"
	fi
done
</pre>
<p>Likely you do not to make any changes to the above. To process all the pending certificate requests, run:
<pre>sh do/requests.sh</pre>
<p>The private key and public certificate for each named entity end up in the <b>cn-*</b> directories. The <b>cn-foozle</b> directory would contain the private key and public certificate for the &#8220;foozle&#8221; named entity.</p>
<p>The <b>Makefile</b> is meant as an example of creating the CA and certificates for all named entities in one operation.
<pre>
#
#  Example makefile for creating a CA and certificates for named entities.
#

all : # default rule

NAMED=\
m2003 \
m2008 \
z2003 \
z2008 \
john \
sammy \
alice

clean : clean-named ; @rm -rf root history requests
clean-named : ; @rm -rf cn-*

root : clean ; sh do/ca-create.sh
all : root ; for name in $(NAMED) ; do sh do/request.sh $$name ; done ; sh do/requests.sh

.PHONY : all clean clean-named
</pre>
<p>Nothing complicated here. Run <b>make</b> to create the CA and certificates for all named entities. Run <b>make clean</b> start over from a clean state. Note that the configuration files fed to OpenSSL are saved in the <b>history/</b> directory. (Did I mention that I like to be thorough?)</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/02/02/example-of-certificate-creation-with-openssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalable democracy</title>
		<link>http://bannister.us/weblog/2011/01/16/scalable-democracy/</link>
		<comments>http://bannister.us/weblog/2011/01/16/scalable-democracy/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 04:44:27 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1881</guid>
		<description><![CDATA[How can a representative democracy work, without the risk of corruption, subversion, and tedious partisan behavior we see at present? A couple of observations take us part of the way to a solution, and a final clue takes us the rest of the way. Clues First impressions &#8211; at least in my experience, turned out [...]]]></description>
				<content:encoded><![CDATA[<p>How can a representative democracy work, without the risk of corruption, subversion, and tedious partisan behavior we see at present?  A couple of observations take us part of the way to a solution, and a final clue takes us the rest of the way.</p>
<p><b>Clues</b></p>
<p><a href="http://bannister.us/weblog/2005/05/01/first-impressions/">First impressions</a> &#8211; at least in my experience, turned out to be fairly accurate. Of three candidates to which I had first-hand exposure, the two I liked did very well. The third I did not trust, voted against, and turned out later to be corrupt. </p>
<p><a href="http://bannister.us/weblog/2006/11/19/making-politics-more-local/">Local elections</a> &#8211; when the number of voters per candidate is fewer, you have a better chance of direct exposure, and partisan politics seems to disappear. The limit seems to be around a few thousand voters per representative.</p>
<p>For a long time, I was stuck at this point. I firmly believe local elections are a pretty good filter &#8211; but tens of thousands of representatives voting in Congress seems excessive &#8211; and possibly prone to other bad behaviors. How can we reduce that number to a more manageable level, without allowing corruption or subversion in the selection?</p>
<p><a href="http://lemire.me/blog/archives/2011/01/11/demarchy-and-probabilistic-algorithms/">Demarchy</a> &#8211; provided the last clue I needed to complete a scalable solution. The <a href="http://en.wikipedia.org/wiki/Demarchy">Wikipedia article</a> describes a number of alternatives I do not find interesting. You do not want <b>average</b> citizens (or less) as your representatives. You want your representatives to be a bit better than average. The trick is to come up with a filter without bias and not vulnerable to corruption or subversion. Local elections seem to make an excellent filter for selecting above-average folk. Random assignment of roles gets you appropriate-sized numbers of folk in each role.</p>
<p><b>Solution</b></p>
<p>Use local elections to select above-average representatives. Randomly assign representatives to roles in city, county, state, and national government. Candidate representatives would not know ahead of time to which role they would be assigned. I suspect the optimal number is one representative for every 1,000 to 5,000 citizens. (Small numbers of citizens per representative would mean some elected representatives would not be assigned roles.) </p>
<p>If we are electing one representative per thousand citizens, I suspect the average capability of those folk is going to be pretty high. If the United States had 300,000 elected representatives (likely not all with assigned roles), then the traditional sorts of subversion or corruption are much more difficult.</p>
<p>Demarchy without filtering would net us representatives of only average ability. Combining very-local elections with Demarchy could net us very high levels of ability without bias of corruption in the selection.</p>
<p>There are other details to be nailed down &#8211; but I rather like this combined solution.</p>
<p>The question is &#8211; how do we get there from here?</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/01/16/scalable-democracy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User interface fail &#8211; in a research building</title>
		<link>http://bannister.us/weblog/2011/01/16/user-interface-fail-in-a-research-building/</link>
		<comments>http://bannister.us/weblog/2011/01/16/user-interface-fail-in-a-research-building/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 21:34:05 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1879</guid>
		<description><![CDATA[Went to a seminar at UCI on advanced user interfaces, in a new/fancy building paid for by a local billionaire. This is what i see &#8211; in the building used for seminars &#8211; when I go to UCI, usually for a talk related the user interface design. This panel to call the elevator is in [...]]]></description>
				<content:encoded><![CDATA[<p>Went to a <a href="http://calendar.ics.uci.edu/event.php?calendar=1&#038;category=&#038;event=647&#038;date=2011-01-14">seminar at UCI</a> on advanced user interfaces, in a new/fancy building paid for by a local billionaire.</p>
<p><a href="http://www.flickr.com/photos/dreadedhill/5358288442/in/photostream/"><img src="http://farm6.static.flickr.com/5162/5358288442_b755bca0da.jpg"/></a></p>
<p>This is what i see &#8211; in the building used for seminars &#8211; when I go to UCI, usually for a talk related the user interface design. This panel to call the elevator is in the Donald Bren building. To find the elevator in the first place is a bit of adventure. You walk in the front door, through a side door, and then around a couple corners &#8211; all unlabeled.</p>
<p>This panel is the user interface to call the elevator. The most used element is the button to call the elevator &#8211; and there is absolutely no clue as to function. The unlabelled least obvious button at the bottom panel is the button to call the elevator. (No idea what the other button does.)</p>
<p>This in a building that hosts talks on advanced user interface design. The level of irony is truly sublime.</p>
<p>I particularly like the words &#8220;Do not use elevator&#8221; directly above the buttons. The button-like emblems above are a nice touch.</p>
<p>The control panel inside the elevator is equally impressive.</p>
<p><a href="http://www.flickr.com/photos/dreadedhill/5357688417/in/photostream/"><img src="http://farm6.static.flickr.com/5207/5357688417_de8b2b1570_m.jpg"/></a></p>
<p>The building only has six floors, so the simplest, most obvious user interface design would be a vertical column of six buttons, numbered top to bottom from six to one. If you scan the buttons in left-to-right and top-to-bottom reading order, you get 4-5-6-1-2-3. Apparently the button you are most likely to want to use is &#8220;PH&#8221;.</p>
<p>Not the most obvious arrangement.</p>
<p>I guess when a billionaire gives you a new building, you don&#8217;t complain about the screwy design. Then again, maybe the software folk at UCI got to design the building?</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/01/16/user-interface-fail-in-a-research-building/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Corporate rights</title>
		<link>http://bannister.us/weblog/2011/01/01/corporate-rights/</link>
		<comments>http://bannister.us/weblog/2011/01/01/corporate-rights/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 06:53:04 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1877</guid>
		<description><![CDATA[Back in the late 1970&#8242;s or early 1980&#8242;s I saw an advertisement from an oil company (I think it was Mobile) asking the question &#8211; if individuals have rights, should not corporations also have rights? The question stuck with me, as then I had no idea what answer made sense. Many years later the answer [...]]]></description>
				<content:encoded><![CDATA[<p>Back in the late 1970&#8242;s or early 1980&#8242;s I saw an advertisement from an oil company (I think it was Mobile) asking the question &#8211; if individuals have rights, should not corporations also have rights? The question stuck with me, as then I had no idea what answer made sense.</p>
<p>Many years later the answer is to me is now very clear. Individuals rights are central to our form of society (or at least the form our society was meant to be in the beginning). Corporations should not have rights meant for individuals. Individuals associated with a corporation could choose to exercise their rights to aid the corporation &#8211; or not &#8211; but those individuals should then be liable if the corporation causes harm.</p>
<p>Corporations can muster huge economic resources &#8211; far out of proportion from the means of individuals. There must be a counter-balance, else our society will become dominated by corporations over individuals.</p>
<p>To be clear &#8211; I find the role of corporations as tightly-focused profit-seeking organizations to be entirely reasonable. Corporations are inherently amoral. We need a framework within which corporations can seek profit, but are kept from immoral and destructive behaviors.</p>
<p>Our history is rich with examples of abusive organizations. European, British, and American history traces the story where individual rights were clearly defined and strengthened, to preclude the sorts of abuses of the past. Those hard-won rights were meant to give individuals some degree of parity against larger institutions. </p>
<p>The recent <a href="http://en.wikipedia.org/wiki/Citizens_United_v._Federal_Election_Commission">Citizens United</a> decision from the Supreme Court applies the First Amendment right of free speech to corporations &#8211; to my mind this an enormous and destructive mistake. Granting to corporations the rights meant for individuals tilts the balance in favor of corporations.  </p>
<p>I am slightly encouraged that the Supreme Court decision was a near thing, with strong dissent. What I do not know is where to go from here. I did not know that the notion of <a href="http://en.wikipedia.org/wiki/Corporate_personhood">Corporate Personhood</a> was over a century old. To my mind, this is wrong. A corporation is not a person. The rights accorded to individuals should never be confused with the roles allowed to corporations.</p>
<p>(The more I dig into economics and politics, the more it seems that within that domain the last century has been has been little more than a holding pattern. Problems identified and fought against over a century ago remain relevant and unresolved today. Much else has changed, but the base problems remain.)</p>
<p>The interests of corporations should not be dominant, if we wish to have any sort of humane society.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2011/01/01/corporate-rights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to make a perfect omelet</title>
		<link>http://bannister.us/weblog/2010/12/07/how-to-make-a-perfect-omelet/</link>
		<comments>http://bannister.us/weblog/2010/12/07/how-to-make-a-perfect-omelet/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 08:15:56 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1874</guid>
		<description><![CDATA[Making a good omelet is simple, but &#8230; most of the recipes on the web produce (in my opinion), an inferior result. I suspect many recipes originally came from restaurants. In a restaurant, time is money, and shortcuts are profitable. To my taste, restaurant omelets tend to be closer to scrambled eggs &#8211; and an [...]]]></description>
				<content:encoded><![CDATA[<p>Making a good omelet is simple, but &#8230; most of the recipes on the web produce (in my opinion), an inferior result. I suspect many recipes originally came from restaurants. In a restaurant, time is money, and shortcuts are profitable. To my taste, restaurant omelets tend to be closer to scrambled eggs &#8211; and an omelet should be something different.</p>
<p>Equipment:
<ul>
<li>small/medium sized balloon whisk (<a href="http://www.amazon.com/Best-Manufacturers-12-inch-Standard-French/dp/B00004R8ZM/ref=sr_1_9?ie=UTF8&#038;qid=1291707393&#038;sr=8-9">example</a>)</li>
<li>medium sized mixing bowl (<a href="http://www.amazon.com/Pyrex-Prepware-3-Piece-Mixing-Clear/dp/B00004SZ7H/ref=sr_1_2?ie=UTF8&#038;qid=1291708964&#038;sr=8-2">example</a>)</li>
<li>good quality omelet pan (<a href="http://www.amazon.com/Calphalon-Triply-Stainless-10-Inch-Omelette/dp/B003L1B5Q8/ref=dp_cp_ob_k_title_1">example</a>)
</li>
</ul>
<p>Ingredients:
<ul>
<li>two large eggs</li>
<li>one ounce of butter (a quarter of a stick)</li>
<li>fillings (a bit of shredded cheese is good)</li>
</ul>
<p>Crack open two eggs, dump into the mixing bowl, and give the eggs a couple of whisks. (You can mix more if you want, but no need.) Put the butter in the pan, and put the pan on the stove over medium heat (or just a bit below &#8211; you will have to experiment a bit to find the right setting on your stove). When the butter starts to brown (you will smell the change), dump the butter into the eggs in the mixing bowl, give the mixture a couple more whisks, and dump into the pan.</p>
<p>Watch the pan carefully! (This only takes a minute or two, and the result is worth your time.)</p>
<p>In about 20 seconds the bottom of the omelet with solidify, and if you jiggle the pan a bit, you should see the omelet slide freely. (This is where a good clean omelet pan makes a difference.) After a minute or so the top will look a bit less runny &#8211; this is a good time to sprinkle on a bit of shredded cheese. In about another minute the omelet is done. (Watch the omelet, not the clock.) Slide onto a plate. (With a bit of practice you can fold the omelet in half while sliding onto the plate.)</p>
<p>How long does all this take, exactly? Depends on your tastes. I like to let the butter brown a bit more, and use slightly higher heat to get a bit of browning on the omelet. My daughter prefers when the butter and omelet are just barely browned (slightly lower heat). Experiment a bit to find out which you prefer.</p>
<p>This is simple, cheap, good food &#8211; and fast.</p>
<p>Hints:
<ul>
<li>Best if your pan is squeaky-clean. Any leftover stuck-on bits of food could cause your omelet to stick and tear. Clean up is very easy if you give the pan a quick rinse and scrub immediately after cooking. (The cloud of steam from the still-hot pan is quite showy.)</li>
<li>Cleaning the balloon whisk is very easy if done right away, and a real pain if you wait until the egg mixture dries. Give it a quick rinse, and drop into the mixing bowl, filled with slightly-soapy water.</li>
</ul>
<p>This is easier to show than the describe. The above is simple, and the result very nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/12/07/how-to-make-a-perfect-omelet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cable companies and bad software</title>
		<link>http://bannister.us/weblog/2010/11/29/cable-companies-and-bad-software/</link>
		<comments>http://bannister.us/weblog/2010/11/29/cable-companies-and-bad-software/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 05:44:22 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1873</guid>
		<description><![CDATA[I have Internet, phone, and cable TV through Cox Cable in Orange County, California. Cox does an excellent job as a cable and Internet provider. On the other hand, the Cox website has always looked pretty, but worked poorly. (This does not really matter at all, as the important bit is that cable/internet service works [...]]]></description>
				<content:encoded><![CDATA[<p>I have Internet, phone, and cable TV through <a href="http://cox.net/">Cox Cable</a> in Orange County, California. Cox does an excellent job as a cable and Internet provider.</p>
<p>On the other hand, the Cox website has always looked pretty, but worked poorly. (This does not really matter at all, as the important bit is that cable/internet service works well.) Seems the cable company is not good at software / user interface work.</p>
<p>Just got a Cox DVR (made by Motorola) to work with the HDTV I got a several months back. I used a Tivo (Series 2, not HD) before. The user interface on the Motorola DVR sucks, big time. I was thinking, after all this time, surely the manufacturers would have software at least roughly comparable to Tivo. Nope. Not even <i>remotely</i> close. The user interface is crap. Really quite painfully bad. This DVR is going back. Seems the DVR hardware company is not good at software / user interface work.</p>
<p>Cable companies really need to get their software from outfits that do user interfaces well. Google, Apple, Microsoft, Tivo &#8211; pick one (or more than one), but stop buying crap software from outfits that do not do well at user interface work.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/11/29/cable-companies-and-bad-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Practical thermonuclear power at small scale?</title>
		<link>http://bannister.us/weblog/2010/11/27/practical-thermonuclear-power-at-small-scale/</link>
		<comments>http://bannister.us/weblog/2010/11/27/practical-thermonuclear-power-at-small-scale/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 06:05:08 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1872</guid>
		<description><![CDATA[Thinking about small-scale fusion and came up with a couple questions, for which I do not know where to look for answers. Send a stream of accelerated protons into a pool of water, what is the rate of fusion? If the pool of water is at the center of an electrolysis setup, do the injected [...]]]></description>
				<content:encoded><![CDATA[<p>Thinking about small-scale fusion and came up with a couple questions, for which I do not know where to look for answers.</p>
<ol>
<li>Send a stream of accelerated protons into a pool of water, what is the rate of fusion?</li>
<li>If the pool of water is at the center of an electrolysis setup, do the injected ions change the rate of electrolysis?</li>
</ol>
<p>I suspect these may be questions that no one has studied, empirically.</p>
<p>I understand that the rate of proton-proton fusion in a plasma is extremely low. The plasmas humans create are very near to a vacuum. The electrostatic forces between two protons are huge compared to their mass. Easy to understand why fusion in a plasma is quite unlikely.</p>
<p>If a stream of protons is fired at a pool of water, the density of hydrogen atoms is much higher, and there are no net electrostatic forces until the protons are very close. Seems the rate of fusion should be many orders of magnitude higher &#8230; but has anyone measured?</p>
<p>The apparatus I have in mind is an evacuated chamber with a needle at a very high positive voltage above a grounded pool of cold water. The pressure in the chamber would be only water vapor. High voltage should be enough to ionize hydrogen from the vapor, and send an accelerated stream of protons into the pool of water. Given a high enough voltage, some of those protons will fuse with the protons in bound hydrogen atoms.</p>
<p>My Physics classes were a very long time ago. (I have a B.S. in Physics.) </p>
<p>What is the mean-free path of ions in water vapor?  What voltage is needed to accelerate protons to energies where fusion is possible? What is the optimal combination of voltage and distance to get the most high-energy ions injected into water?</p>
<p>The second of the questions at the top is about capturing energy. Electrolysis is endothermic at low voltages. If a trickle of high-energy ions is injected into the center of an electrolysis setup, I suspect the energy from the ions <i>might</i> be captured, and the rate of electrolysis increased. Energy released from extremely low rates of fusion (compared to the bulk of the water) <i>might</i> be captured in a similar manner. If this works, we might have a very efficient way to capture energy released by fusion.</p>
<p>My impression is that most of the attention in research on electrolysis is centered on higher temperatures, pressures, and voltages. I would not surprised if there was no more than a single researcher exploring this domain &#8230; or no one.</p>
<p>In similar fashion, empirical studies of fusion seem to almost entirely focus on hot plasmas. There may be no more than a single researcher exploring fusion rates with non-plasmas &#8230; or no one.</p>
<p>The above questions bug me. If the ratios work out, we could build relatively simple / practical small-scale fusion power generators. If any of the ratios implicit in the above are sufficiently unfavorable, then the notion will not work. I could build an experiment, but &#8230; given my lack of relevant knowledge, a negative result would not prove anything. I do not have enough money to do the experiment well, or to make many attempts. On the other hand, if the core notions in the above work &#8230; it would be rather a big deal.</p>
<p>Is it possible to build a workable small scale thermonuclear power generator, using entirely conventional Physics?</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/11/27/practical-thermonuclear-power-at-small-scale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exciting!</title>
		<link>http://bannister.us/weblog/2010/08/30/1867/</link>
		<comments>http://bannister.us/weblog/2010/08/30/1867/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 17:24:14 +0000</pubDate>
		<dc:creator>Preston</dc:creator>
				<category><![CDATA[Humor]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1867</guid>
		<description><![CDATA[No joke.]]></description>
				<content:encoded><![CDATA[<p><img src="http://imgs.xkcd.com/comics/exoplanets.png" /><br />
No joke.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/08/30/1867/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strict mode for Javascript &#8211; continued</title>
		<link>http://bannister.us/weblog/2010/08/15/strict-mode-for-javascript-continued/</link>
		<comments>http://bannister.us/weblog/2010/08/15/strict-mode-for-javascript-continued/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 02:08:11 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1864</guid>
		<description><![CDATA[Seems the prior post gathered some response. To set expectations &#8211; this is my personal weblog. What I put here is the bits that (to my mind) might be otherwise missing. I am not interested in repeating material covered elsewhere. If you are already well-read, then I hope these bits will nudge your thinking forward [...]]]></description>
				<content:encoded><![CDATA[<p>Seems the <a href="http://bannister.us/weblog/2010/07/31/strict-mode-for-javascript/">prior post</a> gathered <a href="http://www.reddit.com/r/javascript/comments/cw0n8/strict_mode_for_javascript/">some response</a>.</p>
<p>To set expectations &#8211; this is my personal weblog. What I put here is the bits that (to my mind) might be otherwise missing. I am not interested in repeating material covered elsewhere. If you are already well-read, then I hope these bits will nudge your thinking forward a bit (even if you do not entirely agree with my conclusions).</p>
<p>On the other had, if you are seriously short of clues, I am not going to help you. Spent enough time on USENET News (long ago) to note the point of diminishing returns. Since I write these bits as an entertainment (of sorts), I am not going to invest a lot of time with folk who are too many laps behind. </p>
<p>Javascript is at heart a dynamic, prototype-based sort of object-oriented language. Most folk coming to Javascript are acquainted with static, class-based languages &#8211; and have little or no experience with anything different. The natural inclination is to transfer learned habits from the old to the new language &#8211; and that is a mistake.</p>
<p>Back in the late-1980&#8242;s or early-1990&#8242;s one writer came up with a classification scheme for object-oriented languages. There were many variations proposed and explored in that time, so a scheme that enumerated the important aspects was very useful. (Wish I knew how to find the article &#8211; it was in an ACM or IEEE publication of that period, I believe.) As a guess, I suspect that most of the current generation of programmers is not aware of the possible variations, and assume all object-oriented languages must be like Java / C++ / C#, and expect the same learned habits to still make sense with Javascript.</p>
<p>Disregarding the usual noise, there is one bit which it is worth responding, as it (quite unintentionally) illustrates my point.<br />
<blockquote>
<b>New</b> gives you prototype inheritance, performance benefits, and it&#8217;s about language semantics.</p></blockquote>
<p>That is <b>exactly</b> my point! &#8230; only the reality differs from the assumptions of the guy making the comment (and I suspect he has a <b>lot</b> of company). Back in the late 1980&#8242;s / early 1990&#8242;s the pragmatic consensus was to move forward with object-oriented languages that could be made to run efficiently on the then-current hardware. How to generate optimal code for static class hierarchies was fairly well understood, at that time. More dynamic object-oriented languages were simply too hard to optimize.</p>
<p>The v8 Javascript engine offers a good example. The combined memory and CPU footprint of an efficient Javascript engine was simply impossible on circa-1990 computers. What is practical and reasonable on current-generation computers was &#8211; twenty years back &#8211; completely not practical.</p>
<p>My reading of the articles on the current-generation Javascript engines was that the toughest problem &#8211; and main aim of implementors &#8211; was to optimize in the absence of static-class hierarchies, and that quasi-static classes are not particularly optimized. </p>
<p>This makes sense. Writing script for web pages is programming in the small. The number of entities on a web page is small, as are the number of repeated instances. Static classes with efficient support for huge numbers of behavior-identical instances are essentially useless in a web page. If you are creating large numbers of instances for a web page, you are almost certainly doing it wrong. (Note the &#8220;flyweight&#8221; class pattern is useful here.)</p>
<p>My assumption (from what I have read) is that &#8220;static&#8221; class hierarchies yield no particular benefit in client-side Javascript.</p>
<p>Assumptions should be checked &#8230; so I wrote a micro-benchmark.</p>
<p><a href="http://bannister.us/examples/js-benchmark-methods/">Method dispatch &#8211; Microbenchmark &#8211; Javascript</a><br />
The aim was to measure method-dispatch for three cases:
<ol>
<li>The method is bound to the instance.</li>
<li>The method is bound to the &#8220;class&#8221; (via the <b>__proto__</b> member).</li>
<li>The method is bound to the &#8220;class&#8221; (via the <b>function</b> invoked via <b>new</b>).</li>
</ol>
<p>What I see (in terms of exact results) will likely vary as each browser vendor tweaks their Javascript engine. The point &#8211; in the case of the current discussion &#8211; is that static class hierarchies yield no significant advantage. It does make perfect sense that static-class languages can deliver bare-hardware performance numbers (which I do expect to use). For web page script, I expect static-like class usage to yield no significant benefit.</p>
<p>For programmers coming from C++/Java/C#, the notions that made sense no longer apply. Thus the emphasis on <b>denying</b> any semblance to static-class languages. This was exactly my point.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/08/15/strict-mode-for-javascript-continued/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Tivo still a good bet?</title>
		<link>http://bannister.us/weblog/2010/08/08/is-tivo-still-a-good-deal/</link>
		<comments>http://bannister.us/weblog/2010/08/08/is-tivo-still-a-good-deal/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 00:54:38 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1861</guid>
		<description><![CDATA[I have a Tivo Series 2 that I bought when the model was new. For the most part, I have been very satisfied with the Tivo service &#8230; but not so much lately. There are now many sources for video that I would like to watch on the TV, and the Tivo box is not [...]]]></description>
				<content:encoded><![CDATA[<p>I have a <a href="https://www3.tivo.com/store/clearance-80hourseries2dt.do">Tivo Series 2</a> that I bought when the model was new. For the most part, I have been very satisfied with the Tivo service &#8230; but not so much lately. There are now many sources for video that I would like to watch on the TV, and the Tivo box is not useful for those new sources.</p>
<p>Still &#8230; my Tivo box is relevantly old, and you might expect new features to be introduced mainly on new boxes. This is not a complete excuse &#8211; the Tivo is basically a small computer with a hard disk and a network connection. A software upgrade on the old boxes could do quite a lot, within the hardware capabilities of the box &#8230; and I was paying a subscription fee.</p>
<p>My old non-HD TV finally died, and bought a new HDTV. Time to upgrade the DVR. Do I want to buy a new Tivo? The new Tivo seems a bit &#8230; limited? If I buy the full-up version with the most cost-effective service, the cost is a bit under $900 (without discounts). Do I trust the Tivo company and brand enough to spend that money of their box? Maybe.</p>
<p>When the <a href="http://www.google.com/tv/">Google TV</a> announcement came out, that was enough to defer upgrading the Tivo until I saw Google&#8217;s product.</p>
<p>In the time between, the (not so) good folks at Tivo changed my mind.</p>
<p>Near two months back, the Tivo folk starting sending nasty emails, claiming my credit card was about to expire, and &#8230; let&#8217;s just say I did not appreciate the tone. Somehow they had decided my credit expired, two months before the actual expiration. The updated credit card arrived at the usual time, but by then the Tivo folks had sent a month&#8217;s worth of nasty emails. Just after I got the updated card, I went to the Tivo site, and updated my credit card information with the new expiration. </p>
<p>About a week later I got another nasty email from Tivo. I sent a response.</p>
<p>Guessing I might have made a mistake, somehow, I went back to the Tivo site, and updated my credit card information &#8230; again. Noticed all the fields on the web form offered auto-complete, so obviously I had been to the site recently. (I reset all the saved information in the web browser a couple months back, as a part of testing some of my software.) After submission, I checked the result carefully to be sure that their web application reported success &#8211; and it did.</p>
<p>About a week later, I got an even less pleasant email from Tivo. I sent a response, then I called their support phone number.</p>
<p>Has the Tivo company has gone sour? I have noted a pattern where a business with substantial cash flow is bought out, and the new owners cheapen the product and/or service (presumably with the hope of boosting profits). Customers eventually notice, and start to go elsewhere. In response, the owners further cheapen the product (in hope of maintaining profits on smaller revenue?) &#8230; and the business does badly.</p>
<p>Has the Tivo company been bought out, or adopted the same philosophy? That would explain the slow change in technology, and the unpleasant customer service. </p>
<p>As a good customer, I did exactly what I should, when I could. Personally, I would rather not do business with a rude company. On the phone with Tivo support, I did not appreciate the assumption that the mistake was mine. (I suspect most customers surrender on this point.) I want Tivo to fix the problem, and to not be rude to good customers. I refused to update my credit card information over the phone. Instead they could tell me when they fixed their broken web application, and I would (for the third time) update my information there.</p>
<p>Today it seems they turned off my Tivo service. The fault is theirs for losing a good customer. Probably not a loss. For now, I can wait to see what the Google folk (and associates) deliver.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/08/08/is-tivo-still-a-good-deal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status check</title>
		<link>http://bannister.us/weblog/2010/08/06/status-check/</link>
		<comments>http://bannister.us/weblog/2010/08/06/status-check/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 06:21:04 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1860</guid>
		<description><![CDATA[A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook [...]]]></description>
				<content:encoded><![CDATA[<blockquote><p>A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.</p></blockquote>
<p> &#8212; from <a href="http://en.wikiquote.org/wiki/Robert_A._Heinlein">Robert A. Heinlein</a></p>
<p>Refactoring &#8230; to what I want yet to do.
<ul>
<li>Design and build a house that <i>works well</i>.</li>
<li>Practical knowledge of firearms.</li>
<li>Learn to hunt, and butcher the animal, after.</li>
<li>Learn to fly an airplane.</li>
<li>Design and build an airplane.</li>
</ul>
<p>In roughly the above order.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/08/06/status-check/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strict mode for Javascript</title>
		<link>http://bannister.us/weblog/2010/07/31/strict-mode-for-javascript/</link>
		<comments>http://bannister.us/weblog/2010/07/31/strict-mode-for-javascript/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 02:09:54 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1858</guid>
		<description><![CDATA[A small item&#8230; Javascript is a hash (pun not entirely intended). There are good parts to Javascript, and bad parts. For folk attempting to learn Javascript for the first time, they could use some help avoiding the icky bits. My first cut at rules for a &#8220;strict&#8221; mode for Javascript: No use of &#8220;function name(){}&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p>A small item&#8230;</p>
<p>Javascript is a hash (pun not entirely intended). There are <a href="http://javascript.crockford.com/javascript.html">good parts</a> to Javascript, and bad parts. For folk attempting to learn Javascript for the first time, they could use some help avoiding the icky bits.</p>
<p>My first cut at rules for a &#8220;strict&#8221; mode for Javascript:
<ul>
<li>No use of &#8220;function name(){}&#8221; declarations</li>
<li>No use of &#8220;document.write()&#8221;</li>
<li>No use of &#8220;new&#8221;</li>
</ul>
<p>No doubt I could come up with more rules, with a bit more reflection, but this is a start.</p>
<p><b>No use of &#8220;function name(){}&#8221; declarations</b><br />
There are two means of declaring functions, and I strongly prefer the second form. Programmers coming from other languages tend most often to use this form:</p>
<pre>
function foo() {
}
</pre>
<p>For an entire collection of reasons I prefer this form:</p>
<pre>
var foo = function() {
};
</pre>
<p>The second form is better suited for later refactoring, and offers subtle emphasis to the learning programmer of the <i>difference</i> offered by Javascript. The first form can also lead to subtle bugs (which I do not want to explain) &#8211; certainly not what you need when first learning a rather different language.</p>
<p>As a partial hint, I tend to make rather a lot of use of namespaces, so my function declarations most often look like this:</p>
<pre>
var ZOT = {};
ZOT.foo = function() {
};
</pre>
<p>Or in the more elaborate use:</p>
<pre>var ZOT = (function() {
    var foo = function() {
    };
    return {
        foo: foo
    };
})();</pre>
<p>This last form makes full use of closures, and allows for private data and functions.</p>
<p><b>No use of &#8220;document.write()&#8221;</b><br />
Programmers tend to want to generate HTML from program code. This is a huge mistake. </p>
<p>To me this is a classic application of separation of concerns. HTML describes page structure. CSS describes page presentation. Script describes dynamic behaviors. Best to keep each concern separate.</p>
<p><b>No use of &#8220;new&#8221;</b><br />
On this point I am certain others will differ. They might even be right. Certainly the &#8220;new&#8221; operator is of huge advantage in static languages. But that is not the domain of Javascript &#8211; certainly in the web browser, and possibly even for server-side usage.</p>
<p>The &#8220;new&#8221; operator misleads programmers when first learning Javascript. The pattern of usage most appropriate to a static-class language is not the same as the most appropriate usage in an entirely dynamic language.</p>
<p><b>Conflicted over Crockford</b><br />
There is a measure of irony in the last point. <a href="http://en.wikipedia.org/wiki/Douglas_Crockford">Douglas Crockford</a> has consistently served to promote better usage of Javascript. Crockford was hired by Yahoo. The quite elaborate user interface library in Javascript developed by Yahoo, is first invoked with &#8220;new YUI()&#8221;. <a href="http://developer.yahoo.com/yui/">YUI</a> obviously represents a substantial body of work, at least partially in what seems the right direction. Yet I cannot quite get past the beginning.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/07/31/strict-mode-for-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perfect Pineapple Pizza</title>
		<link>http://bannister.us/weblog/2010/07/30/perfect-pineapple-pizza/</link>
		<comments>http://bannister.us/weblog/2010/07/30/perfect-pineapple-pizza/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 04:56:51 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1856</guid>
		<description><![CDATA[Bit of nonsense&#8230;. Have experimented occasionally but steadily on how to make really good pizza. I do not have a massive coal-fired brick oven, so I have to make do with a slightly fancy counter-top oven. Note also that I am allergic to tomato, onion, and garlic &#8211; so the most common recipes are not [...]]]></description>
				<content:encoded><![CDATA[<p>Bit of nonsense&#8230;.</p>
<p>Have experimented occasionally but steadily on how to make really good pizza. I do not have a massive coal-fired brick oven, so I have to make do with a slightly fancy counter-top oven. Note also that I am allergic to tomato, onion, and garlic &#8211; so the most common recipes are not useful.</p>
<p>Early on I made mushroom and sausage pizzas, and got decent results. Turns out a simpler(?) pineapple pizza is harder to get right. My kids have many likes and dislikes, but they all like pineapple pizzas.  So the occasional challenge &#8211; every week or so &#8211; is to make a better pineapple pizza. Got results my kids happily accept a long time back, but I was not satisfied.</p>
<p>Tricks that get closer to that perfect pizza:</p>
<ul>
<li>Empty a can of crushed pineapple into a sieve, dump yeast and a bit of flour into the juice, and put the mix into a warm (120&deg;F) oven for an hour. The yeast go nuts, and add a bit to the flavor of the eventual crust.</li>
<li>Add a bit of fresh-ground black pepper to the pineapple. My daughter did not notice the pepper, but liked the result (as did I).</li>
<li>Dry out/caramelize the pineapple a bit &#8211; one hour at 250&deg;F seems a good start.</li>
<li>Add the shredded mozzarella to the pineapple, before topping the pizza, <i>but only just before, otherwise the cheese absorbs too much moisture.</i></li>
<li>Add sliced (and drained) olives to the topping. The saltiness of the olives nicely accentuate the sweetness of the pineapple.</li>
<li>Add a bit of olive oil to the topping.</li>
<li>Add lemon juice to the topping. The sweetness and acidity boosts the pineapple.</li>
<li>Add flour to the starter to make a dough, spread on a pizza pan, add topping, and put in a 120&deg;F oven for 30 minutes. The sugar from the lemon juice seems to boost the yeast in the dough, and adds a bit of lemony flavor.</li>
<li>Set the oven to 425&deg;F for 15 minutes (or less &#8211; watch carefully).</li>
<li>&#8230; and I am still working on this. Results are good, and improving.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/07/30/perfect-pineapple-pizza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vodka and Lime</title>
		<link>http://bannister.us/weblog/2010/07/24/vodka-and-lime/</link>
		<comments>http://bannister.us/weblog/2010/07/24/vodka-and-lime/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 05:35:25 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1855</guid>
		<description><![CDATA[Random bit&#8230; The cover of &#8220;Hazy Shade of Winter&#8221; by the Bangles is one rare instance where the copy surpasses the original. The original is great. The cover by the Bangles is better. (Even minus the &#8220;babe&#8221; factor.) My only wish is for a longer version.]]></description>
				<content:encoded><![CDATA[<p>Random bit&#8230;</p>
<p>The cover of <a href="http://www.youtube.com/results?search_query=hazy+shade+of+winter+bangles&#038;aq=0">&#8220;Hazy Shade of Winter&#8221; by the Bangles</a> is one rare instance where the copy surpasses the original. The <a href="http://en.wikipedia.org/wiki/A_Hazy_Shade_of_Winter">original</a> is great. The cover by the Bangles is better. (Even minus the &#8220;babe&#8221; factor.)</p>
<p>My only wish is for a longer version.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/07/24/vodka-and-lime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VirtualBox as free software</title>
		<link>http://bannister.us/weblog/2010/07/16/virtualbox-as-free-software/</link>
		<comments>http://bannister.us/weblog/2010/07/16/virtualbox-as-free-software/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 20:23:35 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1853</guid>
		<description><![CDATA[File this under &#8220;Missing the Obvious&#8221;. I bought VMware Workstation several years back. Used virtual machines quite a lot in developing and testing software. The company I work for licensed the enterprise version of VMware, at least in part due to developer experience using VMware. A few of the VMs currently hosted under the enterprise [...]]]></description>
				<content:encoded><![CDATA[<p>File this under &#8220;Missing the Obvious&#8221;.</p>
<p>I bought VMware Workstation several years back. Used virtual machines quite a lot in developing and testing software. The company I work for licensed the enterprise version of VMware, at least in part due to developer experience using VMware. A few of the VMs currently hosted under the enterprise version of VMware started out running under VMware on my desktop.</p>
<p>A few years back &#8211; well after EMC acquired VMware &#8211; I got the distinct impression that the desktop version of VMware was somewhat neglected. I was losing increasing amounts of time to locked-up VMs, messed up keymaps, and even main desktop lockup. This provided an incentive to try Sun&#8217;s VirtualBox, which proved more reliable for my usage.</p>
<p>Oracle gained ownership of the VirtualBox software with the Sun acquisition. Is there any strong reason for Oracle to offer and develop the &#8220;free&#8221; version of VirtualBox, or will the desktop version of VirtualBox suffer the same apparent neglect as did the the desktop version of VMware? </p>
<p>Of late I was reviewing the documentation we sent to our customers with the last software release, as we are rolling up to a small update in the near future, and a larger release a bit later. In the documentation we send to customers, we have a prominent declaration of support for running under VMware. This was an easy declaration to make, as developers used VMware heavily in development and testing. We knew our product ran under VMware.</p>
<p>Now this is somewhat less true. Certainly the more elaborate test setups (mine) are all run under VirtualBox. I expect things all still work under VMware, but I personally no longer have a basis to make that assertion. For the next release, we will likely add an statement of support for VirtualBox.</p>
<p>As to the obvious bit I had missed: </p>
<p>Many of our customers are still not using virtualization software. Generally customers move from a physical machine to a VM at the time of a major version upgrade. At the next major version upgrade, we will offer a recommendation for VirtualBox.</p>
<p>Oh. Right. I had forgotten about that multiplier. Selling enterprise virtualization to our customers represents <b>many</b> more opportunities than any in-house usage at our development outfit. Nevermind my misgivings &#8211; offering free software to developers is about the best advertising Oracle could buy. </p>
<p>Does Oracle know this?</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/07/16/virtualbox-as-free-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Odds and ends in testing with Active Directory</title>
		<link>http://bannister.us/weblog/2010/07/12/odds-and-ends-in-testing-with-active-directory/</link>
		<comments>http://bannister.us/weblog/2010/07/12/odds-and-ends-in-testing-with-active-directory/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 03:03:26 +0000</pubDate>
		<dc:creator>Preston L. Bannister</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://bannister.us/weblog/?p=1852</guid>
		<description><![CDATA[Of late, I have needed to test against Microsoft&#8217;s Active Directory &#8211; so I setup a virtual machine hosting Windows 2003 Server and configured as a domain controller. The domain controller is connected to small number of machines (also VMs) on a private network &#8211; pretty much what you would expect for a tightly controlled [...]]]></description>
				<content:encoded><![CDATA[<p>Of late, I have needed to test against Microsoft&#8217;s Active Directory &#8211; so I setup a virtual machine hosting Windows 2003 Server and configured as a domain controller. The domain controller is connected to small number of machines (also VMs) on a private network &#8211; pretty much what you would expect for a tightly controlled test setup.</p>
<p>One surprise in the experience was the difficulty in getting the domain controller (and DHCP setup) properly working. Admittedly, setting up a domain controller is a somewhat unusual task. As a rare task perhaps not so important to Microsoft as a process that needs the user experience optimized. Still, given I have long been well-acquainted with how this all works at a network level, I ended up wasting a surprising amount of time trying to find the right knobs to turn. (Much searching with Google to get a key Microsoft product to work &#8230; the irony.)</p>
<p>Oddly, all the nice GUI interfaces to administering a domain server actually make the process <b>more obscure</b> than the equivalent activity on Unix (where I am accustomed to configuration kept in text files). I do now better understand my past conversations with network administrators who did not know how to do (what I considered) simple tasks with Microsoft&#8217;s domain controller &#8230; and why they often got it wrong. </p>
<p>Since my aim was testing, I wrote programs to populate Active Directory with large/variable numbers of users and groups, and to cleanup after. Though you could make direct Active Directory or LDAP calls, I find Microsoft&#8217;s <b>ldifde</b> utility is quite useful for this purpose. Note that Active Directory uses tombstones to support distributed replication (which is good), and that scripted changes will leave behind many tombstones &#8211; which may perturb your testing. You can limit the scope of the impact by changing the <a href="http://msdn.microsoft.com/en-us/library/ms680306(VS.85).aspx">tombstone lifetime</a> &#8211; the period of time tombstones are kept before cleanup &#8211; from the default down to 2(?) days. (Finding and <a href="http://www.petri.co.il/changing_the_tombstone_lifetime_windows_ad.htm">changing</a> that single setting ate up the large part of day.)</p>
<p>(Had a flashback to the old original text-based <a href="http://en.wikipedia.org/wiki/Colossal_Cave_Adventure">Adventure</a> game. &#8220;You are in a maze of twisty passages, all alike.&#8221;)</p>
<p>Another approach is to take a snapshot of the VM when Active Directory is in a &#8220;clean&#8221; state, and restore the snapshot later. In principle this could be simpler/faster than the scripted restore (using delete operations fed via <b>ldifde</b>). Found a quite thorough article on <a href="http://blogs.technet.com/b/askds/archive/2010/06/10/how-to-virtualize-active-directory-domain-controllers-part-1.aspx">virtualizing Active Directory</a>, and ran across the <a href="http://www.google.com/search?sourceid=chrome&#038;ie=UTF-8&#038;q=USN+ROLLBACK">USN ROLLBACK</a> problem.</p>
<p>To aid in distributed replication, Active Directory keeps a count of local changes (the USN number) to track replication of remote changes. All quite usual and normal for this problem domain. Given that Active Directory has been around for a decade, you would expect the obvious use-cases to be covered, but not quite&#8230;.</p>
<p>Turns out if you distribute changes among more than one Active Directory controller, you have a problem in the not-unusual case of taking a backup (or a snapshot) and restoring it later. Thus the many items returned by the above web search, including <a href="http://msexchangeteam.com/archive/2005/11/30/415345.aspx">developers at Microsoft</a>.</p>
<p>Um &#8230; what?!? Seems to me this is a pretty common case. That Microsoft would have got this wrong in the first version back in 2000 is only slightly disappointing. That this is still a problem a decade later is very surprising indeed.</p>
<p>Given that I may for future test purposes need to add a second domain controller VM, this looks to be another problem to avoid.</p>
]]></content:encoded>
			<wfw:commentRss>http://bannister.us/weblog/2010/07/12/odds-and-ends-in-testing-with-active-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
