Planet Jeffro

Product Owner for Grockit (a Kaplan company).
Email me at jeffnovich [] gmail

Companies/Products I created:
Patient Communicator | half patient portal half CRM for doctors (was part of the Blueprint Health accelerator)
Poachbase | find talent at floundering startups
Fare/Share | iOS app for sharing taxis
VocabSushi | learn vocab from news
Cnvrge | meet people via SMS
Supermarket Classroom | teach your child while shopping | foursquare for the 99% | online SAT prep
Recent Tweets @jeffnovich
Posts I Like
Who I Follow
Posts tagged "Uniform Resource Locator"

Image representing Meetup as depicted in Crunc...
Image via CrunchBase

So I just spent a large chunk of the day trying to port my perl script to PHP. It wasn’t as easy as I had hoped and I learned a lot of stuff I didn’t really want to know or care about.

I got it pretty far - via the web, it was able to take a person’s name, query google for the person’s LI profile page, then log in to LinkedIn as me and look at their LI page, and extract out all the names of our mutual connections.  Not bad.

I thought I’d be able to knock out a simple page that just took:

LI username:

LI password:

Meetup URL or Textbox list of people:

Then you click submit and it spools a background process and spits out all the relevant stuff + sends you an email.  Yeah, not so simple!

My friend Hoffrocket suggested making it a bookmarklet and utilize the REST APIs for LI and Meetup.  That’s not quite as easy for me as a Perl script but it’s a lot more obvious and will be more logical.

More to come on that front.

Meanwhile, I ran my script against this HUGE rooftop event Monday night.

  • I’m 1st degree with people (out of 196)
  • 2nd degree with a whopping 81 people!
  • Avg # of connections is 7.3, median is 4
  • Charlie O’Donnell, the legend, leads the group with 51 shared connections w me.  I think it’s about time I meet him!
  • I actually sorted through the spreadsheet of results and quickly tweeted and emailed with a bunch of people I thought were particularly interesting.

It’d be really neat to automate the logistics of this.  So, as I said previously, this event *could* be as efficient/valuable as having the equivalent of 10 coffee meetings.  As long as I play my cards right and do the prep work necessary and try to connect before the event. 

But I’m thinking it would be neat to have a third party app automagically link up participants into an automated speed-networking event.  (And you know how much I love speed networking!)  Could be Cnvrge version 2.0, actually…  By god I think I’m on to something!

In fact, that could be the way Cnvrge is “prepped”.  You OAuth your LinkedIn profile and Meetup and it provides a list of the people you need to meet (complete with 1 click follow and LinkedIn profiles).  You’ll be able to tick off anyone you aren’t really interested in.

Then at the event you’ll already have the “right” people loaded into the list. Cnvrge will intelligently match everyone up for speed-networking, and with each round prompt you with specifics about why you are being connected.


Enhanced by Zemanta

Image representing LinkedIn as depicted in Cru...
Image via CrunchBase

The Problem:

I go to a lot of Meetups and other events (tech, networking, etc) so I always check the RSVP list beforehand to get a sense of who’s going.  In fact, I often will decide whether or not to go based on who I know.  For example, if I see a few tech folks who I haven’t keep up with or emailed recently, I love using these events as a way to quickly catch up with a group of people.

Regardless, I desperately want to know who I am 2nd degree friends with on LinkedIn so I can shoot an email or tweet and plan on connecting at the event.  I consider these kinds of events to be sort of like coffee meetings on steroids - a chance to have meaningful face-to-faces with a bunch of people without all the annoying planning that tends to go along with setting up simple Skype calls or a coffee meeting.  The trick is to know who’s going.

Also, events cost money, like this Tech Cocktail Mixer at GA for $15, which does sound awesome but would be more awesome if I had a few connections before showing up.

The Solution:

There are awesome companies trying to solve this and show you who you’re connected to and through which people.  My favorite is, and not just because I know Brett, the founder.  It’s my go to app when I’m out and about and curious who’s around me.  But there are some big limitations:

  1. People at the event need to be checked in (on 4square, Sonar, whatever).  Face it, you know only 5% of people at any event are checked in on 4square.  Even at General Assembly at the start of Startup Weekend, there were only 40 people checked in (which is a whopping number) out of the 150-200(?) attendees - and that’s the most tech-centric crowd in the most tech-savvy space during a tech event.  So I’m interested in capturing that other 90+% of people who have check-in fatigue or forget or don’t care and, frankly, have “pre-checked-in” via a simple RSVP.
  2. Facebook and Twitter aren’t networks I use for networking.  Linked In is. Brett says Linked In integration is on its way (which will really make Sonar shine for me), but in the meantime…

My Hack:

So I spent yesterday hacking together my most useful script(s) ever.  I’ll walk through two situations.

Eventbrite connections:

Start with a normal eventbrite page. It lists a name, company and maybe URL.  Great, but mostly worthless since, at the very least, it’s a lot of work to scroll through names and judge if I know anyone.  Worse to impossible to look people up in Linkedin and see who they are.

This is exactly what my script does.  It runs off of a simple text file (just cut and paste the eventbrite RSVP list, mainly because EB uses javascript that makes it hard to easily “get” the HTML) that looks like this:

Eli Greif, Landmark Ventures
Michael Levine, Ad Tech Startup
Preetham Hegde, City of New York
Simone Grant, Morgan Museum

It goes through each name + company (and here’s the cool part) exploits Google to figure out the LinkedIn direct URL.  It’s a combination of syntax:

