18th Nov, 2006

No comments

Changelog: Two launches and other goodies

Wesabe launched Thursday with rave reviews from Wired, BoingBoing, and LifeHacker. Think Quicken but simpler, with smart tagging, and a community of thousands offering tips to help you make better use of your money.

Slightly less important, I launched Strongest Man, a World’s Strongest Man fan site with videos and forums. I’ve been toying around with sites that could be launched with less than two days of effort and decided to combine that with finding friends who could act as community managers. My friend Adam (Grinnell alumnus) was involved in the sport. He runs the forums.

My Introduction to AppExchange Article got a good reception on the O’Reilly Network. I’m writing a second one that shows how to integrate with the AppExchange through their API. Hopefully that’ll be published the week after Thanksgiving.

I’m all for Microformats now after hearing Chris Wanstrath speak at SF Ruby Meetup. Joined all the mailing lists and then started working them into my next project.

The rest of the week was mostly meetings, some of which involved taking Eggs up to O’Reilly for his first day at work. That’s where Sara Winge gave me a nice anecdote about the difference between large and small companies. She sells her CD on CD Baby and when they run low on stock she’ll get an email along the lines of “Your fans love you! They’re lining up around the block for your CD! Could you please send in another ten copies ASAP?” You don’t get that type of service selling on Amazon. As building for the web get’s easier we’ll have much better options for choosing small services and that’ll often mean fantastic customer support.

17th Nov, 2006

No comments

Wesabe Launched [updated]

here.

Crap, A Whole Lotta Nothing fell in love:

* I tagged every gas station purchase with gas and auto. With a single click, I could see how much I spent just on gasoline each month and I could also see how much I spent overall on owning cars (by tagging all payments and repairs with auto).

* Among the dozens of gas fill-ups I had this year I noticed some were for roadtrips, so I could tack on a tag for that single trip (and add the tag: travel), then tag every other purchase from that trip with the city name. One click on the roadtrip city name and I could see how much that trip cost me, and I could also see how much travel in general cost me each month.

* I’ve taken to tagging any purchase that is a gift to myself, or an extravagance, or any non-necessary thing with: extra. In a click, I can see how much money I waste each month on silly gadgets, bike upgrades, and wacky t-shirts. There was never an easy way to get that kind of data from Quicken.

15th Nov, 2006

No comments

Putting Rails to Work

Bill Katz led a great panel at last night’s Ruby Meetup, hosted by Obvious Corp. The panelists were Coda Hale, Evan Henshaw-Plath, Michael Kovacs, Josh Susser, Chris Wanstrath, and Florian Weber (I’ve worked with three of those guys!).

Josh Susser talked about how he’d abandoned rails generate in favor of maintaining an exemplar project in subversion. After tweaking acts_as_authenticated and acts_as_taggable I think that’s not a bad idea.

Chris Wanstrath talked about how CNet is using Rails to build Chow.com and Chowhound.com. They use microformats to syndicate content from one site to another. I’m know that’s not the first production use of microformats but it’s definitely the first time I’ve heard someone outside of the microformats website talking about a real world use. Chris just released mofo, a microformats parser for ruby.

Michael Kovacs showed his new get_sorted_objects plugin for creating sortable HTML data tables.

Coda Hale talked about the importance of a staging environment and how effective Wesabe’s integration of campfire (group chat) and continuous integration is. I’ve done continuous integration with breakages going out over email and the group chat way is definitely more effective. I never check in code without waiting in the chatroom to see that the tests didn’t break. Looking bad in front of your coworkers is an ok deterrent. But knowing that they’re going to start talking smack about you behind your back, that’s a great deterrent. Also the company that Coda and I have been working on might launch very very soon. Look out for Wesabe!

Evan Henshaw-Plath talked about the caboo.se documentation project. It looks awesome. That sparked a discussion about how the rails core team needs more support.

Florian Weber, who’s on Rails core, agreed, but thought there was some confusion caused by people who were complaining without offering constructive advice. He also pointed out that at least Rails is headed in the right direction, it’s filling a major need and it isn’t suffering from feature bloat.

There were also a few lighting talks and announcements.

My favorite was a round of people announcing that they were hiring. After about ten people made this announcement the question was flipped to “who’s looking for a job?” Nobody.

Tyler Kovacs from ZVents.com showed off his new custom_benchmarks plugin for adding your own information to the benchmark line logged at the end of each rails request.

