StumbleRead Feature Ideas

Filed Under (Social Media) by adam on 05-08-2008

Tagged Under : , , ,

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

Kausay Wasi Clinic - Real Magic in Peru’s Sacred Valley

Filed Under (Uncategorized) by adam on 02-08-2008

Tagged Under : , , , ,

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.

What next for Lookmarks?

Filed Under (Social Media) by adam on 02-08-2008

Tagged Under : , , , ,

Spam musubi made from SPAM. (see definition fo...Image via Wikipedia

Lookmarks is my simple link sharing site that died under the weight of link spammers (both bots and humans). I’ve been trying to think of a way to re-work the site to capture the enthusiasm of all those unexpected “customers”. I’ve got the site half-way ported to Google App Engine, and I’m taking an internet marketing course (I’m ashamed to admit) that I’m sure will influence my ideas further.

Goal

The goal is to build a quality link directory by encouraging self promotion and harnessing it to enforce quality (like Mahalo or Wikia but with controls instead of paid editors). The business model is AdWords and paid sponsored links.

Idea

Create a “digg” like system where you only ever vote on random links. You gain or lose credibility points based on how many people later vote the same as you.

Detail

The new Lookmarks works like a very simple social bookmarking site (with a search function), except by default links you add are only visible to yourself (and your friends).

In order to make a link appear public (and to other users that are not your friends) without having other people bookmark it, you must spend Lookmarks points (or dollars). You presumably only want to do this when you are trying to promote your own site. Once public, the link appears in anonymous search results and is indexed by Google (what the link spammers want).

Points are awarded to users based on their ability to predict how many other people will bookmark or “vote up” links. The site doesn’t allow you to go around voting on links because this would allow collusion between fake user accounts. One user could follow around another, bookmark everything and earn a ton of points. You can however, visit a special voting page that presents random links that you can vote on. You are presented with a screen like:

When searching for “Seattle restaurants” do you think most people would find the link below useful, informative, or entertaining… Yes or No

The prediction scoring in this case grants you one point for all the people after you that vote the same as you, and subtracts a point for everybody who votes differently. The volume of random links prevents collusion (the database is already seeded with 10s of thousands of questionable links). Even if you teamed up to vote yes on everything with the letter “X” in it, you’d have to wade through too many links to make the points add up.

Once you’d acquired some points, you could spend/deposit them on one of your links to keep it public even if it received negative votes. For example, you could put 10 points on it to counter-act 10 negative votes.

Just to re-iterate, only link spammers and super-contributors would care about earning points. Normal users could ignore them.

Issues, Questions, Refinements

  1. Sites like delicious, faves don’t appear to need a points system - so captchas and spam filters are presumably enough to throw away the spam (discouraging the spammers instead of harnessing them).
  2. Is the visibility of points (or spending points) necessary? We could just weight the votes of people who make best predictions. The points should probably be visible though as motivation.
  3. Could streamlining the voting so that when you are submitting your link, you have to vote right then and there if you want to make your link public. Include paypal pay now button.
  4. Scoring would be slow to get going. Could give everyone 5 points to start. Could make “random” selection weighted towards links that had 1 vote to speed up scoring.
  5. How would you combine the UI of Digg and Delicious? Since use cases are different, should probably keep them separate. Could be separate views on the same database.
  6. Would it be more efficient to force comparison between two links instead of voting on one?
  7. Can I add one more feature that makes the world a better place (like improve link sharing for teams) to make this whole venture worthwhile.
  8. Other random idea: award one point for each external domain that links to lookmarks (ick :)!)

What do you think of the points system? Should it be visible or invisible? The question is not whether or not you’d use the site, but whether link spammers would bother to go through the voting exercise.

Common Ruby Regex Patterns

Filed Under (Ruby) by adam on 27-07-2008

Tagged Under : , ,

My earlier (rather lame) post on Ruby Regex’s (Regular Expressions) is getting some Google love, so I thought I would supplement it with some more useful information.

If you are searching for Ruby Regex help, my guess is you are looking for…

Validating an email address with a Ruby Regex

Something simple like this next one will get you started.

irb(main):023:0> “me@adamloving.com”.match /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i

For a much more complete email address ruby regex, try:

#
# RFC822 Email Address Regex
# --------------------------
#
# Originally written by Cal Henderson
# c.f. http://iamcal.com/publish/articles/php/parsing_email/
#
# Translated to Ruby by Tim Fletcher, with changes suggested by Dan Kubb.
#
# Licensed under a Creative Commons Attribution-ShareAlike 2.5 License
# http://creativecommons.org/licenses/by-sa/2.5/
#
module RFC822
  EmailAddress = begin
    qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'
    dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'
    atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-' +
      '\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'
    quoted_pair = '\\x5c[\\x00-\\x7f]'
    domain_literal = "\\x5b(?:#{dtext}|#{quoted_pair})*\\x5d"
    quoted_string = "\\x22(?:#{qtext}|#{quoted_pair})*\\x22"
    domain_ref = atom
    sub_domain = "(?:#{domain_ref}|#{domain_literal})"
    word = "(?:#{atom}|#{quoted_string})"
    domain = "#{sub_domain}(?:\\x2e#{sub_domain})*"
    local_part = "#{word}(?:\\x2e#{word})*"
    addr_spec = "#{local_part}\\x40#{domain}"
    pattern = /\A#{addr_spec}\z/
  end
end

Find URLs using a Regular Expression in Ruby

Here is a simple URL matching regular expression.

irb(main):028:0> "http://www.adamloving.com/".match /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix

