<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>JonnyBoats</title>
	<atom:link href="http://jonnyboats.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonnyboats.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Mon, 25 Jul 2011 22:40:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jonnyboats.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>JonnyBoats</title>
		<link>http://jonnyboats.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jonnyboats.wordpress.com/osd.xml" title="JonnyBoats" />
	<atom:link rel='hub' href='http://jonnyboats.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Amateur Radio&#8217;s golden packet</title>
		<link>http://jonnyboats.wordpress.com/2011/07/25/amateur-radios-golden-packet/</link>
		<comments>http://jonnyboats.wordpress.com/2011/07/25/amateur-radios-golden-packet/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 22:40:36 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://jonnyboats.wordpress.com/2011/07/25/amateur-radios-golden-packet/</guid>
		<description><![CDATA[&#160; On Sunday, July 24, 2011 I was privileged to be selected to operate from the top of Sugarloaf Mountain (Maine) as part of a series of stations along the peaks of mountains on the Application trail. My call sign is WA1KLI and I have been a radio amateur since junior high school. The purpose [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=34&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="left"><a href="http://jonnyboats.files.wordpress.com/2011/07/wa1kli.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;float:left;padding-top:0;border-width:0;margin:0 0 10px;" title="WA1KLI" border="0" alt="WA1KLI" align="left" src="http://jonnyboats.files.wordpress.com/2011/07/wa1kli_thumb.png?w=501&#038;h=355" width="501" height="355" /></a></p>
<p align="left">&#160;</p>
<p align="left">On Sunday, July 24, 2011 I was privileged to be selected to operate from the top of Sugarloaf Mountain (Maine) as part of a series of stations along the peaks of mountains on the Application trail. My call sign is WA1KLI and I have been a radio amateur since junior high school.</p>
<p align="left">The purpose of this exercise is to transmit a text message the entire length of the trail with the message being relayed by each station along the way. The webpage for this event is at <a title="http://www.aprs.org/at-golden-packet.html" href="http://www.aprs.org/at-golden-packet.html">http://www.aprs.org/at-golden-packet.html</a>. While sending a text message from Maine to Georgia is something that any teenager with a cellphone would take for granted, it is radio amateurs, who first developed the technology. To Hams (the nickname for radio amateurs) this is known as <a href="http://en.wikipedia.org/wiki/Packet_radio" target="_blank">packet radio</a>. The enhanced version of packet, known as <a href="http://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System" target="_blank">Automatic Packet Reporting System</a> (APRS) was invented by Bob Bruninga, WB4APR, who coordinates the golden packet event each year.</p>
<p align="left">What separates text messaging on cellphones from what we do with APRS is infrastructure.&#160; To send a text message on a cellphone one needs to be in range of a <strong>working</strong> cell tower. A ham simply needs an APRS capable radio and on this day I was using a hand held “walkie-talkie” During a natural disaster or emergency cellphone systems may easily become overloaded or out of commission entirely in a specific area as happened in New Orleans with <a href="http://en.wikipedia.org/wiki/Hurricane_Katrina" target="_blank">Katrina</a>.</p>
<p align="left">So on this day the purpose of this exercise was to see if hams have the capability to&#160; step up and provide long distance text messaging when other means become unavailable. This was the third year that this event has been held and while the final results are still being tabulated, it looks like the most successful year thus far.</p>
<p align="left">If you are not a radio amateur, perhaps you could pause for a second the next time you send a text message and think of the hams who made it all possible as well as providing the backup communication when cellphones and all else fail. Then reflect on the beauty of this mountain and the gorgeous weather. Hopefully you too may want to become a ham and join us in the great outdoors next year, we welcome newcomers of all ages.</p>
<p align="left">To learn more about ham radio visit the <a href="http://www.arrl.org/" target="_blank">ARRL website</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=34&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2011/07/25/amateur-radios-golden-packet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>

		<media:content url="http://jonnyboats.files.wordpress.com/2011/07/wa1kli_thumb.png" medium="image">
			<media:title type="html">WA1KLI</media:title>
		</media:content>
	</item>
		<item>
		<title>Six sigma in the moose muck.</title>
		<link>http://jonnyboats.wordpress.com/2010/06/01/six-sigma-in-the-moose-muck/</link>
		<comments>http://jonnyboats.wordpress.com/2010/06/01/six-sigma-in-the-moose-muck/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 14:17:38 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://jonnyboats.wordpress.com/2010/06/01/six-sigma-in-the-moose-muck/</guid>
		<description><![CDATA[For the past week I have been working in Berlin, NH. Berlin is a city in northern NH on the Androscoggin river and a mill town. Their slogan is “The city that trees built”. The mill is now closed but the culture lives on. Where I eat breakfast, a restaurant in the old train depot [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=30&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For the past week I have been working in Berlin, NH. Berlin is a city in northern NH on the Androscoggin river and a mill town. Their slogan is “The city that trees built”. The mill is now closed but the culture lives on. Where I eat breakfast, a restaurant in the old train depot (the tracks are gone as well) has a sign out front that states “Nous Parlons Francais”.</p>
<p>Years ago French-Canadians came to work the mills of New England, now with the mill closed the wood is cut and much of it shipped to mills in Quebec. This is not a story unique to Berlin, it is happening throughout northern New England.</p>
<p>We have a place in Phillips, Maine and some nights I have been going there and other nights I stayed at a friend’s house in Berlin. The drive from Phillips to Berlin is two (2) hours, through mountains, timberland, lakes and rivers. To describe route 16 between Errol, NH and Rangeley, ME as isolated would be an understatement.</p>
<p>In making this drive, there has yet to be a day I did not see a moose. As anyone who has seen one will attest, a moose is a <em><strong>large</strong></em> animal, often weighing 1,000 lbs. There have been cases where a car has hit a moose and the driver was killed, the car totaled and the moose walked away.</p>
<p>This morning (Tuesday, June 1, 2010) I left Phillips at 5 AM and arrived in Berlin at 7AM. Along the way I saw six (6) deer and six (6) moose, one of whom was dead in the road in my lane. Fortunately I saw him in plenty of time and was able to avoid hitting him. To give you an idea of size, he was on his side taking up the whole lane. Lying that way, he was taking up more space than me small 2 door Hyundai.</p>
<p>Seeing all these animals got me thinking about quality. Now obviously the moose are doing quite well here, thank you, unlike the fish in the gulf next to BP’s oil well these days. Now I am a big fan of analytics, performance measurement and statistics in general. Now while the wildlife biologists use lots of statistics to measure and track the moose, I have never met a moose who could so much as count, much less compute a Kendall-Tau statistic.</p>
<p>Yet somehow, without the aide of mathematics, the moose has evolved in perfect harmony with his environment and is flourishing.</p>
<p>Which brings us to a key point; while statistics are appropriate for process improvement, they are no substitute for initial greatness. Allow me to demonstrate what I mean by this. Suppose you are an aspiring composer. If your goal is to create short ring tones for cellphones to sell on the web, an analytics program will definitely help you maximize your profit. If on the other hand you wish to compose music to rival Beethoven and Mozart, no amount of statistical process control is likely to be the key ingredient that separates the truly great from the simply good.</p>
<p>Which brings us to the key point. To be successful a firm should start with great people and then measure performance. Measurement is ex poste while greatness is ex ante.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=30&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2010/06/01/six-sigma-in-the-moose-muck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting it right or &#8220;You can&#8217;t fix stupid&#8221;</title>
		<link>http://jonnyboats.wordpress.com/2010/05/15/getting-it-right-or-you-cant-fix-stupid/</link>
		<comments>http://jonnyboats.wordpress.com/2010/05/15/getting-it-right-or-you-cant-fix-stupid/#comments</comments>
		<pubDate>Sat, 15 May 2010 14:33:05 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">https://jonnyboats.wordpress.com/?p=23</guid>
		<description><![CDATA[As a sailor, I know that if you try to cross an ocean in a boat that is not seaworthy (i.e. safe) you are likely to die. No reasonable person would ever dream of leaving port without at least attempting to make his vessel as prepared as time and resources permit. Why is it that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=23&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a sailor, I know that if you try to cross an ocean in a boat that is not seaworthy (i.e. safe) you are likely to die. No reasonable person would ever dream of leaving port without at least attempting to make his vessel as prepared as time and resources permit.</p>
<p>Why is it that so many businesses routinely try to skate by with obsolete and or inadequate software? Is it that they somehow feel that the consequences of failure are not as dire (Heck, if we go bankrupt our employees don’t die and besides most of them will end up getting jobs elsewhere; sooner or later)? Or is it that they think it just doesn&#8217;t matter (Heck our programmers and systems don’t help us get customers or make money so why waste resources on them)?</p>
<p>In my case I can’t afford to go bankrupt, and without software I have no customers, so I guess I am in a different league. That is why I love software and systems that just work. I don’t mean “kinda sorta work” or “works most of the time”; I mean stuff that I can count on and allows me to do world class work.</p>
<p>Allow me to give you a couple of examples of what I am talking about.</p>
<p>First I generally write software that works with the Microsoft Windows family (web servers and Windows clients). If I were programming for iPhones or Unix I would use different tools, but that is not where I focus. Since I live or die in a Microsoft environment, it only makes sense to have the best tools for that environment. Fortunately Microsoft makes that extremely cheap and easy for me via their <a href="http://www.microsoft.com/bizspark/" target="_blank">Bizspark</a> program. My development computer is running Windows 7, Visual Studio 2010 ultimate edition and Office 2010. It’s quite simply a no brainer for me. Yet I routinely speak with developers working for large companies (who could easily afford these tools for their developers) who are saddled with seven year old compilers (Visual Studio 2003) and incapable of producing software meeting current standards. They often ask “But do you really need tools that good, after all we are not trying to produce world class software at our company, it is for internal use and management only wants ‘good enough’”. My response is that if all you want is mediocrity and are happy giving your profits and market share to your competitors (who choose to be more than mediocre), then I hope you have saved a lot of money in the bank because your job is not secure. Bottom line, Bizspark is a great program, join it if you can, and use the best tools available.</p>
<p>Another invaluable tool is <a href="http://www.scootersoftware.com/moreinfo.php" target="_blank">Beyond Compare</a>, a FTP client from <a href="http://www.scootersoftware.com/" target="_blank">Scooter Software</a>. I have the pro version which costs $50 and worth every penny. Now I know many of you are thinking “Aren’t there lots of free FTP clients and besides isn’t FTP support built into Windows?” The answer is yes on both counts! So why pay $50 for something I already had for free in Windows? Because Beyond Compare has the best error handling and recovery for FTP I have ever found. You only have to start uploading a set of files (such as for a new website) to a server once or twice where it dies in the middle of an hour long session to see the value of using a product you can set and forget, knowing that when you come back from lunch it will have succeeded perfectly. Another great feature of this product is Scooter Software. This is all they do, and when you contact them with a question you get an answer from the developer who writes it, not some clueless technician in a far off land for whom English is a second language.</p>
<p>Lest you think I am advocating solely for paid software allow me to mention a great product that is available for free beta testing: namely <a href="http://www.chrometa.com/" target="_blank">Chrometa</a>. What this simple program does is run unobtrusively in the background and log what you do on your computer. It’s primary purpose is for people who need to bill their time and need to track it by client or project. The primary benefit for me is being able to go back and “re-discover” what I found previously. For example, “What was the URL of the website I went to yesterday that had the sample code for LZW compression?” It’s all there in the history, a real life saver when you need to find something again.</p>
<p>Anyway I have two computers on my desk, and use browsers on both of them. Because of this to answer a question like this I need to look at Chrometa’s history log on both computers (Heck, if I can’t remember the URL am I going to remember computer I used to find it!). Anyway I submitted a question asking if they had considered a feature allowing one to view logs consolidated across multiple computers. I was pleasantly surprised when I got an email back from JP Ren, the co-founder and product manager explaining that that feature was currently under development!</p>
<p>Is it smart to run your company/business/life on software that is obsolete and no longer supported (Think old versions of Microsoft Windows that are no longer being maintained)? I don’t think so. For me, having the best products available (note that I did not say most expensive) coupled with reasonable access to meaningful product support is the only way to turn out world class software products and service.</p>
<p>So a big thank you to these three firms, large and small,that provide the tools that permit me to do the best job possible.</p>
<p>Do you work for a company that doesn’t give you the tools you need to do a great job? Well I guess it’s like they say, you can’t fix stupid. Rest assured that in the long run smart beats stupid though.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=23&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2010/05/15/getting-it-right-or-you-cant-fix-stupid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>
	</item>
		<item>
		<title>Bringing Joy to the World</title>
		<link>http://jonnyboats.wordpress.com/2009/12/23/bringing-joy-to-the-world/</link>
		<comments>http://jonnyboats.wordpress.com/2009/12/23/bringing-joy-to-the-world/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 15:38:07 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jonnyboats.wordpress.com/2009/12/23/bringing-joy-to-the-world/</guid>
		<description><![CDATA[Here is a video of people enjoying the HBO Shop Interactive Snow Window in New York City. In particular I enjoyed watching the little girl to whom this display obviously brought so much joy. Having lived in Manhattan for ten years, I remember well the display windows in the stores as well as the extra [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=22&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here is a video of people enjoying the <a href="http://vimeo.com/8196236" target="_blank">HBO Shop Interactive Snow Window</a> in New York City. In particular I enjoyed watching the little girl to whom this display obviously brought so much joy.</p>
<p><a href="http://jonnyboats.files.wordpress.com/2009/12/hbo_013.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;margin:0 0 0 10px;" title="hbo_013" border="0" alt="hbo_013" align="right" src="http://jonnyboats.files.wordpress.com/2009/12/hbo_013_thumb.jpg?w=244&#038;h=188" width="244" height="188" /></a> </p>
<p>Having lived in Manhattan for ten years, I remember well the display windows in the stores as well as the extra effort that went into them during the holidays. One need only consider the Macy’s Thanks-giving day parade to realize that merchants in NYC regularly exceed their counter-parts in other places in terms of the efforts they will undertake.</p>
<p>Quoting from the <a href="http://sosolimited.com/design_hbo.html" target="_blank">Sosolimited</a> website: <em>“We built a snow blowing machine that senses people walking by on the sidewalk and launches snow into the air in response. The installation was developed with the openFrameworks programming API and the physical hardware was controlled using an Arduino. An IR sensor array detects how close pedestrians and window-gazers are, and using mechanical relays, switches on and off fans under the snow in response. A Large LED wall behind the snow is also reactive to street traffic as well. A sliced winter forest scene changes color and moves in response to street traffic.”</em></p>
<p>I too use <a href="http://www.arduino.cc/" target="_blank">Arduino</a> computers, which are open source and available for approximately $30. All the software for them, compilers etc., is open source and free. I use my Microsoft Windows computer to compile programs for the Arduino and then download and run the program on the Arduino. It’s an ideal combination, the power, speed and ease of use of Windows combined with ultra low cost deployment.</p>
<p>While I have used multi-million dollar computers to solve sophisticated financial calculations using integer programming, I have never had a child dance and enjoy any program I have ever written. My hat is off to the people at Sosolimited and HBO; they have used a $30 computer to bring the true joy of the holidays to untold children and adults this holiday season.</p>
<p>Wouldn’t it be great if all of us who work with computers could dedicate ourselves to using them to bring a little bit of joy to the world in the coming year?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=22&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2009/12/23/bringing-joy-to-the-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>

		<media:content url="http://jonnyboats.files.wordpress.com/2009/12/hbo_013_thumb.jpg" medium="image">
			<media:title type="html">hbo_013</media:title>
		</media:content>
	</item>
		<item>
		<title>Choose Microsoft for iPhone development</title>
		<link>http://jonnyboats.wordpress.com/2009/12/09/choose-microsoft-for-iphone-development/</link>
		<comments>http://jonnyboats.wordpress.com/2009/12/09/choose-microsoft-for-iphone-development/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 04:41:22 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://jonnyboats.wordpress.com/2009/12/09/choose-microsoft-for-iphone-development/</guid>
		<description><![CDATA[About now you’re probably thinking, “What happened JonnyBoats, the boom on your sailboat hit you in the head?” Everybody knows the way to develop for the iPhone is with Objective-C form Apple. Well hang in there with me…. Having dealt with lots of people at Microsoft for over 20 years, I can assure you that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=18&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>About now you’re probably thinking, “What happened JonnyBoats, the boom on your sailboat hit you in the head?” Everybody knows the way to develop for the iPhone is with <a href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">Objective-C</a> form Apple. Well hang in there with me….</p>
<p>Having dealt with lots of people at Microsoft for over 20 years, I can assure you that once you get to know them the company is really lots of different groups with different agendas and goals. Those who portray Microsoft as the “evil empire” with all employees goose stepping to the same music has simply not taken the time to get to know those on the main campus.</p>
<p>One of the podcasts I try to listen to is StackOverflow, they are published weekly and last for over an hour, so I often fall behind. I was listening to <a href="http://blog.stackoverflow.com/2009/07/podcast-61/" target="_blank">Podcast # 61</a> with <a href="http://tirania.org/blog/">Miguel de Icaza</a> of the <a href="http://mono-project.com/Main_Page">Mono project</a>. If you have the time, I encourage you to listen to the podcast.</p>
<p>In the podcast Miguel mentions dealing with Bob Muglia of Microsoft concerning licensing and the mono project and how accommodating and supportive he is to open source.</p>
<p>I first dealt with Bob back in 1988 when he joined Microsoft (see this <a href="http://www.itjungle.com/two/two050907-story10.html" target="_blank">news item</a>). I had a small firm, Canaan Analytics, and we were developing a Windows based system used by an internally managed pension fund that used it to manage several billion dollars of US stocks. Bob always went above and beyond to help us, and I can assure you that we could never have done what we did without a lot of help from many, many people at Microsoft.</p>
<p>Allow me to give you a quick example of one of the many things he did to help us. We were using <a href="http://technet.microsoft.com/en-us/library/cc958776.aspx" target="_blank">second class broadcast mailslots</a> to deliver real-time stock quotes through the LAN. Bob knew this, and that we were virtually the only firm using them in this way. Bob gave me a call to tell me Microsoft would like to change their implantation under Windows NT and wanted to know how this would affect us.</p>
<p>Back to the present, take a look at these show notes excerpted from the StackOverflow podcast:</p>
<li><font size="1">Mono runs on the iPhone, </font><a href="http://unity3d.com/unity/features/iphone-publishing.html"><font size="1">through the Unity game engine</font></a><font size="1">! This was challenging for the Mono team to develop, because interpreters and runtimes are </font><a href="http://mcdevzone.com/2008/03/07/iphone-sdk-restrictions/"><font size="1">explicitly disallowed in terms of the iPhone SDK</font></a><font size="1">. Mono had to be converted from a JIT to a static compiler. </font></li>
<li><font size="1">Per Miguel, programmers wanted Mono because Objective-C is fairly primitive in memory management and requires a lot of repetition and boilerplate. With Mono “this is all taken care for you”, as a higher level language. </font></li>
<li><font size="1">Due to </font><a href="http://www.fsf.org/news/dont-depend-on-mono"><font size="1">concerns within the free software community</font></a><font size="1">, Microsoft made a legally binding promise that </font><a href="http://arstechnica.com/microsoft/news/2009/07/microsoft-issues-patent-promise-dispels-mono-concerns.ars"><font size="1">it will not enforce patents against Mono</font></a><font size="2"><font size="1"> — for the core framework.</font> </font>
<p>For all the details you really do need to listen to the podcast; but here is my take:</p>
<ol>
<li>Apple provides a limited, outdated development environment for the iPhone. </li>
<li>Apple restricts through legal contracts what developers can do on the iPhone, forbidding some of the most popular tools which are capable of running on the iPhone. </li>
<li>Microsoft provides a great development environment with Visual Studio and .NET. The compilers are included for free with Windows and the Express version of Visual Studio is also free. </li>
<li>Because of the open source Mono project and the <a href="http://unity3d.com/unity/features/iphone-publishing" target="_blank">Unity framework</a>, applications can be developed in Visual Studio and deployed on the iPhone. </li>
</ol>
<p>So in conclusion Microsoft provides free and low cost versions of Visual Studio that permits one to develop applications that run on Windows, Unix, Mac, Windows Mobile and the iPhone. If you develop on a Mac, what tools does Apple give you to develop applications to deploy on Windows?</p>
</p>
</p>
</li>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=18&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2009/12/09/choose-microsoft-for-iphone-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>
	</item>
		<item>
		<title>Software development choices</title>
		<link>http://jonnyboats.wordpress.com/2009/08/02/software-development-choices/</link>
		<comments>http://jonnyboats.wordpress.com/2009/08/02/software-development-choices/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 00:15:00 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://jonnyboats.wordpress.com/2009/08/02/software-development-choices/</guid>
		<description><![CDATA[Anyone in the computer field is constantly called upon to make a dizzying array of choices. For a developer, a computer is hardly a set it and forget it device! All users must make choices like do I buy a Mac or a PC? If I get a PC, do I get a netbook with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=15&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Anyone in the computer field is constantly called upon to make a dizzying array of choices. For a developer, a computer is hardly a set it and forget it device!</p>
<p>All users must make choices like do I buy a Mac or a PC? If I get a PC, do I get a netbook with Windows XP, a laptop with Windows Vista or wait for Windows 7? No sooner than I get the computer it seems like I am faced with the question: “Is it time to upgrade?”</p>
<p>For a developer things can be even more frenetic. By way of example, hardly a week goes by without some sort of security patch or service pack for one of the myriad of tools. Silverlight, Visual Studio, Azure etc, the list seems endless! Worse still, tools for developers can easily cost thousands of dollars.</p>
<p>On a longer term and more strategic level one is forced to commit to platforms and development environments which take years to master and which unfortunately may not be around that long. Perhaps you learned the <a href="http://en.wikipedia.org/wiki/Pascal_(programming_language)" target="_blank">PASCAL</a> language in college? Well there really aren’t many jobs for PASCAL developers, especially compared to web developers or <a href="http://en.wikipedia.org/wiki/IPhone" target="_blank">iPhone</a> developers. Did the iPhone even exist when you were in college?</p>
<p>My first job after college in 1974 was as a <a href="http://en.wikipedia.org/wiki/COBOL" target="_blank">COBOL</a> programmer on IBM mainframes, technology which I concentrated on until the 1980s when I switched my focus to PCs. In the fall of 1987 I became a big fan of Microsoft Windows and have been doing development on Microsoft platforms with Microsoft tools ever since. In case you were wondering, I am a big Microsoft fan!</p>
<p>Two websites I am currently developing use vastly different toolsets. One, <a href="http://NewsPeeps.com">http://NewsPeeps.com</a>, uses Microsoft Model View Controller (MVC) and utilizes open source; specifically <a href="http://www.codeplex.com/Kigg" target="_blank">KiGG</a>. The other, <a href="http://www.ehswidges.com">http://www.ehswidges.com</a>, uses Microsoft’s Silverlight built with Expression Design 3’s SketchFlow tool.</p>
<p>The first, MVC, has a rather steep learning curve. Once one becomes proficient, one can do amazing things. One could characterize MVC as a tool for professionals. SketchFlow on the other hand can be can be understood in less than an hour and once could then build an extremely good looking website in far less than a day. That’s right, someone who is familiar with computers could learn SketchFlow and produce a quite acceptable website in less than a day! Watch this <a href="http://blogs.msdn.com/canux/archive/2009/06/28/mini-tutorial-blend-3-sketchflow-part-i.aspx" target="_blank">video</a> to see what I mean.</p>
<p>This reminds me of Windows development in the early 1990s. If one wanted to produce a Windows application prior to 1991 one programmed in C with the Windows SDK. In fact learning the Windows SDK took longer than learning C! Then in 1991 Microsoft Introduced Visual Basic and the barrier to entry as a Windows programmer was reduced by orders of magnitude. Commercial products like Microsoft Office continued to be written in C while the vast majority of corporate developers and hobbyists adopted VB. The number of Windows applications, particularly specialty products and&#160; in-house applications skyrocketed.</p>
<p>The lesson here is that Companies like Microsoft that make it easy for people to develop software will be far more successful in the long run than those that don’t. How easy does Microsoft make it? If you are a student, check out <a href="https://www.dreamspark.com/About/Overview.aspx" target="_blank">DreamSpark</a>. A starving entrepreneur looking to produce his (or her) first software product, check out <a href="http://www.microsoft.com/bizspark/" target="_blank">BizSpark</a>. Someone else wanting a free version of Visual Basic .NET, then download <a href="http://www.microsoft.com/express/" target="_blank">VB.NET</a> for free.</p>
<h3>In my next post I will discuss why this may be the game changing strategy that could permit Microsoft to dominate the mobile phone market.</h3>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=15&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2009/08/02/software-development-choices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>
	</item>
		<item>
		<title>Mind mapping with SketchFlow</title>
		<link>http://jonnyboats.wordpress.com/2009/07/19/mind-mapping-with-sketchflow/</link>
		<comments>http://jonnyboats.wordpress.com/2009/07/19/mind-mapping-with-sketchflow/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 22:11:14 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jonnyboats.wordpress.com/2009/07/19/mind-mapping-with-sketchflow/</guid>
		<description><![CDATA[Recently Microsoft released version 3 of Expression Blend, a tool used primarily to create websites and programs that run on Microsoft Windows. The technology used by Blend for these websites is Silverlight which permits the development of stunning graphics, similar to Flash but much easier in&#160; my opinion. Last week I had the opportunity to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=13&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently Microsoft released version 3 of <a href="http://www.microsoft.com/expression/try-it/Default.aspx?filter=blend3sketchflowrc" target="_blank">Expression Blend</a>, a tool used primarily to create websites and programs that run on Microsoft Windows. The technology used by Blend for these websites is Silverlight which permits the development of stunning graphics, similar to Flash but much easier in&#160; my opinion.</p>
<p>Last week I had the opportunity to work on one of these Silverlight 3 websites using SketchFlow. If you are curious you can see the website, <a href="http://www.ehswidgets.com" target="_blank">ehs Widgets</a>.</p>
<p>As is often the case, one may find new uses for a tool other than what its creators intended. Today I needed to collaborate with a colleague in another state using a mind map. Mind maps are great tools for brainstorming and if you are not familiar with them you may want to either <a href="http://www.google.com/search?q=mind+map" target="_blank">Google</a> them or read about them at <a href="http://en.wikipedia.org/wiki/Mind_map" target="_blank">Wikipedia</a>. Not wanting to purchase an additional program just to do mind maps, it occurred to me that SketchFlow could easily be used as a mind mapping tool with the added benefit that the completed map can easily be output as a Microsoft Word document; or even a website if one so desires!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=13&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2009/07/19/mind-mapping-with-sketchflow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>
	</item>
		<item>
		<title>Displaying GPS data in WPF</title>
		<link>http://jonnyboats.wordpress.com/2009/06/05/displaying-gps-data-in-wpf/</link>
		<comments>http://jonnyboats.wordpress.com/2009/06/05/displaying-gps-data-in-wpf/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 01:29:04 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jonnyboats.wordpress.com/2009/06/05/displaying-gps-data-in-wpf/</guid>
		<description><![CDATA[One of the great things about Windows Presentation Foundation (WPF) is that it uses Extensible Application Markup Language (XAML). XAML is an XML based language that graphic artists can easily create using Microsoft Expression Blend. A programmer can then write the program logic in any .NET language such as C# or Visual Basic. A big [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=12&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the great things about Windows Presentation Foundation (WPF) is that it uses Extensible Application Markup Language (XAML). XAML is an XML based language that graphic artists can easily create using Microsoft Expression Blend. A programmer can then write the program logic in any .NET language such as C# or Visual Basic.</p>
<p>A big advantage to this separation beyond separation of tasks during initial development is that a non-programmer can change what the application looks like without knowing a programming language; only the XAML needs to be modified.</p>
<p>I built a simple test application in WPF using Visual Studio 2008 that reads data from a GPS and displays the position in latitude and longitude. Also displayed is the date and time which is updated from a timer. A screen shot of the application appears below:   </p>
<p><a href="http://jonnyboats.files.wordpress.com/2009/06/image.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" border="0" alt="image" src="http://jonnyboats.files.wordpress.com/2009/06/image_thumb.png?w=239&#038;h=244" width="239" height="244" /></a> </p>
<p>This solution is rather simple and its structure is shown below. The two items of interest are Window1.xaml and NMEAParse.cs As an aside, Window1.xaml.cs is just as generated by Visual Studio, it contains no additional code.</p>
<p><a href="http://jonnyboats.files.wordpress.com/2009/06/image1.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" border="0" alt="image" src="http://jonnyboats.files.wordpress.com/2009/06/image_thumb1.png?w=205&#038;h=146" width="205" height="146" /></a> </p>
<p>Here is Window1.xaml:   <br />___________________________________________________________</p>
<p>&lt;Window x:Class=&quot;NMEATest.Window1&quot;   <br />&#160;&#160;&#160; xmlns=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;">http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;</a>    <br />&#160;&#160;&#160; xmlns:x=&quot;<a href="http://schemas.microsoft.com/winfx/2006/xaml&quot;">http://schemas.microsoft.com/winfx/2006/xaml&quot;</a>    <br />&#160;&#160;&#160; xmlns:NMEATest=&quot;clr-namespace:NMEATest&quot;    <br />&#160;&#160;&#160; Title=&quot;Window1&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;    <br />&#160;&#160;&#160; &lt;Grid&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;StackPanel Orientation=&quot;Vertical&quot;&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;TextBox Height=&quot;34&quot; Width=&quot;Auto&quot; Text=&quot;{Binding Mode=OneWay, Path=FormattedDateTime}&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; TextWrapping=&quot;Wrap&quot; x:Name=&quot;DispValue&quot;&#160; Foreground=&quot;#FFE61919&quot; FontSize=&quot;18&quot;&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;TextBox.DataContext&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;NMEATest:UpdatingDtTm/&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/TextBox.DataContext&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/TextBox&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;TextBox x:Name=&quot;lat&quot;&#160; Text=&quot;{Binding Mode=OneWay, Path=GPSPosition}&quot;&gt;   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;TextBox.DataContext&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;NMEATest:UpdateGPS/&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/TextBox.DataContext&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/TextBox&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/StackPanel&gt;    <br />&#160;&#160;&#160; &lt;/Grid&gt;    <br />&lt;/Window&gt;</p>
<p>________________________________________________________   </p>
<p>This interface is rather simple, consisting primarily of two text boxes, one for the date-time and the other for the position. The key to getting the data into these textboxes is data binding. In this case the binding mode is set to OneWay since we are only displaying data, not updating it. The Path specifies the variable name being referenced (FormattedDateTime &amp; GPSPosition) while the DataContext specifies the namespace and class name (NMEATest:UpdatingDtTm &amp; NMEATest:UpdateGPS).</p>
<p>Below is NMEAParse.cs, the C# code that provides the data that is displayed in the XAML. Since this code is in a different class, it will run on a separate thread and thus the user interface will remain responsive even if the c# code is heavily loaded.</p>
<p>The key to implementing the data binding is to implement the </p>
<p> INotifyPropertyChanged interface, providing a PropertyChangedEventHandler and then calling PropertyChanged when there is new data to be displayed.  <br />________________________________________________________  <br /> 
<p>using System;   <br />using System.IO.Ports;    <br />using System.ComponentModel;    <br />using System.Windows.Threading; </p>
<p>namespace NMEATest   <br />{    <br />&#160;&#160;&#160; public class UpdateGPS : INotifyPropertyChanged    <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private string _GPSPosition = &quot;lost&quot;;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private bool bPortOpen = false;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private SerialPort port;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private string serBuff = &quot;&quot;; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region INotifyPropertyChanged Members   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public event PropertyChangedEventHandler PropertyChanged;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string GPSPosition   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return _GPSPosition; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public UpdateGPS()   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; port = new SerialPort(&quot;COM5&quot;, 4800);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; port.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; port.Open();    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; bPortOpen = true;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //port.Close();    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; bool newData = false;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; serBuff = serBuff + port.ReadExisting();    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while (serBuff.Contains(&quot;\r\n&quot;))    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; int i = serBuff.IndexOf(&quot;\r\n&quot;);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string line = serBuff.Substring(0,i);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (&#8216;$&#8217; == line[0])    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string[] tok = line.Split(&#8216;,&#8217;);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; switch (tok[0])    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPAPB&quot;:&#160;&#160;&#160;&#160;&#160; // Auto Pilot B sentence    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPBOD&quot;:&#160;&#160;&#160;&#160;&#160; // Bearing Origin to Destination    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPBWC&quot;:&#160;&#160;&#160;&#160;&#160; // Bearing using Great Circle route    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPGGA&quot;:&#160;&#160;&#160;&#160;&#160; //&#160; Fix information    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (tok[1].Length &gt; 0)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _GPSPosition =    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; tok[2].Substring(0,2) + &quot; &quot; + tok[2].Substring(2, tok[2].Length-2) + &quot; &quot; +tok[3] +    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot; &#8211; &quot; +    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; tok[4].Substring(0,3) + &quot; &quot; + tok[4].Substring(3, tok[4].Length-3) +    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot; &quot; + tok[5];    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _GPSPosition = line;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; newData = true;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPGLL&quot;:&#160;&#160;&#160;&#160;&#160; // Lat/Lon data    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPGSA&quot;:&#160;&#160;&#160;&#160;&#160; //&#160; Overall Satellite data    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPGSV&quot;:&#160;&#160;&#160;&#160;&#160; // Detailed Satellite data    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //_GPSPosition = line;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //newData = true;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPRMB&quot;:&#160;&#160;&#160;&#160;&#160; // recommended navigation data for gps    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPRMC&quot;:&#160;&#160;&#160;&#160;&#160; // recommended minimum data for gps    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPRTE&quot;:&#160;&#160;&#160;&#160;&#160; // route message    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPVTG&quot;:&#160;&#160;&#160;&#160;&#160; // Vector track an Speed over the Ground     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$GPXTE&quot;:&#160;&#160;&#160;&#160;&#160; // measured cross track error    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$PGRME&quot;:&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$PGRMM&quot;:    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;$PGRMZ&quot;:    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; default:    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //string un = line;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //Console.WriteLine(un);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; serBuff = serBuff.Substring(i+2);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //_GPSPosition = serBuff;   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (newData)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (PropertyChanged != null)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; PropertyChanged(this, new PropertyChangedEventArgs(&quot;GPSPosition&quot;));    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160; } </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; public class UpdatingDtTm : INotifyPropertyChanged   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private string _someText = &quot;Foo&quot;;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private DispatcherTimer tmr = new DispatcherTimer(); </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #region INotifyPropertyChanged Members   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public event PropertyChangedEventHandler PropertyChanged;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #endregion </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public string FormattedDateTime   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; get { return _someText; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public UpdatingDtTm()   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; tmr.Interval = TimeSpan.FromMilliseconds(10);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; tmr.Tick += new EventHandler(tmr_Tick);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; tmr.Start();    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; void tmr_Tick(object sender, EventArgs e)   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _someText = DateTime.Now.ToString();    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (PropertyChanged != null)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; PropertyChanged(this, new PropertyChangedEventArgs(&quot;FormattedDateTime&quot;));    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />}</p>
</p>
<p>_________________________________________________________________</p>
<p>If you are not familiar with WPF development, you may be surprised if you open this project in Visual Studio. The design interface will update the data in real-time in design mode; even before you run the program! This is to be expected. </p>
<p>One other thing, I used a Microsoft GPS puck on a USB port for testing. This is the one that ships with some versions of Streets &amp; Trips. On my computer it installed on Comm port 5 and runs on 4800 baud. If your GPS uses a different port or speed, you will need to change the line that opens the serial port. If you don’t have a GPS don’t worry, the date and time will still update.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=12&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2009/06/05/displaying-gps-data-in-wpf/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>

		<media:content url="http://jonnyboats.files.wordpress.com/2009/06/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://jonnyboats.files.wordpress.com/2009/06/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>stack overflow</title>
		<link>http://jonnyboats.wordpress.com/2009/06/02/stack-overflow/</link>
		<comments>http://jonnyboats.wordpress.com/2009/06/02/stack-overflow/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:26:17 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jonnyboats.wordpress.com/2009/06/02/stack-overflow/</guid>
		<description><![CDATA[It has been many years since I started programming computers and a lot has changed in that time. On the one hand all this new technology and changes leads to lots of questions, while on the other we have lots of new ways to get answers. For a long time now it has been common [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=7&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It has been many years since I started programming computers and a lot has changed in that time. On the one hand all this new technology and changes leads to lots of questions, while on the other we have lots of new ways to get answers. For a long time now it has been common to simply Google the internet for answers.</p>
<p>Now there is a great new resource for programmers; <a href="http://stackoverflow.com" target="_blank">stack overflow</a>. It is for one thing only, to ask questions and get answers about programming. This site is so good that one can ask a question and get multiple answers in literally minutes.</p>
<p>The story behind stack overflow is fascinating. For the details watch this <a href="http://blog.stackoverflow.com/2009/05/joel-talks-about-stack-overflow-at-google/" target="_blank">video</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=7&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2009/06/02/stack-overflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft Robotics Studio</title>
		<link>http://jonnyboats.wordpress.com/2009/04/08/microsoft-robotics-studio/</link>
		<comments>http://jonnyboats.wordpress.com/2009/04/08/microsoft-robotics-studio/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 16:53:50 +0000</pubDate>
		<dc:creator>jonnyboats</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MSRS]]></category>

		<guid isPermaLink="false">http://jonnyboats.wordpress.com/2009/04/08/microsoft-robotics-studio/</guid>
		<description><![CDATA[Using Microsoft's Robotics Studio (MSRS) for non-robot applications.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=5&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As part of my work for <a href="http://www.ttamarine.com" target="_blank">TTA Marine</a>, I have been doing lots of work to interface sensors and other marine electronic devices to computers running Microsoft Windows. Jeff Barnes of Microsoft suggested I take a look at Microsoft’s <a href="http://msdn.microsoft.com/en-us/robotics/default.aspx" target="_blank">Robotics Studio</a>, pointing out that its <a href="http://www.microsoft.com/ccrdss/" target="_blank">CCR/DSS</a> component is good for applications far beyond robots.</p>
<p>For hard core programmers looking for an example of the kinds of things the CCR/DSS is good for, I suggest you take a look at Igor Moochnick’s PowerPoint presentation <a href="http://igor.moochnick.googlepages.com/ccrpresentation1">Concurrency and Coordination Runtime (CCR): No More Asynchronous Spaghetti</a>. Igor wrote a web crawler (think Google search engine) using the product and has the source code for this and his other examples available for download. Get the presentation and sample code at <a title="http://igor.moochnick.googlepages.com/ccrpresentation1" href="http://igor.moochnick.googlepages.com/ccrpresentation1">http://igor.moochnick.googlepages.com/ccrpresentation1</a>.</p>
<p>Getting back to Jeff Barnes, I want to extend a big thank you to him for turning me onto this technology! While it is definitely not an easy learning curve, it holds lots of promise. Jeff has done an excellent presentation titled “<a href="http://blogs.msdn.com/jbarnes/archive/2008/12/02/silver-gps-complete-demo-code-and-updated-silverlight-project.aspx" target="_blank">Silver GPS &#8211; Overview of an end-to-end Mobile GPS tracking application using the .NET Compact Framework, WCF, LINQ, Silverlight, and Virtual Earth</a>” once again full source code is included. While Jeff does not use code from the Robotics Studio for this presentation, he has for several others.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonnyboats.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonnyboats.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jonnyboats.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jonnyboats.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jonnyboats.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jonnyboats.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jonnyboats.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jonnyboats.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jonnyboats.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jonnyboats.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jonnyboats.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jonnyboats.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jonnyboats.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jonnyboats.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jonnyboats.wordpress.com&amp;blog=7283816&amp;post=5&amp;subd=jonnyboats&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jonnyboats.wordpress.com/2009/04/08/microsoft-robotics-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4f51bfa8ad44705b121f13bc75ca89c5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonnyboats</media:title>
		</media:content>
	</item>
	</channel>
</rss>