Kongregate, a flash games community and marketplace gave a demo. They’re in private beta but you can request an invite from their home page. Special preference for people at the Ruby meetup. Here’s what TechCrunch had to say about them. If you don’t think flash games can be cool, check out Raiden-X.

14th Nov, 2006

No comments

Sarah on the State of Search

Sarah’s take on the state of search made it’s way onto the Radar blog.

A couple of things I’ve noticed since writing/editing the second edition of the Google Missing Manual earlier this year. Nothing ground-breaking here; more that in aggregate, the observations may spark some interesting conversations.

  • As the Web gets bigger, search results contain more irrelevant stuff. In many cases, it’s getting harder to find what you want. Appreciably harder.
  • Assuming search winds up lasting 100+ years, it’s still in its infancy. Still, it surprises me that the presentation of Google’s main search results pages barely changed in the two years from one edition of the book to the next. The main difference is that now, onebox results with specialized information appear more frequently (though randomly) at the top of results listing. At this point, I’m ready for a better results interface.

13th Nov, 2006

No comments

Introduction to Salesforce AppExchange

I went to a Salesforce conference recently to investigate Salesforce as a platform for building applications for the business web. I liked what I saw. The tools they are building for developers fit very much with the trend toward smaller development companies (i.e. one or two people) who can focus completely on the product because the infrastructure for running the rest of the company already exists.

Today O’Reilly posted part one of my three part series on building for Salesforce AppExchange, An Introduction to Salesforce.com’s AppExchange.

13th Nov, 2006

No comments

Speed Matters

Geeking with Greg on the effect of page response times at Google and Amazon:

After a bit of looking, Marissa explained that they found an uncontrolled variable. The page with 10 results took .4 seconds to generate. The page with 30 results took .9 seconds.

Half a second delay caused a 20% drop in traffic. Half a second delay killed user satisfaction.

10th Nov, 2006

1 comment

Changelog: I Heart Quotes and other changes

Not a lot of updates to my personal projects lately. That’s because we’re very close to launching Wesabe. When? When it’s ready as Marc says. Luckily I had a bunch of unannounced stuff from way back. Here’s what changed:

Added the 1811 Dictionary of the Vulgar Tongue to I Heart Quotes. I found it on Archive.org and luckily it was in text format and easy to parse. Most of their books are in pdf or some other format that I don’t know how to parse, otherwise I’d be adding ancient medical terms and all sorts of other weird stuff.

Tagged all the quotes in I Heart Quotes. Now you can browse George Bernard Shaw, Albert Einstein, and Comic Book Guy, among others.

Redesigned I Heart Quotes to accomodate all the new tags but hate how it turned out. Just read some design advice the other day along the lines of pick one thing that you want people to do on a page and make that twice as big as anything else. I think that one thing is clicking the random quote button. Going to give that a shot on the next design.

Added an IFRAME widget for quotes to the API page. Now you can put quotes on your website (like I did on my blog). People with fast and reliable servers build these widgets with Javascript. Unfortunately browsers pause page rendering until the javascript is downloaded and I wasn’t comfortable with that delay even on my own blog. IFRAMES don’t have that problem, so that’s what I’m using for now.

Twitter added RSS feeds which means you can subscribe to the iheartquotes RSS Feed of three quotes per day. Of course if you actually signed up for twitter you could get those same three quotes on your cell phone or GTalk account.

I’m starting a World’s Strongest Man fan site with my friend Adam White. So far I’ve just put up a bulletin board (PunBB) and there’s already 50 posts. I can’t wait until we add the Video. Adam was actually involved with the sport, I just like to watch people pull 747′s with their teeth.

It’s time for GemJack to get some more attention. It had stopped updating again, something I only noticed when I went to look for Blaine’s Jabber::Simple gem. Fixed two things that were stopping the update. We’ll see how that works.

My first Salesforce Article is in and set to publish next Tuesday. As I said in my Obvious Trends post, I’m really excited about trends that help engineers start small businesses. Salesforce is building development tools that are targeted right there.

Also we got a dog, Eggs. That was meant to be short for Eggs Benedict but he’s seeming more like a Scrambled Eggs. Got him used from Milo Foundation.

9th Nov, 2006

1 comment

Recommended Reading: Justinsomnia

Justinsomnia has two relevant tips for Firefox users making the upgrade to Firefox 2.0:

Fixing Firefox 2′s new tab bar
If you use a lot of tabs you’ve probably noticed that Firefox 2.0 introduces a new scroll-to-find-new-tab game. Justin explains how to fix.

