<?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>Technology As If People Mattered</title>
	<atom:link href="http://blog.russolsen.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.russolsen.com</link>
	<description>Russ Olsen</description>
	<lastBuildDate>Sun, 30 Dec 2012 21:49:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Books of Twenty Twelve</title>
		<link>http://blog.russolsen.com/2012/12/books-of-twenty-twelve/</link>
		<comments>http://blog.russolsen.com/2012/12/books-of-twenty-twelve/#comments</comments>
		<pubDate>Sun, 30 Dec 2012 20:38:23 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Explaining]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Space]]></category>
		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=361</guid>
		<description><![CDATA[People who like my writing sometimes ask me how I learned to do what I do. Or they want to know how they can learn to do it too. My answer is simple and in two parts: Write more and &#8230; <a href="http://blog.russolsen.com/2012/12/books-of-twenty-twelve/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>People who like my writing sometimes ask me how I learned to do what I do. Or they want to know how they can learn to do it too. My answer is simple and in two parts: <em>Write more</em> and <em>read more</em>. I suppose the <em>write more</em> part is pretty obvious, but I&#8217;m always surprised by how many people are taken aback by the <em>read more</em> part. Can you make good wine or even good Kool-Aid without knowing what it is supposed to taste like?  So I read a lot, both because it improves my writing and because reading is one of life&#8217;s great joys.</p>
<p>This past year I&#8217;ve taken to keeping track of the books that I&#8217;ve read on <a href="http://www.goodreads.com/author/show/303158.Russ_Olsen">goodreads</a> and below is the complete list. A couple of things about the list:</p>
<ol>
<li> You will notice that I liked, or at least tolerated all of the books on the list. So didn&#8217;t I pick up any books this year that I didn&#8217;t like? Sure. Did I finish them?  Heck no! Life is too short to finish a bad &#8211; or perhaps simply misdirected book &#8211; out of some bizarre sense of duty.</li>
<li> The links below are all affiliate links. If this bothers you then google is your friend.</li>
</ol>
<p>I do recommend keeping track of what you read (and thanks to my buddy <a href="http://blog.fogus.me/2012/02/22/reading/">Michael Fogus</a> for suggesting just that). Keeping a list means that you can spot patterns &#8212; for example I realized that I&#8217;ve always had a bias against short books and classic fiction &#8212; and this year I&#8217;ve tried to remedy that.</p>
<p>Anyway, here&#8217;s my list, organized by topic.</p>
<h2>Programming and Computers</h2>
<p>Given what I do for a living, you would think that I read a lot of computer books. In most years that would be true, but not this one: In 2012 I went for quality over quantity. Perhaps the book that I proudest of actually finishing is <a href="http://www.amazon.com/gp/product/0262510871/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0262510871&#038;linkCode=as2&#038;tag=eloqruby-20">Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0262510871" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Abelson, Sussman and Sussman. SIOCP is one of those much admired, frequently discussed, oft purchased but rarely read classics. Well having finally finished it, I&#8217;m here to tell you that it is well worth the effort. SIOCP takes what I think of as the 50 year view of programming; by the time you are done you will have looked at imperative programming, functional programming, meta programming, lazy data structures and everything in between. Like a lot of programmers, I&#8217;ve started this book any number of times, only to peter out somewhere in chapter three. Two things came together this year to get me on to the end: By the opening of 2012 I had gathered enough Lisp programming mileage to be comfortable with the code in the book right out of the gate. The other thing is that this time I bought a paper copy of the book &#8212; somehow having the physical thing there in my hand propelled me forward.</p>
<p>Another programming book that I read this year that I think quite a lot of is <a href="http://www.amazon.com/gp/product/1435712757/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1435712757&#038;linkCode=as2&#038;tag=eloqruby-20">Let Over Lambda</a> by Doug Hoyte. Where Abelson et. el. try to be even handed in that dry academic way about the controversies in our little world of programmers, Hoyte marches into battle with his keyboard drawn. Mostly it works and the book is full of all sorts of interesting Lisp ideas.  My beef with LOL is that Hoyte violates the &#8220;show, don&#8217;t tell&#8221; rule: If I were editing this book I would have cut most of the &#8220;Lisp is indescribably wonderful&#8221; statements and leave the examples that tend to make the reader draw her own conclusion.  Oh and one more thing: If LOL is only for the top 1% of the top 1% of programmers &#8212; as the book so helpfully explains &#8212; and there are something like 800,000 professional programmers in the U.S. then the target audience for this book is about 80 people. Did the publishers know?</p>
<p>A wonderful contrast to the somewhat preachy tone of LOL is another LOL book: Conrad Barski&#8217;s <a href="http://www.amazon.com/gp/product/1593272812/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1593272812&#038;linkCode=as2&#038;tag=eloqruby-20">Land of Lisp: Learn to Program in Lisp, One Game at a Time!</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1593272812" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>. Land of Lisp is one of those &#8216;full of cartoons and silly jokes&#8217; programming books that don&#8217;t usually work for me. The thing is that Conrad is actually funny and he mixes the jokes with one of the best beginning explanations of Lisp programming that I have ever read. If you are just starting out in the Lisp world, this is definitely a book to check out.</p>
<p>I&#8217;ve also been delving into the history of programming languages this year, which explains why I read <a href="http://www.amazon.com/gp/product/0201116693/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0201116693&#038;linkCode=as2&#038;tag=eloqruby-20">Smalltalk 80: Bits Of History, Words Of Advice</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0201116693" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Glen Krasner as well as <a href="http://www.amazon.com/gp/product/0201136880/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0201136880&#038;linkCode=as2&#038;tag=eloqruby-20">SmallTalk 80: The Language</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0201136880" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Adele Goldberg.  A fascinating look at a era where having an entire megabyte of RAM was something to brag about.</p>
<h2>Science And Math</h2>
<p>I spent much of my youth reading all of the science books that I could get my hands on, especially anything spewing out of the typewriter of Isaac Asimov. Asimov used to periodically publish collections of science oriented essays which I would consume just after the ink was dry.  I thought I had read them all (Asimov died in 1992) until I happened onto <a href="http://www.amazon.com/gp/product/155817107X/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=155817107X&#038;linkCode=as2&#038;tag=eloqruby-20">Far As Human Eye Could See</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=155817107X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  If you care at all about the art of explaining, you should read Asimov. He was a brilliant explainer &#8212; and his essays are a great place to start.</p>
<p>One of the things that all of this list making has made me realized is how much my science reading has fallen off, so I spent a lot of this year catching up. For example, back in my heavy duty science reading days the question about extra-solar planets was <em>Are they out there?</em> Now the question is <em>What time is it</em>. Time is important here because we are are discovering new planets outside of our solar system at such a furious pace. As I write this the number, according to wikipedia, is about 850. When you read this the total will be higher. Wait a little while and it will be higher still.  <a href="http://www.amazon.com/gp/product/0691142548/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0691142548&#038;linkCode=as2&#038;tag=eloqruby-20">Strange New Worlds: The Search for Alien Planets and Life Beyond Our Solar System</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0691142548" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> is Ray Jayawardhana&#8217;s tour through the people and technologies that are behind this torret of discoveries. It&#8217;s a fun book.</p>
<p><a href="http://www.amazon.com/gp/product/0684843927/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0684843927&#038;linkCode=as2&#038;tag=eloqruby-20">Newton&#8217;s Gift: How Sir Isaac Newton Unlocked the System of the World</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0684843927" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by David Berlinski is a pretty standard biography of everyone&#8217;s favorite physicist. Weaving in and out of Newton&#8217;s scientific life with what passed for his personal life, Berlinski tries &#8211; and mostly succeeds in pulling together a picture of the great scientist and very, very, ordinary man. My beef with Berlinski&#8217;s books, which also include <a href="http://www.amazon.com/gp/product/067964234X/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=067964234X&#038;linkCode=as2&#038;tag=eloqruby-20">Infinite Ascent: A Short History of Mathematics</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=067964234X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> is that his prose is just a little too ornate. Here&#8217;s a sample:</p>
<blockquote><p>Newton&#8217;s purely mathematical passions burst into flame during sixteen months; by the time that he left Cambridge for the countryside, the plague in place at the university, he had already immersed himself in the free-flowing currents of European mathematics and discovered, no doubt to his satisfaction that his powers were bounded only by his patience.</p>
</blockquote>
<p>Sharp intake of air.</p>
<p>I wish there were more writers like Mary Roach out there (in fact I wish I was one of them). A typical Roach book is a light-hearted romp through some scientific or technical subject, with just enough fun to keep the science interesting. This year I read both <a href="http://www.amazon.com/gp/product/0393068471/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0393068471&#038;linkCode=as2&#038;tag=eloqruby-20">Packing for Mars: The Curious Science of Life in the Void</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0393068471" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> and the somewhat more cringe inducing <a href="http://www.amazon.com/gp/product/0393064646/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0393064646&#038;linkCode=as2&#038;tag=eloqruby-20">Bonk: The Curious Coupling of Science and Sex</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0393064646" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  Both of these books are more about how people are reacting to our modern age than about the deep insights into how the physical world works, but both are fun and informative.</p>
<p>There were also no great revelations in <a href="http://www.amazon.com/gp/product/1588167224/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1588167224&#038;linkCode=as2&#038;tag=eloqruby-20">Big Ideas: 100 Modern Inventions That Have Transformed Our World</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1588167224" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Alex  Hutchinson. It&#8217;s another one of those <em>pictures plus a couple of pages of text for N things</em> kinds of books but it did pass a pleasant hour or so on a Sunday afternoon. Much more serious was <a href="http://www.amazon.com/gp/product/0393327000/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0393327000&#038;linkCode=as2&#038;tag=eloqruby-20">Einstein&#8217;s Cosmos: How Albert Einstein&#8217;s Vision Transformed Our Understanding of Space and Time</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0393327000" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Michio Kaku.  If you don&#8217;t know Michio Kaku, well you do. If you are a network news producer and someone discovers water on Mars or a misplaced boson, then the good Dr. Kaku is your goto guy. With good reason &#8212; Michio Kaku is a great explainer in the Asimov tradition and he can explain Relativity with the best of them.</p>
<p>My wife has a term for books like Patrick Moore&#8217;s <a href="http://www.amazon.com/gp/product/1846282578/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1846282578&#038;linkCode=as2&#038;tag=eloqruby-20">Moore on Mercury: The Planet and the Missions</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1846282578" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>. She calls them URBs, short for Ultimate Russ Books. You see my life partner is under the impression that I like very narrowly focused and detailed books, tomes that, in her words, will &#8216;tell you everything about nothing&#8217;. The trouble is that Moore&#8217;s book doesn&#8217;t really work as a URB. It&#8217;s kind of scattered, and worse there are a couple of really egregious errors. A much better candidate for URBdom is Alan Boyle&#8217;s <a href="http://www.amazon.com/gp/product/0470505443/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0470505443&#038;linkCode=as2&#038;tag=eloqruby-20">The Case for Pluto: How a Little Planet Made a Big Difference</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0470505443" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  A fun book that runs through the history of Pluto all the way from discovery through planetary dethronement.  Another interesting and surprisingly readable little book was Paul Strathern&#8217;s <a href="http://www.amazon.com/gp/product/0385492421/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0385492421&#038;linkCode=as2&#038;tag=eloqruby-20">Hawking and Black Holes</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0385492421" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  I&#8217;ve always found Hawking&#8217;s writing completely incomprehensible. This book was only partially incomprehensible, which, when you are talking about black holes is a win.</p>
<p>Lee Smolin&#8217;s <a href="http://www.amazon.com/gp/product/0618551050/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0618551050&#038;linkCode=as2&#038;tag=eloqruby-20">The Trouble with Physics: The Rise of String Theory, the Fall of a Science and What Comes Next</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0618551050" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> is exactly what the title suggests: A long explanation of string theory and why it isn&#8217;t even science and how it came to dominate physics thinking and why that is a bad idea. I found the science in this book interesting and the politics of physics departments less so.</p>
<p>The best part of Richard Panek&#8217;s <a href="http://www.amazon.com/gp/product/B0091NID7Y/ref=as_li_ss_tl?ie=UTF8&#038;tag=eloqruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B0091NID7Y">Seeing and Believing: A Short History of the Telescope and How we Look at the Universe</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=B0091NID7Y" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is how the telescope changed astronomy not once but many times: Each new technical development led to a new vision of how the Universe is put together.</p>
<p>So who can resist a book from Jack Horner, who was technical advisor on the film Jurassic Park entitled <a href="http://www.amazon.com/gp/product/0525951040/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0525951040&#038;linkCode=as2&#038;tag=eloqruby-20">How to Build a Dinosaur: Extinction Doesn&#8217;t Have to Be Forever</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0525951040" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>? This books covers the usual territory of what the dinosaurs are, how we know about them, <em>what</em> we know about them and the prospects for creating a modern day (and I&#8217;m not making this up) chickenosaursus. Fun book.</p>
<p>I also spent some time learning more about math, starting with Ian Stewart&#8217;s <a href="http://www.amazon.com/gp/product/0471158453/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0471158453&#038;linkCode=as2&#038;tag=eloqruby-20">Life&#8217;s Other Secret: The New Mathematics Of The Living World</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0471158453" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  Mr. Steward contends that DNA ain&#8217;t all there is to living things &#8212; that life is as much about the complex unfolding of dynamic systems as it is about the information encoded in your genes. Sounds plausible to me. Is Steward right?  Dunno. But at least I know what the questions are, which is the first step.</p>
<p>I spent a lot of time studying calculus when I was in school and this year I turned back to that subject with a war and some diaries. The war came in the form of the historical dispute over who invented calculus: <a href="http://www.amazon.com/gp/product/1560259922/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1560259922&#038;linkCode=as2&#038;tag=eloqruby-20">The Calculus Wars: Newton, Leibniz, and the Greatest Mathematical Clash of All Time</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1560259922" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Jason Socrates Bardi.  The diaries came curtesy of Jennifer Ouellette, who takes us along on her quest to figure out just what all those funny <em>dx</em>&#8216;s are all about: <a href="http://www.amazon.com/gp/product/0143117378/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0143117378&#038;linkCode=as2&#038;tag=eloqruby-20">The Calculus Diaries: How Math Can Help You Lose Weight, Win in Vegas, and Survive a Zombie Apocalypse</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0143117378" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  If I had to choose between the two I would definitely go for the Zombie Apocalypse flavored calculus over the stuffier historical variety.</p>
<p>If you have some time to kill in the bunker while waiting for the zombies to dissipate, take a look at Nate Silver&#8217;s <a href="http://www.amazon.com/gp/product/159420411X/ref=as_li_ss_tl?ie=UTF8&#038;tag=eloqruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=159420411X">The Signal and the Noise: Why So Many Predictions Fail</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=159420411X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.  Silver is the guy who predicted the results of the recent U.S. presidential election down to the last state. Perhaps we should spend less time listening to the pundits and more time listening to people who tend to be right?</p>
<p>You might also want to spend some time with Michael Meyerson&#8217;s <a href="http://www.amazon.com/gp/product/0393323722/ref=as_li_ss_tl?ie=UTF8&#038;tag=eloqruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0393323722">Political Numeracy: Mathematical Perspectives on Our Chaotic Constitution</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0393323722" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.  This book is less about predictions and more about having a coherent debate about politics. I particularly like Meyerson&#8217;s idea that the arguments about things like the death penalty and abortion can be informed by modern mathematical ideas about infinity.</p>
<h2>History</h2>
<p>I like history a lot and since much of the US civil war was fought on my doorstep I do tend to spend a lot of time on that particular episode. This year&#8217;s crop of Civil War books included <a href="http://www.amazon.com/gp/product/1575058308/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1575058308&#038;linkCode=as2&#038;tag=eloqruby-20">Secrets of a Civil War Submarine: Solving the Mysteries of the H.L. Hunley</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1575058308" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Sally M. Walker, which is actually aimed at kids, but was interesting nevertheless. There was also <a href="http://www.amazon.com/gp/product/1580800971/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1580800971&#038;linkCode=as2&#038;tag=eloqruby-20">To Appomattox: Nine April Days, 1865</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1580800971" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Burke Davis, a book about the last days of the war, an OK book that was just obsessive enough in the details to have that <em>I spend every weekend reenacting the Battle of Whatever</em> feel.</p>
<p>As I say, I like history a lot, and I do like some decades more than others.  So this year I&#8217;ve tried to expand out a bit and fill in those dark spaces in my historical head, with mixed results. For example, a close reading of Tuchman&#8217;s <a href="http://www.amazon.com/gp/product/0345405013/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0345405013&#038;linkCode=as2&#038;tag=eloqruby-20">The Proud Tower: A Portrait of the World Before the War 1890-1914</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0345405013" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> leads me to the conclusion that life from 1890 to 1914 was tedious. At least reading this book was; perhaps those years need a better biographer. Better was <a href="http://www.amazon.com/gp/product/0500275890/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0500275890&#038;linkCode=as2&#038;tag=eloqruby-20">The Crazy Years: Paris in the Twenties</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0500275890" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by William Wiser, which is a tour through the artist and writer infested Paris immediately after the First World War.</p>
<p>Speaking of that late unpleasantness, we have John Keegan&#8217;s <a href="http://www.amazon.com/gp/product/0375400524/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0375400524&#038;linkCode=as2&#038;tag=eloqruby-20">The First World War</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0375400524" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>. Now this is what I look for in a history book: It&#8217;s deep, it&#8217;s detailed and it keeps moving.</p>
<p>Of course you can&#8217;t talk about World War I without mentioning it bigger and uglier brother.  <a href="http://www.amazon.com/gp/product/0684869314/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0684869314&#038;linkCode=as2&#038;tag=eloqruby-20">Finest Hour : The Battle of Britain</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0684869314" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Phil Craig is a good book on the early &#8216;Britain stands alone&#8217; part of the war.</p>
<p>Along with history I love me a good caper story. Put the two of them together and you have Paul Brickhill&#8217;s <a href="http://www.amazon.com/gp/product/0393325792/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0393325792&#038;linkCode=as2&#038;tag=eloqruby-20">The Great Escape</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0393325792" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  This is the story of a a massive breakout from a German World War II POW camp, complete with tunnels, convincing disguises, cleverly faked identity papers, the works. Of course it&#8217;s all fun and games until you piss off the Nazis and they start executing people.</p>
<p>Alan Moorehead&#8217;s <a href="http://www.amazon.com/gp/product/B00AQ5H89K/ref=as_li_ss_tl?ie=UTF8&#038;tag=eloqruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B00AQ5H89K">Eclipse</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=B00AQ5H89K" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> is an interesting first hand account of the end of World War II. Written just months after the war ended, it is a good lesson in how different things can look when you are right up against them. Worth a read.</p>
<p>Rounding out my WWII collection is <a href="http://www.amazon.com/gp/product/0393320103/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0393320103&#038;linkCode=as2&#038;tag=eloqruby-20">Eisenhower and Berlin, 1945: The Decision to Halt at the Elbe</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0393320103" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Stephen E. Ambrose.  This is as much a book about the Cold War <em>Why didn&#8217;t the western powers rush into and take more of Germany before the Soviets got there?</em> as about the Second World War. Also another URB. As is <a href="http://www.amazon.com/gp/product/0143038273/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0143038273&#038;linkCode=as2&#038;tag=eloqruby-20">The Cold War: A New History</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0143038273" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by John Lewis Gaddis.  I remember the day &#8212; I think I was 11 or 12 &#8212; when I realized that there was this other country out there, a country that was ready, and more disturbingly able, to kill me with 15 minutes notice. Gaddis&#8217; book puts all that in perspective and along the way made me feel better about the world as it is today. Think about it: for all the horrible things that are going on right now, at least we are not 15 minutes away from extinction.</p>
<p>If you are, as I am, a fan of the HBO series Boardwalk Empire, you might be tempted to check out <a href="http://www.amazon.com/gp/product/0966674863/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0966674863&#038;linkCode=as2&#038;tag=eloqruby-20">Boardwalk Empire: The Birth, High Times, and Corruption of Atlantic City</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0966674863" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Nelson Johnson.  Although the TV show is theoretically based on the book, be forewarned that the two have very little in common.  Read the book and you will find that, as shown in the HBO series, AC was indeed a center of bootlegging during the 1920&#8242;s. But keep reading and you will also learn how Atlantic City came into being, how it rose and then declined and the (maybe) rose again with the coming of casino gambling. That is a lot of dry historical fact in return for a brief flash of mob glitter.</p>
<p>I&#8217;m also a fan of the TV show Mad Men. The book <a href="http://www.amazon.com/gp/product/0762440902/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0762440902&#038;linkCode=as2&#038;tag=eloqruby-20">The Real Mad Men: The Wizards of Madison Avenue and the Memorable Ads that Shaped Our World</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0762440902" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Andrew Cracknell? Meh.</p>
<p>I have strong political opinions and one of them is that people should mostly keep their politics to themselves.  Having said that, I do think that Rachel Maddow&#8217;s <a href="http://www.amazon.com/gp/product/0307460983/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0307460983&#038;linkCode=as2&#038;tag=eloqruby-20"> Drift: The Unmooring of American Military Power </a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0307460983" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> is worth reading. Maddow makes the case that the US military has become detached from most of the US population and that this is bad for the military, for the rest of us and for the country as a whole.</p>
<p>In the same spirit, with all the talk in this past US election about voters needing picture ID, I&#8217;d like to suggest an alternative: Everyone who wants to vote should need an ID or proof that they have read Maureen Harrison&#8217;d <a href="http://www.amazon.com/gp/product/1880780097/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1880780097&#038;linkCode=as2&#038;tag=eloqruby-20">Freedom of Speech Decisions of the United States Supreme Court</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1880780097" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  This simple book, where each chapter focuses on a single Supreme Court decision, complete with a summary of the case followed by the key bits of the decision itself, makes me proud of my country.</p>
<p><a href="http://www.amazon.com/gp/product/0671224387/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0671224387&#038;linkCode=as2&#038;tag=eloqruby-20">Blind Ambition</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0671224387" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by John Dean makes me a lot less proud. Dean was one of the key figures in the 1970s political firestorm known as Watergate. If you have ever wondered how decent people sometimes end up doing really awful things, have a look at this book.</p>
<p>Finally we have <a href="http://www.amazon.com/gp/product/1566563860/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1566563860&#038;linkCode=as2&#038;tag=eloqruby-20">A Travellers History of Canada</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1566563860" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Robert Bothwell. This was a book I read at least partially out of guilt. My friend and colleague Ryan Neufeld is from Canada and, well, I didn&#8217;t know a thing about that big country lurking up there at the top of the map.  So I got hold of this book &#8212; admittedly a little dry and a little dated &#8212; and now I&#8217;m don&#8217;t feel quite as ill informed as I did. Just mostly.</p>
<p>Next year I&#8217;m going to make a concerted effort to read some non-North American, non Western Europe history.</p>
<h2>Various</h2>
<p><a href="http://www.amazon.com/gp/product/0981973310/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0981973310&#038;linkCode=as2&#038;tag=eloqruby-20">Reel Culture: 50 Movies You Should Know About (So You Can Impress Your Friends)</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0981973310" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Mimi O&#8217;Connor is another one of those <em>N Things</em> kind of books. Should I feel guilty? Yes. Do I actually feel guilty? No.</p>
<p>I certainly don&#8217;t feel guilty about reading <a href="http://www.amazon.com/gp/product/0761169253/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0761169253&#038;linkCode=as2&#038;tag=eloqruby-20">Steal Like an Artist: 10 Things Nobody Told You About Being Creative</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0761169253" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Austin Kleon.  Steal Like an Artist proves that books don&#8217;t have to be long and drab to be wonderful and valuable. Steal this book.</p>
<p>Another winning &#8216;N Things&#8217; book is <a href="http://www.amazon.com/gp/product/1582975213/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1582975213&#038;linkCode=as2&#038;tag=eloqruby-20">The Little Red Writing Book: 20 Powerful Principles of Structure, Style, and Readability</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1582975213" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Brandon Royal.  Being able to write well is the gift that gives in both directions: It makes you better at what you do and it enables you to make other people better. This little book is a great reminder of the basics.</p>
<p>Closely related are the next two books. I say they are related because being able to write is only part of the equation. The other bit is knowing something.  <a href="http://www.amazon.com/gp/product/0195052927/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0195052927&#038;linkCode=as2&#038;tag=eloqruby-20">What Does It All Mean? A Very Short Introduction to Philosophy</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0195052927" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by Thomas Nagel is a very short book about how we know what we know, while Michael Shermer&#8217;s <a href="http://www.amazon.com/gp/product/0716730901/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0716730901&#038;linkCode=as2&#038;tag=eloqruby-20">Why People Believe Weird Things: Pseudoscience, Superstition, And Other Confusions Of Our Time</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0716730901" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> is all about how we know what we do not in fact know. I know more for having read these two.</p>
<p>Finally, here&#8217;s another personal admission: I love the Ukulele. I love playing the things, I love other people playing them, I love buying them, and I even love reading about them.  Despite the fact that, <a href="http://quoteinvestigator.com/2010/11/08/writing-about-music/">as someone once said</a>, writing about music is like dancing about architecture, I like the way Alistair Wood writes about the ukulele in <a href="http://www.amazon.com/gp/product/047097799X/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=047097799X&#038;linkCode=as2&#038;tag=eloqruby-20">Ukulele for Dummies</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=047097799X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  If you want to learn to play the uke, a) buy one b) check out youtube and c) buy this book.</p>
<h2>Fiction</h2>
<p>This has been a fictional year of discoveries for me. The discoveries were real enough, it&#8217;s just that they involved fiction. I kicked off the year by discovering Jack McDevitt, in the form of his novel <a href="http://www.amazon.com/gp/product/0061051241/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0061051241&#038;linkCode=as2&#038;tag=eloqruby-20">Deepsix (Engines of God, #2)</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0061051241" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  Deepsix has everything that good science fiction should: Strong characters, including an actual female lead for a change, commentary on current society, and high, high tech all wrapped in an action filled plot. The only question that Deepsix leaves behind is why Hollywood insists on making crappy, story-free bits of fluff (yes Avatar, I&#8217;m talking about you) when Deepsix is lying around, just waiting to be made into a film? Best of all, Deepsix is part of a series (actually it&#8217;s the second volume of the series, but I&#8217;ve never been known for coloring within the lines) so once you finish it you can flow right into <a href="http://www.amazon.com/gp/product/0441011020/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0441011020&#038;linkCode=as2&#038;tag=eloqruby-20">Chindi</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0441011020" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> or <a href="http://www.amazon.com/gp/product/0441015255/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0441015255&#038;linkCode=as2&#038;tag=eloqruby-20">Cauldron</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0441015255" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> or <a href="http://www.amazon.com/gp/product/0441010466/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0441010466&#038;linkCode=as2&#038;tag=eloqruby-20">Omega</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0441010466" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>. If you aren&#8217;t in the mood for a long series, you can try the other McDevitt book that I read this year: <a href="http://www.amazon.com/gp/product/0061020052/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0441010466&#038;linkCode=as2&#038;tag=eloqruby-20">Infinity Beach</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0061020052" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  Many of the same themes as Deepsix et. el. in a single tidy tome.</p>
<p>If you are looking for another good book with a strong female lead then try Stieg Larsson&#8217;s <a href="http://www.amazon.com/gp/product/0307269752/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0307269752&#038;linkCode=as2&#038;tag=eloqruby-20">The Girl With the Dragon Tattoo (Millennium, #1)</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0307269752" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>. This story of violence, abuse and creepy old men is not for the weak of heart nor the upsetable of stomach, but it is nevertheless an enthralling read.</p>
<p>On the much lighter side is Stuart Jaffe&#8217;s <a href="http://www.amazon.com/gp/product/1477633421/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1477633421&#038;linkCode=as2&#038;tag=eloqruby-20">Southern Bound (Max Porter Mysteries)</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1477633421" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> and its sequel <a href="http://www.amazon.com/gp/product/1479280828/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1479280828&#038;linkCode=as2&#038;tag=eloqruby-20">Southern Charm</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1479280828" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  So you got your modern day private eye, his feisty wife and their secret weapon, the ghost of a long dead Sam Spade knock-off. Yes, you read that right, ghost. I don&#8217;t usually recommend books based on price, but I&#8217;ve got to say that these inexpensive novels (available on Amazon and wherever fine bytes are sold) provide a lot of fun for not a lot of bucks.</p>
<p>Another way to waste a lazy Sunday afternoon is to read the little gems in <a href="http://www.amazon.com/gp/product/0684842963/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0684842963&#038;linkCode=as2&#038;tag=eloqruby-20">50 Short Science Fiction Tales</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0684842963" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  Edited by Isaac Asimov, this book is full of 4 and 5 page mini stories. In a world full of <em>600 page, Part 1 of the 11 book series with maps on the end pages</em> it&#8217;s fun to read stories that come to the point.</p>
<p>Do comic books &#8212; sorry, graphic novels &#8212; count? They do if they are <a href="http://www.amazon.com/gp/product/1563898586/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1563898586&#038;linkCode=as2&#038;tag=eloqruby-20">The League of Extraordinary Gentlemen, Vol. 1</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1563898586" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> and <a href="http://www.amazon.com/gp/product/1401201180/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1401201180&#038;linkCode=as2&#038;tag=eloqruby-20">The League of Extraordinary Gentlemen, Vol. 2</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=1401201180" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> both by Alan Moore. If you take all of the fun characters from 19th century speculative fiction, everyone from Captain Nemo to Mr Hyde and roll them into a James Bond sort of plot, well you had me at <em>Captain Nemo</em>.</p>
<p>Speaking of 19th century speculative fiction, I also read <a href="http://www.amazon.com/gp/product/0553214322/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0553214322&#038;linkCode=as2&#038;tag=eloqruby-20">The Island of Dr. Moreau</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0553214322" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> by H.G. Wells this year. Creepy and bloody in ways that usually keep me out of a book, this one was good enough to propel me on to the end.  I&#8217;ll never look at the cat quite the same way again though.</p>
<p>I love John Mortimer&#8217;s Rumpole stories, and knowing this my lovely wife gave me <a href="http://www.amazon.com/gp/product/0670021350/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0670021350&#038;linkCode=as2&#038;tag=eloqruby-20">A Rumpole Christmas: Stories</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0670021350" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> for (what else) Christmas. If you don&#8217;t know Rumpole, he is an aging and opinionated British lawyer and sometimes writer, someone who is good at what he does and simply wants to get on with it. Substitute &#8216;engineer&#8217; for &#8216;lawyer&#8217; and you&#8217;ve pretty much nailed my career aspirations, but I wish I was half as witty as old Rumpole.</p>
<p>My final discovery this year was Jane Austen. Now Jane and her books have been around for a while, it&#8217;s just that I could never bring myself to finish one. This year I discovered it wasn&#8217;t Jane that I had a problem with, it was Emma. You know, the snotty rich girl from Austen&#8217;s novel called, well, Emma. I had tried to read Emma a few years ago and it just bugged me. So early this year I had another run at Austen with <a href="http://www.amazon.com/gp/product/0486284735/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0486284735&#038;linkCode=as2&#038;tag=eloqruby-20">Pride and Prejudice</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0486284735" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> and what do you know, the girl can write. In fact I liked P&amp;P so much that I slid right into another Austen winner <a href="http://www.amazon.com/gp/product/0141439661/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0141439661&#038;linkCode=as2&#038;tag=eloqruby-20">Sense and Sensibility</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0141439661" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/>.  From there I went on to <a href="http://www.amazon.com/gp/product/0192802631/ref=as_li_ss_tl?ie=UTF8&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0192802631&#038;linkCode=as2&#038;tag=eloqruby-20">Persuasion</a><img src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&#038;l=as2&#038;o=1&#038;a=0192802631" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/> and at that point my romance with Miss Austen hit another rough patch. So Jane and I are on something of a break, reading other people and seeing how things work out. I&#8217;ll let you know.</p>
<p>Onward to 2013!</p>
<p>Russ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/12/books-of-twenty-twelve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eloquent Explanations Talk Is Now Online</title>
		<link>http://blog.russolsen.com/2012/12/eloquent-explanations-now-online/</link>
		<comments>http://blog.russolsen.com/2012/12/eloquent-explanations-now-online/#comments</comments>
		<pubDate>Thu, 20 Dec 2012 23:47:42 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Explaining]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=353</guid>
		<description><![CDATA[The talk that I&#8217;ve had the most fun doing lately is finally online. Here&#8217;s the official description: Have you ever thought about how much of software engineering involves explaining things? We stick comments in our program to explain why we &#8230; <a href="http://blog.russolsen.com/2012/12/eloquent-explanations-now-online/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The talk that I&#8217;ve had the most fun doing lately is <a href="http://www.youtube.com/watch?v=80EE4mZmp3A">finally online</a>. Here&#8217;s the official description:</p>
<p style="padding-left: 30px;">Have you ever thought about how much of software engineering involves explaining things? We stick comments in our program to explain why we added X to Y, we type up README files to explain the program, we write proposals to explain why the program should be funded and we spend the afternoon explaining the whole thing to the new guy so that we can move on to something new. A decent explanation can be the difference between success and obscurity: Would there be any Ruby conferences if not for that original 15 minute build-a-blog screencast for Rails?</p>
<p>In this talk Russ Olsen will run through the things that you can do to craft explanations that are clear, engaging and perhaps even a bit funny. Russ will do his best to be clear, engaging and perhaps a bit funny.</p>
<p>This version is from last Summer at the Rocky Mountain Ruby conference in Boulder.</p>
<p>&nbsp;</p>
<p>Russ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/12/eloquent-explanations-now-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another InformIT article!</title>
		<link>http://blog.russolsen.com/2012/08/another-informit-article/</link>
		<comments>http://blog.russolsen.com/2012/08/another-informit-article/#comments</comments>
		<pubDate>Mon, 13 Aug 2012 12:50:48 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Explaining]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=347</guid>
		<description><![CDATA[I haven&#8217;t been blogging lately, but I have been writing. Along with the Best Advice article that came out last week I&#8217;ve also recently did an interview with Michael Hart, the author of  Ruby on Rails Tutorial, 2nd edition. Here&#8217;s how it &#8230; <a href="http://blog.russolsen.com/2012/08/another-informit-article/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t been blogging lately, but I <em>have</em> been writing. Along with the <a href="http://blog.russolsen.com/2012/08/the-best-programming-advice-i-ever-got/">Best Advice</a> article that came out last week I&#8217;ve also recently did an <a href="http://www.informit.com/articles/article.aspx?p=1927377">interview</a> with Michael Hart, the author of  <a href="http://www.informit.com/store/product.aspx?isbn=0321832051">Ruby on Rails Tutorial, 2nd edition</a>. Here&#8217;s how it starts:</p>
<p style="padding-left: 30px;"><strong>Russ:</strong> One thing that surprised me as I was preparing for this interview is that you have a Ph.D. in theoretical physics. How did you start in physics and end up in Ruby?</p>
<p style="padding-left: 30px;"><strong>Michael:</strong> My work was mainly in computational physics, so I was writing programs all the time as part of my Ph.D. research. I also got interested in the idea of starting a company when I graduated. It was obvious in the late &#8217;90s that software was moving online, so I decided to learn web development. I started with PHP, moved on to Python (in the pre-Django days), and then found Rails.</p>
<p>You can find the whole interview here: <a href="http://www.informit.com/articles/article.aspx?p=1927377">An Interview with Michael Hartl: Ruby on Rails, the &#8216;Magic&#8217; Problem, and the Higgs Boson</a></p>
<p>Russ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/08/another-informit-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Best Programming Advice I Ever Got</title>
		<link>http://blog.russolsen.com/2012/08/the-best-programming-advice-i-ever-got/</link>
		<comments>http://blog.russolsen.com/2012/08/the-best-programming-advice-i-ever-got/#comments</comments>
		<pubDate>Thu, 09 Aug 2012 13:05:52 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=341</guid>
		<description><![CDATA[The good folks over at InformIT have published another of my articles. Here&#8217;s how it starts: The best programming advice I ever got came to me early in my career while I was working on a system that I simultaneously &#8230; <a href="http://blog.russolsen.com/2012/08/the-best-programming-advice-i-ever-got/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The good folks over at InformIT have published another of my articles. Here&#8217;s how it starts:</p>
<p style="padding-left: 30px;">The best programming advice I ever got came to me early in my career while I was working on a system that I simultaneously loved and hated. The cool part of that system was that we were doing computer aided design &#8212; think Adobe Illustrator, but for engineers. In those days CAD, with its interactive graphics, was the highest of high tech. The thing I hated was that the it was slow, painfully slow: You would sit there and watch the picture appear line by painful line. A simple drawing would take tens of seconds, while displaying something complicated was an opportunity to get coffee. The performance of that system was horrendous even by the standards of the primitive computers we had back then, which is saying something. What was a hacker to do? What would *you* do? &#8230;</p>
<p>Find out what I did over at <a href="http://www.informit.com/articles/article.aspx?p=1926692">InformIT</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/08/the-best-programming-advice-i-ever-got/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five Truths About Code Optimization</title>
		<link>http://blog.russolsen.com/2012/07/optimization/</link>
		<comments>http://blog.russolsen.com/2012/07/optimization/#comments</comments>
		<pubDate>Thu, 05 Jul 2012 02:55:01 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Repost]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[speed]]></category>

		<guid isPermaLink="false">http://designpatternsinruby.com/taipm/?p=44</guid>
		<description><![CDATA[One of the things that is remarkable about programming is how the details keep changing  while most of the fundamentals stay exactly the same. Here&#8217;s an article about code optimization that I wrote years ago that I required only very &#8230; <a href="http://blog.russolsen.com/2012/07/optimization/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of the things that is remarkable about programming is how the details keep changing  while most of the fundamentals stay exactly the same. Here&#8217;s an article about code optimization that I wrote years ago that I required only very minor editing to bring up to date.</p>
<hr />
<p>In my professional life, I’m only afraid of a few things. John’s keyboard, which is coated with that fine patina of brown gunk. A call in the middle of the night saying the app server won’t start. And the dreaded request: “Russ, see if you can speed this code up.” It’s usually code I’ve never seen. It’s probably important, otherwise they wouldn’t be worried about how it is performing. And speed it up to what? Still, there are some basics you can fall back on when someone asks you to optimize some code. Here goes…</p>
<h2>1) Start with working code and good tests or you are doomed</h2>
<p>Before you can make something work fast, you need to make it work. And you can’t know that it is working if you don’t have good unit tests to tell you so. There is no point in making broken code run faster — a program that simply prints out “42” will run in no time flat but is unlikely to produce the output you are looking for. How are you going to know if your optimizations haven’t sped things up by breaking them horribly? You need a good set of tests.</p>
<h2>2) Rest assured, you don’t know where the problem is</h2>
<p>Back when I was still doing a lot of Java, I was assigned the task of speeding up some  code that managed query results. Very large query results. A quarter of a million rows, each with more than a hundred columns was not out of the question. The code that I inherited was actually the second or third generation of the thing. The original had kept all the results in memory, a strategy that worked fine as long as the number of users was approximately two. Any more and smoke started to billow up from the server room. The version that I started with at least stayed up, since it stored the results in a random access file and kept an index of the file in memory. The problem with the new version was that it was very slow.</p>
<p>I looked over the code and immediately found the performance problem: they were using Java serialization to turn the rows into bytes before writing them to disk. Ah, I thought, serialization is dead slow. It only took me the better part of the afternoon to come up with a way of turning those rows into bytes without the overhead of Java serialization. But removing the serialization didn’t really make much of a difference. A few percent when I was looking for something like 75%.</p>
<p>Although my change made only a tiny difference in the speed of the code, I did gain something. I was reminded that when optimizing, you need to profile first and code later. I was so darned sure it was the serialization that I didn’t bother to profile the code. Well OK, so I took my change out and profiled the code. Surprise! The culprit turned out to be in the way we were reading and writing the data to the file. Our IO was completely unbuffered — we were laboriously reading and writing all that data one byte at a time. Compared to huge IO overhead, the serialization was a drop in the bucket.</p>
<p>My experience is not unusual: Your best guess as to what is making this program a pig is usually wrong. The only way to know is to run your code with a profiler and see which bits are the slow ones.</p>
<h2>3) There is always a long pole in the tent, but it is not always the same pole</h2>
<p>As you optimize you code, you need to run your profiling after each change. You are looking to answer two questions. First, did my change actually help? If the change did speed things up, is there now a new bottleneck? Some part of our program is always going to be the limiting factor — otherwise your code would be infinitely fast. As you optimize things, it is quite likely that the part you sped up will fade into the background and some other section of the code will become the new bottleneck.</p>
<p>Going back to my results manager project, turns out that after I put in the buffered IO, which made a huge difference, the slowest part of the code was… Yes! The serialization. Remove the huge cost of unbuffered IO and the Java serialization was the problem. Back into the code went my original change.</p>
<h2>4) If it doesn’t help, take it out</h2>
<p>I said that you should reprofile your code after each change. The idea is to see if the change helped and if so to identify the new problem area. But what if the change didn’t help? Take It Out! I don’t care if your idea is so brilliantly efficient that it can’t possibly not speed things up. If Mother Nature doesn’t agree, Take It Out. Look at it this way: you are starting with code that works and your job is to make it faster. And oh yes, keep it working. Despite your unit tests, every change you make risks screwing things up. If your optimization isn’t an optimization, then Take It Out. <em>How fast is broken?</em></p>
<h2>5) You need to know when to stop</h2>
<p>The trouble with optimization is there is no end to it. You can always think of something you can do to make the thing run a little faster, lighter, cheaper. The trouble is that making programs run faster frequently means making them uglier. There are exceptions: sometimes the original is slow because it is badly thought out, or it takes up too much space because it was hacked together from the start. But much of the time optimization is the process of taking nice code and making it longer, more complex, harder to read. In short, less nice. Really we should stop using the term optimization. We should call it what it really is: screwing up the code so that it performs better or maybe <em>justifiable</em> <em>mutilation</em>. You have to know when to stop, when the mutilation to performance ratio is just too high.</p>
<p>That’s really it: when optimizing you need to know what you are starting with, what you need to change, if your changes are working, and when to stop.</p>
<p>Russ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/07/optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Halfway Through 2012</title>
		<link>http://blog.russolsen.com/2012/07/halfway-through-2012/</link>
		<comments>http://blog.russolsen.com/2012/07/halfway-through-2012/#comments</comments>
		<pubDate>Mon, 02 Jul 2012 12:06:17 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=306</guid>
		<description><![CDATA[Today is July 1 and that means that the first six months of 2012 are history. Here&#8217;s what I&#8217;ve been up to: Books Read Thirty Two. Sad that Structure and Interpretation of Computer Programs is not on that list. Happy that &#8230; <a href="http://blog.russolsen.com/2012/07/halfway-through-2012/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today is July 1 and that means that the first six months of 2012 are history. Here&#8217;s what I&#8217;ve been up to:</p>
<p><strong>Books Read</strong> <a href="http://www.goodreads.com/author/show/303158.Russ_Olsen">Thirty Two.</a> Sad that <a href="http://www.amazon.com/gp/product/0070004846/ref=as_li_ss_tl?ie=UTF8&amp;tag=eloqruby-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0070004846">Structure and Interpretation of Computer Programs</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=eloqruby-20&amp;l=as2&amp;o=1&amp;a=0070004846" alt="" width="1" height="1" border="0" /> is not on that list. Happy that it will be the first book that I finish in the 2nd half of the year since I&#8217;m just 100 pages from done.</p>
<p><strong>Miles Hiked</strong> A couple of hundred but I should have kept better track.</p>
<p><strong>Most Inane Discovery</strong> There are <a href="http://www.usmint.gov/mint_programs/$1coin/index.cfm?action=UGrant">Ulysses S Grant</a> $1 coins. My grandfather was named after the Civil War general and 18th US president. Imagine going thru life with Ulysses as your first name.</p>
<p><strong>Blog Articles Written </strong>Twelve</p>
<p><strong>New Programming Languages Wrestled With</strong> Two &#8212; Clojure and JavaScript. Three if you count CoffeeScript. (Ruby is no longer a struggle, finally. We do punch each other in the shoulder occasionally, just to show that we care).</p>
<p><strong>JavaScript Projects Completed</strong> Just one, but a biggie because it was first.</p>
<p><strong>Ukuleles Acquired</strong> Just one. I think the <a href="http://gx9901ukes.blogspot.com/2007/11/uas-and-me.html">UAS</a> is finally under control.<a href="http://blog.russolsen.com/wp-content/uploads/2012/07/IMG_0062.jpg"><img class="alignright size-medium wp-image-312" title="Kala Concert Uku" src="http://blog.russolsen.com/wp-content/uploads/2012/07/IMG_0062-224x300.jpg" alt="" width="224" height="300" /></a></p>
<p><strong>Most Popular Article</strong> <a href="http://www.informit.com/articles/article.aspx?p=1759889">Ruby reading list</a> by a mile.</p>
<p><strong>Best Conference Moment</strong> Hearing someone at <a href="http://rubynation.org">RubyNation</a> 2012 say that RubyNation 2008 changed his life (I&#8217;m a RubyNation organizer)</p>
<p><strong>Best Work Moment</strong> Since I work at <a href="http://thinkrelevance.com">Relevance</a>, too many to list. Having said that,  dialing into an early morning standup the other day to hear <a href="http://blog.fogus.me/">Michael Fogus</a> say &#8220;More fish-sticks!&#8221; does come to mind.</p>
<p><strong>Most Insane (in a good way) Coworker</strong> The golden straight jacket has to go to <a href="https://twitter.com/#!/spicycode">Chad Humphries</a>, though there are many, many runners up.</p>
<p><strong>Best Personal Moment</strong> Seeing my son graduate.</p>
<p><strong>Saddest Personal Moment</strong> Seeing my son graduate.</p>
<p><strong>New Book Projects</strong> &lt;&lt;REDACTED &gt;&gt; But stay tuned.</p>
<p>I love <a href="http://www.youtube.com/watch?v=nC1yLD7R0ZU">living in the future</a>.</p>
<p>Russ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/07/halfway-through-2012/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Acing The Technical Talk: The Secret Ingredient</title>
		<link>http://blog.russolsen.com/2012/06/acing-ingredient/</link>
		<comments>http://blog.russolsen.com/2012/06/acing-ingredient/#comments</comments>
		<pubDate>Fri, 29 Jun 2012 19:22:05 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Explaining]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=168</guid>
		<description><![CDATA[In the last two installments we talked about how to create a technical talk worth listening to.  In this post I&#8217;m going to spill the secret ingredient behind all interesting public speaking. The good news is that the secret sauce &#8230; <a href="http://blog.russolsen.com/2012/06/acing-ingredient/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the last <a href="http://blog.russolsen.com/2012/06/tech-talk-preparation/">two</a> <a href="http://blog.russolsen.com/2012/06/acing-control/">installments</a> we talked about how to create a technical talk worth listening to.  In this post I&#8217;m going to spill the secret ingredient behind all interesting public speaking. The good news is that the secret sauce is not something you have to practice or buy. It&#8217;s something you already have.</p>
<h2>Zippo lighters and Russian novels</h2>
<p>Back when I was still working for <a href="http://fgm.com">FGM</a>, I spent a year running their lunchtime seminars. This was your typical volunteer driven <em>get up and talk about anything</em> kind of program that you find at a lot of tech companies. Since I was running the thing, I sat through just about every lunchtime seminar given that year, which with holidays and the occasional cancellation was something like 45 talks.</p>
<p>What I remember most were the pleasant surprises. Like the guy who wanted to talk about his Zippo lighter collection. I went into that session thinking I&#8217;d rather spend an hour watching paint dry. But then he started talking about the history of the lighters, about the different models, about how they were the prized possessions of some Viet Nam vets, and about the clever ways that he hunted down rare specimens. I came out thinking that the world of Zippo lighters was actually pretty interesting.</p>
<p>I also remember the talk about Russian novels. Now I don&#8217;t have a thing against Tolstoy and his equally verbose buddies, but they have simply never been my cup of vodka. But there was this woman who wanted to talk about her love of &#8212; you guessed it &#8212; Russian novels. Again, I entered the room thinking, <em>Oh God, anything but Russian novels.</em> Except that it was fascinating. And so it went: We had surprisingly good talks about guitar repair,  table top war gaming and Irish dancing.</p>
<h2>The key factor</h2>
<p>Now some of those 45 talks were really polished, done by people who do this sort of thing for a living. Others would have benefited from more planning, more practice and less PowerPoint. The funny thing is that some of the best talks &#8212; and here I&#8217;m thinking of Mr. Zippo and Ms Russian Novel &#8212; were not among the most polished. Some of the most interesting were delivered by people who mumbled through 200 busy slides while making excellent eye contact with their shoe laces. The thing that the best talks had in common was not presentation chops, it was <em>passion</em>.</p>
<p>It&#8217;s really not hard to understand: If you care about something it will come shining through when you talk about it. Not only that, but you are a lot more likely to do a good talk if you care about your subject. You can make your talk <em>better</em> by organizing your thoughts, by practicing and by taking command of the room, but in the end your passion for your subject is the energy source that makes your talk go.</p>
<p>Now passion can take a lot of forms. If you are an over the top arm waver, by all means wave your arms as you go over the top. If you are naturally more understated, then be understated, but make sure the thing that you understate is that what you are saying is important. Quiet enthusiasm is just as contagious as the louder kind.</p>
<p style="color: #444444; font-family: Georgia, 'Bitstream Charter', serif; line-height: 1.5; font-size: 16px; margin-bottom: 24px;"><img class="alignright" style="color: #444444; font-family: Georgia, 'Bitstream Charter', serif; line-height: 1.5; border-style: initial; border-color: initial; margin-top: 4px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; float: right; display: inline; border-width: 0px;" src="http://farm3.staticflickr.com/2602/3916720341_3d41f1c8ec.jpg" alt="" /></p>
<p>So what do you do if you are stuck talking about some deadly dull subject, about something you don&#8217;t give a darn about? My advice is to find a reason to care. Dig into it. It&#8217;s probably, like the Zippo lighters and the Russian novels, important to somebody. Try to see the world from their point of view. If nothing else, you can care about your audience: I once got a round of applause from what started out as a room full of grim faced people resigned to sitting through a boring program review. The reason they all clapped at the end was that I admitted it all up front: <em>This is going to be dull. But we have to do it, so let&#8217;s just get through it as quickly and painlessly as we can.</em></p>
<h2>Wrapping up</h2>
<p>So there it is: If you want to do a good technical talk, productively neglect the slides and instead focus on <a href="http://blog.russolsen.com/2012/06/tech-talk-preparation/">organizing</a> what you are going to say. Then practice, practice, practice. When you get up there, <a href="http://blog.russolsen.com/2012/06/acing-control/">take command of the room</a> and above all, mix in some passion.</p>
<p>Russ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/06/acing-ingredient/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acing the Technical Talk: Getting Your Proposal Through the Door</title>
		<link>http://blog.russolsen.com/2012/06/acing-the-tech-talk-proposal/</link>
		<comments>http://blog.russolsen.com/2012/06/acing-the-tech-talk-proposal/#comments</comments>
		<pubDate>Thu, 21 Jun 2012 13:19:36 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Explaining]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=286</guid>
		<description><![CDATA[So here I am in the middle of a series of articles about doing a good technical talk when one of my Relevance co-workers asked the obvious question zero: How do I get my talk proposal accepted in the first &#8230; <a href="http://blog.russolsen.com/2012/06/acing-the-tech-talk-proposal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So here I am in the middle of a <a href="http://blog.russolsen.com/2012/06/tech-talk-preparation/">series of articles</a> about doing a good technical talk when one of my <a href="http://thinkrelevance.com">Relevance</a> co-workers asked the obvious question zero: How do I get my talk proposal accepted in the first place. Good question. Answer follows.</p>
<h3>Help Us Accept You</h3>
<p>I should start by saying that most of my experience with this sort of thing is from the other end: I help organize <a href="http://rubynation.org">RubyNation</a>, and a big part of that is picking the speakers every year. One surprising thing about the RubyNation organizers and, I suspect, the organizers of most other tech conferences is this: We want to accept every proposal that comes through the door. Think about it: Technical conferences are mainly volunteer affairs, put together by people who have a passion for the subject and for the community and who just want to give a little bit back. So here at the RubyNation world headquarters (generally an unused conference room in some nameless office park) we see every talk proposal as an offer of help, frequently from people we have never met. Yes, some talk proposals are better than others. Yes, some we take and some we turn down. But if we could hug everyone who ever sent in a proposal I suspect we would.</p>
<p>Having said that, we do take some talks and turn others down. How do you make sure that your talk is one of the ones that gets accepted?</p>
<h3>The Bone Headed Stuff</h3>
<p>One thing that you can do is to proof read your proposal. If you have been reading this blog for a while you know that I am not the king of spelling, the godfather of grammar nor the prince of punctuation. Neither are my RubyNation colleagues. Nevertheless we will tend to accept a proposal that is carefully written over one that is full of spelling and grammar mistakes. Look at it this way &#8211; a technical talk is all about communication and your proposal is the first bit of communication that we see from you.</p>
<p>You should also make sure that you take a look at the conference speaker guidelines. These will typically give you a hint as to what you should be talking about and how long your talk should be. Pay special attention to that <em>how long</em> thing. Every year we get a few proposals for talks that want to explain Life, The Universe and Everything &#8211; in 40 minutes.</p>
<p>Another thing is to make sure that you get your proposal in on time. Again there are no <em>the rules must be followed</em> people on the RubyNation organizing committee, but we do all have a sense of fairness and simple fairness says that proposals that come in on time will have a huge advantage over the late ones.</p>
<h3>Tell Us What You Want to Say</h3>
<p>So you&#8217;ve cranked up your spell checker, and you&#8217;ve read the speaker guidelines. Now what? Three things: Tell us what you want to say, a little about how you are going to say it and why you are the person to do the saying.</p>
<p>Of the three, <em>what you want to say</em> is the key. Keeping your eye firmly on the amount of time that you will have to talk, just tell us what you want to talk about. Not in general, like &#8220;CoffeeScript is the greatest thing&#8221; but specifically: &#8220;Why every web developer should use CoffeeScript&#8221; or even better &#8220;The three advantages of CoffeeScript&#8221;.  I can&#8217;t speak for everyone, but I&#8217;m a sucker for the three quarters fact, one quarter passion approach, so better still is: &#8220;CoffeeScript&#8217;s three advantages and why I love it so.&#8221;</p>
<p>Surprisingly we get a fair number of talk proposals every year that wax poetic on the perspective speaker&#8217;s love of some topic &#8212; perhaps CoffeeScript &#8212; without ever mentioning <em>what they want to say about it</em>. Yes, tell us why the subject is important, but don&#8217;t leave out what you are going to say about it.</p>
<h3>Tell Us How You Are Going to Say It</h3>
<p>We are also interested in how you are going to do your talk. Is it a straight lecture or a tutorial? Are you going to code live? Are you going to try to be a little or a lot funny or deadly serious? Is your talk a call to arms or an amusing look at <em>whatever</em>? Will there be audience participation? There&#8217;s no right answer here, we just want to know that you have thought it out a bit.</p>
<p>Within reason, it helps if your proposal is written in the same spirit as your talk. Funny proposals for funny talks have a much better chance than a serious proposal for a funny talk or (Lord help us) a funny proposal for a deadly serious topic.</p>
<h3>Tell Us About You</h3>
<p>It also helps to talk about yourself: What is your background in the topic? Why do you care? What is your public speaking experience? One of the best things about running RubyNation is that we <em>like</em> to give new speakers a chance. All you have to do is convince us that you can do a decent job.</p>
<p>One way that you can convince us is to direct us to other things that you have done. If we haven&#8217;t heard of you our first step is to do some creative google&#8217;ing. You can help us &#8212; and yourself &#8212; by directing us to internet places where you show up. Got an open source project or ten? Have you done some previous speaking? Or a podcast? Written an article? Do you have a blog? Point those things out in your proposal. Just be careful not to oversell yourself. If you are one of the industry&#8217;s leading lights then a) you don&#8217;t need my advice and b) we will figure it out.</p>
<p>So there it is: A talk proposal should say what you want to talk about, how you are going to talk about it and why you are the guy or girl to do the talking. As I say, we want to have you come speak. Help us.</p>
<p>Russ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/06/acing-the-tech-talk-proposal/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Where Did That Method Come From?</title>
		<link>http://blog.russolsen.com/2012/06/where-did-that-method-come-from/</link>
		<comments>http://blog.russolsen.com/2012/06/where-did-that-method-come-from/#comments</comments>
		<pubDate>Thu, 14 Jun 2012 19:19:19 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Metaprogramming]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Repost]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=237</guid>
		<description><![CDATA[This is a slightly edited version of an article I wrote a few years ago. Enjoy! How do you learn a new programming language? Attend a class? Buy the book? Just start writing code? All of those things will get you going &#8230; <a href="http://blog.russolsen.com/2012/06/where-did-that-method-come-from/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is a slightly edited version of an article I wrote a few years ago. Enjoy!</p>
<hr/>
<p>How do you learn a new programming language? Attend a class? Buy the <a href="http://www.amazon.com/gp/product/0321584104/ref=as_li_tf_il?ie=UTF8&#038;tag=taipm-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321584104">book?</a> Just start writing code? All of those things will get you going – especially that last one – but if you really want to know how the experts do it, you gotta read some code. There is nothing like grabbing a well written application and trying to figure out how it all works to get you into the spirit of a new language.</p>
<p>If you are trying to learn Ruby by reading code, then I have some good news and some bad news. The good news is that Ruby is designed to be a language that is easy for humans to read. Ruby is so flexible that you can usually say a lot in very little code and this generally makes reading Ruby programs a pleasure. The bad news is that Ruby is so flexible that beginners sometimes find it a bit trying to spelunk their way through a serious application. In particular, Ruby’s flexible nature means that the code that gets executed when you say<code>object.method</code> does not always live where you think that it might.</p>
<p>So in the spirit of getting more people spun up on my favorite language, I’m going to take you through some of the ways that you might hook a method name on some object to a particular bit of Ruby code. We will start with some of the more pedestrian ways that a program can connect some Ruby code to a method name and then dive into the more exotic techniques.</p>
<p>Here we go…</p>
<h3>The Usual Suspects: Classes and Superclasses</h3>
<p>Let’s start with the most basic of basics: Every Ruby object has a class and a super class and a super-duper class and so on until you get to <code>Object</code> (or in Ruby 1.9, <code>BasicObject</code>), which stands alone at the top of the heap. And to no one’s surprise, when Ruby goes looking for a method it starts with the class and runs up the tree from class to super class until it finds the method or runs out of classes.</p>
<p>For example, I might be trying to model a car:</p>
<pre><code>class Car
  def color
   "Boring blue"
  end

  def number_wheels
   4 
  end 
end 

class SportsCar &lt; Car
  def color
    "Sizzling red"
  end
end

my_car = SportsCar.new</code></pre>
<p>What we have in the code above is a <code>SportsCar</code> class which is a subclass of <code>Car</code> which is, by default, a subclass of <code>Object</code>.</p>
<p>Call a method on an instance of <code>SportsCar</code> and you get what you expect: <code>my_car.color</code> will return a very vivid shade of red. After all, the<code>color</code> method is defined right there in the <code>SportsCar</code> class. Similarly, if you call <code>my_car.number_wheels</code>, you will find out that no matter how snazzy your new toy, it puts its tires on four at a time. Thanks to the magic of inheritance, Ruby will discover the <code>number_wheels</code> method in the <code>Car</code> class after failing to find it in <code>SportsCar</code>.</p>
<p>You might also call <code>to_s</code> on your sports car instance and get something like this back:</p>
<p><code>"#&lt;SportsCar:0xb7d073b8&gt;"</code></p>
<p>The <code>to_s</code> method comes to you courtesy of the super-duper class, <code>Object</code>.</p>
<p>Finally, if you call some non-existent method, say <code>my_car.foobar</code> you will get an unpleasant message stating that there ain’t no such method: Ruby ran up the super class chain and complained when it fell off the top without finding a thing.</p>
<p>So if you are reading some code and you see <code>my_car.number_wheels</code>, start with the obvious: Look for the <code>number_wheels</code> method in <code>SportsCar</code>and then in <code>Car</code> and so on up the line.</p>
<h3>The Module Behind the Curtain</h3>
<p>Once you get past classes, things get a bit more interesting. Besides the standard class and super classes, Ruby also features <em>modules</em>. A module is a bit like a class, and in fact you define the two with nearly identical syntax:</p>
<pre><code>module Convertible
  def top_down
    "Putting the top down"
  end

  def top_up
    "Putting the top up"
  end
end </code></pre>
<p>Modules may look like classes, but you can’t instantiate a module. What you can do with a module is include it in your class:</p>
<pre><code>class SportsCar &lt; Car

  include Convertible

  def color
    "Sizzling red"
  end
end</code></pre>
<p>The effect of including a module in a class is to insert the module in the inheritance chain <em>between the class and its super class</em>. So if we called <code>top_down</code> on an instance of our new <code>SportsCar</code> class above, Ruby would look first go looking for the method in the <code>SportsCar</code> class (nope not there) and then in the <code>Convertible</code> module (got cha!). If we called the <code>color</code> method, then Ruby would look first in <code>SportsCar</code> (no luck), then in <code>Convertible</code> (nope) and then in <code>Car</code> (ah ha!).</p>
<p>The nice thing about modules is that while a class can only have one super class, it can include as many modules as it likes:</p>
<pre><code>module NavigationSystem
  def location
    "39 53 N 75 15 W"
  end
end

class SportsCar &lt; Car
  include Convertible
  include NavigationSystem

  def color
    "Sizzling red"
  end
end</code></pre>
<p>The <code>SportsCar</code> class now includes both the <code>Convertible</code> and the <code>NavigationSystem</code> modules, so we will know exactly where we are when we put the top down. The fact that modules get inserted into the class hierarchy just above the including class has some interesting implications. First, since a module acts like a sort of super class, a module cannot override a method in the class that includes it. For example, imagine that we defined the <code>location</code> method directly in the <code>SportsCar</code> class and also included the <code>NavigationSystem</code> module:<code></code></p>
<pre><code>class SportsCar &lt; Car
  include Convertible
  include NavigationSystem

  # Stuff deleted ...

  def location
   "Right here"
  end
end </code></pre>
<p>With the code above, if your call <code>location</code> on an instance of <code>SportsCar</code>, you are always going to find yourself “Right here” – the method defined in the class always wins.</p>
<p>Second, it is not just your class that can have modules: your super class and its higher level relatives can also suck in modules by the basketful. But it all works the way you expect: When Ruby goes looking for a method, it first looks in the class, then in all of the modules included in the class, then in the super class and then in all of its modules and on up the tree.</p>
<p>Third, if you include several modules in a class, the modules get hooked into the class hierarchy such that the last module included is the first one to be searched. This means that when you call a method on your sports car object, Ruby will look first at <code>SportsCar</code>, than at <code>NavigationSystem</code>, and then at <code>Convertible</code> – in that order. Generally the order that you include modules doesn’t make much difference, but if two modules happen to define the same method it’s the method from the last module that you include that will win.</p>
<p>So if you are trying to figure out that automotive app and you just can’t find the <code>location</code> method in any of the classes, go looking in the modules included by the classes.</p>
<h3>Singleton Methods: The Mysterious Stranger</h3>
<p>But what if the method is nowhere to be found in the modules either? Well it might be completely alone. You see, Ruby allows you to define <em>singleton methods</em> (no relation to the design pattern of the same name). A singleton method is a method that you define on an object, independent of its class or modules.</p>
<p>I have taught Ruby to a fair number of experienced Java programmers and generally their initial reaction to singleton methods ranges from a good old Texas “That just ain’t right” to actual nausea. But once your ears stop ringing, it turns out that being able to customize a single object without having to worry about what the rest of the class is doing is incredibly useful. Think of all those cases that you have come across in your programming life, the ones that almost but don’t quite fit into some class, the programming equivalents of the three legged dog or the flying car. Singleton methods are made for this stuff.</p>
<p>It turns out that there are a couple of ways that you might hang a singleton method on an object. For example, if you wanted to install a custom, one of a kind, sound system in your car, you might use the class style notation:</p>
<pre><code>my_car = SportsCar.new class &lt;&lt; my_car
  def custom_sound_system
    "... BYYYYING A STAIIIIRWAY to heaVennnnnnn"
  end
end</code></pre>
<p>Alternatively you might enhance your <a href="http://xkcd.com/339">tunes</a> by simply defining the method right on your object:</p>
<pre><code>my_car = SportsCar.new

def my_car.custom_sound_system
  "... BYYYYING A STAIIIIRWAY to heaVennnnnnn"
end </code></pre>
<p>Either way you end up with a <code>my_car</code> object that is one method different from all of the other sport cars.</p>
<p>And just how does all of this work? Very simply: every object has a sort of stealth class that sits between the object and its regular class. When you define a singleton method on an object, the method goes straight into the singleton class. The singleton class is a real class, and like any other class it can include modules. So one way to customize your car would be to add a cool new exhaust system:</p>
<pre><code>module CoolExhaust
  def rev_engine
    "VAROOOOOOOOOOOOM"
  end

  def monthly_disturbing_the_peace_fines
    279
  end
end

my_car = SportsCar.new

class &lt;&lt; my_car
  include CoolExhaust
end</code></pre>
<p>Your car, and only your car, now sports the new exhaust system: You can now rev your engine in the morning and spend all afternoon in court.</p>
<p>The singleton class is a bit like a module: While a module fits in between a class and its super class, the singleton class fits between an <em>instance</em> and its class. When Ruby goes hunting for a method, it is actually the singleton class that Ruby consults <em>first</em>, before the regular class, before any modules and certainly before any super classes.</p>
<h3>method_missing: The Method With a Thousand Faces</h3>
<p>Imagine that you are trying to follow some code that calls <code>my_car.drive_to_washington</code>, but you can’t find the <code>drive_to_washington</code> method anywhere. You have searched your classes and modules. You have kept an eye out for those pesky singleton methods. You have searched and grep’ed and grep’ed and searched and that stinking <code>drive_to_washington</code> method is just not there. Relax, you may have just come across a case of <code>method_missing</code> (cue scary music).</p>
<p>We have seen that when you call a method on an object, Ruby goes through this exhaustive search – it looks in the object’s singleton class and its modules, then in the regular class and its modules, and then in the super-class and so on. But what if there is no method to be found? You just get an exception right?</p>
<p>Not exactly: when Ruby fails to find a method on the first pass, it doesn’t just give up. Instead Ruby begins the method hunt all over again, starting with the singleton class and working its way up the tree, this time looking for a method called <code>method_missing</code>. Essentially, Ruby tries to inform your object that someone called a method on it and that that method was, well, missing. It does this by calling the method_missing method. What happens from there is really up to you. Do nothing and the <code>method_missing</code> from the <code>Object</code> class will eventually throw the exception that you expect. But you can also define your own <code>method_missing</code> method and catch those unexpected calls and do whatever you want with them.</p>
<p>To see how this works in practice, let’s define a <code>method_missing</code> to implement that mysterious <code>my_car.drive_to_washington</code> call:</p>
<pre><code>class Car
  def method_missing(method_name, *arguments)
    if /^drive_to_/ =~ method_name.to_s
      place = method_name.to_s.sub(/^drive_to_/, '')
      puts "I'm driving to #{place}" 
    else
      super
    end
  end
end</code></pre>
<p>There really is not a lot going on here. The method_missing method gets called with the name of the absent method along with all of the arguments that it was called with. What the <code>Car</code> class does is to look at the name of the method: If the method name begins with the string “drive_to_” then the code will clip off the last part of the method name and announce that that is where it&#8217;s going. Notice that if the method name does not look right, method_missing calls <code>super</code> which will eventually call <code>method_missing</code> from <code>Object</code> and we will experience an exception.</p>
<p>With our new version of <code>Car</code> we can drive where ever we want:<br />
<code>
<pre>c = Car.new
c.drive_to_washington
c.drive_to_ny
</pre>
<p></code><br />
The key thing to notice about the way we implemented the <code>drive_to_washington</code> and <code>drive_to_ny</code> methods is that the strings “drive_to_washington” and &#8220;drive_to_ny&#8221; never actually appear in the source code. That is something that you need to keep in mind as you are scouring some application for an enigmatic method: it may be hiding, nascent, in <code>method_missing</code>.</p>
<h3>Methods Here and Methods There</h3>
<p>Sometimes the explanation for those hard to find methods is a lot simpler than <code>method_missing</code>. For example, you might be looking for a method and you have looked at the class definition, you have looked at the modules and you have searched diligently for any method_missing’s and you still can’t find that method. What gives?</p>
<p>Wait… Did you say the class definition? You see, in Ruby there is no such thing as <em>the</em> class definition. Oh a lot of classes are just defined in one place, like this:</p>
<pre><code>class Convertible < Car
  def color
    "Sizzling red" 
  end

  def top_down
    puts "Putting the top down" 
  end

  def top_up
    puts "Putting the top up" 
  end
end</pre>
<p></code></p>
<p>But it is also perfectly possible to define a class in several chunks. You might, for example, find the first part of your convertible in one file:</p>
<pre><code>class Convertible < Car
  def color
    "Sizzling red" 
  end
end</pre>
<p></code></p>
<p>And then come across more of it in a second file:</p>
<pre><code>class Convertible
  def top_down
    puts "Putting the top down" 
  end

  def top_up
    puts "Putting the top up" 
  end
end</pre>
<p></code></p>
<p>Note that that second bit of code doesn’t create a new <code>Convertible</code> class; instead it reopens the existing <code>Convertible</code> class and adds a couple of methods to it.</p>
<p>The thing to keep in mind about Ruby is that when you define a class, you are not doing something all that special. What you are doing is creating a new object – an instance of <code>Class</code>. The object that you create, <code>Convertible</code> in our example, is special in some ways (you can create new instances with it, for instance) but in the end it is just an object. In Ruby you can modify existing classes as easily as you can create new ones. So if it is convenient to define one part of a class over here and another other there, people will. You just gotta keep your eye open for it.</p>
<h3>Manufacturing Methods With Metaprogramming</h3>
<p>The final twist in method making that we will look at is creating methods with metaprogramming. Metaprogramming is one of those very powerful techniques that can make writing an application so much easier but which can also make the code completely incomprehensible if you don’t get it. But read on, because get it you shall…</p>
<p>The idea of metaprogramming is that your program modifies itself as it goes. This is relevant for us, because a very popular way to modify a class via metaprogramming is to add a method to it. One way to do this is to simply evaluate the code to add the method:</p>
<pre><code>class Car
  def self.add_destination(dest)
    code = %Q{
      def drive_to_#{dest}
        puts "Good bye!" 
        puts "I'm driving to #{dest}" 
      end
    }
    eval(code)
  end
end</pre>
<p></code></p>
<p>The example above defines a class method called <code>add_destination</code>. The first thing that the add_destination method does is to conjure up a string (the <code>%Q{...}</code> syntax is just a convenient Ruby way of making a multi-line string) containing the Ruby code for the new method. It then evaluates that string as Ruby code. Instant method.</p>
<p>So if you call <code>Car.add_destination('washington')</code>, the string ends up being:</p>
<pre><code>      def drive_to_washington
        puts "Good bye!" 
        puts "I'm driving to washington" 
      end</pre>
<p></code></p>
<p>Evaluate this and you end up with a new method in the <code>Car</code> class called <code>drive_to_washington</code>.</p>
<p>You can also define methods a little more directly by using the (what else?) <code>define_method</code> method:</p>
<pre><code>
class Car
  def self.add_destination(dest)
    define_method "drive_to_#{dest}" do
      puts "Good bye!" 
      puts "I'm driving to #{dest}" 
    end
  end
end</pre>
<p></code></p>
<p>There are some practical differences between the <code>eval</code> technique and <code>define_method</code>, mostly having to do with the visibility of variables, but at the very gross level they are the same: in both cases you end up with a new method without an explicit definition of that method in the source code.</p>
<h3>Wrapping Up</h3>
<p>So there you have it, a whole bunch of ways to connect that method call with some Ruby code. We saw that you that can do the traditional <em>put all of your methods in the class or its superclasses</em> thing, or you can define methods in a module and include the module in your class. Not only that, but you can also hang methods on individual objects. We also saw how you can catch calls to non-existent methods with <code>method_missing</code> or spread your method definitions in different files. Finally we took a quick look at metaprogramming, a way to cook up brand new methods on the fly.</p>
<p>If you are new to Ruby you may be thinking that the only possible reason that Ruby would support all of this variety is to drive the beginner nuts. I know that is how I felt at first. But every one of the more exotic Ruby method definition techniques has a purpose; Each one eases the burden of building programs in its own way. Want to know how? I think the best way to learn is to pick up <a href="http://www.amazon.com/gp/product/0321584104/ref=as_li_tf_il?ie=UTF8&#038;tag=taipm-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321584104">your favorite Ruby book</a> and start reading.</p>
<p>Russ Olsen</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/06/where-did-that-method-come-from/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acing The Technical Talk: Take Control Of the Room</title>
		<link>http://blog.russolsen.com/2012/06/acing-control/</link>
		<comments>http://blog.russolsen.com/2012/06/acing-control/#comments</comments>
		<pubDate>Mon, 11 Jun 2012 12:14:24 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
				<category><![CDATA[Explaining]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.russolsen.com/?p=162</guid>
		<description><![CDATA[Last time we looked at how to get ready for your talk, about how you want to think through the points that you want to make before you dive into the world of Keynote or Powerpoint.  We also saw how &#8230; <a href="http://blog.russolsen.com/2012/06/acing-control/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.russolsen.com/2012/06/tech-talk-preparation/">Last time</a> we looked at how to get ready for your talk, about how you want to think through the points that you want to make before you dive into the world of Keynote or Powerpoint.  We also saw how important practicing your talk is. So let&#8217;s assume that you&#8217;ve done all that and now it&#8217;s game, err, talk day.  You are feeling both excited and terrified. What can you do to actually get the talk out without seeming like a amateur?</p>
<h2>Fly the confident skies</h2>
<p>Ever watch an airline pilot walk through the airport? They have a certain casual &#8216;I own the place&#8217; attitude. The airline pilot attitude shows in the unhurried but purposeful way they stroll through the terminal, pulling their little wheelie suitcases. It shows in the confident way they settle into the cockpit and in the voice that they use when they ask the flight attendants to prepare for take off.  Pilots adopt that athoritative attitude because <em>it is part of the job</em>. When you place your bottom in seat 16A you are also putting it in the hands of the folks in the front of the plane, trusting that they know what they are doing. A serious part of being a pilot is to look and act like you are worthy of that trust.</p>
<p>As a speaker, you have something approaching that pilot-passenger relationship with your audience. They are putting the next 30 minutes or hour of their life in your hands and it is up to you to give them a smooth flight. And, as every pilot knows, the first step in a smooth flight is to inspire confidence. What this means is that you don&#8217;t slink to the podium: You  stride, like you own the place. If someone introduced you, take a second to thank them: You&#8217;ve got time, you are in control.  When you talk, talk five percent louder than is strictly necessary to be heard. You don&#8217;t just need to be heard, you need to fill the room. Don&#8217;t be afraid of silences either: If you want to make a point and think it will take a second to sink in, give it a silent moment before you continue. Above all, look people in the eye and keep on looking them in the eye. All of the practice (you did practice?) will help here: Since you know what you are going to say, there is no reason to keep looking at your slides to remind you where you are going next. You want to be locked onto to the audience for the entire talk.</p>
<p>And what if you don&#8217;t feel very confident? Well in the words of Leo McGarry, &#8220;Act as if ye have faith and faith shall be given to you. Put it another way, fake it till you make it.&#8221; Stage presence is a kind of bootstrap process: The more confident you act, the more your audience will respond, which will inspire actual confidence. Just keep reminding yourself that you are (literally) running the show.</p>
<h2>What if an engine falls off?</h2>
<p>If you do enough speaking, eventually something will go wrong. The PA system will produce feedback or a mistake in the schedule will direct people to the wrong room or the river will rise and wash away the projector. These are the times to take that airline pilot analogy to heart. If one of the engines on your plane falls off, you don&#8217;t want the pilot to panic, or sound rattled, or even to apologize constantly. You want him to come on the PA and say &#8220;Well folks, looks like we lost an engine and will have to set down on that tiny Pacific island back there. With a bit of luck you will all still make your connecting flights.&#8221;</p>
<p>If something goes wrong during your talk, mention it, and if need be apologize &#8211; <em>once</em>. Then move on. Your audience came to hear you talk about HTTP or the sex lives of Amazon beetles, not at how distraught you are over the bad lighting. Apologize once and just keep going. The good news is that the most likely source of trouble is the apparatus that you need to get your slides on the screen. But if you have practiced your talk enough, you should be able to get through it sans slides. In fact, one advantage of creating physical index cards (see <a href="http://blog.russolsen.com/2012/06/tech-talk-preparation/">part 1</a>) is that you can drop the cards into your pocket on talk day. That way, if all Hell breaks loose on PowerPoint you can still deliver an old fashioned <a href="http://www.youtube.com/watch?v=mslMLp5bQD0">‘peeking at the index cards occasionally’</a> style of talk.</p>
<h2>The Secret Sauce</h2>
<p>So there you have the things to keep in mind while you are doing your talk: No matter how intimidated you feel, act like you own the place. Focus your attention on your audience. If something goes wrong, admit it and just move on. Oh, and you will need to add just one more thing to your talk. Something we will look into <a href="http://blog.russolsen.com/2012/06/acing-ingredient/">next time</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.russolsen.com/2012/06/acing-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
