<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>Technology for Humans - Home</title>
  <id>tag:www.mslater.com,2008:mephisto/</id>
  <generator version="0.7.3" uri="http://mephistoblog.com">Mephisto Noh-Varr</generator>
  
  <link href="http://www.mslater.com/" rel="alternate" type="text/html" />
  <updated>2008-07-05T21:14:33Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/mslater" type="application/atom+xml" /><entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2008-07-07:10535</id>
    <published>2008-07-07T14:00:00Z</published>
    <updated>2008-07-05T21:14:33Z</updated>
    <link href="http://feeds.feedburner.com/~r/mslater/~3/328907474/startup-camp-this-week" rel="alternate" type="text/html" />
    <title>Startup Camp This Week</title>
<content type="html">
            &lt;p&gt;I’m really excited to be heading to &lt;a href='http://oatv.com/foo'&gt;Startup Camp&lt;/a&gt; toward the end of this week. This is a gathering of folks from seven startups, plus a dozen or so startup veterans, investors, and advisors, to talk about making our ventures successful. I feel really fortunate that my startup, &lt;a href='http://collectiveknowledge.com'&gt;Collective Knowledge Works&lt;/a&gt;, was chosen from the more than 80 companies that submitted applications.&lt;/p&gt;


	&lt;p&gt;At the beginning of Startup Camp, each company gives a lightning talk describing itself. The format is like the Ignite events: 20 slides, which are automatically advanced every 20 seconds, giving you about seven minutes total. It’s a demanding and inspiring format.&lt;/p&gt;


	&lt;p&gt;I started with an edit of my standard pitch but decided that there really was no point in having word slides at this speed. Spurred on by the book “Back of the Napkin,” I’ve been creating illustrations to anchor each slide. It’s a little daunting how easy it is to spend two hours on a slide that’s going to be shown for 20 seconds, but it’s a great discipline for really clarifying your thinking and figuring out what your main points are and how best to communicate them.&lt;/p&gt;


	&lt;p&gt;Another great thing about Startup Camp is that getting into it also grants admission to O’Reilly’s Foo Camp, which immediately follows it. Foo Camp invitations are highly coveted, thanks to the incredible collection of people that it gathers and the wonderfully free-form way the even unfolds.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=2N1lNJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=2N1lNJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=iU9qij"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=iU9qij" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=JmtEWj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=JmtEWj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=iTxvCj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=iTxvCj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/328907474" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/7/7/startup-camp-this-week</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2008-07-05:10534</id>
    <published>2008-07-05T16:13:00Z</published>
    <updated>2008-07-05T16:17:06Z</updated>
    <link href="http://feeds.feedburner.com/~r/mslater/~3/327466882/coping-with-the-information-flood" rel="alternate" type="text/html" />
    <title>Coping with the Information Flood</title>
<content type="html">
            &lt;p&gt;Many years ago, when I was writing Microprocessor Report, I read dozens of magazines a week and sifted through hundreds of printed, mailed press releases each month. It was chronically overwhelming. It’s amazing how the web has eliminated that whole world of keeping up with paper.&lt;/p&gt;


	&lt;p&gt;Of course, the electronic information flood is now far larger than the paper flood ever was. Fortunately, we have better tools for dealing with it. But I’ve found it non-trivial to find a way to use those tools that really works for me.&lt;/p&gt;


	&lt;p&gt;A couple years ago, I decided to get serious about reading the blogosphere, and I accumulated a long list of interesting feeds. This quickly became untenable, however; opening your feed reader to find 10,000 new posts is downright depressing, and leads to a quick exit. And with plenty of email every day, it was all too easy never to even get to the feed reader, especially knowing that once I went there, the flood would be overwhelming.&lt;/p&gt;


	&lt;p&gt;I started having the feeds from a few key sources emailed to me instead, and I found that this prodded me to actually read those. This approach worked for a while, until I found that I was missing too much stuff from feeds that weren’t being emailed to me, and that the emails were becoming tiresome. Among other issues, a feed reader is a much better interface to a list of posts than is an email message with a string of posts in it.&lt;/p&gt;


	&lt;p&gt;In the past few weeks, I’ve switched my approach again. I created a category in my feed reader called “Top”, and moved into that category the two-dozen or so feeds I care the most about. I stopped all feeds being emailed to me, so now I’m drawn to the feed reader each morning, as the feeds I’ve become accustomed to reading aren’t in my mail any more. And I create a sort of “feed amnesty,” setting all messages in all feeds to “read,” so I could track just the new stuff from now on.&lt;/p&gt;


	&lt;p&gt;So far, this is working really well. I at least skim all of my top feeds almost every day, and I find I can keep up with them pretty easily. And if I find myself with a little more time for news reading, I’ll dive into one of the other feed categories, with feeds that didn’t make the “top” cut. Feeds like engadget, which is interesting but not critical for me and has dozens of new posts in a typical day, I have given up on reading.&lt;/p&gt;


	&lt;p&gt;For me, a big part of this is accepting that there’s just no way I’m going to keep up with as much stuff as I’d like. What has helped me a lot is to make the decision up front—here’s what I’m going to keep up with, and here’s what I’ll keep in my feed reader but not expect to read regularly.&lt;/p&gt;


	&lt;p&gt;I also find it helpful to be ruthless about what subjects I’m going to track, and which I’m not. My top interests vary with time, but whatever they are at the moment, I try to just ignore most everything else. It’s narrowing, in a way, but for me it’s been the only way to keep up with those things that seem most important.&lt;/p&gt;


	&lt;p&gt;As for watching the Twitter stream—I have to admit I’m mostly not doing it. That’s another blog post, but for me, most of the time, getting short, frequent updates from lots of people just feels like too much information.&lt;/p&gt;


	&lt;p&gt;How do you deal with the information firehose?&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=FnpkAJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=FnpkAJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=OKTJUj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=OKTJUj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=TY5usj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=TY5usj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=XqfmQj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=XqfmQj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/327466882" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/7/5/coping-with-the-information-flood</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2008-07-02:10528</id>
    <published>2008-07-02T03:10:00Z</published>
    <updated>2008-07-02T03:09:49Z</updated>
    <category term="kitten" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/324546086/our-newest-family-member" rel="alternate" type="text/html" />
    <title>Our Newest Family Member</title>