Watching Hulu on TV (how to watch internet video on your TV)

Filed Under (Troubleshooting) by adam on 27-07-2008

Tagged Under : , , ,

This is a follow up post to my earlier post about watching internet video (Hulu and YouTube) on a TV. Since I still haven’t found a set top box that I can recommend, I thought it would be helpful to describe how to hook your PC or laptop up to your television.

  • If you have an older PC or laptop, and an older TV, most likely what you need is an S-video cable.
  • If you have a newer PC or laptop and an older TV, DVI to S-video is more likely what you need.
  • Lastly, if you have a new PC or laptop, and a new TV (like a flat screen LCD TV) - you probably need a DVI to HDMI cable.

Hooking up your PC to your TV can be a pain. Here is another article I found about internet set top boxes. One that looks promising that I didn’t mention before is the “vunow“. The vunow claims to offer NBC content, but I couldn’t figure out where to actually buy it - so it may not be released yet.

It seems like someone just needs to get this hardware done so we can make cable and broadcast TV obsolete.

What is the big whoop about Facebook Friend Connect?

Filed Under (Facebook and OpenSocial) by adam on 24-07-2008

Tagged Under : , , ,

Hotel LarabeachImage by Abdallah ♫ via Flickr

I don’t understand how Facebook’s new Friend Connect is substantively different from their pre-platform API functionality. External Web sites already have the ability to allow users to sign in to Facebook and retrieve their friends and profile from an external site. Friend connect just appears to be some better UI controls for doing this withouth having to jump off to Facebook and approve the 3rd party app. What am I missing?

Changes to FriendFeed Python Library for use with App Engine

Filed Under (Python) by adam on 22-07-2008

UPDATE: you should definitely go with Benjamin Golub’s Python FriendFeed library for App Engine (fftogo). It is cleaner than mine and includes some undocumented API calls (like fetch_entry).

I had to make some minor modifications to the FriendFeed python library to get it to work with Google App Engine. App Engine does not support out urllib2, and has its own urlfetch library.

Here is the cut and paste-able code (see also pastie, I’m having trouble with code formatting in Wordpress)

# original (FriendFeed.py 0.9)
def _fetch(self, uri, post_args, **url_args):
    url_args["format"] = "json"
    args = urllib.urlencode(url_args)
    url = "http://friendfeed.com" + uri + "?" + args
    if post_args is not None:
        request = urllib2.Request(url, urllib.urlencode(post_args))
    else:
        request = urllib2.Request(url)
    if self.auth_nickname and self.auth_key:
        pair = "%s:%s" % (self.auth_nickname, self.auth_key)
        token = base64.b64encode(pair)
        request.add_header("Authorization", "Basic %s" % token)
    stream = urllib2.urlopen(request)
    data = stream.read()
    stream.close()
    return parse_json(data)
# modified
def _fetch(self, uri, post_args, **url_args):
    url_args["format"] = "json"
    args = urllib.urlencode(url_args)
    url = "http://friendfeed.com" + uri + "?" + args
    headers = {}
    if post_args is not None:
        post_data = urllib.urlencode(post_args)
        method = "POST"
        headers={'Content-Type': 'application/x-www-form-urlencoded'}
    else:
        post_data = None
        method = "GET"

    if self.auth_nickname and self.auth_key:
        pair = "%s:%s" % (self.auth_nickname, self.auth_key)
        token = base64.b64encode(pair)
        headers["Authorization"] = "Basic %s" % token

    result = urlfetch.fetch(url=url, payload=post_data, method=method, headers=headers)
    data = result.content

    self.result = result
    self.feed_json = data

    return parse_json(data)

Special character hacks for Gmail addresses

Filed Under (Troubleshooting) by adam on 22-07-2008

Tagged Under : , , ,

New Tricks album coverImage via Wikipedia

Yesterday, my co-worker Matt told me about some Gmail tricks I hadn’t heard of. Well, one is a trick, and one is just “nice to know”.

Gmail will ignore (some, all?) punctuation in email addresses. So bob.smith@gmail.com is the same as bobsmith@gmail.com. (That’s the nice to know part).

Furthermore, text after a plus sign is ingored. So, when you sign up for a new service, you can use a unique email address. You could sign up for amazon.com using bobsmith+amazon.com. All your mail will be routed to the same place, but you can block certain services and track who gives your email to spammers.

Zemanta Pixie

Addicted to FriendFeed? Try StumbleRead.

Filed Under (Uncategorized) by adam on 22-07-2008

Tagged Under : ,

FriendFeed's homepageImage via Wikipedia

I got hooked on FriendFeed and wanted to create a different Web based interface. I wanted to be able to scan through several posts, open their links automatically, comment and “like” quickly, and have the list auto-update to show new posts. For some reason, I haven’t found a desktop client that I like (I tried Twhirl and AlertThingy). The clients are a pretty efficient way to comment (if you can find the right button), but I find notifications too disruptive, and neither client auto-opens links.

So, I created StumbleRead. Give it a try, and let me know what you think by commenting on this post (or below). Also, make sure you catch the hotkeys.

Disclaimer: Works best in Firefox, lightly tested in IE 7 and Safari.

Zemanta Pixie

StumbleRead hotkeys

Filed Under (Uncategorized) by adam on 22-07-2008

Here are the shortcut keys for StumbleRead, any suggestions for others?

P, ←, ↑ Previous
N, →, ↓ Next
T Top
B Bottom (also loads next page)
S Share
C Comment
L Like

I was thinking I may need to create left hand versions of Next and Previous (so righties don’t have to take their hand off the mouse).