Viral App Distribution with Google Wave

by adam on May 30, 2009

Amidst all of the coverage of Google Wave this week, I have not seen mention of its significance for software application distribution. In short, waves come with optional code content (like attachments) that run inline with the user’s approval. The first time a user sees an extension or robot connected to a wave, they “install” or grant access to the application in order to experience the complete message. This distribution mechanism is a game changing new way to acquire customers.

There were many things about the Wave demonstration (which I was lucky to see in person) that made my jaw drop. I was very impressed. As an application developer, it is the image of a message with a chain of puzzle pieces (uninstalled apps) on the end that really sticks with me.

Google Wave Embedded Application

I see two paradigms of discovery at play on the Web. First, is the older “world is flat” model where everyone has access to everything (often anonymously), and Web sites are discovered primarily through search. The power of the “flat” model is demonstrated in Google search, Craigslist/Ebay, and Wikipedia.

The newer model is the social media model, where everything on the Web is discovered via your friends (AKA your social graph). Where the flat model makes everything more digital (connectivity and free replication flatten markets), the social media model is makes the Web more human like by making real world interactions more efficient. Facebook is the most successful example of using your social graph to filter the Web.

When you have a product you are trying to tell people about, the primary paths in the old world were SEO and advertising/marketing. In the new world, electronic word of mouth is the goal. Annoyingly proliferous Facebook apps and armies of Twitter marketers are the evidence of this new shift.

My two models above are actually an over-simplification. In the old world, we had email, and many people discovered Web sites and participated in social “apps” like petitions or chain letters. Google Wave amplifies this phenomena the way social networks amplified it. Whether the embedded software entails rendering a map, playing a game, or watching a video – users now will be able to “become a customer” inside the message. In the same way it makes collaboration 10x easier, Google Wave makes the delivery of software 10x easier. For applications that naturally involve collaboration, new customers will come easy. For others, it will be critical to understand this rich distribution model to keep their code and content in front of customers.

Google Wave Chess Game

{ 0 comments   Dofollow Certification }

twibeshelpf-1-1_biggerTwibes Twitter groups help people with common interests find each other on Twitter. The first question an experienced Twitter user will ask when seeing Twibes is “Why do we need Twitter groups when we have hashtags?

Before Twibes, the best way to communicate about a certain topic was to use hashtags. Hashtags are words prefixed with a “#” added to tweets and automatically hyper linked to a search. For example: #photography. Hashtags are great, but in many ways they are no substitute for an old-fashioned list of users.

1. Ownership

Hashtags are community owned by design. The meaning of a tag may change over time, or there may be multiple competing meanings. In contrast, a Twibe has a founder who chooses keywords for the Twibe, and sets its mission statement via the Twibe description. The founder alone is responsible for grooming the Twibe member lists, and this keeps the quality of the company and discussion high.

If you have a small business on Twitter, it is valuable to be able to contain your message and membership. It isn’t good or necessary to control your message, but hashtags were designed against this.

2. Membership and Group Identity

Joining a group has more meaning than tagging a post. All humans want to belong to a group. While hashtags can be used by anyone at anytime, a Twibe has a visible list of people. With hashtags, there is no way to look at a list of people who care about a topic (for example to follow them).

3. Disambiguation

Twibes allow for multiple keywords, which allows for richer meaning and clearer topic definition. Hashtags are easy, but can have duplicate meanings.

4. Laziness and Predictability