<content type="html">
            &lt;p&gt;Meet Sapphire, our new kitten. Is there anything better than a kitten?&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.mslater.com/assets/2008/7/1/IMG_7905.jpg' alt='' /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.mslater.com/assets/2008/7/1/IMG_8047.jpg' alt='' /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.mslater.com/assets/2008/7/1/IMG_7913.jpg' alt='' /&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=ATmrEJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=ATmrEJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=ERGXcj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=ERGXcj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=VISCkj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=VISCkj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=AKAfIj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=AKAfIj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/324546086" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/7/2/our-newest-family-member</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2008-07-01:10527</id>
    <published>2008-07-01T05:33:00Z</published>
    <updated>2008-07-01T05:40:52Z</updated>
    <category term="iphone" />
    <category term="lg voyager" />
    <category term="mobile web" />
    <category term="verizon" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/323799806/iphone-will-cost-verizon-my-business" rel="alternate" type="text/html" />
    <title>iPhone Will Cost Verizon My Business</title>
<content type="html">
            &lt;p&gt;I’ve been with Verizon for a long time, since it was called something else I don’t remember any more (GTE?). In the early days, they were the only company with even half-decent service out in the country where I live. We now have four phones on a family plan.&lt;/p&gt;


	&lt;p&gt;When the iPhone came out last year, I was intrigued, but not enough to change mobile carriers. I got an iPod Touch instead, and the LG Voyager phone from Verizon.&lt;/p&gt;


	&lt;p&gt;Although the iPod Touch and the LG Voyager share many capabilities, the contrast between the two devices is striking. Six months use of the two of them has left me eager to abandon the Voyager.&lt;/p&gt;


	&lt;p&gt;Sadly, the Voyager is riddled with bad design decisions. Just a few of them:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;The Voyager opens up to reveal a real Qwerty keyboard, which might be nice if I sent many mobile messages. The email client is so poor, however, that I don’t do much messaging on the phone.&lt;/li&gt;
		&lt;li&gt;The web browser is painful to use. It’s so inferior to the iPod Touch’s browser that it’s hard to put into words.&lt;/li&gt;
		&lt;li&gt;The only way to turn on the speakerphone is to open the phone to put it into “full keyboard” mode. This is often clumsy.&lt;/li&gt;
		&lt;li&gt;Furthermore, the full keyboard is poorly thought out for use as part of a phone. You have to use shift to get to &lt;code&gt;#&lt;/code&gt; or &lt;code&gt;*&lt;/code&gt;!&lt;/li&gt;
		&lt;li&gt;The web browser is clunky, and the small internal screen is further crippled for web browsing by having the top and bottom lines of the display permanently devoted to status functions.&lt;/li&gt;
		&lt;li&gt;The touch screen scrolling is awkward and hard to use.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The iPod Touch, while it obviously is not a phone, is vastly superior to the Voyager as a web browser and email device, and, for that matter, as a calendar, contact list, calculator, and note pad. The emergence of third-party iPhone apps will dramatically widen the iPhone’s lead; the Voyager is a proprietary platform with weak software support. (It’s a great bonus that the iPhone eliminates the need for an iPod as a separate device, but this isn’t the driving attraction for me.)&lt;/p&gt;


	&lt;p&gt;So when the new iPhone comes out next week, Verizon will lose me as a customer. (Just me personally, alas, as it will take some time before my family switches.) It’s an expensive and painful decision for me. But the iPhone is just so superior to anything that Verizon has to offer that I can’t take it any more.&lt;/p&gt;


	&lt;p&gt;It’s the first time in nearly 20 years of owning cell phones of all stripes that the availability of a device has overwhelmed the ease of sticking with my provider.&lt;/p&gt;


	&lt;p&gt;It took a decade longer than we all hoped back in the 90’s, but the mobile web is finally coming into its own. With some of the power in the mobile world shifting to Apple and perhaps to Google, I hope we’ll see a gradual end to the omnipotence of the mobile carriers, which have, in many ways, been a force against innovation. They just can’t seem to get out of their own way when it comes to making phones a platform.&lt;/p&gt;


	&lt;p&gt;It’s time for big changes in the mobile industry.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=ilaYIJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=ilaYIJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=LSMxPj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=LSMxPj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=j6t18j"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=j6t18j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=4DCEBj"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=4DCEBj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/323799806" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/7/1/iphone-will-cost-verizon-my-business</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2008-05-29:10508</id>
    <published>2008-05-29T18:39:00Z</published>
    <updated>2008-05-29T18:45:29Z</updated>
    <category term="Building a Business" />
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/300729411/a-business-update" rel="alternate" type="text/html" />
    <title>A Business Update</title>
<content type="html">
            &lt;p&gt;It’s been a while since I’ve posted to this blog, so I thought it was time for an update.&lt;/p&gt;


	&lt;p&gt;Anyone who has been involved in a startup knows how all-consuming that can be. We also have a blog over at &lt;a href='http://blog.buildingwebapps.com'&gt;BuildingWebApps.com&lt;/a&gt;, and I’ve been writing a bit both for that blog and for the core of the site. But most of what has been consuming my time is crafting a business around the technology we’ve been developing.&lt;/p&gt;


	&lt;p&gt;Christopher Haupt and I founded Collective Knowledge Works, Inc. last fall, and our first venture was to launch &lt;a href='http://www.buildingwebapps.com'&gt;BuildingWebApps&lt;/a&gt;, a resource site for Ruby on Rails developers. We also started the &lt;a href='http://www.buildingwebapps.com/learning_rails'&gt;Learning Rails free online course&lt;/a&gt;, which began with podcasts and has evolved into a series of screencasts, in which we build a Rails application step by step. It’s been tremendously popular, with several thousand people following the course. It’s a lot of fun teaching this way, and seeing how much value people get from it.&lt;/p&gt;


	&lt;p&gt;We considered building a business around serving the web application developer community, but we’ve decided to keep this as a side project, rather than the core of our business, because we want to build something that we believe we can scale into a more significant company.&lt;/p&gt;


	&lt;p&gt;In thinking about the application we built to create the BuildingWebApps site, we realized that it has a much broader potential use: building a resource site on any topic. We think of it as the next generation beyond blogs and content management systems. We’ll offer this as a hosted service, enabling anyone to build a site like BuildingWebApps, on any topic.&lt;/p&gt;


	&lt;p&gt;The next question was which customers to focus on. We found that, as a horizontal technology platform, it was hard to explain to people, and hard to come up with a focused marketing strategy. Some customer groups we looked at include:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Infopreneurs: people building web-based information businesses&lt;/li&gt;
		&lt;li&gt;Passionates: individuals or organizations who are passionate about a topic and want a platform for communicating their knowledge and engaging the community&lt;/li&gt;
		&lt;li&gt;Businesses: businesses for which educating their customers and prospects is important&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;After lots of analysis, we’ve decided to focus our initial product on the last of these categories: in particular, on small businesses. There’s a lot of customer pain here that we can address, and a lot of value that we can provide. Most small business sites are awful, if the business has a site at all. The model of going to a local web developer and building a site from scratch is expensive and painful, and almost always results in a largely static site with no community features.&lt;/p&gt;


	&lt;p&gt;We’re going to provide a platform to make it easy for small businesses to create powerful sites that engage their customer community and become valued information resources that attract new customers. There’s lots of pieces of this that go beyond what we’ve done at BuildingWebApps, and which we’re not quite ready to talk about.&lt;/p&gt;


	&lt;p&gt;We may also have versions of the platform for the other two customer categories, and they may be the source of significant long-term growth, but they won’t be our initial focus.&lt;/p&gt;


	&lt;p&gt;We’ve raised a little more angel financing to take this to the next level, and we’ll be launching the product in the fall. There’s a teaser at the embryonic &lt;a href='http://www.collectiveknowledge.com'&gt;Collective Knowledge Works site&lt;/a&gt;. If you’d like to be notified when we have the private beta ready, please enter your email address there.&lt;/p&gt;


	&lt;p&gt;It’s been a fascinating process getting to this point. It’s been a year and a half since I left Adobe and gave myself the flexibility to pursue various interests and see what bubbles up. A lot of threads have come together now, and I’m really excited about where we’re heading.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=rrASRH"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=rrASRH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=c7ajYh"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=c7ajYh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=JzJrrh"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=JzJrrh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=VZT5oh"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=VZT5oh" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/300729411" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/5/29/a-business-update</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mslater</name>
    </author>
    <id>tag:www.mslater.com,2008-03-04:10447</id>
    <published>2008-03-04T23:08:00Z</published>
    <updated>2008-03-04T23:11:23Z</updated>
    <link href="http://feeds.feedburner.com/~r/mslater/~3/245782069/going-to-south-by-southwest" rel="alternate" type="text/html" />
    <title>Going to South by Southwest?</title>
