<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>maybe5</title>
	<atom:link href="http://blog.maybe5.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.maybe5.com</link>
	<description>This is where my random thoughts go.</description>
	<lastBuildDate>Sat, 19 Feb 2011 16:09:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Auto-generated JQuery Access to WCF REST Service</title>
		<link>http://blog.maybe5.com/2010/03/27/auto-gen-jquery-access-to-wcf-rest/</link>
		<comments>http://blog.maybe5.com/2010/03/27/auto-gen-jquery-access-to-wcf-rest/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 02:58:44 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=299</guid>
		<description><![CDATA[I&#8217;ve been working on a WCF REST service using Visual Studio 2010 RC, .NET 4.0 and Entity Framework. I started building a quick site to administer some parts of the app and debug the data easier. This being a location aware project, I decided to use Bing Maps and therefore a lot of javascript and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a WCF REST service using Visual Studio 2010 RC, .NET 4.0 and Entity Framework.</p>
<p>I started building a quick site to administer some parts of the app and debug the data easier. This being a location aware project, I decided to use Bing Maps and therefore a lot of javascript and JQuery goodness.</p>
<p>After writing a the javascript code to perform basic CRUD operations on two data types it became clear this was going to be very repetitive. The code required to perform CRUD operations is very consistent. Consistent like the <a href="http://blogs.msdn.com/endpoint/archive/2010/01/11/clients-and-the-automatic-help-page-in-wcf-webhttp-services.aspx" target="_blank">auto-generated help pages</a> are.</p>
<p>I decided to build a way to auto-generate a javascript access object to my WCF REST service.  Here&#8217;s my first crack at it.</p>
<h2>The Pitch</h2>
<p><span style="font-family: arial, sans-serif; line-height: normal; border-collapse: collapse;">A js file that is a one-to-one javascript clone of the a webservice api. All implemented using jquery Ajax callbacks.<br />
&#8220;Sure. What&#8217;s so special about that?&#8221;</span></p>
<p>Here&#8217;s what&#8217;s so special my friends. Its 100% generated on the fly directly by the webservice itself! [oohs from the crowd]<br />
When I make a change to the webservice, any javascript client automagically gets the updated js file.[aahs from the crowd]<br />
Just add the 5 lines of code to jquery-enablify(real word) any webservice(seriously. any webservice), and you&#8217;re done. Just set it, and forget it![crowd waves $5 bills in the air]</p>
<p>This makes javascript access to a webservice much simpler. All you need to write in js is event handling and UI logic now.</p>
<h2>Creating the JQuery Code Generator</h2>
<p>I came across this helpful blog post about <a href="http://blogs.msdn.com/nathana/archive/2007/09/17/wcf-web-programming-help-page.aspx" target="_blank">programming your own WCF help page</a>. This was the real kickstart to all of this.</p>
<p>First, find the current endpoint and all of its operations.</p>
<pre class="brush: csharp; title: ; notranslate">
internal static string GenerateJqueryJs()
{
    ServiceEndpointCollection endpoints =
        OperationContext.Current.Host.Description.Endpoints;
    OperationDescriptionCollection operations = null;
    Type contract = null;
    ServiceEndpoint currentEndpoint =
               endpoints.Where(e &gt; e.Contract.Name ==
                     OperationContext.Current.EndpointDispatcher.ContractName).FirstOrDefault();

    contract = currentEndpoint.Contract.ContractType;
    operations = currentEndpoint.Contract.Operations;

    String functions = GenerateFunctions(operations, contract);
    String classTemplate = JQueryTemplates.ClassTemplate;

    return classTemplate.Replace(&quot;{functions}&quot;, functions)
        .Replace(&quot;{class_name}&quot;, contract.Name);
}
</pre>
<p>The GenerateFunction method iterates over all the operations and writes a jquery method for each one.  It then takes the returned string off all the functions and insert it into the class template which simply wraps all the functions in a single javacscript &#8220;class&#8221; to isolate them from other javascript functions.</p>
<pre class="brush: csharp; title: ; notranslate">
private static String GenerateFunctions(OperationDescriptionCollection operations, Type contract)
{
StringBuilder js = new StringBuilder();
foreach (OperationDescription operation in operations)
{
    js.Append(Environment.NewLine);

    WebGetAttribute get = operation.Behaviors.Find&amp;lt;WebGetAttribute&amp;gt;();
    WebInvokeAttribute invoke = operation.Behaviors.Find&amp;lt;WebInvokeAttribute&amp;gt;();
    MethodInfo method = contract.GetMethod(operation.Name);

    if (get != null)
    {
        js.Append(&quot;\r\n&quot; +
            GenerateGetMethod(JQueryTemplates.GetTemplate, get, method) + &quot;,&quot;);
        js.Append(&quot;\r\n&quot; +
            GenerateGetMethod(JQueryTemplates.GetByUriTemplate, get, method) + &quot;,&quot;);
    }
    else if (invoke != null)
    {
        switch (invoke.Method)
        {
            case &quot;PUT&quot;:
                js.Append(&quot;\r\n&quot; +
                    GenerateInvokeMethod(JQueryTemplates.PostTemplate,invoke, method) + &quot;,&quot;);
                break;
            case &quot;DELETE&quot;:
                js.Append(&quot;\r\n&quot; +
                    GenerateInvokeMethod(JQueryTemplates.DeleteTemplate,invoke, method) + &quot;,&quot;);
                break;
            case &quot;POST&quot;:
                js.Append(&quot;\r\n&quot; +
                    GenerateInvokeMethod(JQueryTemplates.PostTemplate,invoke, method) + &quot;,&quot;);
                break;
            default:
                continue;
        }
    }
    else
    {
        continue;
    }

}
return js.ToString().TrimEnd(' ', '\n', '\r', ',');
}
</pre>
<p>This method simply determines what the HTTP verb is and calls a generateXXXMethod method to generate the actual javascript function code.<br />
You&#8217;ll notice the using a JQueryTemplates class. This class simply contains string constants holding templates for the jquery functions.</p>
<p>For example. The javascript function template for GET verbs is as follows:</p>
<pre class="brush: csharp; title: ; notranslate">
public const string GetTemplate = @&quot;
{method_name} : function({params}successCallback, errorCallback) {
    jQuery.ajax({
        type: 'GET',
        url: {uri},
        contentType: 'application/json; charset=utf-8',
        success: function (responseText) {
            var response = eval(responseText);
            successCallback(response);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            var error = eval('(' + xhr.responseText + ')');
            errorCallback(error);
        }
    });
}&quot;;
</pre>
<p>The GenerateGetMethod simply starts with this template and does a search and replace on all placeholders with the real value. Placeholders are contained in {squiggly brackets}.</p>
<h2>Enabling the service</h2>
<p>Now that the code is in place to generate templated JQuery code from a WCF service, the next step is to actually expose the endpoint.<br />
This requires only a slight modification to the standard approach to WCF REST service endpoints.</p>
<pre class="brush: csharp; title: ; notranslate">
[WebGet(UriTemplate = &quot;/jqueryservice.js&quot;, BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
public Stream Javascript()
{
    string jsFileContents = WebHttpJavascriptGenerator.GenerateJqueryJs();
    Encoding encoding = Encoding.ASCII;
    WebOperationContext.Current.OutgoingResponse.ContentType = &quot;text/plain&quot;;
    byte[] returnBytes = encoding.GetBytes(jsFileContents);
    return new MemoryStream(returnBytes);
}
</pre>
<p>The only change here is returning that I&#8217;m returning a Stream instead of an object. WCF does not serialize Streams which allows you to write raw content to the output. The first line is the only real logic. The rest is boilerplate.</p>
<h2>The Service is Ready</h2>
<p>That&#8217;s it! Your auto-generated JQuery javascript file exposing your WCF REST service is ready to go at</p>
<pre class="brush: plain; light: true; title: ; notranslate">yourservice/jqueryservice.js</pre>
<h2>Consuming The Service from Javascript</h2>
<p>All that hard work(not really) leads up to this. First you need to ensure all your ajax requests add the accept header of &#8220;application/json&#8221;.</p>
<pre class="brush: jscript; title: ; notranslate">
jQuery.ajaxSetup({
    dataType: &quot;json&quot;,
    contentType: &quot;application/json; charset=utf-8&quot;,
    beforeSend: function (xhr) {
        xhr.setRequestHeader(&quot;Accept&quot;, &quot;application/json&quot;)
        xhr.setRequestHeader(&quot;Authorization&quot;, authorization)
    }
});
</pre>
<p>This is also where you would add any other required headers such as Authorization. From this point forward, all JQuery ajax requests will contained the headers defined in the &#8220;beforeSend&#8221; function.</p>
<p>Now the fun stuff.</p>
<pre class="brush: jscript; title: ; notranslate">
ItemService.GetItems(
    function(items){
    //access all items here...
    },
    function(error){
    //handle error
    }
);

ItemService.UpdateItem(item,
    function (response) {
    //item was updated
    },
    function (error) {
    //handle error&amp;lt;/div&amp;gt;
    }
);
</pre>
<p>That&#8217;s it. Now functions to access the REST service are built on the fly and guaranteed always up to date. No more synchronizing APIs.</p>
<h2>What&#8217;s Next?</h2>
<p>While I really like this solution, there are a few things to improve.</p>
<ol>
<li>As you can see these templates are JQuery specific. With a little bit of refactoring, I&#8217;d like to make it easier to add new outputs. Scriptaculous and actual HTML create/update forms come to mind. The first thing would be to move the templates out of code and into external files.</li>
<li>I&#8217;d like to update the templates to allow optional and named parameters the same way JQuery does for callbacks.</li>
<li>Javascript intellisense files for Visual Studio.</li>
<li>Add caching to the endpoint to prevent regenerating the code every time.</li>
<li>Finer control over output formating. Javascript naming convention lowercase function names.</li>
<li>The code that generates the list of parameters is very limited right now. There&#8217;s no support for endpoints with querystring parameters and multiple parameters support is untested.</li>
</ol>
<p>That&#8217;s it for now. I&#8217;ll post further improvements as they happen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2010/03/27/auto-gen-jquery-access-to-wcf-rest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Venture Idea #2 &#8211; TwitterWire</title>
		<link>http://blog.maybe5.com/2008/10/20/venture-idea-2-twitterwire/</link>
		<comments>http://blog.maybe5.com/2008/10/20/venture-idea-2-twitterwire/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 11:03:36 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Venture Ideas]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=252</guid>
		<description><![CDATA[Someone build this please. The Idea: A system that acts as a tweet router. The first application; Micro Press Releases. On one side, Business owners would sign up with their twitter accounts and supply some basic information about their business. Name City Date Founded Industry ex. Tech-Web-Social Network Stage ex. Pre-seed, funded, established Number of [...]]]></description>
			<content:encoded><![CDATA[<p>Someone build this please.</p>
<p><strong>The Idea:</strong> A system that acts as a tweet router. The first application; Micro Press Releases.</p>
<p>On one side, Business owners would sign up with their twitter accounts and supply some basic information about their business.</p>
<ul>
<li>Name</li>
<li>City</li>
<li>Date Founded</li>
<li>Industry ex. Tech-Web-Social Network</li>
<li>Stage ex. Pre-seed, funded, established</li>
<li>Number of empoyees range</li>
<li>Annual Revenue range</li>
</ul>
<p>On the other side, anyone can sign up with their twitter account and select the types of companies they would like to receive news about. ex. I would pick all tech startups in Ottawa and Toronto, Digg, Google, and Apple by name, as well as any alternative fuel companies.</p>
<div id="attachment_254" class="wp-caption alignright" style="width: 160px"><a href="http://blog.maybe5.com/wp-content/uploads/2008/09/twitterwire.png"><img class="size-thumbnail wp-image-254" title="twitterwire" src="http://blog.maybe5.com/wp-content/uploads/2008/09/twitterwire-150x150.png" alt="" width="150" height="150" /></a><p class="wp-caption-text">Click to enlarge screenshot</p></div>
<p>Let&#8217;s assume this venture is called TwitterWire. The domain is taken, but nothing is hosted there. I already checked.</p>
<p>You would then follow user <em>twitterwire</em> on Twitter and automatically receive all twitter wire news releases that meet the criteria you selected. This makes for a great way to keep up to date with all the happenings in the business/startup world.</p>
<p>To the right is a screenshot with a mockup of how the tweets could be displayed. These two tweets from <a href="http://devshop.com/">Devshop</a> and <a href="http://www.shopify.com/">Shopify</a>(1st and 5th tweets) would appear because they matched the criteria I selected, without me having to discover and follow them myself. At the top is how you would submit your own micro press release.</p>
<p><strong>Step 1:</strong> Build the site to allow twitter users to submit their business and subscribe to other business&#8217; feeds. Build a system that follows everyone who has registered and upon receiving a tweet from them, fire it off to anyone who&#8217;s listening criteria matches the tweeter company.  Twitter wire tweets would be nothing more than a headline and a link.</p>
<p>Getting startups to sign up first would be a great starting point. There&#8217;s nobody more willing to share information about their company.</p>
<p>Business&#8217; get to broadcast their news. Everyone gets to easily keep up to date with what&#8217;s going on. Everybody wins.</p>
<p><strong>Step 3:</strong> Profit</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/10/20/venture-idea-2-twitterwire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>maybe5 goes mobile</title>
		<link>http://blog.maybe5.com/2008/10/13/maybe5-goes-mobile/</link>
		<comments>http://blog.maybe5.com/2008/10/13/maybe5-goes-mobile/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 01:29:54 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=285</guid>
		<description><![CDATA[I&#8217;ve been on a mobile web kick lately. I&#8217;m really starting to see how the mobile/location aware web can unfold over the next 10 years. To get started, I figured I&#8217;d spend five minutes getting maybe5 mobile. I came across MoFuse. They claim a mobile version of your site in minutes. Really? Just minutes? Actually, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been on a mobile web kick lately. I&#8217;m really starting to see how the mobile/location aware web can unfold over the next 10 years.</p>
<p>To get started, I figured I&#8217;d spend five minutes getting maybe5 mobile. I came across <a href="http://www.mofuse.com">MoFuse</a>. They claim a mobile version of your site in minutes. Really? Just minutes?<img class="alignright" src="http://i218.photobucket.com/albums/cc82/tommy_rockit/The-Simpsons-Mr-Burns-Excel.jpg" alt="" width="109" height="149" /></p>
<p>Actually, it took about 4 minutes, and that&#8217;s including the time it took me to add another CNAME entry to my DNS server so you can access it from <a href="http://m.maybe5.com/">m.maybe5.com</a>. Even DNS changes are fast nowadays!</p>
<p>At first glance, it seems like a really nice product. The site looks good on my BlackBerry and their iPhone widget(I hate that term) looks pretty slick. Here it is below so you can see for yourself.</p>
<p>Between MoFuse and the <a href="http://wordpress.org/extend/plugins/mobileadmin/">wordpress mobile admin plugin</a>, I can manage and view my blog all from my BlackBerry.</p>
<p>The evil Mr. Burns-like figure at Fido is slobbering over the new money they will make from my increased data usage. &#8220;Excellent.&#8221;</p>
<p><script type="application/javascript"><!--
var mf_siteid="maybe5";
// --></script><script src="http://api.mofuse.com/iphone_embed.js" type="application/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/10/13/maybe5-goes-mobile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Your Reputation Tipping Point</title>
		<link>http://blog.maybe5.com/2008/09/26/your-reputation-tipping-point/</link>
		<comments>http://blog.maybe5.com/2008/09/26/your-reputation-tipping-point/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 03:02:13 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=269</guid>
		<description><![CDATA[My fiance&#8217;s name is Guisselle. She&#8217;s a hair dresser at an upscale salon and spa. An interesting story about gaining a new client via word of mouth. A lady sees her neighbour&#8217;s new hairdo and says &#8220;I really like your hair. Where did you get it done?&#8221;. The reply is &#8220;This girl Guisselle, over at [...]]]></description>
			<content:encoded><![CDATA[<p>My fiance&#8217;s name is Guisselle. She&#8217;s a hair dresser at an upscale salon and spa.</p>
<p>An interesting story about gaining a new client via word of mouth.</p>
<p>A lady sees her neighbour&#8217;s new hairdo and says &#8220;I really like your hair. Where did you get it done?&#8221;. The reply is &#8220;This girl Guisselle, over at The Spa&#8221;.</p>
<p>A couple of days later, the same lady notices a co-worker&#8217;s hairdo and asks the same question. The reply is &#8220;My hairdresser Guisselle, at The Spa&#8221;.</p>
<p>The very same week, she asks yet another co-worker about her hairdo. The reply is &#8220;This girl at The Spa, &#8230;&#8221;. The lady interrupts with &#8220;Let me guess. Guisselle?&#8221;. &#8220;Yes! How did you know?&#8221;.</p>
<p>It was at this point the lady decides to make an appointment with Guisselle.</p>
<p>It took seeing Guisselle&#8217;s work three times and seeing how happy her customers were before this lady decided to go ahead and try her services out for herself.</p>
<p>How many satisfied customers do you need to have out there willing to talk about your product or service before your reputation reaches that tipping point? This is the point at which all your hard work pleasing customers starts to really pay off. Your reputation for quality precedes you and not just because one person is happy, but many.</p>
<p>This lady may very well not really trust the opinion of any one of those people individually, but after all of them express the same opinion, she can&#8217;t help but try Guisselle&#8217;s service out for herself.</p>
<p>I&#8217;m afraid I don&#8217;t think there&#8217;s a short cut to reaching this tipping point. There&#8217;s nothing marketing or a new software feature will do to build that reputation.</p>
<p>A lot of hard work and making sure every customer is happy. That&#8217;s the only way.</p>
<p>Guisselle has put in the hard work and is now at the top of the <a href="http://blog.maybe5.com/?p=203">scale from one to awesome</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/09/26/your-reputation-tipping-point/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ultimate Satisfaction</title>
		<link>http://blog.maybe5.com/2008/09/17/ultimate-satisfaction/</link>
		<comments>http://blog.maybe5.com/2008/09/17/ultimate-satisfaction/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 03:36:30 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Quotable Quotes]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=272</guid>
		<description><![CDATA[“When I die, I want to come back as me” &#8211; Mark Cuban I love it! Words of a truly satisfied person. Full interview here.]]></description>
			<content:encoded><![CDATA[<p>“When I die, I want to come back as me” &#8211; Mark Cuban</p>
<p>I love it! Words of a truly satisfied person. Full interview <a href="http://www.techcrunch50.com/2008/conference/mark_cuban.php">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/09/17/ultimate-satisfaction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Next Mobile Text Input Method</title>
		<link>http://blog.maybe5.com/2008/09/12/the-next-mobile-text-input-method/</link>
		<comments>http://blog.maybe5.com/2008/09/12/the-next-mobile-text-input-method/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 10:51:21 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=265</guid>
		<description><![CDATA[This is truly amazing. This text input method wouldn&#8217;t take any explanation for anyone to get started. This is so simpIe it should end up being adopted by all phone manufacturers. My prediction. This will be on an iPhone in the near future. That is, if Apple is smart enough. This could actually be the [...]]]></description>
			<content:encoded><![CDATA[<p>This is truly amazing. This text input method wouldn&#8217;t take any explanation for anyone to get started. This is so simpIe it should end up being adopted by all phone manufacturers.</p>
<p>My prediction. This will be on an iPhone in the near future. That is, if Apple is smart enough. This could actually be the end to the blackberry qwerty keyboard.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="335" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="FlashVars" value="playerType=embedded&amp;value=50003669" /><param name="src" value="http://www.cnet.com/av/video/flv/newPlayers/universal.swf" /><embed type="application/x-shockwave-flash" width="335" height="360" src="http://www.cnet.com/av/video/flv/newPlayers/universal.swf" flashvars="playerType=embedded&amp;value=50003669" allowfullscreen="true" wmode="transparent"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/09/12/the-next-mobile-text-input-method/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eighty-Six Years of Technology</title>
		<link>http://blog.maybe5.com/2008/09/02/eighty-six-years-of-technology/</link>
		<comments>http://blog.maybe5.com/2008/09/02/eighty-six-years-of-technology/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 11:34:08 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Food for Thought]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=232</guid>
		<description><![CDATA[My fiance&#8217;s grandfather just turned 86 years old this past weekend. A couple of weeks ago, he purchased a high def camcorder and he&#8217;s really excited about using it. As it turns out, his current computer isn&#8217;t good enough to play back the videos the camera records. The solution? A brand new dual core system [...]]]></description>
			<content:encoded><![CDATA[<p>My fiance&#8217;s grandfather just turned 86 years old this past weekend. A couple of weeks ago, he purchased a high def camcorder and he&#8217;s really excited about using it.</p>
<p>As it turns out, his current computer isn&#8217;t good enough to play back the videos the camera records. The solution?<br />
A brand new dual core system with a 500gig drive and a 19&#8243; flat panel display.</p>
<p>Here&#8217;s a man that was born in 1922. He witnessed many of the <a href="http://inventors.about.com/library/weekly/aa121599a.htm" target="_blank">twentieth century inventions</a> like the band-aid, frozen food, quartz watches, the aerosol can, bubble gum and electric shavers. He knew the world before scotch tape, radio, ballpoint pens, and the microwave were invented. Now he&#8217;s probably got more processing power on his desk than was existent in the whole world when he was born.</p>
<div class="wp-caption alignleft" style="width: 200px"><img src="http://farm2.static.flickr.com/1332/1388869233_ef04a721f0.jpg?v=0" alt="A Ford from the 1930s" width="190" height="157" /><p class="wp-caption-text">A Ford from the 1930s</p></div>
<p>When he was growing up, the main method of communitcation was the telegraph. He was in his 20s when television stations started rolling out. He was in his 30s when credit cards were introduced, and in his 40s when the handheld calculator was invented. Fast forward 30 more years and he was in his 70s when I started browsing a text based internet with a 2400 baud rate modem.</p>
<p>He witnessed the introduction of the rotary dial phone, and the <a href="http://www.centennialofflight.gov/essay/Commercial_Aviation/passenger_xperience/Tran2.htm" target="_blank">growth of commercial flight in the 1930s</a>. Pretty much any technology we have now, he lived without, saw the introduction of, and witnessed become mainstream.</p>
<p>Today, in 2008 he calls Guatemala to speak with family using Skype, and he gets his latin news online, using Firefox no less. He can record 20+ hours of high def footage on an internal hard drive on his new camcorder and produce a DVD in a matter of minutes.</p>
<p>Its amazing to think how drastic technology has changed during his life. I hope I&#8217;ll reach his age and be as healthy as he is. I wonder what tech toys I&#8217;ll be playing with then.</p>
<p>How much will technology change in the next 86 years?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/09/02/eighty-six-years-of-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sprint for the Sake of Sprinting</title>
		<link>http://blog.maybe5.com/2008/08/27/sprint-for-the-sake-of-sprinting/</link>
		<comments>http://blog.maybe5.com/2008/08/27/sprint-for-the-sake-of-sprinting/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 01:35:07 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Food for Thought]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=246</guid>
		<description><![CDATA[Starting a company is like running the 100 meter dash blind folded. You don&#8217;t know if you&#8217;re opponents are behind you or ahead. You don&#8217;t even know if they exist. One thing is for sure. You have to sprint as fast as you can.]]></description>
			<content:encoded><![CDATA[<p>Starting a company is like running the 100 meter dash blind folded. You don&#8217;t know if you&#8217;re opponents are behind you or ahead. You don&#8217;t even know if they exist. </p>
<p>One thing is for sure. You have to sprint as fast as you can.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/08/27/sprint-for-the-sake-of-sprinting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On a Scale From One to Awesome</title>
		<link>http://blog.maybe5.com/2008/08/25/on-a-scale-from-one-to-awesome/</link>
		<comments>http://blog.maybe5.com/2008/08/25/on-a-scale-from-one-to-awesome/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 22:49:36 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Food for Thought]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=203</guid>
		<description><![CDATA[On a scale from one to awesome. Where do you rate at what you do? Whether you&#8217;re a cashier, software developer, or high priced corporate lawyer, how good are you at what you do? I was at the grocery store today with my fiance and our grocery tab rang up to $60 and change. We [...]]]></description>
			<content:encoded><![CDATA[<p>On a scale from one to awesome. Where do you rate at what you do? Whether you&#8217;re a cashier, software developer, or high priced corporate lawyer, how good are you at what you do?</p>
<div class="wp-caption alignright" style="width: 99px"><img src="http://static.sky.com/images/skymovies/pics/10094399.jpg" alt="Be Tom Cruise in Cocktail..." width="89" height="136" /><p class="wp-caption-text">&quot;Be Tom Cruise in Cocktail...&quot;</p></div>
<p>I was at the grocery store today with my fiance and our grocery tab rang up to $60 and change. We handed the cashier a twenty dollar bill, $40 in fives, and the change.</p>
<p>Can you believe it took the cashier 3 tries to count it? After the final count she paused, stared at the money for a second, looked up and said &#8220;sixty?&#8221;. We confirmed it was $60 and the transaction was completed.</p>
<p>I know that&#8217;s a lot of fives, but you would think a cashier would know how to count money. That is after all, a pretty integral part of the job. I&#8217;m no linguist, but I&#8217;m pretty sure the word &#8216;cashier&#8217; is somehow derived from the word &#8216;cash&#8217;.</p>
<p>If you&#8217;re going to do a job, you have to be simply amazing at it. I don&#8217;t think it matters what the job is. If you&#8217;re bored, find something to challenge you. Do the job faster, neater, with one arm behind your back. Just make sure you do it well.</p>
<p>Be Tom Cruise in Cocktail, Jack Bauer, or House. There&#8217;s no point in being mediocre. Be awesome.</p>
<p>&#8220;<em>On a scale from one to awesome</em>, I&#8217;m super-great.&#8221;-<a href="http://www.homestarrunner.com/sbemail.html" target="_blank">Strong Bad</a></p>
<p>Where are you?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/08/25/on-a-scale-from-one-to-awesome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Help or be Helped?</title>
		<link>http://blog.maybe5.com/2008/08/23/help-or-be-helped/</link>
		<comments>http://blog.maybe5.com/2008/08/23/help-or-be-helped/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 02:39:38 +0000</pubDate>
		<dc:creator>kareem</dc:creator>
				<category><![CDATA[Food for Thought]]></category>

		<guid isPermaLink="false">http://blog.maybe5.com/?p=207</guid>
		<description><![CDATA[I&#8217;m in the middle of watching season 1 of Jericho. In short, its about a small town trying to survive after a nuclear attack on the US. They have no outside resources or help. So far, I see four or five heroes in this show that are called upon to deal with everything that happens [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in the middle of watching season 1 of <a href="http://www.imdb.com/title/tt0805663/" target="_blank">Jericho</a>. In short, its about a small town trying to survive after a nuclear attack on the US. They have no outside resources or help.<br />
So far, I see four or five heroes in this show that are called upon to deal with everything that happens to this town with a population of 5000.</p>
<p>I imagine(and hope) in real life, the ratio of helpers to those needing help would be much better.</p>
<p>In an event as extreme as this or a natural disaster, would you be helping or being helped?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.maybe5.com/2008/08/23/help-or-be-helped/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

