<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0"><channel><title>Chris Forrette - Blog</title><link>http://www.chrisforrette.com</link><description>Chris Forrette blog feed</description><item><author>Chris Forrette</author><title>Not Dead</title><link>http://www.chrisforrette.com/2009/07/22/not-dead</link><description>&lt;p&gt;It&#039;s been an awfully long time since I&#039;ve posted anything here and I want to update you and let you know I&#039;m not dead (I know you were wondering about that...) and that I have a few plans for moving things around on here. First, I&#039;ve been posting more and more to &lt;a title=&quot;Chris Forrette&quot; href=&quot;http://chrisforrette.tumblr.com/&quot; target=&quot;_blank&quot;&gt;my Tumblr&lt;/a&gt; page and I also freshened up the design a bit, so I&#039;m thinking of porting that design over to here. I also want to move this site into &lt;a title=&quot;Django&quot; href=&quot;http://www.djangoproject.com&quot; target=&quot;_blank&quot;&gt;Django&lt;/a&gt;, so that I can experiment and learn with it. Finally, I want to break out my blog into a code/nerd division and a &#039;life&#039; division &amp;ndash; the former being the stuff posted here and the latter coming from a feed from my Tumblr, though I haven&#039;t decided on the best way to do this. The reason being that I don&#039;t think anyone cares about posts about my dogs, the places I eat, etc. except maybe some of my friends, so I&#039;m hoping to banish stuff like that to my Tumblr account and keep this place &quot;strictly business&quot; so-to-speak. Sound good? I hope so. And if you have any experience setting up a code blog or you have any awesome method of integrating syntax higlighting or demos, please let me know!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/07/22/not-dead#comments</comments><pubDate>Wed, 22 Jul 2009 17:47:00 -0700</pubDate><guid>http://www.chrisforrette.com/2009/07/22/not-dead</guid></item>
<item><author>Chris Forrette</author><title>The Bandwagon</title><link>http://www.chrisforrette.com/2009/04/09/the-bandwagon</link><description>&lt;p&gt;I&#039;ve always been a late adopter of new, cool stuff and, as a web developer, it&#039;s not a good habit to have. For example, I was late in getting into each and every social network including MySpace, Facebook, Twitter, you name it. It&#039;s in my nature to avoid the hype I suppose. I decided recently that anything new that I see, I&#039;m going to sign up for it. Or at least seriously consider it. I have to keep in the now, stay hip with the kids, stay open-minded. And for my job, I never know when someone is going to come along and ask if we&#039;ve done any work with (insert over-hyped new company here)&#039;s API or whatever.&lt;/p&gt;
&lt;p&gt;I have two recent adoptions into my repertoire: &lt;a title=&quot;Posterous - The place to post everything. Just email us. Dead simple blog by email.&quot; href=&quot;http://www.posterous.com/&quot; target=&quot;_blank&quot;&gt;Posterous&lt;/a&gt; and &lt;a title=&quot;Tumblr&quot; href=&quot;http://www.tumblr.com/&quot; target=&quot;_blank&quot;&gt;Tumblr&lt;/a&gt;. If you&#039;re unfamiliar, they&#039;re both &lt;a title=&quot;Tumblelog - Wikipedia, the free encyclopedia&quot; href=&quot;http://en.wikipedia.org/wiki/Tumblelog&quot; target=&quot;_blank&quot;&gt;Tumblelog&lt;/a&gt; or &lt;a title=&quot;Micro-blogging - Wikipedia, the free encyclopedia&quot; href=&quot;http://en.wikipedia.org/wiki/Micro-blogging&quot; target=&quot;_blank&quot;&gt;Micro-Blogging&lt;/a&gt; platforms, A.K.A. blogs for the A.D.D.-impaired, A.K.A. everyone using the internet. Both have some great features and I think the beauty of them (and perhaps the format in general) is the simplicity of it all: simple to imbibe and simple to use.&lt;/p&gt;
&lt;p&gt;We&#039;ve been using Posterous as a blogging platform over at &lt;a title=&quot;Cuban Council - Keeping It Real Wooden&quot; href=&quot;http://blog.cubancouncil.com/&quot; target=&quot;_blank&quot;&gt;Cuban Council&lt;/a&gt; and it&#039;s been really great to use. Normally getting everyone to contribute to a company blog would be difficult, but a good chunk of us have been adding regularly, probably due to its ease of use. You don&#039;t even need an account to post anything. If your email is added to the list of contributors then you&#039;re set. You send an email to post@myaccount.posterous.com (simple to remember) using the subject as a title and the body as the post content, including images and other media attachments that are parsed into a blog post on your Posterous site.&lt;/p&gt;
&lt;p&gt;I&#039;ve also made a &lt;a title=&quot;Chris Forrette&quot; href=&quot;http://chrisforrette.tumblr.com/&quot; target=&quot;_blank&quot;&gt;personal Tumblr blog&lt;/a&gt; and of the two, I think Tumblr really takes the cake. Posting is easy in either one, but with Tumblr you &lt;a title=&quot;Creating a custom HTML theme | Tumblr&quot; href=&quot;http://www.tumblr.com/docs/custom_themes&quot; target=&quot;_blank&quot;&gt;can completely customize your site design&lt;/a&gt; using HTML, CSS, Javascript, etc., with a very simple template syntax to display your Tumblr post contents. On Posterous you&#039;re stuck with the generic site-wide &quot;sticky note&quot; styling. One of the features of Tumblr that blew me away is that you can post audio to your blog directly from your phone! You set your phone number in your account, along with a pin number, you call the Tumblr number, enter your pin, it records your voice, and blam! It&#039;s on your blog! There are only a couple of slight pitfalls in my mind: first, the post email is a random key (e.g. ti7kwn44@tumblr.com) so it&#039;s not so easy to remember, and second, there&#039;s no built-in commenting system. The latter, however, is remedied by &lt;a title=&quot;API | Tumblr&quot; href=&quot;http://www.tumblr.com/docs/api&quot; target=&quot;_blank&quot;&gt;an API&lt;/a&gt; with which you can use a plugin to allow commenting.&lt;/p&gt;
&lt;p&gt;To continue my bandwagon bonanza, I&#039;ve finally started off into the world of &lt;a title=&quot;jQuery: The Write Less, Do More, JavaScript Library&quot; href=&quot;http://www.jquery.com/&quot; target=&quot;_blank&quot;&gt;jQuery&lt;/a&gt;! Alright settle down, I know that was huge. I&#039;ve been a big &lt;a title=&quot;MooTools - a compact javascript framework&quot; href=&quot;http://www.mootools.net/&quot; target=&quot;_blank&quot;&gt;MooTools&lt;/a&gt; guy for the longest time and I haven&#039;t purposely avoided jQuery, I just haven&#039;t needed to use it (much). Again, with my job I should have a decent grasp on the various Javascript frameworks out there so, with jQuery being the biggest one these days, I finally dove into the tutorials tonight and I&#039;m actually pretty excited about it. I&#039;ve used jQuery before &amp;mdash; or a better way to describe it: stumbled around jQuery before &amp;mdash; but looking through &lt;a title=&quot;Tutorials:Getting Started with jQuery - jQuery JavaScript Library&quot; href=&quot;http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery&quot; target=&quot;_blank&quot;&gt;the tutorials&lt;/a&gt; gave me a good basic understanding that I was missing before and introduced a feature to me that I think is awesome: &lt;a title=&quot;Events/live - jQuery JavaScript Library&quot; href=&quot;http://docs.jquery.com/Events/live#typefn&quot; target=&quot;_blank&quot;&gt;Live Events&lt;/a&gt;! I remember hearing about this feature but I never quite understood it until I put it into practice. I realize I&#039;m aeons behind on this, but if you&#039;re interested in Javascript and you don&#039;t know what live events are, I&#039;ll explain why it&#039;s so cool. I&#039;ve had situations before where I&#039;ll load HTML content into a div via AJAX, and I need some Javascript events to apply to some elements in my newly added code. Let&#039;s say I want all my links to log their &#039;href&#039; value into the Firebug console when clicked (MooTools style):&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;a&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;addEvent&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;click&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;entity entity_name entity_name_type entity_name_type_object entity_name_type_object_js entity_name_type_object_js_firebug&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;support support_function support_function_js support_function_js_firebug&quot;&gt;.log&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;support support_constant support_constant_dom support_constant_dom_js&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;or jQuery style:&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;a&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;support support_function support_function_dom support_function_dom_js&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;entity entity_name entity_name_type entity_name_type_object entity_name_type_object_js entity_name_type_object_js_firebug&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;support support_function support_function_js support_function_js_firebug&quot;&gt;.log&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;attr&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;href&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;With MooTools, I would have included some inline Javascript with my loaded HTML, duplicating the code above to take care of it, and turned on the evalScripts option like so:&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;var&lt;/span&gt; oRequest &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;meta meta_class meta_class_instance meta_class_instance_constructor&quot;&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_new keyword_operator_new_js&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;entity entity_name entity_name_type entity_name_type_instance entity_name_type_instance_js&quot;&gt;Request.HTML&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    update: &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;put-html-in-me&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;,&lt;/span&gt;
    url: &lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;/some/url/&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;,&lt;/span&gt;
    evalScripts: &lt;span class=&quot;constant constant_language constant_language_boolean constant_language_boolean_true constant_language_boolean_true_js&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Two things suck about this: it&#039;s redudant because I&#039;m applying the same events to the same type of objects using two different sets of the same code, and it&#039;s using something with the word &lt;code&gt;eval&lt;/code&gt; in it, which makes me pee my pants a little. So jQuery live events takes care of this by using whatever selectors you want and applying the events to the all DOM elements as they are added:&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;a&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;live&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;click&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;entity entity_name entity_name_type entity_name_type_object entity_name_type_object_js entity_name_type_object_js_firebug&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;support support_function support_function_js support_function_js_firebug&quot;&gt;.log&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;attr&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;href&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;This means that any &#039;a&#039; tag existing in or added to the DOM is going to log it&#039;s &#039;href&#039; value when clicked. And I can use jQuery&#039;s &lt;a title=&quot;API/1.3/Selectors - jQuery JavaScript Library&quot; href=&quot;http://docs.jquery.com/Selectors&quot; target=&quot;_blank&quot;&gt;Selectors&lt;/a&gt; to apply it to more specific elements if I need it to. Pretty damn sweet.&lt;/p&gt;
