Profilo di ambatiProgramming Myself.. Amb...FotoBlogElenchiAltro Strumenti Guida

Blog


30 aprile

Youtube.aspx: Autoplaying capability

2nd Project

Youtube.aspx: Having only Autoplaying capability


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="YouTube.aspx.cs" Inherits="MuteOff_YouTube" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Querying YouTube using C#</title>
    <script type="text/javascript">
   function onYouTubePlayerReady(playerId) {
      alert("hi");
    }

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Enter search
        <asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>
        <asp:Button ID="btoSearch" runat="server" OnClick="btoSearch_Click" Text="Search" /><br />
        <br />
        <asp:Label ID="lblResults" runat="server" Text="Label" Visible="false"></asp:Label></div>
    </form>
</body>
</html>

Its code behind:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Google.GData.Client;
using Google.GData.Extensions;

public partial class MuteOff_YouTube : System.Web.UI.Page
{
    /// <summary>
    /// Create and returns and Google.GData.Client.AtomFee from url with the specific start and number of items
    /// </summary>
    /// <param name="url"></param>
    /// <param name="start"></param>
    /// <param name="number"></param>
    /// <returns></returns>
    private static AtomFeed GetFeed(string url, int start, int number)
    {
        System.Diagnostics.Trace.Write("Conectando youtube at " + url);
        FeedQuery query = new FeedQuery("");
        Service service = new Service("youtube", "exampleCo");
        query.Uri = new Uri(url);
        query.StartIndex = start;
        query.NumberToRetrieve = number;
        AtomFeed myFeed = service.Query(query);
        return myFeed;
    }

    /// <summary>
    /// Gets html code to display video
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    private string RenderVideoEmbedded(string id)
    {
        return string.Format("<div id=\"video{0}\"><object width=\"425\" height=\"355\" id=\"srdee\"><param name=\"movie\" value=\"http://www.youtube.com/v/{0}&rel=1&enablejsapi=1&playerapiid=srdee\"></param><param name=\"wmode\" value=\"true\"></param><param name=\"allowScriptAccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/{0}&rel=1&autoplay=1&enablejsapi=1&playerapiid=srdee\" type=\"application/x-shockwave-flash\" wmode=\"true\" width=\"425\" height=\"355\"></embed></object></div>", id);
    }

    /// <summary>
    /// Converts URL ID to short one
    /// </summary>
    /// <param name="googleID"></param>
    /// <returns></returns>
    private string getIDSimple(string googleID)
    {
        int lastSlash = googleID.LastIndexOf("/");
        return googleID.Substring(lastSlash + 1);
    }

    /// <summary>
    /// Renders feed in example aspx page
    /// </summary>
    /// <param name="myFeed"></param>
    private void DisplayFeed(AtomFeed myFeed)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        foreach (AtomEntry entry in myFeed.Entries)
        {
            #region render each
            sb.Append("<br /><b>Title:</b> ");
            sb.Append(entry.Title.Text);
            sb.Append("<br /><b>Categories:</b> ");
            foreach (AtomCategory cat in entry.Categories)
            {
                sb.Append(cat.Term);
                sb.Append(",");
            }
            sb.Append(RenderVideoEmbedded(getIDSimple(entry.Id.AbsoluteUri)));
            sb.Append("<br /><b>Published on:</b> ");
            sb.Append(entry.Published);
            #endregion
        }
        this.lblResults.Visible = true;
        this.lblResults.Text = sb.ToString();
    }

    //by search
    //feel free to change number of items, by there is a limit of 50, I believe.
    //If you want to retreive more, you have to do a loop (retrieve 1-50, then 51 to 100, etc)
    protected void btoSearch_Click(object sender, EventArgs e)
    {
        string url = "http://gdata.youtube.com/feeds/videos?q=" + this.txtSearch.Text;
        AtomFeed myFeed = GetFeed(url, 1, 1);
        DisplayFeed(myFeed);
    }

}

 

Youtube Mute Autoplay

First project: having mute ,autoplaying functionality


Required two dlls:
Google.GData.Client.dll
Google.GData.Extensions.dll

For Mute functionality u require this js file

