<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>The Efficient Coder</title>
    <link>http://www.efficientcoder.net/</link>
    <description>There has got to be a better way of communicating with our computers!</description>
    <language>en-us</language>
    <copyright>Kevin D. Wolf</copyright>
    <lastBuildDate>Wed, 11 Jun 2008 12:08:05 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.2</generator>
    <managingEditor>kevinw@software-logistics.com</managingEditor>
    <webMaster>kevinw@software-logistics.com</webMaster>
    <item>
      <trackback:ping>http://www.efficientcoder.net/Trackback.aspx?guid=4602239c-ce7d-4a2f-8426-c52e54b16dd3</trackback:ping>
      <pingback:server>http://www.efficientcoder.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.net/PermaLink,guid,4602239c-ce7d-4a2f-8426-c52e54b16dd3.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.net/CommentView,guid,4602239c-ce7d-4a2f-8426-c52e54b16dd3.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.net/SyndicationService.asmx/GetEntryCommentsRss?guid=4602239c-ce7d-4a2f-8426-c52e54b16dd3</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img style="FLOAT: right" src="http://www.efficientcoder.com/content/binary/WCF_Mobile.gif" border="0" />
        <p>
      I've got a couple mobile projects that need to provide communications services to
      a centralized server.  Over the past year or so, I've been getting to know WCF
      a little better and the more I learn, the more I think this is the one by far that
      in all the latest Microsoft technologies, that you should invest your time
      in learning.  Saying that, it would seem logical to think about using WCF as
      the technology to communicate on our mobile devices.  I'm not sure the answer
      is clear to me yet on this one.
   </p>
        <p>
      First, what do I LOVE about WCF, if I had to sum it up, I would say three things, 
   </p>
        <ol>
          <li>
         The formality of defining and implementing contacts for our communications 
      </li>
          <li>
         The ability to configure and for the most part not worry about the transport details
         when coding your service 
      </li>
          <li>
         The ability to do duplex messaging, I still need to spend some time to see how this
         works under the hood from a scalability implication, but the concept in general seems
         powerful.</li>
        </ol>
        <p>
      Saying that, we can make the following assumptions about the current state of mobile
      devices and applications:
   </p>
        <ol>
          <li>
         In most cases the device is going to be a client on the client/server side of
         the equation 
      </li>
          <li>
         Our computing horsepower just isn't the same 
      </li>
          <li>
         Based upon my experience in both worlds (desktop/web AND mobile devices) I would say
         you can crank out 3-5 lines of desktop/web code in the same time it takes to get one
         line of mobile code into production 
      </li>
          <li>
         Code on mobile devices can't easily be updated so it really has to be right the first
         time 
      </li>
          <li>
         As good as our mobile platforms are these days, there are still a few quirks that
         are beyond our control and device specific</li>
        </ol>
        <p>
      Therefore, most of the benefits of going with WCF really aren't that great in a mobile
      device.  And if a technology really doesn't provide much value, it may make more
      sense to keep it simplest technology with the fewest moving parts.  I think as
      with anything new, one needs to implement and analyze the results.  As I mentioned
      earlier, I don't have answers here yet, but wanted to start capturing thoughts.
   </p>
        <p>
      -ec
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=4602239c-ce7d-4a2f-8426-c52e54b16dd3" />
      </body>
      <title>WCF on a Windows Mobile Device</title>
      <guid>http://www.efficientcoder.net/PermaLink,guid,4602239c-ce7d-4a2f-8426-c52e54b16dd3.aspx</guid>
      <link>http://www.efficientcoder.net/PermaLink,guid,4602239c-ce7d-4a2f-8426-c52e54b16dd3.aspx</link>
      <pubDate>Wed, 11 Jun 2008 12:08:05 GMT</pubDate>
      <description>&lt;img style="FLOAT: right" src="http://www.efficientcoder.com/content/binary/WCF_Mobile.gif" border=0&gt; 
&lt;p&gt;
   I've got a couple mobile projects that need to provide communications services to
   a centralized server.&amp;nbsp; Over the past year or so, I've been getting to know WCF
   a little better and the more I learn, the more I think this is the one by far that
   in all the&amp;nbsp;latest Microsoft technologies,&amp;nbsp;that you should invest your&amp;nbsp;time
   in learning.&amp;nbsp; Saying that, it would seem logical to think about using WCF as
   the technology to communicate on our mobile devices.&amp;nbsp; I'm not sure the answer
   is clear to me yet on this one.
&lt;/p&gt;
&lt;p&gt;
   First, what do I LOVE about WCF, if I had to sum it up, I would say three things, 
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      The formality of defining and implementing contacts for our communications 
   &lt;li&gt;
      The ability to configure and for the most part not worry about the transport details
      when coding your service 
   &lt;li&gt;
      The ability to do duplex messaging, I still need to spend some time to see how this
      works under the hood from a scalability implication, but the concept in general seems
      powerful.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   Saying that, we can make the following assumptions about the current state of mobile
   devices and applications:
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      In&amp;nbsp;most cases the device is going to be a client on the client/server side of
      the equation 
   &lt;li&gt;
      Our computing horsepower just isn't the same 
   &lt;li&gt;
      Based upon my experience in both worlds (desktop/web AND mobile devices) I would say
      you can crank out 3-5 lines of desktop/web code in the same time it takes to get one
      line of mobile code into production 
   &lt;li&gt;
      Code on mobile devices can't easily be updated so it really has to be right the first
      time 
   &lt;li&gt;
      As good as our mobile platforms are these days, there are still a few quirks that
      are beyond our control and device specific&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   Therefore, most of the benefits of going with WCF really aren't that great in a mobile
   device.&amp;nbsp; And if a technology really doesn't provide much value, it may make more
   sense to keep it simplest technology with the fewest moving parts.&amp;nbsp; I think as
   with anything new, one needs to implement and analyze the results.&amp;nbsp; As I mentioned
   earlier, I don't have answers here yet, but wanted to start capturing thoughts.