&lt;p&gt;And that&#039;s about all for my nerdy rant tonight. If you&#039;re a hip kid and you think there&#039;s a bandwagon I need to jump on, let me know. And yes, I already know about &lt;a title=&quot;YouTube - Flutter: The New Twitter&quot; href=&quot;http://www.youtube.com/watch?v=BeLZCy-_m3s&quot; target=&quot;_blank&quot;&gt;Flutter&lt;/a&gt;.&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/04/09/the-bandwagon#comments</comments><pubDate>Thu, 09 Apr 2009 02:15:00 -0700</pubDate><guid>http://www.chrisforrette.com/2009/04/09/the-bandwagon</guid></item>
<item><author>Chris Forrette</author><title>I&#039;m a Portland Native!</title><link>http://www.chrisforrette.com/2009/03/12/im-a-portland-native</link><description>&lt;p&gt;That&#039;s right, we&#039;ve been all settled in Portland now for about 3 weeks and we love it! We managed to paint, unpack, put everything away, hang curtains &amp;amp; shelves, etc., etc. in a seemingly record-breaking span of a week. Here are a couple of shots of the house:&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;a title=&quot;Living room&quot; href=&quot;http://www.flickr.com/photos/ashleyforrette/3321112144/in/set-72157614699619750/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3577/3321112144_ba90e6a80d.jpg?v=0&quot; alt=&quot;Living room&quot; width=&quot;500&quot; height=&quot;334&quot; /&gt;&lt;/a&gt;&lt;a title=&quot;The kitchen&quot; href=&quot;http://www.flickr.com/photos/ashleyforrette/3321036838/in/set-72157614699619750/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3657/3321036838_340641f494.jpg?v=0&quot; alt=&quot;The kitchen&quot; width=&quot;500&quot; height=&quot;334&quot; /&gt;&lt;/a&gt;&lt;a title=&quot;The office&quot; href=&quot;http://www.flickr.com/photos/ashleyforrette/3320207387/in/set-72157614699619750/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3620/3320207387_7a705e97d5.jpg?v=0&quot; alt=&quot;The office&quot; width=&quot;500&quot; height=&quot;334&quot; /&gt;&lt;/a&gt;
&lt;p class=&quot;caption&quot;&gt;And you can see the rest in &lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://www.ashleyforrette.com&quot; target=&quot;_blank&quot;&gt;my lady&#039;s&lt;/a&gt; Flickr set &lt;a title=&quot;The house Flickr set&quot; href=&quot;http://www.flickr.com/photos/ashleyforrette/sets/72157614699619750/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Being that we&#039;re new to the city and we&#039;re both working from home now, we&#039;ve been doing a lot of exploring to get to know the city and avoid going stir-crazy. So here is my top 5 list of discoveries so far:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a title=&quot;Signal Station Pizza&quot; href=&quot;http://www.signalstationpizza.com/&quot; target=&quot;_blank&quot;&gt;Signal Station Pizza&lt;/a&gt;&lt;br /&gt;This place just looks like it would be delicious so we gave it a try on a whim for lunch one day and it was fantastic! I had a slice of the &quot;Ivanhoe&quot; which has mozzarella and provolone cheeses, salami, roasted red pepper, and roma tomatoes and it was amazing! The pizza gets 4.5 stars from me&amp;mdash;it would be 5 but the crust did not blow me away. But amazing pizza right down the street from my house pretty much rules.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Pastrycat&quot; href=&quot;http://www.pastrycat.com/&quot; target=&quot;_blank&quot;&gt;Pastrycat&lt;/a&gt;&lt;br /&gt;Delicious! You can&#039;t miss this bright pink building on Lombard (the main street near our house) so we tried it on our 2nd day here! We&#039;ve tried their baked potato scones, ham &amp;amp; cheese scones, Tillamook cheddar biscuits and cinnamon pull-aparts&amp;mdash;all of which were phenomenal! And it&#039;s run by the kindest lady who is also a Bay Area transplant.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;John&#039;s Marketplace&quot; href=&quot;http://www.johnsmarketplace.com/&quot; target=&quot;_blank&quot;&gt;John&#039;s Marketplace A.K.A. The Magical Beer Emporium Wonderland&lt;/a&gt;&lt;br /&gt;&lt;a title=&quot;Colby Nichols - Illustration&quot; href=&quot;http://www.colbynichols.com&quot; target=&quot;_blank&quot;&gt;Colby&lt;/a&gt; told me about this place and it&#039;s amazing selection of beer before I got here so we went last week and discovered it together! It just looks like a stretched out, plain liquor store and even has a B.O., urine, and beer smell to it but the selection of beer was mind-blowing! And the best part is that you can buy by the bottle! I found a seemingly hard to find German favorite, &lt;a title=&quot;Weltenburger Urtyp Hell&quot; href=&quot;http://www.internetwines.com/rws29190.html&quot; target=&quot;_blank&quot;&gt;Weltenburger&lt;/a&gt; there and we tried out a few mystery brews including a delicious espresso stout from Portland-native &lt;a title=&quot;Laurelwood Brewing Co.&quot; href=&quot;http://www.laurelwoodbrewpub.com/&quot; target=&quot;_blank&quot;&gt;Laurelwood Brewing Co.&lt;/a&gt;, among others. We will definitely be going back for more.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;James John Cafe - St. Johns - Portland&quot; href=&quot;http://www.yelp.com/biz/james-john-cafe-portland&quot; target=&quot;_blank&quot;&gt;James John Cafe&lt;/a&gt;&lt;br /&gt;This is a nice, quiet cafe that serves my new favorite, &lt;a title=&quot;Stumptown Coffee Roasters&quot; href=&quot;http://www.stumptowncoffee.com/&quot; target=&quot;_blank&quot;&gt;Stumptown&lt;/a&gt;! It&#039;s conveniently located right near my place and conveniently delicious. It seems nice and quiet and the dude knows everyone&#039;s name who comes in, maybe even mine soon enough...&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Voodoo Doughnut - The Magic is in the Hole!!!&quot; href=&quot;http://voodoodoughnut.com/&quot; target=&quot;_blank&quot;&gt;Voodoo Doughnut&lt;/a&gt;&lt;br /&gt;OK this was discovered before I got here so it&#039;s technically cheating but it&#039;s still amazing! I&#039;ve been a good 4 or 5 times since being here and I don&#039;t think it will ever get old. The Miami Vice is my very favorite so that&#039;s been a consistent choice but I&#039;ve also been trying out some of their other stuff like the Grape Ape (&lt;strong&gt;very&lt;/strong&gt; grapy), the Mango Tango, the Butter Fingering, the Bubble Gum donut, and much more to come.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&#039;ve got a guest room so I dunno what you&#039;re waiting for?&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/03/12/im-a-portland-native#comments</comments><pubDate>Thu, 12 Mar 2009 20:52:00 -0700</pubDate><guid>http://www.chrisforrette.com/2009/03/12/im-a-portland-native</guid></item>
<item><author>Chris Forrette</author><title>Sasquatch! Music Festival 2009</title><link>http://www.chrisforrette.com/2009/02/18/sasquatch-music-festival-2009</link><description>&lt;p&gt;The &lt;a title=&quot;2009 Sasquatch! Music Festival&quot; href=&quot;http://www.sasquatchfestival.com&quot; target=&quot;_blank&quot;&gt;2009 Sasquatch! Music Festival&lt;/a&gt; recently announced their lineup for the event coming up May 23rd &amp;ndash; May 25th. I checked out the site and it is so littered with awesomeness that I couldn&#039;t resist blogging about it.&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;a title=&quot;2009 Sasquatch! Music Festival&quot; href=&quot;http://www.sasquatchfestival.com&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/blog/2009-02-19_sasquatch_festival.jpg&quot; alt=&quot;2009 Sasquatch! Festival&quot; width=&quot;500&quot; height=&quot;91&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The list is quite extensive: The artwork above is done by one of my favorite design/illustration studios, Seattle-based &lt;a title=&quot;Invisible Creature&quot; href=&quot;http://www.invisiblecreature.com/&quot; target=&quot;_blank&quot;&gt;Invisible Creature&lt;/a&gt;. And if you visit the site and click the little TV on the right, the extremely well-done animation that ensues is done by &lt;a title=&quot;Gridplane&quot; href=&quot;http://www.gridplane.com/&quot; target=&quot;_blank&quot;&gt;JD Hooge &amp;amp; Gridplane&lt;/a&gt;, friend of the &lt;a title=&quot;Cuban Council - Superb Digital Solutions&quot; href=&quot;http://www.cubancouncil.com/&quot; target=&quot;_blank&quot;&gt;Cubans&lt;/a&gt; and Portland natives. And the list of performers includes not only awesome musicians, but comedians too! I love me some stand-up comedy! Some of the musicians that leapt out at me include: &lt;a title=&quot;Kings of Leon&quot; href=&quot;http://www.kingsofleon.com/&quot; target=&quot;_blank&quot;&gt;Kings of Leon&lt;/a&gt;, &lt;a title=&quot;Silversun Pickups&quot; href=&quot;http://www.silversunpickups.com/&quot; target=&quot;_blank&quot;&gt;Silversun Pickups&lt;/a&gt;, &lt;a title=&quot;Gogol Bordello&quot; href=&quot;http://www.gogolbordello.com/&quot; target=&quot;_blank&quot;&gt;Gogol Bordello&lt;/a&gt;, &lt;a title=&quot;The Decemberists&quot; href=&quot;http://www.decemberists.com/&quot; target=&quot;_blank&quot;&gt;The Decemberists&lt;/a&gt;, &lt;a title=&quot;Explosions in the Sky&quot; href=&quot;http://www.explosionsinthesky.com/&quot; target=&quot;_blank&quot;&gt;Explosions in the Sky&lt;/a&gt;, &lt;a title=&quot;DeVotchKa&quot; href=&quot;http://devotchka.net/&quot; target=&quot;_blank&quot;&gt;Devotchka&lt;/a&gt; and tons more, sprinkled with the comedy radness of &lt;a title=&quot;Demetri Martin&quot; href=&quot;http://www.demetrimartin.com/&quot; target=&quot;_blank&quot;&gt;Demetri Martin&lt;/a&gt;, &lt;a title=&quot;Zach Galifianakis&quot; href=&quot;http://www.zachgalifianakis.com/&quot; target=&quot;_blank&quot;&gt;Zach Galifianakis&lt;/a&gt;, and &lt;a title=&quot;Todd Barry&quot; href=&quot;http://www.toddbarry.com/&quot; target=&quot;_blank&quot;&gt;Todd Barry&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My new Portland home (which we are leaving for tomorrow night, woah!) will be relatively close but still 4+ hours away&amp;mdash;very tempting! The addition of $50+ per day price tag should keep me away, but I will dream about how rad it would be to go. If you plan to attend, please hold up a lighter/run a circle through the mosh pit/whatever for me!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/02/18/sasquatch-music-festival-2009#comments</comments><pubDate>Wed, 18 Feb 2009 13:37:00 -0800</pubDate><guid>http://www.chrisforrette.com/2009/02/18/sasquatch-music-festival-2009</guid></item>
<item><author>Chris Forrette</author><title>Nerdy Morsel: Focus/Blur Events in Javascript</title><link>http://www.chrisforrette.com/2009/02/17/nerdy-morsel-focus-blur-events-in-javascript</link><description>&lt;p&gt;I decided I&#039;d add a little something to my site that I&#039;ll call &#039;Nerdy Morsels&#039;. Working with code all day, I&#039;m bound to stumble on weird stuff here and there that will throw me for a loop and force me into hours of debugging over something insanely simple. Something just like this happened today (though it didn&#039;t take me too long to figure out) and I figured I&#039;d share it with you. You might think some of these posts will be the most retarded thing in the world, but likely so do I, but I hope they help someone.&lt;/p&gt;
&lt;p&gt;I was working on some &lt;a title=&quot;MooTools - a compact javascript framework&quot; href=&quot;http://www.mootools.net/&quot; target=&quot;_blank&quot;&gt;MooTools&lt;/a&gt; Javascript magic today, applying some events to an &amp;lt;a&amp;gt; tag to animate open a menu:&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;text text_html text_html_basic&quot;&gt;&lt;span class=&quot;meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;meta meta_attribute-with-value meta_attribute-with-value_id meta_attribute-with-value_id_html&quot;&gt;&lt;span class=&quot;entity entity_other entity_other_attribute-name entity_other_attribute-name_id entity_other_attribute-name_id_html&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_separator punctuation_separator_key-value punctuation_separator_key-value_html&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_double string_quoted_double_html&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_html&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;meta meta_toc-list meta_toc-list_id meta_toc-list_id_html&quot;&gt;btn&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_html&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Click/blur me for some stuff to happen&lt;span class=&quot;meta meta_tag meta_tag_inline meta_tag_inline_any meta_tag_inline_any_html&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_begin punctuation_definition_tag_begin_html&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;entity entity_name entity_name_tag entity_name_tag_inline entity_name_tag_inline_any entity_name_tag_inline_any_html&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_end punctuation_definition_tag_end_html&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Basically I wanted the menu to expand onclick and I was trying to work some trickery to hide it onblur:&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;support support_class support_class_js&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;addEvent&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_double string_quoted_double_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&quot;&lt;/span&gt;domready&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_double string_quoted_double_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&quot;&lt;/span&gt;btn&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;addEvent&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_double string_quoted_double_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&quot;&lt;/span&gt;blur&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;comment comment_line comment_line_double-slash comment_line_double-slash_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_js&quot;&gt;//&lt;/span&gt; Do some stuff when focus is removed
&lt;/span&gt;    &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;You might already see the problem, but I was setting both &#039;focus&#039; and &#039;blur&#039; events with no result, and I ran a few circles trying to figure it out. The simple reason why? I did not set my &#039;href&#039; property! If you want blur/focus events to occur on a link element, you have to set one! I simply added &quot;href=&#039;#&#039;&quot; to the tag and it worked fine. Obviously when you&#039;re thorough with your markup you&#039;d almost never have no &#039;href&#039; property in a link tag, but since I was just using it to trigger an event, I didn&#039;t think too much of it.&lt;/p&gt;
&lt;p&gt;Simple as that&amp;mdash;that concludes my nerdy morsel for the day, hope it was nerd-liscious for you...&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/02/17/nerdy-morsel-focus-blur-events-in-javascript#comments</comments><pubDate>Tue, 17 Feb 2009 21:56:00 -0800</pubDate><guid>http://www.chrisforrette.com/2009/02/17/nerdy-morsel-focus-blur-events-in-javascript</guid></item>
<item><author>Chris Forrette</author><title>Jolby</title><link>http://www.chrisforrette.com/2009/02/12/jolby</link><description>&lt;p&gt;I have two amazingly talented and inspiring friends by the names of &lt;a title=&quot;The Creative Portfolio of Josh Kenyon&quot; href=&quot;http://www.enyocreative.com&quot; target=&quot;_blank&quot;&gt;Josh Kenyon&lt;/a&gt; and &lt;a title=&quot;Colby Nichols - Illustration&quot; href=&quot;http://www.colbynichols.com&quot; target=&quot;_blank&quot;&gt;Colby Nichols&lt;/a&gt; who have always blown me away with their work. In the last few years, they have collaborated under the name &lt;a title=&quot;Jolby &amp;amp; Friends&quot; href=&quot;http://www.jolbyandfriends.com&quot; target=&quot;_blank&quot;&gt;Jolby&lt;/a&gt; and we are coming up quick on their very first art show together which is opening next Friday, February 21st in San Diego, CA. If you happen to be in the area and are into radical illustrative amazingness you should definitely check it out&amp;mdash;here&#039;s the info:&lt;/p&gt;
&lt;p class=&quot;inset&quot;&gt;&lt;strong&gt;Jolby: &quot;Home is Where You Make It&quot;&lt;/strong&gt;&lt;br /&gt;February 21st &amp;ndash; March 22nd, 2009&lt;br /&gt;&lt;a title=&quot;Subtext Loves Design&quot; href=&quot;http://www.subtextstore.com&quot; target=&quot;_blank&quot;&gt;Subtext Store&lt;/a&gt;&lt;br /&gt;2479 Kettner Blvd.&lt;br /&gt;San Diego, CA 92101&lt;br /&gt;Opening Reception with the Artists: Saturday, February 21st, 6&amp;ndash;10pm&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;JOLBY&quot; href=&quot;http://jolby.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Their blog&lt;/a&gt; is one of the many that I subscribe to and it&#039;s been fantastic to get regular sneak peaks into the work going into the show, and see the development of their story line and the aesthetic behind it all. A lot of blood, sweat, tears, late nights, and coffee has gone into these amazing pieces and they should be super proud of all of it. I would love to take some time to hang out with the guys in San Diego and check out the opening, but it falls on the weekend we&#039;ll be making our way to Portland.&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;a title=&quot;Jolby | Print | &amp;quot;Home is Where You Make It&amp;quot;&quot; href=&quot;http://www.jolbyandfriends.com/work/project/13/Home_is_Where_You_Make_it_Opening_February_21st&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/blog/2009-02-12_jolby.jpg&quot; alt=&quot;Jolby, Home is Where You Make It&quot; width=&quot;500&quot; height=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;I just recently helped them launch their new portfolio site at &lt;a title=&quot;Jolby &amp;amp; Friends&quot; href=&quot;http://www.jolbyandfriends.com&quot; target=&quot;_blank&quot;&gt;www.jolbyandfriends.com&lt;/a&gt; with a &lt;a title=&quot;CakePHP&quot; href=&quot;http://www.cakephp.org&quot; target=&quot;_blank&quot;&gt;CakePHP&lt;/a&gt; back-end with a light, custom CMS so they can easily update their site. Go check them and their rad work out and leave some high 5s in the comments of their blog!&lt;a title=&quot;Jolby &amp;amp; Friends&quot; href=&quot;http://www.jolbyandfriends.com&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/02/12/jolby#comments</comments><pubDate>Thu, 12 Feb 2009 13:00:00 -0800</pubDate><guid>http://www.chrisforrette.com/2009/02/12/jolby</guid></item>
<item><author>Chris Forrette</author><title>Top 10 Albums of 2008</title><link>http://www.chrisforrette.com/2009/01/30/top-10-albums-of-2008</link><description>&lt;p&gt;I&#039;ve had a brewing list of my top ten candidates sitting around for about a month and I finally whittled it down today! 2008 Was not nearly as &lt;a title=&quot;Top Ten Albums of 2007!&quot; href=&quot;/blog/2008/03/18/top-ten-albums-of-2007&quot;&gt;good music-wise as 2007&lt;/a&gt; &amp;mdash; in fact I consider 2007 as the best year of music in my life thus far &amp;mdash; but there were still lots of great albums released last year. Here&#039;s what I got:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a title=&quot;Unearth&quot; href=&quot;http://www.unearth.tv/&quot; target=&quot;_blank&quot;&gt;Unearth&lt;/a&gt; - &lt;a title=&quot;Unearth - The March&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=288873807&amp;amp;id=288873800&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;The March&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Protest the Hero&quot; href=&quot;http://protestthehero.com/&quot; target=&quot;_blank&quot;&gt;Protest the Hero&lt;/a&gt; - &lt;a title=&quot;Protest the Hero - Fortress&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=272257282&amp;amp;id=272257261&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Fortress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Misery Signals&quot; href=&quot;http://miserysignals.net/&quot; target=&quot;_blank&quot;&gt;Misery Signals&lt;/a&gt; - &lt;a title=&quot;Misery Signals - Controller&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=285519669&amp;amp;id=285519653&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Kings of Leon&quot; href=&quot;http://kingsofleon.com/&quot; target=&quot;_blank&quot;&gt;Kings of Leon&lt;/a&gt; - &lt;a title=&quot;Kings of Leon - Only By the Night&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=289072758&amp;amp;id=289072736&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Only By the Night&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Senses Fail&quot; href=&quot;http://sensesfail.com/&quot; target=&quot;_blank&quot;&gt;Senses Fail&lt;/a&gt; - &lt;a title=&quot;Senses Fail - Life Is Not A Waiting Room&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=290488500&amp;amp;id=290488459&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Life Is Not a Waiting Room&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Thrice&quot; href=&quot;http://www.thrice.net/&quot; target=&quot;_blank&quot;&gt;Thrice&lt;/a&gt; - &lt;a title=&quot;Thrice - The Alchemy Index Vol. 3 &amp;amp; 4&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=277330719&amp;amp;id=277330715&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;The Alchemy Index Vol. 3 &amp;amp; 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Nada Surf&quot; href=&quot;http://www.nadasurf.com/&quot; target=&quot;_blank&quot;&gt;Nada Surf&lt;/a&gt; - &lt;a title=&quot;Nada Surf - Lucky&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=272323341&amp;amp;id=272323087&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Lucky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Bayside&quot; href=&quot;http://www.baysideisacult.com/&quot; target=&quot;_blank&quot;&gt;Bayside&lt;/a&gt; - &lt;a title=&quot;Bayside - Shudder&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=291328737&amp;amp;id=291328719&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Shudder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;The Official Alkaline Trio Site&quot; href=&quot;http://www.alkalinetrio.com/&quot; target=&quot;_blank&quot;&gt;Alkaline Trio&lt;/a&gt; - &lt;a title=&quot;Alkaline Trio - Agony &amp;amp; Irony&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=282344470&amp;amp;id=282344468&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Agony &amp;amp; Irony&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Jack Johnson Music&quot; href=&quot;http://www.jackjohnsonmusic.com/&quot; target=&quot;_blank&quot;&gt;Jack Johnson&lt;/a&gt; - &lt;a title=&quot;Jack Johnson - Sleep Through the Static&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=272637061&amp;amp;id=272637031&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Sleep Through the Static&lt;/a&gt; (sorry Phil)&lt;a title=&quot;Jack Johnson - Sleep Through the Static&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=272637061&amp;amp;id=272637031&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hopefully there&#039;s enough variety in there to give you a seizure &amp;mdash; after all that&#039;s the ultimate goal here.&lt;/p&gt;
&lt;p&gt;I also want to throw in some of my favorite discoveries of the year, even though they aren&#039;t brand new. &lt;a title=&quot;Minus the Bear&quot; href=&quot;http://minusthebear.com/&quot; target=&quot;_blank&quot;&gt;Minus the Bear&lt;/a&gt;, &lt;a title=&quot;Minus the Bear - Planet of Ice (iTunes)&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=260675767&amp;amp;id=260675620&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Planet of Ice&lt;/a&gt; is an amazing album and, had I heard it in 2007 when it came out, it would have been at the top of my list. The album still hasn&#039;t gotten old for me! I also discovered an awesome jazz album. I try to listen to jazz here and there and usually hate it because it makes me sleepy, but I got a hold of the album &lt;a title=&quot;John Coltrane - Giant Steps&quot; href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=50235753&amp;amp;id=50235751&amp;amp;s=143441&quot; target=&quot;_blank&quot;&gt;Giant Steps&lt;/a&gt; by &lt;a title=&quot;John Coltrane&quot; href=&quot;http://johncoltrane.com&quot; target=&quot;_blank&quot;&gt;John Coltrane&lt;/a&gt; last year and I really love it. I usually rely on insane metal to get me into a raging fury of efficiency at work but this album is a surprisingly fantastic alternative.&lt;/p&gt;
&lt;p&gt;Lately I&#039;ve been in somewhat of a music slump, so let me know if you&#039;ve discovered anything you think I might be into and/or if you&#039;ve got your own top ten list!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/01/30/top-10-albums-of-2008#comments</comments><pubDate>Fri, 30 Jan 2009 14:25:00 -0800</pubDate><guid>http://www.chrisforrette.com/2009/01/30/top-10-albums-of-2008</guid></item>
<item><author>Chris Forrette</author><title>Wrappin up 08</title><link>http://www.chrisforrette.com/2009/01/26/wrappin-up-08</link><description>&lt;p&gt;We had some really nice holidays to wrap things up in 2008. It&#039;s always nice during Christmas to see all the friends and family that are so spread out during the rest of the year. We caught up with a bunch of them and had some fun times and, among other things, became Rock Band/Guitar Hero pros:&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3127/3148901874_da97ef2f9d.jpg&quot; alt=&quot;Rock Band pros&quot; width=&quot;500&quot; height=&quot;373&quot; /&gt;&lt;/div&gt;
&lt;h3&gt;Resolutions&lt;/h3&gt;
&lt;p&gt;I&#039;ve never been big on resolutions as I&#039;ve always thought that if you need a change, there&#039;s no need to wait until a new year starts. But this year I think the timing is just right with the move coming up (even though I&#039;m almost a month late!), so I&#039;ve got a few I want to formally document, so that perhaps you people reading this can yell at me if I don&#039;t follow through. They are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Be more open-minded, make more friends&lt;/strong&gt;&lt;br /&gt;I&#039;m still a youngster but I can feel the slight pricks of a narrowing perspective as I get older and I don&#039;t ever want that to get the best of me. I always want to do my best to be open to change, new things, new experiences, and not become some grumpy dude who&#039;s set in my ways. I&#039;ve got a whole new city to explore and I want to be open to it all! And I&#039;ve never been very good at making friends, so I want to get myself out of my shell, maybe try some stuff I don&#039;t normally (without being a creepy weirdo), and meet some cool folks when I get there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design more, create more&lt;br /&gt;&lt;/strong&gt;I&#039;m a web developer for a living and I love it, but I have a degree in design and I really love that too, and I&#039;ve definitely lost my touch with it since it&#039;s not a big part of my day job anymore. I still love making art &amp;amp; design and I want it to be part of my life. As we&#039;ve been preparing for the move, we&#039;ve been going through some of our old stuff and it&#039;s great to see some of my old projects and sketches and I want to bring it all back. This year I want to bring some art projects to life, whether it&#039;s design, drawing, maybe even stuff I haven&#039;t done much before like painting, etc. I think it would help to get my portfolio back up on my site, and use this blog to post stuff that I work on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep learning things&lt;br /&gt;&lt;/strong&gt;I feel like this is just part of my life and part of being a web developer, but I want to keep expanding my knowledge as always, and I want to set a concrete goal for myself this year: I want to make &lt;strong&gt;at least&lt;/strong&gt; 1 desktop application and 1 iPhone application this year. I started &lt;a title=&quot;Amazon.com: Cocoa(R) Programming for Mac(R) OS X (3rd Edition): Aaron Hillegass: Books&quot; href=&quot;http://www.amazon.com/Cocoa-Programming-Mac-OS-3rd/dp/0321503619/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1233022443&amp;amp;sr=8-1&quot; target=&quot;_blank&quot;&gt;reading up about Cocoa programming&lt;/a&gt; last year and really loved it but I haven&#039;t yet put it to use, aside from the tutorials in the book. I want to make something happen with that, and then get my hands dirty with the iPhone SDK and make an app &amp;mdash; even if they end up being stupid, I at least want to make something as proof of concept.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Being that I&#039;m not a resolution-er, I&#039;ll keep them short and sweet. What do you think? You have any resolutions this year? After (almost) a month, how are they holding up? Happy (late) 2009 people!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2009/01/26/wrappin-up-08#comments</comments><pubDate>Mon, 26 Jan 2009 18:31:00 -0800</pubDate><guid>http://www.chrisforrette.com/2009/01/26/wrappin-up-08</guid></item>
<item><author>Chris Forrette</author><title>Finished Tat Pics</title><link>http://www.chrisforrette.com/2008/12/22/finished-tat-pics</link><description>&lt;p&gt;Hey ya&#039;ll! I finally finished my &lt;a title=&quot;sillypinkbunnies.com&quot; href=&quot;http://www.sillypinkbunnies.com&quot; target=&quot;_blank&quot;&gt;Jeremy Fish&lt;/a&gt; tattoo in late October and with waiting for it to heal and the crazy holiday times, I hadn&#039;t managed to get that &lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://www.ashleyforrette.com&quot; target=&quot;_blank&quot;&gt;personal photographer&lt;/a&gt; of mine to take some good photos of it until this week. I&#039;m super happy with it! It&#039;s big, colorful, beautifully done, and very meaningful to me. Now that we&#039;re &lt;a title=&quot;Movin&#039; On Up&quot; href=&quot;/blog/2008/12/05/movin-on-up&quot;&gt;moving to Portland&lt;/a&gt; I&#039;m thinking I might dedicate my arm to the places I live from here on out. Obviously I can&#039;t do it so massive every time unless I get some major arm enhancement surgery (or take some of those herbal pills I&#039;ve heard so much about) but I think it&#039;ll be fun to find a great artist in each city that I live in and get a piece done with them. Conveniently, I already know &lt;a title=&quot;Colby Nichols - Illustration&quot; href=&quot;http://www.colbynichols.com&quot; target=&quot;_blank&quot;&gt;an amazing artist&lt;/a&gt; in Portland. We&#039;ve already discussed a few concepts involving pine trees, &lt;a title=&quot;Voodoo Doughnut - The Magic is in the Hole!!!&quot; href=&quot;http://www.voodoodoughnut.com/&quot; target=&quot;_blank&quot;&gt;donuts&lt;/a&gt;, and monsters. Sounds cool eh? Here are the pics:&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;img src=&quot;/img/blog/tattoo_fish_final_1.jpg&quot; alt=&quot;Jeremy Fish tattoo sketch &amp;amp; outline&quot; width=&quot;500&quot; height=&quot;373&quot; /&gt;&lt;img src=&quot;/img/blog/tattoo_fish_final_2.jpg&quot; alt=&quot;Jeremy Fish tattoo 3rd and final sessions&quot; /&gt;&lt;img src=&quot;/img/blog/tattoo_fish_final_3.jpg&quot; alt=&quot;Jeremy Fish tattoo final - and the wife&quot; width=&quot;500&quot; height=&quot;334&quot; /&gt;
&lt;p&gt;That &lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://www.ashleyforrette.com&quot; target=&quot;_blank&quot;&gt;cute wife&lt;/a&gt; of mine digs the new ink&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Let me know if you dig it!&lt;/p&gt;
&lt;p&gt;In other random news, I got my first &lt;a title=&quot;Crown (dentistry) - Wikipedia, the Free Encyclopedia&quot; href=&quot;http://en.wikipedia.org/wiki/Dental_crown&quot; target=&quot;_blank&quot;&gt;crown&lt;/a&gt; done at the dentist last weekend and it&#039;s not as weird or painful as I thought. Scratch that, it is pretty weird. I have a temporary crown in until December 30th, so I can only chew on the right side of my mouth, perfect timing with the holidays! No fruit cake for me please ...&lt;/p&gt;
&lt;p&gt;Speaking of the holidays, we are heading down to &lt;a title=&quot;Santa Clarita, CA - Google Maps&quot; href=&quot;http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Santa+Clarita,+CA&amp;amp;sll=37.775196,-122.419204&amp;amp;sspn=0.244775,0.648193&amp;amp;g=Santa+Clarita,+CA&amp;amp;ie=UTF8&amp;amp;ll=34.443159,-118.523941&amp;amp;spn=0.255386,0.648193&amp;amp;z=11&amp;amp;iwloc=addr&quot; target=&quot;_blank&quot;&gt;Santa Clarita, CA&lt;/a&gt; tomorrow to hang out with my parents for Christmas and Hanukkah and all that goodness. We&#039;re going to get cozy with the &lt;a title=&quot;Interstate 5 - Wikipedia, the free encyclopedia&quot; href=&quot;http://en.wikipedia.org/wiki/Interstate_5&quot; target=&quot;_blank&quot;&gt;I-5&lt;/a&gt; starting around 5-6 p.m. tomorrow and on Christmas Eve we&#039;re going to go see my Uncle Jim, Aunt Holly, my cousins Ryan and Sloane, and my grandmas. I&#039;ll also get to see my brother Mike &amp;mdash; it&#039;s been a while! We&#039;re going to do some dinner and a &lt;a title=&quot;Guitar Hero &amp;reg; World Tour&quot; href=&quot;http://www.guitarhero.com&quot; target=&quot;_blank&quot;&gt;game night&lt;/a&gt; with some of our best friends, &lt;a title=&quot;Green Being&quot; href=&quot;http://egosumspes.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Leslie&lt;/a&gt; &amp;amp; Adam and her family on Friday, and then on Saturday we&#039;re going to my stepdad&#039;s family&#039;s giant Hanukkah celebration (which we haven&#039;t been able to attend in like 4 years) and then hang out with our good friends &lt;a title=&quot;The Creative Portfolio of Josh Kenyon&quot; href=&quot;http://www.enyocreative.com&quot; target=&quot;_blank&quot;&gt;Josh&lt;/a&gt; &amp;amp; Shannon and Kurt &amp;amp; Jessica later that night. Then we head back Sunday, work a bit, then on New Year&#039;s we&#039;re going to hang out with our friends &lt;a title=&quot;PhotogDavid&quot; href=&quot;http://photogdavid.blogspot.com&quot; target=&quot;_blank&quot;&gt;David&lt;/a&gt;, his lady Jill, and his dog, Buddi. So it&#039;s going to be an action-packed couple of weeks! What are you guys up to for the holidays? Have any new year&#039;s resolutions I should hear about? I have a few in mind that I might perhaps blog about to add some sort of accountability to them. Anyway, happy holidays everyone!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/12/22/finished-tat-pics#comments</comments><pubDate>Mon, 22 Dec 2008 23:08:00 -0800</pubDate><guid>http://www.chrisforrette.com/2008/12/22/finished-tat-pics</guid></item>
<item><author>Chris Forrette</author><title>Movin&#039; on up v2.0</title><link>http://www.chrisforrette.com/2008/12/09/movin-on-up-v2-0</link><description>&lt;p&gt;Not only am I physically &lt;a title=&quot;Ascend Visual - Blog - Movin&#039; on up&quot; href=&quot;/blog/2008/12/05/movin-on-up&quot;&gt;moving to Portland&lt;/a&gt;, but I am digitally moving to &lt;a title=&quot;Chris Forrette&quot; href=&quot;http://www.chrisforrette.com&quot;&gt;www.chrisforrette.com&lt;/a&gt;! After all these years of using Ascend Visual, I&#039;ve decided it&#039;s become kind of obscure&amp;mdash;especially since I&#039;m not doing freelance anymore&amp;mdash;and I think using my own name will be simpler and more untuitive. So if you are one of my 3 or 4 subscribers/regular visitors, update your bookmarks! Right now it&#039;s just pointing to this same website but eventually I&#039;ll update some graphics and maybe even re-design (perhaps using something besides orange and grey?). And I&#039;ll have ascendvisual.com for quite a while more but I&#039;m now working toward phasing it out. Good bye my trusty, dusty old URL, you will be missed...&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/12/09/movin-on-up-v2-0#comments</comments><pubDate>Tue, 09 Dec 2008 15:24:00 -0800</pubDate><guid>http://www.chrisforrette.com/2008/12/09/movin-on-up-v2-0</guid></item>
<item><author>Chris Forrette</author><title>Movin&#039; on up</title><link>http://www.chrisforrette.com/2008/12/08/movin-on-up</link><description>&lt;p&gt;Hey everybody, how was your Thanksgiving (if you are from the US)? Mine was quite eventful. &lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://www.ashleyforrette.com&quot; target=&quot;_blank&quot;&gt;The wife&lt;/a&gt; and I did our annual road trip up to &lt;a title=&quot;Port Townsend, WA - Google Maps&quot; href=&quot;http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=Port+Townsend,+Washington&amp;amp;sll=37.775196,-122.419204&amp;amp;sspn=0.262686,0.628281&amp;amp;g=Port+Townsend,+Washington&amp;amp;ie=UTF8&amp;amp;cd=1&amp;amp;geocode=FUVB3gIduFyu-A&amp;amp;ll=48.123247,-122.790756&amp;amp;spn=0.055461,0.15707&amp;amp;z=13&amp;amp;iwloc=addr&quot; target=&quot;_blank&quot;&gt;Port Towsend, WA&lt;/a&gt; to spend Thanksgiving with her family. Along the way we decided to stop through &lt;a title=&quot;Portland, OR - Google Maps&quot; href=&quot;http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Portland,+OR&amp;amp;sll=48.123247,-122.790756&amp;amp;sspn=0.055461,0.15707&amp;amp;g=Portland,+OR&amp;amp;ie=UTF8&amp;amp;ll=45.561179,-122.670593&amp;amp;spn=0.442293,1.256561&amp;amp;z=10&amp;amp;iwloc=addr&quot; target=&quot;_blank&quot;&gt;Portland&lt;/a&gt; and, you know, buy a house. Yes that&#039;s right, we bought a house! We&#039;ve been talking about it for months now, and the Monday before Thanksgiving, we met with a realtor, spent all day driving around the city, and ended up putting in an offer on a brand new &quot;Portland four-square&quot; craftsman style brand new green home! We checked out a bunch of homes throughout the day and ended up picking a house already being built in the St. John&#039;s neighborhood in the North part of the city. Here&#039;s a bit of a preview:&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;img src=&quot;/img/blog/pdx_house_construction_1.jpg&quot; alt=&quot;Portland House under construction, front&quot; width=&quot;500&quot; height=&quot;667&quot; /&gt;&lt;img src=&quot;/img/blog/pdx_house_construction_2.jpg&quot; alt=&quot;Portland House under construction, living room&quot; width=&quot;500&quot; height=&quot;375&quot; /&gt;&lt;/div&gt;
&lt;p&gt;And when it&#039;s done it&#039;ll look a little something like this:&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 410px;&quot;&gt;&lt;img src=&quot;/img/blog/pdx_house_palazzo_final.jpg&quot; alt=&quot;Portland house, Palazzo final&quot; width=&quot;410&quot; height=&quot;275&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Pretty nice, eh? We love the San Francisco area but getting into our first home here would have been very difficult and we would have had to make a lot of compromise. We considered a ton of cities and ultimately decided on Portland. When we went we were just about sold, and spending time there really nailed it for us (obviously). We met up with our good friend &lt;a title=&quot;Colby Nichols - Illustration&quot; href=&quot;http://www.colbynichols.com&quot; target=&quot;_blank&quot;&gt;Colby&lt;/a&gt; and his lady, Abby, who helped show us the town.&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;a title=&quot;Colby Nichols - Illustration&quot; href=&quot;http://www.colbynichols.com&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/blog/pdx_thanksgiving_colby.jpg&quot; alt=&quot;Mr. Colby Nichols&quot; width=&quot;500&quot; height=&quot;667&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;He used tricky tactics such as feeding us &lt;a title=&quot;Voodoo Doughnut - The Magic is in the Hole!!!&quot; href=&quot;http://voodoodoughnut.com/&quot; target=&quot;_blank&quot;&gt;delicious, amazing donuts&lt;/a&gt;, &lt;a title=&quot;Stumptown Coffee Roasters&quot; href=&quot;http://stumptowncoffee.com/&quot; target=&quot;_blank&quot;&gt;coffee&lt;/a&gt;, and &lt;a title=&quot;Homepage brought to you by McMenamin&#039;s&quot; href=&quot;http://www.mcmenamins.com/&quot; target=&quot;_blank&quot;&gt;beer&lt;/a&gt; to convince us that it was the place to go. And we&#039;re glad he did! They are a couple of awesome people and we&#039;re very excited to be their neighbors.&lt;/p&gt;
&lt;p&gt;And I must mention that if you are a nerd like me, and love nerdy computer/code books, you MUST visit the &lt;a title=&quot;Powell&#039;s Books - New, Used, and Out of Print&quot; href=&quot;http://www.powells.com/&quot; target=&quot;_blank&quot;&gt;Powell&#039;s Books&lt;/a&gt; Tech store&amp;mdash;it&#039;s basically the Mecca of nerd book stores, I was totally blown away and considered just moving in there. It has &lt;strong&gt;everything&lt;/strong&gt;! Code books old and new, books on engineering, physics, math. It&#039;s basically like Amazon in person. And we tried a number of delicious donuts from &lt;a title=&quot;Voodoo Doughnut - The Magic is in the Hole!!!&quot; href=&quot;http://voodoodoughnut.com/&quot; target=&quot;_blank&quot;&gt;Voodoo&lt;/a&gt;, including the maple bacon donuts, the Cap&#039;n Crunch and Fruit Loops donuts, the &quot;Miami Vice&quot;, and a few others, all of which were, without question, the best donuts I&#039;ve ever eaten.&lt;/p&gt;
&lt;p&gt;And one of the best parts is that I will continue to work with &lt;a title=&quot;Cuban Council - Superb Digital Solutions&quot; href=&quot;http://www.cubancouncil.com&quot; target=&quot;_blank&quot;&gt;Cuban Council&lt;/a&gt;! My &lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://www.ashleyforrette.com&quot; target=&quot;_blank&quot;&gt;talented photographer wife&lt;/a&gt; is going to have to do some hard work to establish herself there when we move, so if you know anyone who needs some top notch photography, spread the good word and &lt;a title=&quot;Ashley Forrette Photography | About&quot; href=&quot;http://www.ashleyforrette.com/about/&quot; target=&quot;_blank&quot;&gt;get in touch&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;We won&#039;t be moving until probably mid-late March of 2009, so if you are a Bay Area buddy of ours and want to do some hanging out, let&#039;s get it done!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/12/08/movin-on-up#comments</comments><pubDate>Mon, 08 Dec 2008 01:28:00 -0800</pubDate><guid>http://www.chrisforrette.com/2008/12/08/movin-on-up</guid></item>
<item><author>Chris Forrette</author><title>Problem Solved: Searching Many-to-Many Table Relationships</title><link>http://www.chrisforrette.com/2008/11/01/problem-solved-searching-many-to-many-table-relationships</link><description>&lt;p&gt;
    I&#039;m sure I can relate to a lot of people when I say that we sometimes run into problems that drive us absolutely bonkers until we solve them. Such is 
    the day-to-day for us code nerds. Usually we can solve them relatively quickly, in a few hours, but some of them plague our existence until we figure 
    it out. And then there&#039;s the kind that you kind of want to figure out, can&#039;t, and then they rest in the back of your head for a while. I solved one such 
    problem just the other day, and I wanted to share it with you in case anyone has been losing sleep over the same thing.
