Hi - you seem to be new here. If you like what you see, please give back by subscribing to my RSS feed!
You can check me out on Twitter, Facebook, or FriendFeed to see what I'm up to. Thanks for visiting!
I also consult, and am open to full or part-time work. If you are interested, please contact me - check out our services at http://staynalive.com/consulting
If you check out my Twitter Profile, you’ll notice a new, winter-themed, festive Avatar. Yes, it’s animated, and everyone is going to hate me now for revealing how to do this. Check out my post on LouisGray.com to learn how it’s done. Consider it my second gift to you this Christmas!
As the first entry to my Social Coding series I’m going to cover Google’s Social Graph API. I saw a demo of this at Google I/O in San Francisco and was so impressed that I immediately started hacking on it when I got home. Little did I know how powerful this API was and how much information it could pull off the web about a single individual!
Google’s Social Graph API takes a cache of the rich storage of links, information, and URLs on Google’s servers, and determines which of those contain information about actual people. It combines OpenID for confirming an individual’s identity, and XFN and FOAF XML protocols to determine links between those identities. With a simple <link/> tag on a user’s website, a user can determine other websites that also identify them. If you link to one URL identifying that location as you, and at the linked website, it links back to you, Google can tell for sure both of those websites are yours, and identify you as a person. Not only that, but you can similarly provide XFN information or FOAF information via similar <link/> tags or a separately linked file identifying who your friends are. If they link back to you via similar metadata Google can tell for sure that the two of you are friends.
The Social Graph API lives and breaths this data. There are actually quite a few Social networks that use this protocol to identify you and your friends. Sites like Digg, Twitter, and FriendFeed all utilize these protocols to identify your friends. The Google Social Graph API scans this data and organizes it in an easy way for you, as a developer, to access.
Let’s try a simple example, and you don’t even have to be a developer to try it. Google has provided a simple playground to see how the Social Graph API works. If you go to http://socialgraph-resources.googlecode.com/svn/trunk/samples/exploreapi.html, enter in a few URLs of your blogs, social networking profiles, and other identifying locations on the web, leave “Follow ‘me’ Links”, “Pretty Output” checked, and click, “Find connections”. For me, just “twitter.com/jessestay” was all I needed to enter in the textarea.
The resulting structure is organized in a format called JSON - if you’re a Perl developer you might be familiar with this, as it is formatted the same way as a Perl Hash structure. You’ll see under “nodes” a bunch of URLs with different metadata about the URL - these are URLs that Google thinks, based on the metadata in the URL you provided, are you or contain info about you. I’ve found that only those with a “profile” attribute are actual Social Network profiles for yourself, so be sure to pay attention to those.
You can also go back and click “show inbound links” and “show outbound links” - this will then return URLs with links to sites you have identified as yourself, as well as sites you own that claim other sites as identifying for you. Play around with it - there’s a wealth of information it will give you about people!
Now, if you’re not a developer, you can skip over this next section because I’m going to get technical by showing an example. I’m a Perl developer so I’ll show one in Perl.
In Perl it’s simple - you need to install Net::SocialGraph with a command similar to this:
perl -MCPAN -e “install Net::SocialGraph”
Then, a bit of code like this will give you the data you need:
my $sg = Net::SocialGraph->new(’fme’ => 1);
my @urls = ();
push (@urls,’http://twitter.com/jessestay’);
push (@urls,’http://facebook.com/profile.php?id=683545112′);
my $res = $sg->get(@urls);
my @profiles = ();
foreach my $node (keys %{$res->{’nodes’}}) {
if ($res->{’nodes’}->{$node}->{’attributes’}->{’profile’}) {
push (@profiles, $res->{’nodes’}->{$node}->{’attributes’}->{’profile’});
}
}
In the above example I instanciate my $sg object, telling it to follow “me” attributes in the response. I add a couple URLs to identify the individual I want profile information for (in this case, me), and then make the call to the SocialGraph API to go get my info based on those URLs with the “get” method provided by the API. Then, I just traverse the response and I can do whatever I want with it. After this, I could take the response information and list all of the user’s profiles as links, or perhaps I could scan those profiles for more information and provide information about each identified profile. You’ll also note that it’s not always correct so you’ll want to let the user intervene. Also, note I’m looking for only links with a “profile” attribute - I’ve found these to be most accurate.
Beyond that, that’s it. Ideally, you could take the Playground example above and look at the resulting URL. The basics of the Social Graph API are just that URL - plug in whatever you want and you’ll get back whatever information you need. You could then parse it with Javascript, Perl, PHP, or just leave it in the “pretty” format the Playground provides you by default.
Now, imagine taking that data and combining it with, say the Twitter API to pull out all of an individual’s friends on Twitter, then applying the Social Graph API to each of those individuals. Soon, you have a tool which can identify which of a user’s friends are on which networks, and if there are any of your friends you have not yet added on those networks. This API is powerful!
The Social Graph API can be an excellent utility to find out more information about any individual using your applications. No longer do you have to ask the individual for that information - so long as they are active on Web 2.0 that information can be provided for them to choose from!
You can learn more about the Social Graph API here.
Please note I too am new to this API - any inaccuracies in this document please let me know in the comments and I will correct them for others to benefit.
I’ve been contemplating for awhile now a good way to share what I know about Social Software Development and helping business owners, marketers, and developers learn how to set up their own social apps. Especially for developers, I know there are many out there looking for howtos and ways to learn more about starting their own App, promoting it, and getting it off the ground. As the author of FBML Essentials, I feel I am well suited for the task so in the next few days I’m going to start doing howtos and overviews on how you can get your own Apps together. If you’re “the business type”, I may get a little technical on you, but I do recommend you keep watching and forward these onto your IT personell - your CIO, CTO, and the like should read these so they can learn what’s possible to integrate into your existing environments. I’ll also try to throw in a little goodie here and there for “the business type”.
So, I’ve created a new category to the right, “Social Coding” - if you want to track just that, click on the category name and add it to your RSS. I’ve also started a new FriendFeed Room where those involved or that want to get involved in Social Coding can discuss, learn, and talk with each other. You can subscribe to that here.
Let’s start by going over the types of sites I could cover. Here are just a few - let me know if you have a particular interest in learning about how to code for any one in particular:
Facebook
OpenSocial
Google Friend Connect
Twitter
FriendFeed
Pligg
Digg
LinkedIn
MySpace
Wordpress
MoveableType
Google App Engine
Bungee Connect
Stay tuned! I’ll keep posting news and other rants as we go forward - I’ll just be adding in some good howtos at the same time. Oh, and if you’re a developer and would like to do a howto in your preferred language for us, contact me - I’d love to let you do a guest post.
(Sorry it’s been awhile since my last blog - it took me several days to figure out how to get my Flip video imported and exported to and from iMovie. To make a long story short, if you want to export from iMovie and have both picture and sound, you must import your source as something other than MP4 or AVI.)
This is the first article in my “Utah Startup Series“. Starting today I will be circling Utah to find the best and most innovative startups in Utah, and featuring them here on Stay N’ Alive. If you have a hot startup (early to even late stage) and would like to demo for me what your product can do, please contact me - if I have the time and like your idea I’d love to come out and take a look at it!
While at Web 2.0 Expo I had the opportunity to meet with Bungee Labs, a local, well funded Utah company who had “Platform as a Service” down before Google even started thinking about their App Engine. In our meeting they demoed their Bungee Connect “IDE” (written entirely on the web). You can see the video below.
My thoughts - you have to see this stuff in person to understand the full ramifications of what they’re doing. One of the cool things about their service vs. Google’s is they actually integrate with Amazon’s EC2 service (which was announced during Web 2.0 Expo), so you can actually host your other stuff on Amazon’s EC2 platform with the same licensing as your Bungee Connect account. Their licensing structure is very appealing as well - Bungee only charges based on the number of registered user sessions using their platform, not traffic, not bandwidth. If I understand correctly, it’s all based on the number of users actively using your application on their platform. For Facebook and Social Media developers this is appealing, as most Applications are rated based on Application use, not number of users or traffic. With Bungee you only pay for the users that actively use your system.
Overall, the guys at Bungee were Rockstars at Web 2.0 Expo. With their announcements about EC2 integration, flexible licensing terms, features on TechCrunch, EWeek magazine, and a dozen other publications, you can bet Google has a watchful eye on them. Ironically, it was interesting seeing Kevin Marx, head guy over the OpenSocial (and other) efforts at their party on Thursday evening.
Bungee will be presenting at our Social Media Developers meeting this coming Tuesday, showing us a simple “Hello World” example on how to build a Facebook App using their platform. Follow me on Twitter and if we can stream it live you can watch it via my Ustream channel. After demo I may just write my own Facebook App to try out their system - it should be interesting.
I’ve been analyzing various Social Applications Analytics tools lately, and have recently stumbled upon Sometrics. Sometrics handles full Analytics for your Facebook, Bebo, and MySpace applications, and will actually utilize the Facebook API to retrieve demographic info about those visiting your Application. As I examine the other Analytics solutions for Facebook and other Social Network Applications, I’ll try to post my findings of their strengths and weaknesses here, OpenSocialNow, and FacebookAdvice.com. If you’re not a techie, you may want to skip the next part, or forward it onto your IT department.
One thing I noticed about Sometrics is it seems to only provide code to paste on your Application pages for PHP, Ruby, and ASP.net. The code they provide is relatively simple, but in case you’re wondering how to do it in Perl, here is how I did it in Template Toolkit under Catalyst on Perl:
Enter this on all Application pages (I do it in my “footer” file):
On FacebookAdvice.com I am starting a new series on “What You get From Facebook Pages”. Over the next week or so I’ll cover several topics on how you can best optimize Facebook Pages for your business. In the first article I’m covering the default widgets and applications that are installed when you set up a Facebook Page. Read more about it here.
Need some help getting a Facebook Page set up for your Organization? I do consulting! Contact me at jesse at staynalive dot com and I’ll get you setup with a plan on how you can utilize Facebook to bring your company more customers.
I get e-mails very regularly from recruiters asking for either a referral or for me to work for their client. Most, if not all, come to me in the form of a generic e-mail, very little personalization, and obviously no care for me as a developer. Here’s one I received today, and my response - it’s my hope that recruiters, which since they generally don’t Google us developers beforehand so probably aren’t reading this, will take this advice to heart. They will have much more success by doing so! (BTW, I’m very confused by this - first they say there’s an unemployment low, then they say timeliness is critical because employers grab candidates quickly. If you’re a developer, believe the first one - getting a job should be easy, and the power is in your hands.):
Good Afternoon All,
I’m writing to touch base with each of you, regarding your present employment situation. The unemployment low has continued in Utah and has created a tremendous need for talented IT Professionals across the state of Utah.
We current have open opportunities for .Net and Java developers, in addition to Technical Project Manager and Business Analysts. If you are presently looking or know anyone that might be, please contact me directly.
In this market timeliness has become critical, some employers are hiring very quickly to grab the best candidates available. If you have thought at all of looking, don’t delay, get in touch with me today.
All the best,
And my response:
First of all, I’m an individual, not an “all”. Secondly, I strongly suggest Googling the names of those you contact, get to know them, and approach them only if first, they fit the description, and second, you can personalize with them a little. I talk to developers on a daily basis, and they hate recruiters because of this. You will get much better response by doing so.
Without Googling me beforehand, I will respond with the above every time - please do your research before contacting me!
For the non-tech-heads visiting my blog you can probably ignore this one, although it might provide some useful insight if you’re having issues with upgrading to Vista SP1. I have had the biggest headache recently trying to get Vista Service Pack 1 installed on my Windows Vista Ultimate, 64-bit Edition PC. The new Vista SP1 is stated to have many bug improvements, and since Hulu would occasionally crash my machine during my wife’s viewing of old “Major Dad” episodes (yes, they even have that on there!), I finally got fed up with it.
The problem with Vista SP1 is if for some reason you thought you needed every single update out there and installed all the language packs (I actually do have a fascination with foreign languages), SP1 refuses to install, and won’t even show up in your list of automatic updates to install under Windows Update. So, I figured, why not just remove them? Well, it appears that that, too seems to be a bug in Vista. Despite the fact that it would take 30 minutes each (at least) to remove each language pack, eventually, I started getting errors on the last few language packs I was trying to install. Vista was fighting back with me, avoiding with a vengeance not to be upgraded.
So I searched all around the internet trying to find a solution - I wanted to fix all these bugs, but the bugs were keeping me from upgrading Vista to fix the bugs that were preventing the upgrade! (Makes perfect sense, doesn’t it?) After a week of waiting for things to be resolved in various threads on Google with people that were experiencing the same issue, I came across this forum post from Saad Siddiqui on this thread on VistaHeads:
There is a workaround but it requires dealing with the registery so backup registery first.
1. press Windows Logo Key + R to open Run Dialog
2. Type regedit
3. Navigate to HKEY_LOCAL_MACHEINE\SYSTEM\CONTROSET001\MUI
there will be an entry for romanian language DELETE it. [for english the key is "en-US" in the navigation tree].
Repeat step three for
HKEY_LOCAL_MACHEINE\SYSTEM\CONTROSET003\MUI
this will make SP1 installer to see only English Language there.
hence it will continue installation.
and
HKEY_LOCAL_MACHEINE\SYSTEM\CURRENTCONTROSET\MUI
It was corrected that instead of HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET001 it was really HKLM\SYSTEM\CONTROLSET001\Control\MUI\UILanguages, repeated for CONTROLSET003 and CURRENTCONTROLSET. Backup your registry first!!!
I tried this, removed all languages except US from the listed languages under my registry, and voila - all of the sudden Vista SP1 was appearing in my list of Automatic Updates! I installed it, and now my wife can watch her “Major Dad” episodes on Hulu just fine. It should be noted that even the Microsoft employee in that thread was unable to diagnose this.
So if you’re looking for a quick shortcut to get rid of all the pesky language packs so you can install Vista SP1, hopefully this provides a solution that works for you. Good luck!
The post is about 10 things you didn’t know about Facebook - these are all excerpts that you can find bits and pieces about in “I’m On Facebook–Now What???“, with a few additions. I’m really glad Guy put me to task to put this list together. Be sure to purchase one of his books as well!
The story behind this post is both Guy Kawasaki and Chris Pirillo were looking for a way to automatically follow those that follow them on Twitter, so they could better communicate with their fan-base. I decided to take this as an opportunity (as I wanted the same feature for myself), and wrote http://socialtoo.com to do just that for them. They both signed up (see Chris Pirillo’s post here - he mistakingly thought I worked for Twitter), and Guy Kawasaki generously offered to promote the book Jason Alba and I wrote, “I’m On Facebook–Now What???” via his blog. The funny thing is I was actually able to use Guy’s, “I know you would do the same for me…” as Guy thanked me for helping him out.
After my experience with Guy I respect him even more. Without my asking he offered to help me out - this is now my new mantra. When you do good things for others, looking for their needs, in my opinion, regardless of pay it always comes back to you. I will be devoting my time on Sundays to help out charitable causes such as Takes All Types (recently featured here and here), not necessarily because I’m expecting anything out of it, but because I know it helps other people, and just knowingly that always comes around for good on your behalf in the end. Thank you Guy for your sincere promotion of my book in your article!
If you’re looking for Facebook consulting, or have an external application outside, or inside a social network you would like to consider including as part of SocialOptimize’s community of Social Applications, please contact me at the links on the right - I promise I will get back to you!
Facebook seems to have been on a role lately in adding new FBML tags. They are certainly keeping me busy while I finish up the final phases of “FBML Essentials“. Ironically in short duration after I posted my Spam 2.0 article, Facebook seems, based on a new post to the developers wiki, to be providing a new way to combat your Application from being maliciously used by adding the ability to add “Captchas”, or graphics with manipulated text in them to re-enter in a text box provided in the captcha. These Captchas traditionally are ways to ensure only real humans are using your software.
What is interesting is normally you would think having a Facebook profile would be enough to prove it is a real human using the Application. Within the application a developer in normal FBML can always check to see that it is a logged-in Facebook user using the application, or someone accessing the application in an unauthenticated state. Facebook is going one step further with this however - there’s nothing stopping a Facebook account from being hijacked as we mentioned earlier, and using that account to run a malicious Facebook app for a day or two before Facebook catches it and either steal your data or Spam other users. That’s what I’m assuming the launch of this tag is for.
The tag works like this - it is to be contained in any <form/> tagset, and can contain one optional attribute, “showall” which allows you to always display the captcha on the App regardless if they passed the captcha before or not, or only display it to those that have not yet been verified. The code would look like this (from the developers wiki):
Upon submit, the user would be taken back to the callback url for your application, and the additional parameter, “fb_sig_captcha_grade=1″ will be passed to your application assuming the user passed the Captcha. If they did not pass, it will be set to 0. The end result captcha when render seems to look like any other captcha box on Facebook, which it seems they are using the Recaptcha format which gives back to Archive.org’s book transcription and archiving project. So regardless of whether you really need a captcha or not, you can be comfortable your app is giving back to a good cause. The captcha looks like this (also from the Facebook developer’s wiki):
StayNAlive.com is the brainchild of Jesse Stay, The "Social" Geek, two-time book author, speaker, and social media expert. With StayNAlive.com, Jesse's goal to provide you with valuable content, share information in his life, and provide a virtual brain dump for him to share with you his knowledge on Social Media, technology, new media, and the occasional rant.
About Jesse Stay
Jesse consults with his business, Stay N' Alive Productions, LLC, and runs a social relationship management company called SocialToo.com. Jesse is one of the pioneers of the Social Media, Facebook, and Twitter Software space. Please Contact him or follow him on Twitter, FriendFeed, or Facebook to schedule his services! Learn more about Jesse and Stay N' Alive Productions on LinkedIn.