&lt;/p&gt;
&lt;p&gt;
   -ec
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=4602239c-ce7d-4a2f-8426-c52e54b16dd3" /&gt;</description>
      <comments>http://www.efficientcoder.net/CommentView,guid,4602239c-ce7d-4a2f-8426-c52e54b16dd3.aspx</comments>
      <category>.NET 3.5;Mobile;WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.net/Trackback.aspx?guid=81140a09-1c11-4b65-997c-5fbf3063b86a</trackback:ping>
      <pingback:server>http://www.efficientcoder.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.net/PermaLink,guid,81140a09-1c11-4b65-997c-5fbf3063b86a.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.net/CommentView,guid,81140a09-1c11-4b65-997c-5fbf3063b86a.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.net/SyndicationService.asmx/GetEntryCommentsRss?guid=81140a09-1c11-4b65-997c-5fbf3063b86a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="4">
            <strong>MEDC 2007 - Day 1</strong>
          </font>
        </p>
        <p>
      Actually the first day was yesterday with MIX, I went over there with high-hopes of
      watching another great key-note by Scott Guthrie, I made the trip from the Monte Carlo
      to the Venetian early that morning, got registered and headed up to the meeting room. 
      I was greeted by a not-so-friendly security guard saying the MIX sticker on my badge
      wouldn't let me onto the fourth floor...guess there was something in the fine print,
      oh well.  I came back that afternoon and went to a couple great sessions, one
      on identity, it really seems like <a href="http://openid.net">OpenID</a> is really
      going to merit a series investment in time over the coming months.  The other
      conference I went to was on security with AJAX enabled applications.  This was
      a great session as a refresher/reminder that building a secure application really
      needs to be started from day one and built into the architecture, at least its much
      easier that way.  Overall the $395 I paid to add MIX to the MEDC conference was
      well worth it
   </p>
        <p>
      The conference started out with a bang with the Key Note by <a href="http://www.microsoft.com/presspass/exec/rbach/default.mspx">Robbie
      Bach</a> the president of Microsoft’s Entertainment &amp; Devices Division. 
      He made a great case for developing software as a service and one of the biggest clients
      for those services is going to be mobile devices.  I also so some great demos
      on another one of the things I love to work on in my spare time (what's that?) Home
      Automation.  I really need to look at some of the latest developments in this
      area starting with Microsoft's Home Server.
   </p>
        <p>
          <strong>Key points on what I took away from today's sessions</strong>
        </p>
        <ul>
          <li>
         Microsoft/Verisign finally came up with a "sane" way of signing mobile CAB files for
         WM 5.0.  Before you had to sign all your files, send them to Verisign, let them
         do their thing, get those files back.  Package them into a CAB and send it back
         up to them to sign the completed package.  What a pain in the ass, no real way
         to automate.  Just introduced this week, you can just start sending up the CAB
         file and it only costs one signing event!  Now it seems reasonable to sign the
         files... 
      </li>
          <li>
         There is now an applications out there called fakeGPS.  I have a project
         coming up in May where I need to report on GPS data from a device, I'm looking forward
         to digging into this technology. 
      </li>
          <li>
         According to Microsoft, WM6.0 and the Compact Frameworks are 100% back-wards compatible. 
         I have a fairly large WM5.0 application I've developed so I'll put this through the
         test, I really hope this is the case! 
      </li>
          <li>
         On WM6.0 devices the Compact Frameworks 2.0 SP2 and SQL Server Compact edition
         are baked into the ROM...nice! 
      </li>
          <li>
         On the large WM5.0 application I developed there is a good chunk of the code that
         deals with one handed operation on a Pocket PC type device (read not smart phone)
         I always thought this was a real hack...it was nice to see the Microsoft presenters
         give a demo of how to do this (and their implementation was really even more of a
         hack ;) ).  
      </li>
          <li>
         In Windows Mobile there is an event that I can subscribe to (something like Connection
         Status Changed) this will be fired when the connection via cell phone changes. 
         As part of my mobile application based upon a schedule I check the server for changes...kind
         of messy and probably wasteful the easy solution here would be to use an SMS message
         to kick of replication, yet this isn't that great either.  What I'm thinking
         about is that I'll build some sort of registration type service where the device can
         register with the server it's IP address as the connection status changes, then the
         server could make a TCP/IP call to the device to initiate replication (or maybe just
         send changes) 
      </li>
          <li>
         New terminology for WM6.0 (Don't shoot the messenger) 
         <ul><li>
               Smartphone (no touch pad) - Now called "Windows Mobile Standard" 
            </li><li>
               Pocket PC Phone - Now called "Windows Mobile Professional" 
            </li><li>
               PDA's (no phone) - Now called "Windows Mobile Classic"</li></ul></li>
        </ul>
        <p>
      Overall this was a great day...picked up lot's of tips &amp; tricks and validated
      all my design considerations over the past year.
   </p>
        <p>
      -ec
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=81140a09-1c11-4b65-997c-5fbf3063b86a" />
      </body>
      <title>MEDC 2007 - Day 1</title>
      <guid>http://www.efficientcoder.net/PermaLink,guid,81140a09-1c11-4b65-997c-5fbf3063b86a.aspx</guid>
      <link>http://www.efficientcoder.net/PermaLink,guid,81140a09-1c11-4b65-997c-5fbf3063b86a.aspx</link>
      <pubDate>Tue, 01 May 2007 04:43:30 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=4&gt;&lt;strong&gt;MEDC 2007 - Day 1&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   Actually the first day was yesterday with MIX, I went over there with high-hopes of
   watching another great key-note by Scott Guthrie, I made the trip from the Monte Carlo
   to the Venetian early that morning, got registered and headed up to the meeting room.&amp;nbsp;
   I was greeted by a not-so-friendly security guard saying the MIX sticker on my badge
   wouldn't let me onto the fourth floor...guess there was something in the fine print,
   oh well.&amp;nbsp; I came back that afternoon and went to a couple great sessions, one
   on identity, it really seems like &lt;a href="http://openid.net"&gt;OpenID&lt;/a&gt; is really
   going to merit a series investment in time over the coming months.&amp;nbsp; The other
   conference I went to was on security with AJAX enabled applications.&amp;nbsp; This was
   a great session as a refresher/reminder that building a secure application really
   needs to be started from day one and built into the architecture, at least its much
   easier that way.&amp;nbsp; Overall the $395 I paid to add MIX to the MEDC conference was
   well worth it
&lt;/p&gt;
&lt;p&gt;
   The conference started out with a bang with the Key Note by&amp;nbsp;&lt;a href="http://www.microsoft.com/presspass/exec/rbach/default.mspx"&gt;Robbie
   Bach&lt;/a&gt;&amp;nbsp;the president of Microsoft’s Entertainment &amp;amp; Devices Division.&amp;nbsp;
   He made a great case for developing software as a service and one of the biggest clients
   for those services is going to be mobile devices.&amp;nbsp; I also so some great demos
   on another one of the things I love to work on in my spare time (what's that?) Home
   Automation.&amp;nbsp; I really need to look at some of the latest developments in this
   area starting with Microsoft's Home Server.
&lt;/p&gt;
&lt;p&gt;
   &lt;strong&gt;Key points on what I took away from today's sessions&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Microsoft/Verisign finally came up with a "sane" way of signing mobile CAB files for
      WM 5.0.&amp;nbsp; Before you had to sign all your files, send them to Verisign, let them
      do their thing, get those files back.&amp;nbsp; Package them into a CAB and send it back
      up to them to sign the completed package.&amp;nbsp; What a pain in the ass, no real way
      to automate.&amp;nbsp; Just introduced this week, you can just start sending up the CAB
      file and it only costs one signing event!&amp;nbsp; Now it seems reasonable to sign the
      files... 
   &lt;li&gt;
      There&amp;nbsp;is now an&amp;nbsp;applications out there called fakeGPS.&amp;nbsp; I have a project
      coming up in May where I need to report on GPS data from a device, I'm looking forward
      to digging into this technology. 
   &lt;li&gt;
      According to Microsoft, WM6.0 and the Compact Frameworks are 100% back-wards compatible.&amp;nbsp;
      I have a fairly large WM5.0 application I've developed so I'll put this through the
      test, I really hope this is the case! 
   &lt;li&gt;
      On WM6.0 devices the Compact Frameworks 2.0 SP2 and&amp;nbsp;SQL Server Compact edition
      are baked into the ROM...nice! 
   &lt;li&gt;
      On the large WM5.0 application I developed there is a good chunk of the code that
      deals with one handed operation on a Pocket PC type device (read not smart phone)
      I always thought this was a real hack...it was nice to see the Microsoft presenters
      give a demo of how to do this (and their implementation was really even more of a
      hack ;) ).&amp;nbsp; 
   &lt;li&gt;
      In Windows Mobile there is an event that I can subscribe to (something like Connection
      Status Changed) this will be fired when the connection via cell phone changes.&amp;nbsp;
      As part of my mobile application based upon a schedule I check the server for changes...kind
      of messy and probably wasteful the easy solution here would be to use an SMS message
      to kick of replication, yet this isn't that great either.&amp;nbsp; What I'm thinking
      about is that I'll build some sort of registration type service where the device can
      register with the server it's IP address as the connection status changes, then the
      server could make a TCP/IP call to the device to initiate replication (or maybe just
      send changes) 
   &lt;li&gt;
      New terminology for WM6.0 (Don't shoot the messenger) 
      &lt;ul&gt;
         &lt;li&gt;
            Smartphone (no touch pad) - Now called "Windows Mobile Standard" 
         &lt;li&gt;
            Pocket PC Phone - Now called "Windows Mobile Professional" 
         &lt;li&gt;
            PDA's (no phone) - Now called "Windows Mobile Classic"&lt;/li&gt;
      &lt;/ul&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   Overall this was a great day...picked up lot's of tips &amp;amp; tricks and validated
   all my design considerations over the past year.
&lt;/p&gt;
&lt;p&gt;
   -ec
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=81140a09-1c11-4b65-997c-5fbf3063b86a" /&gt;</description>
      <comments>http://www.efficientcoder.net/CommentView,guid,81140a09-1c11-4b65-997c-5fbf3063b86a.aspx</comments>
      <category>Mobile</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.net/Trackback.aspx?guid=32852fb1-9d86-49db-8775-4593e8024bf0</trackback:ping>
      <pingback:server>http://www.efficientcoder.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.net/PermaLink,guid,32852fb1-9d86-49db-8775-4593e8024bf0.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.net/CommentView,guid,32852fb1-9d86-49db-8775-4593e8024bf0.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.net/SyndicationService.asmx/GetEntryCommentsRss?guid=32852fb1-9d86-49db-8775-4593e8024bf0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h4>NiVek J.D.'s Maiden Voyage
   </h4>
        <p>
      Everything came together today for NiVek's J.D.'s official first journey.  NiVek
      J.D. is a remote control tractor purchased from Target that was converted over to
      be controlled via a small on-board computer programmed in Java.  The same basic
      board I used for <a href="http://www.efficientcoder.net/PermaLink,guid,a0e74f09-a914-4d7a-97b2-22c54821de4a.aspx">NiVek
      I</a> was used for this "robot".
   </p>
        <p>
          <img src="http://www.efficientcoder.net/content/binary/100_1439.JPG" border="0" />
        </p>
        <p>
      This robot has two cool features not on NiVek I.  The first is it has a <a href="http://www.parallax.com/detail.asp?product_id=28146">GPS</a> module
      purchased from <a href="http://www.parallax.com/">Parallax</a>.  The second and
      which I think is really exciting is it using a Windows Mobile device as a "Repeater"
      that allows for communications from the NiVek embedded computer to a a PC.  This
      design is based upon software components that are part of <a href="http://www.wimobot.com/">WiMo</a> or
      Windows Mobile Robot, you really need to check out that site!  This consists
      of some kewl software components that are made up of a <a href="http://msdn2.microsoft.com/en-us/netframework/aa497273.aspx">Compact
      Framework 2.0 </a>application that runs on Windows Mobile and a collection of
      services that run under <a href="http://msdn.microsoft.com/robotics/">Microsoft's
      Robotics Studio</a>.
   </p>
        <p>
          <font color="#000000" size="3">
            <strong>NiVek J.D.'s Hardware</strong>
          </font>
        </p>
        <p>
      Basically the radio was just ripped out of the existing remote control tractor and
      and the motors were connected to the NiVek embedded computer.  As with the "original"
      WiMo, the Windows Mobile device was mounted on a servo with a CD-ROM.  The original
      WiMo used a SmartPhone not a Pocket PC so that probably worked out a little better,
      it's nice to be able to pan the camera however with my driving skills (smacking into
      walls) one of these days, I'm pretty sure the CD-ROM is going to end up in pieces
      ;-).  I need to re-think that part of the design.
   </p>
        <p>
          <img src="http://www.efficientcoder.net/content/binary/WimoHW.png" border="0" />
        </p>
        <p>
          <font size="3">
            <strong>NiVeK J.D.'s Maiden Voyage (well at least one of the first
      few)</strong>
          </font>
        </p>
        <p>
          <object height="350" width="425">
            <param name="movie" value="http://www.youtube.com/v/gHA5faNt31U" />
            <embed src="http://www.youtube.com/v/gHA5faNt31U" type="application/x-shockwave-flash" width="425" height="350">
            </embed>
          </object>
        </p>
        <p>
          <font size="3">
            <strong>50,000ft System Overview</strong>
          </font>
        </p>
        <ul>
          <li>
         The actual robot itself is controlled by an embedded computer based upon a small PIC
         processor with some additional components that allow it to be programmed in Java with
         32K RAM &amp; ROM this was purchased from Parallax and is called a Javelin Stamp. 
         (See this <a href="http://www.efficientcoder.net/PermaLink,guid,a0e74f09-a914-4d7a-97b2-22c54821de4a.aspx">post</a> for
         more information) 
      </li>
          <li>
         The embedded computer has a BlueTooth transceiver module that allows it to communicate
         with a Windows Mobile Device. 
      </li>
          <li>
         The Windows Mobile Device has a Compact Frameworks 2.0 application running code available
         from the <a href="http://www.wimobot.com/">WiMo Bot</a> web site. 
      </li>
          <li>
         The Windows Mobile WiMo application communicates with the robot via BlueTooth. 
         It also has the ability to listen on a socket for connections from a remote application. 
         Since this is a Windows Mobile device (in my case a phone), it will not only work
         while it's connected via a local LAN via WiFi, but it can also communicate via the
         GPRS radio and be a sort of "repeater" that will allow it to communicate to a host
         controller program anywhere it has cellular reception, just think about this...this
         is very kewl!  A nice feature is on the opening screen shot of WiMo it tells
         you the IP address of the device.<br /><img src="http://www.efficientcoder.net/content/binary/WimoPPC1.png" border="0" /></li>
          <li>
         On the PC side you have a set of Microsoft Robotics Studio services.  When
         these services first start you will be greeted by a dialog that will allow you to
         enter the IP address of the remote Windows Mobile device.<br /><img src="http://www.efficientcoder.net/content/binary/WimoIP.png" border="0" /></li>
          <li>
         Once you press "Connect" (and the software gods are shining on you) you should establish
         a connection from your PC to the WiMo application. 
      </li>
          <li>
         At this point a couple of additional forms will show up from the MSRS services. 
         The one in the upper left is displaying console messages from MSRS (Microsoft Robotics
         Studio).  This is a great way to see what's actually going on with your services.  
      </li>
          <li>
         The one in the upper right is from a service that came with WiMo (with the addition
         of buttons to control the motors).  Another really cool built in feature with
         WiMo is the ability to use the camera on your Windows Mobile device to send pictures
         back from your robot.  This from also sends messages to the core WiMo communications
         MSRS service to pass those to the WiMo device application.  These messages allow
         for control of the robot from the PC. 
      </li>
          <li>
         The dialog in the bottom is an additional MSRS service that was built that subscribes
         the the TextMessageReceived event from the core WiMo service.  
         <ul><li>
               The NiVek embedded computer spits out GPS readings every second (probably need
               to change this so it only sends when the location changes).  
            </li><li>
               This gets sent from NiVek to the the WiMo software on the device with a simple
               &lt;stx&gt;&lt;etx&gt; binary protocol.  The WiMo software turns it into a simple
               text message.  
            </li><li>
               For our GPS WiMo constructs a simple text message "GPS: #Sats=4 Lat=28.4.042
               Long=82.42.5522".  
            </li><li>
               This text message is sent over the wire from the Windows Mobile application to the
               WimoComm MSRS service.  
            </li><li>
               The WiMo MSRS service picks up the text message and finds any services that subscribe
               to this type of incoming event. 
            </li><li>
               The GPS Point plotter MSRS service subscribes to these messages so it takes those
               readings and plots the on the crude dialog you see below.  The challenge here
               is that for a robot this size of NiVek J.D. if it moves 50ft that's a long distance,
               and the resolution on the GPS module I purchased just doesn't seem to be all that
               accurate.</li></ul></li>
        </ul>
        <p>
          <img src="http://www.efficientcoder.net/content/binary/NiVek_Console.png" border="0" />
        </p>
        <p>
      Finally one last picture of you host at the controls!
   </p>
        <p>
          <img src="http://www.efficientcoder.net/content/binary/KDW.jpg" border="0" />
        </p>
        <p>
      Looks like my day job is going to be busy over the next few weeks with <a href="http://www.devconnections.com/">DevConnections</a> and <a href="http://www.medc2007.com/">MEDC</a> but
      I hope to sneak in a few hours every once in a while to push this effort forward!
   </p>
        <p>
      Can anyone figure out what NiVek stands for?
   </p>
        <p>
      - ec
   </p>
        <img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=32852fb1-9d86-49db-8775-4593e8024bf0" />
      </body>
      <title>NiVek J.D.'s Maiden Voyage</title>
      <guid>http://www.efficientcoder.net/PermaLink,guid,32852fb1-9d86-49db-8775-4593e8024bf0.aspx</guid>
      <link>http://www.efficientcoder.net/PermaLink,guid,32852fb1-9d86-49db-8775-4593e8024bf0.aspx</link>
      <pubDate>Sun, 18 Mar 2007 22:29:28 GMT</pubDate>
      <description>&lt;h4&gt;NiVek J.D.'s Maiden Voyage