<content type="html">
            &lt;p&gt;I’ll be at &lt;span class='caps'&gt;SXSW&lt;/span&gt; from Friday afternoon through Tuesday, and would love to get together with any of my readers who are going to be there. Give me a call at 888.670.6793 ext 2, which will forward to my cell phone, or send me an email through the &lt;a href='http://www.buildingwebapps.com/contact'&gt;BuildingWebApps contact form&lt;/a&gt;. I’m not much of a Twitterer, but I’ll try to post occasional updates about where I’ll be during the conference, so you can also follow me on Twitter as mzslater.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=FJaGzI"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=FJaGzI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=ym40pi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=ym40pi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=1pvTZi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=1pvTZi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=0NfM0i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=0NfM0i" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/245782069" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/3/4/going-to-south-by-southwest</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mslater</name>
    </author>
    <id>tag:www.mslater.com,2008-02-13:10437</id>
    <published>2008-02-13T01:27:00Z</published>
    <updated>2008-02-13T01:32:25Z</updated>
    <category term="Ruby on Rails" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/234081495/last-chance-for-february-rails-seminar" rel="alternate" type="text/html" />
    <title>Last Chance for February Rails Seminar</title>
<content type="html">
            &lt;p&gt;The &lt;a href='http://www.buildingwebapps.com/seminar'&gt;RailsQuickStart seminar&lt;/a&gt; that my colleague Christopher Haupt and I will be presenting in San Francisco next week is filling up fast, so if you’ve been thinking of attending, now is the time to &lt;a href='http://www.buildingwebapps.com/seminar'&gt;sign up&lt;/a&gt;. The seminar is February 20 and 21 at Fort Mason in San Francisco.&lt;/p&gt;


	&lt;p&gt;We have a packed two days planned, divided into lecture sections in which we’ll explain how Rails works, live coding sections in which we’ll build a complete application step-by-step, and lab sections in which attendees will extend the sample application. Everyone will also get a one-month hosting account, courtesy of Joyent, and before they leave the seminar their app will deployed. We’re including customized Capistrano scripts and and a subversion setup.&lt;/p&gt;


	&lt;p&gt;If you’ve been wanting to learn Ruby on Rails, or if you’ve been playing with it but have struggled to climb the learning curve, this is your chance to move into high gear.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=788M6I"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=788M6I" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=2ISr7i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=2ISr7i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=kxNAii"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=kxNAii" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=aIbn5i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=aIbn5i" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/234081495" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/2/13/last-chance-for-february-rails-seminar</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mslater</name>
    </author>
    <id>tag:www.mslater.com,2008-01-08:10396</id>
    <published>2008-01-08T01:54:00Z</published>
    <updated>2008-01-08T02:00:43Z</updated>
    <category term="Building a Business" />
    <category term="Ruby on Rails" />
    <category term="Web Development" />
    <category term="buildingwebapps.com" />
    <category term="collective knowledge" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/212921662/ruby-on-rails-resource-site-launched" rel="alternate" type="text/html" />
    <title>Ruby on Rails Resource Site Launched</title>