Resizable Form Fields for Firefox
Ever tried typing an essay in a text area that’s 3 rows by 10 columns? The resizable form field plugin lets you drag the edges of form fields until they’re as big as you like. It’s been around forever but didn’t work in Firefox 2.0. Justin fixed and added some improvements.

(while we’re fixing firefox, here’s how to get livehttpheaders to install.)

There’s a couple of other reasons I read this blog. I worked with Justin at O’Reilly. He’s now a top engineer at FM Publishing, which is a company I think will be very important for programmers starting small web businesses. Most importantly though, he’s got a good nose for local (SF Bay Area) activities and foods. For example he clued me into the Russian River Beer Revival (and BBQ competition), which is where I’ll be going if I don’t get a FOOCamp invite next year.

8th Nov, 2006

8 comments

YouTube API How-To

What is it

The YouTube API lets you search for videos and display them on your site. For example, I use the API to pull videos tagged dance and display them on Rate My Dance Moves. The YouTube API is currently the 10th most popular API on ProgrammableWeb with 46 mashups.

To get started you need to sign up for a developer account. That will give you the developer id required to use the API.

Using the API

The major API methods are for retrieving lists of videos, which you can do by tag, user, user favorites, and featured. The information returned from the list methods is usually enough to display a video on your site. All you have to do is plug the video id into the web snippit below.


<object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/ID&autoplay=1">
</param>
<embed src="http://www.youtube.com/v/ID&autoplay=1"
type="application/x-shockwave-flash" width="425" height="350"></embed>
</object>

Most of the information you need is in the video list methods. However, if you want a list of comments or channels for the video you’ll need to call the get_details method.

One complaint I had with list_by_tag is that the results come back ordered by relevance rather than recency. That means if you want to build a self-updating site you need to either regularly crawl the entire result set (results are paged) or sit on one of the RSS Feeds.

API Wrappers

There are good libraries for using the YouTube API with Perl, Ruby, and .NET. If you’re using another language, say Java, PHP or Python, you’ll have to write some code yourself. I’ve included links to example PHP and Python code and listed an example Ruby program that you can use as a template for whatever language you’re writing in.

There’s two competing Perl modules, but Hironori Yoshida’s WebService::YouTube and WebService::Youtube::Feeds seem best based on the recent development activity and strength of documentation. His is the only wrapper which includes support for the feeds, nice since the feeds have functionality thats not in the API (namely list by recency).

Shane Vitarana released a YouTube Ruby Gem after I’d built RateMyDanceMoves. Too bad, since it seems like the most polished of all the wrappers.

Eamonn Flynn has a .NET wrapper for the YouTube API.

There doesn’t seem to be a packaged PHP library but these two tutorials from waxjelly should be enough to get you started.
Simple PHP Script Using the YouTube API with Pagination
A More Complex PHP Script Using the YouTube API with Pagination.

ThinkHole labs has some example YouTube API code for Python users. Apparently using the API can be as simple as passing a dictionary to YouTube’s XML-RPC interface.

Code Example

I’d written my own code before the Ruby library came out. I want to show it here so you can see how simple writing your own code would be.


#!/usr/bin/env ruby
require 'open-uri'

tag = "dancing"
per_page = "100"
def_id = "YOUR_DEV_ID_HERE"
url = "http://www.youtube.com/api2_rest?" \
+ "method=youtube.videos.list_by_tag" \
+ "&tag=#{tag}&per_page=#{per_page}&dev_id=#{dev_id}&page=1"

open(url) do |f|
xml = f.read
end

doc = REXML::Document.new(xml)

elements = doc.root.get_elements("//video")
elements.each do |v|
puts v.get_elements("id").first.get_text.to_s
puts v.get_elements("title").first.get_text.to_s
puts v.get_elements("tags").first.get_text.to_s
puts v.get_elements("thumbnail_url").first.get_text.to_s
end

More Info

The Amazing YouTube Tools Collection has a long collection of YouTube tools, mashups, and plugins.

8th Nov, 2006

2 comments

Obvious Trends

I was psyched when Ev announced his plan for Obvious Corp., buy the Odeo assets and run a lean company that can take advantage of rapid/cheap development and the network effects of multiple products.

There’s three trends in the ensuing discussion, all caused by plummeting costs of running a web business. Most people are only paying attention to the first two.

1. The VC world is adapting by offering more seed funding. George Zachary, Odeo VC/Board member, launched a seed funding program called Quickstart that’s aiming to make 50 loans in the $100-250k range. That’s a fortune compared to Paul Graham’s Y-Combinator.