&lt;/h4&gt;
&lt;p&gt;
   Everything came together today for NiVek's J.D.'s official first journey.&amp;nbsp; NiVek
   J.D. is a remote control tractor purchased from Target that was converted over to
   be controlled via a small on-board computer programmed in Java.&amp;nbsp; The same basic
   board I used for &lt;a href="http://www.efficientcoder.net/PermaLink,guid,a0e74f09-a914-4d7a-97b2-22c54821de4a.aspx"&gt;NiVek
   I&lt;/a&gt; was used for this "robot".
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://www.efficientcoder.net/content/binary/100_1439.JPG" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   This robot has two cool features not on NiVek I.&amp;nbsp; The first is it&amp;nbsp;has a &lt;a href="http://www.parallax.com/detail.asp?product_id=28146"&gt;GPS&lt;/a&gt; module
   purchased from &lt;a href="http://www.parallax.com/"&gt;Parallax&lt;/a&gt;.&amp;nbsp; The second and
   which I think is really exciting is it&amp;nbsp;using a Windows Mobile device as a "Repeater"
   that allows for communications from the NiVek embedded computer to a a PC.&amp;nbsp; This
   design is based upon software components that are part of &lt;a href="http://www.wimobot.com/"&gt;WiMo&lt;/a&gt;&amp;nbsp;or
   Windows Mobile Robot, you really need to check out that site!&amp;nbsp; This consists
   of some kewl software components that are made&amp;nbsp;up of a &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa497273.aspx"&gt;Compact
   Framework 2.0&amp;nbsp;&lt;/a&gt;application that runs on Windows Mobile and a collection of
   services that run under &lt;a href="http://msdn.microsoft.com/robotics/"&gt;Microsoft's
   Robotics Studio&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   &lt;font color=#000000 size=3&gt;&lt;strong&gt;NiVek J.D.'s Hardware&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   Basically the radio was just ripped out of the existing remote control tractor and
   and the motors were connected to the NiVek embedded computer.&amp;nbsp; As with the "original"
   WiMo, the Windows Mobile device was mounted on a servo with a CD-ROM.&amp;nbsp; The original
   WiMo used a SmartPhone not a Pocket PC so that probably worked out a little better,
   it's nice to be able to pan the camera however with my driving skills (smacking into
   walls)&amp;nbsp;one of these days, I'm pretty sure the CD-ROM is going to end up in pieces
   ;-).&amp;nbsp; I need to re-think that part of the design.
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://www.efficientcoder.net/content/binary/WimoHW.png" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;strong&gt;NiVeK J.D.'s Maiden Voyage (well at least one of the first few)&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;object height=350 width=425&gt;
      &lt;param name="movie" value="http://www.youtube.com/v/gHA5faNt31U"&gt;
      &lt;embed src="http://www.youtube.com/v/gHA5faNt31U" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;
   &lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;strong&gt;50,000ft System Overview&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      The actual robot itself is controlled by an embedded computer based upon a small PIC
      processor with some additional components that allow it to be programmed in Java with
      32K RAM &amp;amp; ROM this was purchased from Parallax and is called a Javelin Stamp.&amp;nbsp;
      (See this &lt;a href="http://www.efficientcoder.net/PermaLink,guid,a0e74f09-a914-4d7a-97b2-22c54821de4a.aspx"&gt;post&lt;/a&gt; for
      more information) 
   &lt;li&gt;
      The embedded computer has a BlueTooth transceiver module that allows it to communicate
      with a Windows Mobile Device. 
   &lt;li&gt;
      The Windows Mobile Device has a Compact Frameworks 2.0 application running code available
      from the &lt;a href="http://www.wimobot.com/"&gt;WiMo Bot&lt;/a&gt; web site. 
   &lt;li&gt;
      The Windows Mobile WiMo application communicates with the robot via BlueTooth.&amp;nbsp;
      It also has the ability to listen on a socket for connections from a remote application.&amp;nbsp;
      Since this is a Windows Mobile device (in my case a phone), it will not only work
      while it's connected via a local LAN via WiFi, but it can also communicate via the
      GPRS radio and be a sort of "repeater" that will allow it to communicate to a host
      controller program anywhere it has cellular reception, just think about this...this
      is very kewl!&amp;nbsp; A nice feature is on the opening screen shot of WiMo it tells
      you the IP address of the device.&lt;br&gt;
      &lt;img src="http://www.efficientcoder.net/content/binary/WimoPPC1.png" border=0&gt; 
   &lt;li&gt;
      On the PC side you have a set of Microsoft Robotics Studio&amp;nbsp;services.&amp;nbsp; When
      these services first start you will be greeted by a dialog that will allow you to
      enter the IP address of the remote Windows Mobile device.&lt;br&gt;
      &lt;img src="http://www.efficientcoder.net/content/binary/WimoIP.png" border=0&gt; 
   &lt;li&gt;
      Once you press "Connect" (and the software gods are shining on you) you should establish
      a connection from your PC to the WiMo application. 
   &lt;li&gt;
      At this point a couple of additional forms will show up from the MSRS services.&amp;nbsp;
      The one in the upper left is displaying console messages from MSRS (Microsoft Robotics
      Studio).&amp;nbsp; This is a great way to see what's actually going on with your services.&amp;nbsp; 
   &lt;li&gt;
      The one in the upper right is from a service that came with WiMo (with the addition
      of buttons to control the motors).&amp;nbsp; Another really cool built in feature with
      WiMo is the ability to use the camera on your Windows Mobile device to send pictures
      back from your robot.&amp;nbsp; This from also sends messages to the core WiMo communications
      MSRS service to pass those to the WiMo device application.&amp;nbsp; These messages allow
      for control of the robot from the PC. 
   &lt;li&gt;
      The dialog in the bottom is an additional MSRS service that was built that subscribes
      the the TextMessageReceived event from the core WiMo service.&amp;nbsp; 
      &lt;ul&gt;
         &lt;li&gt;
            The NiVek embedded computer&amp;nbsp;spits out GPS readings every second (probably need
            to change this so it only sends when the location changes).&amp;nbsp; 
         &lt;li&gt;
            This gets sent from NiVek to the the WiMo software on the device with&amp;nbsp;a simple
            &amp;lt;stx&amp;gt;&amp;lt;etx&amp;gt; binary protocol.&amp;nbsp; The WiMo software turns it into a simple
            text message.&amp;nbsp; 
         &lt;li&gt;
            For our GPS WiMo constructs a simple text message&amp;nbsp;"GPS: #Sats=4 Lat=28.4.042
            Long=82.42.5522".&amp;nbsp; 
         &lt;li&gt;
            This text message is sent over the wire from the Windows Mobile application to the
            WimoComm MSRS service.&amp;nbsp; 
         &lt;li&gt;
            The WiMo MSRS service picks up the text message and finds any services that subscribe
            to this type of incoming event. 
         &lt;li&gt;
            The GPS Point plotter MSRS service&amp;nbsp;subscribes to these messages so it takes those
            readings and plots the on the crude dialog you see below.&amp;nbsp; The challenge here
            is that for a robot this size of NiVek J.D. if it moves 50ft that's a long distance,
            and the resolution on the GPS module I purchased just doesn't seem to be all that
            accurate.&lt;/li&gt;
      &lt;/ul&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   &lt;img src="http://www.efficientcoder.net/content/binary/NiVek_Console.png" border=0&gt; 
