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

  <title>i met chris chris</title>
  <link href="http://imetchrischris.com/atom.xml" rel="self"/>
  <link href="http://imetchrischris.com/"/>
  <updated>2012-03-05T20:37:39-06:00</updated>
  <id>http://imetchrischris.com/</id>
  <author>
    <name>Chris Christensen</name>
    
  </author>

  
  <entry>
    <title>Drush tips and tricks + make, dl, .info inject</title>
    <link href="http://imetchrischris.com/blog/2012/03/01/drush-notes/"/>
    <updated>2012-03-01T20:00:00-06:00</updated>
    <id>http://imetchrischris.com/blog/2012/03/01/drush-notes</id>
    <content type="html">&lt;p&gt;&lt;article class=&quot;markdown-body&quot;&gt;&lt;p&gt;Did some testing with drush tonight and have some tips:&lt;/p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://drupal.org/project/drush&quot;&gt;http://drupal.org/project/drush&lt;/a&gt; project has nice pear install info:
(note: may need to sudo)&lt;/p&gt;




&lt;pre&gt;&lt;code&gt;pear channel-discover pear.drush.org
pear install drush/drush-5.0.0 # note: there may be some instability, but seems ok
&lt;/code&gt;&lt;/pre&gt;




&lt;p&gt;(note: drush-5.0.0 has the --gitinfofile which injects version into .info)&lt;/p&gt;


&lt;!-- more --&gt;




&lt;p&gt;&lt;a href=&quot;http://drupalcode.org/project/drush.git/blob/refs/heads/master:/README.txt#l79&quot;&gt;Drush bash completion&lt;/a&gt; is probably a handy tool for sbox CLI: &lt;a href=&quot;http://drupalcode.org/project/drush.git/blob/refs/heads/master:/drush.complete.sh&quot;&gt;http://drupalcode.org/project/drush.git/blob/refs/heads/master:/drush.complete.sh&lt;/a&gt;
namely: sourcing the bash completion script e.g.: &lt;code&gt;. /usr/share/php/drush/drush.complete.sh&lt;/code&gt;
(this provides tab completion for drush commands)&lt;/p&gt;




&lt;p&gt;Drush5 provides an injection to the .info file; an example use of this would be:
&lt;code&gt;drush dl --package-handler=git_drupalorg --gitinfofile uuid&lt;/code&gt;
(note: the --gitinfofile parameter)&lt;/p&gt;




