<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title>Walter Smith, software guy</title>
  <id>http://waltersmith.us/</id>
  <updated>2012-03-01T08:00:00-08:00</updated>
  <author>
    <name>Walter Smith</name>
  </author>
  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/waltersmith" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="waltersmith" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
    <title>Series A</title>
    <link rel="alternate" href="http://waltersmith.us/articles/series-a" />
    <id>http://waltersmith.us/articles/series-a</id>
    <published>2012-03-01T08:00:00-08:00</published>
    <updated>2012-03-01T08:00:00-08:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/series-a">&lt;p&gt;This blog seems to be nothing but short announcements lately, but here&amp;#8217;s
a good one: we&amp;#8217;ve just completed a nearly-$13 million Series A funding
round with &lt;span class="caps"&gt;NEA&lt;/span&gt; and Catamount Ventures. I couldn&amp;#8217;t be happier to have
them as partners in our (ad)venture.&lt;/p&gt;
&lt;p&gt;See: &lt;a href="http://techcrunch.com/2012/05/01/carezone-2/"&gt;TechCrunch&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>CareZone launches!</title>
    <link rel="alternate" href="http://waltersmith.us/articles/carezone-launches" />
    <id>http://waltersmith.us/articles/carezone-launches</id>
    <published>2012-02-14T22:38:00-08:00</published>
    <updated>2012-02-14T22:38:00-08:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/carezone-launches">&lt;p&gt;I&amp;#8217;m very happy to say we just switched on &lt;a href="http://carezone.com"&gt;CareZone&lt;/a&gt;, a safe place to care for your loved ones.&lt;/p&gt;
&lt;p&gt;However, I&amp;#8217;m too busy right now to say much about it! So head on over to our &lt;a href="http://info.carezone.com"&gt;company blog&lt;/a&gt; where Jonathan will fill you in.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>New office</title>
    <link rel="alternate" href="http://waltersmith.us/articles/new-office" />
    <id>http://waltersmith.us/articles/new-office</id>
    <published>2011-09-05T16:27:56-07:00</published>
    <updated>2011-09-05T16:27:56-07:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/new-office">&lt;p&gt;&lt;a href="http://pictureofhealth.com"&gt;We&amp;rsquo;ve&lt;/a&gt; hired quite a few people in Seattle
this year&amp;mdash;four seems like quite a few to me now&amp;mdash;and we&amp;rsquo;ve had to open
an actual office. For some reason, small startups are all the rage
lately, so it took quite a while to find anything of a reasonable size.
Then there was another delay before we could take possession and do a
little remodeling.&lt;/p&gt;

&lt;p&gt;It has finally come together, though, and it&amp;rsquo;s quite a nice place to
work. It actually tempts me to come into the office even if I&amp;rsquo;m going to
be the only one there&amp;mdash;and that&amp;rsquo;s not just because it has air
conditioning, something old Seattle houses like mine don&amp;rsquo;t enjoy.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;re open to visits from Seattle folks interested in coworking. If
you&amp;rsquo;re interested in spending a day with us, let me know!&lt;/p&gt;

&lt;div class="slides"&gt;
  &lt;div class="slides_container"&gt;
    &lt;div class="slide"&gt;&lt;img src="http://waltersmith.us/blog/office/poh-office-1.jpg" width="600" height="399" /&gt;&lt;/div&gt;
    &lt;div class="slide"&gt;&lt;img src="http://waltersmith.us/blog/office/poh-office-2.jpg" /&gt;&lt;/div&gt;
    &lt;div class="slide"&gt;&lt;img src="http://waltersmith.us/blog/office/poh-office-3.jpg" /&gt;&lt;/div&gt;
    &lt;div class="slide"&gt;&lt;img src="http://waltersmith.us/blog/office/poh-office-4.jpg" /&gt;&lt;/div&gt;
    &lt;div class="slide"&gt;&lt;img src="http://waltersmith.us/blog/office/poh-office-5.jpg" /&gt;&lt;/div&gt;
    &lt;div class="slide"&gt;&lt;img src="http://waltersmith.us/blog/office/poh-office-6.jpg" /&gt;&lt;/div&gt;
    &lt;div class="slide"&gt;&lt;img src="http://waltersmith.us/blog/office/poh-office-7.jpg" /&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class="clear"&gt;&lt;/div&gt;


