<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29818600</id><updated>2012-02-16T18:04:58.718-08:00</updated><category term='j2me'/><category term='cdma'/><category term='Rant'/><category term='Daily AIM'/><category term='samsung'/><category term='opentrailmap.org'/><category term='sprint'/><title type='text'>Nerd Blog by Bob Wold</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29818600.post-5278303792588066658</id><published>2011-05-27T10:37:00.000-07:00</published><updated>2011-05-31T09:56:25.445-07:00</updated><title type='text'>Bing Maps and Google Maps are off in the Bahamas</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I was pretty blown away when I started debugging an issue for one of our users. &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;He reported that he would mark a way point on the web (using Google Maps), and when it went over to the phone (using Bing Maps), it showed up in the wrong place. &amp;nbsp;Now this is a pretty serious claim since that's pretty much the one thing that we should never mess up.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I started by asking our Q.A. team to confirm the issue. &amp;nbsp;They reported back that they couldn't reproduce the issue (which was some relief), but the user seemed pretty sure so I hit him up for some more specific details. &amp;nbsp;He provided a latitude and longitude, and when I retested with that, I was able to reproduce.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The point was in the&amp;nbsp;Bahamas, so I started&amp;nbsp;trying to brainstorm the things that could be different about the map there:&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;&lt;b&gt;The Map Projection (Nope)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Maybe there is some funny rule for the area because Cylindrical&amp;nbsp;Mercator&amp;nbsp;projection doesn't work well there? &amp;nbsp;That couldn't be because that projection is the basis of the tile system that everyone uses.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;Google&lt;/b&gt;:&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Google Maps uses a variant of the Mercator projection for its map images&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Mercator_projection"&gt;http://en.wikipedia.org/wiki/Mercator_projection&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;(Google) Maps uses Mercator because it preserves angles&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://www.google.com/support/forum/p/maps/thread?tid=075eb10962e00cc5&amp;amp;hl=en"&gt;http://www.google.com/support/forum/p/maps/thread?tid=075eb10962e00cc5&amp;amp;hl=en&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;Bing&lt;/b&gt;:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;We chose to use the Mercator projection&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb259689.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb259689.aspx&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;&lt;b&gt;The Datum (Nope)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;&lt;/b&gt;Maybe there is a special datum that people use here? --Maybe. &amp;nbsp;Most of the world uses WGS84/NAD83, and our apps support that plus NAD27, but &lt;a href="http://en.wikipedia.org/wiki/Geodetic_system"&gt;there are plenty of other datums out there&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;Google&lt;/b&gt;:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Google Maps are the GPS coordinates based on the WGS 84 datum&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Google_Maps"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://en.wikipedia.org/wiki/Google_Maps&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;Bing&lt;/b&gt;:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The latitude and longitude are assumed to be on the WGS 84 datum&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb259689.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://msdn.microsoft.com/en-us/library/bb259689.aspx&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;&lt;b&gt;The Map Data&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;&lt;/b&gt;This can't be wrong right? &amp;nbsp;It's Bing and Google... No way either of these guys get this wrong... they can't afford to get this stuff wrong... Right?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;After looking at it pretty closely, it looks like it's just a pretty simple problem: The Google Maps and Bing Maps are offset from eachother. &amp;nbsp;I don't know who is more right, but they just don't match, and all other things seem to match up, so I'm sold. &amp;nbsp;I think one of them is just plain wrong. &amp;nbsp;&lt;strike&gt;I tried a number of other sources, and it looks most likely that BING is wrong, but since I'm not sitting in the Bhamas with a GPS unit, I'm not sure :-)&lt;/strike&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;UPDATE: The guys on the bing forums looked into this and found compelling evidence that Bing Maps are right and Google Maps are wrong. &amp;nbsp; The best way to see this is by checking out this map:&lt;/span&gt;&lt;a href="http://maps.google.com/maps?t=k&amp;amp;ie=UTF8&amp;amp;ll=25.228858,-76.272143&amp;amp;spn=0.00757,0.013937&amp;amp;z=17"&gt;http://maps.google.com/maps?t=k&amp;amp;ie=UTF8&amp;amp;ll=25.228858,-76.272143&amp;amp;spn=0.00757,0.013937&amp;amp;z=17&lt;/a&gt;&lt;br /&gt;Here you can see that the tiles just stop&amp;nbsp;stitching&amp;nbsp;correctly on Google's Maps. &amp;nbsp;When you turn on the Street layer you can see that even the vector data doesn't line up&amp;nbsp;correctly.&lt;br /&gt;Thanks for helping identify the guilty part &amp;nbsp;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=25.166766,+-76.157151&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=53.696917,114.169922&amp;amp;ie=UTF8&amp;amp;ll=25.166411,-76.15691&amp;amp;spn=0.001894,0.003484&amp;amp;t=h&amp;amp;z=19"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;25.166766, -76.157151 on Google&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.bing.com/maps/?v=2&amp;amp;where1=25.166766%2C%20-76.157151&amp;amp;q=25.166766%2C%20-76.157151&amp;amp;form=LMLTSN&amp;amp;cp=25.166135470349502~-76.1575198957863&amp;amp;lvl=18&amp;amp;sty=h&amp;amp;encType=1"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;25.166766, -76.157151 on Bing&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;So far this is the only place I've seen bad data from bing, but I'll keep my eye out for it now :-)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Thanks to our LizardLeg for spotting the issue.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-5278303792588066658?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/5278303792588066658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=5278303792588066658' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5278303792588066658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5278303792588066658'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2011/05/bing-maps-and-google-maps-are-off-in.html' title='Bing Maps and Google Maps are off in the Bahamas'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-8482662394742031859</id><published>2011-05-25T13:02:00.000-07:00</published><updated>2011-05-25T13:17:13.882-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><title type='text'>Convert.ToInt32(DateTime) is a Lie</title><content type='html'>Warning, this is a bit of a rant, I'm just blown away. &lt;br /&gt;&lt;br /&gt;I'm building some new&amp;nbsp;features&amp;nbsp;into our C# REST API that all of our phone apps talk to and I wanted to send down a Date in the form of an integer. &amp;nbsp;I noticed that there was a&amp;nbsp;surprising&amp;nbsp;helper method in the Convert class called ToInt32(DateTime). &amp;nbsp;That sounded perfect for what I needed, but I really wan't sure what the format would be since you can't really squeeze a DateTime object into 32 bits. &amp;nbsp;I figured they probably had some standard though, maybe the number of seconds since 1/1/1970 (like &lt;a href="http://en.wikipedia.org/wiki/Unix_time"&gt;Unix/POSIX&lt;/a&gt;) or something like that. &amp;nbsp;So I opened up the documentation and low and behold I find:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1 class="title" style="color: #3f529c; font-family: 'Segoe UI', Verdana, Arial; font-size: 1.769em; font-style: normal; font-variant: normal; font-weight: bold; line-height: normal; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Convert&lt;span xmlns=""&gt;.&lt;/span&gt;ToInt32 Method (DateTime)&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="lw_vs" style="margin-bottom: 10px; margin-top: 2px; padding-bottom: 2px;"&gt;&lt;div id="curversion" style="color: #5d5d5d; float: left; font-size: 1em; padding-right: 3px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;strong&gt;.NET Framework 4&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cl_lw_vs_seperator" id="vsseperator" style="background-attachment: scroll; background-clip: initial; background-color: initial; background-image: url(http://i3.msdn.microsoft.com/Hash/a19e30a4020fe81d2b1209058013a360.png); background-origin: initial; background-position: -2613px -3px; background-repeat: no-repeat no-repeat; float: left; height: 17px; margin-left: 10px; overflow-x: hidden; overflow-y: hidden; width: 1px;"&gt;&lt;/div&gt;&lt;div id="versionclick" style="float: left;"&gt;&lt;div id="versionclick_c1" style="float: left;"&gt;&lt;/div&gt;&lt;div id="versionclick_c2" style="float: left;"&gt;&lt;div class="" style="float: left;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ch56d3w9.aspx" id="vsLink" style="color: #1364c4; font-size: 1em; margin-left: 10px; margin-right: 4px; text-decoration: none;"&gt;Other Versions&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cl_vs_arrow clip10x10" style="cursor: pointer; float: left; height: 10px; margin-right: 5px; margin-top: 5px; overflow-x: hidden; overflow-y: hidden; position: relative; width: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;img alt="" class="cl_lw_vs_arrow" id="vsArrow" src="http://i3.msdn.microsoft.com/Hash/a19e30a4020fe81d2b1209058013a360.png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; height: auto; left: -2638px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: absolute; top: -3px; width: auto;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="versionclick_c3" style="float: left;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="clear: right;"&gt;&lt;/div&gt;&lt;div id="mainSection" style="padding-top: 5px;"&gt;&lt;div id="mainBody"&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="summary" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Verdana, Arial; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Calling this method always throws&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/system.invalidcastexception.aspx" style="color: #1364c4; text-decoration: none;"&gt;InvalidCastException&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ch56d3w9.aspx"&gt;http://msdn.microsoft.com/en-us/library/ch56d3w9.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using this doesn't result in a compiler error. &amp;nbsp;It doesn't even result in any warnings at compile time. &amp;nbsp;It just results in a runtime exception if you were naive enough to assume it would do something good. &amp;nbsp;What are we developing in VB? &lt;br /&gt;&lt;br /&gt;In my mind, the biggest benefit to strongly typed languages like c# is that they should expose the fact that you did something stupid at compile time so you don't need to wait for it to crash on your when it's released... &lt;i&gt;(OK: there are probably a million different reasons why strongly type languages make sense, but that's one of them ;-) )&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Sorry for the Rant-- Back to being productive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-8482662394742031859?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/8482662394742031859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=8482662394742031859' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/8482662394742031859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/8482662394742031859'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2011/05/converttoint32datetime-is-lie.html' title='Convert.ToInt32(DateTime) is a Lie'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-8563626008340021619</id><published>2011-05-24T09:33:00.000-07:00</published><updated>2011-05-24T09:48:21.867-07:00</updated><title type='text'>Windows 7: SMTP server running on localhost</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I recently migrated my development machine to Windows 7 64-bit, and I didn't run into too many issues that weren't already on Google :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I did hit one that I didn't find a good solution for on Google though: How to install the windows SMTP component.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I figured they must have removed that component, but It turned out that they didn't remove it, they just stopped listing it under IIS in the add/remove windows components section of the control panel.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To add it you just have to (unintuitively) select the following:&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Control Panel &amp;gt; Programs &amp;gt; Turn Windows feature On/Off &amp;gt; Internet Information Systems &amp;gt; World Wide Web Services &amp;gt; Application Development features &amp;gt; Turn On ASP.&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/-5bmxiUCFs8k/Tdvgr-0bmyI/AAAAAAAAAeA/vOP3w1I_vXY/s400/windows-components.PNG" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 351px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5610324807021992738" /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;It's not intuitive, but it works. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You'll now see SMTP in your IIS Manager console:&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/-QJxQ8oUf-ZE/Tdvg8pKOnEI/AAAAAAAAAeI/ptBuOTdNp6A/s400/IIS-Manager.PNG" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5610325093265611842" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-8563626008340021619?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/8563626008340021619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=8563626008340021619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/8563626008340021619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/8563626008340021619'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2011/05/windows-7-smtp-server-running-on.html' title='Windows 7: SMTP server running on localhost'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-5bmxiUCFs8k/Tdvgr-0bmyI/AAAAAAAAAeA/vOP3w1I_vXY/s72-c/windows-components.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-1378840746150423514</id><published>2009-06-30T10:59:00.001-07:00</published><updated>2009-06-30T12:53:02.274-07:00</updated><title type='text'>Nokia 6650 Certificate error.</title><content type='html'>One of the guys on the team was doing some work on the Nokia 6650 for AT&amp;T and we kept getting a certificate error when we would try to load the build onto the device.  It would say:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Certificate error.  Contact the application supplier.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;We had signed it with the Certificate required by AT&amp;T, we examined the root certificates on the device, we even swapped out the device and tried another, but the problem still remained.  We started pulling out MIDlet-Permissions, nothing.&lt;br /&gt;&lt;br /&gt;Finally I made a test application that did nothing and had basically no jad attributes.  I signed that app, loaded it, and it worked.  I started moving in changes from the real app into the test app, and quickly found that the error was in a place I would never expect.  It was in the "MIDlet-Info-URL".  If you include this simple jad attribute, it will not load onto the device.&lt;br /&gt;&lt;br /&gt;I checked all of the documentation on Nokia's developer site, and I found full documentation for the MIDlet-Info-URL jad attribute, and it seemed like it should be fully supported, but it will result in that certificate error :-/&lt;br /&gt;&lt;br /&gt;I thought it was worth a post since it wasted hours of my life, and still doesn't seem to be documented on the internet.&lt;br /&gt;&lt;br /&gt;Good Luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-1378840746150423514?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/1378840746150423514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=1378840746150423514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/1378840746150423514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/1378840746150423514'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2009/06/nokia-6650.html' title='Nokia 6650 Certificate error.'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-3325766390349020177</id><published>2008-05-30T11:00:00.001-07:00</published><updated>2008-12-09T12:01:25.657-08:00</updated><title type='text'>Building Projects and Solutions without Visual Studio</title><content type='html'>In the 2.0 version of the .net framework, Microsoft included a little gem called MSBuild.exe.  MSBuild provides a command line interface for compiling entire projects and solutions.&lt;br /&gt;&lt;br /&gt;Normally we would maintain NANT build scripts for our projects, and then we would run them on a build server, using CruiseControl .net, as our source control changed.  However with this cool tool we can now build the solution directly from the sln file; removing our need to maintain build files.&lt;br /&gt;&lt;br /&gt;I did run into a few snags:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;J# support&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;J# is not entirely supported in the 2.0 framework, until you install the j# redistributable (3.7 mb) &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E9D87F37-2ADC-4C32-95B3-B5E3A21BAB2C&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=E9D87F37-2ADC-4C32-95B3-B5E3A21BAB2C&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Web Applications&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Web Applications aren't supported in the 2.0 framework.  They came as an addition after the initial release of Visual Studio 2005.  All of the information about them came with Microsoft® Visual Studio® 2005 Team Suite Service Pack 1.  There was really no change required to the framework for these types of projects, it's really only affected Visual Studio, so there is no service pack for the framework.&lt;br /&gt;&lt;br /&gt;I tried to download and install the service pack, but it's huge (431 mb) and it won't install:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://2.bp.blogspot.com/_re4CuR4Ttrw/SEBBJv4Bg1I/AAAAAAAAASo/PsrqGp0F3ug/s320/sp1-install.jpg" alt="" id="BLOGGER_PHOTO_ID_5206232804966368082" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So when all else fails, start over :)&lt;br /&gt;&lt;br /&gt;The error message was:&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the &amp;lt;Import&amp;gt; declaration is correct, and that the file exists on disk.&lt;/blockquote&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt; &lt;/blockquote&gt;so I just copied the \WebApplication\ folder from a PC with Visual studio installed, and added it into to the directory where it was expecting to find it (which I had to create)&lt;br /&gt;&lt;br /&gt;Now everything works great, and life is easier than it was before.  Every time I commit a change it is auto deployed to the our dev site and life is good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-3325766390349020177?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/3325766390349020177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=3325766390349020177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/3325766390349020177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/3325766390349020177'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2008/05/building-projects-and-solutions-without.html' title='Building Projects and Solutions without Visual Studio'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_re4CuR4Ttrw/SEBBJv4Bg1I/AAAAAAAAASo/PsrqGp0F3ug/s72-c/sp1-install.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-5503242405298167903</id><published>2007-07-18T09:10:00.001-07:00</published><updated>2007-07-18T09:16:48.497-07:00</updated><title type='text'>Bluetooth GPS Getting Smaller</title><content type='html'>Check this out!  It's a bluetooth GPS receiver (nothing new there) but its so much smaller than I've seen them before.  It's roughly the size of a thumb drive, and it alleges to have 8 hours of battery life, which is very impressive indeed.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/bobwold/Today/photo#5088565656498425938"&gt;&lt;img src="http://lh3.google.com/bobwold/Rp43gRPXUFI/AAAAAAAAAME/NwBL3_6DPMI/s400/IMG_3182.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I did notice that the initial aquisition time seemed a little slower than it's older bigger brothers'.  But I suppose that is to be expected.   The quality of the GPS output did not seem any worse to the naked eye.&lt;br /&gt;&lt;br /&gt;In general, I would probably prefer the bigger one, just because it really doesn't need to be this small, and the bigger ones do seem to get the initial fix faster, which is the most important fix, but I'll continue to play with it and let you know if I change my mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-5503242405298167903?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/5503242405298167903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=5503242405298167903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5503242405298167903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5503242405298167903'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2007/07/bluetooth-gps-getting-smaller.html' title='Bluetooth GPS Getting Smaller'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-5634904724588115396</id><published>2007-06-15T10:03:00.000-07:00</published><updated>2007-06-15T10:51:46.165-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Daily AIM'/><title type='text'>Challenges of Street Maps</title><content type='html'>So I was talking to my brother Al today, who is one of the smarter people I have met, and he clearly thought I was too harsh on openstreetmap.org. &lt;br /&gt;&lt;br /&gt;I really had no intention to sound too negative.  I think that they are one the forefront of inovation.  They are applying wiki ideas to geospacial data... that is huge.  My point was only that the data they collect is very sensitive, and its very important that it all be right, not only geographically, but also in every minuet detail.  If a contributer forgets to mention that a street is one way, or that it doesn't have a sidewalk,  etc, a program would not be able to properly use the data, and it would get a bum rep. &lt;br /&gt;&lt;br /&gt;I think that the consumer of trail data will initially just be humans.   And humans are really flexible in their interpretation of the data they are given.  Also, trail data is not as complex, nor is it as important to have 100% accurate.  If it's a little off, it won't make a big deal.&lt;br /&gt;&lt;br /&gt;Thanks for your input Al, the more I have to think about the idea, and the more we talk about it, the more likely I will be to follow through with it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;: so i started looking at open  street map&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;: and i think it's  really cool&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: yeah... it's  real cool&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: did you read  the nerd blog I posted?&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;:  yeah&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: ahh&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;: you were talking shit about  it&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: cool&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;: so thats why i looked at it&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: nah, not shit&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: it's just that routable data is so  hard&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: like having people  contribute it correctly would be incredibly difficult&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: and trail data isn't so  complex&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;: right thats why  wikipedia is so inaccurate&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;:  cause everyone is too dumb&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor  wold&lt;/span&gt;&lt;/b&gt;: no&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: words  are easy&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: people know the  right information&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: but its  easy to put it in words&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;:  it's harder to turn knowledge of roads into data that is accurate enough to  actually use in a program&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;:  I think that for prited maps, open street map is great&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: and could be used very  soon&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: but for routable  data, it's very sensitive&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;: so  like you're saying that this would be easy to write&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;alwold&lt;/span&gt;&lt;/b&gt;: &lt;a href="http://en.wikipedia.org/wiki/Antibody"&gt;http://en.wikipedia.org/wiki/Antibody&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: if you know the information then  yes&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: and the information  is being used by humans, which are very flexible&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: with map data it is being consumed by  programs&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: which are not so  smart, and flexible with input&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor  wold&lt;/span&gt;&lt;/b&gt;: anyway... you're opinion is good&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: and I think that it will be useful at  somepoint soon&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: if they  would have started with the tiger data, it would have maybe been useful from the  start too&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;doctor wold&lt;/span&gt;&lt;/b&gt;: idk&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-5634904724588115396?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/5634904724588115396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=5634904724588115396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5634904724588115396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5634904724588115396'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2007/06/challenges-of-street-maps.html' title='Challenges of Street Maps'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-6757165683040140801</id><published>2007-06-14T10:06:00.000-07:00</published><updated>2007-06-14T10:20:30.356-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Daily AIM'/><title type='text'>&amp;nbsp; in HTML</title><content type='html'>The world is a funny place, full of funny people, who do funny things.&lt;br /&gt;&lt;br /&gt;I remember at one point in my programming career, I used to worry more about how to get a task done, given what I knew at that point.  Now I worry more about knowing the correct way to complete a task.&lt;br /&gt;&lt;br /&gt;Here is a funny example of someone trying to get a task done given what they currently know, instead of figuring out the right way to do it:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;samsonasu&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&amp;lt;td valign="top"&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;samsonasu&lt;/span&gt;&lt;/b&gt;: thats such shitty code&lt;/blockquote&gt;Though one   "&amp;amp;nbsp;" is often good in HTML, using them to achieve your desired spacing is HORRIBLY GHETTO :-p.  If you do this, and want to know a better alternative, try either using a spacer image (a 1x1 transparent gif), with a width and height, or better yet using the padding-left or margin-left css attributes.&lt;br /&gt;&lt;br /&gt;Thanks for this one Samson :-p  And Happy HTML'n to the rest of you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-6757165683040140801?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/6757165683040140801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=6757165683040140801' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/6757165683040140801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/6757165683040140801'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2007/06/daily-aim-june-14-2007.html' title='&amp;amp;nbsp; in HTML'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-5892312736322275428</id><published>2007-06-13T19:29:00.000-07:00</published><updated>2007-06-14T14:14:38.528-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opentrailmap.org'/><title type='text'>OpenTrailMap.org</title><content type='html'>In one of my more recent impulses, I purchased a domain, opentrailmap.org/com, with the intent to start a project where people can contribute GIS data, and try to produce a map of the trails around the world. &lt;br /&gt;&lt;br /&gt;I'm hoping that I will be able to leverage off of the technologies used by openstreetmap.org, and that it will mostly be a matter of figuring out what to leverage off of, and not so much how to implement it myself.&lt;br /&gt;&lt;br /&gt;My theory is that openstreetmap.org, though very cool, is years away from being useful, and even farther away from being better than the data that people pay for.  You may ask, "If you think it's so far out, why do the same thing for trails"?  There are many compelling reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;No Good Alternative.&lt;/span&gt; There is no good alternative for trail maps.  Topo maps are from the 80's and trails are always shifting because of fires/floods/development/etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Passion&lt;/span&gt;.  Outdoor enthusiasts have passion.  They care about the trails, and they are very into it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Hikers have GPS.&lt;/span&gt;  Hikers are already equipped with the GPS necessary to collect and store the trail data need, and they are already accustom to using it, in case they get lost.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Looser Requirements.&lt;/span&gt;  Unlike street maps, there isn't going to be a turn by turn direction application that is trying to find you the best route based off this data.  This allows the data to be more sparse, and less detailed (no one way steets, no HOV lane, etc)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;These factors make this a project that can start off useful.  From day 1 it would be better than what exists today right from.  There is no need to collect all the data for it to work either.  The idea would be to start local, and spread out.   Work with local groups that need the data, and see if it takes off.&lt;br /&gt;&lt;br /&gt;In addition to the collection of data, the site would have to have a way to view and print the maps, and I would probably want to partner with a Topo map printer, and allow users to print the trails they want over a high quality topo map too.&lt;br /&gt;&lt;br /&gt;As far as the data is concerned, I would not want to hoard this data.  I'd be interested in providing it to anyone who wanted it, at least for their own use.  I'm not sure yet how I would fund this concept, but one initial idea is to find funding through people like the city of phoenix parks.  I know that they make maps, and I wonder how much work it is.  Having online maps and having users keeping those maps up to date may be very appealing to them, or may not be :).&lt;br /&gt;&lt;br /&gt;As I come up with more on this idea, I will continue to post under the label : opentrailmap.org.  Comment if you have any ideas/input.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-5892312736322275428?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/5892312736322275428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=5892312736322275428' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5892312736322275428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/5892312736322275428'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2007/06/opentrailmaporg.html' title='OpenTrailMap.org'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-6601712201100422099</id><published>2007-06-13T15:44:00.000-07:00</published><updated>2007-06-13T15:48:35.075-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cdma'/><category scheme='http://www.blogger.com/atom/ns#' term='samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='sprint'/><title type='text'>m500 Crashes Loading Large Images</title><content type='html'>the Samsung m500 throws a java.lang.IllegalArgumentException when you try to load a large image using the Image.createImage method. &lt;br /&gt;&lt;br /&gt;In the program I'm using, it tries to download an Image that is twice the width, and twice the height of screen.  It downloads it through a socket, and tries to load it via a byte array.  If you reduce the size to like 1.5 x the width and height, it loads... This issue is killing me because this exception just doesn't make any sense :)&lt;br /&gt;&lt;br /&gt;Has anyone else seen this issue?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-6601712201100422099?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/6601712201100422099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=6601712201100422099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/6601712201100422099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/6601712201100422099'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2007/06/m500-crashes-loading-large-images.html' title='m500 Crashes Loading Large Images'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-116018152483827892</id><published>2006-10-06T17:38:00.000-07:00</published><updated>2006-10-06T17:38:44.860-07:00</updated><title type='text'>Image.createImage throws an IOException on Sprint CDMA Phones</title><content type='html'>Carrier: Sprint&lt;br&gt;Network: CDMA&lt;br&gt;Manufacturer: Sanyo&lt;br&gt;Programming Language: J2ME&lt;br&gt;&lt;br&gt;&lt;br&gt;I ran into an issue trying to download jpg data to a J2ME application recently, and I figured it warranted a blog post.&amp;nbsp; &lt;br&gt; &lt;br&gt;The data the comes over the air is a bunch of meta data about the image, followed by all the bytes that are the contents of the image.&amp;nbsp; When the request comes in I find where the Image starts and try to load it into an Image object.&amp;nbsp; The Image object has a method:  &lt;br&gt;&lt;br&gt;Image.createImage(byte[] buffer, int start, int length) &lt;br&gt;&lt;br&gt;which is perfect.&amp;nbsp; I figured I could just pass in the whole response with the right start index and length, and it would work perfect.&amp;nbsp; When I tested it, it worked great on IDEN phones, and some sprint phones, but on a number of them, Sanyo phones in particular, it would only work a small fraction of the time.&amp;nbsp; Most of the time it would return a IOException with a null message.&amp;nbsp;  &lt;br&gt;&lt;br&gt;After debugging this for a few hours, I found that the data being sent from the server was being received right by the phone, and that the phone was using the correct start index and length.&amp;nbsp; Then I found that if the same contents were sent to two different phones, one would work and one would fail.&amp;nbsp; I couldn't figure out why it would fail, and it really didn't make any sense. &lt;br&gt;&lt;br&gt;Fortunately I was able to come up with a workaround that I haven't seen on the Internet yet, hence this blog...&lt;br&gt;&lt;br&gt;Instead of passing in the whole buffer, with start and length values, I just the image bytes into a new array and pass in 0 for start and the length of the array for the length. &lt;br&gt;&lt;br&gt;This solved the problem, but blew my mind.&amp;nbsp; :)&amp;nbsp; &lt;br&gt;&lt;br&gt;Original Code that crashed:&lt;br&gt;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image img = null;&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; img = Image.createImage(output, imageStartIdx, length)&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch(Exception e) {&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception(&amp;quot;The map returned was not valid.&amp;quot;);&lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;After The Fix:&lt;br&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] imageBytes = new byte[length];&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.arraycopy(output, imageStartIdx, imageBytes, 0, length);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image img = null;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; img = Image.createImage(imageBytes, 0, imageBytes.length);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // img = Image.createImage(output, imageStartIdx, length)&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch(Exception e) {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception(&amp;quot;The map returned was not valid.&amp;quot;);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;This is nothing too impressive, but I figured someone might not figure it out on their own, so there it is... &lt;br&gt;&lt;br&gt;Happy Coding!&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-116018152483827892?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/116018152483827892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=116018152483827892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/116018152483827892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/116018152483827892'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2006/10/imagecreateimage-throws-ioexception-on.html' title='Image.createImage throws an IOException on Sprint CDMA Phones'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-115946237257642068</id><published>2006-09-28T09:52:00.000-07:00</published><updated>2006-09-28T09:52:52.583-07:00</updated><title type='text'>.mobi Domain Names</title><content type='html'>.mobi has been introduced as the defacto for mobile websites, and though it's pretty intuitive, (mobi-&amp;gt;mobile), imagine typing it on your phone.&amp;nbsp; M and O are on the same key, so you would have to type:&lt;br&gt;&lt;br&gt;6&lt;br&gt;wait about 5 seconds &lt;br&gt;6&lt;br&gt;6&lt;br&gt;6&lt;br&gt;2&lt;br&gt;2&lt;br&gt;4&lt;br&gt;4&lt;br&gt;4&lt;br&gt;&lt;br&gt;&lt;br&gt;What a pain...&lt;br&gt;&lt;br&gt;The Nerd community, like me, knows that web content for phones has clasically been refered to as &amp;quot;WAP pages&amp;quot;, WAP being Wireless Application Protocol,&amp;nbsp; and though I'm not a huge fan of the term, it's always been particulary convinient, because W-A-P is not only on 3 different keys on a phone, but each letter is the first letter for it's key, so instead of the above key sequence a .wap extension would be entered with the following: &lt;br&gt;9&lt;br&gt;2&lt;br&gt;7&lt;br&gt;&lt;br&gt;That saves 7 key strokes, and a ton of time... I'm not going to talk to much smack, but it seems like there was not nearly enough thought on this one.&amp;nbsp; I suppose one day WAP browsers will assume that the extension is .mobi if no other extension is specified, so it won't matter anyway, but for all of us with old phones, it will always be a pain.&amp;nbsp; Such is life I suppose. &lt;br&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-115946237257642068?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/115946237257642068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=115946237257642068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115946237257642068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115946237257642068'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2006/09/mobi-domain-names.html' title='.mobi Domain Names'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-115576169919814324</id><published>2006-08-16T13:52:00.000-07:00</published><updated>2006-08-16T13:54:59.210-07:00</updated><title type='text'>The Motorola i580 is NOT my phone of choice</title><content type='html'>&lt;o:p&gt;&lt;/o:p&gt;Nextel now sells the i580.&lt;span style=""&gt;   &lt;/span&gt;It looks nice at first... it's very rugged, and comes equiped with a 1.3 MP camera.  After playing with it for a while, I came to the conclussion that the Motorola iden group is heading in the right direction, but still isn’t anywhere near where they should be.&lt;span style=""&gt;  &lt;/span&gt;    &lt;p class="MsoNormal"&gt;...Major Points:&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;The Record Store Is Much Faster.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In older iden phones (even ones with higher model numbers) always had a very sluggish record store.&lt;span style=""&gt;  &lt;/span&gt;Any time you had to write data to the memory store, especially when you store lots of data, it would always run super slow.&lt;span style=""&gt;  &lt;/span&gt;CDMA phone always had iden phones beat.&lt;span style=""&gt;  &lt;/span&gt;The i580 is much faster, and is finally competitive on Record Store performace.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;The Up stream network IO is HORRIBLE!&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I loaded up an app onto the i580 and the i870, and I found that the network upload speeds on the i580 were about 4 times slower, and that’s a generous estimate.&lt;span style=""&gt;  &lt;/span&gt;The download speeds seem to be competitive (at least with other iden phones).&lt;span style=""&gt;  &lt;/span&gt;In addition to the slow speeds, you can not usually make it through a large upload without being interrupted by a random socket error, so really we shouldn’t even worry about the fact that it’s slow, instead we should just try to get it to work period.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;The i580 does have widen, iden’s high(er) speed data, support… but I haven’t tried it yet, that may help getting around this horrible performance.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;There are a lot of new bells and whistles on the i580, but the network IO is enough to make me say that I would advise against buying this phone until it is resolved. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-115576169919814324?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/115576169919814324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=115576169919814324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115576169919814324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115576169919814324'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2006/08/motorola-i580-is-not-my-phone-of.html' title='The Motorola i580 is NOT my phone of choice'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-115186988487803256</id><published>2006-07-02T12:28:00.000-07:00</published><updated>2006-07-02T12:51:24.900-07:00</updated><title type='text'>SQL Server Index Fragmentation</title><content type='html'>SQL Server, but like most nice tools, it doesn't come without it's short comings.  Among the list of short comings is Index Fragmentation.  You add an index to a table to make a certain column a good candidate to look up data with.  Behind the scenes, this index is really basically just a sorted table with a lot less data than the big table so that you can lookup the record in the sorted table, and then use the key to get record from the big table.  This makes things nice and fast... But over time the indexes slowly get fragmented, and selecting data gets slower and slower.  Most people think that it gets slow because there is just too much data, but computers are FAST!  And they are good at handling lots of data... That's why we made them :)  the problem is that these indexes become so fragmented that they are basically useless. &lt;br /&gt;&lt;br /&gt;How do you fix it? &lt;br /&gt;Well before you fix it you need to know what's broken.  You can use the "&lt;span class="textBold"&gt;DBCC SHOWCONTIG" command (find details on how to use this and all commands at &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_tsqlcon_6lyk.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_tsqlcon_6lyk.asp&lt;/a&gt;) this command will tell you all you need to know (and  a lot that you don't need to know) about the indexes you ran it on.  You can run it across the whole database, a single table, or even a single index.  If you are only interested in the fragmentation, you probably want to look at the "&lt;/span&gt;&lt;span class="textBold"&gt;Extent Scan Fragmentation" field that it outputs... The closer to 0, the better.  &lt;/span&gt;&lt;span class="textBold"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next, if you determine you have a lot of fragmentation, you have a number of options to resolve the issue.  The Naive approach is to drop the index and recreate it, and actually this will give you the best final results, but in the mean time anyone using your DB will be running without an index, and that will cause horrible performance for them.  For this reason, SQL Server provides a number of other options.&lt;br /&gt;&lt;br /&gt;My favorite is the "DBCC DBREINDEX" you just give this command an index, and it churn for a while and end up giving you a new fast index.  There is also a "&lt;span class="textBoldBlue"&gt;DBCC INDEXDEFRAG" which keeps the index, but shifts around all the info in it to try to defrag it.  I don't use it, but I've heard that it has decent results, and doesn't cause as much data locking as all other solutions.  The last option is &lt;/span&gt;&lt;span class="textBoldBlue"&gt;recreating the index with the DROP_EXISTING clause.  I'm no expert but I believe this syntax is supported by most databases, and the DBCC commands are SQL Server specific.  But recreating the index, even if you use the &lt;/span&gt;&lt;span class="textBoldBlue"&gt;DROP_EXISTING clause has most of the same disadvantages of dropping and recreating.&lt;br /&gt;&lt;br /&gt;Moral of the story?  You have to change the oil in your car from time to time... We don't like to do it, but we have to do it.  Indexes are not much different. They require maintenance. :-p&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-115186988487803256?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/115186988487803256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=115186988487803256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115186988487803256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115186988487803256'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2006/07/sql-server-index-fragmentation.html' title='SQL Server Index Fragmentation'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-115092105221727819</id><published>2006-06-21T13:17:00.000-07:00</published><updated>2006-06-21T13:17:32.233-07:00</updated><title type='text'>RecordStream issue with LG 535 (Fusic)</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Areas of interest: J2ME, Sprint/Nextel, CDMA, LG Fusic (535), RecordControl.setRecordStream&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;I&amp;#8217;m working with the J2ME for the Fusic, an awesome new CDMA cell phone from LG.&amp;nbsp; I&amp;#8217;ve noticed that the AudioRecording doesn&amp;#8217;t seem to work right.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;When I try to set the output stream of the RecordControl via the RecordControl.setRecordStream() method, it throws an IO Exception (which it&amp;#8217;s not documented to throw).&amp;nbsp; The exception is as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;java.io.IOException: Could not create recording at given location&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;It&amp;#8217;s almost like its trying to use the RecordLocation instead of the stream.&amp;nbsp; The RecordLocation is a locator string that specifies a URL to save the media to.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;I&amp;#8217;m only making note of it, I have no solution at this issue.&amp;nbsp; I plan to disable audio recording for now on this phone in the mean time, but since I couldn&amp;#8217;t find any mention of this on google, I figured I&amp;#8217;d mention it here so you know you&amp;#8217;re not the only one seeing this problem.&amp;nbsp; If anyone does happen to solve the problem, feel free to post additional details here.&amp;nbsp; I suspect that you could work around it by using the setRecordLocation and actually recording that way, then going back and pulling it out from that location.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Good Luck.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-115092105221727819?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/115092105221727819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=115092105221727819' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115092105221727819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115092105221727819'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2006/06/recordstream-issue-with-lg-535-fusic.html' title='RecordStream issue with LG 535 (Fusic)'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-115050417457069072</id><published>2006-06-16T15:17:00.000-07:00</published><updated>2006-06-16T17:29:34.586-07:00</updated><title type='text'>View-Based Refresh Queries</title><content type='html'>Google Earth is a super cool application to dork out on... I've done a ton of work with KML, the Keyhole Markup Language.  But no matter how much I do with it, it still continues to blow my mind. &lt;br /&gt;&lt;br /&gt;Right now I'm working on a project with google to provide content via View-Based Refresh Queries.  These are queries where you provide a url and they post a GET request to you and you feed back KML.  Their request contains the corner lat/lon points so you just decide what you think should show up in Google Earth, then generate the KML and return it in your response.  The concept is simple, but the actual work involoved is not as trivial as it sounds.   When google Earth loads, they are zoomed way out, and basically you can see the whole earth... so what do you return? data for the whole earth?  probably not... that would kill your database, and the client would be stuck downloading everything you had.  and if you only return a subset of the data, how do you choose what to return?  You want to spead it out so that the data that you show is scattered around the world, then when they zoom in, you want to show more places in the zoomed in level.   And what kind of data do you show?  At a high level, you want a complex collection of data to be represented as a single point probably, but as they get closer you want to show more and more data about the complex thing.  All of this logic, which I've only started to dip into here is what takes the time.  And with the masses that google can provide, these questions are very important. &lt;br /&gt;&lt;br /&gt;My Manager estimated that this project could be done in a matter of days, and *something* can be done in a matter of days, but the solution should be load tested and usability tested, and really, even the server architecture should be reconsidered.   I really am worried that a million people will all start hitting our servers all at once, and I don't think we're ready for that :)&lt;br /&gt;&lt;br /&gt;So how do I make this situation work?&lt;br /&gt;-first, direct all traffic to some subdomain like googleearth.yourdomain.com and have your main server host that subdomain... this way when the traffic kills you you can issolate it and move it somewhere else, or just turn it off.&lt;br /&gt;-second, write it without strong consideration for the consequences.  you can get it done now, then prove it needs more time by load testing it and showing that it is not scallable.&lt;br /&gt;-third, work harder&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-115050417457069072?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/115050417457069072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=115050417457069072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115050417457069072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115050417457069072'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2006/06/view-based-refresh-queries.html' title='View-Based Refresh Queries'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29818600.post-115047788171845985</id><published>2006-06-16T09:58:00.000-07:00</published><updated>2006-06-16T10:11:21.730-07:00</updated><title type='text'>The saga continues</title><content type='html'>I've been keeping a few blogs on a drupal installation on an old solaris box I had around, but I've been trying to change my nerdy habits... it's cool to be a nerd, but why waste all your time doing something that the rest of the world can do better using free stuff like this?  for respect? who cares! :) &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is this blog for?  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'll keep another personal blog, this one will be reserved for nerdier things than your average person wants to hear about. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why would I read this blog?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;because your a nerd too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What kind of stuff will it contain?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This blog will only rant about things that I either work with, or have worked with.  I work for one of the leading GPS compaines in the world, working with various trechnologies... I'm always working with KML, GoogleMaps, Geodedic Math, C#, Java, XML, XSL, all the dorky stuff that people like you and me are all about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Should I trust this Blog?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No.  The internet makes you stupid.  I'll do exactly what every other nerd does, pretend I am awesome and that I know everything... oddly enough I don't.  You can always read, and you can choose to accept or reject whatever you want, but I am not anything special.  and itf you blindly trust me, you are a sucker! :-p &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What good does Blogging do?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I will not promote this... If I have anything good to say, Googles web crawler will promote it for me, and if it doesn't then I obveously didn't have anything good to say.  If you're reading this, then I guess I must have said something worth reading:)  weird!&lt;br /&gt;&lt;br /&gt;I don't plan to move over my old blogs, but I'll leave them up where they were... If you find them, feel free to indulge&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29818600-115047788171845985?l=stopthatnerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stopthatnerd.blogspot.com/feeds/115047788171845985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29818600&amp;postID=115047788171845985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115047788171845985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29818600/posts/default/115047788171845985'/><link rel='alternate' type='text/html' href='http://stopthatnerd.blogspot.com/2006/06/saga-continues.html' title='The saga continues'/><author><name>Bob Wold</name><uri>http://www.blogger.com/profile/06829348079820816192</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_re4CuR4Ttrw/TQkbVDVs-EI/AAAAAAAAAbI/iWddMfeBD1w/S220/my-shadow.jpg'/></author><thr:total>0</thr:total></entry></feed>
