<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[playswithfire]]></title>
  <link href="http://playswithfire.com//atom.xml" rel="self"/>
  <link href="http://playswithfire.com//"/>
  <updated>2012-02-19T13:30:11-08:00</updated>
  <id>http://playswithfire.com//</id>
  <author>
    <name><![CDATA[Chris Parker]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[You Are Not Ruthless Enough]]></title>
    <link href="http://playswithfire.com//blog/2012/02/19/you-are-not-ruthless-enough/"/>
    <updated>2012-02-19T13:23:00-08:00</updated>
    <id>http://playswithfire.com//blog/2012/02/19/you-are-not-ruthless-enough</id>
    <content type="html"><![CDATA[<p>In the course of my work I see a <em>lot</em> of code. Sample projects, full applications, frameworks, and proofs-of-concept have all crossed my desk at one time or another. In the labs at WWDC I see various bits of code which are giving developers trouble. The source of the project doesn&#8217;t seem to matter much; the problem is the same.<!-- more --></p>

<p>The problem I see time and again in all of this code is an unclear separation of responsibilities. Here are just a few of the things I&#8217;ve seen:</p>

<ul>
<li>A UITableViewController subclass which is not only the delegate and the data source, but is also making explicit networking calls to update its model data.</li>
<li>Network transport classes which explicitly message UI elements in order to do their work (the inverse of the above, really).</li>
<li>UIViewControllers (or any class) knowing about the internal structures or properties of other UIViewControllers.</li>
</ul>


<p>I hear many reasons for this state of affairs in code:</p>

<ul>
<li>&#8220;This is just temporary. I&#8217;ll clean it up in a bit.&#8221;</li>
<li>&#8220;It was really late in the schedule and this was the fastest thing we could do to get the feature working.&#8221;</li>
<li>&#8220;I tried a bunch of things and this is what seemed to work.&#8221;</li>
</ul>


<p>I&#8217;ve been guilty of all of these (and worse, probably). However it&#8217;s justified I can tell you right now <em>you&#8217;re going to pay and it won&#8217;t take long for the bill to come due.</em></p>

<p>It&#8217;s not just temporary. Now that it works you&#8217;re not going to touch it because something else depends on that behavior and touching it will be far too risky. You&#8217;re probably not going to clean it up, except perhaps to put it under the bed and hope no one trips over it later.</p>

<p>Even on a tight schedule, last-minute block-ship bugs appear and what should have been a simple, straightforward bug fix will turn into some Giger-esque state-driven nightmare causing everyone associated with the project to invent new profanities because the ones they have don&#8217;t seem emphatic enough.</p>

<p>In the next release a new feature will be impossible to implement because class A has intimate, incestuous, biblical knowledge about class B. It seemed to work but the child of this relationship is going to cause you problems for the rest of its life even if you manage to separate the star-crossed classes and send them back to their families.</p>

<p>Here&#8217;s the thing: <em>you are not ruthless enough</em>. You are certainly not ruthless enough to your objects, and you probably need to be more ruthless to yourself.</p>

<p>Being ruthless to yourself means every time you say &#8220;oh, I&#8217;ll just open up this internal bit over here&#8230;&#8221; use that moment to give yourself whatever negative feedback you need to go back and write the <em>correct</em> interface. Imagine the bugs you&#8217;ll get later. Give yourself a 12 volt shock through your chair. Picture the sleepless nights chasing down an issue that only happens for that one guy but it&#8217;s the guy who signs your paycheck.</p>

<p>Every time you throw in a quick fix for something because it&#8217;s Getting Late(tm), stop and see if you can fix it correctly right then. Pragmatism says it might not be possible in the time remaining, and that&#8217;s ok; &#8220;Real artists ship&#8221; and all that but a <em>ruthless</em> artist will fix the problem first thing in the next release so they can keep shipping again and again and again.</p>

<p>Every time you throw in something that seems to work, <em>find out why it works</em>. If you don&#8217;t understand why it works then the code is just magic and you&#8217;re letting yourself off the hook. That code will become enshrined in your version control system for later generations (read: you, three months from now) to discover, wonder at, puzzle over, and leave it because no one understands what it does.</p>

<p>Being ruthless to your objects means having clear bright lines separating responsibilities in your code. Where <em>does</em> that data download activity belong? It&#8217;s definitely not a view. It&#8217;s not the model but it gets things for the model. It&#8217;s sort of a controller, mediating between the network object on the far side and the model on the near side, but it&#8217;s not <em>part</em> of a controller. It&#8217;s its own object and it deserves its own interface. Put it in its own box. Keep it there. Don&#8217;t let it out except through the clean interfaces you write. Don&#8217;t let anything else in either.</p>

<p>As a frameworks developer I tend to look at this problem from the frameworks perspective. Part of being ruthless to my objects is writing real API every time I encounter one of these problems. Objects become testable in isolation. Complex behaviors arise from combining simpler objects in controlled ways through API. The key letter in the acronym is the <em>I</em> - the interface. It&#8217;s the clear bright line between the classes. It&#8217;s how you keep objects in their respective boxes.</p>

<p>The back of King Crimson&#8217;s album <em>Discipline</em> says &#8220;Discipline is a means to an end, never an end in itself.&#8221; Being ruthless to yourself is having the discipline to become a better developer - not letting yourself get away with the easy or convenient. Being ruthless to your objects is having the discipline to write the API which separates their responsibilities effectively. The combination is what enables you to produce consistent results - to keep shipping, to keep creating great software, and to keep improving.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Smaller Computers]]></title>
    <link href="http://playswithfire.com//blog/2012/02/02/smaller-computers/"/>
    <updated>2012-02-02T20:19:00-08:00</updated>
    <id>http://playswithfire.com//blog/2012/02/02/smaller-computers</id>
    <content type="html"><![CDATA[<p>My turn for hardware refresh at work came up a little while ago and I requested an 11&#8221; MacBook Air. My current personal laptop is a 13&#8221; MacBook Pro and I was curious if I could survive on something as small as the 11&#8221; Air.<!--more--></p>

<p>As it turns out, I&#8217;m quite comfortable on it.</p>

<p>The 13&#8221; MBP has a 1280 by 800 display. The 11&#8221; Air has a 1366 by 768 display. The screens are roughly equivalent in number of pixels if not DPI. I also use a very small font - Menlo 9 - wherever I can, so I tend to get a lot of code on the screen at once.</p>

<p>My habits with Xcode have changed a bit. I&#8217;m now proficient with the command-key equivalents for hiding or showing almost any part of the Xcode chrome, so I can maximize on-screen data. I&#8217;m also using full-screen mode much more often in applications which support it. Mail and OmniFocus are the two which get the full-screen treatment most often.</p>

<p>I&#8217;m rather surprised to find I&#8217;m using Mission Control. I have a couple of desktops set up to separate work from the social stuff (Twitter, the web, etc.), and then the full-screen apps at the far end. I admit I never thought I&#8217;d use Mission Control when Lion came out but it&#8217;s working very well for me these days.</p>

<p>Despite my overall satisfaction with the 11&#8221; Air I suspect my next personal machine will be the 13&#8221; Air. I&#8217;m too much of a screen real estate junkie and the 13&#8221; Air gets better battery life.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Thanksgiving in New England]]></title>
    <link href="http://playswithfire.com//blog/2011/11/25/thanksgiving-in-new-england/"/>
    <updated>2011-11-25T18:27:00-08:00</updated>
    <id>http://playswithfire.com//blog/2011/11/25/thanksgiving-in-new-england</id>
    <content type="html"><![CDATA[<p>It&#8217;s been a while since I visited my parents in Connecticut, so this year I made the trip to see them at the old homestead. The house and the town have some family history and I&#8217;m always reminded of it when I return home.<!--more--> I grew up in this house and my parents still live here:</p>

<p><img class="center" src="http://playswithfire.com//assets/MdbyThanksgiving/Home.jpg" width="816"></p>

<p>The house is over 200 years old. My father&#8217;s great aunt lived in it before we bought it. The view from the back yard is beautiful.</p>

<p><img class="center" src="http://playswithfire.com//assets/MdbyThanksgiving/Backyard.jpg" width="816"></p>

<p>My mother used to keep horses on the property. This is the horse barn they built to keep the two horses and the Shetland pony.</p>

<p><img class="center" src="http://playswithfire.com//assets/MdbyThanksgiving/HorseBarn.jpg" width="816"></p>

<p>Across the town green is <a href="http://www.westoverschool.org/">Westover School</a>:</p>

<p><img class="center" src="http://playswithfire.com//assets/MdbyThanksgiving/Westover.jpg" width="816"></p>

<p>My great-grandfather was a construction foreman when this building was built and stayed on as the head of the physical plant of the school until he retired. The school&#8217;s development office was once the library and there&#8217;s a plaque in this building with his name on it.</p>

<p><img class="center" src="http://playswithfire.com//assets/MdbyThanksgiving/ClarkLibrary.jpg" width="816"></p>

<p>Across the street from that house is the Middlebury Congregational Church and the Middlebury Town Hall:</p>

<p><img class="center" src="http://playswithfire.com//assets/MdbyThanksgiving/ChurchTownHall.jpg" width="816"></p>

<p>The sunsets tend to be beautiful.</p>

<p><img class="center" src="http://playswithfire.com//assets/MdbyThanksgiving/Sunset.jpg" width="816"></p>

<p>I sometimes say I grew up in a town that would have made even Norman Rockwell violently ill. It&#8217;s a snarky comment that doesn&#8217;t do justice to the way I feel when I return. Middlebury is a classic small New England town without the weekend tourism from New York City that many towns here sometimes attract. When I was younger it was an awfully small town. Now I find it to be a refreshing change from California. It&#8217;s a wonderful place.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[New clothes.]]></title>
    <link href="http://playswithfire.com//blog/2011/11/19/new-clothes/"/>
    <updated>2011-11-19T20:24:00-08:00</updated>
    <id>http://playswithfire.com//blog/2011/11/19/new-clothes</id>
    <content type="html"><![CDATA[<p>One of the reasons I haven&#8217;t blogged that much is the fact that WordPress is just so frustrating to use. I recently learned about <a href="http://octopress.org/">Octopress</a> from a few different sources and decided I&#8217;d give it a try.</p>

<p>I was able to also bring over an archive of an earlier version of the blog from around 2004 and import those entries as well. Take a look at the <a href="http://playswithfire.com/blog/archives/">blog archives</a> to see what my earlier writing was like.</p>

<p>Enjoy!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Thanks, Steve]]></title>
    <link href="http://playswithfire.com//blog/2011/10/05/thanks-steve/"/>
    <updated>2011-10-05T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2011/10/05/thanks-steve</id>
    <content type="html"><![CDATA[<p>When Steve stepped down as CEO, I wrote to let him know what effect he and his company had on a ten year old kid:</p>

<blockquote><p>Steve,</p>

<p>When I was in the fourth grade my parents bought an Apple ][+ when 48K was a lot of RAM and disk drives were uncommon. I discovered in that computer a world which I could play in, learn in, and experiment in. I was ten years old and I&#8217;d found something incredible in the machine you&#8217;d helped create.</p>

<p>My parents kept a book - in each grade, I&#8217;d write what I wanted to be when I grew up and many years I had the usual astronaut dreams. When I was in the sixth grade and having learned to program a bit, I wrote that I wanted to work at Apple.</p>

<p>I played and worked with computers of one sort or another for the next twenty years. I learned to program the Macintosh and NeXT machines when I was in college. I studied computer science. I contracted and wrote software to help people do things with computers in a better way than they could do those things without computers.</p>

<p>I watched as Apple bought NeXT and you turned a beleaguered company once again into something which inspired dreams. Twenty years after that first Apple ][, I started working at Apple. I&#8217;ve been here for ten years.</p>

<p>I&#8217;m proud to have been a part of Apple&#8217;s resurgence working first on Mac OS X and then on iOS. There are times every day when the giddy ten year old in me is amazed at his good fortune in helping to create products that people want to use rather than have to use.</p>

<p>Your leadership enabled me to live a childhood dream, but even more than that it&#8217;s taught me how to reach for something more; to improve myself and everything around me and to follow what I passionately believe in. I hope that something I&#8217;ve worked on in my time here will help inspire another ten year old to experiment and ask &#8220;What if&#8230;?&#8221;</p>

<p>It&#8217;s completely inadequate, but it&#8217;s the only thing I can say:</p>

<p>Thank you.</p>

<p>.chris</p></blockquote>

<p>Those of us working at Apple have inherited a dream. It&#8217;s a dream we already believed in, but now it&#8217;s completely ours to realize.</p>

<p>Watch us.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Prep]]></title>
    <link href="http://playswithfire.com//blog/2010/05/27/prep/"/>
    <updated>2010-05-27T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2010/05/27/prep</id>
    <content type="html"><![CDATA[<p>It&#8217;s that time of year again; crunch time for WWDC preparations.</p>

<p>It&#8217;s the time of year which reminds me how much I enjoy teaching, and how much work teaching effectively really is.</p>

<p>In the past couple of weeks, I&#8217;ve been wrestling with everything from Xcode and my demo through Keynote not launching for no apparent reason. Murphy doesn&#8217;t just look over your shoulder while you&#8217;re on stage presenting a demo, sometimes he&#8217;s there for the entire process leading up to the big day.</p>

<p>It&#8217;s totally worth it, though. I have such a great time at WWDC that I always make a point of presenting every year.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ev]]></title>
    <link href="http://playswithfire.com//blog/2010/02/01/ev/"/>
    <updated>2010-02-01T00:00:00-08:00</updated>
    <id>http://playswithfire.com//blog/2010/02/01/ev</id>
    <content type="html"><![CDATA[<p>When we lived in a rented house in a different neighborhood in Mountain View, we had fantastic neighbors on each side of us.</p>

<p>On the north side was an older man named Ev. He grew beautiful roses in his front yard. He would stand on the other side of the fence and talk about gardening with Kat, or he would tell us stories about the huge oak tree in his back yard, and stories about the neighborhood and how it developed.</p>

<p>He was always pleased to see you and always had something interesting to talk about. He knew a lot about the different neighborhoods in Mountain View. When we told him we we had bought a house and where we were moving, he mentioned that he&#8217;d known a lady who lived &#8220;over that way.&#8221; In fact, whenever he talked about a neighborhood in Mountain View he knew a lady &#8220;over that way.&#8221;</p>

<p>When he was well enough, he would fire up his old pickup truck and run an errand. I always imagined he was visiting a lady friend in another neighborhood.</p>

<p>While we were excited to have bought a house, we were heartbroken to be leaving behind such wonderful people like Ev. We always said he should come by and see Katherine&#8217;s roses. We had heard from friends that he&#8217;d been receiving home care for a little while. He went into the hospital last week. He passed away on Sunday.</p>

<p>He never got to come and see Kat&#8217;s roses and tell us more about our neighborhood and which lady he knew &#8220;over our way.&#8221; Somehow life got away from us and we never got around to having him visit. We&#8217;re both upset about having not made the time to see him.</p>

<p>It&#8217;s easy to leave something and imagine that it will always be the way you left it; your hometown, a school, a neighborhood, a person. Time has a way of reminding you otherwise.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Some Plans]]></title>
    <link href="http://playswithfire.com//blog/2009/11/05/some-plans/"/>
    <updated>2009-11-05T00:00:00-08:00</updated>
    <id>http://playswithfire.com//blog/2009/11/05/some-plans</id>
    <content type="html"><![CDATA[<p>I know everyone&#8217;s just dying to catch up on what I had for lunch or what the contractor is doing right now. If you want that, you should pop on over to my <a href="http://twitter.com/ctp">Twitter feed</a>.</p>

<p>I&#8217;m working on a few programming posts which I&#8217;m hoping to have up in the next few weeks - maybe one a week or so.</p>

<p>I&#8217;m also tinkering around with trying to customize the look of the the website a bit more. Never having done any Wordpress hacking, I&#8217;m liable to really screw things up. If something goes south, please bear with me.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Buddy, with rice]]></title>
    <link href="http://playswithfire.com//blog/2009/10/30/buddy-with-rice/"/>
    <updated>2009-10-30T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/10/30/buddy-with-rice</id>
    <content type="html"><![CDATA[<p>The dog eats his dinner in about a minute and forty-five seconds (yes, we&#8217;ve timed it). Sometimes, he doesn&#8217;t get it all.</p>

<p><a href="assets/BudWithRiceOnNose.jpg"><img src="assets/BudWithRiceOnNose.jpg" alt="" width="225" height="300" class="alignnone size-full wp-image-364" /></a></p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[BOQ, round 2]]></title>
    <link href="http://playswithfire.com//blog/2009/10/29/boq-round-2/"/>
    <updated>2009-10-29T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/10/29/boq-round-2</id>
    <content type="html"><![CDATA[<p>Just me and the dog again, this time through Monday morning.</p>

<p>This morning went well - he didn&#8217;t wake me up &#8216;til 7:30. The five laps around the block were pretty cold on the bike, though.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ireland Pictures!]]></title>
    <link href="http://playswithfire.com//blog/2009/10/04/ireland-pictures/"/>
    <updated>2009-10-04T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/10/04/ireland-pictures</id>
    <content type="html"><![CDATA[<p>Ireland pictures are up <a href="http://www.flickr.com/photos/playswithfire/sets/72157622390492647/">here</a>. I tried to pick the best bits from each day. Some of the descriptions may need editing; I was messing around in iPhoto and I think I did something wrong.</p>

<p>This was an <em>incredible</em> trip. I can&#8217;t say enough good things about it - we had a great time with wonderful friends. I&#8217;d go back in a heartbeat.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[BOQ]]></title>
    <link href="http://playswithfire.com//blog/2009/08/13/boq/"/>
    <updated>2009-08-13T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/08/13/boq</id>
    <content type="html"><![CDATA[<p>Buddy and I are in Bachelor Officers Quarters until Sunday while Kat is in North Carolina on vacation eating Chick-Fil-A and I am <strong>not jealous at all about this</strong>. Really.</p>

<p>This apparently means the dog wakes up at 5:10 AM regardless of what we&#8217;ve been doing for the last, oh, 8 weeks. The morning routine is pretty straightforward:</p>

<ol>
<li>Dog wakes up at some unknown time in the morning.</li>
<li>Dog waits for what seems to him an interminable amount of time (5.2 seconds) before finding exposed skin and licking incessantly.</li>
<li>I wake up wondering what the heck is happening.</li>
<li>Oh it&#8217;s the dog (about a minute - I&#8217;m slow in the morning).</li>
<li>Go to the kitchen.</li>
<li>Feed the dog (1/3 cup food + 1/3 cup brown rice - about a minute and a half).</li>
<li>Let the dog out.</li>
<li>Take the dog to the park for a rousing game of Fetch and Chase Stuff (30-45 minutes, depending on what other dogs are around).</li>
<li>Walk home.</li>
<li>Play a rousing game of Sit On The Couch And Sigh Occasionally.</li>
<li>Prepare a Kong bone with treats inside for the dog.</li>
<li>Put dog in crate and go to work.</li>
</ol>


<p>The lunch routine is the same thing, just start at step 7 above. Sometimes we skip step 8 depending on how much time I have to spend at lunch.</p>

<p>Dinner is just steps 7 to 10.</p>

<div style="text-align:center;"><img src="assets/BudAtTheTree.jpg" alt="IMG_0091.jpg" border="0" width="384" height="512" /></div>


<p>I kind of enjoy the structure to my day. The break in the middle to let the dog out is a great way to get out of the office.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Getting Unblocked.]]></title>
    <link href="http://playswithfire.com//blog/2009/03/19/getting-unblocked/"/>
    <updated>2009-03-19T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/03/19/getting-unblocked</id>
    <content type="html"><![CDATA[<p>Finally fixed a bug that&#8217;s been bothering me for a day. I&#8217;m amazed at how much different the programming is &#8220;up here.&#8221;</p>

<p>In many ways interacting with the operating system is a fairly straightforward thing: There are some system calls, they return some errors. In CoreFoundation and Foundation, we layer more sophisticated behaviors around those calls to make them easier to use, or to provide new facilities.</p>

<p>As soon as a user gets involved, things get infinitely more complicated. Interaction must be taken in to account. Designing the user experience takes time and effort, and designing and writing APIs to support a user experience or interface take a <strong>lot</strong> of time and effort.</p>

<p>Still, I&#8217;m having fun. I miss the low-level stuff, but I&#8217;m getting immersed in the things that I&#8217;m working on now. It helps.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Still Hate the Gym.]]></title>
    <link href="http://playswithfire.com//blog/2009/03/17/still-hate-the-gym/"/>
    <updated>2009-03-17T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/03/17/still-hate-the-gym</id>
    <content type="html"><![CDATA[<p>Yup. Still not a big fan of the gym, but on Sunday I went to the 9:30 AM spin class because I noticed during the ski weekend that while I&#8217;m a better skier, Katherine&#8217;s in much better shape than I am. This is a shocker, I know.</p>

<p>I made it through the whole class, but I was definitely thoroughly worked over at the end of the session. I suspect despite my aversion to the gym, I&#8217;ll be going back next Sunday.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ultimate Getaway Car...]]></title>
    <link href="http://playswithfire.com//blog/2009/03/14/ultimate-getaway-car/"/>
    <updated>2009-03-14T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/03/14/ultimate-getaway-car</id>
    <content type="html"><![CDATA[<p>&#8230;for a bank robbery in San Francisco:</p>

<p>A Toyota Prius with a KQED bumper sticker.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Third Day of Work]]></title>
    <link href="http://playswithfire.com//blog/2009/03/11/third-day-of-work/"/>
    <updated>2009-03-11T00:00:00-07:00</updated>
    <id>http://playswithfire.com//blog/2009/03/11/third-day-of-work</id>
    <content type="html"><![CDATA[<p>&#8230;and it&#8217;s already pretty interesting.</p>

<p>The first day was spent doing the usual getting set up. The second day was trying to get my mind around the sources and straighten out some problems with the version control server.</p>

<p>Today was actually fixing a couple of bugs and doing a code review. I&#8217;m excited that I&#8217;ve been able to hit the ground running and participate as much as I have already.</p>

<p>I have to admit, I was extremely nervous about changing groups but I&#8217;m feeling much better about this whole thing after today.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Great Ski Weekend]]></title>
    <link href="http://playswithfire.com//blog/2009/03/08/great-ski-weekend/"/>
    <updated>2009-03-08T00:00:00-08:00</updated>
    <id>http://playswithfire.com//blog/2009/03/08/great-ski-weekend</id>
    <content type="html"><![CDATA[<p>Just got back from a fantastic ski weekend in Tahoe; the first of the season for Kat and me. We took Friday off and drove up Thursday night. We skied at Sugar Bowl on Friday and Squaw Valley on Saturday.</p>

<p>I made my obligatory run whistling &#8220;Tea for Two&#8221; which my grandfather taught me was a pretty good cadence for making turns (and he was right). The whistling and the skiing are both bits of family tradition.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Getting Started. Again.]]></title>
    <link href="http://playswithfire.com//blog/2009/03/01/getting-started-again/"/>
    <updated>2009-03-01T00:00:00-08:00</updated>
    <id>http://playswithfire.com//blog/2009/03/01/getting-started-again</id>
    <content type="html"><![CDATA[<p>I told myself I&#8217;d start writing again; but I had to set things up first. I also didn&#8217;t want to dink around with customizing things, so I installed WordPress and picked up a likely-seeming theme online.</p>

<p>I&#8217;ll try to republish some of my old content and then get started with some code and cooking entries.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Envisioning Information]]></title>
    <link href="http://playswithfire.com//blog/2004/12/10/envisioning-information/"/>
    <updated>2004-12-10T00:00:00-08:00</updated>
    <id>http://playswithfire.com//blog/2004/12/10/envisioning-information</id>
    <content type="html"><![CDATA[<P>I recently had a chance to hear <A HREF="http://www.edwardtufte.com/">Edward Tufte</A> speak about (primarily) information presentation and his techniques and critiques of the same. He&#8217;s a wonderfully dynamic speaker with a wide range of interests and all of his interests clearly influence everything he brings his eye and mind to. I&#8217;m really glad I went, as it&#8217;s given me many many things to think about in my own work.</P>


<P>Perhaps most interesting to me right now (and perhaps to him, since it seems to be what he&#8217;s updating the most lately) is the idea of <A HREF="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR&topic_id=1">sparklines</A>; a method of displaying a data series in a small, word-size chunk inline with the text. Given a combination of the Cocoa text system and some other stuff I don&#8217;t think it would be terribly hard to integrate these into a computer program. A quick Google search yields some implementations in various languages.</P>


<P>The thing about the implementations that intrigues me is that very few of them incorporate any kind of interactivity in them - they&#8217;re all static. There are all sorts of interesting things to be done with the sparkline area including the overlay of sets outlined in the article that I&#8217;m surprised people haven&#8217;t brought that in yet. I think I can add some value to the sparkline concept by including this kind of additional visualization.</P>


<P>I picked up another set of copies of his books which is good as I can&#8217;t seem to find the copies I already own (I&#8217;ll have to dig them out of the boxes at some point). It&#8217;s dense, challenging reading but they&#8217;re beautifully printed and I even had one of the copies autographed.</P>


<P>He also slipped in a couple of comments about getting a Macintosh and leaving your G4 PowerBook during the break - I&#8217;m not sure if he&#8217;s a Macintosh user, but one can always hope&#8230;</P>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Extended Tour of Duty]]></title>
    <link href="http://playswithfire.com//blog/2004/12/06/extended-tour-of-duty/"/>
    <updated>2004-12-06T00:00:00-08:00</updated>
    <id>http://playswithfire.com//blog/2004/12/06/extended-tour-of-duty</id>
    <content type="html"><![CDATA[<P>It must not be my day or something.</P>


<P>Last night I managed to injure my ankle through my own stupidity. Ouch. Pain. Anguish. Frustration. Especially in light of the impending ski vacation. Fortunately it appears to be getting better fairly quickly.</P>


<P>Today at Caffe Macs I managed to get a little bit off balance and spill an entire bowl of scalding hot soup on my hand. This is, mind you, the first time I&#8217;ve had soup at the cafeteria in something close to a year.</P>


<P>It&#8217;s <i>definitely</i> Monday.</P>

]]></content>
  </entry>
  
</feed>