With Twibes, there is no need to remember a specific hashtag or leave room for it in your Tweet. This is important since – in order to retain their uniqueness – hashtags are often unmemorable collections of characters (what does #09ejc mean?). Also, with Twibes you have greater confidence that someone will read your tweet. By
visiting the Twibe page and tweeting, you know the who your prospective readers are, and know that your tweet is included in the group discussion.

5. Noise

Hashtags can easily be spammed by robots. Once a tag becomes popular, it will become a target for robots that use that tag to interrupt the tweet stream. With a Twibe, the founder provides moderation.

Tagging clearly has many benefits. Many of the cons above are pros in other contexts. Hash tags work great in conjunction with a Twibe. Where hashtags really shine is in tying together content on multiple Web sites (say flickr, delicious, and twitter) with a unique term. This “on the fly” identifier works well for conferences or spontaneous events.

{ 7 comments   Dofollow Certification }

CSS Link Color Sample Code

by adam on February 10, 2009

Here is the CSS required to change the color of a link in HTML. If you are trying to figure out how to use CSS to change link color, this is the code you’ll need. This can be used either inside the HTML of your page, or in a separate CSS file.

<style type="text/css">
a:link {
 color: #0000ff;
}
a:visited {
 color: #00ff00;
}
a:hover {
 color: #ff0000;
 text-decoration: none;
}
a:active {
 color: #777777;
}
</style>


{ 15 comments   Dofollow Certification }

Quotes from Seth Godin’s “Tribes”

by adam on January 3, 2009

Image representing Seth Godin as depicted in C...
Image byhttp://www.prestonlee.com/archives/67

via CrunchBase

I just finished reading Seth Godin’s “Tribes”. It is a short inspirational book, with bite size chapters to help you realize leaders aren’t that special. To kick off the new year, and celebrate heretics, here are some of my favorite quotes.

The anatomy of a movement:

Senator Bill Bradley defines a movement as having three elements:

1. A narrative that tells a story about who we are and the future we’re trying to build.
2. A connection between and among the leader and the tribe.
3. Something to do – the fewer limits the better.

Too often organizations fail to do anything but the third.

On expecting (not avoiding) criticism:

If I had written a boring book, there’d be no criticism. No conversation. [Ask yourself:] How can I create something that the critics will criticize?

Leader’s aren’t all that special other than being able to chose to standing up, and stick with their cause.

Leadership is scarce because few people are willing to go through the discomfort required to lead. This scarcity makes leadership valuable. If everyone tries to lead all the time, not much happens. It’s discomfort that creates the leverage that makes leadership worthwhile.

Leadership requires thinking outside the box, and having faith (not the religious kind). The climber described here invented a technique of releasing the wall with all limbs at the same time – literally taking leaps of faith to get out of stuck positions.

Here’s a simple way to think about it: Obe Carrion, former U.S. rock climbing champion, won a tournament in an unusual way. Obe was one of four finalists, and each had to climb a very difficult route up a steep wall. The first three finalists did the same thing. They entered the roped-off area, inspected the route, and then slowly began climbing, on hold at a time, working their way up to the top. Two made it (with a slip or two), one fell.

Obe was scheduled to go last. He came out of the isolation area, inspected the route, took twenty steps back and he *ran* up the wall. he didn’t hesitate or interpolate or hedge his bets. He just committed.

It turns out that this was the easiest way up the wall. Leaning into the problem made the problem go away.

I really like this next one. Invention often seems small and big at the same time. The most interesting enhancements are the tiny ones that end up changing the game.

The first rule the music business failed to understand is that, at least at first, the new thing is rarely as good as the old thing was. If you need the alternative to be better than the status quo from the very start, you’ll never begin.

Yes, I know, failure is good. Stop rubbing it in:

The only thing that makes people and organizations great is their willingness to be not great along the way. The desire to fail on the way to reaching a bigger goal is the untold secret of success.

I can’t help but read this in terms of what we call “user experience” in software design. It reminds me of how Microsoft used to argue that Internet Explorer was really faster than Firefox, it was just that users *perceived* Firefox to be faster. However, in this case Godin was referring to leadership being in the eye of the follower.

Adam Gopnik quotes Jamy Ian Swiss as saying, “Magic only happens in a spectator’s mind. Everything else is a distraction… Methods for their own sake are a distraction. You cannot cross over into the world of magic until you put everything else aside and behind you – including your own desires and needs – and focus on bringing an experience to the audience. This is magic. Nothing else.”

This is striking because it is against conventional wisdom, but makes perfect sense:

Sternin went to Vietnam to try to help starving children. Rather than importing tactics that he knew would work, or outside techniques that he was sure could make a difference, he sought out the few families who weren’t starving, the few moms who weren’t just getting by but were thriving. And then he made it easy for these mothers to share their insights with the rest of the group.

And this makes a good reminder for the new year. To those of us who are blessed, our opportunities are obligations.

I don’t think we have any choice. I think we have an obligation to change the rules, to raise the bar, to play a different game, and to play it better than anyone has any right to believe is possible.

Reblog this post [with Zemanta]

{ 5 comments   Dofollow Certification }

Rails ActiveRecord Tips

by adam on December 24, 2008

Ruby on Rails
Image via Wikipedia

After using ActiveRecord for a while, some questions keep coming up when performing operations that are more complicated than the standard create, read, update, delete.

1. Does ActiveRecord track if an attribute is has been modified? Does it track dirty state on an object or attribute basis?

Yes, but not for attributes so far as I can tell. Rails provides these great helper methods (examples given for a person sample object).

person.new_record?
person.changed?
person.name_changed?
person.name_was

person.name = 'bob'
person.changed        # => ['name']
person.changes        # => { 'name' => ['Bill', 'bob'] }

Documentation on Rails ActiveRecord dirty state methods

note that changed? does not capture if a collection has changed (nor seem to work for a collection)

2. Does ActiveRecord automatically set the reference pointers on both sides of a has_many relationship?

Surprisingly, no. For example

p = Person.new
e = EmailAddress.new
e.person = p
p. email_addresses # => []

even though EmailAddress belongs_to :person

the reverse is also true

e2 = EmailAddress.new
p.email_addresses.push(e2)
e2.entity # => nil

Also, this is the case even if p and e have been previously saved to the database.

3. Are objects automatically persisted when you insert into a collection?

Yes. From the documentation: “Adding an object to a collection (has_many or has_and_belongs_to_many) automatically saves that object, except if the parent object (the owner of the collection) is not yet stored in the database.”

You can add an object to a collection without automatically saving it by using the my_collection.build method

4. How does it handle database sessions, is there support for transactions?

I don’t see any support for sessions (in the “Hibernate” sense, where you can make a number of object changes, then dump those to the database all at once). However, simple transactions are definitely supported.

ActiveRecord::Base.transaction do
  david.withdrawal(100)
  mary.deposit(100)
end

{ 1 comment   Dofollow Certification }

Mac Software Recommendations

by adam on November 28, 2008

I’m making one final pass at cleaning off my hard drive this morning before installing OS X Leopard. As part of the process, I’m making sure I have license keys for all the software I’ve purchased over the last year or so. Here is a list of the software I have purchased that I recommend.

Parallels – Lets you run XP or Vista on your Mac. I am having a heck of a time getting my vista image off my hard disk, because it is 30GB, but Parallels has been great.

TextMate – I haven’t been happy with the selection of Software Development Environments’s for OpenSource software, but TextMate is light weight and gets the job done. Others I also use in are NetBeans and Aptana.

iWork – I Tried OpenOffice, but upgraded to iWork for Keynote. OpenOffice was too slow.

Flex Builder 3 – You can do Flex development without buying Adobe’s SDE, but when learning something new, every advantage helps. I found the this Eclipse derivative to be stable, and worth the price for the visual layouts and built in documentation.

Market Samurai – A great SEO keyword research tool that helps you plow through tons of keywords. It also tries to optimize the process of getting backlinks, but that is a tough problem to solve. I haven’t found Market Samurai’s ability to search for content and back links opportunities to be all that useful, but I haven’t really tried that hard.

Pixelmator – Excellent affordable Photoshop replacement. I like the support of gradients. Little bit of a learning curve (probably the same as Photoshop).

I will likely soon buy:

MacSpeech Dictate – Tried a demo of this and the speech recognition was “good enough.”

ScreenFlow – for making screen capture videos with web cam picture-in-picture.

{ 7 comments   Dofollow Certification }

What is Twitter?

by adam on November 22, 2008

I’m proud of having introduced Twitter to a prominent Seattle investor a couple years back (he hadn’t heard of it – and wasn’t looking to invest in it). If you still aren’t on the bandwagon, here is a cool video explaining it. Today, I met the creator of this video. He has built a business out of handcrafted educational videos. Great stuff!

{ 16 comments   Dofollow Certification }

The world needs a comprehensive internet connected set-top box. There is no existing solution that allows you to:

  • Watch Hulu, YouTube, and other streaming internet videos on your TV
  • Record broadcast TV in a portable format (an HD DVR).
  • Download (via Bit torrent or Usenet) and view downloaded videos in portable formats (DivX, Xvid, other MPEG-4 variants)

After a couple days research, it looks like the best way to accomplish this is by using a Mac or PC with a TV tuner as a home video server. In my case, I already have a MediaCenter PC, but it isn’t in the TV room, so I’ve researched the best option for sharing videos over my home network. The result is the system diagrammed below. I haven’t actually set up the UPnP part of the network yet, but I will likely use iPodifier and PlayOn to transmit shows to a PS3 (which, though expensive, is also a blue-ray player). I am willing to hack a little bit, but am hesitant to embark on a major hacking expedition (doing stuff over SSH to an AppleTV, or installing MythTV to see if it supports my video card both sound like too much work).

I prefer to pay for high speed internet rather than cable/satellite TV. For some reason, I can’t stomach a monthly subscription for TV. $50-100/month = $600-1200/yr (although I do have ultra-basic cable because our TV reception is poor). A basic HD TiVo, the leading choice for a stand-alone DVR, is $299 without programming, $700 with lifetime service. This is too expensive, and still only solves 1 of the 3 criteria above.

On demand download services are more palatable, the leaders are:

But with all of these, you pay for a limited selection of old TV shows and movies. Rather than dropping $600 on a year of cable television, that money will go a long way towards a Mac Mini with EyeTV or a MediaCenter PC. Once you have either of those as a hub, it is easier to free up your content for viewing on other devices around the house.

Here is what I’ve found to be the leading software you can install on your Mac/PC DVR to share video around the house:

  • PlayOn (UPnP server for PC)  – launched a beta version recently and their site went down
  • iPodifier (file converter for PC) to automatically convert your Windows MediaCenter format files to iPod or AppleTV friendly format (MPG-4)
  • MediaTomb (UPnP server for Mac/Linux)

These are very promising because they don’t require a lot of hacking (although MediaTomb doesn’t seem have any installation instructions)

UPnP Clients

  • PlayStation3 – should work with PlayOn and has a blue-ray drive.
  • XBox 360 – should work with PlayOn or PC MediaCenter (though I had bad experiences with first gen Xbox)
  • not AppleTV (requires hacking) – but should detect MPG-4 videos encoded by iPodifier

Other Links

{ 8 comments   Dofollow Certification }

StumbleRead Feature Ideas

by adam on August 5, 2008

The generic globe logo used when Firefox is co...Image via Wikipedia

I’ve been trying to prioritize the requests I’ve had for StumbleRead. Thanks to everybody who has provided feedback.

1. Support for “Hide” (as defined by FriendFeed)

2. There is a bug when opening articles (for example from the New York Times) where the article takes over the StumbleRead frame. I’m not 100% sure I can fix this, but I will try.

3. “Next >>” bookmarklet. Just discovered that Google Reader has one of these, and it would be perfect for StumbleRead. Clicking the button would take you to the next unread item in your FriendFeed queue. (This would likely also entail “read item” tracking, though you could imagine it opening just the item with the newest comment or like).

4. Reverse sort order comments. Probably will make this a preference option.

5. Pop-out mode, where StumbleRead left hand frame becomes its own window (like a Web based Twhirl). it would still auto open posts, but allow us to see the URL of the content pane.

6. “Horizontal” mode. Just something I want to try. One item at a time in horizontal pane at the top.

7. FireFox add-in. This would probably be too much work for me to undertake. I’m hoping the combination of the above features will make an add-in unnecessary.

8. Skins. Would be great to have some alternate color schemes.

9. Search and filter. I really want to be able to filter to just videos or photos.

James Mowery has posted separately with some great suggestions for the ultimate FriendFeed client.

“Perhaps third-party developers should attempt to integrate more tabs and/or filters within a FriendFeed client. Why not have tabs or filters for each of the following: blogging activity, news activity, social networking activity, multimedia activity, shopping activity, comment activity, and more.”

#9 should cover that

“The interface should allow users to properly and intuitively manage, display, and sort comments.”

#4 should help

“Finally, the person or people who decide to make the ultimate FriendFeed client should find ways to extend FriendFeed’s uses. Honestly now, who knew that Twitter was going to be a popular service to track packages and calculate MPG rates? Who knew that it would turn the everyday person into a reporter? Who knew that it would be one of the most dominant marketing tools today? Who knew that it would change the world? FriendFeed’s third-party developers should apply all this knowledge to their creations.”

This is a big but fascinating challenge. FriendFeed is already so interoperable. What StumbleRead could do is package all the audio or video links into a playlist. Just one idea.

Zemanta Pixie

{ 0 comments   Dofollow Certification }

I wrote previously about my trip to Machu Picchu when I visited Peru in May. Breathtaking as it was, it wasn’t the highlight of the trip. The highlight was seeing the work of the team at Kausay Wasi Clinic in Qoya. My father in-law has seen hundreds of patients with the team there over the last several years. The clinic provides basic health and dental care to thousands of Peru’s people who live in the rural Sacred Valley area.

“The Clinic treats approximately 10,000 patients per year, and US visiting medical teams perform approximately 300 operations free of charge in specialties such as ears, nose and throat, facial reconstruction, cataract, orthopedic surgeries for children, and gynecological surgeries for women.”

To visit was a life changing experience. The patients that we saw come through the clinic were overwhelmed with gratitude for the care they received. Care they would not have gotten if not for the efforts of the two sincere and effective founders Guido and Sandy Del Prado.

If you are traveling to Machu Picchu, or just want to make a difference, please sponsor a family. $200 will cover an entire family’s medical care for one year.

{ 0 comments   Dofollow Certification }