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

  <title><![CDATA[Stuntman And Lover Of Cheese]]></title>
  <link href="http://danimal.org//atom.xml" rel="self"/>
  <link href="http://danimal.org//"/>
  <updated>2012-05-09T12:27:34-07:00</updated>
  <id>http://danimal.org//</id>
  <author>
    <name><![CDATA[Dan Weeks]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Personal Heroes]]></title>
    <link href="http://danimal.org//blog/2012/04/25/personal-heroes/"/>
    <updated>2012-04-25T20:20:00-07:00</updated>
    <id>http://danimal.org//blog/2012/04/25/personal-heroes</id>
    <content type="html"><![CDATA[<p>Into every life a personal hero or two will hopefully fall. Sometimes you&#8217;ll discover them very early on. For me I always had amorphous ideas about people that inspire me but I had never really thought about who is a personal hero of mine. Now that I&#8217;m older I&#8217;ve thought about it some, but mostly these two fine gentlemen have come to me recently.</p>

<h3>Kurt Vonnegut</h3>

<p>I started reading Vonnegut in high school. I love his fiction. I can&#8217;t point to any one thing but it just grabs me. His way with words and expression have turned him into a personal hero of mine. Recently there was a <a href="http://www.lettersofnote.com/2012/03/i-am-very-real.html">letter published</a> from Mr. Vonnegut to Charles McCarthy after the burning of his book, <em>Slaughterhouse-five</em>. It&#8217;s filled with humanity and passion. Things that Vonnegut brings to his books in spades. Things that make me respect him and make him one of my heroes.</p>

<h3>Neil deGrasse Tyson</h3>

<p>What can one say about Dr. Tyson? For those of you that don&#8217;t know who Dr. Tyson is, he&#8217;s the head of the <a href="http://www.haydenplanetarium.org/tyson/">Hayden Planetarium</a> and a very, very smart man. Dr. Tyson brings a passion for science and education that I&#8217;ve not seen from any other public figure in a long time. His passion comes out every time I hear him talk or read his writings. That passion is infectious and inspiring. Here are a selection of video with him giving talks or his voice.</p>

<ul>
<li><a href="http://www.youtube.com/watch?v=RQhNZENMG1o">Neil deGrasse Tyson at UB: What NASA Means to America&#8217;s Future</a></li>
<li><a href="http://www.youtube.com/watch?v=wiOwqDmacJo">10 Questions for Neil deGrasse Tyson</a></li>
<li><a href="http://www.youtube.com/watch?v=CbIZU8cQWXc">Neil deGrasse Tyson - We Stopped Dreaming (Episode 1)</a></li>
<li><a href="http://www.youtube.com/watch?v=L7c6EO46Bu8">Neil deGrasse Tyson: Swami Levitation</a></li>
<li><a href="http://www.youtube.com/watch?v=-_2xGIwQfik">Dawkins vs. Tyson</a></li>
</ul>


<p>Follow him on Twitter at <a href="https://twitter.com/neiltyson">@neiltyson</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[FESSolarCalculator: Sunrise, Sunset, and Twilight Times for Cocoa]]></title>
    <link href="http://danimal.org//blog/2012/03/11/fessolarcalculator-sunrise/"/>
    <updated>2012-03-11T21:32:00-07:00</updated>
    <id>http://danimal.org//blog/2012/03/11/fessolarcalculator-sunrise</id>
    <content type="html"><![CDATA[<p>Recently I sat down to think about how I would improve on <a href="http://friskyelectrocat.com/RadioMaestro/">RadioMaestro</a>. I&#8217;ve let it go for far too long without an update. One thing I left out when originally developing RadioMaestro was the ability to change the list of AM stations at night. In AM broadcasting many stations are forced to reduce power or suspend operations at night. It has to do with <a href="http://en.wikipedia.org/wiki/AM_broadcasting#Operation">changes in the ionosphere and the radio waves traveling farther at night</a>.</p>

<p>Rather than just having an arbitrary time to pick between day- and night-time AM stations I also thought about interfaces that should change when it&#8217;s dark. Reading apps like <a href="http://readitlater.com/">Read It Later</a> have a night mode. Camera apps might have saved settings for day and night shots. A desk or night table clock app might have different modes for day and night. It even extends to audio, an app may want to have lower volume at night on startup. There&#8217;s no reason those apps can&#8217;t use the geolocation of your device, the date, and know within an acceptable precision if the sun has risen or set or is up and shining.</p>

<p>I looked around a bit but I didn&#8217;t really find anything that hit the right spot for what I was envisioning. I just want something simple that I pass an <code>NSDate</code> and a <code>CLLocation</code> and it does it&#8217;s thing. I can then grab whatever times I need out of it.</p>

<p>I sat down and started to dig on the math behind the calculations and fortunately there are a lot of really great explanations by people far smarter than me. It took me a bit to make sure it was working correctly and now I have written a class, <code>FESSolarCalculator</code>, that does exactly as my requirements listed above.</p>

<p>The <a href="https://github.com/danimal/FESSolarCalculator">FESSolarCalculator</a> project is hosted at GitHub. There are currently two issues that I know about and I&#8217;ll get to those in the coming days. Pull requests are welcome as is all manner of criticism. Thanks to <a href="https://github.com/robrix">Rob Rix</a> for a sanity check and for talking about approaches to a better, more streamlined approach from my initial implementation.</p>

<p>The source is MIT Licensed so go nuts with it. I hope you find it useful. Drop me a note if you do.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Seth Godin: Sight Reading]]></title>
    <link href="http://danimal.org//blog/2012/03/03/seth-godin-sight-reading/"/>
    <updated>2012-03-03T14:59:00-08:00</updated>
    <id>http://danimal.org//blog/2012/03/03/seth-godin-sight-reading</id>
    <content type="html"><![CDATA[<blockquote><p>We often test sight reading skills, particularly in job interviews. In that highly-charged encounter, we test the applicant&#8217;s ability to think on her feet. That&#8217;s a great idea if the job involves a lot of feet thinking, but otherwise, you&#8217;re inspecting for the wrong thing, aren&#8217;t you? Same with a first date. Marketing yourself to a new person often involves being charismatic, clever and quick&#8211;but most jobs and most relationships are about being consistent, persistent and brave, no?</p><footer><strong>Seth Godin</strong> <cite><a href='http://sethgodin.typepad.com/seths_blog/2012/03/sight-reading.html'>Sight Reading</a></cite></footer></blockquote>


<p>I can&#8217;t agree more with this. For a long while I&#8217;ve hated the gauntlet of interviewing. At <a href="http://pixar.com/">Pixar</a> I had to do a lot of white board code and database queries. It was pointless. I never did anything remotely like the exercises in the interview. They weren&#8217;t even close to exposing how I would end up working on projects at Pixar, and that&#8217;s a shame, it was essentially wasted time.</p>

<p>In my own interviewing of candidates over the last half a decade or so I&#8217;ve gone pretty far away from white board interviews. I did try it again with one recent candidate and realized what a folly it was and stopped. It was easier to talk to him, have a back and forth conversation, and be able to dig deeper into answers while he was comfortable and not sweating it out at a white board.</p>

<p>Single day interviews are too small of a glimpse into a person, but it&#8217;s mostly all we get. There has to be a better way and I know I&#8217;m still searching for it. The only way to build a good team of competent people is to hire those consistent, persistent, and brave individuals you find while weeding out those that need more training.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Count Me Out for the Downloading Game]]></title>
    <link href="http://danimal.org//blog/2012/02/25/count-me-out-for-the-downloading-game/"/>
    <updated>2012-02-25T09:57:00-08:00</updated>
    <id>http://danimal.org//blog/2012/02/25/count-me-out-for-the-downloading-game</id>
    <content type="html"><![CDATA[<p>Recently there has been a lot of discussion about how media companies don&#8217;t provide enough online digital formats to match users wants for how they consume videos, movies, and episodic programming. A lot of the time I hear people justifying downloading content from torrent sites as &#8220;the companies won&#8217;t take my money how I want to give it to them so I&#8217;ll just download it.&#8221; <a href="http://theoatmeal.com/">The Oatmeal</a> even posted a <a href="http://theoatmeal.com/comics/game_of_thrones">comic about this</a> that I saw repeatedly linked with positive comment.</p>

<p>My entire career has been built on working at places that work very hard to create content to sell. It&#8217;s the lifeblood of the animation, visual effects, and game studios I&#8217;ve worked at. Without sales they can&#8217;t go on to create more and better content for people to consume. When I see otherwise reasonable adults acting childish and resorting to theft it makes me sad. I&#8217;m not going to mince words here: downloading content without paying for it is theft, plain and simple. You can try to justify it all you want in that the media companies don&#8217;t make it available in the format you want or for the price you want to pay, but you&#8217;re still stealing. As content owners it&#8217;s their right to say how it is distributed or how much it should cost. If they&#8217;re leaving money on the table by not having it everywhere for an affordable price then that is their business decision, you don&#8217;t get to break the rules because you don&#8217;t agree.</p>

<p>The most rational rebuttal to the Oatmeal comic is from Andy Ihnatko with <a href="http://ihnatko.com/2012/02/20/heavy-hangs-the-bandwidth-that-torrents-the-crown/">Heavy Hangs The Bandwidth That Torrents The Crown</a>. I mostly agree with what Andy says. I don&#8217;t download. I&#8217;ll wait for DVDs to come on Netflix if need be before I see something. I purchase content when it&#8217;s available on iTunes or other outlets.</p>

<p>I&#8217;m not saying I&#8217;m better than anyone else. I&#8217;ve shared music from friends, but every album I get I go and purchase it (directly from the artist if possible). I&#8217;ve made my decision knowing where my livelihood comes from and knowing that by not supporting the things I like I risk them going away. If you&#8217;re an adult you have to make your own choices and be ready for any consequences. If you decide to download content illegally I will look down my nose and cluck my tongue at you and then remind you that every time you steal content you&#8217;re playing into the hands of the media companies when they try to get laws like SOPA and PIPA passed. Every time you download content illegally you should think about it as a tiny cut in the fabric of your freedom. You feel like you&#8217;re sticking it to the rich fat cats at media companies, but in the end you&#8217;re just helping to hurt yourself.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Offices Change and Get Better]]></title>
    <link href="http://danimal.org//blog/2012/02/25/offices-change-and-get-better/"/>
    <updated>2012-02-25T09:07:00-08:00</updated>
    <id>http://danimal.org//blog/2012/02/25/offices-change-and-get-better</id>
    <content type="html"><![CDATA[<p>For a while my company was spread out across two floors in one building and then had other teams in a second building a few blocks away. This was wholly inconvenient and as such our management decided to bring all teams back under one roof.</p>

<p>You may recall my screed about a <a href="http://danimal.org/blog/2012/01/16/workplace-disdain/">dis-satisfactory workplace</a> last month. With this move we&#8217;ve made a large change as is expected. Rather than pods we now have a large area, still open mind you, but it&#8217;s only the engineering teams together. No other groups and so far fewer distractions.</p>

<p>We also were able to get sit-to-stand desks for everyone in engineering. A much needed improvement. It&#8217;s good to see things change and to know that the leadership was listening about the desk situation in planning this move.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Workplace Disdain]]></title>
    <link href="http://danimal.org//blog/2012/01/16/workplace-disdain/"/>
    <updated>2012-01-16T21:44:00-08:00</updated>
    <id>http://danimal.org//blog/2012/01/16/workplace-disdain</id>
    <content type="html"><![CDATA[<p>I had been working on a post about how I feel about my work/life balance, the way work is going, and some of the things I want to improve in my life. Some of this I haven&#8217;t decided if I even want to publish yet. I have extracted here one part of it that happens to coincide with a recently published opinion piece by Susan Cain in the New York Times: <a href="http://www.nytimes.com/2012/01/15/opinion/sunday/the-rise-of-the-new-groupthink.html">The Rise of the New Groupthink</a>.</p>

<p>In the article Ms. Cain starts:</p>

<blockquote><p>SOLITUDE is out of fashion. Our companies, our schools and our culture are in thrall to an idea I call the New Groupthink, which holds that creativity and achievement come from an oddly gregarious place. Most of us now work in teams, in offices without walls, for managers who prize people skills above all. Lone geniuses are out. Collaboration is in.</p></blockquote>


<p>I&#8217;ve worked in a lot of different types of offices. By far the one I have the most distain for is the open floor plan. Unsurprisingly this is the kind of office at my current day job.</p>

<!--more-->


<p>Let us rewind a bit first, back a mere 30 years or so to when I was in first, second, and third grades. Good old <a href="http://g.co/maps/e7bzq">Blue Ridge Elementary</a>. It was designed as an open plan school. No walls between the classrooms. Children could move from their current class to something that looked more interesting throughout the day. It was all very nouveau I&#8217;m sure. The problem is it didn&#8217;t work. Especially with children distractions are easy to come by and derail the learning process. For me it was exacerbated by the fact that I was bored and quickly finished my lessons<a href="#fn:1" id="fnref:1" title="see footnote" class="footnote"><sup>1</sup></a>. So what did the school do? Eventually they put up cabinets and shelves designed to form classroom-sized spaces out of these giant rooms set aside for each grade level.</p>

<p>Of the work spaces I&#8217;ve had there have been cubes, offices, offices without ceilings, more cubes, and now, ugh, pods.</p>

<p>Cubes are less than ideal, but overall the ones I&#8217;ve had did have at least one redeeming quality, you could move the desk in it. Now, I know there are a lot of cubes that have built-in desks. These are not those, the built-in desks suck. What I&#8217;ve had are cubes that have either permanent half walls<a href="#fn:2" id="fnref:2" title="see footnote" class="footnote"><sup>2</sup></a> or modular walls but with room enough for a real desk that can be oriented different directions. The biggest benefit of having cubes like this is that a person could face the hall way. There&#8217;s nothing people like less than having their back to the hall and people walking up on them. Ms. Cain touches on that in the article too.</p>

<p>I did love the offices I had. The offices without a ceiling were essentially just cubes with a higher wall and a door. You still got noise pollution, but you could close the door and signal unavailability.</p>

<p>In the last four or five years I&#8217;ve worked at places that had either newly constructed or relatively newly built facilities. The worrying trend is to large open rooms where noise pollution becomes rampant and destroys productivity like a plate of chocolate-chip cookies in front of Cookie Monster.</p>

<p>I worked in an old <a href="http://en.wikipedia.org/wiki/Hamilton_Air_Force_Base">pre World War II hangar</a> that was converted to a very nice office space. Each person not in an office had a cube made of modular walls and cabinets and a sit-stand desk. Great gear. Not one person looked at the design and thought that a giant room with a curved ceiling about 20 feet and walls that were only normal height for your average office building would good for making a room full of software developers be able to concentrate in some semblance of solitude. The open area in the middle of the room was great for our team to commune and meet. The noise from outside was unbearable. At my desk I could hear very clearly conversations from over the wall in a different group. It wasn&#8217;t that they were being too loud, it&#8217;s that the acoustics were perfect so I couldn&#8217;t help but feel like I was standing right next to the people talking.</p>

<p>At my current job it&#8217;s even worse. When the company moved into this space they bought the furniture from the previous tenant. That consists of hexagonal shaped pods with walls only at about four feet. The desk surfaces are built onto the walls and are unadjustable. This means that everyone has to face their back to the center of the pod, and guess what, anyone can walk up on you. No bueno.</p>

<p>People will excuse it by alluding to the &#8220;open, collaborative office.&#8221; I call bullshit. All we have now are groups next to each other and when my group is trying to discuss an issue and the group next to us is discussing an issue we both have to raise the volume a little to be heard. Add the groups on either side of us and that&#8217;s just ⅓ of the floor. Imagine both sides of engineering pods going and the cacophony is deafening. Just imagine trying to focus and work during that time, you can&#8217;t. It&#8217;s far too disruptive and happens nearly every day.</p>

<p>People will say &#8220;just put on headphones,&#8221; and I do. I can get into a zone with the cans on and the monitor. It&#8217;s like I have a hood on between me and my monitor. My field of vision is just the monitor. Awesome. But guess what, it&#8217;s rare that I can get there. Not awesome.</p>

<p>Another suggestion I&#8217;ve heard is to book a conference room. There are two problems with that. First, it&#8217;s selfish and hogs a resource that could be used for an actual meeting<a href="#fn:3" id="fnref:3" title="see footnote" class="footnote"><sup>3</sup></a>. Second, conference room chairs and tables are no better for working at than my desk, where I have a big monitor and can see a heck of a lot more than my laptop screen.</p>

<p>I seem to have done a lot of complaining, but I think it&#8217;s because I genuinely care about my work environment and being productive. It&#8217;s not too much for a team of software engineers<a href="#fn:4" id="fnref:4" title="see footnote" class="footnote"><sup>4</sup></a> to have an area they can close a door and be apart from the rowdy masses. Ms. Cain&#8217;s article really hit home to me. I like working with my team. We are really working well together, but I feel guilty that I know I&#8217;ve caused disruptions for them and they for me. It shouldn&#8217;t be that way. We all need a little solitude and a place to get away and get work done. Is it too much to ask for that?</p>

<p>Ms. Cain summerizes with:</p>

<blockquote><p>But even if the problems are different, human nature remains the same. And most humans have two contradictory impulses: we love and need one another, yet we crave privacy and autonomy.</p><p>To harness the energy that fuels both these drives, we need to move beyond the New Groupthink and embrace a more nuanced approach to creativity and learning. Our offices should encourage casual, cafe-style interactions, but allow people to disappear into personalized, private spaces when they want to be alone. Our schools should teach children to work with others, but also to work on their own for sustained periods of time. And we must recognize that introverts like Steve Wozniak need extra quiet and privacy to do their best work.</p></blockquote>


<p>I wouldn&#8217;t call myself an introvert exactly, but I know I benefit from some quite time without interruptions. When I had an office I was able to close the door to signal I was busy. Now with an open office there&#8217;s not really a way to do that and it sucks. This is also not to say that an open plan can&#8217;t work, but the team of people and mission has to be perfectly aligned.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>No bragging here, I have always had a good grasp of new subjects. Teachers would keep the class on the same level of instruction so that all children were taught at the speed of the slowest learner. That, too, didn&#8217;t work. <a href="#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>
<li id="fn:2">
<p>I&#8217;ve seen anything from about four to seven feet, but never would they go to ceiling height. <a href="#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>
<li id="fn:3">
<p>Don&#8217;t even get me started on meetings though, they are death, but that&#8217;s the subject of another post. <a href="#fnref:3" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>
<li id="fn:4">
<p>Believe it or not, software engineering is a creative endeavor. Anyone that says otherwise doesn&#8217;t have any idea about what designers and engineers go through to get software made. <a href="#fnref:4" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</div>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Orders of Sorts]]></title>
    <link href="http://danimal.org//blog/2012/01/12/orders-of-sorts/"/>
    <updated>2012-01-12T12:02:00-08:00</updated>
    <id>http://danimal.org//blog/2012/01/12/orders-of-sorts</id>
    <content type="html"><![CDATA[<p>Back in those before times when I worked in animation and visual effects I did a lot of work around render queues and handling frames. Frames to be rendered, composited, passed to other departments, etc. At every studio there was a shorthand for specifying frames, <code>frame.1-100.ext</code> for example.</p>

<p>In dealing with them and generating new frames you didn&#8217;t always want to go through the list sequentially. For example if you&#8217;re generating an effects shot and you want to see it along the way you could render on tens (10, 20, 30, 40 and so on) but that wouldn&#8217;t always get you what you wanted fast enough, especially if your sequence of frames is 1000 frames or more. This allows the user to get a feel for the generated sequence before it is completed and make the call if changes are needed or it can continue.</p>

<p>To combat this and help users get to see their renders faster I came up with a few ways of reordering arrays (generally frame ranges, but they could be tasks too) that proved useful.  Stochastic sampling would work, but could be heavy on one end of the sequence unintentionally. There&#8217;s also the issue of repeatability, since being able to repeat the same execution multiple times makes it easier to compare two runs of tasks.</p>

<p>Recently I wanted to run some discrete tasks that each took a non-significant amount of time. Rather than just randomizing my list of tasks I wanted to see progress across the whole sequence, just like when I was working on a shot in animation. To that end I ported my array ordering functions to an NSArray category: <a href="https://github.com/danimal/NSArray-FESOrderOps">NSArray+FESOrderOps</a><sup><a href="#fn:1" id="fnref:1" title="see footnote" class="footnote">1</a></sup>.</p>

<p>So there it is, enjoy.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>There is also an implementation of a <a href="http://en.wikipedia.org/wiki/Fisher–Yates_shuffle">Fisher-Yates shuffle</a> in there that could be handy because a shuffle is an order and this way I feel it&#8217;s complete for my needs. <a href="#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</div>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Marching On]]></title>
    <link href="http://danimal.org//blog/2011/12/11/marching-on/"/>
    <updated>2011-12-11T11:16:00-08:00</updated>
    <id>http://danimal.org//blog/2011/12/11/marching-on</id>
    <content type="html"><![CDATA[<p>Well, here we are, after a two-and-a-half month leave of absence I went back to work at <a href="http://ngmoco.com/">ngmoco</a>. It was fun, refreshing, and enlightening to have that much time off.</p>

<h3>Seeing</h3>

<p>I did a little bit of traveling. First was about a week in Hawaii. That was the first vacation I&#8217;ve taken in my adult life where I didn&#8217;t have to worry about going back to work on my return. For the first time in my life I just cut loose and relaxed fully. We did some snorkeling<sup><a href="#fn:1" id="fnref:1" title="see footnote" class="footnote">1</a></sup>, chilled on a remote beach, did a little hiking, and saw some awesome volcanic features. The earth giving birth to itself is just awe inspiring.</p>

<p>In the before-times I worked for the <a href="http://disney.com">House of Mouse</a>. A perk of working there was free tickets to the theme parks. I had a couple of such tickets still sitting around and decided to use them before they expired. That wasn&#8217;t the fun part though. Adding an extra day to our trip and going up the California Coast to see <a href="http://www.hearstcastle.org/">Hearst Castle</a> was a great decision. It&#8217;s a fascinating building and grounds combined with a rich history and art pieces. The park is fairly out of the way for most SF and LA travelers, but it&#8217;s only a day&#8217;s drive from either and if you can add the day or two to see it I recommend it.<sup><a href="#fn:2" id="fnref:2" title="see footnote" class="footnote">2</a></sup></p>

<h3>Noodle</h3>

<p>Part of this break was to blow the cobwebs out of my head. Well, maybe not cobwebs, but I needed to realign my brain a bit. I think I was pretty successful in that. I got to work on a few of my own personal projects and I not only brushed up on some technologies I hadn&#8217;t used in a while but I also learned some new iOS 5 technologies. Part of this was a the pure freedom of just working on what I wanted to. No sprints. No scrums. User stories, yes, but no forced march to appease management or satisfy deadlines you had no hand in creating.<sup><a href="#fn:3" id="fnref:3" title="see footnote" class="footnote">3</a></sup></p>

<p>Doing these projects, even if they never come to fruition, was excellent mental exercise. I&#8217;ll keep on them now that I&#8217;m back at work and if anything it will help keep me mentally agile. I&#8217;m excited for all of them and hopefully I&#8217;ll be able to put more time into them soon.</p>

<h3>Relax</h3>

<p>By far the biggest part of this break was relaxing. Watched movies; read books; played <a href="http://www.thinkwithportals.com/">Portal 2</a>, <a href="http://www.l4d.com/game.html">Left 4 Dead 2</a>, and <a href="http://www.deadislandgame.com">Dead Island</a>; and above all hung out with my lovely wife.</p>

<p>I didn&#8217;t know I&#8217;d enjoy it this much. I mean, I should have guessed. I love my wife to pieces and what would be better than spending a metric butt-load of time with her? Short answer: nothing. It was great in a way I never would have imagined. Now that I&#8217;m back to work I&#8217;m having a little separation anxiety. I know I have a great time with the person I chose to spend my life with. Now I need to work on a way to be able to spend more time with her in the future.</p>

<p>One other thing that was great to do was revisit the art of the siesta. Naps are damn important. I&#8217;m going to extend this back at work because I damn well work better after a short nap. And I now know I work better in the mornings and after naps.</p>

<h3>Return</h3>

<p>At the end of my break I was pretty jazzed to be returning to work. I have a great team to be on at ngmoco and we were working on some cool things when I left. Needless to say, a lot changed in my two and half month absence. We&#8217;ll have to see how things shake out, but for now, it&#8217;s great to be back with my team.</p>

<h3>Reflect</h3>

<p>In my time off I was able to reflect on a lot of things. The biggest one I keep coming back to is that my country&#8217;s corporate and health care systems are screwed up.<sup><a href="#fn:4" id="fnref:4" title="see footnote" class="footnote">4</a></sup> After working on my own projects for a bit I found that I liked it nearly an order of magnitude more than working for someone else.<sup><a href="#fn:5" id="fnref:5" title="see footnote" class="footnote">5</a></sup> Then it struck me that if we did have single-payer universal health care I likely would be working for myself. Health insurance is the primary reason I&#8217;ve returned to work. As Spike Dolomite Ward wrote recently:</p>

<blockquote><p>If you still have a good job with insurance, that doesn&#8217;t mean that you&#8217;re better than me, more deserving than me or smarter than me. It just means that you are luckier. And access to healthcare shouldn&#8217;t depend on luck.</p><footer><strong>Spike Dolomite Ward</strong> <cite><a href='http://www.latimes.com/news/opinion/commentary/la-oe-ward-in-praise-of-obamacare-20111206,0,6794828.story'>Breast Cancer, Health Insurance, and an Apology to President Obama</a></cite></footer></blockquote>


<p>Ms. Ward has been <a href="http://opinion.latimes.com/opinionla/2011/12/a-message-to-obamacare-haters-the-reply.html">attacked for her op-ed piece</a> too. Our system sucks and that there is any fight about this is ridiculous. I feel lucky to have insurance but I want it to be better. That, however, is a post for another time.</p>

<h3>Onward</h3>

<p>To recap:</p>

<ul>
<li>Got to travel.</li>
<li>Got to relax.</li>
<li>Got to play some great games.</li>
<li>Worked on personal projects.</li>
<li>Got reacquainted with naps for good.</li>
</ul>


<p>It&#8217;s a good list for only two and a half months. Until next time just know I&#8217;ll be marching onward. See you down the road.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>I can&#8217;t recommend <a href="http://www.snorkelbob.com/">Snorkel Bob&#8217;s</a> more. Friendly and knowledgeable staff in Kona for sure.  <a href="#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:2">
<p>We drove up from LA, leaving fairly early on a weekday but still hitting major morning traffic, and got two of the tours in before the end of the day. We then stayed overnight in San Simeon and drove back to the Bay Area the next morning. <a href="#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:3">
<p>It is no doubt that schedules are important, but when they&#8217;re forced on you and you&#8217;re not a partner in creating them there&#8217;s failure and disappointment in the future. <a href="#fnref:3" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:4">
<p>Yeah, big surprise, right? <a href="#fnref:4" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:5">
<p>I know, I know. Duh! <a href="#fnref:5" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</div>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Movember]]></title>
    <link href="http://danimal.org//blog/2011/11/16/movember/"/>
    <updated>2011-11-16T09:58:00-08:00</updated>
    <id>http://danimal.org//blog/2011/11/16/movember</id>
    <content type="html"><![CDATA[<p>I&#8217;m not sure why but I never posted my Movember participation here. So, to correct that, I&#8217;m participating in <a href="http://mobro.co/SenorDanimal">Movember</a>. I&#8217;m growing a mustache for the month of November to raise awareness for men&#8217;s health and prostate cancer research. You can donate at the my <a href="http://mobro.co/SenorDanimal">Movember Page</a>. As a treat, here was the Ides of Movember on my face:</p>

<p><a href="http://www.flickr.com/photos/91991505@N00/6347553049"><img src="http://farm7.static.flickr.com/6215/6347553049_b2e911e3d9.jpg" alt="Ides of Movember, November 15, 2011" /></a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Shit Work]]></title>
    <link href="http://danimal.org//blog/2011/11/02/shit-work/"/>
    <updated>2011-11-02T17:14:00-07:00</updated>
    <id>http://danimal.org//blog/2011/11/02/shit-work</id>
    <content type="html"><![CDATA[<p>Zach Holman posts on his site <a href="http://zachholman.com/posts/shit-work/">Don&#8217;t Give Your Users Shit Work</a>. It&#8217;s a great look at sorting and tagging and grouping that users are expected to do sometimes. I&#8217;ve often found tagging, making lists, sorting and such to be a bore. Zach puts it quite succinctly when talking about instant messaging: &#8216;Then I merged everyone into one big group called “Humans”.&#8217; I did the same thing a while back and I&#8217;ve never cared about splitting things up since. I mostly have better things to do.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Looking for Changes to Apple Program Agreements]]></title>
    <link href="http://danimal.org//blog/2011/10/04/looking-for-changes-to-apple-program-agreements/"/>
    <updated>2011-10-04T13:21:00-07:00</updated>
    <id>http://danimal.org//blog/2011/10/04/looking-for-changes-to-apple-program-agreements</id>
    <content type="html"><![CDATA[<p>If you&#8217;re an iOS or Mac developer that ships software via the Apple App Stores then you likely know the hassle of seeing what has changed when Apple puts a new program agreement in front of you. If you don&#8217;t accept it you will be cut off from the dev portal. If you don&#8217;t review it you&#8217;re just being silly and can harm your business.</p>

<p>There are some apps for comparing PDFs, but they tend to be a bit pricey for my tastes as I don&#8217;t need to do this as a full-time task. I suffice with converting the PDF files to text and then using a diff tool to compare them.</p>

<p>Here are the steps you&#8217;ll need to follow to get your program agreement PDFs into text format to compare them:</p>

<ul>
<li>Install <a href="http://mxcl.github.com/homebrew/">Homebrew</a> (if you already use MacPorts or Fink then go with that)</li>
<li>Install the poppler package to the the <code>pdftotext</code> utility</li>
<li>Grab your downloaded copy of the program agreement (or, if you didn&#8217;t save it can goto the <a href="http://developer.apple.com/membercenter/index.action#agreements">Legal Agreements</a> section of the Member Center).</li>
<li>Review but don&#8217;t accept the new program agreement and download the PDF version of the agreement</li>
<li>run the command <code>pdftotext -layout -nopgbrk -enc Latin1 $agreement.pdf $agreement.txt</code>

<ul>
<li>you will need to replace <code>$agreement</code> with the name of the PDF file</li>
<li>you will have to run this twice, once for the prior agreement and once for the new agreement</li>
</ul>
</li>
<li>use your favorite diff utility to view the differences:

<ul>
<li>I like both <a href="http://www.kaleidoscopeapp.com/">Kaleidoscope</a> and <a href="http://connectedflow.com/changes/">Changes</a> as both come with command line utilities</li>
<li>OS X Developer tools come with FileMerge which can be accessed with the <code>opendiff</code> command line tool</li>
</ul>
</li>
</ul>


<p>There you go, you can easily review your Program Agreement changes before accepting without worrying because you didn&#8217;t read the new agreement.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Heartbeat]]></title>
    <link href="http://danimal.org//blog/2011/09/15/heartbeat/"/>
    <updated>2011-09-15T09:01:00-07:00</updated>
    <id>http://danimal.org//blog/2011/09/15/heartbeat</id>
    <content type="html"><![CDATA[<p>For the last (nearly) sixteen years I&#8217;ve been working constantly. There have been some minor breaks between jobs, but mostly they were to travel from one coast to another. I took <a href="http://www.flickr.com/photos/senortaco/collections/72157601848294138/">some</a> <a href="http://www.flickr.com/photos/senortaco/collections/72157604667048516/">vacations</a>, but not nearly enough. Not by a long shot.</p>

<p>My career has been exciting, taking me from once <a href="http://blueskystudios.com/">small</a> <a href="http://ngmoco.com">companies</a> that I helped build into successful entities to <a href="http://pixar.com">large</a> <a href="http://disney.com">companies</a> that I couldn&#8217;t be more proud to have my name associated with what they do. Through it all I&#8217;ve been fortunate enough to work with very talented people and to continue to learn, no matter where I was or what I was doing. If you had asked me fifteen years ago where I would be and who I would have worked with I wouldn&#8217;t have been able to imagine all of this. It&#8217;s humbling and mind boggling all at the same time.</p>

<p>Today I am taking a leave of absence from <a href="http://ngmoco.com">ngmoco</a>. It&#8217;s been a great year and a half, but I feel like I&#8217;m at the point in my life where I need to take a personal break for a bit. I&#8217;ve been working hard for nearly sixteen years and I didn&#8217;t come to this decision lightly. I&#8217;m grateful that the company is willing to let me clear my head and stop the burn-out process, otherwise I feel like I risk losing what I love to do.</p>

<p>Almost three years ago <a href="http://danimal.org/blog/2008/09/22/fare-thee-well-dad/">I lost my dad</a> when he died very suddenly in the days following <a href="http://en.wikipedia.org/wiki/Hurricane_Ike">Hurricane Ike</a> ravaging Houston. He was only weeks away from turning 58 and from celebrating his 35th wedding anniversary. Fifty eight. That&#8217;s far too young for a person to be gone. Every week I wish he was still around for me to ask him a question or to share some cool thing with him. I often wonder if he had any regrets as he lay dying.</p>

<p>I don&#8217;t want any regrets.</p>

<p>I don&#8217;t want to wake up in the future and realize I didn&#8217;t take a chance on myself.</p>

<p>Right now that leads me to a career break. I&#8217;m going to take a couple of months off from anything but me and my wife and our life together. I want to lay in the grass with the sun on my face. Maybe I&#8217;ll see some <a href="http://www.calacademy.org/">exhibits</a> or visit a <a href="http://www.sfmoma.org/exhib_events/exhibitions/434">museum</a> or <a href="http://www.thecjm.org/">two</a>. I have a few ideas knocking around in my head and I&#8217;ll probably work on those, read a bunch, and reacquaint myself with <a href="http://www.guardian.co.uk/books/2003/jul/19/society">the art of the siesta</a>. These are all high on my list to clear out the mental cobwebs. I think I might even get around to playing <a href="http://www.thinkwithportals.com/">Portal 2</a>, finally.</p>

<p>This is all about reconnecting with myself, clearing my head, and seeing if I can find that fire inside again. I don&#8217;t know exactly where it will lead and that&#8217;s perfectly fine. As long as I can feel my heart beating to know I&#8217;m alive and be with the love of my life I&#8217;ll be just fine.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Time I Met Steve Jobs]]></title>
    <link href="http://danimal.org//blog/2011/08/24/the-time-i-met-steve-jobs/"/>
    <updated>2011-08-24T21:40:00-07:00</updated>
    <id>http://danimal.org//blog/2011/08/24/the-time-i-met-steve-jobs</id>
    <content type="html"><![CDATA[<p>Today <a href="http://www.apple.com/pr/library/2011/08/24Letter-from-Steve-Jobs.html">Steve Jobs resigned as the CEO of Apple</a>. I&#8217;m not surprised, it was bound to happen, but I think it came as a surprise to most.</p>

<p>I&#8217;ve seen a lot of people recount about Steve Jobs and the influence he had on them. That he&#8217;s been super influential is of no doubt.</p>

<p>I was fortunate enough to work at <a href="http://pixar.com">Pixar</a> for a time. I started right as the Disney acquisition was being finalized and Steve wasn&#8217;t around as much after the deal was finished. I did get to meet him briefly. I was on the second floor of the main building on the West side. I was heading into the restroom and nearly bumped into Steve on his way out.</p>

<p>I said, &#8220;Sorry Mr. Jobs.&#8221;</p>

<p>He gave me a little smile and said, &#8220;It&#8217;s Steve. Have a great day.&#8221; And off he went towards his office.</p>

<p>It made my day.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Merge From Tumblr]]></title>
    <link href="http://danimal.org//blog/2011/08/04/merge-from-tumblr/"/>
    <updated>2011-08-04T07:29:00-07:00</updated>
    <id>http://danimal.org//blog/2011/08/04/merge-from-tumblr</id>
    <content type="html"><![CDATA[<p>At some point I thought I&#8217;d have a stab at keeping a separate developer diary on Tumblr.
The thought of keeping two blogs going (not that I was posting often to <a href="http://dansdevdiary.tumblr.com">Dan&#8217;s Dev Diary</a>)
gave me pause.</p>

<p>I&#8217;ve pulled all the posts from <a href="http://dansdevdiary.tumblr.com">Dan&#8217;s Dev Diary</a> to here
and left them in chronological order. I&#8217;ll leave the tumblr blog up as long as Tumblr
sees fit to host it. From now on all posts will only be here.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Posting to Octopress From MarsEdit]]></title>
    <link href="http://danimal.org//blog/2011/07/31/posting-to-octopress-from-marsedit/"/>
    <updated>2011-07-31T19:41:00-07:00</updated>
    <id>http://danimal.org//blog/2011/07/31/posting-to-octopress-from-marsedit</id>
    <content type="html"><![CDATA[<p>I <a href="http://danimal.org/blog/2011/07/26/convert-and-start-again">recently switched</a> to <a href="http://octopress.org">Octopress</a> to start blogging again. Many are the varied reasons I switched, but the main one is that Octopress is that it&#8217;s a static blog.</p>

<p>When I had my <a href="http://wordpress.org/">WordPress</a> install I used <a href="http://www.red-sweater.com/marsedit/">MarsEdit</a> to write and post to my blog. It works via established calls to the database software. As Octopress is a static blog the software runs locally and generates all the pages before pushing them to the proper location on a server.</p>

<p>MarsEdit has basic support for another static blogging engine called <a href="http://www.blosxom.com/">Blosxom</a> (which is what this blog used back in 2003). Using the Blosxom support in MarsEdit I was able to write a script to take in the saved file, generate a new post, put the text from the saved file into the new post, optionally commit and push in the Octopress git repo, and then use the Octopress software to generate and deploy the new version of the blog.</p>

<p>It&#8217;s quick. It&#8217;s a bit dirty. But here it is for anyone to use. You can find the script on github as <a href="https://github.com/danimal/octomars">octomars</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Testing Octopress and MarsEdit Integration]]></title>
    <link href="http://danimal.org//blog/2011/07/31/testing-octopress-and-marsedit-integration/"/>
    <updated>2011-07-31T17:38:00-07:00</updated>
    <id>http://danimal.org//blog/2011/07/31/testing-octopress-and-marsedit-integration</id>
    <content type="html"><![CDATA[<p>I&#8217;m trying to get <a href="http://www.red-sweater.com/marsedit/">MarsEdit</a> to post to my <a href="http://octopress.org">Octopress</a> blog automatically. This is the first test post of my script to run via MarsEdit.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Convert and Start Again]]></title>
    <link href="http://danimal.org//blog/2011/07/26/convert-and-start-again/"/>
    <updated>2011-07-26T16:21:00-07:00</updated>
    <id>http://danimal.org//blog/2011/07/26/convert-and-start-again</id>
    <content type="html"><![CDATA[<p>I thought at first that I would just stop blogging all together, but that&#8217;s not to be.
I have things I want to get down and things I want to share. I&#8217;ve converted my old blog
from WordPress to <a href="http://octopress.org">OctoPress</a>. There are a lot of formatting issues
in the old posts and I&#8217;ll get to them and fix them as I can. Feel free to send me a note
if you find something.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[furbo.org · The Rise and Fall of the Independent Developer]]></title>
    <link href="http://danimal.org//blog/2011/07/13/furbo-org-The-Rise-and-Fall-of-the-Independent-Developer/"/>
    <updated>2011-07-13T00:00:00-07:00</updated>
    <id>http://danimal.org//blog/2011/07/13/furbo-org-The-Rise-and-Fall-of-the-Independent-Developer</id>
    <content type="html"><![CDATA[<p><a href="http://furbo.org/2011/07/13/the-rise-and-fall-of-the-independent-developer/">furbo.org · The Rise and Fall of the Independent Developer</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Further adventures in resigning for iOS]]></title>
    <link href="http://danimal.org//blog/2011/02/12/Further-adventures-in-resigning-for-iOS/"/>
    <updated>2011-02-12T12:21:00-08:00</updated>
    <id>http://danimal.org//blog/2011/02/12/Further-adventures-in-resigning-for-iOS</id>
    <content type="html"><![CDATA[<p>In the beginning days of iOS development, before the official SDK
release, <a href="http://furbo.org/">Craig Hockenberry</a> (<a href="http://twitter.com/chockenberry">@chockenberry</a>) helped everyone out
by figuring out app resigning. He has the <a href="http://furbo.org/2008/11/12/the-final-test/">seminal post</a> on app
resigning. I learned what I needed from it. Craig is the giant on whose
shoulders I’ve stood.</p>

<p>I work at a large iOS game studio. Due to restrictions and device limits
on the Apple Dev Portal we have to create many versions of each build
that is generated so that we can make sure it can run on any device we
have. As I have developed a custom resigning system I’ve learned a few
things that help in addition to Craig’s post.</p>

<p>First, every iOS app bundle has the profile it was signed with when
built in Xcode embedded in it. This causes no end of issues with
resigning because you can’t just drop the freshly resigned app bundle
onto a device unless you first have the resigned profile already
installed. Why is that? If you ever watch the steps of app install
you’ll see at some point it copies the embedded profile from the app
bundle to the device. After that it does the codesign comparison to see
if the executable is allowed to run on the device (which is why when you
install an app with invalid permissions it copies the whole thing to the
device and then errors out telling you there are not sufficient
permissions). When you have an app bundle that contains an embedded
profile that matches its signing everything is copacetic will install
smoothy, assuming the device is on the provisioning profile.</p>

<p>At my day-job we combatted this problem by educating users to always
install the provisioning profile and app bundle at the same time, they
are distributed together for just this reason. This of course leads to
problems down the road when a device has multiple copies of a profile
and one expires, but that’s a story for another day. Not being able to
allow users to just install an app bundle without a provisioning profile
on resigned builds didn’t make much sense to me, especially in light of
buiding IPA bundles for over the air distribution, so I dug in a bit
more. It turns out there’s a solution staring you right in the face in
your Xcode build logs.</p>

<p>Remember how I said there’s an embedded profile for each app bundle?
Well, you just need to copy your resigning provisioning profile into the
app bundle:</p>

<pre><code>% cd $SRCROOT/build/Debug-iphoneos
% cp AltDevPortal.mobileprovision SomeApp.app/embedded.mobileprovision
</code></pre>

<p>Okay, now you’ve got that in the app bundle you need to tell <code>codesign</code>
about it:</p>

<pre><code>% export EMBEDDED_PROFILE_NAME=embedded.mobileprovision
</code></pre>

<p>And, using Master Hockenberry’s steps from his post we get this as the
entire set of steps to successfully resign an iOS app bundle:</p>

<pre><code>% cd $SRCROOT/build/Debug-iphoneos
% cp AltDevPortal.mobileprovision SomeApp.app/embedded.mobileprovision
% export EMBEDDED_PROFILE_NAME=embedded.mobileprovision
% export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
% codesign -f -vv -s "iPhone Developer" SomeApp.app
</code></pre>

<p>Do note that if you’re working like me and you have more than one portal
at your command and far more than a handful of profiles (say over 100)
then you’ll want to be more explicit with the <code>codesign</code> tool. I use the
command like so:</p>

<pre><code>% codesign -f -vv -s "iPhone Developer: Build User (XXXXXXXX)" -i &lt;profile name&gt; SomeApp.app
</code></pre>

<p>The profile name used is generally the UUID of the profile. If you look
in \~/Library/MobileDevice/Provisioning\ Profiles you’ll see the files
are moved to the UUID name when installed by Xcode. You can manually
copy a file in there, say SomeApp.mobileprovision, and then use
<code>-i SomeApp</code> in your call to <code>codesign</code>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[…and then went Polly]]></title>
    <link href="http://danimal.org//blog/2010/12/08/%E2%80%A6and-then-went-polly/"/>
    <updated>2010-12-08T11:22:34-08:00</updated>
    <id>http://danimal.org//blog/2010/12/08/…and-then-went-polly</id>
    <content type="html"><![CDATA[<p>Seven months ago I had to
<a href="http://danimal.org/SenorTaco/2010/06/04/yoseph/">say goodbye to Yoseph</a>.
At the time I told my wife that I thought Polly, who was raised as
a kitten with Yoseph, would be gone in a year.</p>

<p><a href="http://www.flickr.com/photos/senortaco/5244740222/" title="Polly by Señor Danimal, on Flickr"><img src="http://farm6.static.flickr.com/5006/5244740222_dba2b5bd77.jpg" alt="Polly" /></a></p>

<p>This last Sunday I had to make a much harder decision than with
Yoseph. We had to put Polly to sleep. Over the last year she&#8217;s been
slowly losing weight. Recently she was not eating as much and had
been throwing up blood on occasion. She wasn&#8217;t as bad off as Yoseph
who had been taking medicine for two years. The decision was made
all the harder because of my history with Polly. She was orphaned
at three days old. I would go over to my friend&#8217;s house and help
her feed Polly and her siblings with an eye dropper at first and
then a bottle later. Polly was very attached to me and usually
shunned other people at first. My wife was the first women that
Polly curled up with on first meeting her. That was a good start
even though they would go on to have a slightly rocky relationship
later.</p>

<p>It&#8217;s been three days and I still miss her terribly. I just hope
that if there is a kitty after-life she and Yoseph are laying a
sunbeam and happy.</p>

<p>&nbsp;</p>
]]></content>
  </entry>
  
</feed>