&lt;/p&gt;
&lt;p&gt;
   Finally one last picture of you host at the controls!
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://www.efficientcoder.net/content/binary/KDW.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   Looks like my day job is going to be busy over the next few weeks with &lt;a href="http://www.devconnections.com/"&gt;DevConnections&lt;/a&gt; and &lt;a href="http://www.medc2007.com/"&gt;MEDC&lt;/a&gt; but
   I hope to sneak in a few hours every once in a while&amp;nbsp;to push this effort forward!
&lt;/p&gt;
&lt;p&gt;
   Can anyone figure out what NiVek stands for?
&lt;/p&gt;
&lt;p&gt;
   - ec
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=32852fb1-9d86-49db-8775-4593e8024bf0" /&gt;</description>
      <comments>http://www.efficientcoder.net/CommentView,guid,32852fb1-9d86-49db-8775-4593e8024bf0.aspx</comments>
      <category>Hardware;Mobile;Robotics</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.net/Trackback.aspx?guid=667fe1a2-1187-4320-b1a6-4d6f9eeab070</trackback:ping>
      <pingback:server>http://www.efficientcoder.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.net/PermaLink,guid,667fe1a2-1187-4320-b1a6-4d6f9eeab070.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.net/CommentView,guid,667fe1a2-1187-4320-b1a6-4d6f9eeab070.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.net/SyndicationService.asmx/GetEntryCommentsRss?guid=667fe1a2-1187-4320-b1a6-4d6f9eeab070</wfw:commentRss>
      <title>Mobile Device Ramblings</title>
      <guid>http://www.efficientcoder.net/PermaLink,guid,667fe1a2-1187-4320-b1a6-4d6f9eeab070.aspx</guid>
      <link>http://www.efficientcoder.net/PermaLink,guid,667fe1a2-1187-4320-b1a6-4d6f9eeab070.aspx</link>
      <pubDate>Thu, 08 Feb 2007 12:47:56 GMT</pubDate>
      <description>&lt;h4 class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Mobile Device Ramblings