&lt;/p&gt;
&lt;p&gt;
    So here&#039;s the scenario: my blog has a &lt;a href=&quot;http://en.wikipedia.org/wiki/Tag_(metadata)&quot; title=&quot;Tag (metadata) - Wikipedia, the free encyclopedia&quot; target=&quot;_blank&quot;&gt;tag&lt;/a&gt; 
    system. Who knows if it&#039;s actually useful, but I wanted to build it to keep my posts organized, and it&#039;s pretty much a proof of concept kind of thing. Not only 
    that, but &lt;a href=&quot;http://delicious.com/ascendvisual&quot; title=&quot;ascendvisual&#039;s Bookmarks on Delicious&quot; target=&quot;_blank&quot;&gt;my del.icio.us bookmarks&lt;/a&gt; are organized into a tag 
    system as well. The problem I wanted to solve was to be able to search my blogs and/or del.icio.us bookmarks by tag, using an &#039;all&#039; or &#039;any&#039; specifier so that 
    I could, say, enter a bunch of tags separated by a space or a comma, and find all posts/links that have &lt;strong&gt;any&lt;/strong&gt; of the tags I entered, or that 
    have &lt;strong&gt;all&lt;/strong&gt; of the tags I entered.
&lt;/p&gt;
&lt;h3&gt;The Tables&lt;/h3&gt;
&lt;p&gt;
    I organized all of my tags into a table for themselves so that I can associate them to any other set of data using a 
    &lt;a href=&quot;http://en.wikipedia.org/wiki/Many_to_many&quot; title=&quot;Many to Many - Wikipedia, the free encyclopedia&quot; target=&quot;_blank&quot;&gt;many to many&lt;/a&gt; 
    relationship. My tags table looks like this:
