<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description> 

I am a web geek, the founder of Foodgeeks and Winegeeks, a Scrabble player, a gardener and a trekker.  I live in Portland, Oregon, where the rain is plentiful and the coffee is delicious.

Find Me





 

 





 

 





var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

try {
var pageTracker = _gat._getTracker("UA-94393-9");
pageTracker._trackPageview();
} catch(err) {}</description><title>Ryan Snyder</title><generator>Tumblr (3.0; @ryansnyder)</generator><link>http://ryansnyder.me/</link><item><title>Announcing the Bespin Plugin Gallery</title><description>&lt;p&gt;The past couple months at &lt;a href="http://www.mozilla.org/"&gt;Mozilla&lt;/a&gt; I’ve been plugging away (sorry for the pun) at the &lt;a href="http://bespinplugins.mozillalabs.com"&gt;Bespin Plugin Gallery&lt;/a&gt;, and we’ve &lt;a href="http://mozillalabs.com/bespin/2010/07/29/bespin-plugin-gallery-is-now-live/"&gt;announced today&lt;/a&gt; that it’s officially live.  Yay!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4112/4841524210_407acf2cf8.jpg" align="middle"/&gt;&lt;/p&gt;
&lt;p&gt;But wait, let’s back up a sec.  First we need to talk about &lt;a href="https://bespin.mozillalabs.com/"&gt;Bespin&lt;/a&gt;, because most of the people I talk to don’t know about this Mozilla-sponsored project. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4148/4840904261_a00120d918.jpg" align="middle"/&gt;&lt;/p&gt;
&lt;p&gt;Bespin is a code editor that you can embed in any web page.  It’s lightweight, easy to use code editor that’s also easy on the eyes.  It’s named Bespin after the &lt;a href="http://en.wikipedia.org/wiki/Bespin"&gt;planet in Star Wars The Empire Strikes Back&lt;/a&gt;, where Cloud City can be found.  After all, the idea for the project is to provide developers with the ability to write, save and publish code in the proverbial web-based cloud.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm5.static.flickr.com/4090/4841518268_7752e8d350.jpg" align="middle" height="397" width="464"/&gt;&lt;/p&gt;
&lt;p&gt;The plugin gallery is a repository of plug-ins that are developed for Bespin.  As a user of Bespin, you may download a &lt;a href="http://bespinplugins.mozillalabs.com/plugins/5"&gt;Python Syntax Highlighter&lt;/a&gt; or a &lt;a href="http://bespinplugins.mozillalabs.com/plugins/7"&gt;Vim Command Mapping Tool&lt;/a&gt;, and install these plug-ins into your Bespin editor to easily customize your coding environment.  To get started building plugins for Bespin, check out the &lt;a href="https://bespin.mozillalabs.com/docs/pluginguide/index.html"&gt;Bespin Plugin Guide&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;I had a lot of fun working with &lt;a href="http://www.blueskyonmars.com/"&gt;Kevin Dangoor&lt;/a&gt; on the project, and am grateful for the help of &lt;a href="http://www.seanmartell.com/"&gt;Sean Martell&lt;/a&gt;, &lt;a href="http://www.focalcurve.com/"&gt;Craig Cook&lt;/a&gt;, &lt;a href="http://weblogs.mozillazine.org/stephend/"&gt;Stephen Donner&lt;/a&gt; and the rest of the QA team. &lt;/p&gt;</description><link>http://ryansnyder.me/post/876012233</link><guid>http://ryansnyder.me/post/876012233</guid><pubDate>Thu, 29 Jul 2010 11:12:00 -0700</pubDate><category>bespin</category><category>mozilla</category></item><item><title>200,000 Icons in the Icon Rainbow</title><description>&lt;p&gt;&lt;span class="Apple-style-span"&gt;&lt;span id="internal-source-marker_0.02930538449436426"&gt;In the initial launch of &lt;a href="http://www.iconrainbow.com"&gt;Icon Rainbow&lt;/a&gt;, an icon color analyzer, we featured a small subset of 5,000 icons from the Apple iTunes store.  But &lt;a href="http://www.skinnywhitegirl.com"&gt;Crystal&lt;/a&gt; and I knew that Icon Rainbow couldn’t be considered a fully developed project until we had the icons for all of the iPhone apps in the iTunes app store.  Well, it’s official - the Icon Rainbow now features the icons for all 200,000 apps in the iTunes app store.  And I guess that means you could call it a fully developed project now.  &lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;I re-wrote the scripts that scraped, analyzed and saved all of the icons from apple.com, and ran those over the course of 4 weeks on our poor little $20 Slicehost server, which is still whimpering from its taskload.  Now that everything has been analyzed and saved, the icons have been migrated to Amazon S3 and an aggressive caching scheme has been put in place - the new Icon Rainbow dataset is ready for your perusing.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;What’s next?  First, we’re planning to open source the code.  Next, we want to find ways that we can highlight the top applications from the app store, as well as the interesting colors that icons appear in the icons (my, designers sure do love their browns and periwinkles).  And eventually, we’d like to be able to highlight color trends that we notice in the app store.  We know we won’t be able to pull off color trending on our sad Slicehost server, so we’ll be looking into ways to efficiently analyze all of the data we’ll be collecting.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://ryansnyder.me/post/832388149</link><guid>http://ryansnyder.me/post/832388149</guid><pubDate>Mon, 19 Jul 2010 08:52:00 -0700</pubDate><category>iconrainbow</category></item><item><title>Creating Convenience when following Pollan's Food Rules</title><description>&lt;p&gt;&lt;span class="Apple-style-span"&gt;&lt;span id="internal-source-marker_0.660699425265193"&gt;For the month of June, I made a &lt;a href="http://ryansnyder.me/post/656889447/hitting-the-reset-button"&gt;number of commitments&lt;/a&gt; to myself, including following the guidelines laid out by &lt;a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=3&amp;ved=0CDEQFjAC&amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMichael_Pollan&amp;ei=HdgwTJvFM5CInQfBsNzUAw&amp;usg=AFQjCNHEpIP46olBJFC7o-kkQl-lO1gHdw&amp;sig2=TLyfuRba64rFoeL5trs5XQ"&gt;Michael Pollan&lt;/a&gt; in his book &lt;a href="http://www.amazon.com/Food-Rules-Eaters-Michael-Pollan/dp/014311638X/ref=sr_1_1?ie=UTF8&amp;tag=foodgeekscom-20"&gt;Food Rules&lt;/a&gt;.  &lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;Following these rules wasn’t terribly difficult, as I already practiced a number of guidelines laid out in the book.  But where I got tripped up the most was on the days I was working long hours and needed quick, convenient meals and beverages to make it through the day.  &lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;Whether your crutch is fast food or packaged microwaveable meals, here are a few of the things I found helpful to plan ahead, so that I did not depend on modern convenient foods when following Pollan’s Food Rules:&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Prep Breakfast and Lunch the Night Before&lt;/strong&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;When we’re running late for work, or have to grab a quick meal in between meetings, we simply don’t have time to prepare a meal.  But if we think and plan ahead, we can overcome this matter of inconvenience.  Prepping breakfast and packing lunches the night before are the best way to ensure we’ll eat proper meals the next day.  I try to package small salads in plastic containers to make sure I cover my plant intake needs, and always keep a salad dressing mixture of 2/3 part olive oil, 1/3 part balsamic vinegar, with dashes of salt, pepper and crushed oregano in my office.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Make multiple dishes ahead of time on Weekends&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;Take advantage of lazy Sundays to prep 2 to 3 dishes that can easily provide lunches for each day of the week.  Soups and stews are easy to prepare ahead of time, and ideal for packing a lunch that can be re-heated.  I love to roast a chicken for dinner, carve up the remaining meat that same day and create a tasty chicken salad, and then use the bones and carcass to prepare a homemade chicken broth.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Know which Foods are being Harvested&lt;/strong&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;Keeping tabs on which foods are being harvested in your area at the given time will provide you the ability to plan your meals and shopping list in advance.  If tomatoes are about to come in season, you’ll have time to research recipes that you can make use tomatoes.  And having a set of recipes at the ready will allow you to know exactly which ingredients to add to your shopping list.  When tomatoes finally do come in season, you’ll be prepared! &lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;Shameless plug:  This tip is the reason that I created the &lt;a href="http://www.foodgeeks.com/seasonal"&gt;local seasonal foods guide&lt;/a&gt; on &lt;a href="http://www.foodgeeks.com/"&gt;Foodgeeks&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://ryansnyder.me/post/770004608</link><guid>http://ryansnyder.me/post/770004608</guid><pubDate>Sun, 04 Jul 2010 11:53:00 -0700</pubDate><category>food</category><category>Michael Pollan</category></item><item><title>Willie is my friend Jen’s cat.  She will be moving to San...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_l47yg4eSRY1qzrn5ro1_500.gif"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Willie is my friend Jen’s cat.  She will be moving to San Francisco for school, and can’t have cats where she’ll be.  Can you help find Willie a home?  Thanks!&lt;/p&gt;</description><link>http://ryansnyder.me/post/711941577</link><guid>http://ryansnyder.me/post/711941577</guid><pubDate>Fri, 18 Jun 2010 09:43:00 -0700</pubDate></item><item><title>We just launched a new feature on Foodgeeks that shows all of...</title><description>&lt;object type="application/x-shockwave-flash" width="400" height="300" data="http://vimeo.com/moogaloop.swf?clip_id=12468332&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF"&gt;&lt;param name="quality" value="best" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="scale" value="showAll" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12468332&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF" /&gt;&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=12468332&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;We just launched a new feature on &lt;a href="http://www.foodgeeks.com"&gt;Foodgeeks&lt;/a&gt; that shows all of the &lt;a href="http://www.foodgeeks.com/seasonal"&gt;seasonal fruits and vegetables&lt;/a&gt; that are grown fresh in your state at the current moment.  I’m talking briefly about this feature, but also encouraging people to thing ingredients first, not recipes first, when preparing meals.&lt;/p&gt;</description><link>http://ryansnyder.me/post/687522162</link><guid>http://ryansnyder.me/post/687522162</guid><pubDate>Fri, 11 Jun 2010 09:59:00 -0700</pubDate></item><item><title>Hitting the Reset of Button</title><description>&lt;p&gt;I haven’t felt the best recently.  I haven’t been sick - I just constantly feel like I’m tired and recovering from overworking, overplaying or overindulging.  And when I’m in recovery mode, I don’t feel like I’m fully present, and therefore not able to really to give it my all in my work life or in my personal life.  So, this month I’m hitting the reset button.  For the month of June I’m making the following commitments to myself to do a bit of a cleanse in my life, which I have no doubt will help me to both feel better and feel more present on a daily basis.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;1. Start each day with intention&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;I’m the kind of person who wakes up, hops out of bed, walks 13 steps into the next room, plops down on the computer in the home office and begins working.  It doesn’t matter if I wake up at 5:30am or 9am, the first thing I do is work.  This month, I’m committing to starting each day with an act of mindfulness, whether practicing meditation, qi gong, yoga or going for a run.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;2. Follow Michael Pollen’s food rules&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Recently, I’ve been really interested in the food revolution and moving away from eating processed foods.  Michael Pollen recently authored &lt;a href="http://www.amazon.com/Defense-Food-Eaters-Manifesto/dp/0143114964/ref=pd_sim_b_1?ie=UTF8&amp;tag=foodgeekscom-20"&gt;In Defense of Food&lt;/a&gt;, where he coined the motto “Eat food, not too much, mostly plants”, and followed that by breaking down the rules for his diet in a book called &lt;a href="http://www.amazon.com/Food-Rules-Eaters-Michael-Pollan/dp/014311638X/ref=sr_1_1?ie=UTF8&amp;tag=foodgeekscom-20"&gt;Food Rules&lt;/a&gt;.  I’ll be practicing his food rules, which include things like, “Avoid foods you see advertised on television”, “Avoid foods that contain high fructose corn syrup” and “Leave something on your plate”.  These rules will most certainly help me feel better, and it won’t hurt to drop a bit of pudge this month too!&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;3. No alcohol&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;I’m hopping on the wagon for the month of June.  It will be hard not to crack open a brewski on the back patio while the grill is heating up, but it will be great to step away from fermented beverages for a month.  Alcohol is a depressant, a sleep irritant, and an instigator of bad judgement, all of which help keep one from being completely present the next day.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;4. Sleep&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;While reading the book &lt;a href="http://www.amazon.com/Rework-Jason-Fried/dp/0307463745/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1275456283&amp;sr=1-1&amp;tag=foodgeekscom-20"&gt;Rework&lt;/a&gt; by the &lt;a href="http://www.37signals.com"&gt;37 Signals&lt;/a&gt; guys, the most surprising vignette was where these successful individuals encouraged the reader to stop burning the midnight oil and to sleep more.  They argued that the best workers were the ones who greeted problems with the freshest minds.  I’ve missed a lot of sleep over the last couple years, especially during my time with &lt;a href="http://www.shizzow.com"&gt;Shizzow&lt;/a&gt;, and could certainly stand to catch up a bit.  My goal is to get at least 8 hours of sleep every night in the month of June, and I have to tell ya, that just sounds delicious.&lt;br/&gt;&lt;br/&gt;Those are my commitments for the month of June.  Most of the people I’ve mentioned these changes to have asked me why caffeine isn’t part of my list, and while I considered it, I figured I’m already making enough changes that I don’t want to add any more.  I need to feel sharp in my work, and can’t afford to suffer through a week of brain-no-worky.  I’ll at least cut back on caffeine, and replace my standard wake up medicine of &lt;a href="http://www.drinkviso.com/"&gt;Viso&lt;/a&gt; with coffee or tea.  If I gradually wean off of caffeine, maybe I’ll find I don’t need that morning cup of coffee?  We’ll see!&lt;/p&gt;</description><link>http://ryansnyder.me/post/656889447</link><guid>http://ryansnyder.me/post/656889447</guid><pubDate>Wed, 02 Jun 2010 08:25:00 -0700</pubDate><category>personal</category></item><item><title>Upgrading from Kohana 2.3.x to 2.4</title><description>&lt;p&gt;At &lt;a href="http://www.mozilla.org"&gt;Mozilla&lt;/a&gt; we’re using &lt;a href="http://kohanaframework.org/"&gt;Kohana&lt;/a&gt; as the PHP framework behind a number of our sites, including the UI for the &lt;a href="http://crash-stats.mozilla.com/"&gt;Crash Reporter&lt;/a&gt;, the &lt;a href="http://creative.mozilla.org/"&gt;Creative Collective&lt;/a&gt; and &lt;a href="http://jetpackgallery.mozillalabs.com/"&gt;Jetpack Gallery&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;I’ve been upgrading one of our sites from Kohana 2.3.4 to Kohana 2.4 to determine how difficult it will be to upgrade our other Kohana sites.  For a dot release, this upgrade is much more time intensive than I’d originally anticipated (anyone remember upgrading from Drupal 4.6 to 4.7?). &lt;/p&gt;
&lt;p&gt;I’ve recorded my upgrade notes for 1 site so that we could implement this upgrade on our other Mozilla sites using the framework.  These notes assume that you’ve downloaded the most recent version of Kohana 2.4 and that you are comfortable working from the *nix command line. As a reminder, make sure you have backups of your code so that you can revert your changes in case you run into any major problems.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;1. Move the new system folder into your repository.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cd existing_kohana_dir&lt;br/&gt;mv system system.2.3.4&lt;br/&gt;rsync -av new_kohana_dir/system ./&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;2. Copy Bootstrap.php into the root of the application folder.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;cp new_kohana_dir/application/Bootstrap.php application/Bootstrap.php&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;3. Copy over the new index.php. Update directory settings in this file if necessary.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;mv index.php index.php.2.3.4&lt;br/&gt; cp new_kohana_dir/index.php ./&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;4. Add $config[‘config_drivers’] setting to  application/config/config.php&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;/**&lt;br/&gt;  * An optional list of Config Drivers to use, they “fallback” to the one  below them if they &lt;br/&gt;  * dont work so the first driver is tried then so on until it hits the  built in “array” driver and fails &lt;br/&gt;  */&lt;br/&gt; $config[‘config_drivers’] = array();&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;5. Add $config[‘_default’] to application/config/routes.php to define  the default controller for your app.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$config[‘_default’] = ‘home’;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;6. Add $config[‘connection’][‘params’] to  application/config/database.php&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$config[‘connection’] =&gt; array&lt;br/&gt; (&lt;br/&gt; …&lt;br/&gt; ‘params’ =&gt; NULL&lt;br/&gt; )&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;7. Change html::specialchars() to html::chars() in  the application and modules directories.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;find . -name “*.php” -print | xargs sed -i “s/specialchars/chars/g”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;8. Change Kohana::log() to Kohana_Log::add() in the  application and modules directories.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;find . -name “*.php” -print | xargs sed -i  “s/Kohana::log/Kohana_Log::add/g”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;9. Change Kohana::show_404() to Kohana_404_Exception() in the application and  modules directories.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;find . -name “*.php” -print | xargs sed -i “s/Kohana::show_404()/throw  new Kohana_404_Exception()/g”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;10. Update all Kohana::lang() references, which have been split into messages, accessed via Kohana::message(), and i18n, accessed via __().&lt;/p&gt;
&lt;p&gt;11. Change all references from Controller::$input to Input::instance().&lt;br/&gt;&lt;br/&gt; 12. Many methods have been deprecated, including  html::specialurlencode(), form::close() and form::close_fieldset(), and  you’ll need to update those on a case by case basis.&lt;/p&gt;
&lt;p&gt;Now, this was not a tremendously difficult upgrade - unless your app  uses either ORM or the Database Builder.  In either case, you’ll need to  review all of your database statements to ensure that they’re working  properly after the upgrade.  I don’t consider this a complete list,  because even after upgrading one of the sites, I’m still finding gotchas  here and there.&lt;br/&gt;&lt;br/&gt; 13. Update all methods using the query builder or ORM.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;`Database::instance()` should be changed to `db::build()`&lt;/li&gt;
&lt;li&gt;`groupby` method is now `group_by`.&lt;/li&gt;
&lt;li&gt;`orderby` method is now `order_by`.&lt;/li&gt;
&lt;li&gt;The method limit($items_per_page, $offset) has been split into 2  methods: limit($items_per_page) and offset($items_per_page).&lt;/li&gt;
&lt;li&gt; get() is no longer available.  Statements will intuitively  understand that this is a select statment. Use execute() at the end of  your database statement.&lt;/li&gt;
&lt;li&gt; select(“DISTINCT … “) is now select_distinct().&lt;/li&gt;
&lt;li&gt;Aliases are not supported within a select statement; instead use an array  with the key as the alias name. Change “select(‘foo as bar’)” to  “select(array(‘foo’ =&gt; ‘bar’))”.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;14. ORM::where() now accepts 3 parameters, the middle of which is  a comparator.  ORM::in() is no longer available, and can be replaced  using ORM::where() with the comparator parameter defined as ‘in’.  For example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;-&gt;where(&lt;br/&gt;   array(&lt;br/&gt;     array(‘designs.id’, ‘=’,  $id),&lt;br/&gt;     array(‘users.status’, ‘&gt;=’, 1),&lt;br/&gt;     array(‘badges.id’, ‘in’, array(1, 2, 3))&lt;br/&gt;   )&lt;br/&gt; )&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Outside of Mozilla, I also maintain a few sites that use the Kohana framework, and I won’t be updating those sites because the cost of development outweighs the benefits provided by the new framework.&lt;/p&gt;</description><link>http://ryansnyder.me/post/613194200</link><guid>http://ryansnyder.me/post/613194200</guid><pubDate>Wed, 19 May 2010 06:51:00 -0700</pubDate><category>kohana</category><category>php</category><category>mozilla</category></item><item><title>Hey, ho, it's the Icon Rainbow!</title><description>&lt;p&gt;If you know me, then you know that I get really bored when I am not dealing with a wacky problem that needs to be solved.  When &lt;a href="http://www.skinnywhitegirl.com"&gt;Crystal Beasley&lt;/a&gt; (@&lt;a title="@skinny" href="http://www.twitter.com/skinny"&gt;skinny&lt;/a&gt;) approached me with an idea about writing a color analyzer to help quench her one of her geeky designer itches, I couldn’t turn down solving such a fun problem.&lt;br/&gt;&lt;br/&gt;The &lt;a title="Icon Rainbow" href="http://www.iconrainbow.com"&gt;Icon Rainbow&lt;/a&gt; (@&lt;a href="http://www.twitter.com/iconrainbow"&gt;iconrainbow&lt;/a&gt;) is a color analyzer for iPhone app icons.  In the first iteration, we fetched a subset of iPhone app icons and grabbed the color for every single pixel in each of the images.  We then determined which colors were most prominent in each app’s icon, in each app category, and also in the entire icon subset.&lt;br/&gt;&lt;br/&gt;Rather than spend time explaining the site and how it works, I’ll just point out a few of the places where we got a little geeky about colors…&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;The Color Spectrum&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;For each category page and each app page, the spectrum at the top of the site shows all of the colors used in that dataset. And each color of that spectrum is made a width equal to the percentage by which that color is used in the dataset represented on that page.  Click around the site, and you’ll notice that the spectrum changes from page to page…  Just compare the spectrum for the Games category and the Weather category…&lt;/p&gt;
&lt;p&gt;&lt;img alt="Games Spectrum" src="http://farm4.static.flickr.com/3118/4594409426_8b14730f4b_o.png" height="100" width="600"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Weather Spectrum" src="http://farm2.static.flickr.com/1226/4594409492_32b6b88b75_o.png" height="100" width="600"/&gt;&lt;/p&gt;
&lt;p&gt;Click +EXPAND SPECTRUM at the top of the site over any data set and stare at the pretty colors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pixels and Percentages&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For each category, all of the colors used are displayed ordered by most frequent use of the color.  Each color swatch shows how many pixels that color occupies in icons for apps belonging to that specific category.  The colored area of each color swatch acts as a graph bar by depicting the percentage that the color is used in that category; the shaded area of the color swatch acts as the end of the graph bar.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Color Percentages" src="http://farm2.static.flickr.com/1112/4593822327_f8f5ff7032_o.png" height="582" width="216"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hex, RGB and HSB&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When colors need to be detailed, we try to give you the hex value, RGB value and HSB value for that color.  For HTML geeks, it’s the hex value that matters the most, and for design geeks you can flip a coin between RGB and HSB being top dog.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src="http://farm4.static.flickr.com/3310/4593822429_69257bcdbc_o.png" height="588" width="174"/&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It’s not done yet&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Icon Rainbow is far from being complete.  We still need to grab the entire set of iPhone app icons, tweak the color matching and add some more design geekery.  But for a quick 50 hour side project, we’re pretty happy with we’ve created.&lt;/p&gt;</description><link>http://ryansnyder.me/post/585883302</link><guid>http://ryansnyder.me/post/585883302</guid><pubDate>Sun, 09 May 2010 21:30:00 -0700</pubDate><category>colors</category><category>design</category><category>iconrainbow</category></item><item><title>Scrambled Eggs with Chives and Asiago made for a tasty...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_l26nx6KT4J1qzrn5ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.foodgeeks.com/recipes/19301"&gt;Scrambled Eggs with Chives and Asiago&lt;/a&gt; made for a tasty Mother’s day treat.   The asiago and chives made for a great flavor combination, but nothing could be better than the farm fresh eggs from &lt;a href="http://www.aftonfieldfarm.com/"&gt;Afton Field&lt;/a&gt;, whose owners apprenticed with Joel Salatin.&lt;/p&gt;</description><link>http://ryansnyder.me/post/585671084</link><guid>http://ryansnyder.me/post/585671084</guid><pubDate>Sun, 09 May 2010 19:51:05 -0700</pubDate></item><item><title>Shizzow: What I would have done differently</title><description>&lt;p&gt;&lt;span class="Apple-style-span"&gt;It’s been nearly 3 months since I announced that I &lt;a href="http://blog.shizzow.com/2010/02/signing-off/"&gt;left&lt;/a&gt; &lt;a href="http://www.shizzow.com"&gt;Shizzow&lt;/a&gt;, and I’ve finally been removed from it long enough to write a reflection piece.  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;I definitely share &lt;a href="http://fastwonderblog.com/"&gt;Dawn Foster&lt;/a&gt;’s sentiments in her great &lt;a href="http://fastwonderblog.com/2010/02/10/reflecting-on-shizzow/"&gt;reflection post&lt;/a&gt; and promise not to repeat too much of what she stated.  I will reiterate that we definitely spent too much time putting the cart before the horse, whether creating a corporation entity that was too heavy for what we needed at the time, or writing our own framework to create a scalable service before even opening up to beta users.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;Creating Shizzow was a wonderful experience.  From the start, we intended for Shizzow to be a service that allowed you to find your friends.  As a refresher to how Shizzow came about in late 2007, &lt;a href="http://twitter.com/waltzer"&gt;Mark&lt;/a&gt;, &lt;a href="http://twitter.com/samkeen"&gt;Sam&lt;/a&gt; and I were coding buddies, and we found that while there were a number of ways to communicate our location, it took too much effort to contact each individual in our group separately in order to gather on the weekends.  We created Shizzow to have a unified place to communicate location and status, and used the service to find and hang out with our friends.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;Shizzow solved an immediate need for its founders, and initially for the Portland tech community as well.  We &lt;a href="http://siliconflorist.com/2008/08/11/shizzow-knows-portland-oregon-now-get-to-know-shizzow/"&gt;launched&lt;/a&gt; at a time when the Portland tech community had found each other through Twitter, and Shizzow provided a way for community members to quickly find each other in the physical world.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;But as it grew outside of the Portland tech community, Shizzow did not solve the needs of other communities.  For new users, the “win” that the service provided was not a “win” for those individuals in other communities.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;The location-based services that are still standing all provided wins for their users:  Brightkite and Gowalla met the needs of techies by offering a great user experience on their websites and iPhone apps; Brightkite allowed its users to show-off to their friends by taking and posting pictures of themselves and attach that to their check-in, while Gowalla provided virtual rewards.  Meanwhile, Foursquare met the needs of the gamer crowd by offering virtual rewards, such as badges, leaderboard statistics, and the ability to become the “mayor” of a location, which is awarded to the person to frequent a particular location the most.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;While Shizzow wasn’t able to compete with the aforementioned services, I still consider it a success for developing into the Portland friend finder that it was originally intended to become.  But the way that we weren’t successful was that we failed to shift the focus of our service to create a win for new users in order to grow the Shizzow userbase.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;Brightkite, Gowalla and Foursquare all created wins for their users, but these are temporary wins, in my opinion.  Virtual rewards only really speak to a small subset of the human population, and won’t work for mainstream people.  For my mother to have used Shizzow, it would have had to provided a win for her, and that only could have happened by creating a physically manifested reward for using the service.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;If I could do it over again, I would have approached Shizzow from the standpoint that it needed to provide a physical reward for its users.  First, I would have developed a basic iPhone app for the service.  Then I would have wrangled up local businesses to provide coupons that would be delivered via push notification as soon as a user checked in to that location.  &lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;For example, when a user checks-in to a Starbucks, they’re effectively advertising their preference for Starbucks to their entire social network, and Starbucks should reward a user for that advertisement.  After checking in to a location a user should receive a text message containing a $.50 off coupon code off their next purchase that must be used within 1 hour of checking into that location.  And heck, add an extra $.50 off for marketing that location by posting that check-in to Twitter, and maybe another $.50 off for posting that check-in to Facebook too.  If a mainstream user can save $1.50 off their $3.80 cappuccino simply by taking 15 seconds to declare their location to their social network - now that’s the kind of win that would get my mother to use that service.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;Additionally, there were a number of developers who were working on iPhone and Android applications using the Shizzow API, none of which came to fruition because we didn’t provide a win for those developers.  The win that we offered was that we promised to provide the developers with recognition for their applications.  But writing a full iPhone or Android application was simply too daunting of a task and required a greater incentive to finish those applications.  In the scenario above, I would have offered incentives for developers to create applications for each of the mobile platforms by offering those developers revenue sharing for allowing users to check-in to Shizzow and also delivering coupons to those users upon check-in.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;Now, this is a very condensed summary of what happened and why we didn’t reach the level of success that we’d intended.  There are any number of factors as to why we weren’t able to see that we weren’t meeting the needs of new users - from not being lightweight and agile enough to shift our strategy quickly, to spending too much time implementing technology that wasn’t yet necessary, to being burnt out from working full-time jobs and trying to launch this startup in our night and weekend hours.  While I don’t technically have regrets about how we operated Shizzow, I would have been okay with a &lt;a href="http://news.cnet.com/8301-1023_3-20002717-93.html"&gt;$125 million buyout offer&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;</description><link>http://ryansnyder.me/post/546692135</link><guid>http://ryansnyder.me/post/546692135</guid><pubDate>Sat, 24 Apr 2010 17:30:00 -0700</pubDate></item><item><title>This is me discussing the food revolution and some thoughts on...</title><description>&lt;object type="application/x-shockwave-flash" width="400" height="227" data="http://vimeo.com/moogaloop.swf?clip_id=10985411&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF"&gt;&lt;param name="quality" value="best" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="scale" value="showAll" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10985411&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF" /&gt;&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=10985411&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="227"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;This is me discussing the food revolution and some thoughts on how Foodgeeks can help make embracing the revolution a little less daunting for new foodies.&lt;/p&gt;</description><link>http://ryansnyder.me/post/526296600</link><guid>http://ryansnyder.me/post/526296600</guid><pubDate>Fri, 16 Apr 2010 11:00:00 -0700</pubDate></item><item><title>This was the greeting on the prep table at Beast in Portland. ...</title><description>&lt;img src="http://26.media.tumblr.com/tumblr_l0y01u00ow1qzrn5ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;This was the greeting on the prep table at Beast in Portland.  These morels were breathtaking, and the dinner didn’t disappoint either!&lt;/p&gt;</description><link>http://ryansnyder.me/post/524402525</link><guid>http://ryansnyder.me/post/524402525</guid><pubDate>Thu, 15 Apr 2010 17:01:05 -0700</pubDate></item><item><title>The first recipe I ever learned to make was this chocolate chip...</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_l0c11kC4b21qzrn5ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The first recipe I ever learned to make was this chocolate chip cookie  recipe.  So needless to say, it’s a bit nostalgic for me.  It’s a solid,  easy cookie recipe and they’re always eaten down to the last crumb.&lt;/p&gt;</description><link>http://ryansnyder.me/post/494715959</link><guid>http://ryansnyder.me/post/494715959</guid><pubDate>Sat, 03 Apr 2010 20:15:19 -0700</pubDate></item><item><title>The first batch of Foodgeeks stickers have arrived.  Find me and...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_kzgascYQoD1qzrn5ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The first batch of Foodgeeks stickers have arrived.  Find me and and I’ll hook ya up.  :)&lt;/p&gt;</description><link>http://ryansnyder.me/post/455405334</link><guid>http://ryansnyder.me/post/455405334</guid><pubDate>Wed, 17 Mar 2010 17:02:35 -0700</pubDate></item><item><title>This is a photo of duck breast prosciutto, which is quite simple...</title><description>&lt;img src="http://26.media.tumblr.com/tumblr_kz2tyjhIkL1qzrn5ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;This is a photo of duck breast prosciutto, which is quite simple to make.  It’s the wait that makes it difficult.  But with patience, you’ll experience a slice of perfection.  Here’s the recipe:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.foodgeeks.com/recipes/21838"&gt;http://www.foodgeeks.com/recipes/21838&lt;/a&gt;&lt;/p&gt;</description><link>http://ryansnyder.me/post/439287299</link><guid>http://ryansnyder.me/post/439287299</guid><pubDate>Wed, 10 Mar 2010 09:30:00 -0800</pubDate><category>food</category></item><item><title>Video</title><description>&lt;object width="400" height="325"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TsbY4YfT6Mg&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/TsbY4YfT6Mg&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="325" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://ryansnyder.me/post/411483003</link><guid>http://ryansnyder.me/post/411483003</guid><pubDate>Thu, 25 Feb 2010 10:00:00 -0800</pubDate></item><item><title>Found this in Buzz via @donpdonp.  Wow.  I need to watch this a...</title><description>&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="348" id="VideoPlayerLg44277"&gt;&lt;param name="movie" value="http://g4tv.com/lv3/44277" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed src="http://g4tv.com/lv3/44277" type="application/x-shockwave-flash" name="VideoPlayer" width="400" height="382" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Found this in Buzz via @donpdonp.  Wow.  I need to watch this a few more times to really let some of these “points” sink in.&lt;/p&gt;</description><link>http://ryansnyder.me/post/409383337</link><guid>http://ryansnyder.me/post/409383337</guid><pubDate>Wed, 24 Feb 2010 10:00:00 -0800</pubDate></item><item><title>Extracto Ethiopia Sidamo.  #nomnom</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_ky976b5mpa1qzrn5ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Extracto Ethiopia Sidamo.  #nomnom&lt;/p&gt;</description><link>http://ryansnyder.me/post/407273031</link><guid>http://ryansnyder.me/post/407273031</guid><pubDate>Tue, 23 Feb 2010 09:38:24 -0800</pubDate><category>coffee</category></item><item><title>I made Puerco Pibil this past weekend.  It’s one of the...</title><description>&lt;object width="400" height="325"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Vrw5FkLutWk&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Vrw5FkLutWk&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="325" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I made Puerco Pibil this past weekend.  It’s one of the few dishes I’ve had in my life where I’ve just freaked the eff out about it.  It’s now an annual tradition to make this every February for my sweetie’s birthday.  Here’s the recipe:&lt;/p&gt;
&lt;p&gt;&lt;a title="Puerco Pibil Recipe" href="http://www.foodgeeks.com/recipes/21370"&gt;&lt;a href="http://www.foodgeeks.com/recipes/21370"&gt;http://www.foodgeeks.com/recipes/21370&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ryansnyder.me/post/405223029</link><guid>http://ryansnyder.me/post/405223029</guid><pubDate>Mon, 22 Feb 2010 10:03:07 -0800</pubDate></item><item><title>They have Romanesco at New Seasons right now.  You almost...</title><description>&lt;img src="http://30.media.tumblr.com/tumblr_ky96s4VirE1qzrn5ro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;They have Romanesco at New Seasons right now.  You almost don’t want to eat them because you want to keep looking at them.&lt;/p&gt;</description><link>http://ryansnyder.me/post/405168926</link><guid>http://ryansnyder.me/post/405168926</guid><pubDate>Mon, 22 Feb 2010 09:19:00 -0800</pubDate></item></channel></rss>