<content type="html">
            &lt;p&gt;After several months of development, we have finally taken the wraps off the &lt;a href='http://www.buildingwebapps.com?tid=msblog'&gt;BuildingWebApps&lt;/a&gt; site!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Note: I won’t be publishing any more Ruby on Rails or web development articles on this blog.&lt;/strong&gt; This will be more of a personal blog, with everything related to web technology going on the new site. To continue receiving the Rails articles that I and my colleagues will be writing (and we have plans for lots more articles than I’ve been able to publish here), please &lt;a href='http://www.buildingwebapps.com/redirect/articles_subscribe?tid=msblog'&gt;subscribe to the BuildingWebApps articles feed&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;You can also &lt;a href='http://www.buildingwebapps.com/redirect/blog_subscribe'&gt;subscribe to the BuildingWebApps blog&lt;/a&gt;, where I’ll be writing about the process of building the site and the business.&lt;/p&gt;


	&lt;h2&gt;State of the site&lt;/h2&gt;


	&lt;p&gt;BuildingWebApps.com is still very much a work in progress, but we’ve gone ahead and opened it up so we can get feedback. Please take a look and let me know what you think.&lt;/p&gt;


	&lt;p&gt;We worked with Josh Woodlander and Ethan Allen at &lt;a href='http://www.raspberrymedia.com'&gt;Raspberry Media&lt;/a&gt; on the visual and interaction design, and I think they did a fantastic job. It was a joy to work with people who have such a strong sense of graphic design and who think deeply about the challenges of effectively presenting lots of information. And Ethan is a wizard at making all the browsers behave reasonably. (Any oddities you see are probably the result of my modifications.) If you’re looking for a team to take on a significant web design project, I highly recommend them.&lt;/p&gt;


	&lt;p&gt;My goal is to build this site into a valuable resource for the Ruby on Rails community, and for people who want to learn Ruby on Rails. Over time, we’ll increase our coverage of other web-related technology as well.&lt;/p&gt;


	&lt;p&gt;The site includes both original articles and an annotated, organized set of links to hundreds of other resources around the web. We’re in the early phases of building up the content, so I realize that it will seem a little thin in places (and if you’ve read the Rails-related articles on this blog, some of it will seem very familiar). But there’s lots of great stuff to come.&lt;/p&gt;


	&lt;p&gt;I’m really interested in feedback on the usability of the site. You can also submit suggestions on the site to help us build up the content.&lt;/p&gt;


	&lt;h2&gt;How is this a business?&lt;/h2&gt;


	&lt;p&gt;In case you’re curious about the business model: we plan to make all the core content free indefinitely. At some point, we’ll add some premium content that will require membership or a one-time payment. We’ll probably have advertising. And we’re offering seminars.&lt;/p&gt;


	&lt;p&gt;Longer term, we believe that the application we’re building to power this site will be applicable to many other knowledge domains and communities. Blogs and wikis are all the rage, but they both have huge limitations that we believe our platform will overcome.&lt;/p&gt;


	&lt;h2&gt;Don’t forget to change channels&lt;/h2&gt;


	&lt;p&gt;Once again, please note that I won’t be publishing any more Ruby on Rails or web development articles on this blog. I will continue this blog to write about a variety of topics beyond web development, so please keep your subscription here if you’re interested in my random thoughts. But if you subscribed to this blog primarily for web development information, it’s time to move on:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;To continue receiving the web development articles that I and my colleagues will be writing, &lt;a href='http://www.buildingwebapps.com/redirect/articles_subscribe?tid=msblog'&gt;subscribe to the BuildingWebApps articles feed&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;To read about the evolving business of which BuildingWebApps is a part, &lt;a href='http://www.buildingwebapps.com/redirect/blog_subscribe'&gt;subscribe to the BuildingWebApps blog&lt;/a&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Thanks!&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=Xv5GPI"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=Xv5GPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=Lf3l1i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=Lf3l1i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=jjZ9mi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=jjZ9mi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=Sdxydi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=Sdxydi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/212921662" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2008/1/8/ruby-on-rails-resource-site-launched</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mslater</name>
    </author>
    <id>tag:www.mslater.com,2007-12-13:10390</id>
    <published>2007-12-13T04:39:00Z</published>
    <updated>2007-12-13T04:41:30Z</updated>
    <category term="Book Reviews" />
    <category term="Ruby on Rails" />
    <category term="the rails way" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/199557358/the-rails-way-the-second-must-have-rails-book" rel="alternate" type="text/html" />
    <title>The Rails Way: The second must-have Rails book</title>
<content type="html">
            &lt;p&gt;A little more than a year ago, there really was only one Rails book: &lt;a href='http://www.amazon.com/exec/obidos/ASIN/0977616630/mslater-20'&gt;Agile Web Development with Rails&lt;/a&gt;, by Dave Thomas, David Heinemeier Hansson, and friends. Since then, about a dozen Rails books have come out. None of them, however, has replaced this seminal book as the best general resource for Rails developers.&lt;/p&gt;


	&lt;p&gt;This is not to say that there have not been some excellent books. Some do a better job at providing a gentle entry for beginners, others focus on specific areas, and many provide &lt;a href='http://www.mslater.com/2007/8/20/excellent-new-rails-book'&gt;interesting example applications&lt;/a&gt;. But they are mostly tutorials, rather than references.&lt;/p&gt;


&lt;p&gt;
    &lt;div&gt;

        &lt;a href='http://www.amazon.com/exec/obidos/ASIN/0321445619/mslater-20'&gt;&lt;img src='http://ecx.images-amazon.com/images/I/21DXA0v5k0L.jpg' /&gt;&lt;/a&gt;

    &lt;br /&gt;
        &lt;a href='http://www.amazon.com/exec/obidos/ASIN/0321445619/mslater-20'&gt;The Rails Way (Addison-Wesley Professional Ruby Series)&lt;/a&gt;
    &lt;/div&gt;
&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://www.amazon.com/exec/obidos/ASIN/0321445619/mslater-20'&gt;The Rails Way&lt;/a&gt; changes this. It is a better Rails reference than the Agile book, both because it provides more depth and because it is current with Rails 2.0. For the first time, there is a second book that is indispensable for any serious Rails developer.&lt;/p&gt;


	&lt;p&gt;The Rails Way is not a good book for someone new to Rails; there is no introductory overview, no Ruby tutorial, and no sample application. But as a reference, it is unmatched. It is very readable, despite being a reference work, because author Obie Fernandez has insights to share in almost every section. In skimming through the book, I found details in almost every section that I never quite understood before, which the books explains with sparkling clarity.&lt;/p&gt;


	&lt;p&gt;Even though it is intended primarily as a reference, The Rails Way is an outstanding tutorial for anyone who understands the basics of Rails and wants to dig deeper (and has a few days to spend reading). In this regard, it is true to its namesake book, Hal Fulton’s &lt;a href='http://www.amazon.com/exec/obidos/ASIN/0672328844/mslater-20'&gt;The Ruby Way&lt;/a&gt;, which holds a similar place in the Ruby world.&lt;/p&gt;


	&lt;p&gt;The Rails Way’s coverage is both deeper and broader than any other Rails book, in covering the Rails framework and associated plugins, tools, and attitudes. It weighs in at 850 pages, about 10% longer than the Agile book—and a third of the Agile book is the tutorial introduction and sample application.&lt;/p&gt;


	&lt;p&gt;If you’re working with Rails on anything but the most casual basis, you shouldn’t work without this book nearby.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=30OhqI"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=30OhqI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=093d4i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=093d4i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=CSPxhi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=CSPxhi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=MnCBri"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=MnCBri" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/199557358" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2007/12/13/the-rails-way-the-second-must-have-rails-book</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2007-12-02:10383</id>
    <published>2007-12-02T07:22:00Z</published>
    <updated>2007-12-02T07:44:12Z</updated>
    <category term="About Me" />
    <category term="Building a Business" />
    <category term="adobe" />
    <category term="innovation" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/193782196/celebrating-a-year-of-freedom" rel="alternate" type="text/html" />
    <title>Celebrating a Year of Freedom</title>