2. Entrepreneurs are adapting by skipping venture funding, acquisitions, and IPOs in favor of running small businesses. 37Signals blows this horn loudest, but I’m partial to photo sharing site SmugMug. Chief Geek Don MacAskill said of a recent SmugMug acquisition rumor:


We love our business, we love our customers, and we love the people we work with. Not only that, but it pays the bills – we’re profitable, with no debt and no investors! Why mess with a good thing?

3. Geeks are finding happiness. That’s my favorite trend. Don doesn’t just think that keeping SmugMug privately owned makes economic sense, he thinks it’s more fun.

Ev said the same thing about the formation of Obvious:

Lastly, for me, I just wanted to create a company that would be as much fun and as fulfilling as possible. Fun in work to me means a lot of freedom, and ton of creativity, working with people I respect and like, and pursuing ideas that are just crazy enough to work. I don’t want to have to worry about getting buy-in from executives or a board, raising money, worrying about investor’s perceptions, or cashing out.

Costs are low so you don’t have to be in somebody else’s debt. Development tools are more powerful. And companies are building the infrastructure that supports the ‘muck’ of doing business online. With massive storage systems (Amazon S3), ad programs (Adsense / FM Media Publishing), and cheap hosting you can focus completely on your customers. A company can easily be two people who are 100% focused on building and polishing features for their users.

As David Galbraith points out, small sustainable business is the natural state for every other professional group.


When I was an architect, you didn’t set up a practice on your own to ‘exit’, you setup to build a company that made a profit and made products that made the environment a better place along the way – a sustainable enterprise. The whole idea of ‘exit’ in the context of building an architecture firm, or a legal or medical practice is preposterous.

Will it work?

Bryce at O’Reilly Alpha Tech Ventures calls the venture reaction “spray and pray”


This is a hits business and we just don’t know who the winners are going to be any more. The old formula was one that they were all comfortable with – get a proven team in a hot market and you’ve got a winner. Then Odeo happened (CRV was the primary backer). Rockstar team, smoking hot market, all-star angels — and it didn’t deliver the hyper growth traditional VCs need for their return profile. YouTube on the other had was a couple of junior guys from PayPal moving into a saturated market which had never really panned out. $1.65B later…

That may be true if you’re a venture capitalist and you require one of the investments to be a gigantic success. But I don’t think it’s true for companies like Obvious that have a parallel products in development (Odeo, Twitter, Hellodeo, Odeo Podcast Studio). It certainly wasn’t true for blog networks like Weblogs, Inc. As Jason Calcanis points out, launching to a network that already has traffic works:


StyleDash.com was the best launch in the history of Weblogs, Inc. thanks to the support of AOL and their traffic machine. The graph below is from SiteMeter which we’ve found is about 5-10% less than our internal stats.

It shows 1.5M pages in month one and almost 2M pages in month two. It used to take us 12-18 months to get a blog to 1M pages… now we start at 1M pages. That’s the power of scale, and that’s been the biggest lesson I’ve learned at AOL: how to build a “scale business.”

Of course the network effect isn’t actually a new idea. John Andrews from the SEO world calls it competitive webmastering (just added that to my vocab):


I am an independent competitive webmaster, and this sounds like what I (and many SEO practitioners) have done for years. I build web properties using the latest technologies and small teams (if I need any team at all). I monetize via subscriptions, advertising, and (affiliate) marketing. I use my sites to support my other sites, following sound SEO principles such as semantic theming and whatnot, for organic search traffic and search marketing. My “network” is my base for launching new sites and new promotions, obviously.

If that’s not inspiring, check out Markus Frind of Plentyoffish.com’s take on where the web is going:


Ebay Created a economy of 750,000 people making a living off its site. Google created a program where a couple of hundred thousand people could monetize their sites. Now thanks to google, huge drops in hardware costs and better software individuals and small companies can build sites that were impossible only a few years ago. At the moment there is no better example then me, if you would have said 3 years ago that someone was doing 600 million pageviews a month out of their apartment with no employees you would have been laughed at. There are thousands of other people who in the past 3 years have used adsense to grow and build large sites. In the next 2 or 3 years we are going to see thousands of these sites run by little groups taking over industries. This is because they will have reached critical mass.

I wonder if we’re in a happiness bubble where instead of chasing IPOs, tech entrepreneurs are chasing happy lifestyle businesses. If we are, then I’m pretty sure it’s early and that there’s plenty of room for the first few hundred thousand people to setup store fronts.