<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title>Jeremi Joslin | lifestream</title>
        <description></description>
        <link>http://www.jeremi.info</link>
        <lastBuildDate>Wed, 10 Mar 2010 11:37:33 UT</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <item>
            <title>Bookmarked the page: Google Fusion Tables API - Google Code</title>
            <link>http://www.jeremi.info/entry/google-fusion-tables-api---google-code-3-191.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://code.google.com/apis/fusiontables/" target="_blank">Google Fusion Tables API - Google Code</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 15:21:58 UT</pubDate>
            <guid>/entry/3/191</guid>
        </item>
        <item>
            <title>@chanezon you are always on the road :)</title>
            <link>http://www.jeremi.info/entry/chanezon-you-are-always-on-the-road--7-227.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/chanezon" target="_blank">chanezon</a> you are always on the road :)</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 15:11:59 UT</pubDate>
            <guid>/entry/7/227</guid>
        </item>
        <item>
            <title>Bookmarked the page: Fiverr – The place for people to share things they’re willing to do for $5</title>
            <link>http://www.jeremi.info/entry/fiverr-o-the-place-for-people-to-share-things-theyyre-willing-to-do-for-3-190.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.fiverr.com/" target="_blank">Fiverr – The place for people to share things they’re willing to do for $5</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 12:58:40 UT</pubDate>
            <guid>/entry/3/190</guid>
        </item>
        <item>
            <title>Amazing what people can do for 5$ http://bit.ly/bxy6sV</title>
            <link>http://www.jeremi.info/entry/amazing-what-people-can-do-for-5-httpbitlybxy6sv-7-226.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">Amazing what people can do for 5$ <a href="http://bit.ly/bxy6sV" target="_blank">http://bit.ly/bxy6sV</a></div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 12:53:34 UT</pubDate>
            <guid>/entry/7/226</guid>
        </item>
        <item>
            <title>register to the webinar about GateIn tools and framework: Chromattic and CRaSH!!! http://bit. ...</title>
            <link>http://www.jeremi.info/entry/register-to-the-webinar-about-gatein-tools-and-framework-chromattic-and-cr-7-225.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">register to the webinar about GateIn tools and framework: Chromattic and CRaSH!!! <a href="http://bit.ly/8XatXl" target="_blank">http://bit.ly/8XatXl</a> of @julienviet</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 09:53:38 UT</pubDate>
            <guid>/entry/7/225</guid>
        </item>
        <item>
            <title>Crazy, I found a kouign amann http://bit.ly/cta9zV in a jap bakery ICHIDO in Shanghai. ...</title>
            <link>http://www.jeremi.info/entry/crazy-i-found-a-kouign-amann-httpbitlycta9zv-in-a-jap-bakery-ichido-i-7-224.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">Crazy, I found a kouign amann <a href="http://bit.ly/cta9zV" target="_blank">http://bit.ly/cta9zV</a> in a jap bakery ICHIDO in Shanghai. Less butter than the real one, but still very good.</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 08:24:41 UT</pubDate>
            <guid>/entry/7/224</guid>
        </item>
        <item>
            <title>Bookmarked the page: Architecture Design Architectural Images History Models and More - ...</title>
            <link>http://www.jeremi.info/entry/architecture-design-architectural-images-history-models-and-more---architec-3-189.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.greatbuildings.com/gbc.html" target="_blank">Architecture Design Architectural Images History Models and More - ArchitectureWeek Great Buildings</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 07:38:09 UT</pubDate>
            <guid>/entry/3/189</guid>
        </item>
        <item>
            <title>Wondering if I can use GPars in my grails app to call asynchronously a REST service (I don't ...</title>
            <link>http://www.jeremi.info/entry/wondering-if-i-can-use-gpars-in-my-grails-app-to-call-asynchronously-a-rest-7-223.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">Wondering if I can use GPars in my grails app to call asynchronously a REST service (I don't need to wait for the answer of the service)</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 04:38:03 UT</pubDate>
            <guid>/entry/7/223</guid>
        </item>
        <item>
            <title>Shared the story: Facebook in your Palm; Fun building the new Facebook app</title>
            <link>http://www.jeremi.info/entry/facebook-in-your-palm-fun-building-the-new-facebook-app-13-39.html</link>
            <description><![CDATA[
<div class="googlereader">
	<div class="note"></div>
	<div class="content"><html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title></title>
  </head>
  <body>
    <p>
      <a href="http://www.flickr.com/photos/migomes/4168470920/"><img src="http://almaer.com/blog/uploads/facepalm.jpg" alt="facepalm" title="facepalm" width="500" height="333" /></a>
    </p>
    <p>
      When Ben and I <a href="http://almaer.com/blog/joining-palm-with-ben">joined Palm</a> to run Developer Relations, we knew that we wanted to eat dogfood pretty quickly. We have had some mobile
      related projects in the past, but they were either mobile Web sites, or Java based. Being able to take our web skillz to rich mobile devices was much more new and exciting.
    </p>
    <p>
      Building sample code and apps is useful for developers, and the team will be doing plenty of that (e.g. this is how you use the awesome List widget in every which way, and why you would do X,
      Y, or Z) but building a production app is a whole different level.
    </p>
    <p>
      We wanted to learn what it is like for our developers to design, build, and distribute webOS applications. We could have started with a smallish app, but no :) Instead we took the great work of
      Justin Newitter (who built the original app) and went running with an updated Facebook app. Along with other great developers in the dev relations world, we have <a href=
      "http://developer.palm.com/blog/2010/03/new-facebook-app-now-available/">gotten our first early release out there today</a>.
    </p>
    <p>
      Here is a walk through of the app by PreCentral:
    </p>
    <p>
      <embed src="http://www.youtube.com/v/Nd0x49IplNc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" allowfullscreen="true" allowscriptaccess="never"
      width="425" height="344" wmode="transparent" type="application/x-shockwave-flash" />
    </p>
    <p>
      We have definitely learned a lot in our short time on the app, and this is the first release of many. I really want us to have a regular cadence to our releases. If there is a <a href=
      "http://palm.com/facebookappfeedback">feature you are excited about</a> let us know.
    </p>
    <p>
      <img src="http://almaer.com/blog/uploads/fbpixi.png" alt="fbpixi" title="fbpixi" width="240" height="395" style="float:right" />
    </p>
    <p>
      We added a broad feature set to the application. The first Facebook application was very much about synergy. Why put something in an application silo when you can bake it into the platform? I
      still contend that webOS is the best platform for Facebook users as it integrates throughout. Other mobile platforms do some of this, but I think we continue to do the best job here.
    </p>
    <p>
      There are a bunch of Facebook features that our users still wanted though, so we worked with Facebook themselves to prioritize this list. The top features were access to Facebook Mail, full
      profile access (info, wall, and photos), people search, events and birthdays. We also wanted to do interesting things to the UI as we bring in these features. Oh, and a couple of mini-easter
      eggs.
    </p>
    <p>
      Designing the application was challenging and a lot of fun. At a high level, working out a design that is true to webOS *and* a strong brand such as Facebook was a balancing act. You will run
      into this same issue even without a brand like FB. How does it have your DNA and still fit in with the core platform. This has been a design consideration since the dawn of time. Do you make a
      clean Mac app that looks like Mail.app? Do you do your own UI that looks like a funky Flash UI? Most of the time you are in the middle.
    </p>
    <p>
      <img src="http://almaer.com/blog/uploads/fbappnav.png" alt="fbappnav" title="fbappnav" width="480" height="329" />
    </p>
    <p>
      One feature that we spent time on was the base navigation. We wanted to make it incredibly easy to get to features you use often, and also quick to get to all features.
    </p>
    <p>
      We ended up with a solution that made the following decisions:
    </p>
    <p>
      <b>News as Root</b>
    </p>
    <p>
      The root of the application is the news feed. Some Facebook apps have an icon window as the root, but we decided to behave more like the Facebook website itself. The news stream is the blood
      line, so start there. No matter where you go in the app, if you back gesture away…. you will always end up at the news stream.
    </p>
    <p>
      Also, just like the iPhone app, we share the shake gesture as a way to refresh the data here. Shake away.
    </p>
    <p>
      <b>Status Matters</b>
    </p>
    <p>
      webOS devices have hardware keyboards and are great for creating content. In the Facebook context this means updating your status and uploading photos are prime ways to get your content into
      the system.
    </p>
    <p>
      For this reason the top left area is your way to always get to your current status and update on it. In fact, if you are on the new stream, just start typing and the update area will pop down
      and capture your new status (while showing your last one below).
    </p>
    <p>
      Also, if you click on the camera icon, you are sent into the core photo experience on the device which natively supports uploading to Facebook.
    </p>
    <p>
      <b>The Navigation Grid</b>
    </p>
    <p>
      For all other features, we wanted to give you a quick way to access them. Click on the top right grid and a pop down will immediately appear, giving you one tap access to any feature. No need
      to switch to a navigation screen first.
    </p>
    <p>
      We are also playing with the ability to use that hardware keyboard by giving you quick key access to any feature (e.g. SYM + E == sends you to events). Is that a good idea?
    </p>
    <p>
      <b>Facebook Logo Power</b>
    </p>
    <p>
      The Facebook logo itself has some hidden love. In an homage to to websites, a tap on the logo takes you home…. which means back to the news stream. If you are on the news stream already, and
      have flicked down…. that same logo will bring you to the top.
    </p>
    <p>
      <b>Where to go next?</b>
    </p>
    <p>
      We are excited to offer access to data that Facebook users haven’t been able to get in an app before, but where do we go from here?
    </p>
    <p>
      We definitely want to do a lot of polish on various sections that we have out there. One idea that I have been playing with from the get go is doing something immersive when you rotate the
      screen when in a news feed. Instead of just having the news feed work in that format, what if the content took over. I <a href="http://almaer.com/blog">mentioned this in my last post about
      touch UI</a>. I flick through the stream and if on photos, the album takes on the entire screen for example.
    </p>
    <p>
      There are some other really fun features that revolve around webOS notifications and giving you a great way to “never miss a thing” (life moves fast you know ;) and choosing what content
      matters to you.
    </p>
    <p>
      And, finally, we have to work out what makes sense in an app, and what could be baked into the platform. Giving access to birthdays is great, but would you like to have them as a calendar on
      the device? Maybe, but you would definitely want to be able to turn that view off…. and in fact you may already have birthday info in your profiles, so we should have one unified birthday view.
      Life gets more complicated when you go to the generic doesn’t it.
    </p>
    <p>
      Again, we have just started here, but would love to hear from you on <a href="http://palm.com/facebookappfeedback">our feedback area in the app page</a>.
    </p>
    <p>
      Thanks to the team that played a part in this release! We haven’t reached <a href="http://joehewitt.com/">Joe Hewitt</a> foo yet, but we are having fun!
    </p>
    <div>
      <a href="http://feeds.feedburner.com/~ff/dion?a=oaE442NpWgo:nzoz9HOh72Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dion?d=yIl2AUoC8zA" border="0" /></a> <a href=
      "http://feeds.feedburner.com/~ff/dion?a=oaE442NpWgo:nzoz9HOh72Y:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dion?d=dnMXMwOfBR0" border="0" /></a> <a href=
      "http://feeds.feedburner.com/~ff/dion?a=oaE442NpWgo:nzoz9HOh72Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/dion?i=oaE442NpWgo:nzoz9HOh72Y:F7zBnMyn0Lo" border="0" /></a> <a href=
      "http://feeds.feedburner.com/~ff/dion?a=oaE442NpWgo:nzoz9HOh72Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dion?i=oaE442NpWgo:nzoz9HOh72Y:V_sGLiPBpWU" border="0" /></a>
    </div>
  </body>
</html></div>	
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 02:40:07 UT</pubDate>
            <guid>/entry/13/39</guid>
        </item>
        <item>
            <title>+1 RT @ropu: @benjmestrallet naaa! soccer is better... at least until you can still run :P Congrats!</title>
            <link>http://www.jeremi.info/entry/1-rt-ropu-benjmestrallet-naaa-soccer-is-better-at-least-until-you-c-7-222.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">+1 RT @<a href="http://twitter.com/ropu" target="_blank">ropu</a>: @<a href="http://twitter.com/benjmestrallet" target="_blank">benjmestrallet</a> naaa! soccer is better... at least until you can still run :P Congrats!</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 02:28:05 UT</pubDate>
            <guid>/entry/7/222</guid>
        </item>
        <item>
            <title>@cestpasdur tu utilise quel endpoint? pour l'auth, il faut etre sur /rest/private/jcr et pas ...</title>
            <link>http://www.jeremi.info/entry/cestpasdur-tu-utilise-quel-endpoint-pour-lauth-il-faut-etre-sur-restp-7-220.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/cestpasdur" target="_blank">cestpasdur</a> tu utilise quel endpoint? pour l'auth, il faut etre sur /rest/private/jcr et pas /rest/jcr</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 01:57:12 UT</pubDate>
            <guid>/entry/7/220</guid>
        </item>
        <item>
            <title>If I had a house, and some time to kill, I'd love to play with this kind of stuff http://bit. ...</title>
            <link>http://www.jeremi.info/entry/if-i-had-a-house-and-some-time-to-kill-id-love-to-play-with-this-kind-of-7-221.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">If I had a house, and some time to kill, I'd love to play with this kind of stuff <a href="http://bit.ly/bpXEN4" target="_blank">http://bit.ly/bpXEN4</a></div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 09 Mar 2010 01:50:27 UT</pubDate>
            <guid>/entry/7/221</guid>
        </item>
        <item>
            <title>Bookmarked the page: Relationship matters on Datavisualization.ch</title>
            <link>http://www.jeremi.info/entry/relationship-matters-on-datavisualizationch-3-188.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://datavisualization.ch/showcases/relationship-matters?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Datavisualization+%28Datavisualization.ch%29&utm_content=Google+Reader" target="_blank">Relationship matters on Datavisualization.ch</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Mon, 08 Mar 2010 16:03:00 UT</pubDate>
            <guid>/entry/3/188</guid>
        </item>
        <item>
            <title>Annoying, there is no permalink to compare 2 versions in confluence :(</title>
            <link>http://www.jeremi.info/entry/annoying-there-is-no-permalink-to-compare-2-versions-in-confluence--7-219.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">Annoying, there is no permalink to compare 2 versions in confluence :(</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Mon, 08 Mar 2010 08:45:40 UT</pubDate>
            <guid>/entry/7/219</guid>
        </item>
        <item>
            <title>Bookmarked the page: Understanding CSS3 and CSS2.1 Border Properties • Perishable Press</title>
            <link>http://www.jeremi.info/entry/understanding-css3-and-css21-border-properties--perishable-press-3-187.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://perishablepress.com/press/2010/02/22/css3-border-properties/" target="_blank">Understanding CSS3 and CSS2.1 Border Properties • Perishable Press</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Mon, 08 Mar 2010 08:42:25 UT</pubDate>
            <guid>/entry/3/187</guid>
        </item>
        <item>
            <title>Bookmarked the page: Speed Up with CSS3 Gradients | CSS-Tricks</title>
            <link>http://www.jeremi.info/entry/speed-up-with-css3-gradients--css-tricks-3-186.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://css-tricks.com/css3-gradients/" target="_blank">Speed Up with CSS3 Gradients | CSS-Tricks</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Mon, 08 Mar 2010 06:57:24 UT</pubDate>
            <guid>/entry/3/186</guid>
        </item>
        <item>
            <title>Bookmarked the page: sunlightlabs's clearmaps at master - GitHub</title>
            <link>http://www.jeremi.info/entry/sunlightlabss-clearmaps-at-master---github-3-185.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://github.com/sunlightlabs/clearmaps/" target="_blank">sunlightlabs's clearmaps at master - GitHub</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Mon, 08 Mar 2010 02:44:48 UT</pubDate>
            <guid>/entry/3/185</guid>
        </item>
        <item>
            <title>Bookmarked the page: Sonoa Systems | Visibility and Control of APIs and Cloud services</title>
            <link>http://www.jeremi.info/entry/sonoa-systems--visibility-and-control-of-apis-and-cloud-services-3-184.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.sonoasystems.com/" target="_blank">Sonoa Systems | Visibility and Control of APIs and Cloud services</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Sun, 07 Mar 2010 16:37:24 UT</pubDate>
            <guid>/entry/3/184</guid>
        </item>
        <item>
            <title>@james_generis Which gadget container are you using?</title>
            <link>http://www.jeremi.info/entry/jamesgeneris-which-gadget-container-are-you-using-7-217.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/james_generis" target="_blank">james_generis</a> Which gadget container are you using?</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Sun, 07 Mar 2010 14:52:33 UT</pubDate>
            <guid>/entry/7/217</guid>
        </item>
        <item>
            <title>@james_generis sounds cool. Let me know when you have something I'm really interested in ...</title>
            <link>http://www.jeremi.info/entry/jamesgeneris-sounds-cool-let-me-know-when-you-have-something-im-really--7-218.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/james_generis" target="_blank">james_generis</a> sounds cool. Let me know when you have something I'm really interested in testing them in GateIn and with xCMIS.</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Sun, 07 Mar 2010 14:51:39 UT</pubDate>
            <guid>/entry/7/218</guid>
        </item>
        <item>
            <title>Bookmarked the page: Becoming Smart</title>
            <link>http://www.jeremi.info/entry/becoming-smart-3-183.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://becoming.smart.joyent.com/index.html" target="_blank">Becoming Smart</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Sun, 07 Mar 2010 14:44:12 UT</pubDate>
            <guid>/entry/3/183</guid>
        </item>
        <item>
            <title>Bookmarked the page: How Facebook Was Founded</title>
            <link>http://www.jeremi.info/entry/how-facebook-was-founded-3-182.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.businessinsider.com/how-facebook-was-founded-2010-3#the-65-million-question-5" target="_blank">How Facebook Was Founded</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Sun, 07 Mar 2010 04:23:15 UT</pubDate>
            <guid>/entry/3/182</guid>
        </item>
        <item>
            <title>Bookmarked the page: FireQuery = Firebug extension for jQuery development</title>
            <link>http://www.jeremi.info/entry/firequery--firebug-extension-for-jquery-development-3-181.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://firequery.binaryage.com/" target="_blank">FireQuery = Firebug extension for jQuery development</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Sun, 07 Mar 2010 03:23:34 UT</pubDate>
            <guid>/entry/3/181</guid>
        </item>
        <item>
            <title>Google’s App Store for Business to Launch Next Week http://bit. ...</title>
            <link>http://www.jeremi.info/entry/googleys-app-store-for-business-to-launch-next-week-httpbitly91yshx--7-216.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">Google’s App Store for Business to Launch Next Week <a href="http://bit.ly/91Yshx" target="_blank">http://bit.ly/91Yshx</a> @<a href="http://twitter.com/dhinchcliffe" target="_blank">dhinchcliffe</a> take on biz app stores: <a href="http://bit.ly/a4WS7e" target="_blank">http://bit.ly/a4WS7e</a></div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Sat, 06 Mar 2010 15:47:44 UT</pubDate>
            <guid>/entry/7/216</guid>
        </item>
        <item>
            <title>@james_generis What kind of  cmis gadget are you developing?</title>
            <link>http://www.jeremi.info/entry/jamesgeneris-what-kind-of--cmis-gadget-are-you-developing-7-214.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/james_generis" target="_blank">james_generis</a> What kind of  cmis gadget are you developing?</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Sat, 06 Mar 2010 13:44:25 UT</pubDate>
            <guid>/entry/7/214</guid>
        </item>
        <item>
            <title>Published the v0.1 of a library to  profile and benchmark javascript code http://bit.ly/dixkHk</title>
            <link>http://www.jeremi.info/entry/published-the-v01-of-a-library-to--profile-and-benchmark-javascript-code-h-7-215.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">Published the v0.1 of a library to  profile and benchmark javascript code <a href="http://bit.ly/dixkHk" target="_blank">http://bit.ly/dixkHk</a></div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Sat, 06 Mar 2010 13:42:48 UT</pubDate>
            <guid>/entry/7/215</guid>
        </item>
        <item>
            <title>@tgrall Nice morning indeed. if I could go to run in the forest too that would be awesome, but ...</title>
            <link>http://www.jeremi.info/entry/tgrall-nice-morning-indeed-if-i-could-go-to-run-in-the-forest-too-that-wo-7-213.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/tgrall" target="_blank">tgrall</a> Nice morning indeed. if I could go to run in the forest too that would be awesome, but 200km to find one is a little bit long.</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Sat, 06 Mar 2010 11:04:23 UT</pubDate>
            <guid>/entry/7/213</guid>
        </item>
        <item>
            <title>i'm wondering why the slideshare player is made in flash, and not in js/html? (when there is no ...</title>
            <link>http://www.jeremi.info/entry/im-wondering-why-the-slideshare-player-is-made-in-flash-and-not-in-jshtm-7-212.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">i'm wondering why the slideshare player is made in flash, and not in js/html? (when there is no sound associated)</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Sat, 06 Mar 2010 03:27:44 UT</pubDate>
            <guid>/entry/7/212</guid>
        </item>
        <item>
            <title>Bookmarked the page: Stowe Boyd - /message - Socialtext 4.0</title>
            <link>http://www.jeremi.info/entry/stowe-boyd---message---socialtext40-3-180.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.stoweboyd.com/message/socialtext-40.html" target="_blank">Stowe Boyd - /message - Socialtext 4.0</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Sat, 06 Mar 2010 02:46:09 UT</pubDate>
            <guid>/entry/3/180</guid>
        </item>
        <item>
            <title>Bookmarked the page: Node.js is genuinely exciting</title>
            <link>http://www.jeremi.info/entry/nodejs-is-genuinely-exciting-3-179.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://simonwillison.net/2009/Nov/23/node/" target="_blank">Node.js is genuinely exciting</a></div>
	<div  class="description">So Node is fast—but where it really shines is concurrency with long running requests. Alter the helloworld.js server definition to look like this:</div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Fri, 05 Mar 2010 11:21:10 UT</pubDate>
            <guid>/entry/3/179</guid>
        </item>
        <item>
            <title>if you want to know more about Javascript watch Douglas Crockford talking about the good part ...</title>
            <link>http://www.jeremi.info/entry/if-you-want-to-know-more-about-javascript-watch-douglas-crockford-talking-a-7-211.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">if you want to know more about Javascript watch Douglas Crockford talking about the good part of it <a href="http://bit.ly/dsqaWM" target="_blank">http://bit.ly/dsqaWM</a></div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Fri, 05 Mar 2010 11:05:19 UT</pubDate>
            <guid>/entry/7/211</guid>
        </item>
        <item>
            <title>@glaforge appengine avec gaelyk ?</title>
            <link>http://www.jeremi.info/entry/glaforge-appengine-avec-gaelyk--7-210.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/glaforge" target="_blank">glaforge</a> appengine avec gaelyk ?</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Fri, 05 Mar 2010 10:45:20 UT</pubDate>
            <guid>/entry/7/210</guid>
        </item>
        <item>
            <title>RT @tgrall: Redhat, JBoss and eXo webinar about GateIn project about the next generation of ...</title>
            <link>http://www.jeremi.info/entry/rt-tgrall-redhat-jboss-and-exo-webinar-about-gatein-project-about-the-ne-7-209.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">RT @<a href="http://twitter.com/tgrall" target="_blank">tgrall</a>: Redhat, JBoss and eXo webinar about GateIn project about the next generation of enterprise portals: <a href="http://bit.ly/9hiZXw" target="_blank">http://bit.ly/9hiZXw</a></div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Fri, 05 Mar 2010 07:50:51 UT</pubDate>
            <guid>/entry/7/209</guid>
        </item>
        <item>
            <title>@gatein Are you going to record the webinar?</title>
            <link>http://www.jeremi.info/entry/gatein-are-you-going-to-record-the-webinar-7-208.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/gatein" target="_blank">gatein</a> Are you going to record the webinar?</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Fri, 05 Mar 2010 07:49:09 UT</pubDate>
            <guid>/entry/7/208</guid>
        </item>
        <item>
            <title>Bookmarked the page: Ajaxian » Designing a JavaScript client for a REST API</title>
            <link>http://www.jeremi.info/entry/ajaxian--designing-a-javascript-client-for-a-rest-api-3-178.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://ajaxian.com/archives/designing-a-javascript-client-for-a-rest-api" target="_blank">Ajaxian » Designing a JavaScript client for a REST API</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Thu, 04 Mar 2010 12:01:36 UT</pubDate>
            <guid>/entry/3/178</guid>
        </item>
        <item>
            <title>help @souders crowdsource load time data for Google Analytics http://bit. ...</title>
            <link>http://www.jeremi.info/entry/help-souders-crowdsource-load-time-data-for-google-analytics-httpbitly-7-207.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">help @<a href="http://twitter.com/souders" target="_blank">souders</a> crowdsource load time data for Google Analytics <a href="http://bit.ly/aSGkZ6" target="_blank">http://bit.ly/aSGkZ6</a> via @<a href="http://twitter.com/souders" target="_blank">souders</a> great!</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Thu, 04 Mar 2010 06:39:05 UT</pubDate>
            <guid>/entry/7/207</guid>
        </item>
        <item>
            <title>Bookmarked the page: Does Slow Growth Equal Slow Death? | How Hard Could It Be? by Joel Spolsky</title>
            <link>http://www.jeremi.info/entry/does-slow-growth-equal-slow-death--how-hard-could-it-be-by-joel-spolsky-3-177.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.inc.com/magazine/20091101/does-slow-growth-equal-slow-death.html" target="_blank">Does Slow Growth Equal Slow Death? | How Hard Could It Be? by Joel Spolsky</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 16:31:36 UT</pubDate>
            <guid>/entry/3/177</guid>
        </item>
        <item>
            <title>Bookmarked the page: Pagetest - where web sites go to get FAST!</title>
            <link>http://www.jeremi.info/entry/pagetest---where-web-sites-go-to-get-fast-3-176.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.webpagetest.org/" target="_blank">Pagetest - where web sites go to get FAST!</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 15:53:13 UT</pubDate>
            <guid>/entry/3/176</guid>
        </item>
        <item>
            <title>Bookmarked the page: YouTube - JavaScript: The Good Parts</title>
            <link>http://www.jeremi.info/entry/youtube---javascript-the-good-parts-3-174.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.youtube.com/watch?v=hQVTIJBZook" target="_blank">YouTube - JavaScript: The Good Parts</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 14:38:13 UT</pubDate>
            <guid>/entry/3/174</guid>
        </item>
        <item>
            <title>Bookmarked the page: YouTube - Speed Up Your JavaScript</title>
            <link>http://www.jeremi.info/entry/youtube---speed-up-your-javascript-3-175.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.youtube.com/watch?v=mHtdZgou0qU" target="_blank">YouTube - Speed Up Your JavaScript</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 14:37:14 UT</pubDate>
            <guid>/entry/3/175</guid>
        </item>
        <item>
            <title>I recommend watching speed up your javascript by @slicknet http://bit. ...</title>
            <link>http://www.jeremi.info/entry/i-recommend-watching-speed-up-your-javascript-by-slicknet-httpbitlycm-7-206.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">I recommend watching speed up your javascript by @<a href="http://twitter.com/slicknet" target="_blank">slicknet</a> <a href="http://bit.ly/cMhOIo" target="_blank">http://bit.ly/cMhOIo</a> Is there a place I can find the performance test code?</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 14:16:17 UT</pubDate>
            <guid>/entry/7/206</guid>
        </item>
        <item>
            <title>make ajax apps crawlable http://bit.ly/bBp7wF (at least by google). ...</title>
            <link>http://www.jeremi.info/entry/make-ajax-apps-crawlable-httpbitlybbp7wf-at-least-by-google-looks-l-7-205.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">make ajax apps crawlable <a href="http://bit.ly/bBp7wF" target="_blank">http://bit.ly/bBp7wF</a> (at least by google). Looks like a lot of work, but it's better than nothing.</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 11:39:32 UT</pubDate>
            <guid>/entry/7/205</guid>
        </item>
        <item>
            <title>great animation of 2009 internet statistics http://bit.ly/cKD46x (via @codepo8)</title>
            <link>http://www.jeremi.info/entry/great-animation-of-2009-internet-statistics-httpbitlyckd46x-via-code-7-204.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">great animation of 2009 internet statistics <a href="http://bit.ly/cKD46x" target="_blank">http://bit.ly/cKD46x</a> (via @<a href="http://twitter.com/codepo8" target="_blank">codepo8</a>)</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 11:21:57 UT</pubDate>
            <guid>/entry/7/204</guid>
        </item>
        <item>
            <title>Shared the story: The Entrepreneur Thesis</title>
            <link>http://www.jeremi.info/entry/the-entrepreneur-thesis-13-38.html</link>
            <description><![CDATA[
<div class="googlereader">
	<div class="note"></div>
	<div class="content"><!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>
    <title></title>
  </head>
  <body>
    <p>
      <img title="aaron w car" src="http://www.bothsidesofthetable.com/wp-content/uploads/2010/03/aaron-w-car-300x195.jpg" alt="aaron w car" width="300" height="195" />
    </p>
    <p>
      Have you <a href="http://feeds.feedburner.com/BothSidesOfTheTable">subscribed yet to my feed on Feedburner</a> or do you want it <a href=
      "http://feedburner.google.com/fb/a/mailverify?uri=BothSidesOfTheTable">delivered by email</a>? &nbsp;I know that people <a href="http://twitter.com/msuster">prefer to use Twitter</a> as their
      RSS feed these days but wanted to remind anybody else that you can still get the traditional feed.
    </p>
    <p>
      I was going to save this post for a while but the “<a href="http://techcrunch.com/2010/02/28/dont-pull-a-patzer-and-other-lessons-learned-on-our-trip-down-sand-hill-road/">Patzer Problem</a>”
      meme has forced my hand. &nbsp;I, for one, am <a href=
      "http://www.bothsidesofthetable.com/If%20we%20are%20doing%20things%20right%20and%20our%20company%20founders%20are%20successful,%20then%20over%20the%20long%20run%20we%20should%20be%20successful.%20%20%20If%20we%20get%20to%20the%20point%20where%20our%20founders%20are%20successful%20but%20we%20can't%20be,%20we%20should%20be%20rethinking%20our%20business.">
      with Rob Hayes</a> of First Round Capital&nbsp;on this one.
    </p>
    <blockquote>
      <p>
        <span style="font-family:'trebuchet ms', verdana, helvetica, arial, sans-serif;line-height:18px;font-size:12px;color:#333333">“If we are doing things right and our company founders are
        successful, then over the long run we should be successful. If we get to the point where our founders are successful but we can’t be, we should be rethinking our business.”</span>
      </p>
    </blockquote>
    <p>
      I have a philosophy. &nbsp;A thesis. &nbsp;An&nbsp;entrepreneur thesis. &nbsp;I’m not talk about the age old debate amongst investors whether you back entrepreneurs, markets or products (or as
      many people like to hedge – product / market fit). &nbsp;I’m unequivocal on that topic. &nbsp;It’s entrepreneurs I back. &nbsp;I’m on the record as saying I’m 70% management, 30% market.
      &nbsp;We’ll have that debate another day, I promise.
    </p>
    <p>
      Today’s post is about my investment thesis. &nbsp;It’s what I call the “entrepreneur thesis.” &nbsp;My investment philosophy is to back the best possible entrepreneurs I can and to stick by
      them through the growth (or sale) of the company. &nbsp;I’ve outlined already <a href="http://www.bothsidesofthetable.com/entrepreneur-dna/">what I believe makes a great entrepreneur</a> and
      I’ve stated unequivocally that this is a subjective view of what it takes. &nbsp;But when I’m looking to invest the dollars that my Limited Partners have entrusted my firm with I’m going with
      my view.
    </p>
    <p>
      So what is this “entrepreneur thesis?” &nbsp;It’s the view that I back great entrepreneurs and help them pursue their dreams no matter what. &nbsp;Sometimes this will mean we collectively
      double down and try to build a bigger business and sometimes it may mean selling earlier than I had thought we would. &nbsp;I know this sounds Polly Anna-ish. &nbsp;I’m not just writing that “I
      love entrepreneurs” to curry favor with startup CEO’s. &nbsp;Anyone who has ever worked with me knows that I’m no pushover and I’m certainly not a wallflower. &nbsp;I’ll argue my point
      vociferously. &nbsp;But I don’t believe in betting against founders.
    </p>
    <p>
      Let me explain.
    </p>
    <p>
      A few years ago I was having dinner with a friend of mine who works for one of the biggest known Silicon Valley firms. &nbsp;He was telling me about a deal he had done. &nbsp;He invested $8
      million in a company in the computer networking space. &nbsp;They had an offer to be acquired for $80 million, which would have dramatically changed the lives of the founders forever. &nbsp;My
      friend blocked the deal. &nbsp;It was “only” a 2.5x for him.
    </p>
    <p>
      His logic was, “when I invested the management team knew that I wanted a multi-hundred million dollar exit so they shouldn’t be surprised. &nbsp;This return won’t be enough for me to justify to
      my partners.” &nbsp;I literally said to my friend, “You’re a dick. &nbsp;Do you not see the consequences you’ve weaved? &nbsp;You’ve now got a management team that hates you. &nbsp;They hate
      you for life. &nbsp;They will tell every other entrepreneur in town not to work for you. &nbsp;Presumably they are talented if they created a company worth $80 million. &nbsp;They’ll never work
      with you again. &nbsp;Nor will any of their friends or colleagues. &nbsp;Are you that short sighted?”
    </p>
    <p>
      I kid you not when I use quotes there. &nbsp;My wife was really uncomfortable because she was there and so was his wife. &nbsp;I’ve known this guy and his wife for a LONG time. &nbsp;My wife
      was actually mad at me for being so blunt. &nbsp;But she knows it’s a character flaw of mine so she forgives me (I hope).
    </p>
    <p>
      To this day I still don’t understand what he was thinking.
    </p>
    <p>
      I’ve had the conversation of what will happen upon an exit with founders so many times I feel like a broken record. &nbsp;Before I outline my views let me give you one more story.
    </p>
    <p>
      In 2006, Steven Dietz, a partner at my firm, GRP Partners, had given me $500,000 in a seed in convertible debt when I started my second company, Koral. &nbsp;GRP Partners had also funded my
      first company. &nbsp;I had an offer to sell my company to Salesforce.com in 2007. &nbsp;Steven knew that from a fund perspective he wasn’t going to earn the amount of money that a typical VC
      might look for since we were selling early. &nbsp;But he also knew that it would change my life forever. &nbsp;He was grateful since I stuck with my first company, BuildOnline, well beyond when
      others would have (since I had taken great dilution during the dot com bust.). &nbsp;He decided to let me earn. &nbsp;I will never forget that.
    </p>
    <p>
      So it was kind of obvious when Steven and Yves Sisteron (the partner on my first deal) offered me a role as a partner in their firm that I would work here. &nbsp;I knew that we were aligned
      intellectually and ethically. &nbsp;I had initially called them wondering if they’d fund my third venture. &nbsp;I never imagined I would switch sides of the table.
    </p>
    <p>
      So, to my thesis:
    </p>
    <p>
      <strong>1.</strong> <span style="white-space:pre"><strong>Work with the best at early stages</strong>:</span> I’d like to get involved with capital efficient companies early in their lifecycle.
      &nbsp;I want to back entrepreneurs that I believe have similar ethical values, are fun to work with, trust me, have big aspirations, are willing to work hard, are smart and want to have an
      impact on the world. &nbsp;I want to see small amounts of money go in and I often tell these entrepreneurs, “I don’t have a goal for you to come back and quickly ask for more money. &nbsp;Go
      slowly if you need. &nbsp;Spend wisely – you need to “grow into your valuation.” &nbsp;And by investing smaller amounts at early stages I am impacted if a quicker-than-anticipated sale happens.
      &nbsp;I view this as The Patzer Opportunity.
    </p>
    <p>
      <strong>2.</strong> <span style="white-space:pre"><strong>Go in planning for a big outcome</strong>:</span> I tell each person that I am going to work with the same story. &nbsp;I hope to build
      a billion dollar company with them. &nbsp; GRP Partners has created more than a dozen of these so as a firm we know something about creating big companies. &nbsp;I don’t go into deals with a
      plan to sell for $20 million. &nbsp;$100 million at least.
    </p>
    <p>
      <strong>3.</strong> <span style="white-space:pre"><strong>Keep options on the table</strong>:</span> I believe in my bones that entrepreneurs shouldn’t “over raise” capital. &nbsp;They should
      right size their capital raises. &nbsp;That doesn’t mean being cheap. &nbsp;That doesn’t mean raising the least amount possible. &nbsp;But it means not over raising money. &nbsp;I know I’m
      being vague. &nbsp;Each situation warrants different amounts. &nbsp;But let me give you an example. &nbsp;If you can raise $2 million or $10 million up front (maybe you’re a hot entrepreneur in
      a hot space) I know that my vote would be with the $2 million (again depending on the situation). &nbsp;If you raise $2 million you preserve your options. &nbsp;Somebody may come along and
      offer you $25 million to buy your company. &nbsp;You might like to accept that. &nbsp;It might just change your life (for example if you personally own 33% of the company). &nbsp;Or if you
      didn’t sell and the next round comes along. &nbsp;You raise $5 million at a $20 million post money. &nbsp;That by definition means you were hot. &nbsp;You should still be able to sell for $50
      million. &nbsp;At each step you preserve your options. &nbsp;If you go to quickly to take down a $50 million round from late stage funds you have one option – go big or go home.
    </p>
    <p>
      <strong>4.</strong> <span style="white-space:pre"><strong>Don’t block founders from selling:</strong></span> OK, so if you raise $2 million at a $10 million post money (e.g. maybe I own 20% of
      the company) or $5 million at a $20 million post (I own 25%) shouldn’t I block that sale of a company a cheap price? &nbsp;This is the “Patzer Problem.” &nbsp;Some people assert that the later
      stage investors didn’t make a high enough return. &nbsp;My view: If you’re absolutely convinced that it is the right thing to sell I need to support you. &nbsp;My bet: if you sell and I helped
      you earn and was a key contributor to your company then you’ll tell everybody you know to work with me. &nbsp;Over time I should see great deals as a result. &nbsp;When you go to do your next
      company (most entrepreneurs do) you’ll call me first in the way that I called GRP Partners for both my second company and my third (which never materialized).
    </p>
    <p>
      <strong>5.</strong> <span style="white-space:pre"><strong>Persuade you and align you to swing for the fences with me:</strong></span> But of course there is more to my views. &nbsp;I’m hoping
      that when your $25 million or $50 million exit comes along I can convince you (if I believe it) that we should swing for the fences and create a larger company. &nbsp;If I really believe it I
      ought to <a href="http://www.bothsidesofthetable.com/2009/09/02/should-founders-be-allowed-to-take-money-off-the-table/">let you earn now by taking money off of the table</a>. &nbsp;I have
      already written about this. &nbsp;I believe our incentives need to be aligned at this point in time. &nbsp;You need to have your “feed the family” money so that you want to swing for the
      fences. &nbsp;You also need to believe that the higher outcome is possible. &nbsp;If I’m not willing to let you take money off of the table and if I’m not willing to put more money into the
      company to help you achieve your goals then how convinced am I really about the upside?
    </p>
    <p>
      I’m not trying to be nice to entrepreneurs so you’ll read my blog or take my money. &nbsp;It is simply the thesis that I believe in. &nbsp;It’s the “entrepreneur thesis.” &nbsp;Let me outline
      the contra viewpoint, which is seldom expressed openly, but it what I believe gives our industry a bad reputation.
    </p>
    <p>
      • <strong>Large early stage rounds</strong> – Too many investors whose funds are too large feel that they need to put “a lot of capital to work” in order to justify being involved with your
      company. &nbsp;So much so, that when I was raising capital in 2006 and asked for $2 million several funds told me that they wouldn’t give me money unless I’d take $5 million. &nbsp;And they
      actually hinted that I could get a better valuation. &nbsp;Tempting. &nbsp;The problem is that it takes options off of the table. &nbsp; And the same logic that forced them to put $5 million to
      work also forces them to block your sale at prices that might just change your life.
    </p>
    <p>
      <strong>•</strong> <span style="white-space:pre"><strong>C</strong></span><strong>hange management teams</strong> – A lot of well known, historical VCs have a belief that management teams are
      expendable. &nbsp;You simply bring in a more talented team after your $10 million investors and the founders become senior members of the team but don’t run things. &nbsp;I accept that this may
      sometimes happen. &nbsp;But it’s the absolute last course of action for me. &nbsp;I believe that a motivated founder trumps a well-hired mercenary CEO any day of the week.
    </p>
    <p>
      <strong>•</strong> <span style="white-space:pre"><strong>O</strong></span><strong>utsized returns through sharp elbows</strong> – OK, here is what it boils down to. &nbsp;I really believe that
      some firms have the strategy of edging out the entrepreneurs, bringing in a new management team, recapitalizing the company, minimizing the founders’ share and taking maximum ownership for the
      VCs. &nbsp;This is dreadful behavior but I truly believe that some firms go into investments with this mindset. &nbsp;I’ve heard very similar stories in the VC corridors. &nbsp;”Well, we’ll
      just do their next round and take 50% of the company. &nbsp;They’re struggling to raise funds anyways.” &nbsp;Look – it does happen. &nbsp;And sometimes it is warranted. &nbsp;I just don’t
      believe that any VC should go in with this strategy. &nbsp;It’s why I always tell entrepreneurs to <a href=
      "http://www.bothsidesofthetable.com/2010/02/08/how-do-you-reference-check-a-vc/">reference check their VCs</a>.
    </p>
    <p>
      Listen, who you work with matters. &nbsp;Brand isn’t everything. &nbsp;And firms that get outsized returns on occasion to so at the expense of the founders. &nbsp;My thesis is that I should
      align myself with my customers (the CEOs) as it is the most likely path to great financial returns for my investors. &nbsp;And if I’m in this business for a long time I’m betting this will pay
      off. &nbsp;You? &nbsp;Taking VC money is more difficult than marriage. &nbsp;At least if you fall out of love you can legally get divorced in America. &nbsp;Not so venture capital. &nbsp;Raise
      wisely.
    </p>
    <p>
      Update: After reading the comments I want to make one thing clear. &nbsp;I don’t believe this strategy has any sacrifices – I believe it will mathematically pay off bigger over time. Why?
    </p>
    <p>
      - getting invited to be in the handful of deals each year in the US that really matter vs. getting mediocre deals<br />
      - getting the best entrepreneurs to work with you multiple times<br />
      - finding the right balance where sometimes the “early sale” doesn’t happen because you allowed some founder liquidity (on a case-by-case basis) that enabled you to swing for the fences where
      other entrepreneurs may have pushed for an early exit when incentives weren’t aligned
    </p>
    <p>
      <span style="color:#999999"><em>*photo taken from the Mint.com blog</em></span>
    </p><img src="http://www.bothsidesofthetable.com/?ak_action=api_record_view&amp;id=2022&amp;type=feed" alt="" />
  </body>
</html></div>	
</div>]]></description>
            <author>admin</author>
            <pubDate>Wed, 03 Mar 2010 02:40:07 UT</pubDate>
            <guid>/entry/13/38</guid>
        </item>
        <item>
            <title>Bookmarked the page: When using open source makes you an enemy of the state | Technology | ...</title>
            <link>http://www.jeremi.info/entry/when-using-open-source-makes-you-an-enemy-of-the-state--technology--guard-3-172.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.guardian.co.uk/technology/blog/2010/feb/23/opensource-intellectual-property" target="_blank">When using open source makes you an enemy of the state | Technology | guardian.co.uk</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 02 Mar 2010 16:39:03 UT</pubDate>
            <guid>/entry/3/172</guid>
        </item>
        <item>
            <title>Bookmarked the page: Specialized Riders Club China</title>
            <link>http://www.jeremi.info/entry/specialized-riders-club-china-3-171.html</link>
            <description><![CDATA[<div class="delicious">
	<div  class="title">Bookmarked the page <a href="http://www.s-riders.com/index.php?option=com_ccboard&view=forumlist&Itemid=3&lang=en" target="_blank">Specialized Riders Club China</a></div>
	<div  class="description"></div>
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 02 Mar 2010 06:30:02 UT</pubDate>
            <guid>/entry/3/171</guid>
        </item>
        <item>
            <title>@benjmestrallet on my computer :D soon to be online</title>
            <link>http://www.jeremi.info/entry/benjmestrallet-on-my-computer-d-soon-to-be-online-7-203.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/benjmestrallet" target="_blank">benjmestrallet</a> on my computer :D soon to be online</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 02 Mar 2010 01:56:08 UT</pubDate>
            <guid>/entry/7/203</guid>
        </item>
        <item>
            <title>@benjmestrallet  What did you get?</title>
            <link>http://www.jeremi.info/entry/benjmestrallet--what-did-you-get-7-202.html</link>
            <description><![CDATA[
<div class="twitter">
	<div class="title">@<a href="http://twitter.com/benjmestrallet" target="_blank">benjmestrallet</a>  What did you get?</div>
		
</div>]]></description>
            <author>admin</author>
            <pubDate>Tue, 02 Mar 2010 00:34:44 UT</pubDate>
            <guid>/entry/7/202</guid>
        </item>
        <item>
            <title>Shared the story: Building applications on top of Google Apps</title>
            <link>http://www.jeremi.info/entry/building-applications-on-top-of-google-apps-13-36.html</link>
            <description><![CDATA[
<div class="googlereader">
	<div class="note"></div>
	<div class="content"><!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>
    <title></title>
  </head>
  <body>
    <br />
    <div style="direction:inherit;margin-bottom:0px;margin-left:0px;margin-right:0px;margin-top:0px">
      <i><span style="font-family:arial"><span style="font-size:x-small"><b><span style="color:#666666">Editor's Note:&nbsp;</span></b></span><span style="font-size:x-small"><b><span style=
      "color:#666666">This post was written by Michael Cohn and Steve Ziegler from&nbsp;</span><a href="http://www.cloudsherpas.com/" style="color:#551a8b" title="Cloud Sherpas"><span style=
      "color:#666666">Cloud Sherpas</span></a><span style="color:#666666">, a software development and professional services company. SherpaTools™ for Google Apps extends Google Apps capabilities. We
      invited Cloud Sherpas to share their experiences building an application on top of Google Apps utilizing some of our APIs.&nbsp;<span style=
      "border-collapse:collapse;color:black;font-family:Arial, Helvetica, sans-serif;font-style:normal;font-weight:normal;line-height:19px"><i><span style="font-family:arial"><b><span style=
      "color:#666666"><span style="background-color:white">Cloud Sherpas will also be participating in the&nbsp;</span><a href=
      "http://www.google-io.com/index.cfm?fuseaction=email.Redirect&amp;EID=78DC6271730A" style="color:#2a5db0"><span style="background-color:white">Developer Sandbox</span></a><span style=
      "background-color:white">&nbsp;at&nbsp;</span><a href="http://www.google-io.com/index.cfm?fuseaction=email.Redirect&amp;EID=3D5262717403" style="color:#2a5db0"><span style=
      "background-color:white">Google I/O</span></a><span style="background-color:white">&nbsp;this May where they'll be demoing their use of Google technologies and answering questions from
      attendees.</span></span></b></span></i></span></span></b></span></span></i>
    </div>
    <div style="direction:inherit;margin-bottom:0px;margin-left:0px;margin-right:0px;margin-top:0px">
      <i><b><br /></b></i>
    </div>
    <div style="direction:inherit;margin-bottom:0px;margin-left:0px;margin-right:0px;margin-top:0px">
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <i><span style="font-style:normal"><span style="font-size:small"><span style="font-family:georgia">The&nbsp;<a href="http://www.sherpatools.com/" title="Directory Manager">Directory
        Manager</a>&nbsp;<span style="font-size:small"><span style="color:black">module of SherpaTools allows administrators to easily manage User Profiles and Shared Contacts in the Google Apps
        directory. SherpaTools is</span></span><span style="color:black"><span style="font-style:normal"><span style="font-size:small"><span style="font-family:georgia">&nbsp;built on Google App
        Engine (GAE) utilizing the&nbsp;<a href="http://code.google.com/webtoolkit/" style="color:#551a8b" title="Google Web Toolkit">Google Web Toolkit</a>&nbsp;(GWT), and makes heavy use of
        the&nbsp;<a href="http://code.google.com/apis/apps/" style="color:#551a8b" title="Google Apps Management and Application APIs">Google Apps Management and Application APIs</a>&nbsp;to provide
        new administrator and end-user features.</span></span></span></span></span></span></span></i>
      </div>
      <div style="direction:inherit;margin-bottom:0px;margin-left:0px;margin-right:0px;margin-top:0px">
        <span style="font-size:small"><br /></span>
      </div>
      <div style="direction:inherit;margin-bottom:0px;margin-left:0px;margin-right:0px;margin-top:0px">
        <span style="font-family:Georgia"><span style="font-size:small">Some customers have tens of thousands of member accounts in their domain. SherpaTools Directory Manager makes it easy to
        retrieve, edit, and manage user accounts.</span></span>&nbsp;<span style="font-family:Georgia"><span style="font-size:small"><span style="color:black">It also allows you to import or export
        data in bulk from a Google Docs spreadsheet. This post explains how Directory Manager works with Google Apps, and how we built it.&nbsp;</span></span></span>
      </div><span style="font-size:small"><br /></span><br />
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <i><span style="font-style:normal"><span style="font-size:small"><span style="font-family:georgia">Authentication to SherpaTools is achieved by using Google Apps as the&nbsp;<a href=
        "http://code.google.com/apis/apps/sso/openid_reference_implementation.html" style="color:#551a8b" title="OpenID identity provider">OpenID identity provider</a>. &nbsp;If a user is already
        logged into Google Apps, they can access SherpaTools without ever providing SherpaTools their credentials. &nbsp;This Single Sign-On experience greatly enhances user adoption and provides an
        added security benefit. &nbsp;If the user is not already logged into Google Apps, they are routed to a Google login page. &nbsp;With OpenID, SherpaTools never handles the user's
        credentials.</span></span></span></i>
      </div><span style="font-size:small"><br /></span><br />
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <i><span style="font-style:normal"><span style="font-size:small"><span style="font-family:georgia">Once logged in, SherpaTools securely requests authorization from Google Apps
        using&nbsp;<a href="http://code.google.com/apis/gdata/docs/auth/oauth.html#2LeggedOAuth" style="color:#551a8b" title="2-legged OAuth">2-legged OAuth</a>&nbsp;(2LO) to make API service calls
        on behalf of the user. &nbsp;Since the app has both an end-user and administrator view, it first retrieves the logged in user's information from Google Apps via a 2LO-authorized call to
        the&nbsp;<a href="http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_developers_protocol.html#Retrieve_Account_Example" title="UserService">UserService</a>&nbsp;of the Provisioning
        API.&nbsp; Depending on the information sent in the API response, the user is either presented with the administrator application or the end-user screen.</span></span></span></i>
      </div>
      <h3 style="font-size:12pt">
        <span style="font-weight:normal"><i><span style="font-style:normal"><a href="http://code.google.com/apis/accounts/docs/OAuth.html#GoogleAppsOAuth" style="color:#551a8b" title=
        "Two-legged OAuth"><span style="font-family:Georgia"><span style="font-size:small">Two-legged OAuth</span></span></a><span style="font-family:Georgia"><span style=
        "font-size:small">&nbsp;(2LO) allows 3rd-party applications like SherpaTools to make authorized API calls to Google Apps on behalf of a user. Here is how we set up
        our&nbsp;</span></span><a href="http://code.google.com/apis/contacts/docs/3.0/developers_guide_java.html" title="Google Data API ContactsService"><span style=
        "font-family:Georgia"><span style="font-size:small">Google Data API ContactsService</span></span></a><span style="font-family:Georgia"><span style="font-size:small">&nbsp;that will be
        fetching User Profiles to use 2LO:<span style="font-family:Verdana;font-size:13px"><i><span style="font-style:normal"><span style="font-size:x-small"><span style=
        "font-family:'Courier New'">&nbsp;</span></span></span></i></span></span></span></span></i></span>
      </h3>
      <blockquote style=
      "border-bottom-color:rgb(221, 221, 221);border-bottom-style:none;border-bottom-width:1px;border-color:initial;border-left-color:rgb(221, 221, 221);border-left-style:none;border-left-width:1px;border-right-color:rgb(221, 221, 221);border-right-style:none;border-right-width:1px;border-top-color:rgb(221, 221, 221);border-top-style:none;border-top-width:1px;border-width:initial;margin-left:40px;margin-right:0pt;padding-bottom:10px;padding-left:10px;padding-right:10px;padding-top:10px">
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">ContactsService contactsService =</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;new
          ContactsService(GlobalConstants.APPLICATION_NAME);</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">GoogleOAuthParameters parameters = new
          GoogleOAuthParameters();</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style=
          "font-family:Georgia, 'Times New Roman', serif">parameters.setOAuthConsumerKey(GlobalConstants.CONSUMER_KEY);</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style=
          "font-family:Georgia, 'Times New Roman', serif">parameters.setOAuthConsumerSecret(GlobalConstants.CONSUMER_SECRET);</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">OAuthHmacSha1Signer signer = new
          OAuthHmacSha1Signer();</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">try {</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style=
          "font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;&nbsp;contactsService.setOAuthCredentials(parameters, signer);</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">} catch (OAuthException e) {</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;&nbsp;// not expected if secret is
          up-to-date</span></span></span></i>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">}</span></span></span></i>
        </div>
      </blockquote><i><span style="font-style:normal"><span style="font-family:Georgia"><span style="font-size:small">As long as our key/secret pair is correct and the Google Apps customer
      has&nbsp;</span></span><a href="http://www.google.com/support/a/bin/answer.py?hl=en&amp;answer=162106" title="OAuth: Managing API client access"><span style="font-family:Georgia"><span style=
      "font-size:small">entitled our OAuth key</span></span></a><span style="font-family:Georgia"><span style="font-size:small">&nbsp;to have access to their Contacts API feed, Google authorizes
      SherpaTools to continue to make API calls. &nbsp;There are two other settings that should be mentioned in configuring the service to work well on GAE. &nbsp;First, since we are dealing with
      somewhat sensitive data, all calls to Google Apps are made over SSL. &nbsp;To ensure this, we simply set the useSSL flag for the contacts service. &nbsp;Next, the&nbsp;</span></span><a href=
      "http://code.google.com/appengine/docs/java/urlfetch/overview.html#Requests" title="URLFetch timeout information"><span style="font-family:Georgia"><span style="font-size:small">default
      request/response timeout</span></span></a><span style="font-family:Georgia"><span style="font-size:small">&nbsp;on GAE for these API calls is only five seconds out of a possible ten.
      &nbsp;Since we will be retrieving as much data as we can within that ten second window to reduce the total number of operations to complete the work, we raise our connection timeout up to just
      short of that maximum, 9500 milliseconds:</span></span></span></i><br />
      <blockquote style=
      "border-bottom-color:rgb(221, 221, 221);border-bottom-style:none;border-bottom-width:1px;border-color:initial;border-left-color:rgb(221, 221, 221);border-left-style:none;border-left-width:1px;border-right-color:rgb(221, 221, 221);border-right-style:none;border-right-width:1px;border-top-color:rgb(221, 221, 221);border-top-style:none;border-top-width:1px;border-width:initial;margin-left:40px;margin-right:0pt;padding-bottom:10px;padding-left:10px;padding-right:10px;padding-top:10px">
      <i><span style="font-style:normal"><span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">contactsService.useSsl();</span></span></span></i><br />
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <i><span style="font-style:normal"><span style="font-size:x-small"><span style=
          "font-family:Georgia, 'Times New Roman', serif">contactsService.setConnectTimeout(9500);</span></span></span></i>
        </div>
      </blockquote>
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <i><span style="font-style:normal"><span style="font-size:small"><span style="font-family:georgia">Cloud Sherpas embraced a number of Google Web Toolkit best practices to ensure scalability
        of SherpaTools. &nbsp;For example, once the app determines which screen the user should see, SherpaTools employs&nbsp;<a href="http://code.google.com/p/google-web-toolkit/wiki/CodeSplitting"
        style="color:#551a8b" title="CodeSplitting">GWT CodeSplitting</a>&nbsp;to optimize and reduce the amount of javascript that needs to be downloaded by the browser client. &nbsp;The app also
        uses the&nbsp;<a href="http://code.google.com/webtoolkit/doc/latest/DevGuideServerCommunication.html#DevGuideRemoteProcedureCalls" style="color:#551a8b" title="GWT RPC framework">GWT RPC
        framework</a>&nbsp;designed according to the&nbsp;<a href="http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html" title="command pattern">command
        pattern</a>&nbsp;to transparently communicate with the server, and was architected using the&nbsp;<a href="http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html" title=
        "model-view-presenter (MVP) design pattern">model-view-presenter (MVP) design pattern</a>&nbsp;to allow multiple developers to work on the app simultaneously.</span></span></span></i>
      </div><span style="font-size:small"><br /></span><br />
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <i><span style="font-style:normal"><span style="font-size:small"><span style="font-family:georgia">After a Google Apps administrator logs into SherpaTools for the first time, the app caches
        some key information for better performance. &nbsp;For example, to populate the User Profile and Shared Contacts lists, the app retrieves the IDs and names of all contacts using
        the&nbsp;<a href="http://code.google.com/apis/apps/profiles/developers_guide_protocol.html" title="Profiles Data API">User Profiles API</a>&nbsp;and&nbsp;<a href=
        "http://code.google.com/apis/apps/shared_contacts/gdata_shared_contacts_api_reference.html" title="Shared Contacts API">Shared Contacts API</a>&nbsp;respectively, and writes this information
        to the data store and&nbsp;<a href="http://code.google.com/appengine/docs/java/memcache/overview.html" title="memcache">memcache</a>.&nbsp; And for domains with large data sets, SherpaTools
        uses&nbsp;<a href="http://code.google.com/appengine/docs/java/taskqueue/overview.html" title="task queues">task queues</a>&nbsp;to break up operations into smaller
        chunks.&nbsp;</span></span></span></i>
      </div><i><span style="font-size:small"><br /></span></i><br />
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <span style="font-family:georgia"><span style="font-size:small">S</span></span><span style="font-family:Georgia"><span style="font-size:small">ince we have to scale the export to handle the
        contact information of tens of thousands of contact entries, there is no way we can retrieve all of those entries in one request. &nbsp;Retrieval of this set of information requires breaking
        the operation up into smaller sub-tasks. &nbsp;Fortunately, both the GAE&nbsp;</span></span><a href="http://code.google.com/appengine/docs/java/taskqueue/overview.html" title=
        "Task Queue API"><span style="font-family:Georgia"><span style="font-size:small">Task Queue API</span></span></a><span style="font-family:Georgia"><span style="font-size:small">&nbsp;and the
        Google Datastore APIs make it easy to divide the retrieval into smaller chunks. &nbsp;</span></span>
      </div><br />
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <span style="font-family:Georgia"><span style="font-size:small">GAE Task Queues enable background queueing of HTTP operations (GET, POST, etc.) to arbitrary URLs within our application.
        &nbsp;Each of these queued operations are subject to the same restrictions of any other GAE HTTP operation request. &nbsp;Of particular note is the aforementioned 10 second window to perform
        our remote service call and the overall 30 second window to complete the total work within a task request. Also, since the Task Queue works from the same set of URLs as are made available to
        the rest of our application, we need to make sure that there is no ability for unwanted external attempts to execute tasks. &nbsp;We followed the&nbsp;</span></span><a href=
        "http://code.google.com/appengine/docs/java/taskqueue/overview.html#Securing_URLs_for_Tasks" title="Securing URLs for Tasks"><span style="font-family:Georgia"><span style=
        "font-size:small">recommended way</span></span></a><span style="font-family:Georgia"><span style="font-size:small">&nbsp;of eliminating this possibility by restricting outside access to just
        our application's admins. To do this we added the following to our web.xml configuration file.</span></span><br />
        <span style="font-family:Georgia"><span style="font-size:small"><br /></span></span><br />
        <span style="font-family:Georgia"><span style="font-size:small">This constraint restricts all urls starting with /task/ to only be accessible either from system calls such as from the Task
        Queue or by admins. &nbsp;The NONE transport guarantee is also important to mention. &nbsp;We initially attempted to encrypt our task calls using SSL with a transport guaranteed of
        CONFIDENTIAL, but, at the time we attempted this, execution ceased to function properly. &nbsp;Since all of the traffic of all of these calls are strictly on Google's internal network we had
        no issue with making these calls without SSL.</span></span>
      </div>
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <span style="font-family:Georgia"><span style="font-size:small">Now that we have our tasks properly secured, we can create a method for sending our User Profiles fetch task request to the
        Task Queue:</span></span>&nbsp;
      </div>
      <blockquote style=
      "border-bottom-color:rgb(221, 221, 221);border-bottom-style:none;border-bottom-width:1px;border-color:initial;border-left-color:rgb(221, 221, 221);border-left-style:none;border-left-width:1px;border-right-color:rgb(221, 221, 221);border-right-style:none;border-right-width:1px;border-top-color:rgb(221, 221, 221);border-top-style:none;border-top-width:1px;border-width:initial;margin-left:40px;margin-right:0pt;padding-bottom:10px;padding-left:10px;padding-right:10px;padding-top:10px">
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">public void fetchUserProfilesPageTask(String spreadsheetTitle,</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;String loggedInEmailAddress, String nextLink, String memcacheKey)
          {</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;Queue queue = QueueFactory.getQueue(USER_PROFILES_QUEUE);</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;TaskOptions options =</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;
          &nbsp;TaskOptions.Builder.url("/task/"+USER_PROFILES_FETCH_URL);</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;options.param("spreadsheetTitle", spreadsheetTitle);</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;options.param("loggedInEmailAddress", loggedInEmailAddress);</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;options.param("nextLink", nextLink);</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;options.param("memcacheKey", memcacheKey);</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp;queue.add(options);</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">}</span></span>
        </div>
      </blockquote>
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
        <span style="font-family:Georgia"><span style="font-size:small">The url points to a Java HttpServlet that handles the task's HTTP POST, parses the sent parameters, and calls a method to
        perform the work:</span></span>
      </div>
      <blockquote style=
      "border-bottom-color:rgb(221, 221, 221);border-bottom-style:none;border-bottom-width:1px;border-color:initial;border-left-color:rgb(221, 221, 221);border-left-style:none;border-left-width:1px;border-right-color:rgb(221, 221, 221);border-right-style:none;border-right-width:1px;border-top-color:rgb(221, 221, 221);border-top-style:none;border-top-width:1px;border-width:initial;margin-left:40px;margin-right:0pt;padding-bottom:10px;padding-left:10px;padding-right:10px;padding-top:10px">
      <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
          IOException {</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;String loggedInEmailAddress =
          req.getParameter("loggedInEmailAddress");</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;String spreadsheetTitle = req.getParameter("title");</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;String nextLink = req.getParameter("nextLink");</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;String memcacheKey = req.getParameter("memcacheKey");</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;// do the work:</span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span><span style="font-family:Georgia, 'Times New Roman', serif">&nbsp;&nbsp; &nbsp;fetchUserProfilesPage(spreadsheetTitle, loggedInEmailAddress, nextLink,
          memcacheKey);</span></span></span>
        </div>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-size:x-small"><span style="font-family:Georgia, 'Times New Roman', serif">}</span></span>
        </div>
      </blockquote>
      <div style="direction:inherit;margin-bottom:0px;margin-left:0px;margin-right:0px;margin-top:0px">
        <h1 style="font-size:18pt">
          <span style="font-family:Georgia"><span style="font-size:small">Summary</span></span>
        </h1>
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-family:Georgia"><span style="font-size:small">This post explains how SherpaTools Directory Manager uses Two Legged OAuth for authentication, and&nbsp;<span style=
          "font-family:Georgia"><span style="font-size:small">GAE&nbsp;</span></span><a href="http://code.google.com/appengine/docs/java/taskqueue/overview.html" title="Task Queue API"><span style=
          "font-family:Georgia"><span style="font-size:small">Task Queue API</span></span></a><span style="font-family:Georgia"><span style="font-size:small">&nbsp;and the Google Datastore APIs to
          make it easy to divide large retrievals over long intervals into smaller chunks. Other long-running, divisible operations, can use this same approach to spread work across a string of tasks
          queued in the GAE Task Queue. We would love to hear what you think of this approach and if you have come up with your own solution for similar issues.</span></span></span></span>
        </div><span style="font-size:small"><br /></span><br />
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-family:Georgia"><span style="font-size:small">Next week we will discuss how we used the User Profile API to retrieve the data sets and the Document List Data API to
          populate a Google Spreadsheet.</span></span>
        </div><span style="font-size:x-small"><br /></span><br />
        <div style="direction:inherit;margin-bottom:0px;margin-top:0px">
          <span style="font-family:Georgia"><span style="font-size:small">Thanks to the&nbsp;</span></span><a href="http://www.cloudsherpas.com/" style="color:#551a8b" title=
          "Cloud Sherpas"><span style="font-family:Georgia"><span style="font-size:small">Cloud Sherpas</span></span></a><span style="font-family:Georgia"><span style="font-size:small">&nbsp;team for
          authoring this post. Check out SherpaTools at&nbsp;</span></span><span style="font-family:Georgia"><span style="font-size:small"><a href="http://www.sherpatools.com/" style="color:#551a8b"
          title="www.sherpatools.com">www.sherpatools.com</a></span></span>
        </div>
        <div>
          <span style="font-family:Georgia"><br /></span>
        </div>
      </div>
    </div>
    <div>
      <img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/1377183911445147227-6198414746376210706?l=googleappsdeveloper.blogspot.com" alt="" />
    </div><img src="http://feeds.feedburner.com/~r/GoogleAppsDeveloperBlog/~4/N6Fu7gB3rEw" height="1" width="1" />
  </body>
</html></div>	
</div>]]></description>
            <author>admin</author>
            <pubDate>Mon, 01 Mar 2010 13:10:07 UT</pubDate>
            <guid>/entry/13/36</guid>
        </item>
        <item>
            <title>Shared the story: Create and Deploy a JAX-RS REST service on Google App Engine</title>
            <link>http://www.jeremi.info/entry/create-and-deploy-a-jax-rs-rest-service-on-google-app-engine-13-37.html</link>
            <description><![CDATA[
<div class="googlereader">
	<div class="note"></div>
	<div class="content"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title></title>
  </head>
  <body>
  </body>
</html></div>	
</div>]]></description>
            <author>admin</author>
            <pubDate>Mon, 01 Mar 2010 13:10:07 UT</pubDate>
            <guid>/entry/13/37</guid>
        </item>
    </channel>
</rss>