&lt;/h4&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Since
   my days of writing code for embedded systems in the early 90’s I’ve always had a soft
   spot for mobile devices.&amp;nbsp; My first experience writing code for mobile devices
   was a floating point library I created for the Palm OS for a time tracking application,
   this was a small C library, nice concept but I just don’t think it reached the fullest
   potential, next was in 1998 with my first HPC or Handheld PC running some early version
   of Windows CE, with a fold out keyboard and&amp;nbsp;a of low resolution LCD black and
   gray display.&amp;nbsp; At the time we used embedded VB to write applications; it was
   fairly painful to write anything but the smallest applications, these devices never
   really took off.&amp;nbsp; Next was a collection of “smart-phones” with PDA like functionality,
   some had development kits but again these were very painful and you really couldn’t
   do too much other than manage lists and appointments.&amp;nbsp; Then around 2001 the world
   was changing for mobile devices with a new technology called WAP or wireless application
   protocol, the idea here was really cool, define your application in a set of XML documents
   using the WAP standard and it would run on any device that supported a WAP browser.&amp;nbsp;
   Well I learned the technology, built a few proof of concepts systems, but in the end
   this technology just didn’t turn into anything real.&amp;nbsp; An interesting side note
   on this is that although WAP seemed and still seems like a great idea, most phone
   or mobile device that people do “web-stuff” these days really have a full feature
   browser built in so all the experience learning WAP probably provides less than significant
   value today.&amp;nbsp; &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Fast
   forward to 2003, hardware is really coming of age and cellular technology is starting
   to provide solutions for wireless wide area networks that are usable.&amp;nbsp; These
   are built into phone and cards that fit in your computer that act as modems as well
   as a new hybrid technology called the “Smart Phones” that not only provide voice service,
   but a platform for developing non-trivial applications.&amp;nbsp; So now we have devices
   that have decent computing power as well as some sort of connectivity.&amp;nbsp; With
   PDA’s up to this point some sort of external connectivity was required to synchronize
   data, now we have a device that can not only access web sites via built on browser
   functionality, but when networks are available they can synchronize data with the
   server to keep their data fresh.&amp;nbsp; I’m not really so much a Microsoft Bigot, but
   that is where the majority of my experience is so I can speak to that.&amp;nbsp; With
   the release of Windows Pocket PC 2003 and Pocket PC 2003 Second Edition and the Compact
   Framework we started to have a good platform where it made sense to develop business
   applications on a mobile application (this was possible before, but using tools like
   eVC++ and Embedded visual basic, the&amp;nbsp;eVC++ probably really good at creating small,
   yet industrial strength PPC apps and Embedded VB…well lets just not talk about it…)&amp;nbsp; &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;So
   although the Compact Frameworks application was definitely a 1.0 release it did provide
   the basis to build real applications, in addition if you needed a non-trivial data
   store, SQL Server CE was an excellent solution, although it’s footprint was small
   in relative terms, it wasn’t really all that small and with limited amount of RAM
   on the device it wasn’t always the best solution.&amp;nbsp; With the release of the .NET
   framework 2.0 came the Compact Frameworks 2.0 and around that time Windows Mobile
   5.0.&amp;nbsp; The compact framework 2.0 was much “tighter” than the 1.0 release but to
   develop a real world class application you still needed to get down and dirty and
   do a lot of tricks to get it to do the things you want.&amp;nbsp; I’m confident with the
   next major release, this will become a fairly mature product at the same time the
   mobile operating systems based upon Windows CE.&amp;nbsp; In addition each year the devices
   provide more capability in terms of built in RAM, display resolution and processing
   speed.&amp;nbsp; Finally bandwidth provided by mobile carrier is increasing with each
   year so it looks like these devices are coming of age where it makes sense to seriously
   start putting business application onto these devices…&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Saying
   that…&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Let’s
   discuss a little bit about what type of application is a good candidate to build on
   a mobile device and what type isn’t....&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;What
   is a good candidate for a Pocket PC application?&amp;nbsp; A good candidate for an application
   is one for users that have a really busy schedule that require work to be performed
   at many different locations.&amp;nbsp; As good as a user interface is on a mobile device,
   the capabilities that are on a more robust set of hardware such as a laptop just aren’t
   present.&amp;nbsp; In addition the information that can be conveyed to the user is also
   fairly limiting.&amp;nbsp; Leaving out the obvious solution of calendaring/scheduling
   an excellent application for a mobile device is email.&amp;nbsp; With this type of application
   you really don’t have to perform many steps, lookup significant data, you just really
   want to exchange a little bit of information back and forth as efficiently and quickly
   as possible, you want to do it efficiently in that you don’t spend 2 minutes or even
   15 seconds using the application, you want to do it quickly in that if you get an
   email, you would like to respond within a short amount of time (like 5 minutes).&amp;nbsp;
   Yes this could be done with a phone call, but if you are in the middle of a task,
   you may need to spend an extra 2 minutes completing it before you want the interruption
   of doing your end of the communications, by that time the original person has moved
   on and you may be interrupting them.&amp;nbsp; I guess you would almost call this a vehicle
   for asynchronous communications.&amp;nbsp; So now let’s think in terms of a busy remote
   worker with many tasks to be performed at multiple locations.&amp;nbsp; What can we do
   to empower these types of worker with the information they need and the capability
   to provide real time feedback to some sort of coordinator?&amp;nbsp; Well it depends,
   if the system would need something like...where they need to be and when they need
   to be there and their schedule doesn’t change that much, I guess they could just print
   out their schedule in the morning (or synchronize with a server in the morning) and
   that would be adequate.&amp;nbsp; There are two or three areas where building an application
   may make sense:&amp;nbsp;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;ul&gt;
   &lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
      &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;They
      need more than just the schedule, this could be any detailed instructions of what
      they need to do, any past work that has already been performed, contact information
      etc...&lt;/font&gt;&lt;/span&gt; 
   &lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
      &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;When
      they perform the work (drop off a package, pick up a vehicle or similar, some central
      coordinator needs to know about it.&amp;nbsp; 3)&amp;nbsp; &lt;/font&gt;&lt;/span&gt; 
   &lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
      &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;Once
      they begin their day, their schedule may need to be flexible.&amp;nbsp; &lt;/font&gt;&lt;/span&gt;
   &lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;font color=#000000&gt;So
   now revisiting the idea of an asynchronous vehicle for communications we can start
   thinking in terms of good candidates for mobile applications…well not yet, the other
   thing we need to think about is the capability of the device for interacting with
   users (at least until we can take voice interactions to the next level).&amp;nbsp; Right
   now a 2x3” screen with a stylus just isn’t the right answer for all but a certain
   class of applications.&amp;nbsp; I recently developed an application for a IT dispatching
   system that this is a great fit, but for someone like me that needs to have multiple
   and sophisticated "conversations" with technology it just isn’t all that efficient.&amp;nbsp;
   So the answer for determining the right cutoff for a mobile application might be the
   volume, length and the sophistication of the conversation between the user and the
   application.&amp;nbsp; So for a delivery driver where they could do a lookup of on a map,
   get directions, drop the package off, possibly get a signature, send that information
   about the coordinator, we have many small non-sophisticated conversations with a device.&amp;nbsp;
   For a developer fixing bugs, let’s say they fix 5-6 bugs a day, their conversation
   may be extensive if they enter notes but the key factor here is once they open their
   device get to where they need it is probably quicker to just do this on their desktop.&amp;nbsp;
   In addition the developer probably will enter some notes, until we come up with a
   reliable voice solution this will never be perceived as simple on a device.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;-ec&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=667fe1a2-1187-4320-b1a6-4d6f9eeab070" /&gt;</description>
      <comments>http://www.efficientcoder.net/CommentView,guid,667fe1a2-1187-4320-b1a6-4d6f9eeab070.aspx</comments>
      <category>Mobile</category>
    </item>
  </channel>
</rss>