<?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:wfw="http://wellformedweb.org/CommentAPI/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>TonyB's Blog</title>
    <link>http://www.tonybunce.com/</link>
    <description>Development, Design, and Everything Geek</description>
    <language>en-us</language>
    <copyright>Tony Bunce</copyright>
    <lastBuildDate>Mon, 29 Dec 2008 03:04:21 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>tonyb@tonybunce.com</managingEditor>
    <webMaster>tonyb@tonybunce.com</webMaster>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=9180ecb1-fed2-4154-ac7b-048c00df07ff</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,9180ecb1-fed2-4154-ac7b-048c00df07ff.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,9180ecb1-fed2-4154-ac7b-048c00df07ff.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9180ecb1-fed2-4154-ac7b-048c00df07ff</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My parents got me a Sony BD-S350 Blue-Ray player for Christmas.  Like all Blue-Ray
profile 2.0 players it has an Ethernet port.  While hooking everything I came
to a realization about my home network; it has been overrun with STUFF.  Networks
are for computers right?  Well I have an Xbox 360, a TiVo Series 3, a Wii, and
now a Blue-Ray player all plugged into my network.  That’s twice as many <em>things</em> as
computes on my home network.   The only question now is what new toy am
I going to plug-in next!
</p>
        <img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=9180ecb1-fed2-4154-ac7b-048c00df07ff" />
      </body>
      <title>My home network has been overrun!</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,9180ecb1-fed2-4154-ac7b-048c00df07ff.aspx</guid>
      <link>http://www.tonybunce.com/2008/12/29/My-Home-Network-Has-Been-Overrun.aspx</link>
      <pubDate>Mon, 29 Dec 2008 03:04:21 GMT</pubDate>
      <description>&lt;p&gt;
My parents got me a Sony BD-S350 Blue-Ray player for Christmas.&amp;#160; Like all Blue-Ray
profile 2.0 players it has an Ethernet port.&amp;#160; While hooking everything I came
to a realization about my home network; it has been overrun with STUFF.&amp;#160; Networks
are for computers right?&amp;#160; Well I have an Xbox 360, a TiVo Series 3, a Wii, and
now a Blue-Ray player all plugged into my network.&amp;#160; That’s twice as many &lt;em&gt;things&lt;/em&gt; as
computes on my home network.&amp;#160;&amp;#160; The only question now is what new toy am
I going to plug-in next!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=9180ecb1-fed2-4154-ac7b-048c00df07ff" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,9180ecb1-fed2-4154-ac7b-048c00df07ff.aspx</comments>
      <category>xbox</category>
      <category>Home Network</category>
    </item>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So I had a huge post ready to go about how to use ASP.Net Ajax createDelegate and
createCallback functions together to get a function that will keep a property scoped <em>this</em> reference
and pass predetermined arguments when I came across <a href="http://blogs.lotterypost.com/speednet/2008/05/aspnet-ajax-client-library-combining-create.htm" target="_blank">this
article</a>.  It is a great article about combining the functionally createDelegate
and createCallback into a new function called createDelegateCallback.  This is
a nice addition to the ASP.Net ajax library.
</p>
        <img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7" />
      </body>
      <title>ASP.Net Ajax Delegates meet Callbacks</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7.aspx</guid>
      <link>http://www.tonybunce.com/2008/11/13/ASPNet-Ajax-Delegates-Meet-Callbacks.aspx</link>
      <pubDate>Thu, 13 Nov 2008 02:48:00 GMT</pubDate>
      <description>&lt;p&gt;
So I had a huge post ready to go about how to use ASP.Net Ajax createDelegate and
createCallback functions together to get a function that will keep a property scoped &lt;em&gt;this&lt;/em&gt; reference
and pass predetermined arguments when I came across &lt;a href="http://blogs.lotterypost.com/speednet/2008/05/aspnet-ajax-client-library-combining-create.htm" target="_blank"&gt;this
article&lt;/a&gt;.&amp;#160; It is a great article about combining the functionally createDelegate
and createCallback into a new function called createDelegateCallback.&amp;#160; This is
a nice addition to the ASP.Net ajax library.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,2a5f9ee9-4cc1-438d-abc1-b4ac5405e1a7.aspx</comments>
      <category>.Net</category>
      <category>asp.net</category>
      <category>Asp.net ajax</category>
    </item>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=1285b1ff-c715-49c1-96c6-49216d3c09d2</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,1285b1ff-c715-49c1-96c6-49216d3c09d2.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,1285b1ff-c715-49c1-96c6-49216d3c09d2.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1285b1ff-c715-49c1-96c6-49216d3c09d2</wfw:commentRss>
      <slash:comments>16</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm a huge Blackberry fan.  I have had a Blackberry for close to 6 years now
and have never looked back. They do what they are designed to do (email and phone),
no questions asked.  I've used windows mobile phones and have a few friends that
have them and it seams like they are always having issues.  The iPhone is definitely
a strong competitor but without a real keyboard and push email its not an option for
me.  There is one huge are area that Blackberrys and RIM (Research In Motion)
is lacking in and that's developer support. While there are <a href="http://devberry.com/2008/03/21/its-cool-to-be-a-playa-hata/">many</a><a href="http://devberry.com/2008/03/06/rim-sdk-a-pre-teen-schoolgirl/">things
to</a><a href="http://devberry.com/2008/03/09/feel-good-story-why-i-develop-for-the-blackberry/">complain
about</a> the issue that pains me the most as a web developer is the Blackberry Browser.
</p>
        <p>
The iPhone browser rocks.  The Blackberry Browser doesn't.  Its like developing
for IE 4.0.  There is limited xhtml  and css support and if you follow the <a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=4&amp;url=http%3A%2F%2Fna.blackberry.com%2Feng%2Fdeliverables%2F1143%2Fbrowser_devguide.pdf&amp;ei=4JAiSOLGC4rkiAG06-WIBw&amp;usg=AFQjCNGLlDi40BagbXst3Gg9LgKHcnpjJg&amp;sig2=6ZmM28M3CSwYWYyafmMfpQ">documentation</a> its
possible to create a functional website that looks decent  on the device. 
There is very little javascript support, but it does have support to get GPS coordinates
from a device with builtin GPS, like the Blackberry 8800, 8820, and 8310, which could
be used to create some very cool location based websites.  Unfortunately the
documentation is completely wrong.   The information in the <a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=4&amp;url=http%3A%2F%2Fna.blackberry.com%2Feng%2Fdeliverables%2F1143%2Fbrowser_devguide.pdf&amp;ei=4JAiSOLGC4rkiAG06-WIBw&amp;usg=AFQjCNGLlDi40BagbXst3Gg9LgKHcnpjJg&amp;sig2=6ZmM28M3CSwYWYyafmMfpQ">content
developer guide</a> is just plain wrong and <a href="http://na.blackberry.com/eng/developers/resources/journals/mar_2007/bdjs.jsp#blackberry.location">sample
code</a> on the blackberry developer website isn't even valid javascript.
</p>
        <p>