<content type="html">
            &lt;p&gt;One year ago today I embarked on my current adventure, leaving Adobe after five years there and two years creating the startup they acquired, Fotiva. At the time I left Adobe, I had only the fuzziest idea of what I was going to do, but I knew it would be related to the web, and I was pretty sure it would be connected to Ruby on Rails. And that it has turned out to be.&lt;/p&gt;


	&lt;p&gt;I’m as busy as I’ve ever been, and my income in the past year is the lowest it has been in more than 25 years. But I’m having a great time, and I have a good feeling about where things are headed.  I thought I’d take the excuse of this one-year anniversary to look back on my decision to leave Adobe, and catch my readers up on my business thinking.&lt;/p&gt;


	&lt;h2&gt;Looking back on Adobe&lt;/h2&gt;


	&lt;p&gt;I’ve not written much about my experiences at Adobe, in part because I want to avoid any possible appearance of breaking confidentiality agreements, and also because I wanted to gain some perspective first.&lt;/p&gt;


	&lt;p&gt;Looking back on my five years at Adobe, there’s a lot that I’m grateful for. I learned a tremendous amount about digital imaging and the PC software business, and about life inside a big company. I met a lot of great people, was able to immerse myself in digital photography, and had the opportunity to lead a research team and do technology licensing with the power of a big player behind me. The team I helped build for Fotiva continues on, in large part, as Adobe’s Santa Rosa office, and I’m pleased to have had some small role in growing the software business in the North Bay. And the product that started life at Fotiva has an enduring role as the organizer in Photoshop Elements.&lt;/p&gt;


	&lt;p&gt;In a strange way, though, I’m most grateful to Adobe for being so thoroughly dysfunctional when it comes to enabling innovation that it drove me out. As someone with a entrepreneurial heart, I found Adobe stifling. If I had been able to accomplish a bit more at Adobe, I might still be there, and then I would have missed out on so much.&lt;/p&gt;


	&lt;p&gt;To a large degree, the challenges I faced finding happiness at Adobe would be there in any businesses at that scale. But not entirely. Many of the other entrepreneurial folks I met at Adobe, who tried valiantly to build new products and services, have also left. They’re at an assortment of small companies, but also at Google, and Yahoo, and Apple.&lt;/p&gt;


	&lt;p&gt;One of Adobe’s biggest weaknesses, in my view, is the distance between top management and the people who have passion for innovative new product ideas. It is exhausting, and usually dispiriting in the end, pushing ideas up through a chain that, at it’s pinnacle, doesn’t seem very interested.&lt;/p&gt;


	&lt;p&gt;The difficulties I had getting new concepts to market at Adobe, especially when they were web-related, are symptomatic of top management’s resistance to exploring new concepts in the marketplace. Adobe doesn’t like to accept the risk of new markets in return for a role (and learning opportunity) as an early player. Perhaps at Adobe’s scale their approach of waiting until market opportunities are clear, and then buying their way in as needed, makes sense. But it did not make for a satisfying place for me to work.&lt;/p&gt;


	&lt;h2&gt;My evolving Ruby on Rails business plan&lt;/h2&gt;


	&lt;p&gt;When I left Adobe, I had done a little Rails development, and read a lot about it, and I felt strongly that it was going to be a big deal. I spent the majority of this year building custom Rails sites for small businesses, and set up &lt;a href='http://www.topazws.com'&gt;Topaz Web Solutions &lt;span class='caps'&gt;LLC&lt;/span&gt;&lt;/a&gt; as the home for that work. I enjoyed it, and some of it is ongoing, but my focus has now shifted to Collective Knowledge Works, Inc., the company I cofounded this fall with my partner Christopher Haupt.&lt;/p&gt;


	&lt;p&gt;I spent quite a while looking for ways to build a business around delivering Rails-based solutions to other small businesses. I continue to believe there is a great opportunity in this domain, but the sales and support challenges are significant.&lt;/p&gt;


	&lt;p&gt;Collective Knowledge Works grew out of an idea I had to create a portal for Ruby on Rails developers. We’re now deep into doing just that: you can sign up for the beta list at &lt;a href='http://www.buildingwebapps.com'&gt;BuildingWebApps.com&lt;/a&gt;. Within a couple weeks, we’ll be letting in beta testers, and early next year it will be public. I can’t wait to show it off, and I think it’s going to be a great resource for the Rails community. After eight years away from the editorial, publishing, and training business, I’m glad to be back in it.&lt;/p&gt;


	&lt;p&gt;Initially, we don’t expect BuildingWebApps.com to generate much revenue directly. Our first revenue stream will be from the &lt;a href='http://www.buildingwebapps.com/seminar'&gt;Ruby on Rails QuickStart Seminar&lt;/a&gt; that we’ll be presenting in February in San Francisco. Later, we believe we can create revenue from the site itself in various ways.&lt;/p&gt;


	&lt;p&gt;Christopher and I have just launched the &lt;a href='http://www.learningrails.com'&gt;Learning Rails&lt;/a&gt; podcast, which has been an adventure of its own.&lt;/p&gt;


	&lt;p&gt;There’s a bigger plan in the background, too. All the technology we’re building for BuildingWebApps.com can be used for any knowledge domain. After we’ve had time to build out this first site, we’re going to develop additional knowledge domains, and enable others to host their own knowledge domains. That’s why we named the company Collective Knowledge Works.&lt;/p&gt;


	&lt;p&gt;It’s great to be back in this early business-building phase. And it’s wonderful not to have to try to sell new ideas up through multiple layers of management, but simply to decide what to do, and then do it.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=rwrV1I"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=rwrV1I" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=VgfXri"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=VgfXri" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=Fa6lyi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=Fa6lyi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=PQa7hi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=PQa7hi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/193782196" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2007/12/2/celebrating-a-year-of-freedom</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2007-11-30:10382</id>
    <published>2007-11-30T23:47:00Z</published>
    <updated>2007-11-30T23:48:25Z</updated>
    <category term="Ruby on Rails" />
    <category term="rails" />
    <category term="ruby on rails" />
    <category term="seminar" />
    <category term="training" />
    <category term="web development" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/193224365/ruby-on-rails-quickstart-seminar-launched" rel="alternate" type="text/html" />
    <title>Ruby on Rails QuickStart Seminar Launched</title>