&lt;p&gt;(running &lt;strong&gt;.info inject&lt;/strong&gt; by default)
Using the drushrc.php (a file to specify specific specific drush options in a config file...) we can ensure that &lt;code&gt;gitinfofile&lt;/code&gt; is enabled by default:
&lt;code&gt;$command_specific['pm-download'] = array('gitinfofile' =&amp;gt; TRUE);&lt;/code&gt;
(note: unfortunately drush_make doesn't respect the &lt;code&gt;drush dl&lt;/code&gt; paradigm ... drush 5 this will be the preferred method)
(note: to get drush to continue reading my rc file I had to do: &lt;code&gt;drush -c ~/.drush/drushrc.php make example.make www&lt;/code&gt;)
(tip: to see what is happening with the actual drush commands use debug/verbose: &lt;code&gt;drush --debug --verbose -c ~/.drush/drushrc.php make example.make www&lt;/code&gt;)&lt;/p&gt;




&lt;p&gt;We can also have specific &lt;strong&gt;drushrc.php&lt;/strong&gt; settings &lt;em&gt;per repo&lt;/em&gt; to be fancy:
&lt;a href=&quot;http://drupalcode.org/project/drush.git/blob/refs/heads/master:/examples/example.drushrc.php#l8&quot;&gt;http://drupalcode.org/project/drush.git/blob/refs/heads/master:/examples/example.drushrc.php#l8&lt;/a&gt;
and/or
&lt;a href=&quot;http://drupalcode.org/project/drush.git/blob/refs/heads/master:/examples/example.drushrc.php#l332&quot;&gt;http://drupalcode.org/project/drush.git/blob/refs/heads/master:/examples/example.drushrc.php#l332&lt;/a&gt;
(note: I believe this to be a nice way - and the drush recommended way - to organize our alias' and other drush specific settings.)
(note: to accomplish this I believe minimal setup through Puppet could get things in place - this would be for deployed env. - everything else would have a Readme)&lt;/p&gt;




&lt;p&gt;&amp;lt;(soon) deprecated&amp;gt;&lt;/p&gt;




&lt;p&gt;For &lt;strong&gt;drush_make .info inject&lt;/strong&gt;... (or running drush 4.5)&lt;/p&gt;




&lt;pre&gt;&lt;code&gt;cd ~/.drush/drush_make/
# http://drupal.org/node/1302820
wget http://drupal.org/files/drush_make_inject_info.patch
patch -p1 &amp;lt; drush_make_inject_info.patch
&lt;/code&gt;&lt;/pre&gt;




&lt;p&gt;&amp;lt;/deprecated&amp;gt;&lt;/p&gt;


&lt;p&gt;&lt;/article&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Drupal Camp Austin</title>
    <link href="http://imetchrischris.com/blog/2011/11/20/drupalcampaustin/"/>
    <updated>2011-11-20T20:00:00-06:00</updated>
    <id>http://imetchrischris.com/blog/2011/11/20/drupalcampaustin</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://gist.github.com/1392744&quot;&gt;Drupal Camp Austin 2011 (gist)&lt;/a&gt;&lt;/p&gt;

&lt;!-- more --&gt;


&lt;hr /&gt;

&lt;div class=&quot;wikistyle&quot;&gt;&lt;h2&gt;
&lt;a href=&quot;http://2011.drupalcampaustin.org/&quot;&gt;Drupal Camp Austin 2011&lt;/a&gt; - 11/19/2011&lt;/h2&gt;

&lt;h2&gt;Responsive design&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;mediaqueri.es&lt;/li&gt;
&lt;li&gt;Progressive CSS&lt;/li&gt;
&lt;li&gt;Feature detection (JS - modernize)&lt;/li&gt;
&lt;li&gt;front-end reverse proxy ignorance&lt;/li&gt;
&lt;li&gt;polyfill... JS shim that makes ie work&lt;/li&gt;
&lt;li&gt;mediaquery polyfills

&lt;ul&gt;
&lt;li&gt;respond.JS&lt;/li&gt;
&lt;li&gt;adaptjs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Responsive modules

&lt;ul&gt;
&lt;li&gt;respondjs&lt;/li&gt;
&lt;li&gt;responsive_images&lt;/li&gt;
&lt;li&gt;responder&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;script loaders

&lt;ul&gt;
&lt;li&gt;modernizer&lt;/li&gt;
&lt;li&gt;yepnope&lt;/li&gt;
&lt;li&gt;labjs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;themes

&lt;ul&gt;
&lt;li&gt;adaptivetheme&lt;/li&gt;
&lt;li&gt;omega&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;responsive video: fitvidjs&lt;/li&gt;
&lt;li&gt;front end performance

&lt;ul&gt;
&lt;li&gt;~97% perceived response time is front&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Responsive images, datauri, ...&lt;/li&gt;
&lt;li&gt;jdrop.org&lt;/li&gt;
&lt;li&gt;Stevesounders.com/mobileperf&lt;/li&gt;
&lt;li&gt;Blaze.io/mobile&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Practical Performance Tuning&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.opensourcetesting.org/performance.php&quot;&gt;http://www.opensourcetesting.org/performance.php&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Siege &lt;a href=&quot;http://www.joedog.org/index/siege-home&quot;&gt;http://www.joedog.org/index/siege-home&lt;/a&gt; to intentionally crash servers with multiple concurrent requests to server.&lt;/li&gt;
&lt;li&gt;XHProf&lt;/li&gt;
&lt;li&gt;Disable varnish, memcached, any cache to clearly distinguish performance issues.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;miscellaneous&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;psr0 module (may not be autoload compatible)&lt;/li&gt;
&lt;li&gt;Composer (package management)&lt;/li&gt;
&lt;li&gt;drush make version package injection and drupal modules&lt;/li&gt;
&lt;li&gt;worker queue - drupal queue with drush in long running mode to pick up jobs (worker pool) - use reddis for queue (in place of beanstalkd for reporting and queryability) &lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Pantheon (David Strauss)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Moved to Chef Solo, no more Bcfg2&lt;/li&gt;
&lt;li&gt;Nginx + PHP-FPM&lt;/li&gt;
&lt;li&gt;Cassandra? based file system for public/private files (distributed + redundant)

&lt;ul&gt;
&lt;li&gt;Valhalla?&lt;/li&gt;
&lt;li&gt;Probably going to move to S3 or Rackspace analog for cheaper rates (redundancy on instance storage is very expensive $1/GB x 3)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SASL API communication&lt;/li&gt;
&lt;li&gt;Hidden Jenkins job runner&lt;/li&gt;
&lt;li&gt;Running Fedora, primarily for system.d.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Examiner&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;use mongodb for storage (no MySQL - motivated by trying to avoid cacheing) &lt;/li&gt;
&lt;li&gt;mongodb writes are a bear... they have run out of indexes and are in constant tuning mode for performance&lt;/li&gt;
&lt;li&gt;interesting scale problem with 1000x usage spikes - autoscale is difficult&lt;/li&gt;
&lt;li&gt;use hadoop for (batched) &quot;live jobs&quot; that need to compute complex royalty rules&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Code Smell (Larry Garfield)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;and (ie object_validate_and_save)
*

&lt;ul&gt;
&lt;li&gt;drupal_get_form (retrieve, populate a form0&lt;/li&gt;
&lt;li&gt;Solr::addDocuments wraps _documentToXML private method, so you can’t see the object XML without adding to the index.&lt;/li&gt;
&lt;li&gt;God objects - classes that do too much&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; parameters or returns of multiple types

&lt;ul&gt;
&lt;li&gt;throw exceptions&lt;/li&gt;
&lt;li&gt;return object or FALSE&lt;/li&gt;
&lt;li&gt;_registry_check_code() -&amp;gt; constants, strings, variable types

&lt;ul&gt;
&lt;li&gt;Volunteer to cleanup this function&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overly complex code leads to overly complex bugs.

&lt;ul&gt;
&lt;li&gt;comment_node_view !!!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run-time type identification

&lt;ul&gt;
&lt;li&gt;Changing keys by object type = bad&lt;/li&gt;
&lt;li&gt;Polymorphism (procedural)

&lt;ul&gt;
&lt;li&gt;callback&lt;/li&gt;
&lt;li&gt;messy&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Polymorphism (OO)

&lt;ul&gt;
&lt;li&gt;method, clear&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;4 Unit Testing (263)

&lt;ul&gt;
&lt;li&gt;SimpleTest in core are not unit tests unless 1 Drupal = unit

&lt;ul&gt;
&lt;li&gt;This is system testing and is valuable, but not unit testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DrupalUnitTestCase (~25)

&lt;ul&gt;
&lt;li&gt;We should be doing more of this, but...&lt;/li&gt;
&lt;li&gt;Globals, hooks, etc don’t handle it well&lt;/li&gt;
&lt;li&gt;If you can’t unit test your code, your code is wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Avoid globals, avoid statics&lt;/li&gt;
&lt;li&gt;Dependency injection, construct objects with what they need, don’t call other API midstream.&lt;/li&gt;
&lt;li&gt;Minimize singletons, another form a global.  Hard function calls are a form of singleton.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;5 Documentation

&lt;ul&gt;
&lt;li&gt;If you can’t document, you don’t know what you are doing.&lt;/li&gt;
&lt;li&gt;If you don’t document, another wont know what you are doing.&lt;/li&gt;
&lt;li&gt;Bad documentation:

&lt;ul&gt;
&lt;li&gt;string $jail -&amp;gt; what is jail, what is valid, must define&lt;/li&gt;
&lt;li&gt;array $settings -&amp;gt; what goes in settings?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Why things aren’t documented&lt;/li&gt;
&lt;li&gt;Lazy -&amp;gt; bad&lt;/li&gt;
&lt;li&gt;Indifference -&amp;gt; bad&lt;/li&gt;
&lt;li&gt;Lack of comprehension

&lt;ul&gt;
&lt;li&gt;That’s OK, document that! (Here be dragons)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Embarrassment

&lt;ul&gt;
&lt;li&gt;That’s OK, document it!  Very useful.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;What to document

&lt;ul&gt;
&lt;li&gt;Every function&lt;/li&gt;
&lt;li&gt;Every method&lt;/li&gt;
&lt;li&gt;Every class&lt;/li&gt;
&lt;li&gt;Every object property&lt;/li&gt;
&lt;li&gt;Every constant&lt;/li&gt;
&lt;li&gt;Every parameter&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;drupal.org/node/1354&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;6 Inappropriate intamacy&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;coupling

&lt;ul&gt;
&lt;li&gt;content coupling&lt;/li&gt;
&lt;li&gt;Common&lt;/li&gt;
&lt;li&gt;External&lt;/li&gt;
&lt;li&gt;Control&lt;/li&gt;
&lt;li&gt;Data-structured&lt;/li&gt;
&lt;li&gt;?&lt;/li&gt;
&lt;li&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Otherwise difficult to refactor&lt;/li&gt;
&lt;li&gt;Solutions

&lt;ul&gt;
&lt;li&gt;Well documented interfaces&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;7 Purity&lt;/li&gt;
&lt;li&gt;Pure functions always returns the same value given the same input.&lt;/li&gt;
&lt;li&gt;Side effects

&lt;ul&gt;
&lt;li&gt;Changes global state, cannot be repeated, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Sometimes side effects are the goal

&lt;ul&gt;
&lt;li&gt;ie save() -&amp;gt; that’s fine, but isolate save()&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;drupal_theme_initialize()

&lt;ul&gt;
&lt;li&gt;Lot’s of side effects&lt;/li&gt;
&lt;li&gt;cleaner approach&lt;/li&gt;
&lt;li&gt;class Theme -&amp;gt; more testable&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;8 Good smells&lt;/li&gt;
&lt;li&gt;Single purpose&lt;/li&gt;
&lt;li&gt;Self-contained&lt;/li&gt;
&lt;li&gt;Predictable&lt;/li&gt;
&lt;li&gt;Repeatable&lt;/li&gt;
&lt;li&gt;Unit testable&lt;/li&gt;
&lt;li&gt;Documented&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;aphorisims-api-design&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;coding horror -&amp;gt; code smells&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;java -&amp;gt; SmellsToRefactoings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;joel spoelsky -&amp;gt; Wrong.html&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;signs you should not be coding&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TheDailyWTF.com&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good code&lt;/li&gt;
&lt;li&gt;Queue&lt;/li&gt;
&lt;li&gt;DBTNG (biased)&lt;/li&gt;
&lt;li&gt;File transfer for module update&lt;/li&gt;
&lt;li&gt;PHP Object patterns and practice, it’s a bit old&lt;/li&gt;
&lt;li&gt;Sitepoint book coming soon.&lt;/li&gt;
&lt;li&gt;Avoid older PHP tutorials&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Project mgmt (from the Examiner)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PERT - from military - provides more insight than gantry&lt;/li&gt;
&lt;li&gt;Focus on stakeholder needs rather than wants&lt;/li&gt;
&lt;li&gt;last 3 mo. Finally unhacked core&lt;/li&gt;
&lt;li&gt;a bad decision is &lt;em&gt;better&lt;/em&gt; than indecision on a deadline&lt;/li&gt;
&lt;li&gt;a bad client is better than no client at all&lt;/li&gt;
&lt;li&gt;process and schedules: client should be just as accountable&lt;/li&gt;
&lt;li&gt;communication, mediate and translate, unblock -- calm from chaos&lt;/li&gt;
&lt;li&gt;minimize little shiny distractions -- context switching kills!&lt;/li&gt;
&lt;li&gt;manhole cover round and heavy - keep it from falling in and stop from easily walking away - for saftey&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Drupal Commerce&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ecommerce framework - flexibility about what you can build with it&lt;/li&gt;
&lt;li&gt;eurocentres&lt;/li&gt;
&lt;li&gt;opendealsapp.com&lt;/li&gt;
&lt;li&gt;inline product form... in rsyzmar sandbox&lt;/li&gt;
&lt;li&gt;Ajax framework in d7 is really impressive with commerce&lt;/li&gt;
&lt;li&gt;zondervan??&lt;/li&gt;
&lt;li&gt;realmilkcheese.com&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Profiling with Xhprof&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://msonnabaum.github.com/xhprof-presentation/#1&quot;&gt;http://msonnabaum.github.com/xhprof-presentation/#1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; brianmercer ppa&lt;/li&gt;
&lt;li&gt;Module implements should go into pressflow - David Strauss... follow up.&lt;/li&gt;
&lt;li&gt;XHProf should run in production on a few requests... &lt;/li&gt;
&lt;li&gt;Helps to have non-file backend on multi-node setup.&lt;/li&gt;
&lt;li&gt;msonnabaum/XHProfLib&lt;/li&gt;
&lt;li&gt;Strongarm patch to fix variable cache performance issue&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Devops bof&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;git flow&lt;/li&gt;
&lt;li&gt;gitalyte?&lt;/li&gt;
&lt;li&gt;git tags? Are they locked and never supposed to change?&lt;/li&gt;
&lt;li&gt;drush make idea: [patch][104065] = ...&lt;/li&gt;
&lt;li&gt;Jenkins: DB backup, Dev to stage to prod jobs&lt;/li&gt;
&lt;li&gt;etc keeper - package commit hooks - &lt;/li&gt;
&lt;li&gt;backups and restore scripts -- testable in Jenkins&lt;/li&gt;
&lt;li&gt;update hook - reads from text file&lt;/li&gt;
&lt;li&gt;devel generate - integrations&lt;/li&gt;
&lt;li&gt;default content module - phase2.... will be.dropped&lt;/li&gt;
&lt;li&gt;queued Node access rebuild&lt;/li&gt;
&lt;li&gt;updatedb - revert features in hook_update&lt;/li&gt;
&lt;li&gt;drush deploy (like cap deploy) - video in London&lt;/li&gt;
&lt;li&gt;git reference cache&lt;/li&gt;
&lt;li&gt;camptocamp -- puppet conf -- apache2&lt;/li&gt;
&lt;li&gt;Vewee_fun - stevenmerill&lt;/li&gt;
&lt;li&gt;fastly&lt;/li&gt;
&lt;li&gt;tungsten?? MySQL&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;



</content>
  </entry>
  
  <entry>
    <title>Ruby Midwest</title>
    <link href="http://imetchrischris.com/blog/2011/11/07/ruby-midwest/"/>
    <updated>2011-11-07T20:00:00-06:00</updated>
    <id>http://imetchrischris.com/blog/2011/11/07/ruby-midwest</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://gist.github.com/1343431&quot;&gt;Ruby Midwest 2011&lt;/a&gt;&lt;/p&gt;

&lt;!-- more --&gt;


&lt;hr /&gt;

&lt;div class=&quot;wikistyle&quot;&gt;&lt;h2&gt;
&lt;a href=&quot;http://www.rubymidwest.com&quot;&gt;Ruby Midwest 2011&lt;/a&gt; - 11/4/11&lt;/h2&gt;

&lt;h3&gt;Misc&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://olabini.com/&quot;&gt;http://olabini.com/&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://olabini.com/presentations/RubySafari-RubyMidwest2011.pdf&quot;&gt;http://olabini.com/presentations/RubySafari-RubyMidwest2011.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://j.mp/rate-rubymidwest&quot;&gt;http://j.mp/rate-rubymidwest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://blog.therubymug.com/blog/2011/07/26/the-install-osx-lion.html&quot;&gt;http://blog.therubymug.com/blog/2011/07/26/the-install-osx-lion.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/vlandham/ruby_midwest_2010_notes&quot;&gt;https://github.com/vlandham/ruby_midwest_2010_notes&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/search?authenticity_token=45bdd08f181e986ff3d0ea4b4abe480be350e0b8&amp;amp;q=rubymidwest&amp;amp;type=Everything&amp;amp;repo=&amp;amp;langOverride=&amp;amp;start_value=1&quot;&gt;https://github.com/search?authenticity_token=45bdd08f181e986ff3d0ea4b4abe480be350e0b8&amp;amp;q=rubymidwest&amp;amp;type=Everything&amp;amp;repo=&amp;amp;langOverride=&amp;amp;start_value=1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; samuelmullen.com&lt;/li&gt;
&lt;li&gt; myceps.com&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://docs.google.com/document/d/18KLBp9JwZ7XXKz1D7-gqvmLQZlGUocarNk9XKDWPYOc/edit?pli=1&quot;&gt;https://docs.google.com/document/d/18KLBp9JwZ7XXKz1D7-gqvmLQZlGUocarNk9XKDWPYOc/edit?pli=1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://j.mp/survey-rubymidwest&quot;&gt;http://j.mp/survey-rubymidwest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.flickr.com/photos/lodestone/&quot;&gt;http://www.flickr.com/photos/lodestone/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.flickr.com/photos/lodestone/6315485750/sizes/l/in/photostream/&quot;&gt;http://www.flickr.com/photos/lodestone/6315485750/sizes/l/in/photostream/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Rails is the new Rails&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://mbleigh.com/rails-is-the-new-rails&quot;&gt;http://mbleigh.com/rails-is-the-new-rails&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Personal asset gem -- a nice bundle of repeatedly used stuff&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Active Record Anti-patterns for fun and profit&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://ethangunderson.com/&quot;&gt;http://ethangunderson.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Groupon: Average size to ginormous&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/dsboulder/query_reviewer&quot;&gt;https://github.com/dsboulder/query_reviewer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/trptcolin/consistency_fail&quot;&gt;https://github.com/trptcolin/consistency_fail&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; vertica for large reporting on mysql&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Podcast...Ruby Rogues Live Recording&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; roboto - ruby mobile dev&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://rubyrogues.com/&quot;&gt;http://rubyrogues.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;github for building your app&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; github uses their main repo with branches for pull requests (particularly simplifies perms)&lt;/li&gt;
&lt;li&gt; github uses oauth for access to &lt;em&gt;things&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Testing legacy applications&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; ex. cucumber will get you highlevel view of tests&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;highlight&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;crazy_insane_method&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;clean_tested_method&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;condition&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;#crazy shit here&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://bit.ly/nrmwtest&quot;&gt;http://bit.ly/nrmwtest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; @noelrap&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://speakerdeck.com/u/noelrap/p/test-your-legacy-code&quot;&gt;http://speakerdeck.com/u/noelrap/p/test-your-legacy-code&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Break it Down - Service Oriented safari&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; @bscofield&lt;/li&gt;
&lt;li&gt; ISOLATE apps!!!&lt;/li&gt;
&lt;li&gt; running the full stack ends in many services

&lt;ul&gt;
&lt;li&gt; foreman (seems to run on one machine)&lt;/li&gt;
&lt;li&gt; specialization -- should only run on their own..&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; redundancy

&lt;ul&gt;
&lt;li&gt; moar extraction&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; sharing datamodel between apps&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Does pair programming have to suck?&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; leandog - company on a boat&lt;/li&gt;
&lt;li&gt; bus number = number of people to get hit by a bus before you are screwed...

&lt;ul&gt;
&lt;li&gt; pair programming - helps share info&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; why dont we pair?

&lt;ul&gt;
&lt;li&gt; ...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; follow GeePawHill ?&lt;/li&gt;
&lt;li&gt; @AngelaHarms&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://myAgileEducation.com&quot;&gt;http://myAgileEducation.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Dec. 3 - code retreat&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Ruby Community: Awesome; Could Be Awesomer&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; run events, grow user groups...&lt;/li&gt;
&lt;li&gt; Intentional communities!&lt;/li&gt;
&lt;li&gt; minaswan = Motts (sp?) is nice and so we are nice

&lt;ul&gt;
&lt;li&gt; Community template: warm fuzzy...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://bit.ly/event-organizing-101&quot;&gt;http://bit.ly/event-organizing-101&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://headrush.typepad.com&quot;&gt;http://headrush.typepad.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; @mghaught&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://bit.ly/rate-rmw-community&quot;&gt;http://bit.ly/rate-rmw-community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; coding coffee (centered around &quot;same place, same time&quot;)&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://martyhaught.com/articles/2011/11/02/event-organizing-101/&quot;&gt;http://martyhaught.com/articles/2011/11/02/event-organizing-101/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Uncle Bob Martin&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Architecture &quot;The Lost Years&quot;&lt;/li&gt;
&lt;li&gt; High level architecture should scream its intent (e.g. look at blueprints for different building types)&lt;/li&gt;
&lt;li&gt; Ivar Jakobson

&lt;ul&gt;
&lt;li&gt; User &amp;lt;-&amp;gt; Delivery Mechanism -&amp;gt; Boundaries (Interfaces) -&amp;gt; Interactor &amp;lt;- Entities&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; For testing: Delivery mechanism can be replaced...&lt;/li&gt;
&lt;li&gt; Trigsby Ringscaller (sp??) - Creator of MVC

&lt;ul&gt;
&lt;li&gt; Controller -&amp;gt; Model &amp;lt;= (Observer relationship) View&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Fitnesse ?&lt;/li&gt;
&lt;li&gt; Wikis - invented by Ward Cunningham&lt;/li&gt;
&lt;li&gt; &quot;A good architecture allows major decisions to be deferred!&quot;&lt;/li&gt;
&lt;li&gt; &quot;An architecture diagram is where you can draw lines where all crossing dependencies go in the same direction&quot;&lt;/li&gt;
&lt;li&gt; TDD: Tests are there to help refactor, &lt;em&gt;they should be fast!&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; 8thlight.com&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;&quot;The Cloud&quot;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://matt-oncloud.rhcloud.com&quot;&gt;http://matt-oncloud.rhcloud.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Cloud foundry: similar to: heroku, orchestrate, phpfog, ...&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/openshift&quot;&gt;https://github.com/openshift&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Headless selenium webdriver

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://bit.ly/pUuaMy&quot;&gt;http://bit.ly/pUuaMy&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Make awesome command line apps (with ruby)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; @davetron5000&lt;/li&gt;
&lt;li&gt; optionparser and gli (&lt;a href=&quot;https://github.com/davetron5000&quot;&gt;https://github.com/davetron5000&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt; ronn == manpages in markdown&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://bit.ly/gli-gh&quot;&gt;http://bit.ly/gli-gh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://bit.ly/cli-slides&quot;&gt;http://bit.ly/cli-slides&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://naildrivin5.com/blog&quot;&gt;http://naildrivin5.com/blog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://awesome-cli-ruby.heroku.com/&quot;&gt;http://awesome-cli-ruby.heroku.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Confident Code&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Avdi Grimm @avdi avdi.org&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/avdi/cowsay&quot;&gt;https://github.com/avdi/cowsay&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Modern Databases&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Eric Redmond @coderoshi crudcomic.com&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://twitter.com/#!/coderoshi&quot;&gt;http://twitter.com/#!/coderoshi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://mongohq-blog.heroku.com/blog/2011/11/03/ruby-midwest-conference-and-mongohq/&quot;&gt;http://mongohq-blog.heroku.com/blog/2011/11/03/ruby-midwest-conference-and-mongohq/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Recommendation Engines (Support Vector Machines)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; natural language mapping to sentiement... library?&lt;/li&gt;
&lt;li&gt; libsvm -- svm lib written in C&lt;/li&gt;
&lt;li&gt; source on github: &lt;a href=&quot;https://github.com/hexgnu/rmw-svm&quot;&gt;https://github.com/hexgnu/rmw-svm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://matthewkirk.com&quot;&gt;http://matthewkirk.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Array object in ruby, to java (symbol int (or type you want))...&lt;/li&gt;
&lt;li&gt; http://matthewkirk.com/presentations/Support-Vector-Machines-with-Jruby.pdf&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;People Patterns&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; tell bad news quickly (e.g. dont keep it held in...)&lt;/li&gt;
&lt;li&gt; dont sugar coat anything&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Life on the Edge&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; hunt out edge cases first... the rest of the work should be easier&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/JEG2&quot;&gt;https://github.com/JEG2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; faraday + typhoeus (have to wrap the whole thing &lt;code&gt;in_parallel&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt; VCR ? turning off dependencies on the net&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://speakerdeck.com/u/jeg2/p/life-on-the-edge&quot;&gt;http://speakerdeck.com/u/jeg2/p/life-on-the-edge&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;High Performance Ruby&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; @drnic&lt;/li&gt;
&lt;li&gt; engineyard todo.rb --&amp;gt; trinidad&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://speakerdeck.com/u/drnic/p/high-performance-ruby-threading-versus-evented-ruby-midwest-edition&quot;&gt;http://speakerdeck.com/u/drnic/p/high-performance-ruby-threading-versus-evented-ruby-midwest-edition&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Final Boss: RoR in video game industry&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; David Czanecki @czarneckid&lt;/li&gt;
&lt;li&gt; @agoragames&lt;/li&gt;
&lt;li&gt; @mlg =&amp;gt; MLB, NBA, etc. of e-sports&lt;/li&gt;
&lt;li&gt; Ola Bini: &quot;Just add scaling&quot;&lt;/li&gt;
&lt;li&gt; Early: Deploy early in the day, early in the week&lt;/li&gt;
&lt;li&gt; Documentation: make steps to follow! e.g. &quot;Creating a new guitar hero title.txt&quot;&lt;/li&gt;
&lt;li&gt; &quot;Overhead&quot; (e.g. managers) - valuable for &lt;em&gt;managing the client&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt; Data: (e.g. Game integration): Queues!!! (guitar hero uses sparrow) (and workers?)

&lt;ul&gt;
&lt;li&gt; Rescue - (killer app: rescue web - monitor and understand what is going on)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Optimize for ... (e.g. games: school, vacations/holidays, ...)&lt;/li&gt;
&lt;li&gt; Not all queues are equal - understanding the heavy use can let you prepare for heavy usage&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/agoragames/leaderboard&quot;&gt;https://github.com/agoragames/leaderboard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; External services: &lt;em&gt;integration!!&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt; impose limits!! (they can be artificial, but they serve a point!)

&lt;ul&gt;
&lt;li&gt; rate limits&lt;/li&gt;
&lt;li&gt; timeouts (60s is too much, 10s and ramp back!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Monitoring and infrastucture

&lt;ul&gt;
&lt;li&gt; monit -&amp;gt; runit&lt;/li&gt;
&lt;li&gt; Munin&lt;/li&gt;
&lt;li&gt; Infrastructure validation

&lt;ul&gt;
&lt;li&gt; using cucumber: e.g. mysql running, slave running (how far behind?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Named services! (dont use the machine name directly - use DNS to retarget machines)&lt;/li&gt;
&lt;li&gt; Redundancy - e.g. backup infrastructure&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Stack smashing - rackspace VMs --&amp;gt; down to 2 (24 core) physical boxes&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://speakerdeck.com/u/czarneckid/p/rails-in-the-video-game-industry&quot;&gt;http://speakerdeck.com/u/czarneckid/p/rails-in-the-video-game-industry&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Andy Hunt&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Pragmattic Programmer&lt;/li&gt;
&lt;li&gt; Agile Alliance&lt;/li&gt;
&lt;li&gt; Agility Undefined&lt;/li&gt;
&lt;li&gt; Context Matters

&lt;ul&gt;
&lt;li&gt; the way the world works: its messy (many interconnected systems)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Practices werent discussed... what did they mean by agile:

&lt;ul&gt;
&lt;li&gt; ever shifting, changing, responding&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Emergence: complex behavior from simple interactions&lt;/li&gt;
&lt;li&gt; Kaizen: Continuous changes based on continuous feedback&lt;/li&gt;
&lt;li&gt; Risk mitigation: (risk from programming comes from writing code)&lt;/li&gt;
&lt;li&gt; Cognative biases: what as humans drive us away from something like logical agile practices

&lt;ul&gt;
&lt;li&gt; Driving need for closure: (e.g. when will this project be done? we dont know... just tell me.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Postpone major decisions as long as you can (know the least at the beginning, most at the end, when do you want to make decisions?)&lt;/li&gt;
&lt;li&gt; Funcamental attribution error: context (e.g. why are they being a real creep as a client...)&lt;/li&gt;
&lt;li&gt; Planning Fallacy / Optimism Bias: Underestimate tasks all the time...&lt;/li&gt;
&lt;li&gt; Hawthorne Effect: when someone is watching we change our actions&lt;/li&gt;
&lt;li&gt; Dunning-Kruger Effect: &quot;2nd order incompetence&quot; - you dont know what you dont know -- argument to formulate a test&lt;/li&gt;
&lt;li&gt; Un-Agile warning signs:

&lt;ul&gt;
&lt;li&gt; sloganization&lt;/li&gt;
&lt;li&gt; follow rules vs. exercize judgement (if you dont let experts exercize judgement on team you are not getting value for the expert)&lt;/li&gt;
&lt;li&gt; confusing the model with reality&lt;/li&gt;
&lt;li&gt; demanding conformity&lt;/li&gt;
&lt;li&gt; spelling out too much detail&lt;/li&gt;
&lt;li&gt; oversimplification of complex solutions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Agile development uses feedback to make constant asjustments in a highly collaborative environment

&lt;ul&gt;
&lt;li&gt; must have:

&lt;ul&gt;
&lt;li&gt; continuous &lt;em&gt;meaningful&lt;/em&gt; feedback and be able to evaluate&lt;/li&gt;
&lt;li&gt; ability to &lt;em&gt;change&lt;/em&gt; the code, process, team, etc...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; try. fail. learn. repeat.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;

</content>
  </entry>
  
  <entry>
    <title>BADCamp notes</title>
    <link href="http://imetchrischris.com/blog/2011/11/06/conference-notes/"/>
    <updated>2011-11-06T20:00:00-06:00</updated>
    <id>http://imetchrischris.com/blog/2011/11/06/conference-notes</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://gist.github.com/1344231&quot;&gt;BADCamp (Bay Area Drupal Camp) 2011&lt;/a&gt;&lt;/p&gt;

&lt;!-- more --&gt;


&lt;hr /&gt;

&lt;div class=&quot;wikistyle&quot;&gt;&lt;h2&gt;
&lt;a href=&quot;http://2011.badcamp.net&quot;&gt;BADCamp&lt;/a&gt; (Bay Area Drupal Camp) 2011&lt;/h2&gt;

&lt;h3&gt;Core Discussions:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Dave Reid - Media

&lt;ul&gt;
&lt;li&gt; groups.drupal.org/media&lt;/li&gt;
&lt;li&gt; #drupal-media&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; WSCCI - Larry Garfield

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://groups.drupal.org/wscci&quot;&gt;http://groups.drupal.org/wscci&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://groups.drupal.org/node/167299&quot;&gt;http://groups.drupal.org/node/167299&lt;/a&gt; ==&amp;gt; Symfony&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Documentation - 

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/documentation&quot;&gt;http://drupal.org/documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; 1278256&lt;/li&gt;
&lt;li&gt; drupal.org/project/issue/api&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/node/1354&quot;&gt;http://drupal.org/node/1354&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; g.d.o/documentation-team&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Greg Dunlap - Configuration Management Initiative

&lt;ul&gt;
&lt;li&gt; Battle Plan: g.d.o/node/149796&lt;/li&gt;
&lt;li&gt; g.d.o/node/1555&lt;/li&gt;
&lt;li&gt; XML is file format&lt;/li&gt;
&lt;li&gt; CRUD API 1018602&lt;/li&gt;
&lt;li&gt; g.d.o./node/171554&lt;/li&gt;
&lt;li&gt; g.d.o/node/145614&lt;/li&gt;
&lt;li&gt; 1300972&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Interesting Convo&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://dl.dropbox.com/u/9138/nginx-and-drupal.pdf&quot;&gt;http://dl.dropbox.com/u/9138/nginx-and-drupal.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.trellon.com/services/crm_solutions&quot;&gt;http://www.trellon.com/services/crm_solutions&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/sandbox/citizenkane/1260982&quot;&gt;http://drupal.org/sandbox/citizenkane/1260982&lt;/a&gt; ??&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://treehouseagency.com/blog/roger-lopez/2011/10/22/badcamp-energygov-case-study&quot;&gt;http://treehouseagency.com/blog/roger-lopez/2011/10/22/badcamp-energygov-case-study&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.slideshare.net/fourkitchens/dont-design-websites-design-web-systems-badcamp-2011&quot;&gt;http://www.slideshare.net/fourkitchens/dont-design-websites-design-web-systems-badcamp-2011&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://2011.badcamp.net/program/sessions/integrating-facebook-what-it-means-and-how-do-it&quot;&gt;http://2011.badcamp.net/program/sessions/integrating-facebook-what-it-means-and-how-do-it&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/project/npr&quot;&gt;http://drupal.org/project/npr&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://2011.badcamp.net/program/sessions/web-face-radio-npr-builds-platform-drupal-7&quot;&gt;http://2011.badcamp.net/program/sessions/web-face-radio-npr-builds-platform-drupal-7&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://adellefrank.com/blog/review-debugging-techniques-drupal-lamp&quot;&gt;http://adellefrank.com/blog/review-debugging-techniques-drupal-lamp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://treehouseagency.com/blog/tim-cosgrove/2011/10/22/modern-theming-beyond-postprocessing-and-tpls-tim-cosgrove&quot;&gt;http://treehouseagency.com/blog/tim-cosgrove/2011/10/22/modern-theming-beyond-postprocessing-and-tpls-tim-cosgrove&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/project/og_tasks&quot;&gt;http://drupal.org/project/og_tasks&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://treehouseagency.com/blog/neil-hastings/2011/09/21/building-custom-block-entities-beans&quot;&gt;http://treehouseagency.com/blog/neil-hastings/2011/09/21/building-custom-block-entities-beans&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/project/bean&quot;&gt;http://drupal.org/project/bean&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.slideshare.net/rupl/responsive-drupal-beyond-the-media-query&quot;&gt;http://www.slideshare.net/rupl/responsive-drupal-beyond-the-media-query&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/node/1300972&quot;&gt;http://drupal.org/node/1300972&lt;/a&gt; // PM Work on d.o. (actually some pretty good mockups...)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://groups.drupal.org/node/184984&quot;&gt;http://groups.drupal.org/node/184984&lt;/a&gt; //websocket doc by bcmiller&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WSCCI&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Info:

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://groups.drupal.org/wscci&quot;&gt;http://groups.drupal.org/wscci&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.garfieldtech.com/blog/web-services-initiative&quot;&gt;http://www.garfieldtech.com/blog/web-services-initiative&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://groups.drupal.org/wscci/definitions&quot;&gt;http://groups.drupal.org/wscci/definitions&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Symfony to Core: &lt;a href=&quot;http://drupal.org/node/1178246&quot;&gt;http://drupal.org/node/1178246&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; Context API: &lt;a href=&quot;http://drupal.org/node/1292720&quot;&gt;http://drupal.org/node/1292720&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(Drupal) Config Mgmt Initiative (CMI)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/sandbox/heyrocker/1145636&quot;&gt;http://drupal.org/sandbox/heyrocker/1145636&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docs: &lt;a href=&quot;http://drupal.org/node/1354&quot;&gt;http://drupal.org/node/1354&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Performance&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Peter Drake (craziness!!)

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/node/394840&quot;&gt;http://drupal.org/node/394840&lt;/a&gt; //authcache&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://drupal.org/project/expire&quot;&gt;http://drupal.org/project/expire&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Media:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Use drupal player (very generic) as standalone?&lt;/li&gt;
&lt;li&gt; Existing (standalones)

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://mediaelementjs.com/&quot;&gt;http://mediaelementjs.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;https://github.com/happyworm/jplayer/&quot;&gt;https://github.com/happyworm/jplayer/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PCI (compliance)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://2011.drupalcampcolorado.org/sites/default/files/slides/PCI.pdf&quot;&gt;talk from Drupal Camp Colorado → BOF&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; SAQ A - outsource card data / SAQ C - card data is stored&lt;/li&gt;
&lt;li&gt; Separation of Duties … (only allow access to resources by perm.)&lt;/li&gt;
&lt;li&gt; ASV - Approved Scanning Vendor&lt;/li&gt;
&lt;li&gt; High-level: PCI DAA Quick Reference Guide&lt;/li&gt;
&lt;li&gt; You can prioritize your approach to pursue PCI DSS (items that you must do first...)&lt;/li&gt;
&lt;li&gt; The message: &lt;strong&gt;EVERYTHING MUST BE DOCUMENTED&lt;/strong&gt;*&lt;/li&gt;
&lt;li&gt; Stripe payment gateway (module called Stripe)&lt;/li&gt;
&lt;li&gt; certified PCI compliance people: e.g.: Colefire, Trustfire&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;

</content>
  </entry>
  
  <entry>
    <title>Drupal's RESTful future</title>
    <link href="http://imetchrischris.com/blog/2011/10/30/drupal-restful-future/"/>
    <updated>2011-10-30T20:41:00-05:00</updated>
    <id>http://imetchrischris.com/blog/2011/10/30/drupal-restful-future</id>
    <content type="html">&lt;p&gt;TL;DR: &lt;a href=&quot;http://drupal.org/project/services&quot;&gt;services&lt;/a&gt; and &lt;a href=&quot;http://drupal.org/project/feeds&quot;&gt;feeds&lt;/a&gt; rock! We need to change the way we look at the server - web-servers are really build-servers.&lt;/p&gt;

&lt;hr /&gt;

&lt;h4&gt;Intro&lt;/h4&gt;

&lt;p&gt;  Lately at &lt;a href=&quot;http://www.allplayers.com&quot;&gt;AllPlayers.com&lt;/a&gt; I have been spending a lot of time working on API's for our site and spending some time making Drupal talk &lt;em&gt;web&lt;/em&gt;. Luckily, this is something that is being thought about a lot in the community (see: &lt;a href=&quot;http://groups.drupal.org/wscci&quot;&gt;WSCCI&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/services&quot;&gt;services.module&lt;/a&gt;); but, there are some interesting growing pains:
 &lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;  The &lt;em&gt;connection&lt;/em&gt; to Drupal: There are a variety of ways to &lt;a href=&quot;http://drupal.org/project/modules?filters=tid%3A52&quot;&gt;connect to external sites&lt;/a&gt; and obviously &quot;the way the web should work&quot;, but I get the explicit feeling that many of types of connections are &quot;toys&quot;. As a site administrator we built out a DLAMP (Drupal, Linux, Apache, MySQL, PHP) install because we are &lt;em&gt;serious&lt;/em&gt; about building a web-app! In our engineering efforts, we are probably only slightly interested in handing over our data to 3rd party services, so likely our next interest is in taking on the data for ourselves (which is no small matter).&lt;/p&gt;

&lt;h4&gt;Get the data&lt;/h4&gt;

&lt;p&gt;  So, we've committed ourselves to &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Big_data&quot;&gt;big data&lt;/a&gt;&quot;; great - how do we do it?! Honestly - look towards to the industry leaders; short of a major engineering effort (which perhaps you should be looking at hadoop, hbase, and map-reduce), we are here for Drupal - and that's gonna make this fast and powerful: &lt;a href=&quot;http://drupal.org/project/feeds&quot;&gt;feeds&lt;/a&gt;! Target an endpoint, upload a file, or configure the plugin an do what you want, then parse that data with a processor (e.g. XPath, QueryPath, CSV mapping, or build your own). It's a little like magic! (if you don't believe me, maybe a &lt;a href=&quot;http://developmentseed.org/blog/2009/dec/15/importing-and-aggregating-stuff-feeds&quot;&gt;demo&lt;/a&gt; could convince you. Now let's get a little more technical...)&lt;/p&gt;

&lt;h5&gt;Oh the pain...&lt;/h5&gt;

&lt;p&gt;  You've got the data but, was that all there was to it? Mostly... but, because we are good researchers we note something about feeds requests: &lt;a href=&quot;http://drupalcode.org/project/feeds.git/blob/refs/heads/master:/libraries/http_request.inc#l86&quot;&gt;they're pretty good&lt;/a&gt;, but there turns out to be a variety of different ways to do essentially the same thing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_http_request/7&quot;&gt;&lt;code&gt;drupal_http_request&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://drupalcode.org/project/wbapi.git/blob/refs/heads/master:/wbapi.request.inc#l164&quot;&gt;World Bank API&lt;/a&gt; (depends on &lt;code&gt;drupal_http_request&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://drupalcode.org/project/acquia_connector.git/blob/refs/heads/7.x-1.x:/acquia_agent/acquia_agent.module#l553&quot;&gt;Acquia Connector&lt;/a&gt; which uses &lt;a href=&quot;http://api.drupal.org/api/drupal/includes--common.inc/function/xmlrpc/7&quot;&gt;XML-RPC&lt;/a&gt; (depends on &lt;code&gt;drupal_http_request&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/pantheon-systems/pantheon7/blob/master/modules/pantheon/pantheon_api/pantheon_api.inc#L113-168&quot;&gt;Pantheon System API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;  Some observations: &lt;em&gt;the Drupal way&lt;/em&gt; seems to be &lt;code&gt;drupal_http_request&lt;/code&gt; but, there is also a distinct lack of PEAR dependencies like &lt;a href=&quot;http://pear.php.net/package/HTTP_Request2&quot;&gt;HTTP_Request&lt;/a&gt;; a nice place to ruminate.&lt;/p&gt;

&lt;h4&gt;Expose your data&lt;/h4&gt;

&lt;p&gt;  Data acquired! But we want to share (easy): &lt;a href=&quot;http://drupal.org/documentation/modules/field-ui&quot;&gt;fields&lt;/a&gt; and &lt;a href=&quot;http://drupal.org/project/views&quot;&gt;views&lt;/a&gt;. However, as a respecting netizen you want to share semantically! Drupal already comes &lt;a href=&quot;http://www.lullabot.com/articles/how-does-rdf-work-drupal-7&quot;&gt;feature packed for the web&lt;/a&gt;, but we also want to share through API's. Luckily contrib space has this &quot;solved&quot; with &lt;a href=&quot;http://drupal.org/project/services&quot;&gt;services&lt;/a&gt;, where we can expose our data through a variety of &lt;a href=&quot;http://drupalcode.org/project/services.git/tree/refs/heads/7.x-3.x:/servers&quot;&gt;servers&lt;/a&gt; and varieties of &lt;a href=&quot;http://drupalcode.org/project/services.git/blob/refs/heads/7.x-3.x:/servers/rest_server/includes/rest_server.views.inc#l25&quot;&gt;formats&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;  Thus we can do something like &lt;a href=&quot;https://gist.github.com/affc9864487bb1b9c918&quot;&gt;this&lt;/a&gt;: &lt;code&gt;GET&lt;/code&gt; http://drupal6-services/services/plist/node/1.json and expect&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &quot;changed&quot;: &quot;1286592762&quot;,
  &quot;language&quot;: &quot;&quot;,
  &quot;uid&quot;: &quot;0&quot;,
  &quot;type&quot;: &quot;story&quot;,
  &quot;status&quot;: &quot;0&quot;,
  &quot;nid&quot;: &quot;1&quot;,
  &quot;created&quot;: &quot;1286592762&quot;
  ...
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;amazingly powerful! (it is also worth noting that the services endpoint can pull from views as well!)&lt;/p&gt;

&lt;h5&gt;Oh the pain...&lt;/h5&gt;

&lt;p&gt;  The story so far has gotten us everything we need &lt;em&gt;very quickly&lt;/em&gt;, but as consumers of &lt;a href=&quot;https://dev.twitter.com/docs/api&quot;&gt;many&lt;/a&gt; &lt;a href=&quot;http://developers.facebook.com/docs/reference/rest&quot;&gt;public&lt;/a&gt; &lt;a href=&quot;http://www.twilio.com/docs/api/rest/&quot;&gt;APIs&lt;/a&gt; we quickly note that what we are leaking is Drupal through exposing endpoints. This is actually fairly useful to developers of Drupal, but is probably pretty useless to someone consuming your &lt;em&gt;product&lt;/em&gt;, therefore we need to take &lt;a href=&quot;http://drupalcode.org/project/services.git/blob/refs/heads/7.x-3.x:/services.services.api.php&quot;&gt;configure (or theme)&lt;/a&gt; the exposed services.&lt;/p&gt;

&lt;p&gt;  Additionally, given a glimpse of &lt;a href=&quot;http://www.garfieldtech.com/blog/web-services-initiative&quot;&gt;web services future of Drupal&lt;/a&gt; this seems particularly pertinent! &lt;a href=&quot;http://groups.drupal.org/wscci&quot;&gt;WSCCI&lt;/a&gt; (Web Services Context Core Initiative) is the holding place for the &lt;em&gt;high performance REST server&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;Data and the front-end interaction&lt;/h4&gt;

&lt;p&gt;  I probably don't share very much, but I have a &lt;a href=&quot;http://twitter.com/#!/imetchrischris/status/116723898380328960&quot;&gt;love affair&lt;/a&gt; with javascript; and given the amazing &lt;a href=&quot;http://slides.html5rocks.com&quot;&gt;HTML5 features&lt;/a&gt; and great &lt;a href=&quot;http://microjs.com&quot;&gt;javascript libraries&lt;/a&gt; (&lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; is just the tip of the iceberg - or the first taste depending on how you look at it) - there is a bright future in the browser! So bright in fact: I am of the opinion that &quot;web-pages&quot; should be delivered as apps! There are a lot of great tools to facilitate the concept of a client side app, often examples of this are seen in the &lt;a href=&quot;https://chrome.google.com/webstore&quot;&gt;Chrome web store&lt;/a&gt; (some neat technologies include the &lt;a href=&quot;http://www.w3.org/TR/html5/offline.html&quot;&gt;cache-manifest&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;  This leaves me wondering: where exactly does the theme layer live? Particularly, as in a traditional sense, the theme layer seems to live &quot;in the browser&quot;, which means that any processing done server side to render CSS, JS, and/or HTML would be in the &lt;em&gt;delivery of an application&lt;/em&gt; - the version of which the client is requesting to be delivered by the server.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Drupal Camp Austin Re-cap</title>
    <link href="http://imetchrischris.com/drupal-camp-austin-re-cap/index.html"/>
    <updated>2010-11-26T00:00:00-06:00</updated>
    <id>http://imetchrischris.com/drupal-camp-austin-re-cap/drupal-camp-austin-re-cap</id>
    <content type="html">&lt;div&gt;&lt;a href=&quot;http://2010.drupalcampaustin.org/&quot;&gt;Drupal Camp Austin&lt;/a&gt; (DCA) was excellent - there was a great showing of drupalist and no shortage of excitement and learning. There were several great presentations ranging from security (&lt;a href=&quot;http://2010.drupalcampaustin.org/sessions/security-risks-and-smart-configuration-securing-your-drupal-site&quot;&gt;config&lt;/a&gt;, &lt;a href=&quot;http://2010.drupalcampaustin.org/sessions/drupal-security-coders&quot;&gt;code&lt;/a&gt;), &lt;a href=&quot;http://2010.drupalcampaustin.org/sessions/building-strong-profitable-drupal-business&quot;&gt;business value&lt;/a&gt;, &lt;a href=&quot;http://2010.drupalcampaustin.org/sessions/whole-lotta-drupal&quot;&gt;community reflection&lt;/a&gt;, &lt;a href=&quot;http://2010.drupalcampaustin.org/sessions/ctool-plugins-and-exportables&quot;&gt;advanced dev&lt;/a&gt;, and even an &lt;a href=&quot;http://2010.drupalcampaustin.org/sessions/reuse-drupal-features&quot;&gt;intro to features&lt;/a&gt; by me! Overall - the things that were talked about in the birds of a feather (BoF), in the halls, and when socializing can't be traded for anything!&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;Here are some quick-hit notes:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;David Strauss
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://incubator.apache.org/libcloud/&quot;&gt;libcloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://code.launchpad.net/~fourkitchens/pressflow/6-evented&quot;&gt;Pressflow with events&lt;/a&gt; -- think: node.js in drupal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ben Finklea
&lt;ul&gt;
&lt;li&gt;Books
&lt;ul&gt;
&lt;li&gt;No Mans Land&lt;/li&gt;
&lt;li&gt;E-myth&lt;/li&gt;
&lt;li&gt;Who&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Note: Kpi = key performance indicator (process)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Greg Knaddison, Ben Jeavons
&lt;ul&gt;
&lt;li&gt;add coder and security_review to Hudson tasks&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/miccolis/vuln/&quot;&gt;vuln&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>Web services - love em' and what a cluster!</title>
    <link href="http://imetchrischris.com/web-services-love-em-and-what-a-cluster/index.html"/>
    <updated>2010-07-12T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/web-services-love-em-and-what-a-cluster/web-services-love-em-and-what-a-cluster</id>
    <content type="html">So, a little late night googling and it turns out that there is somewhat of a schism in the web services world. Now, without too much &lt;a href=&quot;http://chrischris.posterous.com/what-apps-really-are-services&quot;&gt;history&lt;/a&gt; I am &lt;a href=&quot;http://chrischris.posterous.com/past-225&quot;&gt;kindof&lt;/a&gt; a services &lt;a href=&quot;http://chrischris.posterous.com/omg-ecmascript-is-js-and-a-ws-e4x-woohoo&quot;&gt;nut&lt;/a&gt;! However, I do not know how I missed &lt;a href=&quot;http://alexbarnett.net/blog/archive/2007/03/13/Does-REST-need-a-WSDL_3F00_.aspx&quot;&gt;this fight&lt;/a&gt; on the &lt;a href=&quot;http://www.w3.org/TR/wsdl&quot;&gt;WSDL&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Representational_State_Transfer&quot;&gt;REST&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_Application_Description_Language&quot;&gt;WADL&lt;/a&gt; acronym soup debate. As it turns out often enterprise-y tools do an amazing job at creating compatible (and even usable) web services endpoints, often in the form of SOAP with WSDL&amp;#39;s describing the endpoint. A little investigation here reveals though just how hard it is to integrate a REST-ful endpoint to these service (often the value add of the extensible schema and type definitions quickly negates the simplicity of the REST). IMO this really leaves people in two camps - those with the automated *tools* to read the service endpoints (and quickly gain traction on interacting with the objects) and the simplicity of the REST interfaces that have very little overhead since they exploit the existing underlying architecture. I am not going to go into a tizzy here on why this seems really stupid (note to self - I should really write up some thoughts on this...)... because through this research I have stumbled onto a nifty google project: &lt;a href=&quot;http://code.google.com/p/rest-api-code-gen/&quot;&gt;REST API code-gen&lt;/a&gt; (in all its computer science-y acronym laden goodness) - this is really cool (short description &lt;a href=&quot;http://blog.tomayac.de/index.php?date=2007-03-12&amp;amp;time=17:11:27&amp;amp;perma=Automatic+Multi+Lang.html&quot;&gt;here&lt;/a&gt;)!! &lt;p /&gt;&lt;div&gt;Bam - Magic!&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://blog.tomayac.de/images/Google_REST_Compile.png&quot; alt=&quot;REST Compile&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://blog.tomayac.de/index.php?date=2007-03-12&amp;amp;time=17:11:27&amp;amp;perma=Automatic+Multi+Lang.html&quot;&gt;ref&lt;/a&gt;&lt;/div&gt; &lt;p /&gt;&lt;div&gt;Woohoo - bringing robots to simple web services interfaces - I feel the future coming (unless its already dead)!&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>I walked into the office the other day to this</title>
    <link href="http://imetchrischris.com/i-walked-into-the-office-the-other-day-to-thi/index.html"/>
    <updated>2010-05-21T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/i-walked-into-the-office-the-other-day-to-thi/i-walked-into-the-office-the-other-day-to-thi</id>
    <content type="html">&lt;p&gt;&lt;img src=&quot;http://imetchrischris.com/images/IMG00165-20100521-0849.jpg&quot; alt=&quot;I walked into the office the other day to this&quot; /&gt;&lt;/p&gt;
&lt;p&gt;sent via mobile&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>So much mandated technology</title>
    <link href="http://imetchrischris.com/so-much-mandated-technology/index.html"/>
    <updated>2010-05-16T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/so-much-mandated-technology/so-much-mandated-technology</id>
    <content type="html">&amp;quot;So much mandated technology...they [generally large companies] just take the [provider] with the most steaks and the most strippers; typically from companies who have expense accounts and sales people who can sell them very expensive application servers over six months.&amp;quot; &lt;a href=&quot;http://twit.tv/floss79&quot;&gt;http://twit.tv/floss79&lt;/a&gt;
</content>
  </entry>
  
  <entry>
    <title>Drupal - Features module - Moving a CCK (content type) from one feature to another</title>
    <link href="http://imetchrischris.com/drupal-features-moving-a-cck-content-type-fro/index.html"/>
    <updated>2010-05-16T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/drupal-features-moving-a-cck-content-type-fro/drupal-features-moving-a-cck-content-type-fro</id>
    <content type="html">&lt;p&gt;&lt;img title=&quot;3086495495_ab338eecc4.jpg&quot; src=&quot;http://farm4.static.flickr.com/3066/3086495495_ab338eecc4.jpg&quot; height=&quot;130&quot; alt=&quot;3086495495_ab338eecc4.jpg&quot; width=&quot;200&quot; /&gt;&amp;nbsp;Recently ran into an interesting problem - I wanted to move a &lt;a href=&quot;http://drupal.org/project/cck&quot;&gt;content type (cck)&lt;/a&gt; that I had created from one &lt;a href=&quot;http://drupal.org/project/features&quot;&gt;feature&lt;/a&gt; to another (specifically to move it into a &lt;a href=&quot;http://drupal.org/project/spaces&quot;&gt;spaces&lt;/a&gt; enabled&amp;nbsp;feature to gain some of those benefits - thanks &lt;a href=&quot;http://code.developmentseed.org/&quot;&gt;devseed&lt;/a&gt;!); however, as you might be aware (if you are stumbling across this) features is pretty smart - often *too* smart.&amp;nbsp;When removing the content type from one feature it will effectively remove the content type from your drupal install; whilst if you add the content type to another feature in parallel features will ingeniously mark the other feature you have as a dependency. What we are going to exploit: drupal features caches with a version control system (VCS - I prefer &lt;a href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt;) and &lt;a href=&quot;http://drupal.org/project/drush&quot;&gt;drush&lt;/a&gt;:&lt;/p&gt;
&lt;p /&gt;
&lt;div&gt;vernacular:&lt;/div&gt;
&lt;div&gt;* laterBranchOrTag - the later time we are trying to get to in our source&lt;/div&gt;
&lt;div&gt;* earlierBranchOrTag - the time when our feature we are coming *from* was correct&lt;/div&gt;
&lt;div&gt;* featureNameOld = old feature (to delete from)&lt;/div&gt;
&lt;div&gt;* featureNameNew = new feature (to be added to)&lt;/div&gt;
&lt;p&gt;&lt;script src=&quot;https://gist.github.com/403176.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;
&lt;div&gt;What we have done - we have basically loaded many of drupal's caches (note: some items like variables, with strongarm, do not use the db for cacheing - this is a different animal)&amp;nbsp;with the feature and CCK defs and then switched the code base beneath it. When the features-update occurs the items that are cached are written out into features code, but in the featureNameNew namespace.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;simple enough?&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;( photo attr: Alex Barth - &lt;a href=&quot;http://www.flickr.com/photos/28242329@N00/3086495495&quot;&gt;http://www.flickr.com/photos/28242329@N00/3086495495&lt;/a&gt; )&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>DrupalCon SF 2010</title>
    <link href="http://imetchrischris.com/drupalcon-sf-2010/index.html"/>
    <updated>2010-04-23T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/drupalcon-sf-2010/drupalcon-sf-2010</id>
    <content type="html"> &lt;p&gt;&lt;img src=&quot;http://imetchrischris.com/images/IMG00003-20100417-1545.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;&lt;/p&gt;
 &lt;!-- more --&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00004-20100417-1632.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00005-20100417-1632.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00006-20100417-1636.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00007-20100417-1636.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00008-20100417-1643.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00009-20100417-1643.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00010-20100417-1649.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00011-20100417-1650.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00012-20100417-1652.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00013-20100417-1726.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00017-20100418-1147.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00018-20100418-1242.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00019-20100418-1242.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00020-20100418-1242.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00021-20100418-1327.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00022-20100418-1327.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00023-20100418-1328.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00024-20100418-1339.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00025-20100418-1534.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00026-20100418-1602.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00027-20100418-1602.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00028-20100418-1603.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00030-20100418-1612.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00031-20100418-1613.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00032-20100418-1613.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00033-20100418-1613.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00034-20100418-1613.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00035-20100418-1655.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00036-20100418-1655.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00037-20100418-1656.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00038-20100418-1656.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00039-20100418-1658.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00040-20100418-1658.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00041-20100418-1700.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00042-20100418-1700.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00043-20100418-1700.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00044-20100418-1701.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00045-20100418-1701.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00046-20100418-1701.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00047-20100418-1702.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00048-20100418-1703.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00050-20100418-1707.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00052-20100418-1726.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00053-20100418-1734.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00055-20100418-1749.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00058-20100419-1326.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00064-20100419-1335.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00065-20100419-1415.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00068-20100419-2146.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00070-20100420-0941.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00071-20100420-1036.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00074-20100420-1139.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00075-20100420-1341.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00076-20100420-1341.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00077-20100420-1530.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00079-20100421-1247.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00080-20100421-1324.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00081-20100421-1404.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00082-20100421-1404.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00083-20100421-1441.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/IMG00085-20100421-1457.jpg&quot; alt=&quot;DrupalCon SF 2010&quot; /&gt;
</content>
  </entry>
  
  <entry>
    <title>Penguin Game J2ME edition</title>
    <link href="http://imetchrischris.com/penguin-game-j2me-edition/index.html"/>
    <updated>2010-04-10T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/penguin-game-j2me-edition/penguin-game-j2me-edition</id>
    <content type="html">A while back (2006ish) I wrote a small game for a class (Java mobile) and was curious if it would run on my phone today - what do you know?! Woohoo - it works!&lt;div&gt;Source: &lt;a href=&quot;http://github.com/christianchristensen/PenguinGame&quot;&gt;http://github.com/christianchristensen/PenguinGame&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;img src=&quot;http://imetchrischris.com/images/game.png&quot; alt=&quot;Penguin Game J2ME edition&quot; /&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Images I like - a post for the memories</title>
    <link href="http://imetchrischris.com/images-i-like---a-post-for-the-memories/index.html"/>
    <updated>2010-04-06T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/images-i-like---a-post-for-the-memories/images-i-like---a-post-for-the-memories</id>
    <content type="html">Just some old images I had laying around I wanted to get out there... &lt;p&gt;&lt;img src=&quot;http://imetchrischris.com/images/e_ipi_01.png&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;&lt;/p&gt;
&lt;!-- more --&gt;
&lt;img src=&quot;http://imetchrischris.com/images/e_ipi.png&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/insult_kit_sm.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/jeep_pic.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/minenet_org_sm.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/n18800567_14006.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/radio_caution_05_sm.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/radio_mast05.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/tire_destroyed_270205.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/triangle.png&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/whatever_mind_conceive.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
&lt;img src=&quot;http://imetchrischris.com/images/WhiteRock_sm.jpg&quot; alt=&quot;Images I like - a post for the memories&quot; /&gt;
</content>
  </entry>
  
  <entry>
    <title>Doom and gloom - crystal ball on Apple</title>
    <link href="http://imetchrischris.com/doom-and-gloom---crystal-ball-on-apple/index.html"/>
    <updated>2010-04-05T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/doom-and-gloom---crystal-ball-on-apple/doom-and-gloom---crystal-ball-on-apple</id>
    <content type="html">&amp;quot;...&lt;span style=&quot;font-family: georgia, serif; font-size: 14px; color: rgb(68, 68, 68); line-height: 19px;&quot;&gt;if Apple implemented a trial period it could really soften the blow (iPhone OS 4.0, perhaps?). &lt;span style=&quot;background-color: rgb(255, 255, 102);&quot;&gt;The iPad could perfect the shareware model that almost has worked on the PC&lt;/span&gt;, and it wouldn&amp;#39;t hurt to have trials on the iPhone either.&amp;quot; Really?!?! Almost worked - I would argue total failure!&lt;/span&gt;&lt;div&gt; &lt;span style=&quot;font-family: georgia, serif; font-size: 14px; color: rgb(68, 68, 68); line-height: 19px;&quot;&gt;&lt;/span&gt;from: &lt;span style=&quot;font-family: georgia, serif; font-size: 14px; color: rgb(68, 68, 68); line-height: 19px;&quot;&gt;&lt;a href=&quot;http://www.engadget.com/2010/04/05/editorial-ipad-prices-are-out-of-control-and-will-kill-us-all/&quot;&gt;http://www.engadget.com/2010/04/05/editorial-ipad-prices-are-out-of-control-and-will-kill-us-all/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>What apps really are - services</title>
    <link href="http://imetchrischris.com/what-apps-really-are---services/index.html"/>
    <updated>2010-04-04T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/what-apps-really-are---services/what-apps-really-are---services</id>
    <content type="html">&lt;div&gt;This weekend I was hypothesizing how three apps I think are very cool operate, specifically: &lt;a href=&quot;http://www.google.com/mobile/google-mobile-app/&quot;&gt;Google Voice search&lt;/a&gt;, &lt;a href=&quot;http://www.shazam.com/&quot;&gt;Shazam&lt;/a&gt;, &lt;a href=&quot;https://squareup.com/&quot;&gt;Square&lt;/a&gt;. What shocked me about all of them was how available they were across platforms - particularly mobile. Then I came to quickly realize the only investment in development for each platform was front-end work; the piece they all had in common was the backend. Now, some might be familiar with some patterns that make this possible like &lt;a href=&quot;http://en.wikipedia.org/wiki/Model–view–controller&quot;&gt;MVC&lt;/a&gt;; but what really surprises me is how unbelievably seamless these apps work in the face of having to support different platforms. This leads me to a more philosophical question about touting an &amp;quot;app for that...&amp;quot; - really what we are seeing is that behind many of the good apps there is a terrific service that is capable of being abstracted from that devices interface.&lt;/div&gt; &lt;p /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://imetchrischris.com/images/graphic.png&quot; alt=&quot;What apps really are - services&quot; /&gt;&lt;/div&gt;&lt;p /&gt;Caveat Emptor: Its probably very short sighted to assume that this is a one sided conclusion, but I think there are some great reasons to follow this pattern; there are many great reasons to have a fantastic UI, but when thinking about reaching the maximum audience it is comforting to know that following this pattern can help development remain agile in the face of new device releases (see: iPad).
</content>
  </entry>
  
  <entry>
    <title>Data - its really important!</title>
    <link href="http://imetchrischris.com/data---its-really-important!/index.html"/>
    <updated>2010-04-02T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/data---its-really-important!/data---its-really-important!</id>
    <content type="html">This is true: &lt;a href=&quot;http://bret.appspot.com/entry/we-need-a-wikipedia-for-data&quot;&gt;http://bret.appspot.com/entry/we-need-a-wikipedia-for-data&lt;/a&gt;&lt;div&gt;This is how it can be done:&lt;a href=&quot;http://where.tommacwright.com/&quot;&gt;http://where.tommacwright.com/&lt;/a&gt;&lt;/div&gt; &lt;div&gt;(alt: &lt;a href=&quot;http://github.com/tmcw/where20presentation&quot;&gt;http://github.com/tmcw/where20presentation&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;This is a result: &lt;a href=&quot;http://mapbox.com/&quot;&gt;http://mapbox.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;(more explicitly: &lt;a href=&quot;http://mapbox.com/tileset/dc-nightvision&quot;&gt;http://mapbox.com/tileset/dc-nightvision&lt;/a&gt;)&lt;/div&gt; &lt;p /&gt;&lt;div&gt;amazmagorical!&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>Beautiful day at the Rock</title>
    <link href="http://imetchrischris.com/beautiful-day-at-the-rock/index.html"/>
    <updated>2010-03-28T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/beautiful-day-at-the-rock/beautiful-day-at-the-rock</id>
    <content type="html">&lt;img src=&quot;http://imetchrischris.com/images/IMG00021.jpg&quot; alt=&quot;Beautiful day at the Rock&quot; /&gt;&lt;p&gt;sent via mobile&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>How is this even possible?!?!</title>
    <link href="http://imetchrischris.com/how-is-this-even-possible/index.html"/>
    <updated>2010-03-25T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/how-is-this-even-possible/how-is-this-even-possible__</id>
    <content type="html">&lt;a href=&quot;http://blogs.adobe.com/jnack/2010/03/caf_in_ps.html&quot;&gt;http://blogs.adobe.com/jnack/2010/03/caf_in_ps.html&lt;/a&gt;&lt;p /&gt;&lt;div&gt;I used to think blurring out jewelry in PS was amazing - now I can make whole pieces of the world appear and disappear!&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>Screen shot 2010-03-20 at 11.00.29 AM.png</title>
    <link href="http://imetchrischris.com/screen-shot-2010-03-20-at-11.00.29-am.png/index.html"/>
    <updated>2010-03-23T00:00:00-05:00</updated>
    <id>http://imetchrischris.com/screen-shot-2010-03-20-at-11.00.29-am.png/screen-shot-2010-03-20-at-11.00.29-am.png</id>
    <content type="html">&lt;img src=&quot;http://imetchrischris.com/images/Screen_shot_2010-03-20_at_11.0.png&quot; alt=&quot;Screen shot 2010-03-20 at 11.00.29 AM.png&quot; /&gt;&lt;p&gt;sent via mobile&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Chrome OS running on EEE 900 (wifi, audio, internal HD)</title>
    <link href="http://imetchrischris.com/chrome-os-running-on-eee-900-(wifi,-audio,-internal-hd)/index.html"/>
    <updated>2009-11-29T00:00:00-06:00</updated>
    <id>http://imetchrischris.com/chrome-os-running-on-eee-900-(wifi,-audio,-internal-hd)/chrome-os-running-on-eee-900-(wifi,-audio,-internal-hd)</id>
    <content type="html">Got the Chrome OS running on my &lt;span class=&quot;blsp-spelling-error&quot;&gt;EEE&lt;/span&gt; 900 this weekend; here's the details:&lt;div&gt;Started with the &lt;span class=&quot;blsp-spelling-error&quot;&gt;VM&lt;/span&gt; image (&lt;a href=&quot;http://gdgt.com/google/chrome-os/download/&quot;&gt;http://gdgt.com/google/chrome-os/download/&lt;/a&gt;) - cool, but didn't run on the &lt;span class=&quot;blsp-spelling-error&quot;&gt;netbook&lt;/span&gt;...&lt;/div&gt;&lt;div&gt;So, got the Chrome OS image installed on a &lt;span class=&quot;blsp-spelling-error&quot;&gt;USB&lt;/span&gt; drive (&lt;a href=&quot;http://www.makeuseof.com/tag/download-google-chrome-os-and-run-on-a-real-computer/&quot;&gt;http://www.makeuseof.com/tag/download-google-chrome-os-and-run-on-a-real-computer/&lt;/a&gt;) - easy to use, instructions get this on a &lt;span class=&quot;blsp-spelling-error&quot;&gt;bootable&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot;&gt;USB&lt;/span&gt; drive. This works great on may laptops and &lt;span class=&quot;blsp-spelling-error&quot;&gt;netbooks&lt;/span&gt;.&lt;/div&gt;&lt;p /&gt;&lt;div&gt;One step further (get the &lt;span class=&quot;blsp-spelling-error&quot;&gt;USB&lt;/span&gt; image on internal &lt;span class=&quot;blsp-spelling-error&quot;&gt;HD&lt;/span&gt; of the &lt;span class=&quot;blsp-spelling-error&quot;&gt;netbook&lt;/span&gt;):&lt;/div&gt;&lt;div&gt;Boot the &lt;span class=&quot;blsp-spelling-error&quot;&gt;netbook&lt;/span&gt; with something like &lt;span class=&quot;blsp-spelling-error&quot;&gt;DSL&lt;/span&gt; (&lt;a href=&quot;http://www.pendrivelinux.com/all-in-one-usb-dsl/&quot;&gt;http://www.pendrivelinux.com/all-in-one-usb-dsl/&lt;/a&gt;). Also, make sure you have your Chrome OS &lt;span class=&quot;blsp-spelling-error&quot;&gt;USB&lt;/span&gt; key plugged in as well while booting...&lt;/div&gt;&lt;div&gt;Open up a terminal (on &lt;span class=&quot;blsp-spelling-error&quot;&gt;DSL&lt;/span&gt; boot).&lt;/div&gt;&lt;div&gt;Type (may need to alter the /var/* targets):&lt;/div&gt;&lt;p /&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier new;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;&quot;&gt; &lt;/span&gt;dd if=/var/&lt;span class=&quot;blsp-spelling-error&quot;&gt;sda&lt;/span&gt; of=/var/&lt;span class=&quot;blsp-spelling-error&quot;&gt;hdc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p /&gt;&lt;div&gt;Give it ~20 &lt;span class=&quot;blsp-spelling-error&quot;&gt;mins&lt;/span&gt;...&lt;/div&gt;&lt;div&gt;And &lt;span class=&quot;blsp-spelling-error&quot;&gt;bam&lt;/span&gt; - boot your &lt;span class=&quot;blsp-spelling-error&quot;&gt;EEE&lt;/span&gt; 900 from the &lt;span class=&quot;blsp-spelling-error&quot;&gt;HD&lt;/span&gt; connect to your wireless network and have audio!! &lt;span class=&quot;blsp-spelling-error&quot;&gt;FTW&lt;/span&gt;!!&lt;/div&gt;&lt;p /&gt;&lt;div&gt;Results:&lt;/div&gt;&lt;div&gt; - Pretty fast...&lt;/div&gt;&lt;div&gt; - Very simple&lt;/div&gt;&lt;div&gt; - Terminal accessible from &lt;span class=&quot;blsp-spelling-error&quot;&gt;ctrl&lt;/span&gt;+alt+F2&lt;/div&gt;&lt;div&gt; - Looks nice&lt;/div&gt;
</content>
  </entry>
  
</feed>