Here is what I have found to be a more accurate description of the <strong>blackberry.location </strong>javascript
API in the blackberry browser based on my testing using a Blackberry 8800 running
v4.1.1.90:
</p>
        <p>
          <strong>
            <a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/BlackberryBrowserGPS_18AF/gps_2.png">
              <img style="border: 0px none ; margin: 0px 10px 0px 0px;" alt="gps" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/BlackberryBrowserGPS_18AF/gps_thumb.png" align="left" border="0" height="244" width="324" />
            </a>blackberry.location.latitude</strong> &amp; <strong>blackberry.location.longitude: 
<br /></strong>The current latitude and longitude of the device.  The first time you
access either of these properties the user is prompted if they would like to let the
website access location information.  There is currently no setting on the device
or on the enterprise server to disable this prompt or whitelist specific sites. If
the user selects "No" then "0" will be returned for the latitude &amp; longitude.
</p>
        <p>
          <strong>blackberry.location.setAidMode(aidMode):</strong>
          <br />
This method sets the GPS aid mode to be used. 0 - Cell Site, 1 - Assisted, 2 - Autonomous. 
The documentation is mostly correct on this method. "Autonomous" is the most accurate
and most supported but also the slowest. The other two methods require carrier support
and my carrier doesn't support it so I couldn't test them.
</p>
        <p>
          <strong>blackberry.location.refreshLocation</strong>(): 
<br />
This method request and update of the location from the device.  This method
is non-blocking so if you try to read the laitude/longitude right after calling this
method you may or may not get the newest information.  This method returns true
on success.  If you have set an invalid AidMode (0 or 1 and the carrier doesn't
support that feature) this method will return false and the callback method will never
be called. 
</p>
        <p>
          <strong>blackberry.location.onLocationUpdate(callbackJS)</strong>
          <br />
This method is the worst a far as incorrect documentation goes.  This method
sets a callback function that is called after you call refreshLocation() and the device
actually has the new location data.  However in my testing it appears that this
does not get called once per refreshLocation() call.  After you call refreshLocation()
the callback function is invoked continuously when the location changes (about every
10-15 seconds in my testing). Another very important note is that <strong>you have
to pass this method a string</strong> that gets evail-ed (like you can do with setTimeout).
</p>
        <p>
 
</p>
        <p>
Here is a sample that puts all of the pieces together.  It simply shows a javascript
alert with the latitude and longitude when the location is updated:
</p>
        <div>
          <div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 1:</span> &lt;!DOCTYPE
html PUBLIC <span style="color: rgb(0, 96, 128);">"-//W3C//DTD XHTML Mobile 1.0//EN"</span><span style="color: rgb(0, 96, 128);">"http://www.wapforum.org/DTD/xhtml-mobile10.dtd"</span>&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 2:</span> &lt;html
xmlns=<span style="color: rgb(0, 96, 128);">"http://www.w3.org/1999/xhtml"</span> xml:lang=<span style="color: rgb(0, 96, 128);">"en"</span> lang=<span style="color: rgb(0, 96, 128);">"en"</span>&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 3:</span> &lt;head&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 4:</span> &lt;title&gt;GPS
Testing&lt;/title&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 5:</span> &lt;script <span style="color: rgb(0, 96, 128);">"text/javascript"</span>&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 6:</span>  </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 7:</span>
              <span style="color: rgb(0, 128, 0);">//