<content type="html">
            &lt;p&gt;During the dozen or so years I ran the Microprocessor Forum conference, I presented hundreds of seminars on microprocessors and PC technology. I enjoy teaching, and I’ve missed this aspect of that business.&lt;/p&gt;


	&lt;p&gt;Since I’ve been working with Ruby on Rails, I’ve been thinking about how it could be made easier for people to learn. I believe there are vast numbers of web designers and developers who would find Rails a very useful tool, and who could improve their productivity—and their satisfaction with what they’re producing and the process of producing it.&lt;/p&gt;


	&lt;p&gt;One thing led to another, and on February 20 and 21, my colleague Christopher Haupt and I will be presenting our first Ruby on Rails QuickStart seminar in San Francisco.&lt;/p&gt;


	&lt;p&gt;We’ve designed the seminar for web designers and developers with only minimal programming experience. We’re providing a pre-built site, which we’ll walk through during the seminar, that attendees can use as the basis of their own sites. We’re also very close to a deal with a hosting provider to offer free hosting for a month, so we can help attendees get their sites deployed before the seminar is over. We’ll provide each attendee with the NetBeans &lt;span class='caps'&gt;IDE&lt;/span&gt;, deployment scripts, and everything else they need to immediately build and deploy Ruby on Rails web sites.&lt;/p&gt;


	&lt;p&gt;I’m really looking forward to the seminar and hope some of my readers can join me there.&lt;/p&gt;


	&lt;p&gt;The early registration price of $695 is good until December 20. There’s details at the &lt;a href='http://www.buildingwebapps.com/seminar'&gt;BuildingWebApps.com&lt;/a&gt; site.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=KkdZDI"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=KkdZDI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=B2CN2i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=B2CN2i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=R1jzGi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=R1jzGi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=S9gROi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=S9gROi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/193224365" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2007/11/30/ruby-on-rails-quickstart-seminar-launched</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2007-11-28:10381</id>
    <published>2007-11-28T06:13:00Z</published>
    <updated>2007-11-28T06:14:14Z</updated>
    <category term="Ruby on Rails" />
    <category term="podcast" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/191675644/learning-rails-podcast-launched" rel="alternate" type="text/html" />
    <title>Learning Rails Podcast Launched</title>
<content type="html">
            &lt;p&gt;Today I began my podcasting career with the publication of the first episode of &lt;a href='http://www.buildingwebapps.com/podcasts'&gt;Learning Rails&lt;/a&gt;. It’s been a lot of fun pulling this together—and a lot more work than I anticipated. I’m looking forward to recording future episodes when I’m not learning the audio software and assembling the web pages and the &lt;span class='caps'&gt;RSS&lt;/span&gt; feed infrastructure at the same time.&lt;/p&gt;


	&lt;p&gt;If you have any interest in learning more about Ruby on Rails, check out the first episode: &lt;a href='http://www.buildingwebapps.com/podcasts/1/show_notes'&gt;Why You Should Learn Ruby on Rails&lt;/a&gt;. I’d really appreciate any feedback, which you can leave as a comment on this post. And if you like the podcast, please give it a Digg, post a link on your favorite social bookmarking site, or mention it in your blog.&lt;/p&gt;


	&lt;p&gt;I wrote a post about my goals for the podcast and some of the tools I used over on the &lt;a href='http://blog.buildingwebapps.com/2007/11/28/first-podcast-released-learning-rails'&gt;BuildingWebApps blog&lt;/a&gt;.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=gkEZHI"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=gkEZHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=a0GFQi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=a0GFQi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=p9GkPi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=p9GkPi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=qkNpri"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=qkNpri" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/191675644" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2007/11/28/learning-rails-podcast-launched</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2007-11-28:10380</id>
    <published>2007-11-28T05:57:00Z</published>
    <updated>2007-11-28T06:02:45Z</updated>
    <category term="Web Development" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/191675645/boatingsf-s-15-minutes-of-fame" rel="alternate" type="text/html" />
    <title>BoatingSF's 15 minutes of fame</title>
<content type="html">
            &lt;p&gt;I wrote my previous post, &lt;a href='http://www.mslater.com/2007/11/11/tracking-the-cosco-busan'&gt;Tracking the Cosco Busan&lt;/a&gt;, just after I published the animation of the ship’s track as it hit the Bay Bridge. At that point, the site was already doing more than twice its usual volume just with the increased general interest in the Bay, and in current ship positions.&lt;/p&gt;


	&lt;p&gt;Over the next few days, as half a dozen major news articles mentioned my &lt;a href='http://www.boatingsf.com/busan.php'&gt;Track of the Cosco Busan&lt;/a&gt; animation, the site’s traffic spiked to an all-time high.&lt;/p&gt;


	&lt;p&gt;&lt;img src='http://www.mslater.com/assets/2007/11/28/busan_traffic_1.gif' alt='' /&gt;&lt;/p&gt;


	&lt;p&gt;The peak day was more than 120,000 page views, which is about what the site does in a typical month.&lt;/p&gt;


	&lt;p&gt;I was pleased to find that the &lt;span class='caps'&gt;VPS&lt;/span&gt; this site runs on seemed to have enough headroom to handle the load reasonably well. I stored an alternate version of the flash movie and its data files on S3, which provided an alternative for visitors who experienced load problems.&lt;/p&gt;


	&lt;p&gt;It was also nice to see my AdSense earnings skyrocket, however briefly. Click-through rates fell to about 50% of normal, but since traffic was 30 times normal, the short-term increase was sizable. If there was this kind of interest in ship tracks ever day my boating site could be a full-time job…&lt;/p&gt;


	&lt;p&gt;Here’s some links to news articles that reference my animation of the accident:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href='http://www.marinij.com/marin/ci_7448428'&gt;Marin IJ&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href='http://www.mercurynews.com/ci_7448761'&gt;San Jose Mercury News&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href='http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2007/11/13/MN1QTB4I2.DTL&amp;hw=boatingsf&amp;sn=001&amp;sc=1000'&gt;San Francisco Chronicle&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href='http://www.insidebayarea.com/oaklandtribune/ci_7447012'&gt;Oakland Tribune&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=agIDPI"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=agIDPI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=MJ3Ddi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=MJ3Ddi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=qESg8i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=qESg8i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=5sjKni"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=5sjKni" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/191675645" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2007/11/28/boatingsf-s-15-minutes-of-fame</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2007-11-11:10371</id>
    <published>2007-11-11T02:48:00Z</published>
    <updated>2007-11-11T02:51:13Z</updated>
    <category term="Riffs and Rants" />
    <category term="Web Development" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/182924409/tracking-the-cosco-busan" rel="alternate" type="text/html" />
    <title>Tracking the Cosco Busan</title>