Required js file: (for mute functionality  http://code.google.com/apis/youtube/js_api_reference.html)
 swfobject.js
code of this :
var swfobject=function(){var Z="undefined",P="object",B="Shockwave Flash",h="ShockwaveFlash.ShockwaveFlash",W="application/x-shockwave-flash",K="SWFObjectExprInst",G=window,g=document,N=navigator,f=[],H=[],Q=null,L=null,T=null,S=false,C=false;var a=function(){var l=typeof g.getElementById!=Z&&typeof g.getElementsByTagName!=Z&&typeof g.createElement!=Z&&typeof g.appendChild!=Z&&typeof g.replaceChild!=Z&&typeof g.removeChild!=Z&&typeof g.cloneNode!=Z,t=[0,0,0],n=null;if(typeof N.plugins!=Z&&typeof N.plugins[B]==P){n=N.plugins[B].description;if(n){n=n.replace(/^.*\s+(\S+\s+\S+$)/,"$1");t[0]=parseInt(n.replace(/^(.*)\..*$/,"$1"),10);t[1]=parseInt(n.replace(/^.*\.(.*)\s.*$/,"$1"),10);t[2]=/r/.test(n)?parseInt(n.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof G.ActiveXObject!=Z){var o=null,s=false;try{o=new ActiveXObject(h+".7")}catch(k){try{o=new ActiveXObject(h+".6");t=[6,0,21];o.AllowScriptAccess="always"}catch(k){if(t[0]==6){s=true}}if(!s){try{o=new ActiveXObject(h)}catch(k){}}}if(!s&&o){try{n=o.GetVariable("$version");if(n){n=n.split(" ")[1].split(",");t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]}}catch(k){}}}}var v=N.userAgent.toLowerCase(),j=N.platform.toLowerCase(),r=/webkit/.test(v)?parseFloat(v.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,i=false,q=j?/win/.test(j):/win/.test(v),m=j?/mac/.test(j):/mac/.test(v);/*@cc_on i=true;@if(@_win32)q=true;@elif(@_mac)m=true;@end@*/return{w3cdom:l,pv:t,webkit:r,ie:i,win:q,mac:m}}();var e=function(){if(!a.w3cdom){return }J(I);if(a.ie&&a.win){try{g.write("<script id=__ie_ondomload defer=true src=//:><\/script>");var i=c("__ie_ondomload");if(i){i.onreadystatechange=function(){if(this.readyState=="complete"){this.parentNode.removeChild(this);V()}}}}catch(j){}}if(a.webkit&&typeof g.readyState!=Z){Q=setInterval(function(){if(/loaded|complete/.test(g.readyState)){V()}},10)}if(typeof g.addEventListener!=Z){g.addEventListener("DOMContentLoaded",V,null)}M(V)}();function V(){if(S){return }if(a.ie&&a.win){var m=Y("span");try{var l=g.getElementsByTagName("body")[0].appendChild(m);l.parentNode.removeChild(l)}catch(n){return }}S=true;if(Q){clearInterval(Q);Q=null}var j=f.length;for(var k=0;k<j;k++){f[k]()}}function J(i){if(S){i()}else{f[f.length]=i}}function M(j){if(typeof G.addEventListener!=Z){G.addEventListener("load",j,false)}else{if(typeof g.addEventListener!=Z){g.addEventListener("load",j,false)}else{if(typeof G.attachEvent!=Z){G.attachEvent("onload",j)}else{if(typeof G.onload=="function"){var i=G.onload;G.onload=function(){i();j()}}else{G.onload=j}}}}}function I(){var l=H.length;for(var j=0;j<l;j++){var m=H[j].id;if(a.pv[0]>0){var k=c(m);if(k){H[j].width=k.getAttribute("width")?k.getAttribute("width"):"0";H[j].height=k.getAttribute("height")?k.getAttribute("height"):"0";if(O(H[j].swfVersion)){if(a.webkit&&a.webkit<312){U(k)}X(m,true)}else{if(H[j].expressInstall&&!C&&O("6.0.65")&&(a.win||a.mac)){D(H[j])}else{d(k)}}}}else{X(m,true)}}}function U(m){var k=m.getElementsByTagName(P)[0];if(k){var p=Y("embed"),r=k.attributes;if(r){var o=r.length;for(var n=0;n<o;n++){if(r[n].nodeName.toLowerCase()=="data"){p.setAttribute("src",r[n].nodeValue)}else{p.setAttribute(r[n].nodeName,r[n].nodeValue)}}}var q=k.childNodes;if(q){var s=q.length;for(var l=0;l<s;l++){if(q[l].nodeType==1&&q[l].nodeName.toLowerCase()=="param"){p.setAttribute(q[l].getAttribute("name"),q[l].getAttribute("value"))}}}m.parentNode.replaceChild(p,m)}}function F(i){if(a.ie&&a.win&&O("8.0.0")){G.attachEvent("onunload",function(){var k=c(i);if(k){for(var j in k){if(typeof k[j]=="function"){k[j]=function(){}}}k.parentNode.removeChild(k)}})}}function D(j){C=true;var o=c(j.id);if(o){if(j.altContentId){var l=c(j.altContentId);if(l){L=l;T=j.altContentId}}else{L=b(o)}if(!(/%$/.test(j.width))&&parseInt(j.width,10)<310){j.width="310"}if(!(/%$/.test(j.height))&&parseInt(j.height,10)<137){j.height="137"}g.title=g.title.slice(0,47)+" - Flash Player Installation";var n=a.ie&&a.win?"ActiveX":"PlugIn",k=g.title,m="MMredirectURL="+G.location+"&MMplayerType="+n+"&MMdoctitle="+k,p=j.id;if(a.ie&&a.win&&o.readyState!=4){var i=Y("div");p+="SWFObjectNew";i.setAttribute("id",p);o.parentNode.insertBefore(i,o);o.style.display="none";G.attachEvent("onload",function(){o.parentNode.removeChild(o)})}R({data:j.expressInstall,id:K,width:j.width,height:j.height},{flashvars:m},p)}}function d(j){if(a.ie&&a.win&&j.readyState!=4){var i=Y("div");j.parentNode.insertBefore(i,j);i.parentNode.replaceChild(b(j),i);j.style.display="none";G.attachEvent("onload",function(){j.parentNode.removeChild(j)})}else{j.parentNode.replaceChild(b(j),j)}}function b(n){var m=Y("div");if(a.win&&a.ie){m.innerHTML=n.innerHTML}else{var k=n.getElementsByTagName(P)[0];if(k){var o=k.childNodes;if(o){var j=o.length;for(var l=0;l<j;l++){if(!(o[l].nodeType==1&&o[l].nodeName.toLowerCase()=="param")&&!(o[l].nodeType==8)){m.appendChild(o[l].cloneNode(true))}}}}}return m}function R(AE,AC,q){var p,t=c(q);if(typeof AE.id==Z){AE.id=q}if(a.ie&&a.win){var AD="";for(var z in AE){if(AE[z]!=Object.prototype[z]){if(z=="data"){AC.movie=AE[z]}else{if(z.toLowerCase()=="styleclass"){AD+=' class="'+AE[z]+'"'}else{if(z!="classid"){AD+=" "+z+'="'+AE[z]+'"'}}}}}var AB="";for(var y in AC){if(AC[y]!=Object.prototype[y]){AB+='<param name="'+y+'" value="'+AC[y]+'" />'}}t.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AD+">"+AB+"</object>";F(AE.id);p=c(AE.id)}else{if(a.webkit&&a.webkit<312){var AA=Y("embed");AA.setAttribute("type",W);for(var x in AE){if(AE[x]!=Object.prototype[x]){if(x=="data"){AA.setAttribute("src",AE[x])}else{if(x.toLowerCase()=="styleclass"){AA.setAttribute("class",AE[x])}else{if(x!="classid"){AA.setAttribute(x,AE[x])}}}}}for(var w in AC){if(AC[w]!=Object.prototype[w]){if(w!="movie"){AA.setAttribute(w,AC[w])}}}t.parentNode.replaceChild(AA,t);p=AA}else{var s=Y(P);s.setAttribute("type",W);for(var v in AE){if(AE[v]!=Object.prototype[v]){if(v.toLowerCase()=="styleclass"){s.setAttribute("class",AE[v])}else{if(v!="classid"){s.setAttribute(v,AE[v])}}}}for(var u in AC){if(AC[u]!=Object.prototype[u]&&u!="movie"){E(s,u,AC[u])}}t.parentNode.replaceChild(s,t);p=s}}return p}function E(k,i,j){var l=Y("param");l.setAttribute("name",i);l.setAttribute("value",j);k.appendChild(l)}function c(i){return g.getElementById(i)}function Y(i){return g.createElement(i)}function O(k){var j=a.pv,i=k.split(".");i[0]=parseInt(i[0],10);i[1]=parseInt(i[1],10);i[2]=parseInt(i[2],10);return(j[0]>i[0]||(j[0]==i[0]&&j[1]>i[1])||(j[0]==i[0]&&j[1]==i[1]&&j[2]>=i[2]))?true:false}function A(m,j){if(a.ie&&a.mac){return }var l=g.getElementsByTagName("head")[0],k=Y("style");k.setAttribute("type","text/css");k.setAttribute("media","screen");if(!(a.ie&&a.win)&&typeof g.createTextNode!=Z){k.appendChild(g.createTextNode(m+" {"+j+"}"))}l.appendChild(k);if(a.ie&&a.win&&typeof g.styleSheets!=Z&&g.styleSheets.length>0){var i=g.styleSheets[g.styleSheets.length-1];if(typeof i.addRule==P){i.addRule(m,j)}}}function X(k,i){var j=i?"visible":"hidden";if(S){c(k).style.visibility=j}else{A("#"+k,"visibility:"+j)}}return{registerObject:function(l,i,k){if(!a.w3cdom||!l||!i){return }var j={};j.id=l;j.swfVersion=i;j.expressInstall=k?k:false;H[H.length]=j;X(l,false)},getObjectById:function(l){var i=null;if(a.w3cdom&&S){var j=c(l);if(j){var k=j.getElementsByTagName(P)[0];if(!k||(k&&typeof j.SetVariable!=Z)){i=j}else{if(typeof k.SetVariable!=Z){i=k}}}}return i},embedSWF:function(n,u,r,t,j,m,k,p,s){if(!a.w3cdom||!n||!u||!r||!t||!j){return }r+="";t+="";if(O(j)){X(u,false);var q=(typeof s==P)?s:{};q.data=n;q.width=r;q.height=t;var o=(typeof p==P)?p:{};if(typeof k==P){for(var l in k){if(k[l]!=Object.prototype[l]){if(typeof o.flashvars!=Z){o.flashvars+="&"+l+"="+k[l]}else{o.flashvars=l+"="+k[l]}}}}J(function(){R(q,o,u);if(q.id==u){X(u,true)}})}else{if(m&&!C&&O("6.0.65")&&(a.win||a.mac)){X(u,false);J(function(){var i={};i.id=i.altContentId=u;i.width=r;i.height=t;i.expressInstall=m;D(i)})}}},getFlashPlayerVersion:function(){return{major:a.pv[0],minor:a.pv[1],release:a.pv[2]}},hasFlashPlayerVersion:O,createSWF:function(k,j,i){if(a.w3cdom&&S){return R(k,j,i)}else{return undefined}},createCSS:function(j,i){if(a.w3cdom){A(j,i)}},addDomLoadEvent:J,addLoadEvent:M,getQueryParamValue:function(m){var l=g.location.search||g.location.hash;if(m==null){return l}if(l){var k=l.substring(1).split("&");for(var j=0;j<k.length;j++){if(k[j].substring(0,k[j].indexOf("="))==m){return k[j].substring((k[j].indexOf("=")+1))}}}return""},expressInstallCallback:function(){if(C&&L){var i=c(K);if(i){i.parentNode.replaceChild(L,i);if(T){X(T,true);if(a.ie&&a.win){L.style.display="block"}}L=null;T=null;C=false}}}}}();

Youtube.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="YouTube.aspx.cs" Inherits="YouTube" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

<script type="text/javascript" src="swfobject.js"></script>

<title>Querying YouTube using C#</title>


<script type="text/javascript">


function onYouTubePlayerReady(playerId)

{

var objplayer =document.getElementById("myytplayer");

objplayer.mute();

}


function showVideo(videoid)

{

if (videoid=="")

return;

var params = { allowScriptAccess: "always" };

var atts = { id: "myytplayer" };

swfobject.embedSWF("http://www.youtube.com/v/" + videoid + "&autoplay=1&enablejsapi=1&playerapiid=ytplayer",

"divVideo", "425", "356", "8", null, null, params, atts);

}


function makeDefault()

{

var objplayer =document.getElementById("myytplayer");

if (objplayer != null)

objplayer.unMute();

}


</script>

</head>

<body onload ="showVideo('<%=strVideoId%>')" onunload="makeDefault()">

<form id="form1" runat="server">

<div>

Enter search

<asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>

<asp:Button ID="btoSearch" runat="server" OnClick="btoSearch_Click" Text="Search" /><br />

<br />

<asp:Label ID="lblResults" runat="server" Text="Label" Visible="false"></asp:Label></div>

<div id="divVideo">

</div>

</form>

</body>

</html>

Its code behind:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using Google.GData.Client;

using Google.GData.Extensions;

public partial class YouTube : System.Web.UI.Page

{

public string strVideoId = string.Empty;

/// <summary>

/// Create and returns and Google.GData.Client.AtomFee from url with the specific start and number of items

/// </summary>

/// <param name="url"></param>

/// <param name="start"></param>

/// <param name="number"></param>

/// <returns></returns>

private static AtomFeed GetFeed(string url, int start, int number)

{

System.Diagnostics.Trace.Write("Conectando youtube at " + url);

FeedQuery query = new FeedQuery("");

Service service = new Service("youtube", "exampleCo");

query.Uri = new Uri(url);

query.StartIndex = start;

query.NumberToRetrieve = number;

AtomFeed myFeed = service.Query(query);

return myFeed;

}


/// <summary>

/// Gets html code to display video

/// </summary>

/// <param name="id"></param>

/// <returns></returns>

private void RenderVideoEmbedded(string id)

{

//return string.Format("<div id=\"video{0}\"><object width=\"425\" height=\"355\" id=\"srdee\"><param name=\"movie\" value=\"http://www.youtube.com/v/{0}&rel=1&enablejsapi=1&playerapiid=srdee\"></param><param name=\"wmode\" value=\"true\"></param><param name=\"allowScriptAccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/{0}&rel=1&autoplay=1&enablejsapi=1&playerapiid=srdee\" type=\"application/x-shockwave-flash\" wmode=\"true\" width=\"425\" height=\"355\"></embed></object></div>", id);

// return string.Format("<div id=\"video{0}\"><object width=\"425\" height=\"355\" id=\"srdee\"><param name=\"movie\" value=\"http://www.youtube.com/v/{0}&rel=1&enablejsapi=1&playerapiid=srdee\"></param><param name=\"wmode\" value=\"true\"></param><param name=\"allowScriptAccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/{0}&rel=1&autoplay=1&enablejsapi=1&playerapiid=srdee\" type=\"application/x-shockwave-flash\" wmode=\"true\" width=\"425\" height=\"355\"></embed></object></div>", id);

strVideoId=id ;

}

/// <summary>

/// Converts URL ID to short one

/// </summary>

/// <param name="googleID"></param>

/// <returns></returns>

private string getIDSimple(string googleID)

{

int lastSlash = googleID.LastIndexOf("/");

return googleID.Substring(lastSlash + 1);

}


/// <summary>

/// Renders feed in example aspx page

/// </summary>

/// <param name="myFeed"></param>

private void DisplayFeed(AtomFeed myFeed)

{

System.Text.StringBuilder sb = new System.Text.StringBuilder();

foreach (AtomEntry entry in myFeed.Entries)

{

#region render each

sb.Append("<br /><b>Title:</b> ");

sb.Append(entry.Title.Text);

sb.Append("<br /><b>Categories:</b> ");

foreach (AtomCategory cat in entry.Categories)

{

sb.Append(cat.Term);

sb.Append(",");

}

RenderVideoEmbedded(getIDSimple(entry.Id.AbsoluteUri));

sb.Append("<br /><b>Published on:</b> ");

sb.Append(entry.Published);

#endregion

}

this.lblResults.Visible = true;

this.lblResults.Text = sb.ToString();

}


//by search

//feel free to change number of items, by there is a limit of 50, I believe.

//If you want to retreive more, you have to do a loop (retrieve 1-50, then 51 to 100, etc)

protected void btoSearch_Click(object sender, EventArgs e)

{

string url = "http://gdata.youtube.com/feeds/videos?q=" + this.txtSearch.Text;

AtomFeed myFeed = GetFeed(url, 1, 1);

DisplayFeed(myFeed);

}

}

 


 

YouTube APIs revealed

As per of my current project I worked on Google YouTube Apis.
 
No need of developer key.
There is a change in old and new apis. (http://code.google.com/apis/youtube/migration.html)
 
I started my application with this code base : http://www.dotneat.net/2007/12/20/QueryingYoutubeAPIUsingC.aspx
 
Then I developed two extensions to it.
One is mute and autoplaying of the video on click of search button.Once closing the page it should made in default state ie unmute.
 
I have a textbox and a button.Search for a keyword and click on button. Then the youtube player automatically instantiates and automatically plays the video in mute state. When u r closing the page it will be return to unmute state so that the other pages which should be played with sound wont effect.
 
For further help:
http://groups.google.com/group/youtube-api          (google groups)        
http://www.eamonnflynn.net/YouTubeDotNet/YouTubeApi.htm (another sample application)
http://www.rushfrisby.com/apps/youtube-api-dotnet.aspx  (another sample application)
http://www.rushfrisby.com/youtubedotnetdemo/             code demos
http://code.google.com/support/bin/topic.py?topic=12357 (faqs)
http://gdata.youtube.com/feeds/videos?max-results=1&vq=flower (view it in youtube site)
http://code.google.com/apis/youtube/js_api_reference.html  (Javascript youtube api reference)
http://code.google.com/apis/youtube/migration.html (Difference in old and new youtube api : Syntax changes)
28 aprile

BangaloreBIO

On Friday night  I went to my friend's room who is my colleague once.
We discussed about different virtualization softwares (vpc, vmware,vmplayer) and how to use them.
He showed his current project too on Life Sciences which is meant for pharma companies which contains modules from database management, clinical trails, inventory and logistics management etc etc.
He is working in a new startup and he is the sole member in India.
He got 2 tickets for BangaloreBIO event and he told me to come to that event.
Actually I have no interest to go there.
But for his sake I went to that on Saturday morning at Bangalore International Exhibition Centre (BIEC)
Bangalore 
after Peenya industrial estate.
Its an international event ( from 24 - 26) .UK,France,Australia,US have participated too.
So many stalls were kept (nearly 50) by both India and foreign companies.
A big crowd both from pharma , related software companies and students too.
Companies like Merck,Avathesgis,  Biocon etc .. kept their stalls.I worked for some these clients in my earlier companies.
I came to know about BioInformatics and some companies..
 
the good thing I learned about the market of Bioinformatics..
 
One more thing how colleges are creating unnecessary hipe around Biotechnology engg, biochemistry, bio... courses.
 
I felt its worth for me to go there.
I left in the afternoon and went to sp road for buying dvd drive
Then I went to electronic city to meet my friend ( MSP) Aakash who is a student in PES college.
He is expert in Mac OS. He taught me how to tweak Leopard OS , and IPHONe SDK .It works on Leopard and this OS cant work in vmware or external harddisks.Like that Apple has blocked the hardware. I saw how to use SDK on Mac system.It wont work in Windows. Itunes is required like activesync for windows mobile.
 
Then I got to know how to work on Opensocial (orkut ,hi5 etc.. they formed as an association) apis which is giving competition to facebooks apis.He developed an APP which has become very popular now.Its a tagging app on Orkut friends.
Then about twitter,torrents (seeds,),firewalls.
 
Then I went to Marthahalli to meet my engg college junior who has done his Mtech in IIT Kanpur.Now he has 2 yrs experience.
He told me one interesting thing. How Oracle has misused him and now he is with Cisco. Here also no suitable good work. So planning for Amazon.
Really how IITians are being misused by big companies.
I got some training videos on Adobe ,and Java.
Now planning to work on these.
 
I went to room at 10 pm night.
Lot of travel on bus that day Saturday. But useful.
But yesterday I was sick because of pollution. So stayed in room and washed my clothes (Sunday)

Talking about Truly understanding Dynamic Controls & ViewState

Source: From Sendhil.

This is for my purpose. If Sendhil says means 100% guarantee. It is worthful.

An example project has been added to the series here.

Quote

Truly understanding Dynamic Controls & ViewState

Truly understanding Dynamic Controls

Truly understanding ViewState

Must read if you are an ASP.NET developer. Read them letter by letter every month, memorize them.

This is the third time I am linking to these articles. Every time I (re)read them I understand something new.

GETTING THE RIGHT MANAGER

Source: Economic Times

GETTING THE RIGHT MANAGER

Great motivators, ones who make work fun are the right guys to lead

Rohit Chattar (Manager with an MNC)

    "I'M NOT motivated. The kind of work I'm doing is repetitive, monotonous and operational and is not challenging enough. I'm not learning anything new. I'm not growing..." These are complaints which IT managers often hear. And what does the manager do? Some point their fingers back at the employee and tell him where they failed to deliver. They detail the missed project deliverables and what they think is repetitive work. Sometimes the manager may bring out all that went wrong in the last 3-6 months denying all the reasons given by the employee irrespective of how genuine it may be.
    He then starts taking the idealistic and philosophical way to tackle the problem. In such a situation, he is thrusting the onus of responsibility on the employee without backing him at all. But he does not put an effort to understand the employee's feelings. In fact, he tries to justify the situation by saying that only such type of work lands in India and that's how it is going to be. And nothing much can be done other than accept the status quo. With such an attitude, the manager actually dashes all the hopes of the employee. The result? The employee just closes all doors for any further communication and decides to either move to a different function or find another job.
    Some managers are not sure how to react. They neither support nor deny what the employee said and just try to fill in the silence. They talk for a few minutes. The result? The employee is left in a confused state. The employee may share this sentiment with his colleagues spreading the confusion further.
    Tough job for a manager, isn't it? Well, that's why they get paid the big bucks! Managing such situations is part of their job and they are hired for defusing such situations. What can an organisation do? Pick the right manager.
    For example, for a team of engineers, senior engineers and leads who love talking technology and believe in challenging work culture, get a manager who is young, tech savvy, speaks the same technical language, willing to take challenges and connects well with people. The team will start believing in their manager. Empower such managers and do not force them to be something they are not.
    Now, when the team member tells the manager, "The work is repetitive, operational and non-challenging", the manager can immediately ask a counter question, "Why is it still repetitive? If you want I can work with you on this because I have some ideas to make it smarter?" Here, the manager is not playing the fingerpointing game but asking the right question and most importantly using the word "we". The manager now sounds like a person who has vision and makes sense when he/she talks. Employees would love to work for such managers.
    Another example would be for operational job functions. An operational job function needs a manager who is full of energy, humour, connects with people, has lots of patience and is always available for his people. This manager does not need to be a techie. Rather, it requires a manager who is good at convincing his people in following the
process whole-heartedly, is organised, a multi-tasker and shows respect for the work (operational) that keeps the business going. He needs to be a great motivator and one who creates a fun environment without compromising on work quality.
    So, the moral of the story is — hire the right manager depending on the mix of people. Don't just look at the number of years of experience he/she has put in at some reputed organisation. Get people who want to move up the chain and make the difference in whatever they do. Empower them appropriately and reap the productivity they gain with much reduced attrition.

24 aprile

Nokia s60 wdgets development

Hi friends,
My name is Sreedhar Ambati. I am a dotnet developer but recently started working on Windows mobile.
I attended Nokia forums events both widgets and flashlite sessions.
I struggled for getting started development in these areas.
Didn't get much support especially from the speakers after the session.
They wrote official ids and personal ids in the session.
But after the session didnt replied atlease to one mail.
So I tried and succeeded now atleast on widgets development.

My experience with Widgets .. a small sample application to get the feel for a new bee like me.
Prerequisite : Java Run Time Environment 1.5 or above
Visit this: ( for installation of emulator or sdk)
http://www.forum.nokia.com/main/resources/getting_started/index.html
left side: Resources -> Tools and SDKs --> Symbian c++ tools -->S60 Platform SDKs for Symbian OS, for
C++ --> See Download now button in the middle (3rd edition fp2 439 mb). By clicking on that  you can
download "s60-3.2 sdk" .After downloading click on exe.
Then start- programs-s60 developer tools - 3rd edition fp2 sdk - emulator.
Now emulator runs.
We want some more ie webruntime toolkit
For that go here: http://groups.google.co.in/group/nokia-wrt-tools-beta
join in this group.
On the home page of this group you can notice : http://xdawrt001.ext.nokia.com/ 
and there also provides with
username: wrt
password: alpha.2008
By clicking on that link u r in "http://xdawrt001.ext.nokia.com/"
From there u can download "Tools for Widget Developers"
In the same site U can see "Web  Developer's Library" browse that :: u r in
http://xdawrt001.ext.nokia.com/Web_Developers_Library/webIndex.html
There from example widgets download al the 4 provided widgets "Keypad,Helloworld,Rss Reader, Travel
Companion widgets"
Thats it.
Now how to use these widgets in our emulator .Explaination is given below
change the names of the widgets that you downloaded from zip extension to .wgz extension
I installed s60 sdk in "d:\phonesamples "
Move the four widgets after changing their file extension to wgz to "d:\phonesamples\S60
\devices\S60_3rd_FP2_SDK\epoc32\winscw\c\Data\Others"
Now in emulator :
steps:
 1. installation :
   click on menu ->organiser->file manager-> phone memory-> other ->"select the widget file ie   
helloworldwgz". select it . It prompts for installation either on phone or memory card.Select phome
memory and it installs .
2. Run the widget
click on menu- installations->helloworld widget.
Thats it
 
Note: When working with emulators you have to feel that u r operation mobile phone. Navigations are not mouse events . U have to choose the keys from the emulator. Patience is required when working with this Emulator as it is  very very slow.
 
 
Thanks & Regards,
Sreedhar Ambati
http://ambatisreedhar.spaces.live.com
http://ambatisreedhar.wordpress.com (tech events in and around Bangalore)

Windows Live Mesh

https://www.mesh.com/

Live Mesh is a synchronization system from Microsoft that allows files and folders to be shared and synchronized across multiple devices.Live Mesh consists of a software component that allows synchronization relationships to be created among different devices. Once a folder is set for synchronization, it will be available in all devices, and any changes made to the content of the folder will be reflected across all devices. Live Mesh uses FeedSync to convey the changes made in each device so that the changes can be synchronized. The information about devices and folders participating in a synchronization relationship is not stored locally but at the service-end.Devices in a sync relationship are collectively referred to as a Mesh.

The Live Mesh software, called Mesh Operating Environment,is currently available only for Windows XP and Windows Vista; Mac OS X and Windows Mobile support will be added later. It can be used to create and manage the synchronization relationships between devices and data. Live Mesh also includes a cloud storage component, called Live Desktop. It is an online storage service that allows synchronized folders to be accessible via a website. Live Mesh also provides a remote desktop software called Live Mesh Remote Desktop that can be used to remotely connect and manage to any of the devices in a synchronization relationship.

23 aprile

Freecycle mission statement

http://www.freecycle.org/

"Our mission is to build a worldwide gifting movement that reduces waste, saves precious resources & eases the burden on our landfills while enabling our members to benefit from the strength of a larger community."

Storage

I usually heard people in storage domain feel proud.
They proudly tells that they are working in HP,emc2, Tivoli, Data Domain etc .. in storage domain.
They tells that they are working in c,c++ with unix platform.
Till this it is ok.
But they also comments that they dotnet , java are for low programmers and they consider themselves as big shots.
 
People from VLSI , Embedded systems also treats others like this only.
I wont agree for this.
 
Some of storage domain companies are American Megatrends, Bakbone, CommVault,Quantum ,Nexsar,Pillar,Legato , Telligentn etc.
 
If you want information on these areas its tough to find. They are closed areas.
 
In one of the session on Storage for ERP I got this URL,