called when location object changes</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 8:</span>
              <span style="color: rgb(0, 0, 255);">function</span> locationCB()</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 9:</span> {</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 10:</span> alert(<span style="color: rgb(0, 96, 128);">"Latitude
"</span> +</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 11:</span> blackberry.location.latitude);</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 12:</span> alert(<span style="color: rgb(0, 96, 128);">"Longitude
"</span> +</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 13:</span> blackberry.location.longitude);</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 14:</span>
              <span style="color: rgb(0, 0, 255);">return</span>
              <span style="color: rgb(0, 0, 255);">true</span>;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 15:</span> }</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 16:</span>  </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 17:</span>
              <span style="color: rgb(0, 128, 0);">//
test to see if the blackberry location API is supported</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 18:</span>
              <span style="color: rgb(0, 0, 255);">if</span>(
window.blackberry &amp;&amp; blackberry.location.GPSSupported) {</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 19:</span> document.write(<span style="color: rgb(0, 96, 128);">"GPS
Supported"</span>);</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 20:</span>  </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 21:</span>  </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 22:</span>
              <span style="color: rgb(0, 128, 0);">//
Set our call back function</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 23:</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 24:</span>
              <span style="color: rgb(0, 128, 0);">//WRONG:
this would call our call back function immediatly, not after the refresh</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 25:</span>
              <span style="color: rgb(0, 128, 0);">//blackberry.location.onLocationUpdate(locationCB());</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 26:</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 27:</span>
              <span style="color: rgb(0, 128, 0);">//WRONG:
the blackberry browser won't support passing a method.</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 28:</span>
              <span style="color: rgb(0, 128, 0);">//It
will error on refresh and all javascript processing on the page will stop</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 29:</span>
              <span style="color: rgb(0, 128, 0);">//blackberry.location.onLocationUpdate(locationCB());</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 30:</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 31:</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 32:</span>
              <span style="color: rgb(0, 128, 0);">//
RIGHT: pass a string that calls our method</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 33:</span> blackberry.location.onLocationUpdate(<span style="color: rgb(0, 96, 128);">"locationCB()"</span>);</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 34:</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 35:</span>
              <span style="color: rgb(0, 128, 0);">//
set to Autonomous mode</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 36:</span> blackberry.location.setAidMode(2);</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 37:</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 38:</span>
              <span style="color: rgb(0, 128, 0);">//refresh
the location</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 39:</span> blackberry.location.refreshLocation();</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 40:</span> } </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 41:</span>
              <span style="color: rgb(0, 0, 255);">else</span>
            </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 42:</span> {</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 43:</span> document.write(<span style="color: rgb(0, 96, 128);">"This
Device doesn't support the Blackberry Location API"</span>);</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 44:</span> }</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 45:</span> &lt;/script&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 46:</span>  </pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 47:</span> &lt;/head&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 48:</span> &lt;body&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">
              <span style="color: rgb(96, 96, 96);"> 49:</span> &lt;/body&gt;</pre>
            <pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);">
              <span style="color: rgb(96, 96, 96);"> 50:</span> &lt;/html&gt;</pre>
          </div>
        </div>
        <p>
 
</p>
        <p>
Hopefully someday we will get a more feature rich, fully documented, Blackberry browser
with DOM and AJAX support  (Firefox mobile anyone?).  Until then hopefully
I have saved someone days of debugging incorrectly documented features.
</p>
        <img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=1285b1ff-c715-49c1-96c6-49216d3c09d2" />
      </body>
      <title>Blackberry Browser &amp;amp; GPS</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,1285b1ff-c715-49c1-96c6-49216d3c09d2.aspx</guid>
      <link>http://www.tonybunce.com/2008/05/08/Blackberry-Browser-Amp-GPS.aspx</link>
      <pubDate>Thu, 08 May 2008 06:40:16 GMT</pubDate>
      <description>&lt;p&gt;
I'm a huge Blackberry fan.&amp;nbsp; I have had a Blackberry for close to 6 years now
and have never looked back. They do what they are designed to do (email and phone),
no questions asked.&amp;nbsp; I've used windows mobile phones and have a few friends that
have them and it seams like they are always having issues.&amp;nbsp; The iPhone is definitely
a strong competitor but without a real keyboard and push email its not an option for
me.&amp;nbsp; There is one huge are area that Blackberrys and RIM (Research In Motion)
is lacking in and that's developer support. While there are &lt;a href="http://devberry.com/2008/03/21/its-cool-to-be-a-playa-hata/"&gt;many&lt;/a&gt; &lt;a href="http://devberry.com/2008/03/06/rim-sdk-a-pre-teen-schoolgirl/"&gt;things
to&lt;/a&gt; &lt;a href="http://devberry.com/2008/03/09/feel-good-story-why-i-develop-for-the-blackberry/"&gt;complain
about&lt;/a&gt; the issue that pains me the most as a web developer is the Blackberry Browser.
&lt;/p&gt;
&lt;p&gt;
The iPhone browser rocks.&amp;nbsp; The Blackberry Browser doesn't.&amp;nbsp; Its like developing
for IE 4.0.&amp;nbsp; There is limited xhtml&amp;nbsp; and css support and if you follow the &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=4&amp;amp;url=http%3A%2F%2Fna.blackberry.com%2Feng%2Fdeliverables%2F1143%2Fbrowser_devguide.pdf&amp;amp;ei=4JAiSOLGC4rkiAG06-WIBw&amp;amp;usg=AFQjCNGLlDi40BagbXst3Gg9LgKHcnpjJg&amp;amp;sig2=6ZmM28M3CSwYWYyafmMfpQ"&gt;documentation&lt;/a&gt; its
possible to create a functional website that looks decent&amp;nbsp; on the device.&amp;nbsp;
There is very little javascript support, but it does have support to get GPS coordinates
from a device with builtin GPS, like the Blackberry 8800, 8820, and 8310, which could
be used to create some very cool location based websites.&amp;nbsp; Unfortunately the
documentation is completely wrong.&amp;nbsp;&amp;nbsp; The information in the &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=4&amp;amp;url=http%3A%2F%2Fna.blackberry.com%2Feng%2Fdeliverables%2F1143%2Fbrowser_devguide.pdf&amp;amp;ei=4JAiSOLGC4rkiAG06-WIBw&amp;amp;usg=AFQjCNGLlDi40BagbXst3Gg9LgKHcnpjJg&amp;amp;sig2=6ZmM28M3CSwYWYyafmMfpQ"&gt;content
developer guide&lt;/a&gt; is just plain wrong and &lt;a href="http://na.blackberry.com/eng/developers/resources/journals/mar_2007/bdjs.jsp#blackberry.location"&gt;sample
code&lt;/a&gt; on the blackberry developer website isn't even valid javascript.
&lt;/p&gt;
&lt;p&gt;
Here is what I have found to be a more accurate description of the &lt;strong&gt;blackberry.location &lt;/strong&gt;javascript
API in the blackberry browser based on my testing using a Blackberry 8800 running
v4.1.1.90:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/BlackberryBrowserGPS_18AF/gps_2.png"&gt;&lt;img style="border: 0px none ; margin: 0px 10px 0px 0px;" alt="gps" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/BlackberryBrowserGPS_18AF/gps_thumb.png" align="left" border="0" height="244" width="324"&gt;&lt;/a&gt;blackberry.location.latitude&lt;/strong&gt; &amp;amp; &lt;strong&gt;blackberry.location.longitude: 
&lt;br&gt;
&lt;/strong&gt;The current latitude and longitude of the device.&amp;nbsp; The first time you
access either of these properties the user is prompted if they would like to let the
website access location information.&amp;nbsp; There is currently no setting on the device
or on the enterprise server to disable this prompt or whitelist specific sites. If
the user selects "No" then "0" will be returned for the latitude &amp;amp; longitude.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;blackberry.location.setAidMode(aidMode):&lt;/strong&gt; 
&lt;br&gt;
This method sets the GPS aid mode to be used. 0 - Cell Site, 1 - Assisted, 2 - Autonomous.&amp;nbsp;
The documentation is mostly correct on this method. "Autonomous" is the most accurate
and most supported but also the slowest. The other two methods require carrier support
and my carrier doesn't support it so I couldn't test them.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;blackberry.location.refreshLocation&lt;/strong&gt;(): 
&lt;br&gt;
This method request and update of the location from the device.&amp;nbsp; This method
is non-blocking so if you try to read the laitude/longitude right after calling this
method you may or may not get the newest information.&amp;nbsp; This method returns true
on success.&amp;nbsp; If you have set an invalid AidMode (0 or 1 and the carrier doesn't
support that feature) this method will return false and the callback method will never
be called. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;blackberry.location.onLocationUpdate(callbackJS)&lt;/strong&gt; 
&lt;br&gt;
This method is the worst a far as incorrect documentation goes.&amp;nbsp; This method
sets a callback function that is called after you call refreshLocation() and the device
actually has the new location data.&amp;nbsp; However in my testing it appears that this
does not get called once per refreshLocation() call.&amp;nbsp; After you call refreshLocation()
the callback function is invoked continuously when the location changes (about every
10-15 seconds in my testing). Another very important note is that &lt;strong&gt;you have
to pass this method a string&lt;/strong&gt; that gets evail-ed (like you can do with setTimeout).
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Here is a sample that puts all of the pieces together.&amp;nbsp; It simply shows a javascript
alert with the latitude and longitude when the location is updated:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 1:&lt;/span&gt; &amp;lt;!DOCTYPE
html PUBLIC &lt;span style="color: rgb(0, 96, 128);"&gt;"-//W3C//DTD XHTML Mobile 1.0//EN"&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;"http://www.wapforum.org/DTD/xhtml-mobile10.dtd"&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 2:&lt;/span&gt; &amp;lt;html
xmlns=&lt;span style="color: rgb(0, 96, 128);"&gt;"http://www.w3.org/1999/xhtml"&lt;/span&gt; xml:lang=&lt;span style="color: rgb(0, 96, 128);"&gt;"en"&lt;/span&gt; lang=&lt;span style="color: rgb(0, 96, 128);"&gt;"en"&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 3:&lt;/span&gt; &amp;lt;head&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 4:&lt;/span&gt; &amp;lt;title&amp;gt;GPS
Testing&amp;lt;/title&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 5:&lt;/span&gt; &amp;lt;script &lt;span style="color: rgb(0, 96, 128);"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 7:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//
called when location object changes&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 8:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; locationCB()&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 9:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 10:&lt;/span&gt; alert(&lt;span style="color: rgb(0, 96, 128);"&gt;"Latitude
"&lt;/span&gt; +&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 11:&lt;/span&gt; blackberry.location.latitude);&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 12:&lt;/span&gt; alert(&lt;span style="color: rgb(0, 96, 128);"&gt;"Longitude
"&lt;/span&gt; +&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 13:&lt;/span&gt; blackberry.location.longitude);&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 14:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 15:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 17:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//
test to see if the blackberry location API is supported&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 18:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;(
window.blackberry &amp;amp;&amp;amp; blackberry.location.GPSSupported) {&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 19:&lt;/span&gt; document.write(&lt;span style="color: rgb(0, 96, 128);"&gt;"GPS
Supported"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 22:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//
Set our call back function&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 23:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 24:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//WRONG:
this would call our call back function immediatly, not after the refresh&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 25:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//blackberry.location.onLocationUpdate(locationCB());&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 26:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 27:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//WRONG:
the blackberry browser won't support passing a method.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 28:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//It
will error on refresh and all javascript processing on the page will stop&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 29:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//blackberry.location.onLocationUpdate(locationCB());&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 30:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 31:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 32:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//
RIGHT: pass a string that calls our method&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 33:&lt;/span&gt; blackberry.location.onLocationUpdate(&lt;span style="color: rgb(0, 96, 128);"&gt;"locationCB()"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 34:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 35:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//
set to Autonomous mode&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 36:&lt;/span&gt; blackberry.location.setAidMode(2);&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 37:&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 38:&lt;/span&gt; &lt;span style="color: rgb(0, 128, 0);"&gt;//refresh
the location&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 39:&lt;/span&gt; blackberry.location.refreshLocation();&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 40:&lt;/span&gt; } &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 41:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 42:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 43:&lt;/span&gt; document.write(&lt;span style="color: rgb(0, 96, 128);"&gt;"This
Device doesn't support the Blackberry Location API"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 44:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 45:&lt;/span&gt; &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 46:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 47:&lt;/span&gt; &amp;lt;/head&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 48:&lt;/span&gt; &amp;lt;body&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 49:&lt;/span&gt; &amp;lt;/body&amp;gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: rgb(244, 244, 244);"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt; 50:&lt;/span&gt; &amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Hopefully someday we will get a more feature rich, fully documented, Blackberry browser
with DOM and AJAX support&amp;nbsp; (Firefox mobile anyone?).&amp;nbsp; Until then hopefully
I have saved someone days of debugging incorrectly documented features.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=1285b1ff-c715-49c1-96c6-49216d3c09d2" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,1285b1ff-c715-49c1-96c6-49216d3c09d2.aspx</comments>
      <category>blackberry</category>
    </item>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Here is a simple script that will automate
the process of replacing notepad.exe with notepad2.exe in Vista.<br /><br />
I borrowed the idea from <a href="http://jens-schaller.de/blog/2007/07/31/102.htm">Jens
Schaller</a> and <a href="http://lifehacker.com/378524/replace-notepad-with-notepad2">Lifehacker</a>.
Just <a href="http://www.tonybunce.com/content/binary/replacenotepad.txt">save the
code</a> in a .bat file in the same directory as notepad2.exe and it will take care
of the rest. <pre><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;">takeown
/F c:\windows\notepad.exe<br />
icacls c:\windows\notepad.exe /grant administrators:F<br /><br />
takeown /F c:\windows\system32\notepad.exe<br />
icacls c:\windows\system32\notepad.exe /grant administrators:F<br /><br />
copy notepad2.exe c:\windows\notepad.exe<br />
copy notepad2.exe c:\windows\system32\notepad.exe</span></pre><img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb" /></body>
      <title>Vista Notepad Replacement script</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb.aspx</guid>
      <link>http://www.tonybunce.com/2008/04/15/Vista-Notepad-Replacement-Script.aspx</link>
      <pubDate>Tue, 15 Apr 2008 02:36:11 GMT</pubDate>
      <description>Here is a simple script that will automate the process of replacing notepad.exe with notepad2.exe in Vista.&lt;br&gt;
&lt;br&gt;
I borrowed the idea from &lt;a href="http://jens-schaller.de/blog/2007/07/31/102.htm"&gt;Jens
Schaller&lt;/a&gt; and &lt;a href="http://lifehacker.com/378524/replace-notepad-with-notepad2"&gt;Lifehacker&lt;/a&gt;.
Just &lt;a href="http://www.tonybunce.com/content/binary/replacenotepad.txt"&gt;save the
code&lt;/a&gt; in a .bat file in the same directory as notepad2.exe and it will take care
of the rest. &lt;pre&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;takeown
/F c:\windows\notepad.exe&lt;br&gt;
icacls c:\windows\notepad.exe /grant administrators:F&lt;br&gt;
&lt;br&gt;
takeown /F c:\windows\system32\notepad.exe&lt;br&gt;
icacls c:\windows\system32\notepad.exe /grant administrators:F&lt;br&gt;
&lt;br&gt;
copy notepad2.exe c:\windows\notepad.exe&lt;br&gt;
copy notepad2.exe c:\windows\system32\notepad.exe&lt;/span&gt;&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,8fe9cd05-fdfa-4ea7-bae3-f3b0d9b83cdb.aspx</comments>
      <category>SysAdmin</category>
      <category>vista</category>
    </item>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=d3f40163-7a8b-4a24-8f40-7e132f356672</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,d3f40163-7a8b-4a24-8f40-7e132f356672.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,d3f40163-7a8b-4a24-8f40-7e132f356672.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d3f40163-7a8b-4a24-8f40-7e132f356672</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p align="left">
It looks like the fat lady is singing for HD DVD.  Netflix just sent me an email
that they are switch to Blu-Ray only.  They are even going to switch the movies
that are already in my queue to standard definition DVDs.  I hope that Microsoft
releases a Blu-ray add on for Xbox 360.
</p>
        <p align="center">
          <a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/NomoreHDDVDfromNetflix_E040/netflixBR.png">
            <img style="border: 0px none ;" alt="netflix email" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/NomoreHDDVDfromNetflix_E040/netflixBR_thumb.png" border="0" height="539" width="561" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=d3f40163-7a8b-4a24-8f40-7e132f356672" />
      </body>
      <title>No more HD DVD from Netflix</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,d3f40163-7a8b-4a24-8f40-7e132f356672.aspx</guid>
      <link>http://www.tonybunce.com/2008/02/11/No-More-HD-DVD-From-Netflix.aspx</link>
      <pubDate>Mon, 11 Feb 2008 20:56:48 GMT</pubDate>
      <description>&lt;p align="left"&gt;
It looks like the fat lady is singing for HD DVD.&amp;nbsp; Netflix just sent me an email
that they are switch to Blu-Ray only.&amp;nbsp; They are even going to switch the movies
that are already in my queue to standard definition DVDs.&amp;nbsp; I hope that Microsoft
releases a Blu-ray add on for Xbox 360.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/NomoreHDDVDfromNetflix_E040/netflixBR.png"&gt;&lt;img style="border: 0px none ;" alt="netflix email" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/NomoreHDDVDfromNetflix_E040/netflixBR_thumb.png" border="0" height="539" width="561"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=d3f40163-7a8b-4a24-8f40-7e132f356672" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,d3f40163-7a8b-4a24-8f40-7e132f356672.aspx</comments>
      <category>HD</category>
      <category>xbox</category>
    </item>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=ea82383b-9648-4927-9ea6-a033ece0f511</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,ea82383b-9648-4927-9ea6-a033ece0f511.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,ea82383b-9648-4927-9ea6-a033ece0f511.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ea82383b-9648-4927-9ea6-a033ece0f511</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We have been running Exchange 2007 basically since it was released.  Over all
it is a great product and quite an upgrade over Exchange 2003.  Last month SP1
was released with some much anticipated improvements, including major improvements
in the administrative UI, OWA, and more.  Unfortunately not all of us gets those
new features.
</p>
        <p>
The service pack installer is actually a full copy of exchange, not an patch. So just
like the first time you install Exchange 2007 the setup runs through the "Readiness
Check" to make sure you meet all the requirements.  Seeing how Exchange is already
installed I wasn't too concerned about not meeting any of the requirements. 
Boy was I wrong.  I was quickly greeted with an unexpected error message:
</p>
        <blockquote>
          <p>
Error:
</p>
          <p>
Microsoft Exchange Server 2007 setup cannot continue because this computer belongs
to a domain that has a single-labeled DNS name. DNS domain name: mydomainname
</p>
        </blockquote>
        <p>
Humm.  That's not good.  It appears that exchange doesn't like the fact
that the windows domain name is "mydomainname" instead of something like "mydomainname.local"
or "mydomainname.com".   I knew this day would come.  We have avoided
renaming the domain for a while now because it is not a fun process.  The instructions
to rename a domain are contained in an 82 page 1.2MB word document, and that's before
you event get into the exchange stuff.
</p>
        <p>
So I read all the documentation and was prepared to pull the trigger when I came across
an interesting <a href="http://support.microsoft.com/kb/925822/en-us">Knowledge Base
article</a>.  In summary you can't rename a domain that has an Exchange 2007
server in it, and if you do the only solution is to rename it back.
</p>
        <p>
So I can't install SP1 with a single labeled DNS name and if you have Exchange 2007
already installed you can't rename the domain.  Microsoft just backed me into
a corner.
</p>
        <p>
I'm <a href="http://msexchangeteam.com/archive/2007/11/29/447611.aspx#_ctl0____ctl0____ctl0__ctl0_bcr__ctl0___Comments___Comments__ctl31_AvatarColumn">not</a><a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2522637&amp;SiteID=17&amp;mode=1">alone</a> as
it appears there are several other people with this problem.  The worst part
is the lack of documentation.  None of the release notes talk about this the
requirement.  Even the new <a href="http://technet.microsoft.com/en-us/library/bb887628.aspx">Deployment
checklist</a> doesn't say anything about it.
</p>
        <p>
HELP MICROSOFT!!!  We want SP1 too.
</p>
        <b>UPDATE:</b>  
<br />
It looks like the Exchange team is listening.  <a href="http://msexchangeteam.com/archive/2008/02/04/447999.aspx">They
posted on their blog</a> that they are looking into the problem and will have an update
by February 15th.  If you don't want to wait commenter inf pointed me to a <a href="http://www.outlook-web-access.com/component/content/article/35-faqs/187-how-to-install-exchange-2007-sp1-in-an-environment-with-a-single-labeled-dns-name">registry
hack </a>to get around the domain check.<br /><img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=ea82383b-9648-4927-9ea6-a033ece0f511" /></body>
      <title>Exchange 2007 SP1 and Single Labeled DNS Names</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,ea82383b-9648-4927-9ea6-a033ece0f511.aspx</guid>
      <link>http://www.tonybunce.com/2007/12/21/Exchange-2007-SP1-And-Single-Labeled-DNS-Names.aspx</link>
      <pubDate>Fri, 21 Dec 2007 00:52:06 GMT</pubDate>
      <description>&lt;p&gt;
We have been running Exchange 2007 basically since it was released.&amp;nbsp; Over all
it is a great product and quite an upgrade over Exchange 2003.&amp;nbsp; Last month SP1
was released with some much anticipated improvements, including major improvements
in the administrative UI, OWA, and more.&amp;nbsp; Unfortunately not all of us gets those
new features.
&lt;/p&gt;
&lt;p&gt;
The service pack installer is actually a full copy of exchange, not an patch. So just
like the first time you install Exchange 2007 the setup runs through the "Readiness
Check" to make sure you meet all the requirements.&amp;nbsp; Seeing how Exchange is already
installed I wasn't too concerned about not meeting any of the requirements.&amp;nbsp;
Boy was I wrong.&amp;nbsp; I was quickly greeted with an unexpected error message:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Error:
&lt;/p&gt;
&lt;p&gt;
Microsoft Exchange Server 2007 setup cannot continue because this computer belongs
to a domain that has a single-labeled DNS name. DNS domain name: mydomainname
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Humm.&amp;nbsp; That's not good.&amp;nbsp; It appears that exchange doesn't like the fact
that the windows domain name is "mydomainname" instead of something like "mydomainname.local"
or "mydomainname.com".&amp;nbsp;&amp;nbsp; I knew this day would come.&amp;nbsp; We have avoided
renaming the domain for a while now because it is not a fun process.&amp;nbsp; The instructions
to rename a domain are contained in an 82 page 1.2MB word document, and that's before
you event get into the exchange stuff.
&lt;/p&gt;
&lt;p&gt;
So I read all the documentation and was prepared to pull the trigger when I came across
an interesting &lt;a href="http://support.microsoft.com/kb/925822/en-us"&gt;Knowledge Base
article&lt;/a&gt;.&amp;nbsp; In summary you can't rename a domain that has an Exchange 2007
server in it, and if you do the only solution is to rename it back.
&lt;/p&gt;
&lt;p&gt;
So I can't install SP1 with a single labeled DNS name and if you have Exchange 2007
already installed you can't rename the domain.&amp;nbsp; Microsoft just backed me into
a corner.
&lt;/p&gt;
&lt;p&gt;
I'm &lt;a href="http://msexchangeteam.com/archive/2007/11/29/447611.aspx#_ctl0____ctl0____ctl0__ctl0_bcr__ctl0___Comments___Comments__ctl31_AvatarColumn"&gt;not&lt;/a&gt; &lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2522637&amp;amp;SiteID=17&amp;amp;mode=1"&gt;alone&lt;/a&gt; as
it appears there are several other people with this problem.&amp;nbsp; The worst part
is the lack of documentation.&amp;nbsp; None of the release notes talk about this the
requirement.&amp;nbsp; Even the new &lt;a href="http://technet.microsoft.com/en-us/library/bb887628.aspx"&gt;Deployment
checklist&lt;/a&gt; doesn't say anything about it.
&lt;/p&gt;
&lt;p&gt;
HELP MICROSOFT!!!&amp;nbsp; We want SP1 too.
&lt;/p&gt;
&lt;b&gt;UPDATE:&lt;/b&gt;&amp;nbsp; 
&lt;br&gt;
It looks like the Exchange team is listening.&amp;nbsp; &lt;a href="http://msexchangeteam.com/archive/2008/02/04/447999.aspx"&gt;They
posted on their blog&lt;/a&gt; that they are looking into the problem and will have an update
by February 15th.&amp;nbsp; If you don't want to wait commenter inf pointed me to a &lt;a href="http://www.outlook-web-access.com/component/content/article/35-faqs/187-how-to-install-exchange-2007-sp1-in-an-environment-with-a-single-labeled-dns-name"&gt;registry
hack &lt;/a&gt;to get around the domain check.&lt;br&gt;
&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=ea82383b-9648-4927-9ea6-a033ece0f511" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,ea82383b-9648-4927-9ea6-a033ece0f511.aspx</comments>
      <category>Exchange</category>
      <category>SysAdmin</category>
    </item>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=673d8f36-faca-403e-b45c-c71d458541fe</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,673d8f36-faca-403e-b45c-c71d458541fe.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,673d8f36-faca-403e-b45c-c71d458541fe.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=673d8f36-faca-403e-b45c-c71d458541fe</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A few weeks ago I decided to give Visual Studio 2008 a shot after reading all the
good reviews.  I'm now using it as my primary development environment with and
overall it is a nice upgrade.  <a href="http://weblogs.asp.net/scottgu/archive/2007/07/28/nice-vs-2008-code-editing-improvements.aspx">Intellisense
feels smarter</a>, the IDE looks cleaner, <a href="http://weblogs.asp.net/scottgu/archive/2007/07/25/vs-2008-web-designer-and-css-support.aspx">the
web designer is much nicer</a>, and <a href="http://weblogs.asp.net/scottgu/archive/2007/07/26/vs-2008-and-net-3-5-beta-2-released.aspx">lots
of other good stuff</a>.  Unfortunately I have run into a few problems.
</p>
        <p>
          <strong>Web Deployment Projects</strong> - Currently web deployment projects are not
supported in VS 2008.  I am a huge fan of WDP, recompiling a web application
project not only makes the site load faster (at least on the initial page load) but
also simplifies deployment.  It leaves me with a nice clean directory free of
.vb or .cs files that I upload with having to worrying about deploying source files. 
It also ensures that my aspx pages don't have any parser errors.  For VS 2005
WDP shipped as an add-in and I was hoping it would be included as part of VS 2008,
just like Web Application Projects.  After some searching <a href="http://weblogs.asp.net/lduveau/archive/2007/09/13/web-deployment-projects-and-visual-studio-2008.aspx">it
look like</a> we aren't going to get WDP in VS 2008 until after the final version
ships.  Currently the <a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=293511">top
suggestion on Microsoft connect</a> is for WDP to be included in VS 2008.  Maybe
I'm wrong but it seams as if WDP isn't a very complex add-in, its just a wrapper
around asp_merge.exe 
</p>
        <p>
          <strong>
            <a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/LifewithVisualStudio2008Beta2_1A0/Microsoft%20Visual%20Studio.png" atomicselection="true">
              <img style="border: 0px none ;" alt="Microsoft Visual Studio" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/LifewithVisualStudio2008Beta2_1A0/Microsoft%20Visual%20Studio_thumb.png" align="right" border="0" height="184" width="400" />
            </a>Business
Intelligence Projects</strong> - It looks like SQL Server Report Services projects
(*.rptproj files) aren't supported either.  You get a lovely error message that
lets you know that doesn't sound very optimistic about getting these reports to open
in VS 2008.  My guess is I'll have to wait for SQL Server 2008 and will then
be forced to update my sql server in order to use my development tools.
</p>
        <p>
        </p>
        <p>
All in all I'm a VS 2008 fan, but its still in beta and it shows.  I rarely have
major problems, like a complete crash, but the smaller issues can still be bothersome.  
It is great thought that Microsoft is getting these beta versions in
the hands of developers, hopefully in an effort to make a better final product.<br /></p>
        <img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=673d8f36-faca-403e-b45c-c71d458541fe" />
      </body>
      <title>Life with Visual Studio 2008 Beta 2</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,673d8f36-faca-403e-b45c-c71d458541fe.aspx</guid>
      <link>http://www.tonybunce.com/2007/09/20/Life-With-Visual-Studio-2008-Beta-2.aspx</link>
      <pubDate>Thu, 20 Sep 2007 03:14:24 GMT</pubDate>
      <description>&lt;p&gt;
A few weeks ago I decided to give Visual Studio 2008 a shot after reading all the
good reviews.&amp;nbsp; I'm now using it as my primary development environment with and
overall it is a nice upgrade.&amp;nbsp; &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/28/nice-vs-2008-code-editing-improvements.aspx"&gt;Intellisense
feels smarter&lt;/a&gt;, the IDE looks cleaner, &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/25/vs-2008-web-designer-and-css-support.aspx"&gt;the
web designer is much nicer&lt;/a&gt;, and &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/26/vs-2008-and-net-3-5-beta-2-released.aspx"&gt;lots
of other good stuff&lt;/a&gt;.&amp;nbsp; Unfortunately I have run into a few problems.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Web Deployment Projects&lt;/strong&gt; - Currently web deployment projects are not
supported in VS 2008.&amp;nbsp; I am a huge fan of WDP, recompiling a web application
project not only makes the site load faster (at least on the initial page load) but
also simplifies deployment.&amp;nbsp; It leaves me with a nice clean directory free of
.vb or .cs files that I upload with having to worrying about deploying source files.&amp;nbsp;
It also ensures that my aspx pages don't have any parser errors.&amp;nbsp; For VS 2005
WDP shipped as an add-in and I was hoping it would be included as part of VS 2008,
just like Web Application Projects.&amp;nbsp; After some searching &lt;a href="http://weblogs.asp.net/lduveau/archive/2007/09/13/web-deployment-projects-and-visual-studio-2008.aspx"&gt;it
look like&lt;/a&gt; we aren't going to get WDP in VS 2008 until after the final version
ships.&amp;nbsp;&amp;nbsp;Currently the &lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=293511"&gt;top
suggestion on Microsoft connect&lt;/a&gt; is for WDP to be included in VS 2008.&amp;nbsp; Maybe
I'm wrong but it seams as if WDP isn't&amp;nbsp;a very complex add-in, its just a wrapper
around asp_merge.exe&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/LifewithVisualStudio2008Beta2_1A0/Microsoft%20Visual%20Studio.png" atomicselection="true"&gt;&lt;img style="border: 0px none ;" alt="Microsoft Visual Studio" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/LifewithVisualStudio2008Beta2_1A0/Microsoft%20Visual%20Studio_thumb.png" align="right" border="0" height="184" width="400"&gt;&lt;/a&gt;Business
Intelligence Projects&lt;/strong&gt; - It looks like SQL Server Report Services projects
(*.rptproj files) aren't supported either.&amp;nbsp; You get a lovely error message that
lets you know that doesn't sound very optimistic about getting these reports to open
in VS 2008.&amp;nbsp; My guess is I'll have to wait for SQL Server 2008 and will then
be forced to update my sql server in order to use my development tools.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
All in all I'm a VS 2008 fan, but its still in beta and it shows.&amp;nbsp; I rarely&amp;nbsp;have
major problems, like a complete crash, but the smaller issues can still be bothersome.&amp;nbsp;&amp;nbsp;
It is great thought&amp;nbsp;that&amp;nbsp;Microsoft is&amp;nbsp;getting these beta versions&amp;nbsp;in
the hands of developers, hopefully in an effort to make a better final product.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=673d8f36-faca-403e-b45c-c71d458541fe" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,673d8f36-faca-403e-b45c-c71d458541fe.aspx</comments>
      <category>.Net</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.tonybunce.com/Trackback.aspx?guid=49990973-4429-4002-9499-483366fcd2d1</trackback:ping>
      <pingback:server>http://www.tonybunce.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.tonybunce.com/PermaLink,guid,49990973-4429-4002-9499-483366fcd2d1.aspx</pingback:target>
      <dc:creator>TonyB</dc:creator>
      <wfw:comment>http://www.tonybunce.com/CommentView,guid,49990973-4429-4002-9499-483366fcd2d1.aspx</wfw:comment>
      <wfw:commentRss>http://www.tonybunce.com/SyndicationService.asmx/GetEntryCommentsRss?guid=49990973-4429-4002-9499-483366fcd2d1</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While not exactly as soon as everyone hoped, dasBlog 2.0 is set to be released next
Tuesday.  The biggest change is that dasBlog is now compiled under .NET 2.0 and
ALMOST fully supports medium trust. The goal of medium trust is for hosting providers
to provide functional ASP.NET 2.0 hosting while also protecting against rogue
or malicious applications.  Unfortunately that protection comes at the cost of
application flexibility. We tried our best but in the battle between security
and functionally there are a few features that are limited in a medium trust environment:
</p>
        <ol>
          <li>
SMTP on alternative ports 
<ul><li>
This requires SmtpAccess.<a href="code://System:2.0.0.0:b77a5c561934e089/System.Net.Mail.SmtpAccess/ConnectToUnrestrictedPort">ConnectToUnrestrictedPort</a> on
the System.Net.Mail.SmtpPermission.  In a default medium trust environment you
only get SmtpAccess.Connect, which allows for port 25 access but that's it. 
I would assume that this is to prevent spamming and maybe to prevent using the SMTPClient
class to launch socket based attacks.</li></ul></li>
          <li>
Mail to Weblog via POP3 
<ul><li>
This requires SocketPermission to at least the port and address of your pop3 server. 
With the default medium trust settings you do not have any Socket Permissions. 
This prevents applications from launching network based attack.  This is especially
important if the web server is located behind a firewall because then an asp.net application
could access network resources intended to be protected by the firewall.<br /></li></ul></li>
        </ol>
        <p>
dasBlog will let you know that you don't have these privileges by displaying warnings
on the configuration page:<br /><br /><a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/smtpCapture.png" atomicselection="true"><img style="border: 0px none ;" alt="smtpCapture" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/smtpCapture_thumb.png" border="0" height="76" width="461" /></a></p>
        <p>
          <a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/pop3Capture.png" atomicselection="true">
            <img style="border: 0px none ;" alt="pop3Capture" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/pop3Capture_thumb.png" border="0" height="58" width="591" />
          </a>
        </p>
        <p>
There is some good news though, these limitations won't affect most users.  Many
hosting providers that run limited trust environments don't run in the default
medium trust, but rather a "modified full trust".  In that case you may already
have all the permissions you need for all of the features to work.  
</p>
        <p>
If your hosting provider does run the standard medium trust configuration
or their custom trust level doesn't provide the necessary permissions there is
still hope. Normally hosting providers allow access to a mail server that
runs on port 25.  In most cases it doesn't even matter if the from address dasBlog
is using is hosted on that server, as long as you are authenticating with a valid
SMTP user.  The POP3 issues is a bit more difficult.  There are legitimate
reasons for a provider to limit socket access, but if you ask nicely they might make
an exception for the specific POP3 host you are using.   
</p>
        <p>
There is only last consideration that needs to be accounted for in a reduced trust
environment.  You can read more details <a href="http://haacked.com/archive/2006/10/19/A_Hole_In_Medium_Trust_Regarding_Web_Permission.aspx">here</a>,
but the basic idea is that in the default medium trust environment you can only do
outbound web connections that match your originURL.  OriginURL is specified as
a regular expression in your web.config file.  Setting it to ".*" will let dasBlog
connect to any host.
</p>
        <p>
For more information about dasBlog check out <a href="http://www.dasblog.info">http://www.dasblog.info</a>,
and if you are have any questions about medium trust or anything else feel free to
post on the dasBlog forms at <a href="http://www.dasblog.us">http://www.dasblog.us</a></p>
        <p>
 
</p>
        <pre> </pre>
        <img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=49990973-4429-4002-9499-483366fcd2d1" />
      </body>
      <title>dasBlog 2.0 and Medium Trust</title>
      <guid isPermaLink="false">http://www.tonybunce.com/PermaLink,guid,49990973-4429-4002-9499-483366fcd2d1.aspx</guid>
      <link>http://www.tonybunce.com/2007/08/12/dasBlog-20-And-Medium-Trust.aspx</link>
      <pubDate>Sun, 12 Aug 2007 04:11:03 GMT</pubDate>
      <description>&lt;p&gt;
While not exactly as soon as everyone hoped, dasBlog 2.0 is set to be released next
Tuesday.&amp;nbsp; The biggest change is that dasBlog is now compiled under .NET 2.0 and
ALMOST fully supports medium trust. The goal of medium trust is for hosting providers
to provide&amp;nbsp;functional ASP.NET 2.0 hosting while also protecting against rogue
or malicious applications.&amp;nbsp; Unfortunately that protection comes at the cost of
application flexibility.&amp;nbsp;We tried our best but in the battle between security
and functionally there are a few features that are limited in a medium trust environment:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
SMTP on alternative ports 
&lt;ul&gt;
&lt;li&gt;
This requires SmtpAccess.&lt;a href="code://System:2.0.0.0:b77a5c561934e089/System.Net.Mail.SmtpAccess/ConnectToUnrestrictedPort"&gt;ConnectToUnrestrictedPort&lt;/a&gt;&amp;nbsp;on
the System.Net.Mail.SmtpPermission.&amp;nbsp; In a default medium trust environment you
only get SmtpAccess.Connect, which allows for port 25 access but that's it.&amp;nbsp;
I would assume that this is to prevent spamming and maybe to prevent using the SMTPClient
class to launch socket based attacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Mail to Weblog via POP3 
&lt;ul&gt;
&lt;li&gt;
This requires SocketPermission to at least the port and address of your pop3 server.&amp;nbsp;
With the default medium trust settings you do not have any Socket Permissions.&amp;nbsp;
This prevents applications from launching network based attack.&amp;nbsp; This is especially
important if the web server is located behind a firewall because then an asp.net application
could access network resources intended to be protected by the firewall.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
dasBlog will let you know that you don't have these privileges by displaying warnings
on the configuration page:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/smtpCapture.png" atomicselection="true"&gt;&lt;img style="border: 0px none ;" alt="smtpCapture" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/smtpCapture_thumb.png" border="0" height="76" width="461"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/pop3Capture.png" atomicselection="true"&gt;&lt;img style="border: 0px none ;" alt="pop3Capture" src="http://www.tonybunce.com/content/binary/WindowsLiveWriter/dasBlog2.0andMediumTrust_3351/pop3Capture_thumb.png" border="0" height="58" width="591"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
There is some good news though, these limitations won't affect most users.&amp;nbsp;&amp;nbsp;Many
hosting providers that run limited trust environments&amp;nbsp;don't run in&amp;nbsp;the default
medium trust, but rather a "modified full trust".&amp;nbsp; In that case you may already
have all the&amp;nbsp;permissions you need&amp;nbsp;for all of the features to work.&amp;nbsp;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
If your&amp;nbsp;hosting provider does run&amp;nbsp;the standard medium trust configuration
or their custom trust level doesn't provide the necessary permissions&amp;nbsp;there&amp;nbsp;is
still hope.&amp;nbsp;Normally hosting providers allow access to a mail server&amp;nbsp;that
runs on port 25.&amp;nbsp; In most cases it doesn't even matter if the from address dasBlog
is using is hosted on that server, as long as you are authenticating with a valid
SMTP user.&amp;nbsp; The POP3 issues is a bit more difficult.&amp;nbsp; There are legitimate
reasons for a provider to limit socket access, but if you ask nicely they might make
an exception for&amp;nbsp;the specific POP3 host you are using.&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
There is only last consideration that needs to be accounted for in a reduced trust
environment.&amp;nbsp; You can read more details &lt;a href="http://haacked.com/archive/2006/10/19/A_Hole_In_Medium_Trust_Regarding_Web_Permission.aspx"&gt;here&lt;/a&gt;,
but the basic idea is that in the default medium trust environment you can only do
outbound web connections that match your originURL.&amp;nbsp; OriginURL is specified as
a regular expression in your web.config file.&amp;nbsp; Setting it to ".*" will let dasBlog
connect to any host.
&lt;/p&gt;
&lt;p&gt;
For more information about dasBlog check out &lt;a href="http://www.dasblog.info"&gt;http://www.dasblog.info&lt;/a&gt;,
and if you are have any questions about medium trust or anything else feel free to
post on the dasBlog forms at &lt;a href="http://www.dasblog.us"&gt;http://www.dasblog.us&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.tonybunce.com/aggbug.ashx?id=49990973-4429-4002-9499-483366fcd2d1" /&gt;</description>
      <comments>http://www.tonybunce.com/CommentView,guid,49990973-4429-4002-9499-483366fcd2d1.aspx</comments>
      <category>asp.net</category>
      <category>dasBlog</category>
      <category>hosting</category>
    </item>
  </channel>
</rss>