We are living through the period of the most fundamental transformation of the web. This blog is my attempt to look what is coming next (and with) social web, social graph, and unified semantic schema.

Twitter

Follow leybzon on Twitter

Sunday, April 22, 2012

Sport of Software Development, notes from the Google TV Hackathon

You may wonder what brings people together to work all weekend (nights included) writing code instead of spending time outside on these beautiful weekend? Do they have nothing else to do? Are they here for prize money or junk food? Any logic it it?

 I think that the answer is outside of logic - people get together to Google for the emotional experience, dream of building next Google, experience of been around  people like themselves. In my opinion, this is exactly what brings people to sport competition and this is yet another invention of Silicon Valley - making a sport out of software development. Looking forward for the time when it becomes part of Olympics and having people watching the competition (on Google TV?) voting for the wining team.


Thursday, September 15, 2011

Vampire post-mortum on how to create TV-scale applications

Had fine time yesterday watching MTV's Deadliest Warrior on big TV screen and Loyalize's servers on my laptop screen crunching numbers from users' vote during the show. Personally, I have more passion for software then for Zombies or Vampires, so I found it to be much more fun watching my laptop screen then TV. What struck me is that just a few years back, numbers that I saw on my laptop will be if not impossible but extremely difficult to achieve. So, I am glad to report, that common (open source) technology is finally is at the level that it allows a relatively small team of good engineers to write an application that works for TV-audience scale.

What worked for us is the combination of:

Of cause, it's a lot of work to make them work together in scalable and reliable fashion but, at least, finally, we do not need to mix sand and clay to make bricks first if we want to build a house - all bricks are are readily available for download.

Tuesday, January 25, 2011

Amazon Simple Email Service (Amazon SES) and PHP

This morning Amazon announced availability of a bulk email delivery service called "Simple Email Service". Anyone who knows how much pain is it to set-up scalable email solution (and it is not just spammers who need it!) should celebrate the occasion. I know of a company that spent several years cleaning ip addresses it sends email and found itself locked into the contract with internet provider since it would take forever to reach required level of email deliver ability anywhere else.

Anyway, this evening I decided to check the Amazon claim that the service is "simple". Found out that it is indeed simple!
Since there is not much in terms of the documentation yet, here is my code where I used AWS PHP library:

// Enable full-blown error reporting. http://twitter.com/rasmus/status/7448448829
error_reporting(-1);

// Set plain text headers
header("Content-type: text/plain; charset=utf-8");

// Include the SDK
require_once '../sdk.class.php';


// Instantiate the Amazon class
$ses = new AmazonSES();

//what's our quota?
$rQuota = $ses->get_send_quota();
$quota24 = (int) $rQuota->body->GetSendQuotaResult->Max24HourSend;
$sentCnt = (int) $rQuota->body->GetSendQuotaResult->SentLast24Hours;
echo(
"we can send max of $quota24 per 24 hrs and we sent $sentCnt so far\n");

//verify sender email (do it once per sender!)
//$ses->verify_email_address('dispose@gmail.com');
//print_r($ses->list_verified_email_addresses());


//send email
$source = 'dispose@gmail.com';
$destination = CFComplexType::map(array('ToAddresses'=>'x@gmail.com', 'CcAddresses'=>'x@hotmail.com'));

$message = CFComplexType::map(array('Subject.Data'->'test email', 'Body.Text.Data'->'test message ' . rand(100, 1000)));
$rSendEmail = $ses->send_email($source, $destination, $message);

if (
$rSendEmail->status==200) {
$emailId = $rSendEmail->body->SendEmailResult->MessageId;
echo(
"sent test email with id: $emailId\n");
}
else {
print_r($rSendEmail);
}


Thursday, May 6, 2010

Lessons from Social Gaming Summit

Many good presentations here. Two that are stand out of the crowd are from MyYearBook and Kontagent.

MyYearBook Ideas

  1. Games Should Advance What Site is About
  2. Play games within streamOpening doors for 3-rd party developers
  3. Anyway games are popular for 6-8 mth except “platform” games
  4. Game promotionViral channels “promotions”, a way to present apps:
  • Bulletin board
  • In-stream games
  • Action Items (below user profile picture)
  • Notifications
  • Profile Box (badges, etc)
Metrics for Social Games (presentation from Kontagent)
Trend Observation: From Viral Analytics early on to User Lifetime Value vs External User acquisition so Retaining engagement is important!