&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_sql&quot;&gt;&lt;span class=&quot;meta meta_create meta_create_sql&quot;&gt;&lt;span class=&quot;keyword keyword_other keyword_other_create keyword_other_create_sql&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;keyword keyword_other keyword_other_sql&quot;&gt;TABLE&lt;/span&gt; `&lt;span class=&quot;entity entity_name entity_name_function entity_name_function_sql&quot;&gt;tags&lt;/span&gt;`&lt;/span&gt; (
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;id`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;int&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;11&lt;/span&gt;) &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NOT NULL&lt;/span&gt; auto_increment,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;name`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;varchar&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;255&lt;/span&gt;) &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NOT NULL&lt;/span&gt; default &lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;&#039;&lt;/span&gt;&#039;&lt;/span&gt;,
  &lt;span class=&quot;storage storage_modifier storage_modifier_sql&quot;&gt;PRIMARY KEY&lt;/span&gt;  (&lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;id`&lt;/span&gt;),
  KEY &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;idx_name`&lt;/span&gt; (&lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;name`&lt;/span&gt;)
)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    Then my join table, the table that relates tags to my blogs, looks like this:
&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_sql&quot;&gt;&lt;span class=&quot;meta meta_create meta_create_sql&quot;&gt;&lt;span class=&quot;keyword keyword_other keyword_other_create keyword_other_create_sql&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;keyword keyword_other keyword_other_sql&quot;&gt;TABLE&lt;/span&gt; `&lt;span class=&quot;entity entity_name entity_name_function entity_name_function_sql&quot;&gt;blogs_tags&lt;/span&gt;`&lt;/span&gt; (
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;id`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;int&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;11&lt;/span&gt;) unsigned &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NOT NULL&lt;/span&gt; auto_increment,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;blog_id`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;int&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;11&lt;/span&gt;) default &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NULL&lt;/span&gt;,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;tag_id`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;int&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;11&lt;/span&gt;) default &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NULL&lt;/span&gt;,
  &lt;span class=&quot;storage storage_modifier storage_modifier_sql&quot;&gt;PRIMARY KEY&lt;/span&gt;  (&lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;id`&lt;/span&gt;),
  KEY &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;idx_blog_id`&lt;/span&gt; (&lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;blog_id`&lt;/span&gt;),
  KEY &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;idx_tag_id`&lt;/span&gt; (&lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;tag_id`&lt;/span&gt;)
)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    And my blogs table looks something like this:
&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_sql&quot;&gt;&lt;span class=&quot;meta meta_create meta_create_sql&quot;&gt;&lt;span class=&quot;keyword keyword_other keyword_other_create keyword_other_create_sql&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;keyword keyword_other keyword_other_sql&quot;&gt;TABLE&lt;/span&gt; `&lt;span class=&quot;entity entity_name entity_name_function entity_name_function_sql&quot;&gt;blogs&lt;/span&gt;`&lt;/span&gt; (
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;id`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;int&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;11&lt;/span&gt;) &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NOT NULL&lt;/span&gt; auto_increment,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;name`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;varchar&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;255&lt;/span&gt;) default &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NULL&lt;/span&gt;,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;slug`&lt;/span&gt; &lt;span class=&quot;storage storage_type storage_type_sql&quot;&gt;varchar&lt;/span&gt;(&lt;span class=&quot;constant constant_numeric constant_numeric_sql&quot;&gt;255&lt;/span&gt;) default &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NULL&lt;/span&gt;,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;entry`&lt;/span&gt; longtext &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NOT NULL&lt;/span&gt;,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;posted`&lt;/span&gt; datetime &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NOT NULL&lt;/span&gt;,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;created`&lt;/span&gt; datetime default &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NULL&lt;/span&gt;,
  &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;modified`&lt;/span&gt; datetime default &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;NULL&lt;/span&gt;,
  &lt;span class=&quot;storage storage_modifier storage_modifier_sql&quot;&gt;PRIMARY KEY&lt;/span&gt;  (&lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;id`&lt;/span&gt;),
  KEY &lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;idx_slug`&lt;/span&gt; (&lt;span class=&quot;string string_quoted string_quoted_other string_quoted_other_backtick string_quoted_other_backtick_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;`&lt;/span&gt;slug`&lt;/span&gt;)
)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;The Magical Query&lt;/h3&gt;
&lt;p&gt;
    Once you have some blog entries, some tags, and some tagged blogs, maybe you want to search them. So the solution I finally found was a query that looks like the 
    following. This is to search for blogs that have both &#039;Javascript&#039; and &#039;MooTools&#039; tags associated with them:
&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_sql&quot;&gt;&lt;span class=&quot;keyword keyword_other keyword_other_DML keyword_other_DML_sql&quot;&gt;SELECT&lt;/span&gt;
    GROUP_CONCAT(&lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;tags&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;name&lt;/span&gt;) &lt;span class=&quot;keyword keyword_other keyword_other_alias keyword_other_alias_sql&quot;&gt;AS&lt;/span&gt; tag_list,
    &lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;blogs&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;id&lt;/span&gt;,
    &lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;blogs&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;name&lt;/span&gt;
&lt;span class=&quot;keyword keyword_other keyword_other_DML keyword_other_DML_sql&quot;&gt;FROM&lt;/span&gt;
    blogs
    &lt;span class=&quot;keyword keyword_other keyword_other_DML keyword_other_DML_sql&quot;&gt;LEFT JOIN&lt;/span&gt; blogs_tags &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;ON&lt;/span&gt; (&lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;blogs&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_sql&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;blogs_tags&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;blog_id&lt;/span&gt;)
    &lt;span class=&quot;keyword keyword_other keyword_other_DML keyword_other_DML_sql&quot;&gt;LEFT JOIN&lt;/span&gt; tags &lt;span class=&quot;keyword keyword_other keyword_other_DDL keyword_other_DDL_create keyword_other_DDL_create_II keyword_other_DDL_create_II_sql&quot;&gt;ON&lt;/span&gt; (&lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;blogs_tags&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;tag_id&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_sql&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;tags&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;id&lt;/span&gt;)
&lt;span class=&quot;keyword keyword_other keyword_other_DML keyword_other_DML_sql&quot;&gt;GROUP BY&lt;/span&gt;
    &lt;span class=&quot;constant constant_other constant_other_database-name constant_other_database-name_sql&quot;&gt;blogs&lt;/span&gt;.&lt;span class=&quot;constant constant_other constant_other_table-name constant_other_table-name_sql&quot;&gt;id&lt;/span&gt;
&lt;span class=&quot;keyword keyword_other keyword_other_DML keyword_other_DML_sql&quot;&gt;HAVING&lt;/span&gt;
    FIND_IN_SET(&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;&#039;&lt;/span&gt;Javascript&#039;&lt;/span&gt;, tag_list)
    &lt;span class=&quot;keyword keyword_other keyword_other_DML keyword_other_DML_sql&quot;&gt;AND&lt;/span&gt; FIND_IN_SET(&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_sql&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_sql&quot;&gt;&#039;&lt;/span&gt;MooTools&#039;&lt;/span&gt;, tag_list)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    I had put together most of the query a while ago, but finally figured out the 
    &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat&quot; title=&quot;MySQL :: MySQL 5.0 Reference Manual :: 11.11.1 GROUP BY (Aggregate) Functions&quot; target=&quot;_blank&quot;&gt;GROUP_CONCAT function&lt;/a&gt; 
    and the &#039;HAVING&#039; part. It&#039;s definitely a beefy query. Not only is it a 3-table JOIN, but it also uses a temporary table, and I believe the &#039;HAVING&#039; 
    part is evaluated after the entire table is scanned anyway. But after clocking this query, along with breaking the query into 2 and timing that, this way takes 
    about 2/3 the times that the 2 queries together take. The above is an &#039;all&#039; style query, to switch to &#039;any&#039;, just with the &#039;AND&#039; to an &#039;OR&#039; and you&#039;re 
    set.
&lt;/p&gt;

&lt;p&gt;And I can easily apply this to my delicious links by sucking them into a local &#039;links&#039; table by placing a &lt;a href=&quot;http://us.php.net/curl&quot; title=&quot;PHP: cURL - Manual&quot; target=&quot;_blank&quot;&gt;cURL request&lt;/a&gt; to the &lt;a href=&quot;http://delicious.com/help/api&quot; title=&quot;Delicious API&quot; target=&quot;_blank&quot;&gt;delicious API&lt;/a&gt; like so:&lt;/p&gt;

&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_php&quot;&gt;&lt;span class=&quot;source source_php source_php_embedded source_php_embedded_block source_php_embedded_block_html&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_embedded punctuation_definition_embedded_begin punctuation_definition_embedded_begin_php&quot;&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;url&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;https://{username}:{password}@api.del.icio.us/v1/posts/all/&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;curl&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;support support_function support_function_interface support_function_interface_php&quot;&gt;curl_init&lt;/span&gt;(&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;url&lt;/span&gt;)&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;support support_function support_function_interface support_function_interface_php&quot;&gt;curl_setopt&lt;/span&gt;(&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;curl&lt;/span&gt;, &lt;span class=&quot;constant constant_other constant_other_php&quot;&gt;CURLOPT_RETURNTRANSFER&lt;/span&gt;, &lt;span class=&quot;constant constant_language constant_language_php&quot;&gt;true&lt;/span&gt;)&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;result&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;support support_function support_function_interface support_function_interface_php&quot;&gt;curl_exec&lt;/span&gt;(&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;curl&lt;/span&gt;)&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;support support_function support_function_interface support_function_interface_php&quot;&gt;curl_close&lt;/span&gt;(&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;curl&lt;/span&gt;)&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_embedded punctuation_definition_embedded_end punctuation_definition_embedded_end_php&quot;&gt;&lt;span class=&quot;source source_php&quot;&gt;?&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Be careful when testing though, them Delicious folks are pretty conservative with their request throttling. Just cache the result and you&#039;re solid. I then parse the resulting XML, make a bunch of inserts into &#039;links&#039; and &#039;links_tags&#039; tables and I can search away. The original idea was to make a little app for myself on my site where I could search my links. That is until the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3615&quot; title=&quot;Delicious bookmarks :: Firefox Add-Ons&quot; target=&quot;_blank&quot;&gt;Delicious plugin&lt;/a&gt; implemented basically the same thing.&lt;/p&gt;

&lt;p&gt;
    And that&#039;s it! Go nuts with your tags searching, or any other many-to-many relationships. Please ask questions if you have any, and let me know 
    if you might know of any other spiffier methods.
&lt;/p&gt;
&lt;p&gt;
    &lt;strong&gt;P.S.&lt;/strong&gt; &lt;a href=&quot;http://ascendvisual.com/blog/2008/08/27/tattoos-such&quot; title=&quot;Tattoos &amp;amp; Such&quot;&gt;The tattoo&lt;/a&gt; is finally done! I will post some pictures 
    once it heals up. Yipee!
&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/11/01/problem-solved-searching-many-to-many-table-relationships#comments</comments><pubDate>Sat, 01 Nov 2008 18:18:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/11/01/problem-solved-searching-many-to-many-table-relationships</guid></item>
<item><author>Chris Forrette</author><title>Obama is my home boy</title><link>http://www.chrisforrette.com/2008/10/27/obama-is-my-home-boy</link><description>&lt;p&gt;
    As you Americans know, the big presidential election is barely a week away and, though it&#039;s been talked to death, and though I know most 
    of you have your choices set, I wanted to take some time and voice my opinion to the digital world.
&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/blog/obama_mccain.jpg&quot; alt=&quot;Barack Obama and John McCain&quot; class=&quot;border&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
    With this seemingly endless war in Iraq, recent troubles with the economy, and the severely disappointing and selfish leadership we&#039;ve 
    experienced in the last 8 years, the potential impact of our choice in this election is gigantic! And I personally have had my decision 
    set to &lt;a href=&quot;http://www.barackobama.com/index.php&quot; title=&quot;Barack Obama | Change We Need&quot;&gt;Barack Obama&lt;/a&gt; for quite a while now. There 
    are people who try to push off the anti-McCain &quot;more of the same&quot; phrase saying that McCain is not Bush, but there are enough similarities 
    between the two and it is a close enough race to make me almost pee my pants and look into Canadian citizenship.
&lt;/p&gt;
&lt;p&gt;
    One of the characteristics McCain seems to share with Bush is this sort of &quot;act now, ask questions later&quot; approach. This became apparent to me when 
    the two candidates were discussing the use of nuclear energy in the debates. McCain attacked Obama for claiming to want to &quot;look into&quot; using nuclear 
    energy, where McCain seems to want to act now. Of course we would want to act cautiously before using one of the most dangerous materials in the world! 
    I feel that McCain wants to solve problems, while Obama want to solve them without making new ones.
&lt;/p&gt;
&lt;p&gt;
    The other thing that bothers me about McCain is his choice in Sarah Palin as a running mate. We can all argue about Palin&#039;s experience and whatever, 
    but I think just about everyone can agree that she is not the best choice for Vice President. The problem that I have is that I feel she was chosen 
    mostly for the fact that she is a woman. I think there was so much hype around Barack Obama and Hillary Clinton, that McCain had to do something to 
    stir things up and draw some attention his way. While I can understand that a large part of campaigning is advertising and image, I find this insanely 
    irresponsible! Forget if McCain dies, if elected, Palin will hold the second highest position in the entire country! 
&lt;/p&gt;
&lt;p&gt;
    For me, Barack Obama has the vision, charisma, and the type of leadership we need to turn ourselves around from the last 8 years. It&#039;s certainly a wake 
    up call when the simple fact that Obama can speak so eloquently is almost enough to win my vote! I feel I&#039;m on the same page with a lot of his beliefs. 
    I love that he wants to push for alternative energy research which will help save our planet, save money and create jobs. I love that he&#039;s not a former 
    military officer and wants to use diplomacy to solve our issues. I love that he&#039;s open-minded to new solutions to old problems.
&lt;/p&gt;
&lt;p&gt;
    And I know that it&#039;s superficial, but I&#039;m a designer at heart, and I have to be honest and say that one of the things that drew my attention to Obama early on is the 
    beautiful design for Barack&#039;s campaign&amp;mdash;not only internally but from designers from all over the world. As an adult, I can only remember 3 presidential elections, 
    only 2 of which I could vote in, but I don&#039;t remember ever seeing such an immense creative reaction to a politician. It&#039;s truly inspiring!
&lt;/p&gt;
&lt;p&gt;
    I was basically a coin toss between Clinton and Obama at one point, and then I visited &lt;a href=&quot;http://www.barackobama.com/index.php&quot; title=&quot;Barack Obama | Change We Need&quot;&gt;his website.&lt;/a&gt; 
    The use of &lt;a href=&quot;http://en.wikipedia.org/wiki/Gotham_(typeface)&quot; title=&quot;Gotham (typeface) - Wikipedia, the free encyclopedia&quot;&gt;Gotham&lt;/a&gt; is phenomenal! And there are 
    countless other examples of amazing artwork done in the name of Obama, 2 in particular come from a couple of artists that I&#039;ve followed for a long time, and who do 
    some awesome work. Here is San Francisco-based &lt;a href=&quot;http://www.iso50.com&quot; title=&quot;ISO50 - The Visual Work of Scott Hansen&quot;&gt;Scott Hansen&#039;s&lt;/a&gt; Progress poster:
&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;
    &lt;a href=&quot;http://blog.iso50.com/2008/05/23/iso50-obama-progress-print-out-now/&quot; title=&quot;ISO50 Obama Progress Print&quot;&gt;&lt;img src=&quot;/img/blog/iso50-obama-final-thumb.jpg&quot; alt=&quot;Barack Obama - Progress&quot; class=&quot;border&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    And &lt;a href=&quot;http://www.obeygiant.com&quot; title=&quot;Obey Giant - Worldwide Propaganda Delivery&quot;&gt;Shepard Fairey&#039;s&#039;&lt;/a&gt; Hope poster (posted in the window of my home,
    thanks to &lt;a href=&quot;http://www.upperplayground.com/&quot; title=&quot;Upper Playground&quot;&gt;Upper Playground&lt;/a&gt;):
&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;&lt;a href=&quot;http://www.obeygiant.com&quot; title=&quot;Obey Giant - Worldwide Propaganda Delivery&quot;&gt;&lt;img src=&quot;/img/blog/shepard-fairey-barack-hope-poster.jpg&quot; alt=&quot;Barack Obama - Hope&quot; class=&quot;border&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.noonprop8.com/&quot; title=&quot;No on 8, Don&#039;t Eliminate Marriage for Anyone&quot;&gt;No on Proposition 8!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;
    Regardless of what your choice is for the presidential election, we Californians have a ridiculous proposition to vote on this upcoming 
    election&amp;mdash;&lt;a href=&quot;http://www.noonprop8.com/&quot; title=&quot;No on 8, Don&#039;t Eliminate Marriage for Anyone&quot;&gt;Proposition 8&lt;/a&gt;. Proposition 8 seeks to deny homosexual couples 
    the right to marry in California. I&#039;m stunned that this is even being voted on. You would think that after the women&#039;s right struggle, and then the struggle for civil 
    rights, that we would get it! Everyone is free in America! Right? No! We are voting on a basic right! Why? Some religions don&#039;t like it! But wait, there&#039;s separation of 
    church and state, right? Yes. Let&#039;s vote!
&lt;/p&gt;
&lt;p&gt;
    Regardless of what anyone votes, this will be a right someday, this is just a matter of how much fight we are creating for everyone. 
    But regardless, we have to vote! And I think one important thing that people forget is that when they vote, they are voting for everyone. People make their voting 
    decisions based on their own opinions (of course), but we have to remember that they still affect other people&#039;s lives. In this case, if you don&#039;t agree with gay marriage, 
    &lt;strong&gt;this does not affect you!&lt;/strong&gt; Because you will never be involved in a same sex marriage! If you&#039;re worried about tradition being tarnished, don&#039;t even fret&amp;mdash;Britney Spears 
    herself took care of that years ago. So please, don&#039;t be selfish. If there&#039;s anything that should be encouraged in this world it&#039;s love, so do the right thing.
&lt;/p&gt;
&lt;p&gt;
    This ends my political rant. Feel free to send me your comments, try to argue with me, whatevs, but go forth and vote next Tuesday!
&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/10/27/obama-is-my-home-boy#comments</comments><pubDate>Mon, 27 Oct 2008 23:36:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/10/27/obama-is-my-home-boy</guid></item>
<item><author>Chris Forrette</author><title>The girl&#039;s on a roll</title><link>http://www.chrisforrette.com/2008/10/22/the-girl-s-on-a-roll</link><description>&lt;p&gt;I believe I mention &lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://ww.ashleyforrette.com&quot; target=&quot;_blank&quot;&gt;my wife&lt;/a&gt; an average of about 14.2 times per blog entry because, you know, I love her a whole bunch. I&#039;m not sure if I mentioned it here, but she took the plunge into her own full time photography business at the end of August this year and she&#039;s been doing fantastic!&lt;/p&gt;
&lt;div class=&quot;img&quot; style=&quot;width: 500px;&quot;&gt;&lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://ww.ashleyforrette.com&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3027/2876898578_3115c04120.jpg&quot; alt=&quot;My baby&quot; /&gt;&lt;/a&gt;
&lt;p&gt;Can&#039;t resist them brown eyes...&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;She&#039;s been into photography for several years now, getting steadily more and more passionate about it and becoming more and more talented, and she finally turned in her 3 month notice (yes, my lady is extremely considerate) and went full steam ahead, basically working 2 jobs for her last few months at her day job. She has now been in it, working hard, kicking ass and taking names (and photos) for the last 2 months all on her own, and I can&#039;t tell you how proud I am of her!&lt;/p&gt;
&lt;p&gt;As if that wasn&#039;t enough, she already has her very first gallery show coming up in November! She partnered up with her friend &lt;a title=&quot;Colleen Sherman Photography&quot; href=&quot;http://www.cshermanphotography.com/&quot; target=&quot;_blank&quot;&gt;Colleen&lt;/a&gt; and their show has a &quot;vibrant color&quot; theme dubbed &quot;Chromatic&quot; at Surface Gallery in Bakersfield, California.&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;&lt;img class=&quot;border&quot; src=&quot;/img/blog/chromatic.jpg&quot; alt=&quot;Chromatic - Surface Gallery&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I believe they&#039;re showing about 20 pieces each and the show will be going for 2 months staring November 7th. We&#039;ll be heading down to Bakersfield for the opening party, so if you&#039;re in the area make sure you come check it out! Here&#039;s the info:&lt;/p&gt;
&lt;p class=&quot;inset&quot;&gt;&lt;strong&gt;November 7, 2008 5-8 p.m.&lt;/strong&gt;&lt;br /&gt; The Surface Gallery&lt;br /&gt; 1703 20th St.&lt;br /&gt; Bakersfield, CA. 93301&lt;/p&gt;
&lt;p&gt;Hope to see you there, the little lady has earned buttloads of high fives!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/10/22/the-girl-s-on-a-roll#comments</comments><pubDate>Wed, 22 Oct 2008 20:46:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/10/22/the-girl-s-on-a-roll</guid></item>
<item><author>Chris Forrette</author><title>Aliens Vote</title><link>http://www.chrisforrette.com/2008/10/13/aliens-vote</link><description>&lt;p&gt;We&#039;ve got an election right around the corner, and &lt;a href=&#039;http://www.cubancouncil.com&#039; title=&#039;Cuban Council - Superb Digital Solutions&#039; target=&#039;_blank&#039;&gt;the Cubanos&lt;/a&gt; decided to launch a site called &lt;a href=&#039;http://www.aliensvote.org&#039; title=&#039;Aliens Vote&#039; target=&#039;_blank&#039;&gt;Aliens Vote&lt;/a&gt;. The site aims to (sort of) give a voice to the millions of resident aliens in the U.S. by asking who their choice would be for the upcoming election.&lt;/p&gt;

&lt;div class=&#039;img&#039;&gt;&lt;a href=&#039;http://www.aliensvote.org&#039; title=&#039;Aliens Vote&#039; target=&#039;_blank&#039;&gt;&lt;img src=&#039;/img/blog/aliens_vote.gif&#039; alt=&#039;Aliens Vote&#039; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;We&#039;re very excited to see the outcome of the whole thing, even more so because about half of the company is alien and we work with a network of freelancers from all over the world. So if you are an alien in the U.S. &lt;a href=&#039;http://www.aliensvote.org&#039; title=&#039;Aliens Vote&#039; target=&#039;_blank&#039;&gt;tell us what you&#039;ve got to say&lt;/a&gt;, or have any friends who are, pass the word along.&lt;/p&gt;

&lt;p&gt;This entry can&#039;t end without any nerd stuff, so here goes! This was my very first project in the Python web framework, &lt;a href=&#039;http://www.djangoproject.com/&#039; title=&#039;Django | The Web framework for perfectionists with deadlines&#039; target=&#039;_blank&#039;&gt;Django&lt;/a&gt; that is in production. We are good pals with the folks over at &lt;a href=&#039;http://www.mediatemple.net/&#039; title=&#039;(mt) Media Temple - Web Hosting Built to Scale.&#039; target=&#039;_blank&#039;&gt;Media Temple&lt;/a&gt;, who sponsored the project (and just underwent a pretty slick re-design by the way) and gave us use of one of their brand new &lt;a href=&#039;http://www.mediatemple.net/webhosting/gs/features/containers.php#django&#039; title=&#039;(mt) Media Temple - Webhosting - (gs) Grid-Service - Features - GridContainers&#039; target=&#039;_blank&#039;&gt;Django Grid Containers&lt;/a&gt; and it was nice, easy, and fantastic to use.&lt;/p&gt;

&lt;p class=&#039;center&#039;&gt;&lt;a href=&#039;http://www.mediatemple.net/webhosting/gs/features/containers.php#django&#039; title=&#039;(mt) Media Temple - Webhosting - (gs) Grid-Service - Features - GridContainers&#039; target=&#039;_blank&#039;&gt;&lt;img src=&#039;/img/blog/mt_django_container.jpg&#039; alt=&#039;(mt) Media Temple - Django Container&#039; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most exposure I&#039;ve had to a web framework has been with &lt;a href=&quot;http://cakephp.org/&quot; title=&quot;CakePHP: the rapid development php framework.&quot; target=&quot;_blank&quot;&gt;CakePHP&lt;/a&gt;, and using Django has been a nice breath of fresh air. Though I&#039;ve just skimmed the surface with Django (and &lt;a href=&quot;http://www.python.org/&quot; title=&quot;Python Programming Language&quot; target=&quot;_blank&quot;&gt;Python&lt;/a&gt;), it seems to be organized in a much more intuitive way, extremely flexible and portable, the command line stuff is very helpful, it comes built-in with loads of support without seeming too bloated, and I&#039;m a HUGE fan of the &lt;a href=&quot;http://en.wikipedia.org/wiki/DRY&quot; title=&quot;Don&#039;t Repeat Yourself - Wikipedia, the free encyclopedia&quot;&gt;DRY principle&lt;/a&gt; (Don&#039;t Repeat Yourself) behind the whole thing. It was definitely challenge to jump into because Django has a lot of conventions that I&#039;m unfamiliar with, and I also don&#039;t have the background in Python that I do with PHP, so I found myself flipping through a lot of reference for simple stuff like splitting strings, etc. I&#039;m excited to jump into my next Django project and I&#039;m sure I&#039;ll post more about it, but if you&#039;ve been considering it, I definitely recommend it!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/10/13/aliens-vote#comments</comments><pubDate>Mon, 13 Oct 2008 13:11:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/10/13/aliens-vote</guid></item>
<item><author>Chris Forrette</author><title>Mexican Tattoo Drawing Extravaganza</title><link>http://www.chrisforrette.com/2008/09/17/mexican-tattoo-drawing-extravaganza</link><description>&lt;p&gt;Yo! How&#039;s everyone doing? I just got home from my second tattoo session with &lt;a title=&quot;George Campise&quot; href=&quot;http://georgecampise.com/&quot; target=&quot;_blank&quot;&gt;George&lt;/a&gt; and things are coming along awesomely. He got the color in the waves done and the shading done up top, and I&#039;m going back for 1 (maybe 2) more session(s) to finish it up in a few weeks. Here&#039;s a not-so-great preview:&lt;/p&gt;
&lt;div class=&quot;img&quot;&gt;&lt;img src=&quot;/img/blog/tattoo_fish_step2.jpg&quot; alt=&quot;Jeremy Fish San Francisco tattoo step 2&quot; /&gt;&lt;/div&gt;
&lt;p&gt;I&#039;ll get some better pictures of it up when it&#039;s not puffy, bloody, and wrapped in saran wrap.&lt;/p&gt;
&lt;p&gt;We had an awesome time on our anniversary trip to Mexico! We spent 4 nights in &lt;a title=&quot;Google Maps: Maroma, Mexico&quot; href=&quot;http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=maroma,+mexico&amp;amp;sll=20.802016,-86.881599&amp;amp;sspn=0.169137,0.310364&amp;amp;ie=UTF8&amp;amp;ll=20.73091,-86.964512&amp;amp;spn=0.084608,0.155182&amp;amp;z=13&amp;amp;iwloc=addr&quot; target=&quot;_blank&quot;&gt;Maroma Beach&lt;/a&gt;, which is about 30 minutes south of Cancun, at this awesome, beautiful new all-inclusive resort. Included in our activities was relaxing, sippin&#039; drinks, visiting &lt;a title=&quot;Wikipedia: Chichen Itza&quot; href=&quot;http://en.wikipedia.org/wiki/Chichen_itza&quot; target=&quot;_blank&quot;&gt;Chichen Itza&lt;/a&gt;, partially fishtailing &lt;a title=&quot;Our rental car&quot; href=&quot;http://flickr.com/photos/ashleyforrette/2854896432/&quot; target=&quot;_blank&quot;&gt;our rental car&lt;/a&gt; before catching some air on a speed bump, etc. It was very relaxing and beautiful! Oh, and I can&#039;t stop talking about this&amp;mdash;I&#039;m not a big drinker, but while in Mexico, I tried &quot;crema de tequila&quot;, and it&#039;s very delicious. I bought myself &lt;a title=&quot;1921 Tequila Cream&quot; href=&quot;http://www.tequila1921.com/english/crema.htm&quot; target=&quot;_blank&quot;&gt;a bottle&lt;/a&gt; in fact, so if you get a chance to try it, I recommend it. Check out &lt;a title=&quot;Me and the wife in Mexico&quot; href=&quot;http://flickr.com/photos/ashleyforrette/2854896894/&quot; target=&quot;_blank&quot;&gt;my lady&#039;s Flickr account&lt;/a&gt; to see some photos of the trip.&lt;/p&gt;
&lt;p&gt;So I want to talk about a little something else that came along with our anniversary&amp;mdash;as a gift to my wife, I made a nice illustration for her. Illustration is something I love and I&#039;m always inspired by, and it&#039;s always been something I wish I was much better at. Especially when I look at all the stuff that my pals &lt;a title=&quot;The Creative Portfolio of Josh Kenyon&quot; href=&quot;http://enyocreative.com/&quot; target=&quot;_blank&quot;&gt;Josh&lt;/a&gt; and &lt;a title=&quot;The Portfolio of Colby Nichols&quot; href=&quot;http://www.colbynichols.com&quot; target=&quot;_blank&quot;&gt;Colby&lt;/a&gt; make&amp;mdash;very talented both as designers and illustrators. So I got a concept in mind for something I wanted to draw for Ashley for our anniversary. The way it was in my mind was awesome (of course) but I was extremely skeptical of whether or not I could pull something off that was half way decent. Here is my first stab at my concept in my sketchbook:&lt;/p&gt;
&lt;div class=&quot;img&quot;&gt;&lt;img src=&quot;/img/blog/anniversary_illus_concept.jpg&quot; alt=&quot;Anniversary illustration step 1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Pretty awesome, right? Not. I got a little discouraged after I finished this, but I showed it to &lt;a title=&quot;The Portfolio of Colby Nichols&quot; href=&quot;http://www.colbynichols.com&quot; target=&quot;_blank&quot;&gt;Colby&lt;/a&gt;, he gave me some nice tips, I took a day while &lt;a title=&quot;Ashley Forrette Photography&quot; href=&quot;http://www.ashleyforrette.com/&quot; target=&quot;_blank&quot;&gt;Ashley&lt;/a&gt; was away shooting a wedding, and I was actually very happy with the end result:&lt;/p&gt;
&lt;div class=&quot;img&quot;&gt;&lt;img src=&quot;/img/blog/anniversary_illus_final.jpg&quot; alt=&quot;Anniversary illustration final&quot; /&gt;&lt;/div&gt;
&lt;p&gt;I did it on this 8.5&quot; x 11&quot; cardboard-ish paper that I really like using &lt;a title=&quot;Pigma Micron&quot; href=&quot;http://www.sakuraofamerica.com/Pen-Archival&quot; target=&quot;_blank&quot;&gt;Micron&lt;/a&gt; pens and color pencils. It&#039;s pretty close to what I had in mind, Colby&#039;s suggestions helped me get it to look a bit more polished, and&amp;mdash;the best part&amp;mdash;Ashley loved it! So I&#039;m going to try to work on improving my drawing here and there, and maybe post some more stuff on here in the future.&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/09/17/mexican-tattoo-drawing-extravaganza#comments</comments><pubDate>Wed, 17 Sep 2008 23:28:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/09/17/mexican-tattoo-drawing-extravaganza</guid></item>
<item><author>Chris Forrette</author><title>Tattoos &amp; Such</title><link>http://www.chrisforrette.com/2008/08/27/tattoos-such</link><description>&lt;p&gt;Howdy strangers, it&#039;s been a while! What&#039;s going on? A lot&#039;s been happening over on my end. I am fully entrenched into the iPhone and &lt;a href=&#039;http://www.twitter.com&#039; title=&#039;Twitter&#039; target=&#039;_blank&#039;&gt;Twitter&lt;/a&gt; worlds of nerd-dom (things which were new to me in my &lt;a href=&#039;/blog/2008/07/14/iphone-adventures&#039; title=&#039;iPhone Adventures&#039;&gt;last post&lt;/a&gt;). Eventually I&#039;m sure I&#039;ll have some goofy thing on the site here where you can see my latest tweet, in case there&#039;s not enough useless stuff for you to look at on here.&lt;/p&gt;

&lt;p&gt;You might have noticed a slight change in my header/navigation area—I decided it needed of slight touch of spiffing to make the nav a little clearer. Unfortunately though, I&#039;ve been starting to get that 8-month-itch to redesign the whole damn site. I&#039;ve been thinking of some ideas but if this site serves as any example, it will take years to pan out.&lt;/p&gt;

&lt;p&gt;So you&#039;re probably wanting to hear the juicy goodness referenced in this post&#039;s title, so let&#039;s get down to it. I just recently turned the big 2-5 on August 16th and I&#039;ve been wanting to get a tattoo for a while now so my lovely wife decided to make that her gift to me. The tattoo I decided to get is sort of a tribute to San Francisco and my love for the city. It&#039;s an awesome illustration done by my favorite San Francisco artist, &lt;a href=&#039;http://www.sillypinkbunnies.com/&#039; title=&#039;Jeremy Fish&#039; target=&#039;_blank&#039;&gt;Jeremy Fish&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&#039;img&#039; style=&#039;width: 500px&#039;&gt;&lt;a href=&#039;http://www.sillypinkbunnies.com/&#039; title=&#039;Jeremy Fish&#039; target=&#039;_blank&#039;&gt;&lt;img src=&#039;/img/blog/fish_heart_in_sf.jpg&#039; alt=&#039;Jeremy Fish - I Left My Heart in San Francisco&#039; /&gt;&lt;/a&gt;&lt;p&gt;Jeremy Fish&#039;s &quot;I Left My Heart in San Francisco&quot; piece. Photo borrowed from &lt;a href=&#039;http://www.fecalface.com&#039; title=&#039;Fecal Face&#039; target=&#039;_blank&#039;&gt;Fecal Face&lt;/a&gt; and taken from his &lt;a href=&#039;https://www.upperplaygroundstore.com/catalog/item/once_upon_a_time_1904&#039; title=&#039;Jeremy Fish - Once Upon A Time&#039; target=&#039;_blank&#039;&gt;Once Upon A Time&lt;/a&gt; book&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;I did a lot of searching to find the perfect artist to take care of it for me and, after some looking, found &lt;a href=&#039;http://www.georgecampise.com/&#039; title=&#039;George Campise&#039; target=&#039;_blank&#039;&gt;George Campise&lt;/a&gt; who works out of &lt;a href=&#039;http://www.7thsontattoo.com/&#039; title=&#039;7th Son Tattoo&#039; target=&#039;_blank&#039;&gt;7th Son Tattoo&lt;/a&gt;, which happens to be located within a couple blocks of the &lt;a href=&#039;http://www.cubancouncil.com&#039; title=&#039;Cuban Council - Superbly Crafted Digital Solutions&#039; target=&#039;_blank&#039;&gt;Cuban Council&lt;/a&gt; office. I found &lt;a href=&#039;http://www.georgecampise.com/&#039; title=&#039;George Campise&#039; target=&#039;_blank&#039;&gt;his portfolio&lt;/a&gt; online somehow and was really impressed with his work—especially his awesome coloring—so I made an appointment and I dropped off my copy of Jeremy Fish&#039;s &#039;Once Upon a Time&#039; book with the piece in it, he traced it and added some sweet waves and turned it into a half sleeve. George turned out to be a very nice and super talented guy and he finished the black outline last Wednesday, August 20th, and I&#039;ll be dropping back in to start on the color in mid-September. Here&#039;s a peek just after getting it finished up:&lt;/p&gt;

&lt;div class=&#039;img&#039; style=&quot;width: 427px&quot;&gt;&lt;img src=&#039;/img/blog/tattoo_fish_outline.jpg&#039; alt=&quot;Black outline of my Jeremy Fish/San Francisco tattoo&quot; /&gt;&lt;p&gt;Taken by &lt;a href=&#039;http://www.ashleyforrette.com&#039; title=&#039;Ashley Forrette Photography&#039; target=&#039;_blank&#039;&gt;guess who&lt;/a&gt;...&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;I&#039;m totally stoked about it and can&#039;t wait to get it finished up!&lt;/p&gt;

&lt;p&gt;&lt;a href=&#039;http://www.ashleyforrette.com&#039; title=&#039;Ashley Forrette Photography&#039; target=&#039;_blank&#039;&gt;The wife&lt;/a&gt; and I just had our 1 year anniversary on Monday (woo! high five wife!) and to celebrate, we&#039;ve planned a trip to Mexico for a week starting September 7th. It should be really nice and relaxing and we&#039;re both looking forward to it.&lt;/p&gt;

&lt;p&gt;I&#039;ve been learning and experimenting a lot more than usual lately so I should have some more nerd-o code blogs coming up soon. Until then, let me know what you think of my tat and let me know if you might be getting any ink done soon. Bye!&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/08/27/tattoos-such#comments</comments><pubDate>Wed, 27 Aug 2008 23:20:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/08/27/tattoos-such</guid></item>
<item><author>Chris Forrette</author><title>iPhone Adventures</title><link>http://www.chrisforrette.com/2008/07/14/iphone-adventures</link><description>&lt;p&gt;
    As I sat in line outside of the &lt;a href=&quot;http://maps.google.com/maps?q=stonestown+mall+san+francisco&amp;amp;ie=UTF8&amp;amp;oe=utf-8&amp;amp;client=firefox-a&amp;amp;z=16&amp;amp;iwloc=addr&quot; title=&quot;Stonestown Galleria - San Francisco&quot; target=&quot;_blank&quot;&gt;Stonestown mall in San Francisco&lt;/a&gt; 
    Friday evening, waiting to purchase the brand new &lt;a href=&quot;http://www.apple.com/iphone/&quot; title=&quot;Apple iPhone 3G&quot; target=&quot;_blank&quot;&gt;iPhone 3G&lt;/a&gt;, I couldn&#039;t help but 
    take a step back and look at myself from a 3rd person perspective. I thought of what I would think of myself if I were 5-6 years younger, back in the 
    days when I was in &lt;a href=&quot;http://www.interpunk.com/item.cfm?Item=51723&quot; title=&quot;One More Day - Zero to Sixty&quot; target=&quot;_blank&quot;&gt;a punk band&lt;/a&gt; and whatnot. 
    I would definitely think my current self was a big tard. I&#039;ve grown into a huge, flourishing nerd and that&#039;s OK.
&lt;/p&gt;
&lt;p&gt;
    I&#039;ve never waited in a huge line for anything, not for new Nike shoes, not for an XBox or a Wii, nothing. So this was a first, and probably a last for 
    me. I got in line at around 7pm and I was thinking, &quot;If this line moves along nicely, I&#039;ll stay, otherwise I&#039;m getting the hell out of here.&quot; We had tried 
    going to the &lt;a href=&quot;http://www.att.com&quot; title=&quot;AT&amp;amp;T&quot; target=&quot;_blank&quot;&gt;AT&amp;amp;T&lt;/a&gt; store by our house about 15 minutes before the store opened that morning. We waited til about 15 minutes after it opened, with no line 
    movement with the 200+ person line, and left. After standing in line at Stonestown for about 15 minutes, I was told by a friendly Apple Store employee that 
    I was the very last person that was going to receive an iPhone that night, and I was now accompanied by a security guard that was going to make sure of it. 
    It was a sign, and I had to stay now! I was the chosen one!
&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/blog/matrix_the_chosen_one.jpg&quot; alt=&quot;The Chosen One&quot; /&gt;&lt;/p&gt;
&lt;p&gt;
    The most entertaining and sad part of the night was all of the people who just couldn&#039;t believe the line was closed. It&#039;s truly amazing how selfish people can be! 
    Apple Store employees are human after all, and need to go home&amp;mdash;don&#039;t they? There must have been a good 50+ people who came and argued with the security guard and/or 
    the Apple employees monitoring the line, things like: &quot;But I called ahead and they told me to come down and it was only an hour wait&quot;, &quot;But I drove here all the way from 
    the northern part of the city (for any non-San Franciscans, that&#039;s a grueling 8.5 minute drive)&quot;, etc. I mean it&#039;s just a phone. And everyone who was complaining followed 
    their complaint session with a cell phone call (a good 90% of whom made their calls with 1st gen. iPhones) to bitch to their friends about it, so it&#039;s not like they were in dire 
    need of the phone.
&lt;/p&gt;
&lt;p&gt;
    You might be thinking, &quot;Well Chris, you were waiting in the gigantor line, so you&#039;re as pathetic as those complaining people&quot;. No dude. I was the chosen one. And if they 
    had told me the line was closed, I simply would have left and gone to eat at &lt;a href=&quot;http://chevys.com/&quot; title=&quot;Chevy&#039;s Fresh Mex&quot; target=&quot;_blank&quot;&gt;Chevy&#039;s&lt;/a&gt;, which was 
    conveniently located within about 60 feet of the line. They have this really good corn stuff and &lt;a href=&quot;http://www.dosequis.com&quot; title=&quot;Dos Equis&quot; target=&quot;_blank&quot;&gt;Dos Equis Amber&lt;/a&gt;, mmm.
&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;&lt;a href=&quot;http://www.dosequis.com&quot; title=&quot;Dos Equis&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/blog/dos_equis_amber.jpg&quot; alt=&quot;Delicious Dos Equis Amber&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
    So we waited until 10:30pm, when we were about 15 people from the front of the line they announced, &quot;Sorry folks, the AT&amp;amp;T servers are completely down&quot;. Lots of cursing, 
    ooh-ing and aww-ing ensued, but thankfully they gave us front-of-the-line vouchers to use the next day. Woohoo! While waiting for our vouchers, me and 
    &lt;a href=&quot;http://www.ashleyforrette.com&quot; title=&quot;Ashley Forrette Photography&quot; target=&quot;_blank&quot;&gt;the wife&lt;/a&gt; manage to thwart 
    a few would-be line-dropper-inners who tried to grab the goods without waiting the 3.5 hours. Hi 5, wife.
&lt;/p&gt;
&lt;p&gt;
    So Saturday we took a nice leisurely morning, headed back to the Apple store around 12:30 and got right in line with about 5 people ahead of us and got our phones, woohoo! 
    I have to say the iPhone is pretty amazing, and with all of the new apps, so very useful and fun! I&#039;ve always resisted getting a &lt;a href=&quot;http://www.twitter.com&quot; title=&quot;Twitter&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt; 
    account because it&#039;s just never seemed interesting to me, but as a result of my iPhone and the 
    &lt;a href=&quot;http://iconfactory.com/software/twitterrific&quot; title=&quot;Iconfactory : Software : Twitterific&quot; target=&quot;_blank&quot;&gt;Twitterific&lt;/a&gt; app, I am now the nerdy owner of a spankin new 
    &lt;a href=&quot;http://twitter.com/chrisforrette&quot; title=&quot;Twitter / chrisforrette&quot; target=&quot;_blank&quot;&gt;Twitter account&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;&lt;a href=&quot;http://www.twitter.com/chrisforrette&quot; title=&quot;Twitter / chrisforrette&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/img/blog/logo_twitter.gif&quot; alt=&quot;Twitter&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
    I&#039;m not sure if it&#039;s because I&#039;m already a Mac user, but it&#039;s crazy how easy and intuitive it is to use. Within hours of using it, I already felt like a pro. The one tricky part 
    is the keyboard, but I&#039;m sure I&#039;ll get used to it. I&#039;ve already got the AIM app, &lt;a href=&quot;http://www.loopt.com/&quot; title=&quot;Your Social Compass | Loopt&quot; target=&quot;_blank&quot;&gt;Loopt&lt;/a&gt;, Twitterific, 
    and I&#039;m going to give &lt;a href=&quot;http://evernote.com/&quot; title=&quot;Remember Everything. | Evernote Corporation&quot; target=&quot;_blank&quot;&gt;Evernote&lt;/a&gt; a try since it has an app, and I&#039;ve heard 
    such good things about it from &lt;a href=&quot;http://www.tuaw.com/&quot; title=&quot;The Unofficial Apple Weblog&quot; target=&quot;_blank&quot;&gt;TUAW&lt;/a&gt;. Anyone else get a new iPhone? Any new apps that are rockin your world?
&lt;/p&gt;
&lt;p&gt;
    On an entirely unrelated note (or two), &lt;a href=&quot;http://www.juanzo.com&quot; title=&quot;Juanzo&quot; target=&quot;_blank&quot;&gt;Juan&lt;/a&gt; stayed with us for the week and stole our toothpaste upon departure. We all went to 
    &lt;a href=&quot;http://www.upperquad.com/&quot; title=&quot;Upper Quad&quot; target=&quot;_blank&quot;&gt;Phil&#039;s&lt;/a&gt; (another fellow &lt;a href=&quot;http://www.cubancouncil.com/&quot; title=&quot;Cuban Council - Superb Digital Solutions&quot; target=&quot;_blank&quot;&gt;Cubano&lt;/a&gt;) 
    wedding last Sunday, which was beautiful and awesome. We had the most delicious tacos in the world on Friday at 
    &lt;a href=&quot;http://www.yelp.com/biz/la-taqueria-san-francisco&quot; title=&quot; La Taqueria San Francisco, Mission | Yelp&quot; target=&quot;_blank&quot;&gt;La Taqueria&lt;/a&gt;, and it was bitter-sweet without Phil around. 
    Normally we all do 2 tacos without going into a food coma but Phil always challenges us to a 3rd. He&#039;s usually the only one who accepts the challenge. He&#039;s in Jamaica with his lady, rockin&#039; 
    the ganj and getting dreadlocks. That&#039;s all for now folks, talk to you soon!
&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/07/14/iphone-adventures#comments</comments><pubDate>Mon, 14 Jul 2008 17:44:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/07/14/iphone-adventures</guid></item>
<item><author>Chris Forrette</author><title>Easy click tracking with MooTools &amp; CakePHP</title><link>http://www.chrisforrette.com/2008/07/03/easy-click-tracking-with-mootools-cakephp</link><description>&lt;p&gt;
    My pal and fellow &lt;a href=&#039;http://www.cubancouncil.com&#039; title=&#039;Cuban Council - Superb Digital Solutions&#039; target=&#039;_blank&#039;&gt;Cubano&lt;/a&gt;, &lt;a href=&#039;http://juanzo.com/&#039; title=&#039;Juanzo&#039; target=&#039;_blank&#039;&gt;Juan&lt;/a&gt; has always hated how I track my links on this site. When I first started it up, I wanted to create a shared
    library on here, where I could sync up all of my links from &lt;a href=&#039;http://del.icio.us&#039; title=&#039;del.icio.us&#039; target=&#039;_blank&#039;&gt;del.icio.us&lt;/a&gt; in a table in my local database, and use those links all over, in my posts, 
    etc., track their clicks, and then have a listing of all my links by tag, and, from tracking clicks, also be able to sort them by popularity. It still might happen 
    eventually, but I haven&#039;t been thoroughly motivated to finish it up. I used to want to finish it really badly so I could use it for my own purposes. I use 
    &lt;a href=&#039;http://www.mozilla.com/en-US/firefox/&#039; title=&#039;Firefox web browser&#039;&gt;Firefox&lt;/a&gt; along with the &lt;a href=&#039;https://addons.mozilla.org/en-US/firefox/addon/3615&#039; title=&#039;Delicious Bookmarks :: Firefox add-ons&#039;&gt;Delicious&lt;/a&gt; plugin, and I always want to search links by all of the tags I enter. For example, if I put in &#039;Subversion Manual&#039; (that 
    combo is used a lot), I only want to see the links that have &lt;strong&gt;both&lt;/strong&gt; of those tags, not &lt;strong&gt;either&lt;/strong&gt; of them. Well it seems with the update to 
    Firefox 3 there was also an update to the Delicious plugin that takes care of this for me. Motivation fully depleted.
&lt;/p&gt;
&lt;p&gt;
    Either way, I have been thinking of reworking the link tracking for quite some time. I&#039;ve been using the format &#039;/links/go/123&#039; to track the links, rather than the URL itself. 
    I think this frustrated &lt;a href=&#039;http://juanzo.com/&#039; title=&#039;Juanzo&#039; target=&#039;_blank&#039;&gt;Juan&lt;/a&gt; because he likes to see his status bar update at the foot of his browser and decide if he wants to go to that link or not. There have been a 
    number of projects I&#039;ve worked on where link tracking has been asked for by the client, so I decided to throw something together today.
&lt;/p&gt;
&lt;p&gt;
    I created a &lt;a href=&#039;http://www.mootools.net/&#039; title=&#039;MooTools: The Compact Javascript Framework&#039; target=&#039;_blank&#039;&gt;MooTools&lt;/a&gt; class called &#039;LinkTrack&#039; that, in a simple 19 lines of code, scans the page for the links you specify, and, on the click event, sends the link information 
    to a specified URL via AJAX. Here&#039;s what the class looks like:
&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;var&lt;/span&gt; LinkTrack &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;meta meta_function meta_function_json meta_function_json_js&quot;&gt;&lt;span class=&quot;entity entity_name entity_name_function entity_name_function_js&quot;&gt;track&lt;/span&gt;: &lt;span class=&quot;storage storage_type storage_type_function storage_type_function_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_parameter variable_parameter_function variable_parameter_function_js&quot;&gt;links, url&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;        
        links&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;each&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
            item&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;addEvent&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;click&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;var&lt;/span&gt; request &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;meta meta_class meta_class_instance meta_class_instance_constructor&quot;&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_new keyword_operator_new_js&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;entity entity_name entity_name_type entity_name_type_instance entity_name_type_instance_js&quot;&gt;Ajax&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
                    method: &lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;post&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;
                    data: &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
                        &lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;url&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;: item&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;getProperty&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;href&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;title&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;: item&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;getProperty&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;title&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;
                    &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;request&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;And here&#039;s what the function call looks like:&lt;/p&gt;

&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;support support_class support_class_js&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;addEvent&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;domready&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    LinkTrack&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;track&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;$$&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;a[target=_blank]&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_js&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_js&quot;&gt;&#039;&lt;/span&gt;/links/track/&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_js&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    So here I passed in all &#039;a&#039; tags with a &#039;_blank&#039; target, so I track every link leading away from the site. You could easily change this to track all links with the class &#039;link&#039;, or whatever 
    else you can think up. I&#039;ve got this site running in &lt;a href=&#039;http://www.cakephp.org/&#039; title=&#039;The rapid development PHP framework&#039; target=&#039;_blank&#039;&gt;CakePHP&lt;/a&gt;, so I made a &#039;track&#039; method in my &#039;links&#039; controller that looks like this:
&lt;/p&gt;

&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_php&quot;&gt;&lt;span class=&quot;source source_php source_php_embedded source_php_embedded_block source_php_embedded_block_html&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_embedded punctuation_definition_embedded_begin punctuation_definition_embedded_begin_php&quot;&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class=&quot;meta meta_class meta_class_php&quot;&gt;&lt;span class=&quot;storage storage_type storage_type_class storage_type_class_php&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;entity entity_name entity_name_type entity_name_type_class entity_name_type_class_php&quot;&gt;LinksController&lt;/span&gt; &lt;span class=&quot;storage storage_modifier storage_modifier_extends storage_modifier_extends_php&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;entity entity_other entity_other_inherited-class entity_other_inherited-class_php&quot;&gt;AppController&lt;/span&gt; {&lt;/span&gt;
    
    &lt;span class=&quot;keyword keyword_operator keyword_operator_string keyword_operator_string_php&quot;&gt;...&lt;/span&gt;
    
&lt;span class=&quot;meta meta_function meta_function_php&quot;&gt;    &lt;span class=&quot;storage storage_type storage_type_function storage_type_function_php&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;entity entity_name entity_name_function entity_name_function_php&quot;&gt;track&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_php&quot;&gt;(&lt;/span&gt;)&lt;/span&gt; {
        &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;this&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;variable variable_other variable_other_property variable_other_property_php&quot;&gt;autoRender&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant constant_language constant_language_php&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;keyword keyword_control keyword_control_php&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;support support_function support_function_php_pcre support_function_php_pcre_php&quot;&gt;preg_match&lt;/span&gt;(&lt;span class=&quot;string string_regexp string_regexp_single-quoted string_regexp_single-quoted_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;/&lt;/span&gt;http:\/\/(www&lt;span class=&quot;constant constant_character constant_character_escape constant_character_escape_regex constant_character_escape_regex_php&quot;&gt;\.&lt;/span&gt;)?ascendvisual.com(.&lt;span class=&quot;keyword keyword_operator keyword_operator_regexp keyword_operator_regexp_php&quot;&gt;*&lt;/span&gt;)&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;/&#039;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;variable variable_other variable_other_global variable_other_global_safer variable_other_global_safer_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;[&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;HTTP_REFERER&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;]) &lt;span class=&quot;keyword keyword_operator keyword_operator_logical keyword_operator_logical_php&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;this&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;variable variable_other variable_other_property variable_other_property_php&quot;&gt;RequestHandler&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;meta meta_function-call meta_function-call_object meta_function-call_object_php&quot;&gt;isAjax&lt;/span&gt;() &lt;span class=&quot;keyword keyword_operator keyword_operator_logical keyword_operator_logical_php&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_logical keyword_operator_logical_php&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;support support_function support_function_construct support_function_construct_php&quot;&gt;empty&lt;/span&gt;(&lt;span class=&quot;variable variable_other variable_other_global variable_other_global_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;_POST&lt;/span&gt;[&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;])) {
            
            &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;data&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;variable variable_other variable_other_global variable_other_global_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;_POST&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;keyword keyword_control keyword_control_php&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;find&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;this&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;variable variable_other variable_other_property variable_other_property_php&quot;&gt;Link&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;meta meta_function-call meta_function-call_object meta_function-call_object_php&quot;&gt;find&lt;/span&gt;(&lt;span class=&quot;meta meta_array meta_array_php&quot;&gt;&lt;span class=&quot;support support_function support_function_construct support_function_construct_php&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_begin punctuation_definition_array_begin_php&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_key keyword_operator_key_php&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;data&lt;/span&gt;[&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;]&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_end punctuation_definition_array_end_php&quot;&gt;)&lt;/span&gt;&lt;/span&gt;) {
                &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;this&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;variable variable_other variable_other_property variable_other_property_php&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;find&lt;/span&gt;[&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;Link&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;][&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;]&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;out&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;this&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;variable variable_other variable_other_property variable_other_property_php&quot;&gt;Link&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;meta meta_function-call meta_function-call_object meta_function-call_object_php&quot;&gt;saveField&lt;/span&gt;(&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;clicks&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;, (&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;find&lt;/span&gt;[&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;Link&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;][&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;clicks&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;] &lt;span class=&quot;keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_php&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;constant constant_numeric constant_numeric_php&quot;&gt;1&lt;/span&gt;))&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
            } &lt;span class=&quot;keyword keyword_control keyword_control_php&quot;&gt;else&lt;/span&gt; {
                &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;data&lt;/span&gt;[&lt;span class=&quot;string string_quoted string_quoted_single string_quoted_single_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php&quot;&gt;&#039;&lt;/span&gt;&lt;span class=&quot;meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php&quot;&gt;clicks&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php&quot;&gt;&#039;&lt;/span&gt;&lt;/span&gt;] &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant constant_numeric constant_numeric_php&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;out&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;this&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;variable variable_other variable_other_property variable_other_property_php&quot;&gt;Link&lt;/span&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_class keyword_operator_class_php&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;meta meta_function-call meta_function-call_object meta_function-call_object_php&quot;&gt;save&lt;/span&gt;(&lt;span class=&quot;variable variable_other variable_other_php&quot;&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php&quot;&gt;$&lt;/span&gt;data&lt;/span&gt;)&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php&quot;&gt;;&lt;/span&gt;
            }
            
        }
    }
}

&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_embedded punctuation_definition_embedded_end punctuation_definition_embedded_end_php&quot;&gt;&lt;span class=&quot;source source_php&quot;&gt;?&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
    I run a check to make sure the request is coming from my own site, that it&#039;s an AJAX request (using CakePHP&#039;s &lt;a href=&#039;http://api.cakephp.org/1.2/class_request_handler_component.html&#039; title=&#039;API for CakePHP: RequestHandler Component&#039; target=&#039;_blank&#039;&gt;RequestHandler Component&lt;/a&gt;), and that a URL is set. The I scan my links 
    table to see if that URL is already in there. If it is, I increment the click count, if not, the record is created with a click value of &#039;1&#039;. Pretty simple eh?
&lt;/p&gt;
&lt;p&gt;
    Feel free to let me know what you think, and, if you&#039;d like, you can download the MooTools LinkTrack class I made by 
    &lt;a href=&#039;/snippets/download/1&#039; title=&#039;Download MooTools LinkTrack class&#039;&gt;clicking here&lt;/a&gt; or over on the right under &#039;Related Snippets&#039;. That&#039;s all for now folks, have a 
    fantastic 4th of July weekend!
&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/07/03/easy-click-tracking-with-mootools-cakephp#comments</comments><pubDate>Thu, 03 Jul 2008 22:50:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/07/03/easy-click-tracking-with-mootools-cakephp</guid></item>
<item><author>Chris Forrette</author><title>New Website: Ashley Forrette Photography</title><link>http://www.chrisforrette.com/2008/06/20/new-website-ashley-forrette-photography</link><description>&lt;p&gt;
    Hey folks! It&#039;s been a while! Sorry it&#039;s been a while but that&#039;s just how I roll. I&#039;ve actually been thinking up all sorts of nerdy 
    subject matter, it&#039;s just been crazy as always and I haven&#039;t forced myself to post. I finally got myself into a corner to post for 
    you today, awesome right?
&lt;/p&gt;

&lt;p&gt;
    It&#039;s been live for a while now, but I finally got my wife &lt;a href=&#039;http://www.ashleyforrette.com&#039; target=&#039;_blank&#039; title=&#039;Ashley Forrette Photography&#039;&gt;Ashley&#039;s photography portfolio website &lt;/a&gt; launched, go check it out! Today I&#039;m 
    going to spill the beans on how I made it, and hopefully give some of you folks some good ideas. It was a fairly quick and simple build
    using &lt;a href=&#039;http://api.cakephp.org/&#039; target=&#039;_blank&#039; title=&#039;CakePHP&#039;&gt;CakePHP&lt;/a&gt;, the &lt;a href=&#039;http://www.flickr.com/services/api/&#039; target=&#039;_blank&#039; title=&#039;Flickr API&#039;&gt;Flickr API&lt;/a&gt; and some &lt;a href=&#039;http://www.mootools.net/&#039; target=&#039;_blank&#039; title=&#039;MooTools&#039;&gt;MooTools&lt;/a&gt; magic.
&lt;/p&gt;
&lt;p class=&#039;center&#039;&gt;&lt;a href=&#039;http://www.ashleyforrette.com&#039; target=&#039;_blank&#039; title=&#039;Ashley Forrette Photography&#039;&gt;&lt;img src=&#039;/img/blog/ashley_forrette.jpg&#039; alt=&#039;Ashley Forrette Photography&#039; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
    So the coolest thing about the site is that it&#039;s all Flickr-fed. Ashley chose a set of categories she wanted to use and I had her 
    create Flickr sets for each of them. Each category you click on references a specific Flickr set that&#039;s pulled in and cached via a 
    nice, reusable table-less Flickr model I created for &lt;a href=&#039;http://api.cakephp.org/&#039; target=&#039;_blank&#039; title=&#039;CakePHP&#039;&gt;CakePHP&lt;/a&gt;. Why is that even cool you ask? Because I didn&#039;t have to worry about handling and
    storing uploads or anything&amp;mdash;the site requires no admin interface at all&amp;mdash;and it also works as a bit of extra exposure for 
    her shots, being both on the Flickr site and her portfolio site. The Flickr model I&#039;ve created has proven useful in a number of cases&amp;mdash;I even use it on this very 
    site for when user comments are posted. I basically just disable Cake&#039;s table linkage and used a few methods to access Flickr&#039;s various API 
    methods.
&lt;/p&gt;

&lt;p&gt;
    The most challenging part of the site was the Javascript. If you check the site out, you can see that the image is preloaded (using the MooTools 
    &lt;a href=&#039;http://docs.mootools.net/Plugins/Assets&#039; target=&#039;_blank&#039; title=&#039;MooTools Docs - Plugins/Assets&#039;&gt;Assets&lt;/a&gt; class), the thumb menu is animated, and there are some nice fade transitions in there too. I accomplished it all in a custom MooTools class 
    called &#039;Photoset&#039;. It ended up being about 180 lines of code&amp;mdash;not too bad&amp;mdash;and handles all of the javascript on the site&amp;mdash;the loading, 
    fades, menu, everything. The load/fade transition was the trickiest part, but I used the Asset class along with MooTools chaining and did it in about 
    12 lines of code:
&lt;/p&gt;
&lt;pre class=&quot;textmate-source monokai&quot;&gt;&lt;span class=&quot;source source_js&quot;&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;loader&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;support support_constant support_constant_dom support_constant_dom_js&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant constant_numeric constant_numeric_js&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;chain&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;meta meta_class meta_class_instance meta_class_instance_constructor&quot;&gt;&lt;span class=&quot;keyword keyword_operator keyword_operator_new keyword_operator_new_js&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;entity entity_name entity_name_type entity_name_type_instance entity_name_type_instance_js&quot;&gt;Asset.image&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;load&lt;span class=&quot;meta meta_delimiter meta_delimiter_object meta_delimiter_object_comma meta_delimiter_object_comma_js&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt; 
        &lt;span class=&quot;meta meta_function meta_function_json meta_function_json_js&quot;&gt;&lt;span class=&quot;entity entity_name entity_name_function entity_name_function_js&quot;&gt;onload&lt;/span&gt;: &lt;span class=&quot;storage storage_type storage_type_function storage_type_function_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_end punctuation_definition_parameters_end_js&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;loader&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;support support_constant support_constant_dom support_constant_dom_js&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant constant_numeric constant_numeric_js&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;chain&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;photoFade&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;support support_constant support_constant_dom support_constant_dom_js&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant constant_numeric constant_numeric_js&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;chain&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;storage storage_type storage_type_js&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;photo&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;support support_constant support_constant_dom support_constant_dom_js&quot;&gt;src&lt;/span&gt; &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;=&lt;/span&gt; load&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;photoFade&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;support support_constant support_constant_dom support_constant_dom_js&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;constant constant_numeric constant_numeric_js&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;showing&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;setText&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;((&lt;/span&gt;index &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;constant constant_numeric constant_numeric_js&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;loading &lt;span class=&quot;keyword keyword_operator keyword_operator_js&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant constant_language constant_language_boolean constant_language_boolean_false constant_language_boolean_false_js&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;bind&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;bind&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;ˇ
        &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;bind&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;meta meta_brace meta_brace_curly meta_brace_curly_js&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;meta meta_delimiter meta_delimiter_method meta_delimiter_method_period meta_delimiter_method_period_js&quot;&gt;.&lt;/span&gt;bind&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;variable variable_language variable_language_js&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;meta meta_brace meta_brace_round meta_brace_round_js&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;punctuation punctuation_terminator punctuation_terminator_statement punctuation_terminator_statement_js&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
    Basically I fade in the &#039;loading&#039; indicator, preload the image via &lt;a href=&#039;http://docs.mootools.net/Plugins/Assets#Assets:image&#039; target=&#039;_blank&#039; title=&#039;MooTools Docs - Plugins/Assets - Assets.image&#039;&gt;Asset.image&lt;/a&gt;, fade out the loader, fade out the previous photo, change the photo source, and fade it back up. Whew!
    Chaining is a little tricky to structure in a nice, readable way, but so nice to use! With &lt;a href=&#039;http://docs.mootools.net/Class/Class.Extras#Chain:chain&#039; target=&#039;_blank&#039; title=&#039;MooTools Docs - Class/Class.Extras - Chain&#039;&gt;MooTools chaining&lt;/a&gt;, you can set a stack of time-based functions in line to occur one after 
    the other. It&#039;s basically like using an onComplete event to call another function, just much easier and cleaner.
&lt;/p&gt;

&lt;p&gt;
    And that&#039;s all! &lt;a href=&#039;http://www.ashleyforrette.com&#039; target=&#039;_blank&#039; title=&#039;Ashley Forrette Photography&#039;&gt;Check out the site&lt;/a&gt; and you know where to go if you need a good (and sexy) photographer. Feel free to post comments if you have any questions and look out for plenty more updates coming soon.
&lt;/p&gt;</description><comments>http://www.chrisforrette.com/blog/2008/06/20/new-website-ashley-forrette-photography#comments</comments><pubDate>Fri, 20 Jun 2008 00:48:00 -0700</pubDate><guid>http://www.chrisforrette.com/2008/06/20/new-website-ashley-forrette-photography</guid></item>
</channel></rss>