<?xml version="1.0" encoding="utf-8"?><!--generator="snapluxBlog/0.1"-->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>hanfordlemoore.com | blog</title>
	<link>http://hanfordlemoore.com</link>
	<description>User interface design, game design, game programming, and assorted miscellany</description>
	<lastBuildDate>Thu, 02 Sep 2010 16:04:49 +0000</lastBuildDate> 
	<generator>http://hanfordlemoore.com</generator>
	<language>en</language>

	<item>
		<title>"Soon Obsolete" sign</title>
		<link>http://hanfordlemoore.com/v/soon-obsolete-sign</link>
		<comments>http://hanfordlemoore.com/v/soon-obsolete-sign#comments</comments>
		<pubDate>2010-07-27 19:09:21</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/444</guid>
		<description><![CDATA[Found on a fence in the Mission District: 

 ... [<a href="http://hanfordlemoore.com/v/soon-obsolete-sign">more</a>]]]></description>
		<content:encoded><![CDATA[Found on a fence in the Mission District: 

<img src="http://images.hanfordlemoore.com/soon-obsolete.jpg" alt="soon obsolete" title="soon obsolete"/>]]></content:encoded>
	</item>
	<item>
		<title>Happy Birthday Amiga!</title>
		<link>http://hanfordlemoore.com/v/happy-birthday-amiga</link>
		<comments>http://hanfordlemoore.com/v/happy-birthday-amiga#comments</comments>
		<pubDate>2010-07-23 15:09:55</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/443</guid>
		<description><![CDATA[According to Engadget,  ... [<a href="http://hanfordlemoore.com/v/happy-birthday-amiga">more</a>]]]></description>
		<content:encoded><![CDATA[<img src="http://images.hanfordlemoore.com/amiga-logo.jpg" alt="Amiga Logo" title="Amiga Logo" hspace="3" align="left"/>According to Engadget, <a href="http://www.engadget.com/2010/07/23/commodore-amiga-celebrates-its-25th-birthday-andy-warhol-still/">today is the 25th anniversary</a> of the <a href="http://en.wikipedia.org/wiki/Amiga_computer">Amiga computer</a>.  I was a HUGE Amiga user back in the day. It's responsible for my entry into video game development -- I played all the LucasArts games on the Amiga, and used my skills with the Amiga to eventually get a job at LucasArts as a technical artist.  I also was a team member on Deluxe Paint V, and even did the box cover for it! 

Here's my two remaining Amiga computers, gathering dust in a corner of the Monolux compound: 

<img src="http://images.hanfordlemoore.com/happy-birthday-amiga.jpg" alt="Happy Birthday Amiga!" title="Happy Birthday Amiga!"/>


That's an Amiga 3000, upside down and backwards, in the middle. Below it is the Amiga 4000, and some Amiga keyboards at the very top.  

Incidentally, The Oreo cookies to the Amiga's cream in the photo are two <a href="http://en.wikipedia.org/wiki/Replaytv">ReplayTV DVRs</a>, which I the product designer for. Some of the graphics and Color Look Up Tables for ReplayTV were built using the Amiga, but eventually I transitioned off of Deluxe Paint and onto Photoshop. 

Ah, good times. Congrats to the Amiga team in creating something that changed a lot of lives, including mine.]]></content:encoded>
	</item>
	<item>
		<title>How I rate music with iTunes</title>
		<link>http://hanfordlemoore.com/v/my-itunes-music-rating-system</link>
		<comments>http://hanfordlemoore.com/v/my-itunes-music-rating-system#comments</comments>
		<pubDate>2010-07-10 12:05:05</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/442</guid>
		<description><![CDATA[Any friend who share musical tastes with me (and there aren't many!) knows I have a really weird rating system for my music. One that needs to be explained. Here's what it is: 

 ... [<a href="http://hanfordlemoore.com/v/my-itunes-music-rating-system">more</a>]]]></description>
		<content:encoded><![CDATA[Any friend who share musical tastes with me (and there aren't many!) knows I have a really weird rating system for my music. One that needs to be explained. Here's what it is: 

<img src="http://images.hanfordlemoore.com/itunes-ratings-002.jpg" alt="5 stars: Amazing; 4 stars: Great; 3 stars: Good; 2 stars: Above average; 1 star: Horrible; 0 stars: Average" title="5 stars: Amazing; 4 stars: Great; 3 stars: Good; 2 stars: Above average; 1 star: Horrible; 0 stars: Average"/>


So it looks pretty standard until you get to 1 star vs 0 stars. They're reversed. When I first tell people that's my system they think I'm insane. 

But ... it is Apple who is insane. 

<h3>Why my ratings system works this way</h3>

I do a lot of random/shuffled playback. I don't like spending time managing music, building playlists, and searching my catalog. I just really want to listen to it with as little clicks as possible, and shuffle and smart playlists let me do that.  

But iTunes has a problem. when I imported my music library, all my songs were set to 0 stars with no apparent way to change them other than rating song one at a time.  <b>One at a time</b>.  

Now, on top of this, I have a lot of music that I don't want to hear on regularly, if at all. They're novelty songs that are fun on rare occasions.  Or they're themed (read: Xmas) music that I don't want randomly popping up throughout the year. And sometimes they're just songs I hate and never want to hear again*.   I'd like to keep these songs from every being picked randomly by a smart playlist.

Ideally, these songs would be rated the lowest in a scale of zero to five, and I could create a smart playlist that says "play songs rated 1 through 5" and I'd get everything but the ones I've tagged with zero. 

But, in the real world of iTunes, this means I'm back to square one: stuck with rating every single song which is NOT a zero individually. I'd have to rate hundreds of songs -- one at a time -- just to get a <i>little</i> bit of variety in a random shuffle.  It would take forever to get a sizable amount of songs rated that would provide hours of variation. 

<h3>My solution</h3>
I thought this was all very nearsighted of Apple.  

All I wanted was to be able to play my library on random and rate the occasional bad song as "never play again", and rate the occasional Good, Great, and Awesome songs as such.  

Then I realized I could do this with a smart playlist that looks like this: 

<img src="http://images.hanfordlemoore.com/itunes-smart-playlist-dialog.jpg" alt="Match the following: Rating Is Not One Star" title="Match the following: Rating Is Not One Star"/>


This smart playlist will play songs rated 0, 2, 3, 4, 5. Everything but one star.  if I treat zero stars as average it means that my entire collection is by-default rated as an average tune! I don't need to do a thing to the vast majority of my music. rating a song one star is essentially tagging it as "never, ever be chosen automatically again."

This means that in an average hour of listening to iTunes, I switch to it to rate a song perhaps 4 times an hour. Of course, this number drops as I get more and more of my library rated.  

Contrast this with zero stars meaning "never play automatically": it would mean that nearly every song (3 to 4 minutes) I'd have to hop back into iTunes to rate the song as "Average" or above. ** 

<h3>Summary</h3>
I was originally going to write up a whole User Experience summary here, bringing up all the design rules Apple missed with this one.  But, it should be obvious to you by now: Apple severely cripples the rating experience without allowing batch rating.  I'm now stuck with this hack of a system.   

At least it works. ***


<h4>Footnotes</h4>
<span class="footnote">* Yeah, I could delete them, but there does not seem to be an easy way to do this in iTunes. And it still wouldn't take care of the other cases.

** Not to mention the fact that this wouldn't actually work.  If zero stars means "never play again", and by default all my music is rated zero stars, I'd be stuck with using a play-anything playlist that would continue to randomly serve up songs I've played and left at zero. The only solution would be a smart playlist that allows zero-star songs a few trial plays before rejecting them: 

<img src="http://images.hanfordlemoore.com/itunes-optional.jpg" alt="itunes optional" title="itunes optional"/>


But that's less than ideal: you have to listen to bad songs a few times before iTunes stops playing them, and you have to be incredibly deligent at rating your entire collection whenever they play or risk an accidentally unrated song drop off the playcount threshhold. Changing the threshold trades one disadvantage off for the other. 

*** For a few versions of iTunes the smart playlist editor UI was broken and it was impossible to create any smart playlist that chose music based around star rating. Luckily I had created my  solution before the bug showed up, and it didn't keep my original playlists from operating. It's fixed again in the version I'm using.  

**** My "I hold Apple -- as an industry leader -- to a higher standard" rant applies here. 
</span> ]]></content:encoded>
	</item>
	<item>
		<title>Unity: Insert Parent Script</title>
		<link>http://hanfordlemoore.com/v/unity-insert-parent-script</link>
		<comments>http://hanfordlemoore.com/v/unity-insert-parent-script#comments</comments>
		<pubDate>2010-06-26 17:54:02</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/440</guid>
		<description><![CDATA[Here's a unity script I modified from the Unify Wiki. it groups selected game objects together.  My modification does a few extra things: 

1. The newly created parent GO's position is set to the position of the first selected GO. This makes the pa ... [<a href="http://hanfordlemoore.com/v/unity-insert-parent-script">more</a>]]]></description>
		<content:encoded><![CDATA[Here's a unity script I modified from the Unify Wiki. it groups selected game objects together.  My modification does a few extra things: 

1. The newly created parent GO's position is set to the position of the first selected GO. This makes the parent's transform controls appear closer to the group than if it was at 0,0,0. It also got rid of a bug I was seeing where grouped objects would flicker like mad as you approached them if it's parent transform was a zillion miles away from them. 

2. The new parent GO is renamed to match the first object in the selection. This should make it easier to find in the Hierarchy, since it won't jump around as much.

3. The new parent GO is set as the active selection.  Again, to make it easier to find.

I didn't add it back to the Wiki because, well, I wasn't 1005 sure I wrote all this code correctly. Let me know if you find any problems. 

<pre>
using UnityEngine;
using UnityEditor;
using System.Collections;
// HL: Mar11, 2009: I took this from the Unity Wiki. I made some changes so that
// 1. The newly created parent GO's position is set to the position of the first selected GO. this should solve the flicker bug I ran into.
// 2. The new parent GO is renamed to match the first object in the selection. This should make it easier to find in the Hierarchy.
// 3. The new parent GO is set as the active selection. 

public class InsertParent : ScriptableObject
{
    [MenuItem ("GameObject/Insert Parent %g")]
    static void MenuInsertParent()
    {
		Debug.Log("trigger!"); 
		Transform[] transforms = Selection.GetTransforms(SelectionMode.TopLevel |
            SelectionMode.OnlyUserModifiable);

        GameObject newParent = new GameObject("_Parent");
        Transform newParentTransform = newParent.transform;
		
		// HL:  experimental code, positions game object at location of first selected item:
		newParentTransform.position = transforms[0].position;  
		newParentTransform.name = transforms[0].name + " set"; // rename it so it ends up in roughly same location in the list.  
		//--AA-- End HL code. 
        if(transforms.Length == 1)
        {
            Transform originalParent = transforms[0].parent;
            transforms[0].parent = newParentTransform;
            if(originalParent)
                newParentTransform.parent = originalParent;
        }
        else
        {
            foreach(Transform transform in transforms)
                transform.parent = newParentTransform;
        }
    
	Selection.activeObject = newParent; 	 /// HL: sets the new parent GO to be the actively selected item in the UI.
	}
}</pre>]]></content:encoded>
	</item>
	<item>
		<title>Secrets behind the Tiki Crawl 9 website</title>
		<link>http://hanfordlemoore.com/v/secrets-behind-tiki-crawl-9</link>
		<comments>http://hanfordlemoore.com/v/secrets-behind-tiki-crawl-9#comments</comments>
		<pubDate>2010-06-01 15:12:10</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/438</guid>
		<description><![CDATA[For the last nine years, I've hosted a public event known as the San Francisco Tiki Bar Crawl. Last year I did a new logo for it. Here it is, shrunk down: 

 ... [<a href="http://hanfordlemoore.com/v/secrets-behind-tiki-crawl-9">more</a>]]]></description>
		<content:encoded><![CDATA[For the last nine years, I've hosted a public event known as the <a href="http://tikicrawl.com"><b>San Francisco Tiki Bar Crawl</b></a>. Last year I did a new logo for it. Here it is, shrunk down: 

<a href="http://images.hanfordlemoore.com/tiki-crawl-annotated-full.jpg"><img src="http://images.hanfordlemoore.com/tikib-ar-crawl-9-logo.jpg" alt="tikib ar crawl 9 logo" title="tikib ar crawl 9 logo"/></a>


I haven't looked at the crawl's website in a while, but when checking it out a huge smile came to my face as I remembered the specifics of drawing it. Here's the lowdown on the city-in-silhouette at the top of the page. 

The skyline is rendered from the perspective of someone (with fish-eyes) sitting across the Golden Gate Bridge, looking back on the land so that the East Bay is to our left with San Francisco in the middle, as the Peninsula stretches off to the camera's right. 

Here's the left side. 

<a href="http://images.hanfordlemoore.com/tiki-crawl-annotated-full.jpg"><img src="http://images.hanfordlemoore.com/tiki-crawl-left.jpg"/></a>


We start off in the Oakland hills, home to two of our crawl stops: Conga Lounge and Kona Club. Emeryville's waterside Trader Vic's  is represented an exaggerated A-frame silhouette even though the real building looks nothing like it. 

I made sure that  Alameda, which is an island off the edge of Oakland, got it's own spot on the map, since it's home to Forbidden Island.  How many towers does the Bay Bridge have? I don't know, but I knew that anything more than two would scream "not the Golden Gate" to people who know the area. 

Here's the second part:

<a href="http://images.hanfordlemoore.com/tiki-crawl-annotated-full.jpg"><img src="http://images.hanfordlemoore.com/tiki-crawl-right.jpg"/></a>


As we head right, we leave San Francisco and travel down the tree-lined coast that 280 follows, inevitably ending up in the South Bay.  Palo Alto is home to the South Bay Trader Vic's, and is represented by an exceptionally large tree; based on the <a href="http://en.wikipedia.org/wiki/El_Palo_Alto">mighty Redwood the city is named for<a/>.  We finish off the image in San Jose, where two of our stops -- Top Notch Customz and Smoke Tiki reside. 

Here's the <a href="http://images.hanfordlemoore.com/tiki-crawl-annotated-full.jpg">full size annotated image</a>. 

]]></content:encoded>
	</item>
	<item>
		<title>Graphics from my now-defunct 2D RPG-adventure game </title>
		<link>http://hanfordlemoore.com/v/2d-adventure-game-graphics</link>
		<comments>http://hanfordlemoore.com/v/2d-adventure-game-graphics#comments</comments>
		<pubDate>2010-05-11 22:40:16</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/437</guid>
		<description><![CDATA[Here's some old graphics for my first real attempt at building my long-fabled RPG, code-named RLOA. This was a 2d game, designed to be played with a mouse on a PC or Mac ... [<a href="http://hanfordlemoore.com/v/2d-adventure-game-graphics">more</a>]]]></description>
		<content:encoded><![CDATA[<img src="http://images.hanfordlemoore.com/rloa-008.jpg" align="left"hspace="5"/>Here's some old graphics for my first real attempt at building my long-fabled RPG, code-named RLOA. This was a 2d game, designed to be played with a mouse on a PC or Mac.  It was surprisingly far along, but also still quite far from being finished. I did all the art and programming for the game. It was started in 2006, and it looks like I stopped working on it in 2008. 

<img src="http://images.hanfordlemoore.com/rloa.jpg" alt="rloa" title="rloa"/>
<br>The game has a full conversation engine in it, and you could talk to that old man.<br><br>
<img src="http://images.hanfordlemoore.com/rloa-001.jpg" alt="rloa" title="rloa"/>
<br>Some sort of temple, with a purple barrel hidden in the trees.

I wrote the engine to support tiles, but support <i>many</i> tiles overlapping, to be able to build up layers. Tiles could not only be multi-layered, but also be offset on a pixel-by-pixel basis. For example, the moss you see in the cracks in the image above is a separate image that is hand-placed, scaled, and rotated. Same with the bricks in the walls. Ron Gilbert told me this was "colorform style", nicknamed the <a href="http://en.wikipedia.org/wiki/Colorforms">famous kid's toy</a>. 
<br><br>
<img src="http://images.hanfordlemoore.com/rloa-003.jpg" alt="rloa" title="rloa"/>
<br>Some mushroom fruity things, and a giant life-giving energy spring.<br><br>

<img src="http://images.hanfordlemoore.com/rloa-004.jpg" alt="rloa" title="rloa"/>
<br>Some alternate rockwork.<br><br>

<img src="http://images.hanfordlemoore.com/rloa-005.jpg" alt="rloa" title="rloa"/>
<br>Jules Verne slept here.<br><br>

<img src="http://images.hanfordlemoore.com/rloa-006.jpg" alt="rloa" title="rloa"/>
<br>Entry into some other kind of temple. 

Notice at this point I hadn't gotten around to doing proper art for doors. They all looked like this. I could actually tint any of the tiles individually as I laid them down, so this made reusing tiles quite easy. Most all the architecture tiles were done with a standard color (known as "the blue") so that they could all be used interchangeably if needed. <br><br>

<img src="http://images.hanfordlemoore.com/rloa-007.jpg" alt="rloa" title="rloa"/>
<br>A placeholder guru guy hanging out under some nice vegetation. <br><br>

<img src="http://images.hanfordlemoore.com/rloa-002.jpg" alt="rloa" title="rloa"/>
<br>Crystal caves. Exciting.]]></content:encoded>
	</item>
	<item>
		<title>Sketchbook: Building Sketch</title>
		<link>http://hanfordlemoore.com/v/sketchbook-building-sketch</link>
		<comments>http://hanfordlemoore.com/v/sketchbook-building-sketch#comments</comments>
		<pubDate>2010-04-29 21:00:58</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/434</guid>
		<description><![CDATA[

I'm going to try to post more photos and sketches on this blog. Not necessarily my best work, but just thing ... [<a href="http://hanfordlemoore.com/v/sketchbook-building-sketch">more</a>]]]></description>
		<content:encoded><![CDATA[<img src="http://images.hanfordlemoore.com/uncanyon-building-sketch.jpg" alt="Uncanyon building sketch" title="Uncanyon building sketch"/>

I'm going to try to post more photos and sketches on this blog. Not necessarily my best work, but just things I find or draw that interest me. 

This is a pen sketch I came across in my sketchbook. Not my favorite piece but I thought it was working going through the process to blog it. ]]></content:encoded>
	</item>
	<item>
		<title>LEGO robot and LEGO zombie</title>
		<link>http://hanfordlemoore.com/v/lego-robot-and-lego-zombie</link>
		<comments>http://hanfordlemoore.com/v/lego-robot-and-lego-zombie#comments</comments>
		<pubDate>2010-04-27 15:38:20</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/432</guid>
		<description><![CDATA[

These are my two favorite new minifigs  from a very cool Minifig collection  that LEGO has released. I ... [<a href="http://hanfordlemoore.com/v/lego-robot-and-lego-zombie">more</a>]]]></description>
		<content:encoded><![CDATA[<img src="http://images.hanfordlemoore.com/lego-robot-and-lego-zombie.jpg" alt="Lego robot and lego zombie" title="Lego robot and lego zombie"/>

These are my two favorite new minifigs  from a very cool Minifig collection  that LEGO has released. I'm not 100% sure but I think these are like blind boxes. I can't actually find them for purchase on the LEGO site yet (it appears as though the nav bar has a blank spot where "purchase" is going to appear)

Check it out on the <a href="http://minifigures.lego.com">Minifigures site</a>. ]]></content:encoded>
	</item>
	<item>
		<title>Photoshop CS3 and money security</title>
		<link>http://hanfordlemoore.com/v/photoshop-cs3-and-money-security</link>
		<comments>http://hanfordlemoore.com/v/photoshop-cs3-and-money-security#comments</comments>
		<pubDate>2010-04-21 22:22:43</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/431</guid>
		<description><![CDATA[I wanted to zoom in on the new 100 dollar bill the US launched today, so I copied and pasted it into Photoshop. Photoshop warned me that I wouldn't be able to print it! I knew Photoshop has had this kind of detec ... [<a href="http://hanfordlemoore.com/v/photoshop-cs3-and-money-security">more</a>]]]></description>
		<content:encoded><![CDATA[I wanted to zoom in on the new <a href="http://www.newmoney.gov">100 dollar bill the US launched today</a>, so I copied and pasted it into Photoshop. Photoshop warned me that I wouldn't be able to print it! I knew Photoshop has had this kind of detection in it for a while, but I didn't think it would apply to low-res jpegs of the money from various blogs and whatnot. 

While my intent was never to print it (just look at it with the magnifying glass) I decided to see what Photoshop would do if I tried to print it. I pasted into another document I was working on and hit print. Here's what happened: 
 
<img src="http://images.hanfordlemoore.com/money-security.jpg" alt="money security" title="money security"/>

It printed fine until it got to the very bottom of the bill, then it killed the rest of the print job and replaced it with a URL to rulesforuse.org.  

Rulesforuse.org (no I'm not going to link directly to it here) has some info about reproduction, but also a bunch of broken links.  It sent me to a 404 when I tried to click on Reproduction Rules for US money. Nice. 

NOTE: Like I said above, I originally was not going to print it. I only tried to after Photoshop warned me I wouldn't be able to. I'm assuming then that the partial document Photoshop <i>did</i> was a legal-to-reproduce portion of the money. I'm assuming I didn't break any laws here. If I did -- I blame Photoshop. And I shredded the printout. Hold on, someone's at my door ... 

]]></content:encoded>
	</item>
	<item>
		<title>I want a pod car daddy!</title>
		<link>http://hanfordlemoore.com/v/i-want-a-pod-car-daddy</link>
		<comments>http://hanfordlemoore.com/v/i-want-a-pod-car-daddy#comments</comments>
		<pubDate>2010-03-24 14:29:16</pubDate>
		<dc:creator>Hanford Lemoore</dc:creator>
		<guid isPermaLink="true">http://hanfordlemoore.com/v/426</guid>
		<description><![CDATA[ ... [<a href="http://hanfordlemoore.com/v/i-want-a-pod-car-daddy">more</a>]]]></description>
		<content:encoded><![CDATA[<a href="http://www.wired.com/autopia/2010/03/general-motors-en-v/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+wired%2Findex+(Wired%3A+Index+3+(Top+Stories+2))&utm_content=Google+Reader"><img src="http://images.hanfordlemoore.com/gm-pod-car.jpg" alt="GM Pod Car" title="GM Pod Car"/></a>

[via <a href="http://www.wired.com/autopia/2010/03/general-motors-en-v/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+wired%2Findex+(Wired%3A+Index+3+(Top+Stories+2))&utm_content=Google+Reader">wired</a>]]]></content:encoded>
	</item>
</channel>
</rss>