<content type="html">
            &lt;p&gt;As you probably know, on Wednesday morning a 908-foot cargo ship, the Cosco Busan, ran into one of the San Francisco Bay Bridge towers, creating the worst oil spill in more than a decade in San Francisco Bay.&lt;/p&gt;


	&lt;p&gt;There’s all sorts of questions being raised about the speed of response. In time, I suspect we’ll learn a lot. For now, speculation on just how quickly the response was mustered, whether it could have been done more quickly, and what caused any delays is just that—speculation.&lt;/p&gt;


	&lt;p&gt;Even more puzzling is how this could happen to begin with. There’s a huge opening between the bridge towers—this is not a tight fit, even for a huge cargo ship.&lt;/p&gt;


	&lt;p&gt;It just so happens that one of my sites, &lt;a href='http://www.boatingsf.com'&gt;BoatingSF.com&lt;/a&gt;, tracks ship movements on the bay. Anyone who looked at my &lt;a href='http://www.boatingsf.com/ais_map.php'&gt;real-time ship tracking page&lt;/a&gt; within an hour of the accident could have seen an instant replay of the ship’s track. And it &lt;em&gt;should&lt;/em&gt; have been reasonably simple for me to access the historical data.&lt;/p&gt;


	&lt;h2&gt;My perfect storm of server data ugliness&lt;/h2&gt;


	&lt;p&gt;This data comes from two &lt;span class='caps'&gt;AIS&lt;/span&gt; receivers I operate, which receive &lt;span class='caps'&gt;VHF&lt;/span&gt; signals that all commercial ships are required to send that encode their position, speed, destination, name, and dimensions. These reports, which arrive at the rate of a few per minute, are streamed up to my server, where I decode them with some custom &lt;span class='caps'&gt;PHP&lt;/span&gt; code (this predates my involvement with Ruby and Rails) and stuff them into a database. Every five minutes, a cron job extracts a summary from the database and generates an &lt;span class='caps'&gt;XML&lt;/span&gt; file. The web page has a Flash movie that reads this &lt;span class='caps'&gt;XML&lt;/span&gt; file to control the animation.&lt;/p&gt;


	&lt;p&gt;Unfortunately, for performance reasons, I don’t keep decoded position information that’s more than one hour old. I’m going to rearchitect the solution to make this possible, but when I designed this almost two years ago, it was all I could do to get it working, and other projects got in the way of further optimization.&lt;/p&gt;


	&lt;p&gt;I do archive the raw &lt;span class='caps'&gt;AIS&lt;/span&gt; data stream, so I can go back and process it later to get at historical data. Several private and government agencies have used this data for various kinds of analysis projects. Until recently, I stored this raw stream in the database.&lt;/p&gt;


	&lt;p&gt;A couple weeks ago, something went wrong, and my simplistic scheme began to torment me. My simple database configuration on an old &lt;span class='caps'&gt;VPS&lt;/span&gt; account didn’t deal well with tens of millions of records.&lt;/p&gt;


	&lt;p&gt;I had the system set up to send me an email when a database failure occurred—and I started getting 100,000 such emails a day!&lt;/p&gt;


	&lt;p&gt;There’s another article to be written here, but suffice it to say that you shouldn’t do this (and I don’t any more)—write the errors to a log file, use logrotate or somesuch to keep the files from getting too big, and then use something like logwatch to warn you when the logs have errors in them.&lt;/p&gt;


	&lt;h2&gt;The fix creates a new problem&lt;/h2&gt;


	&lt;p&gt;In my hurry to stop the mail deluge, I changed the code to put the raw &lt;span class='caps'&gt;AIS&lt;/span&gt; stream into a log file instead of into the database. And in the rush, I forgot that the raw &lt;span class='caps'&gt;AIS&lt;/span&gt; data lacks a built-in time stamp. So when I went to dig out the data that would show the Cosco Busan accident, I found that I had no timestamps for any of the position reports! This meant I couldn’t just look for 8:30 am Wednesday but had to analyze ship movements to find the accident.&lt;/p&gt;


	&lt;p&gt;I also had to write new code to pull the reports from the log file, decode them, and stuff them into the database for further analysis. And I wanted a different zoom region for the display, which took additional work.&lt;/p&gt;


	&lt;p&gt;About 12 hours later, I had an &lt;a href='http://www.boatingsf.com/busan.php'&gt;animation of the accident&lt;/a&gt; completed. It doesn’t show actual time, since I didn’t have any timestamps to work with, but it animates on the assumption that the pace of ship reports is roughly constant (which it should be).&lt;/p&gt;


	&lt;p&gt;I had expected that the ship would have been heading for the space between the towers, and veered a bit off course. The reality is that the ship was going nearly parallel to the bridge, until it turned sharply and headed straight for the center tower! And there was a tug following closely behind. Unless there was a catastrophic steering failure, which seems unlikely given that the ship continued on under apparently good control, there’s some people with a lot of explaining to do.&lt;/p&gt;


	&lt;h2&gt;Next up: a new architecture&lt;/h2&gt;


	&lt;p&gt;This debacle (my server’s, not the ship’s) has spurred me to begin thinking about a new architecture for the system. I want to be able to pull any past window of time, and zoom in on any region, without custom programming.&lt;/p&gt;


	&lt;p&gt;Perhaps I’ll move it over to Ruby while I’m at it. One of the reasons it too me so long to create the Cosco Busan animation is that it had been almost a year since I had touched the &lt;span class='caps'&gt;PHP&lt;/span&gt; code, and it is an ugly thing! It is hard to remember to put semicolons at the end of every line, and empty parentheses after function calls that take no arguments, and so forth, now that I’m accustomed to a language that doesn’t have such requirements.&lt;/p&gt;


	&lt;p&gt;Making it even more complex is the convoluted Flash code that creates the animation, which requires dealing in yet another language and the vagaries of the Flash timeline interface. I’m not sure I see a way out of having the Flash code, but at least I can get rid of the &lt;span class='caps'&gt;PHP&lt;/span&gt;.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=8ASwEI"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=8ASwEI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=gIYoBi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=gIYoBi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=0JmH5i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=0JmH5i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=1mlVqi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=1mlVqi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/182924409" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2007/11/11/tracking-the-cosco-busan</feedburner:origLink></entry>
  <entry xml:base="http://www.mslater.com/">
    <author>
      <name>mzslater</name>
    </author>
    <id>tag:www.mslater.com,2007-11-05:10369</id>
    <published>2007-11-05T20:36:00Z</published>
    <updated>2007-11-05T20:38:07Z</updated>
    <category term="Ruby on Rails" />
    <category term="rails studio" />
    <link href="http://feeds.feedburner.com/~r/mslater/~3/180209972/tips-from-the-advanced-rails-studio" rel="alternate" type="text/html" />
    <title>Tips from the Advanced Rails Studio</title>