Key matrix to use these days for social apps:
1. Entry event distribution (why and how users get back to the system). More ways to incentivize entries
2. # Outbound messages/Users
3. Viral messages/Conversion (clicks per post)
4. Virality (K-factor) on FB it’s max at ~.5 these days
5. Engagement (time on site, #times user play, #user actions)
6. Exit event distribution (mindset of user when they leave app, indicate potential problems)
7. Retention (revisit rate), measure of engagement. %% users come back in week-by-week bases 8. Lifetime network value revenue_per_user/(1-K)
9. Conversion to Paying Users
10. Avg revenue per Paying User




My Side Note: Advertising should be used for acceleration of successes and should feed from analytics. If detected that app is doing particalually well in some age/gender/area/channel – ads should be (auto) targeted to this area.

Friday, April 23, 2010

Posting to FaceBook feed using Graph API

Graph API was announced at F8 with a promise to dramatically simplify the FB API.
I checked the read access over the new interface during the presentations and to my big surprise it worked flawlessly and from the first time.
When I tried https://graph.facebook.com/facebook, JSON-formatted info about the FaceBook page was returned (as expected).

Then I tried OAuth 2.0 way of accessing the API to post a message to the feed.
And to my even bigger surprise it worked too!

Here is what you need to do to access Graph API over OAuth:
1. Create a FB app, store app properties to a file:

  1. $appkey = '7925873fbfb5347e571744515a9d2804';
  2. $appsecret = 'THE SECRET';
  3. $canvas = 'http://apps.facebook.com/graphapi/';
2. Create a page that will prompt user the access permission (I am prompting for the publish_stream and offline_access permissions at the same time)

  1. //http://apps.facebook.com/graphapi/
  2. require 'settings.php';

  3. $url = "https://graph.facebook.com/oauth/authorize?";
  4. $url .= "client_id=$appid&";
  5. $url .= "redirect_uri=$canvas/callback.php&";
  6. $url .= "scope=publish_stream,offline_access";
  7. $url .= "&type=user_agent&display=popup";

  8. echo("$url");



3. Create a page to handle OAuth call-back with token and do the feed post:

  1. require 'settings.php';

  2. function
    callFb($url, $params) {
  3. $ch = curl_init();
  4. CURLOPT_URL => $url,
  5. CURLOPT_POSTFIELDS => http_build_query($params),
  6. CURLOPT_RETURNTRANSFER => true,
  7. CURLOPT_VERBOSE => true
  8. ));
  9. $result = curl_exec($ch);
  10. curl_close($ch);
  11. return $result;
  12. }

  13. $token = $_REQUEST['access_token'];

  14. $hello = "Hello from Graph API";
  15. $params=array('access_token'=>$token, 'message'=>$hello);
  16. $url = "https://graph.facebook.com/me/feed";
  17. callFb($url, $params);
P.S.


Important! Do not forget to select "new SDK" on the application settings page (I think that Facebook documentation fails to mention that)

Wednesday, April 21, 2010

“Default is social”, notes from the f8, FaceBook conference

Policy changes:

  • Single permissions dialog
  • Data retention policy changes


Platform changes:

1. Social Plug-ins (tested on this blog)

o a way to provide personalized experience with “Like” button in the core, work on any site
o works via iframe, single line of HTML code
o activity stream plug-in (newsfeed filtered for events only related to the site)
o recommendations plug-in, personalized recommendation experience for users about any product or service
o log-in plug-in that shows friends who are already there
o FB chat plug-in
o “Like” button in the center with hope to serve 1 Billion “likes” within 24 hrs after roll-out


2. Open Graph protocol

o Semantic markers (my understanding is that is another name for microformats)
o Design to represent any object on the web – books, celebrates, movies, etc
o Objects has the same properties as FB pages


3. Graph API

o Complete re-architecture of current platform/API/SDK
o No need for SDK code
o Graph.facebook.com/ID/connection_name – is a universal way to access/search for objects, people, or connections
o RealTime callbacks (WOW! Finally! App will be notified what users do/change/ when they do that)
o OAUTH (2.0) (like it!)


Sunday, March 7, 2010

What is more expensive than Gold?

After a trip to a local pharmacy, and a sticker shock from one of the prescribed medications (one that treats pimples), I decided to cool myself with bit with arithmetic.
  1. Retail price for the medication (30x 115mg tablets of Solodyn) is $700.99
  2. Current price of gold is $1134 per ounce
Question: What is more expensive, Gold, or medication for treating pimples?

Solution:
  • $1134 x 1 ounce/31.10 grams = $36.46 is the price per gram of Gold
  • $700.99/(30*.115)=$203.18 is the price per gram of Solodyn
Conclusion: Solodin is more than 5 times more expensive!

Observation: No point of Gold prospecting these days. Just find a deposit of Solodyn!