<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-6369418367411691447</id><updated>2009-06-16T15:25:42.206-05:00</updated><title type="text">Mike Subelsky's Blog</title><subtitle type="html">Mike Subelsky's hacking and improv theater blog.</subtitle><link rel="alternate" type="text/html" href="http://www.subelsky.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default?start-index=26&amp;max-results=25" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://feeds.feedburner.com/subelskyblog" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><geo:lat>39.325956</geo:lat><geo:long>-76.606026</geo:long><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><link rel="self" href="http://feeds.feedburner.com/subelskyblog" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-3779174212511074086</id><published>2009-05-15T09:56:00.002-05:00</published><updated>2009-05-15T11:00:46.086-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="creativity" /><category scheme="http://www.blogger.com/atom/ns#" term="Ignite" /><category scheme="http://www.blogger.com/atom/ns#" term="improv" /><title type="text">Undoing Your Social Training and Creative Inhibitions in Five Minutes</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 12px; line-height: 18px; "&gt;Last night, I was honored to be the first speaker at the first &lt;a href="http://ignite-dc.com/"&gt;Ignite DC&lt;/a&gt;. My talk was called "Undoing Your Social Training and Creative Inhibitions in Five Minutes".  The gist of my talk is:&lt;/span&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 12px; line-height: 18px; "&gt;&lt;blockquote&gt;"Our culture inculcates several behaviors that harm creative, entrepreneurial people: we're taught to avoid conflict and real, open honesty with one another, and we're taught to fear failure. This may work for creating a polite, civil society, but it doesn't serve the individual who is trying to make a difference. But there's hope! Improv theater actors have devised many techniques for overcoming these tendencies which enables them to create inventive stories extemporaneously. Mike will share ways to combat creative inhibitions gleaned from six years of teaching and performing improv theater."&lt;/blockquote&gt;The slides are below.&lt;/span&gt;&lt;div&gt;&lt;div style="width:425px;text-align:left" id="__ss_1440381"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/subelsky/undoing-your-social-training-and-creative-inhibitions-in-five-minutes?type=powerpoint" title="Undoing Your Social Training and Creative Inhibitions in Five Minutes"&gt;Undoing Your Social Training and Creative Inhibitions in Five Minutes&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ignitedc-090515095418-phpapp01&amp;amp;stripped_title=undoing-your-social-training-and-creative-inhibitions-in-five-minutes"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ignitedc-090515095418-phpapp01&amp;amp;stripped_title=undoing-your-social-training-and-creative-inhibitions-in-five-minutes" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-3779174212511074086?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/5MJH1p1xTzk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/3779174212511074086/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=3779174212511074086" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3779174212511074086" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3779174212511074086" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/5MJH1p1xTzk/undoing-your-social-training-and.html" title="Undoing Your Social Training and Creative Inhibitions in Five Minutes" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2009/05/undoing-your-social-training-and.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-588806270964081564</id><published>2009-05-11T08:10:00.003-05:00</published><updated>2009-05-11T08:21:50.743-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="otherinbox" /><category scheme="http://www.blogger.com/atom/ns#" term="railsconf" /><category scheme="http://www.blogger.com/atom/ns#" term="gartner hype cycle" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing" /><title type="text">It's Not Always Sunny in the Clouds</title><content type="html">At RailsConf last week I gave a talk called "It's Not Always Sunny in the Clouds" where I shared all of our lessons learned with OtherInbox and cloud computing.  I tried my best to go beyond the hype and talk about our real world experiences.  The slides are below, but here's the raw list of lessons:&lt;ul&gt;&lt;li&gt;“Everything needs to be automated”&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Autoscaling is the easiest part&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Think carefully about credential management&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You really could use internal DNS&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It's maybe not that cheap&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Launching servers is not that fast&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You will become dependent on “glue” services&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You will depend on a distant faceless provider&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use DVCS&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You will spend a lot of time on monitoring&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Your logs will runneth over&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Write lots of “in-process tests”&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Snapshots are slow&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rails will be the least of your worries&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cloud services involve subtle-yet-massive tradeoffs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SQS guarantees delivery at least once&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Queue lengths inaccurate for &lt;&gt;&lt;br /&gt;&lt;li&gt;SQS not necessarily FIFO&lt;/li&gt;&lt;br /&gt;&lt;li&gt;So you may not want a cloud queue&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SimpleDB optimized for writes, not reads&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You must code defensively&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There are no good "cloud sandboxes"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pay attention to MySQL timeouts&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"User account management is -not- ideal." &lt;/li&gt;&lt;br /&gt;&lt;li&gt;You are locked-in to your provider&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Relational DB may not be the best choice&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Is there a benefit?&lt;br /&gt; &lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Changes the way you write code&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;You can start right away&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Pretty awesome redundancy&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_1402369"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/subelsky/its-not-always-sunny-in-the-clouds?type=powerpoint" title="It's Not Always Sunny in the Clouds"&gt;It's Not Always Sunny in the Clouds&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=notalwayssunny-090507155914-phpapp01&amp;amp;stripped_title=its-not-always-sunny-in-the-clouds"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=notalwayssunny-090507155914-phpapp01&amp;amp;stripped_title=its-not-always-sunny-in-the-clouds" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/subelsky"&gt;subelsky&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-588806270964081564?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/dvvA5KMCXQQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/588806270964081564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=588806270964081564" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/588806270964081564" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/588806270964081564" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/dvvA5KMCXQQ/its-not-always-sunny-in-clouds.html" title="It's Not Always Sunny in the Clouds" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2009/05/its-not-always-sunny-in-clouds.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-7845714150123952464</id><published>2009-04-27T10:03:00.002-05:00</published><updated>2009-04-27T10:05:15.165-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jsconf" /><category scheme="http://www.blogger.com/atom/ns#" term="Javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="sproutcore" /><title type="text" /><content type="html">On Saturday I gave an "Introduction to SproutCore" talk at &lt;a href="http://jsconf.com/"&gt;JSConf&lt;/a&gt;, the world's first all-JavaScript conference.  It was a great conference and highly recommended.  Videos will be posted over the next several weeks.  For now, for those interested, my slides are below. &lt;div style="width:425px;text-align:left" id="__ss_1350750"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/subelsky/introduction-to-sproutcore-at-jsconf?type=presentation" title="Introduction to SproutCore at JSConf"&gt;Introduction to SproutCore at JSConf&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sproutcorejsconflaptop-090427083606-phpapp02&amp;amp;stripped_title=introduction-to-sproutcore-at-jsconf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sproutcorejsconflaptop-090427083606-phpapp02&amp;amp;stripped_title=introduction-to-sproutcore-at-jsconf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/subelsky"&gt;subelsky&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-7845714150123952464?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/xjgDj5_vIC4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/7845714150123952464/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=7845714150123952464" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/7845714150123952464" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/7845714150123952464" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/xjgDj5_vIC4/on-saturday-i-gave-introduction-to.html" title="" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2009/04/on-saturday-i-gave-introduction-to.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-3833325581297433623</id><published>2009-04-17T09:07:00.005-05:00</published><updated>2009-04-20T10:37:07.932-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sproutcore" /><category scheme="http://www.blogger.com/atom/ns#" term="railsconf" /><title type="text">My tutorial at RailsConf 2009</title><content type="html">I'm teaching a three-hour tutorial at &lt;a href="http://www.railsconf.com/"&gt;RailsConf 2009&lt;/a&gt; on SproutCore and Rails, called "Building Next Generation Web Apps with Rails and SproutCore".  Since three hours isn't a whole lot of time, I wanted to post some things that students can do to prepare to get the most out of the training.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See you in Las Vegas!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Prerequisites&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;We'll use the &lt;a href="http://rubyforge.org/projects/sproutcore/"&gt;stable release&lt;/a&gt; of SproutCore (0.9.23) although I plan to address what's different about the 1.0 API which is currently in alpha testing.  So to be able to work in the tutorial, you'll need recent versions of Ruby and RubyGems.  &lt;a href="http://www.sproutcore.com/download/"&gt;Follow these directions&lt;/a&gt; to install SproutCore.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that the SproutCore gem depends on merb-core (&gt;= 0.9.9), erubis, rubigen, and mongrel.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before the tutorial starts, you must be able to view localhost:4020.  If that works, you know everything installed correctly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This may go without saying, but you also need to have Rails 2.3.x installed.  Specifically you should be able to load the Rails startup page on your development machine at http://localhost:3000/.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Recommended Reading&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I strongly recommend you complete the &lt;a href="http://www.sproutcore.com/documentation/hello-world-tutorial/"&gt;"Hello World" tutorial&lt;/a&gt; on the SproutCore home page. You may also want to browse &lt;a href="http://wiki.github.com/sproutit/sproutcore"&gt;the project wiki&lt;/a&gt; to get more of a sense of the framework.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The most helpful wiki articles to read include:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.github.com/sproutit/sproutcore/sproutcore-s-modern-model-layer"&gt;SproutCore's model layer&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.github.com/sproutit/sproutcore/bindings-properties-and-observers"&gt;Bindings, Properties, and Observers&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-3833325581297433623?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/Dpa0DdlJYTU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/3833325581297433623/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=3833325581297433623" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3833325581297433623" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3833325581297433623" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/Dpa0DdlJYTU/my-tutorial-at-railsconf-2009.html" title="My tutorial at RailsConf 2009" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://www.subelsky.com/2009/04/my-tutorial-at-railsconf-2009.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-852375459382694659</id><published>2009-03-25T10:55:00.003-05:00</published><updated>2009-03-30T06:39:22.341-05:00</updated><title type="text">Scaling Rails in the Cloud With Audio and Video</title><content type="html">At SXSW Interactive I gave a talk called "Scaling Rails in the Cloud", about our experiences building &lt;a href="http://oib.com/"&gt;OtherInbox&lt;/a&gt; using Amazon Web Services.   The organizers have just &lt;a href="http://audio.sxsw.com/2009/podcasts/D2%20SXSW_PODCASTS/031409_PM1_Hil_RmA_ScalingRailsApps.mp3"&gt;posted an MP3 file&lt;/a&gt; of the audio of my talk, so now you can view the slides with accompanying audio.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Update: the video is now &lt;a href="http://www.youtube.com/watch?v=9GGinUZsNlU"&gt;posted in six parts on Youtube&lt;/a&gt;!&lt;br /&gt;&lt;div&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_1147193"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/subelsky/scaling-rails-applications-in-the-cloud?type=presentation" title="Scaling Rails Applications In The Cloud"&gt;Scaling Rails Applications In The Cloud&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=scalingrailsapplicationsinthecloud-090315064331-phpapp01&amp;amp;stripped_title=scaling-rails-applications-in-the-cloud"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=scalingrailsapplicationsinthecloud-090315064331-phpapp01&amp;amp;stripped_title=scaling-rails-applications-in-the-cloud" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/subelsky"&gt;subelsky&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-852375459382694659?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/nEymYg47ea4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/852375459382694659/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=852375459382694659" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/852375459382694659" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/852375459382694659" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/nEymYg47ea4/scaling-rails-in-cloud-with-audio.html" title="Scaling Rails in the Cloud With Audio and Video" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://www.subelsky.com/2009/03/scaling-rails-in-cloud-with-audio.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-499995305537015171</id><published>2009-03-15T06:49:00.004-05:00</published><updated>2009-03-15T06:56:26.343-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="scaling" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="sxsw" /><title type="text">Scaling Rails in the Cloud</title><content type="html">Yesterday at SXSW Interactive I gave a talk called "Scaling Rails in the Cloud", about our experiences building &lt;a href="http://oib.com/"&gt;OtherInbox&lt;/a&gt; using Amazon Web Services.  &lt;a href="http://www.slideshare.net/subelsky/scaling-rails-applications-in-the-cloud"&gt;My slides&lt;/a&gt; are below.  When I wrote this presentation, I really came to the realization that Rails has hardly ever been the problem for us, scaling-wise.  The framework has served us very well; all of our problems have stemmed from we the developers not understanding our tools as well as we could have, or not thinking things through.  So the actual Rails content is light, but that's because Rails fits right into a cloud environment and we didn't have to do anything special to make it work.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_1147193"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/subelsky/scaling-rails-applications-in-the-cloud?type=presentation" title="Scaling Rails Applications In The Cloud"&gt;Scaling Rails Applications In The Cloud&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=scalingrailsapplicationsinthecloud-090315064331-phpapp01&amp;amp;stripped_title=scaling-rails-applications-in-the-cloud"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=scalingrailsapplicationsinthecloud-090315064331-phpapp01&amp;amp;stripped_title=scaling-rails-applications-in-the-cloud" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/subelsky"&gt;subelsky&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-499995305537015171?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/OEakZgme76w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/499995305537015171/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=499995305537015171" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/499995305537015171" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/499995305537015171" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/OEakZgme76w/yesterday-at-sxsw-interactive-i-gave.html" title="Scaling Rails in the Cloud" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://www.subelsky.com/2009/03/yesterday-at-sxsw-interactive-i-gave.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-4590616562748677677</id><published>2009-02-23T17:35:00.008-05:00</published><updated>2009-02-27T17:13:55.679-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="baltimore" /><category scheme="http://www.blogger.com/atom/ns#" term="entrepreneurship" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="startups" /><category scheme="http://www.blogger.com/atom/ns#" term="angel investing" /><title type="text">Maryland Software Entrepreneur Survey Results</title><content type="html">&lt;p style="color: rgb(0, 0, 0);"&gt;Last week &lt;a href="http://twitter.com/subelsky/status/1227389658"&gt;I asked&lt;/a&gt; all of the software entrepreneurs I know in Maryland to &lt;a href="http://tinyurl.com/mdsoft"&gt;fill out a quick survey&lt;/a&gt; about what they kinds of help they'd like to receive in building their companies.  I asked this because I want propose a project to help my fellow entrepreneurs in Maryland, but I felt I should do more listening before I &lt;a href="http://www.subelsky.com/2009/01/baltimores-internet-economy-as-i-see-it.html"&gt;do any more talking&lt;/a&gt;.&lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;I promised I would anonymously summarize the results of the survey, so here's what people had to say. Ten people of very different backgrounds responded. It's totally unscientific but I think it was a fairly diverse sample.&lt;/span&gt;&lt;br /&gt;&lt;h2 style="color: rgb(0, 0, 0);"&gt;What type of assistance would be most useful to you in starting or growing a software business in the greater Baltimore area?&lt;/h2&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;"...an organization, funded by the state or outside investments that acts as a seed funder for startups...an Angel-like organization that invests time/resources rather than capital. Local people with ideas for new software would submit proposals and the team would decide on the top 1-3 and develop a beta.  So rather than having a group of investors involved, it would be a group of developers that invest their time in exchange for equity."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"A mentor match-up service of some sort might be good. With our startup, we have basically had to teach ourselves everything because we didn't really have anyone to talk to who's already been through it."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"I think the most needed type of assistance, in my opinion, is business/legal administration. Such things as incorporating a business, accounting, taxes, payroll, accepting credit cards for products/services, etc. I might have a great idea and working app, but then need to put in almost as much work to setup and manage the business side."""&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"A real calendar of tech events, with .ICS (so I can import into Google Calendar or Outlook or whatever I use), embeddable (just via GCal), RSS feed, twitter feed. Something where I can actually go and see a list of events hosted by Refresh, Bmore on Rails, etc...You'd think this problem was solved already, but apparently not."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"...some forum / roundtable type of thing where people can just talk ideas would be neat too. Perhaps OpenCoffee, with some more structure, up in Baltimore somewhere. It would be nice if something like this varied in location, so that for example, it's not always down at the hive. Then again, there is arguably some benefit in having it at a standardized location."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; "Funding...Baltimore Angels is good, but they only meet every other month."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Exposure. Needs to be more talk about what local entrepreneurs are building...have to raise the profile of Baltimore for outside money. People have to hear about what is going on in Baltimore and see it as a hub of growth and activity, and look at startups in the area as worth investing in."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Support - I love the local Open Coffee...it's less than 5 people, and everyone is doing their own thing, so no one is afraid to be open and talk. It's been very helpful for me and I've found the atmosphere great."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Peer groups/advisors/coaching, all of which I have found in the area."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"1) access to capital&lt;br /&gt;2) talented technologists&lt;br /&gt;3) universities that are engaged in the entrepreneurial world&lt;br /&gt;4) service providers (lawyers, accountants, insurance agents, PR firms, recruiters, etc) who understand start-ups, and have appropriate business models&lt;br /&gt;5) mechanisms which support the free flow of talent&lt;br /&gt;6) a cheerleading environment where mentors are easily found and entrepreneurs benefit from the region's self-promotion&lt;br /&gt;7) a culture which recognizes those who try -- even when they fail."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"...my greatest challenge was in recruiting talent. Finding people who have actually marketed software, or developed commercial C++ applications was an enormous challenge!"&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"We are terribly underserved by the absence of an entrepreneurial culture at JHU. Perhaps, that's beginning to change, but it will take time to play out. I recently attended a discussion on the macroeconomic impact of entrepreneurialism at MIT; it's simply staggering!...Without the active engagement of our local universities, we'll never build a sufficient flow of new companies into our region."&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style="color: rgb(0, 0, 0);"&gt;What are your biggest challenges?&lt;/h2&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;"The biggest problem is tapping into true seed money. It seems that seed money for early stage startups is virtually non-existent. There are various Angel groups in the area and there is money to be invested, but rarely are the investors ever interested in being the first dollars spent by the company.&lt;br /&gt;&lt;br /&gt;"Given this, it seems that a development based Angel group could help mitigate the high risk of true early stage companies such that more good ideas would get off the ground"&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Again, never having done this before, our biggest challenge is knowing what it is we're supposed to even do or not do as a 'real' business."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"One big problem with not knowing what to do, is not immediately knowing who can help you sort those things out. With regards to legal issues, we've already been through two big-name law firms that charged big $, but they had almost no experience with startups and were not able to guide us well at all."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"I think my biggest challenge is once I have established business and working app (which is a challenge in itself), is marketing and getting the word out as well as creating a sustainable revenue model."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Knowing who to trust....and whose referrals to trust."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Finding talent. Dealing with taxes."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"...finding leads is of course a big thing."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"As for products, hashing through marketing and sales plans...Putting processes in place to fill a pipeline, getting the word out, building sales efforts, etc. And 'getting the word out' - and marketing and sales in general - is different for products for a niche vs. products for the online masses. Looking for money too is a challenge...but it seems like Baltimore Angels is trying to address that."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Money. Finding good people. Money"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style="color: rgb(0, 0, 0);"&gt;Is there anything else you'd like to say?&lt;/h2&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;"Go Baltimore. All of this stuff is wicked exciting. I moved here because it was the closest city to home. I'm staying because Baltimore is poised to claim a huge stake in the future of big tech happenings."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"I think some kind of Y Combinator in Baltimore would be great. The combination of funding, help creating a company, and ongoing support is what I would really need to create a successful software company. I also like the idea of having a group or association of small, local software companies that have weekly/monthly meetings to discuss and brainstorm and help each other out with their ideas and possibly code."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"I think there is still a gap between the money and then entrepreneurs. It's a hard gap to bridge."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"I've heard many times that there just aren't enough companies in Baltimore to justify more private equity. That's just not true! Moreover, there are micro communities emerging - such as with gaming or social media...Growing these communities brings more talent to the region, which leads to more successes."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"...individuals are vitally important to an entrepreneurial success. When they come together, they create new companies. When they network, they're looking to challenge themselves, often by changing jobs. Changing jobs in Baltimore's tech world is difficult due to its relatively small size and lack of a networking forum. Making it easy for individuals to meet and network not only eases the free flow of talent (one of the things that makes Silicon Valley so successful), but causes people to want to continue their association with the networking forum that's proven helpful."&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;(Several respondents graciously offered to help out or be included in any discussions, so I'll be sending some emails and things -- add a comment below if you are interested)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-4590616562748677677?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/5IMIC_BbNaU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/4590616562748677677/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=4590616562748677677" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4590616562748677677" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4590616562748677677" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/5IMIC_BbNaU/maryland-software-entrepreneur-survey.html" title="Maryland Software Entrepreneur Survey Results" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://www.subelsky.com/2009/02/maryland-software-entrepreneur-survey.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-3173343626528373740</id><published>2009-01-25T20:45:00.001-05:00</published><updated>2009-01-26T08:03:49.728-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="baltimore" /><category scheme="http://www.blogger.com/atom/ns#" term="startups" /><title type="text">Baltimore's Internet Economy as I See It</title><content type="html">There are a lot of creative people in Baltimore working with Internet technology. At events like &lt;a href="http://barcamp.org/SocialDevCampEast"&gt;SocialDevCampEast&lt;/a&gt;, &lt;a href="http://www.beehivebaltimore.com/"&gt;Beehive&lt;/a&gt;, &lt;a href="http://www.refreshbmore.org/"&gt;Refresh&lt;/a&gt;, &lt;a href="http://www.meetup.com/bmore-on-rails/"&gt;Bmore on Rails,&lt;/a&gt; &lt;a href="http://twintech3.eventbrite.com/"&gt;Twin Tech&lt;/a&gt;, &lt;a href="http://outletbmore.wordpress.com/"&gt;Outlet&lt;/a&gt;, or &lt;a href="http://ignitebaltimore.com/"&gt;Ignite&lt;/a&gt;, you'll meet a ton of them. Many technical people in and around Baltimore have a national following, and I've run into them at far-flung events like Techcrunch50 and Lone Star Ruby Conference. We have &lt;a href="http://davetroy.com/"&gt;several&lt;/a&gt; &lt;a href="http://www.linkedin.com/pub/dir/clarence/wooten"&gt;successful&lt;/a&gt; &lt;a href="http://gregword.com/"&gt;entrepreneurs&lt;/a&gt; &lt;a href="http://www.thetrendjunkie.com/"&gt;in&lt;/a&gt; &lt;a href="http://www.linkedin.com/in/tomloveland"&gt;our&lt;/a&gt; midst who have built great Internet businesses.  A recent accounting of greater Baltimore's IT industry gives us top rankings for many tech indicators. Baltimore's economy definitely has the human capital to succeed in the Internet industry.&lt;br /&gt;&lt;br /&gt;Yet few of these talented people are starting or working for product companies.  I rarely meet someone who's involved in making something that he or she owns.  Baltimore's Internet economy, as far as I can tell, mostly comprises consulting work, services, and government contracting.  Those sectors are very strong, and bring a lot of wealth to our region, but product companies have much more potential to improve the long-term prospects of our economy.  Because they involve greater risk, product companies create a lot of wealth for investors and early employees, who then go on to invest in the next round of startups. Service businesses have less growth potential since they are ultimately constrained by the hourly labor of their employees.  When they don't work, income doesn't come in.&lt;br /&gt;&lt;br /&gt;Why should it be this way?  How do we encourage more product-based technology companies to form here?  Starting a risky venture requires a leap of faith and a maverick move against the grain of what society expects you to do, so how can society foster these choices?  In an email, &lt;a href="http://davetroy.com/"&gt;Dave Troy&lt;/a&gt; gave me a great metaphor:&lt;br /&gt;&lt;blockquote&gt;"...you can't make a wild mushroom grow.  The only thing you can do is be sure the conditions are right.  That means there needs to be enough biomass in the underlying organism, there has to be sufficient food, moisture, and the temperature has to be right.  The mushroom has to want to grow on its own."&lt;br /&gt;&lt;/blockquote&gt;I don't presume to be any kind of a "startup mushroom farmer", as I am still working on &lt;a href="http://oib.com/"&gt;my first startup&lt;/a&gt;.  But I do think we have the potential makings of a &lt;a href="http://paulgraham.com/siliconvalley.html"&gt;startup ecosystem&lt;/a&gt; in place:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Exemplars of success&lt;/span&gt;: &lt;a href="http://advertising.com/"&gt;Advertising.com&lt;/a&gt;, &lt;a href="https://www.billmelater.com/"&gt;BillMeLater&lt;/a&gt;, Image Cafe, and other companies were started here, and there's a strong software game industry in Hunt Valley.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Integrated economy&lt;/span&gt;: Baltimore and DC are closely connected, being less than an hour away by train or car.  We are part an Amtrak corridor connecting us to Philadelphia, New York, and Boston.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Low cost of living&lt;/span&gt;: you can buy a lot of house in Baltimore in a &lt;a href="http://www.livebaltimore.com/nb/list/"&gt;nice neighborhood&lt;/a&gt; (including one of the best-planned &lt;a href="http://www.planning.org/greatplaces/neighborhoods/2008/charlesvillage.htm"&gt;great places in America&lt;/a&gt;) and lead the kind of urban, connected lifestyle much prized by creative people.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Tolerance and diversity&lt;/span&gt;: Although our neighborhoods are largely segregated, it's still the kind of town where noncomformists can feel at home.  We've got John Waters, the &lt;a href="http://www.highzero.org/"&gt;High Zero&lt;/a&gt; festival, Theater Project, Creative Alliance, and the &lt;a href="http://www.avam.org/"&gt;Visionary Arts Museum&lt;/a&gt;, just to name a few examples.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Community spirit&lt;/span&gt;: In my experience, people in Baltimore really want you to succeed at whatever you're starting or trying.  If you want to make a movie or start a business or become an activist, few in this community will tell you that you can't; most will say "that's cool, how can I help?"  I experienced this vividly when I helped found the &lt;a href="http://bigimprov.org/"&gt;Baltimore Improv Group&lt;/a&gt; and &lt;a href="http://ignitebaltimore.com/"&gt;Ignite Baltimore&lt;/a&gt;.  People in this city could not have been more supportive.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Culture and recreation&lt;/span&gt;: The greater Baltimore area encompasses many amenities that entrepreneurial people enjoy.  Museums, symphonies, parks, book stores, art house movie theaters, coffee shops, major league sports franchises, etc.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Excellent university&lt;/span&gt;: There are many good schools in Baltimore, but &lt;a href="http://jhu.edu/"&gt;Johns Hopkins&lt;/a&gt; in particular has a global reputation, and is a fertile recruiting ground for local technology companies.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Talent pool&lt;/span&gt;: there are over 100,000 IT workers in Maryland according to the &lt;a href="http://www.greaterbaltimore.org/RegionalDatabrandResources/Publications/DownloadReports/tabid/396/Default.aspx"&gt;Economic Alliance of Greater Baltimore&lt;/a&gt; [link requires registration]. The Washington-Baltimore region is first in the US in the number of residents holding Bachelor's and graduate degrees.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;With a little more investment of energy, time, and resources, I believe we could capitalize on these assets by priming the conditions for startup growth.  Here are some ideas for what else we could do:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;More visible angel investment&lt;/span&gt;: If I have the skills and ambition to start a technology company, how do I meet someone who has the capital and appetite for risk to invest in one, or tell me my idea needs more thinking through? As Dave Troy puts it: &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;"One of the valuable functions of an angel community is that it creates a mechanism for telling silly entrepreneurs to go pound sand; or to come back with a better idea or team.  We don't have a very functional mechanism for handling any of that here right now. What we have is some risk-averse investors telling potentially good entrepreneurs to pound sand, and we have a lot of silly entrepreneurs pursuing ideas that they probably shouldn't.  So, towards the notion of 'supporting' local startups, in my opinion the best way to 'support' them is not to encourage them or patronize them, necessarily, but rather to find ways for them to fail more quickly.&lt;br /&gt;&lt;br /&gt;"...We need faster failures and quicker morphing of bad teams into good ones, and the pursuit of good ideas instead of bad ones...we need to provide real, objective guidance mechanisms to help entrepreneurs navigate the money and power networks they will need to master in order to succeed..."&lt;br /&gt;&lt;br /&gt;Awesomely enough, Dave recently announced the formation of &lt;a href="http://twitter.com/baltimoreangels"&gt;Baltimore Angels&lt;/a&gt;, and at last count 14 angels have signed on.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Develop a &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://www.bootstrapaustin.org/wiki/index.php/Welcome_to_the_Bootstrap_Network"&gt;bootstrap network&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt; Baltimore does not lack for ambition or ideas.  I know of at least nine companies in various stages of growth (&lt;a href="http://600block.com/"&gt;600block&lt;/a&gt;, &lt;a href="http://localist.com/"&gt;Localist&lt;/a&gt;, &lt;a href="http://ipiqi.com/"&gt;Ipiqi,&lt;/a&gt; &lt;a href="http://mptrax.com/"&gt;MPTrax&lt;/a&gt;, &lt;a href="http://www.ubernote.com/"&gt;Ubernote&lt;/a&gt;, &lt;a href="http://spotcrime.com/"&gt;SpotCrime&lt;/a&gt;, &lt;a href="http://awayfind.com/"&gt;AwayFind&lt;/a&gt;, &lt;a href="http://www.thediscovered.com/"&gt;DiscoverED&lt;/a&gt;, &lt;a href="http://Sleep.FM/"&gt;Sleep.FM&lt;/a&gt; -- these are software companies, because that's the field I follow).  We should build up a bootstrap network to support and mentor such entrepreneurs and connect them to potential investors.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Reach out to students&lt;/span&gt;: &lt;a href="http://www.technotheory.com/"&gt;Jared Goralnick&lt;/a&gt; pointed out to me that technical people graduating from college today assume they have only one choice - to get a high-paying, stable job (i.e., at a big consulting or contracting firm).  It's an admittedly attractive choice - who would turn down the chance to make $80,000 or more right out of college?  But students need to know there are other options that could prove more lucrative: starting their own company or joining a startup, options which may payoff financially but will no doubt payoff in terms of the business and technical education they offer.  Recent college graduates can take bigger risks as they have less to lose and more to gain, but few students get that message.  Jared is organizing an event scheduled for 4/11, watch his blog for more details.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Encourage self-organization&lt;/span&gt;: No formal entity could have started SocialDevCampEast, Coworking, Refresh, Outlet, or Ignite, but entities like &lt;a href="http://www.gbtechcouncil.org/"&gt;GBTC&lt;/a&gt;, the University of Baltimore, and many local businesses have shown tremendous support for them. These groups are all run at low-cost with little or no budget, and they still need help.  Our business and government leaders could do wonders by helping with facility rental, marketing, or publicity, or by attending the events, speaking at them, and mixing with the technical community. &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Improved communications&lt;/span&gt;: I'd love for someone to start a blog chronicling the local startup scene and self-organizing tech events.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;GBTC Round Table&lt;/span&gt;: I hear really good things about the GBTC's round table groups.  If there was a group that focused on startup technology companies, I bet people would flock to it, as there aren't many opportunities for local Internet entrepreneurs to mingle exclusively with their peers.  It would also demonstrate GBTC's commitment to helping product companies.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I've made some generalizations here, and what I've written is pretty specific to my experiences, but it's from the heart.  My own startup, &lt;a href="http://oib.com/"&gt;OtherInbox&lt;/a&gt;, is based in Austin, Texas, because that's where the principal founder is located, but also because it's a really ideal place to start a technology company.  It's got all of the support mechanisms I mentioned above, and has had a few rounds of successful startups, so now the startup community is self-sustaining.  Technical people in Austin can't help but encounter many examples of success, and there are a lot of investors willing to mentor them and invest in their dreams.  Truly, Austin is ripe for wild mushroom growth -- yet Austin is more culturally and economically isolated than Baltimore.  If they can do it, why can't we?&lt;br /&gt;&lt;br /&gt;I'm a entrepeneur and technologist, a hacker and improvisor, and I want to spend my life starting and running technology companies. I'm also a transplanted son of Baltimore, with many friends and connections and roots here, and I really love this city.  I want to make my dreams come true here, and I'm committed to doing whatever I can to make this the kind of place where every entrepeneur has that chance. So let's get going!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Thanks to Dave Troy, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.linkedin.com/pub/2/042/888"&gt;Stephen Muirhead&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://billmill.org/"&gt;Bill Mill&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.linkedin.com/pub/3/740/b91"&gt;Prescott Gaylord&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, and &lt;/span&gt;&lt;a style="font-style: italic;" href="http://technotheory.com/"&gt;Jared Goralnick&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, who read drafts of this post and gave me great feedback.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-3173343626528373740?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/FGkiV119jVs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/3173343626528373740/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=3173343626528373740" title="12 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3173343626528373740" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3173343626528373740" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/FGkiV119jVs/baltimores-internet-economy-as-i-see-it.html" title="Baltimore's Internet Economy as I See It" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total><feedburner:origLink>http://www.subelsky.com/2009/01/baltimores-internet-economy-as-i-see-it.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-1808191273607186879</id><published>2009-01-16T19:31:00.003-05:00</published><updated>2009-01-16T19:49:26.353-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="baltimore" /><category scheme="http://www.blogger.com/atom/ns#" term="community" /><title type="text">Baltimore's Tech Calendar is PACKED</title><content type="html">I'm looking forward to all of these awesome upcoming tech events in and around Baltimore:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://twintech3.eventbrite.com/"&gt;Twin Tech III&lt;/a&gt; in DC on 1/22/09: At Twin Tech II there were a ton of Baltimore luminaries in attendance, so this definitely counts&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meetup.com/Baltimore-Washington-Tech-Meetup/calendar/9475596/?action=detail&amp;amp;eventId=9475596"&gt;Tech meetup&lt;/a&gt; in Ellicot City on 1/27/09: This is the first event of a meetup organized by Todd Marks of &lt;a href="http://mindgrub.com/"&gt;Mindgrub&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gbtechcouncil.org/Programs/Social-Media-1-27-09.aspx"&gt;Social Media: User-Driven Experience&lt;/a&gt; in Canton on 1/27/09: I'm a panelist at this event, which aims to explore how companies, individuals and events have utilized social media successfully&lt;/li&gt;&lt;li&gt;&lt;a href="http://outletbmore.wordpress.com/"&gt;Outlet Baltimore&lt;/a&gt; in Hampden on 1/28/09: This is a great idea, a casual social event for the new media crowd&lt;/li&gt;&lt;li&gt;&lt;a href="http://beehivebaltimore.org/"&gt;Debut of Beehive Baltimore's coworking space&lt;/a&gt; in Canton on 2/1/09: I'm an active participant and big-time coworking buff.  This is going to be awesome having our own space.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ignitebaltimore.com/"&gt;Ignite Baltimore #2&lt;/a&gt; in Station North on 2/5/09: The event I organize with Patti Chan of &lt;a href="http://600block.com/"&gt;600block&lt;/a&gt;, along with guest organizer &lt;a href="http://davidadewumi.com/"&gt;David Adewumi&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meetup.com/bmore-on-rails/calendar/9517386/"&gt;B'more on Rails&lt;/a&gt; in Upper Fells Point on 2/15/09: Topic is TBD, but this is where all the Rubyists in town converge.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://twitter.com/baltimoreangels"&gt;First meeting of Baltimore Angels&lt;/a&gt; in Canton on 2/24/09: Spearheaded by local tech guru &lt;a href="http://davetroy.com/"&gt;Dave Troy&lt;/a&gt;, this will really help raise the profile of angel investing in town&lt;/li&gt;&lt;li&gt;&lt;a href="http://wordcampmidatlantic.com/"&gt;WordCamp Mid-Atlantic&lt;/a&gt; at the University of Baltimore on 5/16/09: This is &lt;a href="http://technosailor.com/"&gt;Technosailor&lt;/a&gt;'s baby!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;February should also see another &lt;a href="http://www.refreshbmore.org/"&gt;Refresh Bmore&lt;/a&gt; event, and before you know it, it'll be time for another &lt;a href="http://barcamp.org/SocialDevCampEast"&gt;SocialDevCampEast&lt;/a&gt;!  If things keep going, we're gonna need to build a &lt;a href="http://www.dctechevents.com/"&gt;DC Tech Events&lt;/a&gt; style calendar!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-1808191273607186879?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/_2rLabHRfTI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/1808191273607186879/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=1808191273607186879" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/1808191273607186879" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/1808191273607186879" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/_2rLabHRfTI/baltimores-tech-calendar-is-packed.html" title="Baltimore's Tech Calendar is PACKED" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://www.subelsky.com/2009/01/baltimores-tech-calendar-is-packed.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-6858120725303994619</id><published>2008-12-30T12:49:00.006-05:00</published><updated>2008-12-30T13:39:39.681-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Wire Baltimore" /><title type="text">The Wire tour of Baltimore</title><content type="html">A few people on Twitter asked me for the itinerary of The Wire tour I did last week with a friend who's a fan of the show who had come in from out of town.  Here's a quick and dirty version. Mild spoiler alert!&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Start at &lt;a href="http://tinyurl.com/7bvcw3"&gt;Penn Station&lt;/a&gt;.  This is where Marlo Stanfield intentionally gets himself arrested (I think in season 4), thus confirming the wiretap that Prop Joe warned him about.&lt;/li&gt;&lt;li&gt;Drive south to &lt;a href="http://tinyurl.com/74g6m9"&gt;City Hall&lt;/a&gt;.  Several scenes throughout the series take place outside of City Hall, including a brief sequence in the opening.  Across from City Hall, you'll see the veteran's memorial steps where Stringer Bell and Prop Joe convene so Joe can warn Stringer about police surveillance (after Cheese gets detained after the dogfight). &lt;/li&gt;&lt;li&gt;Drive south to the &lt;a href="http://tinyurl.com/7h6l2b"&gt;Inner Harbor&lt;/a&gt;. This is where Omar meets Stringer Bell at the end of season 1, trying to get Stringer Bell to talk about the Barksdale organization on tape.&lt;/li&gt;&lt;li&gt;Head east to the &lt;a href="http://tinyurl.com/78fru9"&gt;Broadway Market&lt;/a&gt;, where McNulty's kids follow Stringer Bell.&lt;/li&gt;&lt;li&gt;Head north on Broadway to see &lt;a href="http://tinyurl.com/a85scy"&gt;The Ritz&lt;/a&gt;, which in season one is Orlando's strip bar.&lt;/li&gt;&lt;li&gt;Head east to &lt;a href="http://tinyurl.com/875bs5"&gt;Canton Waterfront Park&lt;/a&gt;, home of the Baltimore Police Marine unit, where McNulty "rides the boat" in season 2.&lt;/li&gt;&lt;li&gt;Head east on Boston Street to see the Port of Baltimore, the focus of season 2.&lt;/li&gt;&lt;li&gt;Head northwest to &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;view=text&amp;amp;q=patterson+park&amp;amp;sll=39.313515,-76.566296&amp;amp;sspn=0.084071,0.161533&amp;amp;ie=UTF8&amp;amp;z=16&amp;amp;g=patterson+park&amp;amp;iwloc=addr"&gt;Patterson Park&lt;/a&gt;, where Prop Joe meets with members of The Greek's organizaton.&lt;/li&gt;&lt;li&gt;Head east to &lt;a href="http://maps.google.com/maps?hl=en&amp;amp;q=Collington+Avenue+and+East+Hoffman+Street,+baltimore,+md&amp;amp;ie=UTF8&amp;amp;z=16&amp;amp;g=Collington+Avenue+and+East+Hoffman+Street,+baltimore,+md&amp;amp;iwloc=addr"&gt;Collington Square Park&lt;/a&gt;, and commence following the &lt;a href="http://www.citypaper.com/special/story.asp?id=11846"&gt;City Paper's Wire Tour&lt;/a&gt;, which covers several awesome sites from seasons 1-4, including Hamsterdam.  My favorite stop is #5, Marlo's outdoor meeting spot, but seeing the rim store where Marlo hangs out is pretty awesome also.&lt;/li&gt;&lt;li&gt;After leaving stop #7 on the City Paper tour, also visit &lt;a href="http://tinyurl.com/8nr2bp"&gt;Greenmount Cemetery&lt;/a&gt;, site of numerous meetups and interesting scenes.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;This tour is very light on west-side locations.  If anyone wants to expand this itinerary, I would look at these sites:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.independent.co.uk/travel/americas/close-to-the-wire-on-the-mean-streets-of-baltimore-872174.html"&gt;The Independent's Wire Tour&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mapbuilder &lt;a href="http://www.mapbuilder.net/users/pnothstein/31848"&gt;The Wire mashup&lt;/a&gt; [has a ton of shooting locations]&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-6858120725303994619?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/daWdF8yglkw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/6858120725303994619/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=6858120725303994619" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/6858120725303994619" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/6858120725303994619" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/daWdF8yglkw/wire-tour-of-baltimore.html" title="The Wire tour of Baltimore" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://www.subelsky.com/2008/12/wire-tour-of-baltimore.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-712231674534441077</id><published>2008-12-24T09:32:00.003-05:00</published><updated>2008-12-24T09:37:13.886-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SproutCore JavaScript" /><title type="text">SproutCore and the Future of Web Apps at DCRUG</title><content type="html">A few weeks ago I presented an updated version of my &lt;a href="http://sproutcore.com/"&gt;SproutCore&lt;/a&gt; demo at &lt;a href="http://actsascommunity.com/groups/2-dcrug/profile"&gt;DCRUG&lt;/a&gt;.  Below is a video of it.  Since you can't see the slides too well, so I also posted an &lt;a href="http://www.slideshare.net/subelsky/sproutcore-and-the-future-of-web-apps-presentation-870012/"&gt;updated copy of the slides on slideshare&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=1230287109099637445&amp;hl=en&amp;fs=true" style="width:400px;height:326px" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;I borrow a lot from Charles Jolley's writings on the &lt;a href="http://www.sproutcore.com/blog/"&gt;SproutCore blog&lt;/a&gt; for the introductory material about the uncanny valley etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-712231674534441077?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/G1Lyx9n_Wts" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/712231674534441077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=712231674534441077" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/712231674534441077" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/712231674534441077" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/G1Lyx9n_Wts/sproutcore-and-future-of-web-apps-at.html" title="SproutCore and the Future of Web Apps at DCRUG" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/12/sproutcore-and-future-of-web-apps-at.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-5885618183528023490</id><published>2008-11-15T12:12:00.002-05:00</published><updated>2008-11-15T12:15:39.814-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="random_data" /><title type="text">random_data v1.5 Released</title><content type="html">The &lt;a href="http://random-data.rubyforge.org/"&gt;random_data gem&lt;/a&gt; provides methods for generating random test data including names, mailing addresses, dates, phone numbers, e-mail addresses, and text.  v1.5 includes a primitive Markov text generator and an array "roulette" function.  &lt;br /&gt;&lt;br /&gt;Thanks to Hugh Sasse for contributing code for the new features!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-5885618183528023490?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/x0R89SDx8g4" height="1" width="1"/&gt;</content><link rel="related" href="http://random-data.rubyforge.org/" title="random_data v1.5 Released" /><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/5885618183528023490/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=5885618183528023490" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/5885618183528023490" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/5885618183528023490" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/x0R89SDx8g4/randomdata-v15-released.html" title="random_data v1.5 Released" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/11/randomdata-v15-released.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-1795472288720344665</id><published>2008-11-05T10:41:00.002-05:00</published><updated>2008-11-05T10:52:14.122-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="baltimore" /><category scheme="http://www.blogger.com/atom/ns#" term="SocialDevCampEast" /><title type="text">SocialDevCampEast #2 recap</title><content type="html">&lt;a href="http://socialdevcamp.net/"&gt;SocialDevCampEast #2&lt;/a&gt;, held in Baltimore on November 1st, was another great tech event in Baltimore.  The biggest value for me was making and reenforcing &lt;a href="http://many.corante.com/archives/2003/09/15/the_weakening_of_strong_ties.php"&gt;weak ties&lt;/a&gt; by connecting with people I don't directly work with or socialize with on a daily basis (especially people I only converse with via social media).  For example, I got a chance to meet &lt;a href="http://boalt.com/"&gt;Adam Boalt&lt;/a&gt; and hear him talk about the success of &lt;a href="http://RushMyPassport.com/"&gt;RushMyPassport.com&lt;/a&gt;, which is the exact kind of business I'm interested in building in the future (something with online and offline components, and something that is not considered 'sexy' by most of the cognoscenti). &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As far as presentations went, I gave a short version of my SproutCore demo and also led a session about cloud infrastructure (and what's not so great about it).  The best sessions I attended were:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.tempuslabs.com/?p=5"&gt;William Flanagan's venture capital talk&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Launching of &lt;a href="http://groups.google.com/group/coworking-baltimore?lnk=srg"&gt;Baltimore Co-Working initiative&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.twittervotereport.com/"&gt;Twitter Vote Report&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Jimmy Gardner posted &lt;a href="http://flickr.com/photos/jjgardner3/2992770138/in/set-72157608562550444/"&gt;some great photos&lt;/a&gt; that convey the feeling of the event.  Congratulations to Dave Troy and Ann Bernard for another success!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-1795472288720344665?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/nnrT_a83FPc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/1795472288720344665/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=1795472288720344665" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/1795472288720344665" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/1795472288720344665" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/nnrT_a83FPc/socialdevcampeast-2-recap.html" title="SocialDevCampEast #2 recap" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/11/socialdevcampeast-2-recap.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-8661771668219586750</id><published>2008-10-19T18:22:00.004-05:00</published><updated>2008-10-19T18:32:24.592-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sproutcore" /><title type="text">SproutCore and the Future of Web Apps</title><content type="html">&lt;a href="http://smartic.us/"&gt;Bryan Liles&lt;/a&gt; took a great (but long) &lt;a href="http://smartic.us/2008/10/16/mike-subelsky-on-sproutcore-at-b-more-on-rails"&gt;video&lt;/a&gt; of my recent presentation on SproutCore at &lt;a href="http://ruby.meetup.com/85"&gt;B'More on Rails&lt;/a&gt;.  A lot of my introductory material is adapted from the &lt;a href="http://www.sproutcore.com/blog/"&gt;SproutCore blog&lt;/a&gt; especially &lt;a href="http://www.sproutcore.com/2008/04/25/client-server-is-the-future-of-the-web/"&gt;this post from Charles Jolley&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The slides themselves are &lt;a href="http://www.slideshare.net/subelsky/sproutcore-and-the-future-of-web-apps-presentation/"&gt;on slideshare&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a great technology that I'm having a lot of fun learning.  Standby for more blog posts about it!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-8661771668219586750?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/Q6rwU-2SS_o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/8661771668219586750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=8661771668219586750" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/8661771668219586750" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/8661771668219586750" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/Q6rwU-2SS_o/sproutcore-and-future-of-web-apps.html" title="SproutCore and the Future of Web Apps" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.subelsky.com/2008/10/sproutcore-and-future-of-web-apps.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-2541123930267857629</id><published>2008-10-15T09:07:00.002-05:00</published><updated>2008-10-15T09:15:08.767-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ignite" /><category scheme="http://www.blogger.com/atom/ns#" term="SocialDevCampEast" /><category scheme="http://www.blogger.com/atom/ns#" term="conferences" /><title type="text">Ignite Baltimore and SocialDevCampEast</title><content type="html">Two really cool events are going down in the next couple of weeks here in Baltimore that everyone should check out.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://ignitebaltimore.com/"&gt;Ignite Baltimore&lt;/a&gt; is an event I'm helping to organize where 16 people each get five minutes on stage to talk about something they are passionate about.  We've got hackers, bloggers, painters, reverends, entrepreneurs, green builders, and so on all coming together to share what they know. The event debuts Thursday, October 16th at 6 pm at The Windup Space (12 W. North Ave).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second &lt;a href="http://barcamp.pbwiki.com/SocialDevCampEast"&gt;SocialDevCampEast&lt;/a&gt; conference, taking place on November 1st, is a great gathering of the smartest tech innovators on the East coast.  As &lt;a href="http://davetroy.com/"&gt;Dave Troy&lt;/a&gt; writes:&lt;/div&gt;&lt;div&gt;&lt;blockquote type="cite"&gt;&lt;blockquote type="cite"&gt;&lt;span class="Apple-style-span"  style="  ;font-family:Helvetica;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;SocialDevCamp is a real user-powered unconference with no commercial agenda -- the entire purpose is to CONNECT the leaders who will shape the next wave of tech innovation on the east coast.  Come see how dynamic a truly user-powered conference can be!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;I'm really interested in these events because they are a great way to connect with others interested in technology and digital culture, and learn new things while I'm doing it.  See you there!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-2541123930267857629?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/9-Cw8nWVs-c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/2541123930267857629/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=2541123930267857629" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/2541123930267857629" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/2541123930267857629" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/9-Cw8nWVs-c/ignite-baltimore-and-socialdevcampeast.html" title="Ignite Baltimore and SocialDevCampEast" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/10/ignite-baltimore-and-socialdevcampeast.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-4881224654853140155</id><published>2008-09-19T12:35:00.002-05:00</published><updated>2008-09-19T12:54:21.590-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><title type="text">My Rails TakeFive interview</title><content type="html">Now that &lt;a href="http://otherinbox.com/"&gt;OtherInbox&lt;/a&gt; has launched we can publicly talk about what we're doing and why, and what technologies we use and why.  I was honored to be &lt;a href="http://blog.fiveruns.com/2008/9/19/rails-takefive-five-questions-with-mike-subelsky"&gt;interviewed&lt;/a&gt; for the FiveRuns "Take Five" feature. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-4881224654853140155?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/7z0etD6QPXk" height="1" width="1"/&gt;</content><link rel="related" href="http://blog.fiveruns.com/2008/9/19/rails-takefive-five-questions-with-mike-subelsky" title="My Rails TakeFive interview" /><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/4881224654853140155/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=4881224654853140155" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4881224654853140155" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4881224654853140155" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/7z0etD6QPXk/my-rails-takefive-interview.html" title="My Rails TakeFive interview" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/09/my-rails-takefive-interview.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-3475947166780995301</id><published>2008-09-16T12:32:00.002-05:00</published><updated>2008-09-16T12:37:53.383-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="lone star ruby conference" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing" /><title type="text">Video of my talk at Lone Star Ruby Conference</title><content type="html">Confreaks has posted my entire &lt;a href="http://lsrc2008.confreaks.com/07-mike-subelsky-ruby-in-the-cloud.html"&gt;Ruby in the Cloud talk&lt;/a&gt; from Lone Star Ruby Conference.  Check it out and let me know what you think!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a 30 second synopsis filmed by Gregg Pollack:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="370" id="viddler"&gt;&lt;param name="movie" value="http://www.viddler.com/player/334fe7ba/543.109/" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;embed src="http://www.viddler.com/player/334fe7ba/543.109/" width="437" height="370" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" wmode="transparent" name="viddler" &gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-3475947166780995301?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/R8k9TRnnX48" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/3475947166780995301/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=3475947166780995301" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3475947166780995301" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3475947166780995301" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/R8k9TRnnX48/video-of-my-talk-at-lone-star-ruby.html" title="Video of my talk at Lone Star Ruby Conference" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/09/video-of-my-talk-at-lone-star-ruby.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-4657614733975771459</id><published>2008-09-08T12:43:00.002-05:00</published><updated>2008-09-08T12:45:42.395-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="otherinbox" /><title type="text">Today we launch OtherInbox!</title><content type="html">Josh and I are in San Francisco at &lt;a href="http://Techcrunch50.com"&gt;Techcrunch50&lt;/a&gt;.  Sometime between 1 and 5 pm Pacific time we'll be launching OtherInbox!  You can see the demo live at &lt;a href="http://otherinbox.com"&gt;otherinbox.com&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What a great year it's been!  Thanks for everyone's help and support.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-4657614733975771459?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/yu7bJmTUC00" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/4657614733975771459/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=4657614733975771459" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4657614733975771459" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4657614733975771459" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/yu7bJmTUC00/today-we-launch-otherinbox.html" title="Today we launch OtherInbox!" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/09/today-we-launch-otherinbox.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-9182217839832296521</id><published>2008-09-07T12:20:00.004-05:00</published><updated>2008-09-07T12:36:01.353-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="lone star ruby conference" /><title type="text">My talk at Lone Star Ruby Conference</title><content type="html">&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.subelsky.com/uploaded_images/n754291476_1308900_2675-789331.jpg"&gt;&lt;img src="http://www.subelsky.com/uploaded_images/n754291476_1308900_2675-789328.jpg" border="0" alt="" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; " /&gt;&lt;/a&gt;I had a great time at &lt;a href="http://lonestarrubyconf.com/"&gt;Lone Star Ruby Conference&lt;/a&gt;,&lt;/div&gt;&lt;div&gt;meeting fellow Rubyists and hanging out with the entire OtherInbox dev team.  I had the privilege of speaking about all the benefits we've gained from using as much Ruby as possible in running our service.  Confreaks will be posting the video soon, but here are my slides:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;&lt;a href="http://www.subelsky.com/Ruby%20in%20the%20Cloud.pdf"&gt;Ruby in the Cloud&lt;/a&gt; (PDF, 5.8 MB)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I really enjoyed sharing our experiences with the conference, but the highlight of the event for me was getting to hear the inventor of Ruby speak, and also getting to meet him.  You will not meet a more generous, noble, joyful person than Matz, and I can't think of anyone I don't know personally who has had more of an impact on my professional life than him.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.subelsky.com/uploaded_images/n754291476_1308898_1532-776904.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://www.subelsky.com/uploaded_images/n754291476_1308898_1532-776900.jpg" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.subelsky.com/uploaded_images/n754291476_1308899_2137-776935.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://www.subelsky.com/uploaded_images/n754291476_1308899_2137-776932.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-9182217839832296521?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/V_50XMSjV3s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/9182217839832296521/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=9182217839832296521" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/9182217839832296521" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/9182217839832296521" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/V_50XMSjV3s/my-talk-at-lone-star-ruby-conference.html" title="My talk at Lone Star Ruby Conference" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.subelsky.com/2008/09/my-talk-at-lone-star-ruby-conference.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-1120034496802012380</id><published>2008-08-19T19:28:00.002-05:00</published><updated>2008-08-19T19:41:47.529-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="baltimore" /><category scheme="http://www.blogger.com/atom/ns#" term="Ignite" /><title type="text">Ignite Baltimore Call for Participants</title><content type="html">Hey everyone, we're organizing &lt;a href="http://ignitebaltimore.com/"&gt;Ignite Baltimore&lt;/a&gt;, and we're looking for interesting topics.  Check out the site for more details, or visit these other city Ignite pages for inspiration:&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;&lt;a href="http://www.ignite-phoenix.org/submissions/subs-aug-08/"&gt;Phoenix&lt;/a&gt;&lt;a href="http://radar.oreilly.com/2008/07/ignite-nyc-soldering-guerilla.html"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;&lt;a href="http://radar.oreilly.com/2008/07/ignite-nyc-soldering-guerilla.html"&gt;New York&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;&lt;a href="http://www.igniteseattle.com/2008/02/ignite-seattle-5-the-schedule/"&gt;Seattle&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;If you're a Twitter person, follow &lt;a href="http://twitter.com/ignitebaltimore"&gt;@ignitebaltimore&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-1120034496802012380?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/FYymNrKJM0k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/1120034496802012380/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=1120034496802012380" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/1120034496802012380" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/1120034496802012380" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/FYymNrKJM0k/ignite-baltimore-call-for-participants.html" title="Ignite Baltimore Call for Participants" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/08/ignite-baltimore-call-for-participants.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-4079363372029503588</id><published>2008-08-12T14:46:00.004-05:00</published><updated>2008-08-12T15:25:04.256-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sproutcore" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><title type="text">Humane Sproutcore Server Development Environment</title><content type="html">Recently I've started to build a new, rich user interface for &lt;a href="http://otherinbox.com/"&gt;OtherInbox&lt;/a&gt; using &lt;a href="http://sproutcore.com/"&gt;SproutCore&lt;/a&gt;, which has been very enjoyable.  One thing that was not enjoyable was properly configuring my development environment.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In production, you'll usually deploy your SproutCore app as a static file, so all you have to do is arrange for your users to hit that URL (which out of the box is configured as /static, but could be anything).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In development mode, though, you want to be regenerating your client on the fly by serving it dynamically from sc-server.  To use your app, you talk to http://localhost:4020, and if you want your client to communicate with a backend server, you configure the "proxy" setting in sc-config.  Thus when the Sproutcore server gets a request for "/gadgets", it proxies that request to your local development server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For some kinds of apps, this works well.  For OtherInbox though, everything the Sproutcore app does requires you to be signed-in and have an active session with the Rails application server.  This caused all kinds of cookie problems, probably because of same origin policy (e.g. my Rails app running at otherinbox.dev was issuing cookies that were somehow getting mangled by the proxying process).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's what I solved the problem.  Check out &lt;a href="http://www.subelsky.com/2007/11/testing-rails-ssl-requirements-on-your.html"&gt;my local Apache setup&lt;/a&gt; for details about the whole stack:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="textmate-source"&gt;&lt;span class="source source_apache-config"&gt;&lt;span class="meta meta_vhost meta_vhost_apache-config"&gt; &lt;span class="meta meta_tag meta_tag_apache-config"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_apache-config"&gt;&amp;lt;&lt;/span&gt;&lt;span class="entity entity_name entity_name_tag entity_name_tag_apache-config"&gt;VirtualHost&lt;/span&gt; &lt;span class="meta meta_toc-list meta_toc-list_virtual-host meta_toc-list_virtual-host_apache-config"&gt;*:80&lt;/span&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_apache-config"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="support support_constant support_constant_apache-config"&gt;ProxyPass&lt;/span&gt; /app http://localhost:4020/other_inbox/&lt;br /&gt; &lt;span class="support support_constant support_constant_apache-config"&gt;ProxyPassReverse&lt;/span&gt; /app http://localhost:4020/other_inbox&lt;br /&gt;&lt;br /&gt; &lt;span class="support support_constant support_constant_apache-config"&gt;ProxyPass&lt;/span&gt; /static http://localhost:4020/static/&lt;br /&gt; &lt;span class="support support_constant support_constant_apache-config"&gt;ProxyPassReverse&lt;/span&gt; /static http://localhost:4020/static&lt;br /&gt;&lt;br /&gt; &lt;span class="support support_constant support_constant_apache-config"&gt;ProxyPass&lt;/span&gt; / http://localhost:3000/&lt;br /&gt; &lt;span class="support support_constant support_constant_apache-config"&gt;ProxyPassReverse&lt;/span&gt; / http://localhost:3000&lt;br /&gt;&lt;br /&gt; &lt;span class="support support_constant support_constant_apache-config"&gt;ProxyPreserveHost&lt;/span&gt; on&lt;br /&gt;&lt;span class="meta meta_tag meta_tag_apache-config"&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_apache-config"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="entity entity_name entity_name_tag entity_name_tag_apache-config"&gt;VirtualHost&lt;/span&gt;&lt;span class="punctuation punctuation_definition punctuation_definition_tag punctuation_definition_tag_apache-config"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;See how that works?  When I load http://otherinbox.dev/app in the browser, Apache proxies that request to sc-server, which dynamically generates my Sproutcore client app.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When components of that app make requests for other parts of Sproutcore, using the /static URL, Apache also proxies those back to sc-server.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When the app makes requests for anything else, those requests get proxied by Apache to the Mongrel I have running the Rails code.  Because my Sproutcore app is making REST calls to the backend, this ensures that anything the Sproutcore app asks for from my server gets proxied properly, in this case to localhost:3000.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As soon as I did this, all of the cookie issues were done.  You'll also have to add some application-specific code about how you want to force logins if the user is not already signed-in. In our code, I just check for a logged-in cookie, and if it's not there, we open up the URL for a signin window.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-4079363372029503588?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/sT3mNFaNqos" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/4079363372029503588/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=4079363372029503588" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4079363372029503588" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/4079363372029503588" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/sT3mNFaNqos/humane-sproutcore-server-development.html" title="Humane Sproutcore Server Development Environment" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.subelsky.com/2008/08/humane-sproutcore-server-development.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-8076927519108051077</id><published>2008-07-30T14:19:00.005-05:00</published><updated>2008-07-30T20:23:55.092-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="micro-apps" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="gruff" /><title type="text">Cool Medialets Micro-App</title><content type="html">My good friend &lt;a href="http://paulbarry.com/"&gt;Paul Barry&lt;/a&gt; and I have been helping our friends at &lt;a href="http://medialets.com/"&gt;Medialets&lt;/a&gt; out with a &lt;a href="http://www.medialets.com/app-store-metrics/"&gt;neat little Rails micro-app&lt;/a&gt; that culls iPhone App Store data from Apple's endless array of plists, and makes a &lt;a href="http://www.medialets.com/app-store-metrics/"&gt;chart&lt;/a&gt;, a dynamically-generated &lt;a href="http://www.medialets.com/app-store-metrics/charts/apps-by-price"&gt;Gruff graph&lt;/a&gt;, and a bunch of RSS feeds.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My favorite thing about this app is the &lt;a href="http://www.medialets.com/app-store-metrics/feeds/new/"&gt;New Apps RSS feed&lt;/a&gt; which lets me keep up with the newest time-wasters/productivity enhancers for the iPhone.  Let me take this opportunity to say that the world does not need any more iPhone tip calculators or fortune-telling games.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I wrote a bit more about the latest features &lt;a href="http://www.medialets.com/blog/2008/07/30/screenshots-and-company-profile-listing-added-to-app-store-metrics-and-rss-feeds/"&gt;over at the Medialets blog&lt;/a&gt;. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-8076927519108051077?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/ubxyfZ-6RKE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/8076927519108051077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=8076927519108051077" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/8076927519108051077" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/8076927519108051077" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/ubxyfZ-6RKE/cool-medialets-micro-app.html" title="Cool Medialets Micro-App" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/07/cool-medialets-micro-app.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-3609653870784322680</id><published>2008-07-18T12:12:00.005-05:00</published><updated>2008-07-18T12:27:43.635-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title type="text">My iPhone app screens</title><content type="html">&lt;p&gt;I got stuck for 90 minutes at the dentist office, so I decided to organize all my iPhone apps.  First screen (left) is essentials, stuff I use every day.  Second screen (right) is references and tools.&lt;/p&gt;&lt;div style="float: left; margin-right: 5px; text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.subelsky.com/uploaded_images/IMG_0001-706756.png"&gt;&lt;img style="cursor: pointer;" src="http://www.subelsky.com/uploaded_images/IMG_0001-706703.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.subelsky.com/uploaded_images/IMG_0002-706842.png"&gt;&lt;img style="cursor: pointer;" src="http://www.subelsky.com/uploaded_images/IMG_0002-706832.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Third screen is "communications and entertainment". Fourth screen is the graveyard, for things I don't use regularly or can't get rid of.&lt;br /&gt;&lt;div style="float: left; margin-right: 5px;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.subelsky.com/uploaded_images/IMG_0003-773921.png"&gt;&lt;img style="cursor: pointer;" src="http://www.subelsky.com/uploaded_images/IMG_0003-773908.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.subelsky.com/uploaded_images/IMG_0004-774033.png"&gt;&lt;img style="cursor: pointer;" src="http://www.subelsky.com/uploaded_images/IMG_0004-774026.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;I can think of worse ways to kill 90 minutes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-3609653870784322680?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/7aqlmzvHKRc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/3609653870784322680/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=3609653870784322680" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3609653870784322680" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/3609653870784322680" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/7aqlmzvHKRc/my-iphone-app-screens.html" title="My iPhone app screens" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/07/my-iphone-app-screens.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-5882074637176893404</id><published>2008-07-02T14:03:00.002-05:00</published><updated>2008-07-02T14:05:30.669-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><title type="text">Contributing to Rails is easier than you think</title><content type="html">&lt;img alt="Rails_2" title="Rails_2" src="http://joshuabaer.blogs.com/photos/uncategorized/2008/07/02/rails_2.png" border="0" style="float: left; margin: 0px 5px 5px 0px;" /&gt;At &lt;a href="http://www.otherinbox.com/"&gt;OtherInbox&lt;/a&gt; we love open source and are looking for ways to share some of our labors with the community.  Today I came across a great opportunity to contribute something to &lt;a href="http://rubyonrails.org/"&gt;Ruby-on-Rails&lt;/a&gt; core development.  I'm posting it here so everyone can see how easy it is to contribute.&lt;br /&gt;&lt;br /&gt;I was building a JSON API to enable some new awesome features we're working on.  Following the &lt;a href="http://www.json.org/JSONRequest.html"&gt;JSON request specification&lt;/a&gt;, I had the client setting its MIME type to "application/jsonrequest".  But this was not causing Rails to recognize the request as JSON and thus the request body was not properly parsed.  After doing some digging, I realized that Rails only looks for MIME type "application/json".&lt;br /&gt;&lt;br /&gt;Fortunately, MIME type processing is implemented really humanely in Rails, so I whipped up a little patch that adds "application/jsonrequest" as a synonym for the JSON MIME type.   First I wrote a test to prove that this was a problem.  Once I had a failing test, I added the MIME type, and got my test passing.  I followed the &lt;a href="http://rails.lighthouseapp.com/projects/8994/sending-patches"&gt;git patch instructions&lt;/a&gt; on lighthouse, then jumped into IRC #rails-contrib to garner support for it. &lt;br /&gt;&lt;br /&gt;I happened to see that &lt;a href="http://weblog.techno-weenie.net/"&gt;Rick Olson&lt;/a&gt;, the author of the existing JSON parsing code, was in the chat, so I pinged him with the lighthouse ticket.  He tested it and applied it, and now &lt;a href="http://github.com/rails/rails/commit/8f640c381d9d1b74f6a0fc3648c21da373661914"&gt;our one line of code is a part of Rails&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Hopefully this will save some future JSON implementer a bit of pain.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Cross-posted from the &lt;/span&gt;&lt;a href="http://blog.otherinbox.com/"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;OtherInbox blog&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-5882074637176893404?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/O8vT-aGGaq0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/5882074637176893404/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=5882074637176893404" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/5882074637176893404" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/5882074637176893404" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/O8vT-aGGaq0/contributing-to-rails-is-easier-than.html" title="Contributing to Rails is easier than you think" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://www.subelsky.com/2008/07/contributing-to-rails-is-easier-than.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6369418367411691447.post-7138014355572897317</id><published>2008-06-10T09:34:00.003-05:00</published><updated>2008-06-10T09:41:13.262-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="otherinbox" /><category scheme="http://www.blogger.com/atom/ns#" term="deployment" /><category scheme="http://www.blogger.com/atom/ns#" term="lone star ruby conference" /><category scheme="http://www.blogger.com/atom/ns#" term="god.rb" /><category scheme="http://www.blogger.com/atom/ns#" term="conferences" /><title type="text">Speaking at Lone Star Ruby Conference</title><content type="html">I will be speaking at the &lt;a href="http://lonestarrubyconf.com/"&gt;Lone Star Ruby Conference&lt;/a&gt; in September about how we use Ruby to deploy, monitor, and manage a cluster of servers running in the &lt;a href="http://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt; virtual cloud.   Below is a summary of what I'll be talking about.&lt;br /&gt;&lt;br /&gt;In OtherInbox, almost every system administration task imaginable is carried out using Ruby, meaning we as developers can enjoy all of Ruby's expressive benefits and spend less time scripting the shell, writing cron tasks, or using other languages.  Because we make fewer context switches from thinking in Ruby to thinking in other languages, we also reap a big productivity benefit.&lt;br /&gt;&lt;br /&gt;Using Ruby throughout our cloud also means that porting the application to run in different production environments is a trivial task, because Ruby is the glue connecting the Ruby components together, thus all we require is a Ruby interpreter to deploy.&lt;br /&gt;&lt;br /&gt;Two key Ruby technologies have matured in the previous 18 months which make it ideal for almost every layer of managing a cluster of servers:&lt;ul&gt;&lt;li&gt;&lt;a href="http://god.rubyforge.org/"&gt;god.rb&lt;/a&gt; allows fine-grained process monitoring and daemon control (a la &lt;a href="http://www.tildeslash.com/monit/"&gt;monit&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://rufus.rubyforge.org/rufus-scheduler/files/README_txt.html"&gt;rufus-scheduler&lt;/a&gt; enables Ruby-based scheduling (replacing cron, and providing a great facility for running daemons that must be executed on a recurring basis)&lt;/li&gt;&lt;/ul&gt;When combined with these Ruby workhorses, developers today can spend much more of their time writing Ruby code, and less time struggling with the vagaries of their production environment:&lt;ul&gt;&lt;li&gt;Ruby &lt;a href="http://www.ruby-doc.org/stdlib/"&gt;standard library&lt;/a&gt; utilities (File, FileUtils, etc.)&lt;/li&gt;&lt;li&gt;&lt;a href="http://rake.rubyforge.org/"&gt;Rake&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.capify.org/"&gt;Capistrano&lt;/a&gt; (for any kind of remote application, not just Rails)&lt;/li&gt;&lt;/ul&gt;The talk will also include a discussion of using several different &lt;a href="http://aws.amazon.com/"&gt;AWS&lt;/a&gt; gems to make &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;cloud computing&lt;/a&gt; simple, by illustrating the use of Amazon's &lt;a href="http://aws.amazon.com/s3"&gt;S3&lt;/a&gt; and &lt;a href="http://www.amazon.com/Simple-Queue-Service-home-page/b?ie=UTF8&amp;amp;node=13584001"&gt;SQS&lt;/a&gt; services to distribute asychnronous work and handle communication between servers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;(cross-posted from the &lt;/span&gt;&lt;a href="http://blog.otherinbox.com/"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;OtherInbox blog&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6369418367411691447-7138014355572897317?l=www.subelsky.com%2Findex.html'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/subelskyblog/~4/7di05kC-RPo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/7138014355572897317/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6369418367411691447&amp;postID=7138014355572897317" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/7138014355572897317" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6369418367411691447/posts/default/7138014355572897317" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/subelskyblog/~3/7di05kC-RPo/i-will-be-speaking-at-lone-star-ruby.html" title="Speaking at Lone Star Ruby Conference" /><author><name>Mike Subelsky</name><uri>http://www.blogger.com/profile/03590094055236393140</uri><email>mike@subelsky.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="12763295364052184989" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.subelsky.com/2008/06/i-will-be-speaking-at-lone-star-ruby.html</feedburner:origLink></entry></feed>