<content type="html">
            &lt;p&gt;A few weeks ago I attended the &lt;a href='http://pragmaticstudio.com/railsadvanced/'&gt;Advanced Rails Studio&lt;/a&gt;, taught by Mike Clark and Chad Fowler. (Dave Thomas would normally be there as well, but he broke his arm and was unable to attend.) Mike and Chad are deeply knowledgeable and are natural teachers, making for an enjoyable and productive three days. I highly recommend this course to anyone who has been building Rails sites for a little while and wants to take their skills to the next level. It will be offered again in spring 2008; you can sign up on their site to be notified.&lt;/p&gt;


	&lt;p&gt;Inevitably, some of the material was review of things I already knew, but there were still plenty of things I didn’t know, or didn’t understand well, before the seminar. Perhaps the most valuable part was getting opinions and perspective from experienced Rails developers—not just the instructors, but other attendees as well.&lt;/p&gt;


	&lt;p&gt;Here’s a random selection of tips I wrote in my notes. These are probably not all intelligible from these brief descriptions, but they provide a flavor of the kinds of information I gleaned.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Use a “test rig” file to generate standard &lt;span class='caps'&gt;CRUD&lt;/span&gt; tests.&lt;/li&gt;
		&lt;li&gt;Use helper methods in tests and in views to keep your code at a consistent level of abstraction.&lt;/li&gt;
		&lt;li&gt;Consider &lt;a href='http://chneukirchen.org/blog/archive/2007/01/announcing-test-spec-0-3-a-bdd-interface-for-test-unit.html'&gt;test/spec&lt;/a&gt;, which provides a &lt;span class='caps'&gt;BDD&lt;/span&gt; (behavior-driven development) layer on top of test/unit. Mike and Chad prefer this to &lt;a href='http://rspec.rubyforge.org/'&gt;rspec&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;Consider using simple Ruby hashes instead of fixtures. Mike has abandoned fixtures almost entirely.&lt;/li&gt;
		&lt;li&gt;If you’re using the default resource scaffold, which allows xml access to models, override to_xml in the model so you can use the :except option to keep sensitive fields from getting included.&lt;/li&gt;
		&lt;li&gt;Don’t bother with small &lt;span class='caps'&gt;RJS&lt;/span&gt; files; just put the &lt;span class='caps'&gt;RJS&lt;/span&gt; code in the controller.&lt;/li&gt;
		&lt;li&gt;All the respond_to code and &lt;span class='caps'&gt;XML&lt;/span&gt; handling in the scaffold resource controller is not necessarily a good thing. Mike doesn’t use respond_to unless he knows he’ll be providing &lt;span class='caps'&gt;API&lt;/span&gt; access. It adds noise to your code, can be a security hole, and just isn’t needed if you aren’t supporting an &lt;span class='caps'&gt;API&lt;/span&gt;.&lt;/li&gt;
		&lt;li&gt;If you accept credit cards, be sure not to store them in your database. &lt;span class='caps'&gt;VISA&lt;/span&gt;’s rules are hard to comply with, and penalties for non-conformance are high. Use a solution that allows you to immediately pass the credit card to the gateway, or even better, post the form with the credit card info directly to the gateway. &lt;a href='http://www.braintreepaymentsolutions.com/'&gt;Braintree Payment Solutions&lt;/a&gt; allows you to do recurring payments without storing credit cards by returning a token that you can use for future charges.&lt;/li&gt;
		&lt;li&gt;&lt;a href='http://hamptoncatlin.com/2007/make_resourceful-0-1-0-release'&gt;make_resourceful&lt;/a&gt; plugin automates creation of &lt;span class='caps'&gt;CRUD&lt;/span&gt; actions for a resource.&lt;/li&gt;
		&lt;li&gt;In most cases, has_many :through is a better solution than has_and_belongs_to_many. One time the habtm approach makes sense is for tagging.&lt;/li&gt;
		&lt;li&gt;You can define methods on an association proxy. In the model, e.g., has_many :visits do &lt;code&gt;&amp;lt;define custom find here&amp;gt;&lt;/code&gt; end.&lt;/li&gt;
		&lt;li&gt;&lt;a href='http://projects.jkraemer.net/acts_as_ferret/wiki'&gt;ferret&lt;/a&gt; is a port of the &lt;a href='http://lucene.apache.org/java/docs/'&gt;lucene&lt;/a&gt; search engine, whereas &lt;a href='http://acts_as_solr.railsfreaks.com/'&gt;solr&lt;/a&gt; uses the original Java source, so it is more current—but it does require that you run a Java app server for the engine.&lt;/li&gt;
		&lt;li&gt;If almost all of a page can be cached, but a little part like the login name cannot, cache the entire page and then use JavaScript to replace that section of the page after it loads.&lt;/li&gt;
		&lt;li&gt;Disable sessions for controllers or actions within a controller where they aren’t needed.&lt;/li&gt;
		&lt;li&gt;To decode the contents of a session: Marshal.load(File.read(“tmp/sessions/filename”)).&lt;/li&gt;
		&lt;li&gt;use pp (pretty print) to print out an object in more readable form (much nicer than p(object) or object.inspect).&lt;/li&gt;
		&lt;li&gt;&lt;a href='http://dev.rubyonrails.org/svn/rails/plugins/legacy/simply_helpful/'&gt;simply_helpful&lt;/a&gt; is rolled into Rails 2.0. The plugin is now in the legacy folder. If you use this in your 1.2.x apps they’ll have a smooth path to 2.0.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;And there’s more, but that gives you the idea…&lt;/p&gt;


	&lt;p&gt;I’ll be writing up many of these items in detail for www.BuildingWebApps.com once we get that launched.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/mslater?a=09y4II"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=09y4II" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=9ITK6i"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=9ITK6i" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=q1DnZi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=q1DnZi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/mslater?a=JPZIdi"&gt;&lt;img src="http://feeds.feedburner.com/~f/mslater?i=JPZIdi" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/mslater/~4/180209972" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.mslater.com/2007/11/5/tips-from-the-advanced-rails-studio</feedburner:origLink></entry>
</feed>