"$fname $lname $co $city linkedin"

Bill Johnson Microsoft new york linkedin

This is surprisingly accurate, but sometimes has people who aren’t quite right.  So it looks at the LI profile and builds a confidence score based on criteria such as:

+1 if any of the company words are present

+1 if the person’s first name is in the profile/URL

+2 if the person’s last name is in the profile/URL

+5 if the person’s full name/full company name is in the profile

It turns out this isn’t all that necessary, but it’s pretty accurate. (I used this to track down LI urls for the leaked SXSW participant list of 25,000 people that just had names and companies as well.)

Next, it logs into LinkedIn (with my username/password) using Perl’s Mechanize library and looks at the profile page.  Now it displays if you are 1st, 2nd or 3rd degree and who you have in common.

2nd degree is the most interesting, and it pulls a list of the people between you and the random person.  I won’t publish my list for the Tech Cocktail Mixer, but here are some interesting stats:

  • I found 16 people out of 59 RSVPs with whom I share connections
  • (I do have ~800+ connections on LI, so keep that in mind)
  • The most connections I share with one person is 45 / The least is, of course, 1
  • Median is 2 / Mean is 7
  • There are a lot of “usual suspects” as my shared connections, but there are a bunch of shared connections who show up less frequently.  I think those people may be more interesting to get intros through, just because they are uncommon in the NY tech circles.

The Meetup Hack:

I love meetup.  It’s how I got into the NY tech community and how I met most of the techies I know.  But the RSVP list could use some improvements. Upon first glance, it’s just a long, long list of names and pictures.  That’s cool, but as soon as I want more info I have to start mousing over and clicking on each person - a big pain.

My script takes a meetup event URL, like the one for the upcoming Lean Startup talk (100 ppl going with 100+ on the waiting list!):

It then loops through each person’s name, looks at their profile to see if they have a LI url already entered (most don’t), and if not, uses the Google search algorithm.

These stats are more interesting:

  • Out of 102 attendees:
  • I have 1st connections / 43 2nd degree connections (!)
  • Median = 3 / Mean = 5.5
  • There are 7 people with > 10 connections in common. I should probably connect with them first.
  • Out of my 242 shared connections (with those 43 attendees), there are 107 unique people in my network who are the connectors (it would be interesting to tally and slice that data in different ways)


Unfortunately, this script is in Perl and requires a username and password for LinkedIn, so it’s not exactly production ready.  But I think I could package and export it as an executable that would be run from the command line with arguments like “linked.exe password” though I’m not sure that’s a great idea.

I’d love to make this into a regular website that lets you OAuth your LI account and plug in a URL of eventbrite or meetup and it emails you a nice html email with links and lists of connections, etc.  Anyone want to help?

I do know this *probably* violates some annoying policies but it’s just for educational purposes.  I’m not sure how one would get around the problem of having one IP hit the LI servers 100+ times without getting booted.  I’ve factored in a lot of “sleep” commands to slow things down and hope they don’t notice. (It’s exceptionally easy to get noticed by Google when you let requests run in real-time.)

Next steps:

I can immediately think of some awesome next features to add:

  • So now I have a filtered list of event attendees I’m connected to and a list of those shared connections.  I can add a 1-click intro+LI connection that says via LI (if you have an email, which is a big if) or via twitter:

"Hi Bill, Looks like you’re going to event XYZ on Tuesday. We have x shared LI connections including Jane, Sally and Bob. Looking forward to connecting"

  • I am a member of 40 Meetup groups. Of the umpteen going on this week, I’d love to know the ONE I absolutely must attend because it has the most 2nd degree people.
  • One feature I’ve asked of is the ability to “turn off” certain connections.  So a tech VC I might have met a few times might have 2,000 connections and literally be the super-super-duper-steroid connector.  I’d like to ignore his connections though because unless I am personally connected to him strongly, that connection probably isn’t very helpful.  (I’m not going to ask 1 person for 13 introductions!)  I call this the Charlie Sheen effect on Sonar - Sheen single-handedly connects me to someone every time I open Sonar. Amusing, but not helpful ;-)


Enhanced by Zemanta

I was looking for a way to have Perl automatically tweet stuff out for me (ie, when the VocabBomb word of the day changes or to say who the winner of the day is).

I didn’t have to look very far.  Just register an app with Twitter and get the keys and tokens, and then plug and play:

use Net::Twitter;

my $nt = Net::Twitter->new(
  traits   => [qw/OAuth API::REST/],
  consumer_key        => $consumer_key,
  consumer_secret     => $consumer_secret,
  access_token        => $token,
  access_token_secret => $token_secret,

my $result = $nt->update('Hello, world!');
Enhanced by Zemanta

Image representing YouTube as depicted in Crun...
Image via CrunchBase

This took me some tinkering to find the easiest/best/free apps to do this.  If you find something better, let me know.

  1. Use firefox.  Get the add-on called Download Youtube Videos (nicely named).  I have tried a few others, namely the one called “Youtube to MP3” and they all suck or don’t work.  This gives you 1 click downloading of any youtube video you’re watching as a FLV file.  Really easy stuff.
  2. Grab Freez FLV-MP3 converter.  It’s free.  (FYI, I tried SUPER, a great transcoding program I use a lot for video, and it didn’t like the FLV files.  I also tried Mediacoder, another great transcoder I’ve used, and it barfed too.)
  3. Batch convert. Enjoy.

This is a slightly modified version of Lifehacker’s guide.

Enhanced by Zemanta