&lt;p&gt;As you can see, we&amp;rsquo;re basically an IKEA showroom. Cheap desks with
expensive chairs is my motto. By the way, I took these on a Sunday.
Normally there are people in the chairs. :)&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Using Firebug with Capybara</title>
    <link rel="alternate" href="http://waltersmith.us/articles/using-firebug-with-capybara" />
    <id>http://waltersmith.us/articles/using-firebug-with-capybara</id>
    <published>2011-02-13T15:40:00-08:00</published>
    <updated>2011-02-13T15:40:00-08:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/using-firebug-with-capybara">&lt;p class="notice"&gt;&lt;strong&gt;Update&lt;/strong&gt;: John Firebaugh figured out a better way to do this and made a gem out of it! So ignore this post, and use the &lt;a href="https://github.com/jfirebaugh/capybara-firebug"&gt;capybara-firebug gem&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;Today I was debugging a failing test in a &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt; /  &lt;a href="https://github.com/jnicklas/capybara"&gt;Capybara&lt;/a&gt; suite, and I really needed &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt;. In fact, I decided everyone on the team should have Firebug available in tests, ideally without any manual setup.&lt;/p&gt;
&lt;p&gt;Of course, I searched to see if someone had already accomplished this, but I found only a few useful hints, none of which gave complete instructions. So here&amp;#8217;s what I did.&lt;/p&gt;
&lt;h2&gt;Step 1: Configure Capybara to include Firebug&lt;/h2&gt;
&lt;p&gt;By default, Capybara launches Firefox with an empty profile. It turns out to be pretty easy to make it include Firebug in the profile. Put this code in an initializer (we&amp;#8217;re using Cucumber, so this goes in &lt;code&gt;features/support/firebug.rb&lt;/code&gt; or thereabouts):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;require 'selenium/webdriver'

Capybara.register_driver :selenium do |app|
  profile = Selenium::WebDriver::Firefox::Profile.new
  profile.add_extension File.join(Rails.root, "features/support/firebug.xpi")
  Capybara::Driver::Selenium.new app, :profile =&amp;gt; profile
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the path &lt;code&gt;features/support/firebug.xpi&lt;/code&gt;, which is where you&amp;#8217;ll put a copy of &lt;code&gt;firebug.xpi&lt;/code&gt;. You can retrieve that from the &lt;a href="http://getfirebug.com/downloads"&gt;Firebug downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, the first thing Firebug does when it starts up is to look at the version of the previously-installed Firebug. If it thinks you&amp;#8217;ve just upgraded, it launches a tab for the changelog page to show you the great new features. Depending on how your tests are written, that might be fine. My tests broke, so I needed to get rid of the welcome page.&lt;/p&gt;
&lt;h2&gt;Step 2: Rejigger Firebug to eliminate the welcome page&lt;/h2&gt;
&lt;p&gt;Reading the Firebug code, I saw that the welcome page logic pretty much insists on showing the page on a new install. It compares its version number with the value stored in the &lt;code&gt;extensions.firebug.currentVersion&lt;/code&gt; preference (initialized to &lt;code&gt;""&lt;/code&gt;), and if it&amp;#8217;s greater, up comes the page.&lt;/p&gt;
&lt;p&gt;I didn&amp;#8217;t want to change the code, so I decided to set the initial value of the preference to a very high number, thus ensuring that Firebug will never think it&amp;#8217;s been upgraded. However, it wasn&amp;#8217;t apparent how to jam a bit of JavaScript into the browser launch process to do that. Instead, I decided to just patch &lt;code&gt;firebug.xpi&lt;/code&gt; to change it.&lt;/p&gt;
&lt;p&gt;The code uses Unix utilities, so if you&amp;#8217;re on Windows without Cygwin you&amp;#8217;ll have to figure out an equivalent for the embedded script. Please send it to me if you do.&lt;/p&gt;
&lt;p&gt;&lt;noscript&gt;&lt;a href="http://gist.github.com/825357"&gt;See source code gist&lt;/a&gt;&lt;/noscript&gt;&lt;script src="http://gist.github.com/825357.js"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;h2&gt;Step 3: Profit!!!&lt;/h2&gt;
&lt;p&gt;Or at least profit a little faster, because now you can find those tricky &lt;span class="caps"&gt;DOM&lt;/span&gt; problems in your tests with the help of the fabulous Firebug.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Cat vs. computer</title>
    <link rel="alternate" href="http://waltersmith.us/articles/cat-vs-computer" />
    <id>http://waltersmith.us/articles/cat-vs-computer</id>
    <published>2010-09-14T17:31:00-07:00</published>
    <updated>2010-09-14T17:31:00-07:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/cat-vs-computer">&lt;p&gt;This afternoon I was iChatting with my excellent co-founder &lt;a href="http://jonathanischwartz.wordpress.com/"&gt;Jonathan&lt;/a&gt; when my video started to go all jittery. I checked iStat and saw that &lt;code&gt;kernel_task&lt;/code&gt; was using about 200% &lt;span class="caps"&gt;CPU&lt;/span&gt; time. That seemed&amp;#8230;odd. Since the chat was rapidly becoming unusable, I signed off temporarily to debug the problem.&lt;/p&gt;
&lt;p&gt;At first I blamed Time Machine, which happened to be doing a backup at the time. I&amp;#8217;ve seen some crazy &lt;span class="caps"&gt;CPU&lt;/span&gt; usage when Time Machine is &amp;#8220;cleaning up&amp;#8221;. But stopping the backup didn&amp;#8217;t help. In fact, rebooting didn&amp;#8217;t help. Something very weird was going on.&lt;/p&gt;
&lt;p&gt;I thought to myself, &amp;#8220;this is a job for DTrace!&amp;#8221; and spent an enjoyable ten minutes poking around in DTrace-land. Eventually I ran across &lt;a href="http://www.brendangregg.com/DTrace/hotkernel"&gt;hotkernel.pl&lt;/a&gt; which, despite its age, still seems to work. It told me most of the time was going into the function &lt;code&gt;machine_idle&lt;/code&gt;. Uh, what?&lt;/p&gt;
&lt;p&gt;&lt;img src="http://waltersmith.us/blog/charlie%20and%20apple-300.jpg" class="left" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Now, we have four cats, and most of them have figured out that a MacBook Pro is a lovely, warm place to sleep, and one of them happened to be sleeping on it. Perhaps due to my cursing, she decided to find a more peaceful spot for a nap. As soon as she left, &lt;code&gt;kernel_task&lt;/code&gt; &lt;span class="caps"&gt;CPU&lt;/span&gt; time started going down, and so did the fan speed. Pretty soon everything was back to normal.&lt;/p&gt;
&lt;p&gt;Clearly the cat was to blame (so often the case). She had blocked the ventilation on my MacBook and somehow caused this bizarre behavior. Doing further research using the google, I discovered the possible answer&amp;#8212;though I&amp;#8217;m not sure it has been confirmed by Apple. Apparently, when the MacBook Air came out, there was some controversy because it was so easy to overheat it (e.g., by playing 1080p video for two minutes), and it reacted by shutting down processor cores to conserve power. &amp;#8220;They&amp;#8221; say that Apple issued a patch so that instead of shutting down a core, the kernel scheduler just stops using it, and the unused time shows up under &lt;code&gt;kernel_task&lt;/code&gt;. &amp;#8220;Their&amp;#8221; theory is that it looks better to customers than a disabled core. An amusing case of engineering by PR, if true.&lt;/p&gt;
&lt;p&gt;Now I&amp;#8217;m wondering if this situation is detectable in software, so next time I can just have an alert box that tells me what&amp;#8217;s really going on.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://waltersmith.us/blog/overtemp.png" alt="" /&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Say hello to Picture of Health</title>
    <link rel="alternate" href="http://waltersmith.us/articles/say-hello-to-picture-of-health" />
    <id>http://waltersmith.us/articles/say-hello-to-picture-of-health</id>
    <published>2010-09-09T09:00:00-07:00</published>
    <updated>2010-09-09T09:00:00-07:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/say-hello-to-picture-of-health">&lt;p&gt;My five loyal readers already know this from my hiring plea at the top of the page, but in case you missed it, I&amp;#8217;ve been working on starting a new company. Today we&amp;#8217;re becoming a little less stealthy. My old friend and co-founder &lt;a href="http://jonathanischwartz.wordpress.com/"&gt;Jonathan Schwartz&lt;/a&gt; is announcing (via &lt;a href="http://twitter.com/openjonathan"&gt;Twitter&lt;/a&gt;, of course) his participation. We&amp;#8217;ve also put up a website: &lt;a href="http://www.pictureofhealth.com/"&gt;pictureofhealth.com&lt;/a&gt;. At this point we&amp;#8217;re just saying the company is about &amp;#8220;the intersection of innovation and public health&amp;#8221;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve worked on several technologies whose goal was to improve the &amp;#8220;health&amp;#8221; of computers. As those systems were deployed around the world, I saw PCs everywhere became measurably more reliable and easier to use. I also saw how, once those systems became prevalent, the very process of creating and deploying software was changed for the better.&lt;/p&gt;
&lt;p&gt;My goal, and hope, is that we can help to bring about a similar transformation in public health. I like to tell myself I helped to improve the mental health of millions of people by making Windows better, but I&amp;#8217;d love to see a more direct effect on human happiness.&lt;/p&gt;
&lt;p&gt;Needless to say, this is going to be a big job, and I need some help! I&amp;#8217;m building our development and design team. We&amp;#8217;ve posted a couple of job descriptions on the &lt;a href="http://www.pictureofhealth.com/jobs"&gt;Picture of Health job page&lt;/a&gt;, and if this sounds interesting, please push the big Apply button. Actually, if you&amp;#8217;re in the &amp;#8220;smart and gets things done&amp;#8221; category, please get in touch even if we haven&amp;#8217;t figured out we need you yet.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>The new site</title>
    <link rel="alternate" href="http://waltersmith.us/articles/the-new-site" />
    <id>http://waltersmith.us/articles/the-new-site</id>
    <published>2010-09-05T21:23:00-07:00</published>
    <updated>2010-09-05T21:23:00-07:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/the-new-site">&lt;p&gt;I&amp;#8217;ve received a couple of questions about how my new site is built. (If you want to hit &amp;#8220;next&amp;#8221; now, feel free!)&lt;/p&gt;
&lt;p&gt;I used to have a Wordpress site. I maintain several sites for other people using WP, including &lt;a href="http://www.dogjaunt.com"&gt;my wife&lt;/a&gt;, so I&amp;#8217;ve become fairly knowledgeable about it, though certainly not a guru. If you need a blog, a simple &lt;span class="caps"&gt;CMS&lt;/span&gt;, or a combination of the two, you can certainly do a lot worse.&lt;/p&gt;
&lt;p&gt;For my personal site, though, here&amp;#8217;s the thing. Well, two things.&lt;/p&gt;
&lt;p&gt;First, Wordpress does way more than I want. I don&amp;#8217;t want a dashboard showing me posts from other peoples&amp;#8217; blogs. I don&amp;#8217;t want a categorized linkroll, or a custom taxonomy system, or a comment system (Disqus works great). In fact, I don&amp;#8217;t even want the ability to edit posts in the browser. I want a minimal site where every feature is there because I see a need for it, and the workflow is designed around the way I like to work.&lt;/p&gt;
&lt;p&gt;Second&amp;#8212;and yes, this is a cliché&amp;#8212;the thing is written in &lt;span class="caps"&gt;PHP&lt;/span&gt;. Not even the new-fangled &lt;span class="caps"&gt;PHP&lt;/span&gt; where they&amp;#8217;ve layered objects and stuff onto the old-fangled one, but good old function-based code-in-the-template &lt;span class="caps"&gt;PHP&lt;/span&gt;. Every time I want to open the hood and customize or debug something, I am faced with this reality.&lt;/p&gt;
&lt;p&gt;So when I decided to revamp my site, I realized that I should just start with nothing and add features until I got what I wanted. I found that other people had this same idea (see &lt;a href="http://github.com/cloudhead/toto"&gt;Toto&lt;/a&gt;, &lt;a href="http://github.com/mojombo/jekyll"&gt;Jekyll&lt;/a&gt;, etc.) and took inspiration from them. (Of course, using one of those projects would defeat the purpose!)&lt;/p&gt;
&lt;p&gt;The result is about 300 lines of Ruby (with comments), based on Sinatra. No database, just Git. I edit in TextMate, deploy to Heroku, and let Varnish do the heavy lifting.&lt;/p&gt;
&lt;p&gt;When I explain this, sometimes people want the code. Well, my code isn&amp;#8217;t all that. (To be clear, sometimes my code &lt;em&gt;is&lt;/em&gt; all that&amp;#8212;just not in this case.) Just do it yourself&amp;#8212;it&amp;#8217;s not that hard, and you&amp;#8217;ll probably learn something.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Seattle technical bookstore news</title>
    <link rel="alternate" href="http://waltersmith.us/articles/seattle-technical-bookstore-news" />
    <id>http://waltersmith.us/articles/seattle-technical-bookstore-news</id>
    <published>2010-07-22T11:32:00-07:00</published>
    <updated>2010-07-22T11:32:00-07:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/seattle-technical-bookstore-news">&lt;p&gt;There&amp;#8217;s good news and bad news regarding technical bookstores here in Seattle. Bad news first.&lt;/p&gt;
&lt;h2&gt;Barnes and Noble: bad&lt;/h2&gt;
&lt;p&gt;The University Village Barnes and Noble has reorganized their technical department, and it is now essentially impossible to browse. Most of the computer-related books are in a single section called &amp;#8220;Programming&amp;#8221;, which is arranged &lt;em&gt;by author&lt;/em&gt;. That&amp;#8217;s about as dumb as arranging the &amp;#8220;Travel&amp;#8221; section by author, which I doubt would ever happen. So now, unless you know exactly what book you&amp;#8217;re looking for, your only browsing option is to examine every book in the section to see if it&amp;#8217;s relevant to your interests. And if you already know what book you want, wouldn&amp;#8217;t you just buy it online?&lt;/p&gt;
&lt;p&gt;I heard from a B&amp;amp;N employee that they&amp;#8217;ve been eliminating &amp;#8220;lead&amp;#8221; positions, which are employees dedicated to a single section of the store. The result is this generic filing system that can be maintained by whatever staff is assigned to the department on a given day. While I&amp;#8217;m sure this saves on payroll, it has the unfortunate effect of rendering in-person visits to the department almost pointless.&lt;/p&gt;
&lt;p&gt;Perhaps it&amp;#8217;s B&amp;amp;N&amp;#8217;s strategy to remove reasons to go to their physical stores, thus driving sales to &lt;code&gt;bn.com&lt;/code&gt;. Unfortunately, there&amp;#8217;s another online bookstore that has better prices, recommendations, and service.&lt;/p&gt;
&lt;h2&gt;Ada&amp;#8217;s Books: good&lt;/h2&gt;
&lt;p&gt;In happier news, a new technical bookstore, &lt;a href="http://www.seattletechnicalbooks.com/"&gt;Ada&amp;#8217;s Books&lt;/a&gt;, has recently opened in Capitol Hill. This is the kind of bookstore I love: a small place where all the books are good. It feels like someone who knows technology is choosing and organizing the books. In other words, the exact opposite of Barnes and Noble!&lt;/p&gt;
&lt;p&gt;I also love when bookstores mix new and used books on the shelves, and Ada&amp;#8217;s does this nicely. Alongside the latest hacker manuals you will find Norbert Wiener&amp;#8217;s &lt;em&gt;Cybernetics&lt;/em&gt;. A book on 802.11 networking is shelved with a U.S. Navy Radar School textbook from the 1940&amp;#8217;s. If you&amp;#8217;re interested in the history of technology as well as what happened last week, this is how it should be.&lt;/p&gt;
&lt;p&gt;There are also comfy chairs, a public restroom, author readings, and friendly staff. What more could you want? Coffee? Joe Bar is right around the corner (try the crêpes).&lt;/p&gt;
&lt;p&gt;They tell me it&amp;#8217;s a coincidence, but their close proximity to &lt;a href="http://metrixcreatespace.com/"&gt;Metrix Create:Space&lt;/a&gt; will surely help sales. Nevertheless, in the current economic climate, I hate to predict how long Ada&amp;#8217;s Books or any other small independent bookstore will survive. I&amp;#8217;m doing my part by throwing money at them, and recommend you do the same.&lt;/p&gt;
&lt;p&gt;&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?ie=UTF8&amp;amp;hl=en&amp;amp;view=map&amp;amp;cid=12359303339551379738&amp;amp;q=Ada's+Technical+Books&amp;amp;ved=0CFEQpQY&amp;amp;ei=tJVITPb7GaXqtgOGmYikCQ&amp;amp;hq=Ada's+Technical+Books&amp;amp;hnear=&amp;amp;t=h&amp;amp;ll=47.627339,-122.32079&amp;amp;spn=0.005061,0.00912&amp;amp;z=16&amp;amp;iwloc=A&amp;amp;output=embed"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps?ie=UTF8&amp;amp;hl=en&amp;amp;view=map&amp;amp;cid=12359303339551379738&amp;amp;q=Ada's+Technical+Books&amp;amp;ved=0CFEQpQY&amp;amp;ei=tJVITPb7GaXqtgOGmYikCQ&amp;amp;hq=Ada's+Technical+Books&amp;amp;hnear=&amp;amp;t=h&amp;amp;ll=47.627339,-122.32079&amp;amp;spn=0.005061,0.00912&amp;amp;z=16&amp;amp;iwloc=A&amp;amp;source=embed" class="ui"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>The horror of a cache miss</title>
    <link rel="alternate" href="http://waltersmith.us/articles/the-horror-of-a-cache-miss" />
    <id>http://waltersmith.us/articles/the-horror-of-a-cache-miss</id>
    <published>2010-07-13T13:42:00-07:00</published>
    <updated>2010-07-13T13:42:00-07:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/the-horror-of-a-cache-miss">&lt;p&gt;&lt;a class="outlink" href="http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait"&gt;&amp;#x261E; What Your Computer Does While You Wait&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is an excellent post describing the memory hierarchy in current PC architectures. It&amp;#8217;s been a long time since I went to computer school, but I remember this being oversimplified even then. Nowadays, are students taught the horrible consequences of a cache miss? Or does one have to find it out for oneself?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Reading from L1 cache is like grabbing a piece of paper from your desk (3 seconds), L2 cache is picking up a book from a nearby shelf (14 seconds), and main system memory is taking a 4-minute walk down the hall to buy a Twix bar&amp;#8230;waiting for a hard drive seek is like leaving the building to roam the earth for &lt;strong&gt;one year and three months&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content>
  </entry>
  <entry>
    <title>Explore your tools</title>
    <link rel="alternate" href="http://waltersmith.us/articles/explore-your-tools" />
    <id>http://waltersmith.us/articles/explore-your-tools</id>
    <published>2010-07-12T15:23:00-07:00</published>
    <updated>2010-07-12T15:23:00-07:00</updated>
    <author>
      <name>Walter Smith</name>
    </author>
    <content type="html" xml:base="http://waltersmith.us/articles/explore-your-tools">&lt;p&gt;My niece got married a while back and she asked me to make a video of the ceremony. I&amp;#8217;m no professional videographer, but I hoped I was competent enough not to embarrass myself with the results.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve missed out on the last few generations of camcorder technology, but I have a carefully-chosen &lt;a href="http://www.camcorderinfo.com/content/sony-dcr-trv38-camcorder-review.htm"&gt;Sony &lt;span class="caps"&gt;DCR&lt;/span&gt;-TRV38&lt;/a&gt; from 2004 that (usually) does a fine job. The killer feature is that it can do anamorphic 16:9 widescreen recordings. Somehow the widescreen aspect adds several &amp;#8220;pro points&amp;#8221; to the end result (or it did, before everybody got an HD camera). My brother donated the use of a Zoom portable digital recorder we hid in the shrubbery to capture (relatively-) good audio of the ceremony.&lt;/p&gt;
&lt;p&gt;Unfortunately, my recording of this precious event has some major flaws (other than those resulting from my cinematographic skill). As captured from the Firewire port, every so often the video drops a few frames. Each time this happens, the audio gets further out of sync with the video. I hadn&amp;#8217;t used the camcorder for a while, and didn&amp;#8217;t have time to give it a good run-through before the event, so I didn&amp;#8217;t realize it was doing this.&lt;/p&gt;
&lt;p&gt;I decided my niece wouldn&amp;#8217;t give me a do-over on the wedding. I had to make do with what I had, which meant I would need to make an edit to the audio track at each video skip. I loaded the recording into iMovie and started editing.&lt;/p&gt;
&lt;p&gt;I can report with some authority that iMovie is the &lt;em&gt;wrong&lt;/em&gt; tool for this. It&amp;#8217;s great when you just need to edit together some video clips, but audio is a second-class citizen by far. The nice editing operations you can do in video (in particular, splitting or duplicating a clip) just don&amp;#8217;t apply to audio. I think it&amp;#8217;s theoretically possible to do what I needed, but not in real life with real stress hormones.&lt;/p&gt;
&lt;p&gt;As I was about to jump in the car and go to the Apple store to blow $200 on Final Cut Express to get this done, it occurred to me that I already have a pricey &amp;#8220;pro&amp;#8221; Apple product called Logic Studio. I use it all the time for music, but&amp;#8230;wait a minute&amp;#8230;doesn&amp;#8217;t it have some sort of video feature too? Down to the basement studio I went to investigate.&lt;/p&gt;
&lt;p&gt;It turns out that people use Logic to score film and video, and just for them Logic has a &amp;#8220;Video&amp;#8221; submenu that I don&amp;#8217;t think I&amp;#8217;ve ever opened in the years I&amp;#8217;ve used the program. You can import a video, which stays in sync with the audio timeline. Of course, this is exactly what I needed. I rendered the video from iMovie, imported it into Logic, and went crazy with all the fine-tuning I needed to do on the audio. I even did a bunch of EQ and compression tweaking to improve the audibility of the ceremony. Finally, I exported the video with the new soundtrack, and voilá!&lt;/p&gt;
&lt;p&gt;The point of telling this story is that your tools are probably hiding all sorts of goodies that you don&amp;#8217;t know exist. If you stick to your well-worn paths, you&amp;#8217;ll walk right by them. Take a look at those menus you never open. Maybe even skim the manual occasionally. You may not need these things now, but later perhaps you&amp;#8217;ll say&amp;#8230;wait a minute&amp;#8230;&lt;/p&gt;</content>
  </entry>
</feed>

