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

<channel>
	<title>Opgenorth.NET</title>
	<atom:link href="http://www.opgenorth.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.opgenorth.net</link>
	<description>Mindless missives of a .NET developer from the North</description>
	<lastBuildDate>Tue, 15 Jun 2010 23:27:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Induction Into the Android Army &#8211; the Aftermath</title>
		<link>http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=induction-into-the-android-army-the-aftermath</link>
		<comments>http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 23:27:10 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/</guid>
		<description><![CDATA[Thanks to all who attended my “Induction into the Android Army” talk this afternoon at the monthly Edmonton Java User’s Group meeting.&#160; I’d say it was a good turn out, especially when one considers that this is only the second monthly meeting for EJUG.&#160; It was a pretty basic talk, and didn’t dive to deeply [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to all who attended my “Induction into the Android Army” talk this afternoon at the monthly <a href="http://groups.google.com/group/ejug">Edmonton Java User’s Group</a> meeting.&#160; I’d say it was a good turn out, especially when one considers that this is only the second monthly meeting for EJUG.&#160; It was a pretty basic talk, and didn’t dive to deeply into the “fun” Android stuff.&#160; If anybody from EJUG wants a follow up presentation that’s a bit more in depth, give a shout out on the EJUG mailing list.&#160; If there is enough interest, I’d be happy to put something together.
<p>If you want to <a href="http://developer.android.com/resources/samples/NotePad/index.html">browse the code</a> and don’t want to download the Android SDK, you can do so at the Android website.&#160; Otherwise if you have downloaded the SDK,&#160; you can the samples/Notepad folder.&#160; For those who want the PowerPoint slide deck, please hang tight and I’ll get a link to that shortly.&#160; Basil already has a copy of it, and he’ll probably post it to the Google Group shortly as well.</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/06/GoogleAndroidarmy.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Google-Android-army" border="0" alt="Google-Android-army" src="http://www.opgenorth.net/wp-content/uploads/2010/06/GoogleAndroidarmy_thumb.jpg" width="244" height="152" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android at the Edmonton Java User Group</title>
		<link>http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=android-at-the-edmonton-java-user-group</link>
		<comments>http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 03:51:42 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/</guid>
		<description><![CDATA[Just a heads up for those interested:&#160; On Tuesday, June 15th the Edmonton Java User’s Group is having it’s monthly meeting at noon at the Canadian Western Bank Building.&#160; The speaker is none other than yours truly.&#160; I’ll be giving a brief introduction to application development to Android, using my trusty G1 and IntelliJ. It’s [...]]]></description>
			<content:encoded><![CDATA[<p>Just a heads up for those interested:&#160; On Tuesday, June 15th the Edmonton Java User’s Group is having it’s monthly meeting at noon at the Canadian Western Bank Building.&#160; The speaker is none other than yours truly.&#160; I’ll be giving a brief introduction to application development to Android, using my trusty G1 and IntelliJ.</p>
<p>It’s free to attend, so stop by if you’re so inclined.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Tulips are Lovely this Time of Year</title>
		<link>http://www.opgenorth.net/2010/05/30/the-tulips-are-lovely-this-time-of-year/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-tulips-are-lovely-this-time-of-year</link>
		<comments>http://www.opgenorth.net/2010/05/30/the-tulips-are-lovely-this-time-of-year/#comments</comments>
		<pubDate>Sun, 30 May 2010 16:44:13 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Edmonton]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/05/30/the-tulips-are-lovely-this-time-of-year/</guid>
		<description><![CDATA[&#160; You have to love spring time in Alberta.&#160; The tulips have such a contrast against the snow at 21:30 on a Saturday evening:]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>You have to love spring time in Alberta.&#160; The tulips have such a contrast against the snow at 21:30 on a Saturday evening:</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/05/omvt.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="omvt" border="0" alt="omvt" src="http://www.opgenorth.net/wp-content/uploads/2010/05/omvt_thumb.jpg" width="364" height="484" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/05/30/the-tulips-are-lovely-this-time-of-year/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gotta Love JetBrains</title>
		<link>http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=gotta-love-jetbrains</link>
		<comments>http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/#comments</comments>
		<pubDate>Sun, 23 May 2010 03:22:29 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/</guid>
		<description><![CDATA[Gotta love companies that &#8220;get it&#8221;.  Late last night I was hacking away on some Android stuff using IntelliJ 9.0.2 (on Ubuntu 10.04). For reasons unknown to me, none of my breakpoints seemed to be working.  In fact, IntelliJ just didn&#8217;t seem to be working.  I narrowed it down to the breakpoints I was setting [...]]]></description>
			<content:encoded><![CDATA[<p>Gotta love companies that &#8220;get it&#8221;.  Late last night I was hacking away on some Android stuff using IntelliJ 9.0.2 (on Ubuntu 10.04). For reasons unknown to me, none of my breakpoints seemed to be working.  In fact, IntelliJ just didn&#8217;t seem to be working.  I narrowed it down to the breakpoints I was setting &#8211; it seemed that every time the breakpoints were being hit.  I managed to narrow it down to this error:</p>
<blockquote><p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="border-collapse: collapse; color: #444444; font-family: arial,sans-serif; font-size: 13px;">[ 166030]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; null<br />
java.lang.UnsupportedOperationException<br />
at com.sun.tools.jdi.ReferenceTypeImpl.sourceDebugExtension(ReferenceTypeImpl.java:774)<br />
at org.jetbrains.plugins.ruby.jruby.debug.JRubyPositionManager.getPath(JRubyPositionManager.java:141)<br />
at org.jetbrains.plugins.ruby.jruby.debug.JRubyPositionManager.getPsiFileByLocation(JRubyPositionManager.java:156)<br />
at org.jetbrains.plugins.ruby.jruby.debug.JRubyPositionManager.getSourcePosition(JRubyPositionManager.java:51)<br />
at com.intellij.debugger.engine.CompoundPositionManager.getSourcePosition(CompoundPositionManager.java:51)<br />
at com.intellij.debugger.engine.ContextUtil.getSourcePosition(ContextUtil.java:63)<br />
at com.intellij.debugger.impl.DebuggerSession$MyDebugProcessListener$2.compute(DebuggerSession.java:462)<br />
at com.intellij.debugger.impl.DebuggerSession$MyDebugProcessListener$2.compute(DebuggerSession.java:460)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl$3.run(PsiDocumentManagerImpl.java:298)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl$4.run(PsiDocumentManagerImpl.java:321)<br />
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:695)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl.commitAndRunReadAction(PsiDocumentManagerImpl.java:317)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl.commitAndRunReadAction(PsiDocumentManagerImpl.java:296)<br />
at com.intellij.debugger.impl.DebuggerSession$MyDebugProcessListener.paused(DebuggerSession.java:460)<br />
at com.intellij.debugger.engine.DebugProcessAdapterImpl.paused(DebugProcessAdapterImpl.java:28)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br />
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />
at java.lang.reflect.Method.invoke(Method.java:616)<br />
at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:87)<br />
at com.intellij.util.EventDispatcher.access$100(EventDispatcher.java:33)<br />
at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:64)<br />
at $Proxy84.paused(Unknown Source)<br />
at com.intellij.debugger.engine.SuspendManagerImpl.notifyPaused(SuspendManagerImpl.java:306)<br />
at com.intellij.debugger.engine.SuspendManagerImpl.b(SuspendManagerImpl.java:299)<br />
at com.intellij.debugger.engine.SuspendManagerImpl.voteSuspend(SuspendManagerImpl.java:318)<br />
at com.intellij.debugger.engine.DebugProcessEvents$1.contextAction(DebugProcessEvents.java:412)<br />
at com.intellij.debugger.engine.events.SuspendContextCommandImpl.action(SuspendContextCommandImpl.java:62)<br />
at com.intellij.debugger.engine.events.DebuggerCommandImpl.run(DebuggerCommandImpl.java:44)<br />
at com.intellij.debugger.engine.DebuggerManagerThreadImpl.processEvent(DebuggerManagerThreadImpl.java:148)<br />
at com.intellij.debugger.engine.DebuggerManagerThreadImpl.processEvent(DebuggerManagerThreadImpl.java:36)<br />
at com.intellij.debugger.impl.InvokeThread.run(InvokeThread.java:135)<br />
at com.intellij.debugger.impl.InvokeThread$WorkerThreadRequest.run(InvokeThread.java:52)<br />
at com.intellij.openapi.application.impl.ApplicationImpl$5.run(ApplicationImpl.java:329)<br />
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)<br />
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)<br />
at java.util.concurrent.FutureTask.run(FutureTask.java:166)<br />
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)<br />
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)<br />
at java.lang.Thread.run(Thread.java:636)<br />
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:125)<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; IntelliJ IDEA 9.0.2  Build #IU-95.66<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; JDK: 1.6.0_18<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; VM: OpenJDK Server VM<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; Vendor: Sun Microsystems Inc.<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; OS: Linux<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; Last Action: Debug</span></span></p></blockquote>
<p>So, the problem to me seemed to be something wonky with IntelliJ.  I e-mailed Jetbrains, explaining the symptoms and the above stack trace.  This morning, I was pleased to find an e-mail from Serge  at Jetbrains.  He suggests disabling the Ruby plug-in that I have installed.</p>
<p>BINGO!</p>
<p>Worked like a charm.  Problem goes away, and in less than 12 hours since I asked for help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Update to HistoricalBuildings</title>
		<link>http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=quick-update-to-historicalbuildings</link>
		<comments>http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 19:36:37 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/</guid>
		<description><![CDATA[I just uploaded an update to HistoricalBuildings.&#160; The list of historical buildings used to be sorted alphabetically, by name.&#160; Now they are sorted by the distance from your current location (assuming the GPS can figure that out).]]></description>
			<content:encoded><![CDATA[<p>I just <a href="http://www.opgenorth.net/misc/HistoricalBuildings.apk">uploaded an update</a> to <a href="http://github.com/topgenorth/historicalbuildings">HistoricalBuildings</a>.&nbsp; The list of historical buildings used to be sorted alphabetically, by name.&nbsp; Now they are sorted by the distance from your current location (assuming the GPS can figure that out).</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=fd558971-287a-8b68-8a02-ced06dd1630f" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YEG OpenData and their Historical Buildings on your Android phone</title>
		<link>http://www.opgenorth.net/2010/04/08/historical-buildings/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=historical-buildings</link>
		<comments>http://www.opgenorth.net/2010/04/08/historical-buildings/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 05:36:24 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=249</guid>
		<description><![CDATA[Well, for the brave, criminally insane, curious, or otherwise bored I have a alpha version of Historical Buildings – download the APK if you want to try it out.&#160; This is just, at this time, the application just shows a simple list of historical buildings in Edmonton (according to the City of Edmonton&#8217;s Open Data [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/worksonmymachinestarburst.jpg"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="works-on-my-machine-starburst" border="0" alt="works-on-my-machine-starburst" align="left" src="http://www.opgenorth.net/wp-content/uploads/2010/04/worksonmymachinestarburst_thumb.jpg" width="154" height="149" /></a> Well, for the brave, criminally insane, curious, or otherwise bored I have a alpha version of Historical Buildings – <a href="http://www.opgenorth.net/misc/HistoricalBuildings.apk">download the APK</a> if you want to try it out.&#160; This is just, at this time, the application just shows a simple list of <a href="http://data.edmonton.ca/DataBrowser.aspx?Container=coe&amp;EntitySet=HistoricalBuildings">historical buildings</a> in Edmonton (according to the <a href="http://data.edmonton.ca/">City of Edmonton&#8217;s Open Data Catalogue</a>).&#160; Click on a building, and it will show you on Google Maps where the building is in the city.&#160; The <a href="http://github.com/topgenorth/historicalbuildings">code</a> for this is, in my opinion (and to say the least) &#8211; rough.&#160; But it is a start.&#160; Definitely needs some improvement.&#160; Or maybe I just need to change my thinking to more of a Android/Java mindset.&#160; Anyway the usual caveats apply:&#160; use at your own risk / batteries not include / do not eat / void where prohibited by law, etc, etc, etc</p>
<p> Anyway, if you use it let me know.&#160; There are bound to be bugs, but hey it “Works for me!”.&#160; Time to work on some other stuff for it.&#160; I think the next neat thing is would be to show the closest building to you.&#160; Either that, or handle some of the seedy code issues and infrastructure stuff that bugs me.&#160; </p>
<table border="0" cellspacing="0" cellpadding="2" width="660">
<tbody>
<tr>
<td valign="top" width="326">Screen shot of the list of historical buildings</td>
<td valign="top" width="48">&#160;</td>
<td valign="top" width="287">Clicking on a build shows you where the building is</td>
</tr>
<tr>
<td valign="top" width="326">
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList.png"><img style="display: inline; margin-left: 0px; margin-right: 0px" class="aligncenter size-full wp-image-209" title="YegDataList.png" alt="" align="left" src="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList.png" width="320" height="480" /></a></p>
</td>
<td valign="top" width="48">&#160;</td>
<td valign="top" width="287">
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList1.png"><img style="display: inline; margin-left: 0px; margin-right: 0px" class="aligncenter size-full wp-image-226" title="MapList.png" alt="" align="right" src="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList1.png" width="320" height="480" /></a></p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList.png"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/08/historical-buildings/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android, MapView, and your Google apiKey: Part 1</title>
		<link>http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=android-mapview-and-your-google-apikey-part-1</link>
		<comments>http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 03:52:38 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/</guid>
		<description><![CDATA[Thanks to the MapView, it’s drop dead easy to put Google Maps into your application.&#160; There are lots of posts out there how to do it.&#160; Interestingly (to me anyway), when I did a quick search of the Android developers mailing list, I was surprised to see that a lot of people had the same [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList1.png"><img style="display: inline; margin-left: 10px; margin-right: 0px" title="MapList" border="0" alt="MapList" align="right" src="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList_thumb1.png" width="164" height="244" /></a></p>
<p>Thanks to the <a href="http://developer.android.com/guide/tutorials/views/hello-mapview.html">MapView</a>, it’s drop dead easy to put Google Maps into your application.&#160; There are lots of posts out there how to do it.&#160; Interestingly (to me anyway), when I did a quick search of the Android developers mailing list, I was surprised to see that a lot of people had the same problem:&#160; basically, when you look at your MapView, you end up with a grid of white squares.&#160; It kind of sucks.&#160; There are a lot of blog posts and articles out there on how to fix this problem, but this one is for me, and to help me remember it.</p>
<p>The trick to fixing this is setting your Google Maps API key.&#160; Note the layout below:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 76.6%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 210px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;?</span><span style="color: #800000">xml</span> <span style="color: #ff0000">version</span><span style="color: #0000ff">=&quot;1.0&quot;</span> <span style="color: #ff0000">encoding</span><span style="color: #0000ff">=&quot;utf-8&quot;</span>?<span style="color: #0000ff">&gt;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">RelativeLayout</span> <span style="color: #ff0000">xmlns:android</span><span style="color: #0000ff">=&quot;http://schemas.android.com/apk/res/android&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>     <span style="color: #ff0000">android:id</span><span style="color: #0000ff">=&quot;@+id/mainlayout&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>     <span style="color: #ff0000">android:orientation</span><span style="color: #0000ff">=&quot;vertical&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     <span style="color: #ff0000">android:layout_width</span><span style="color: #0000ff">=&quot;fill_parent&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     <span style="color: #ff0000">android:layout_height</span><span style="color: #0000ff">=&quot;fill_parent&quot;</span> <span style="color: #0000ff">&gt;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">com.google.android.maps.MapView</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>         android:id=&quot;@+id/mapview&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>         android:layout_width=&quot;fill_parent&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>         android:layout_height=&quot;fill_parent&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>         android:clickable=&quot;true&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>         android:apiKey=&quot;Your Maps API Key&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>     <span style="color: #0000ff">/&gt;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">RelativeLayout</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
</p></div>
</div>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/hotelkey.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="hotel-key" border="0" alt="hotel-key" align="left" src="http://www.opgenorth.net/wp-content/uploads/2010/04/hotelkey_thumb.jpg" width="71" height="63" /></a></p>
<p>In particular, pay attention to line #13.&#160; What you have to do is create a Google Maps API key, and then paste it in there.&#160; That’s simple.&#160; How do you do that?&#160; Well it’s simple too, but not as simple as it could be.&#160; The first thing you need to do is to <a href="http://developer.android.com/guide/publishing/app-signing.html">sign your application</a>.&#160; This isn’t a big deal, you have to sign your application before you can publish it anyway.&#160; Android will NOT install an application otherwise.</p>
<p>So, it seems we have two steps here:</p>
<ol>
<li>Sign your application </li>
<li>Use your signed application to get a Google Maps apiKey. </li>
</ol>
<p>Generate a private key.&#160; Keep this safer, as if it were the Holy Grail.&#160; Lose this, and as far as the public is concerned, you’re locked out from your own application – you will not be able to update it.&#160; The image below will show you the steps to go through</p>
<ol>
<pre class="csharpcode"><span class="str">&quot;C:\Program Files (x86)\Java\jdk1.6.0_19\bin\keytool&quot;</span> -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 10000</pre>
</ol>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/keytoolsample1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="keytoolsample" border="0" alt="keytoolsample" src="http://www.opgenorth.net/wp-content/uploads/2010/04/keytoolsample_thumb1.png" width="594" height="309" /></a></p>
<p>Once you have that done, build your application (in release mode).&#160; I leave this as an exercise for the reader.</p>
<p>Now that you have your application built, you need to sign it.&#160; This is where jarsigner comes in:</p>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/jarsigner1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="jarsigner" border="0" alt="jarsigner" src="http://www.opgenorth.net/wp-content/uploads/2010/04/jarsigner_thumb1.png" width="513" height="267" /></a>And the final step is to zipalign your&#160; APK.&#160; You have to do zipalign last.&#160; Basically, you do zipalign for performance reasons.&#160; If you want to know more, RTFM.</p>
<pre class="csharpcode">C:\android-sdk-windows\tools\zipalign -v 4 HistoricalBuildings-unalign.apk HistoricalBuildings.apk</pre>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/zipalign1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="zipalign" border="0" alt="zipalign" src="http://www.opgenorth.net/wp-content/uploads/2010/04/zipalign_thumb1.png" width="513" height="267" /></a></p>
<p>Now, of course, both Eclipse and IntelliJ will handle these steps for you.&#160; But where is the fun in that?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MVP in C# For 2010</title>
		<link>http://www.opgenorth.net/2010/04/05/mvp-in-c-for-2010/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mvp-in-c-for-2010</link>
		<comments>http://www.opgenorth.net/2010/04/05/mvp-in-c-for-2010/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 02:15:12 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/04/05/mvp-in-c-for-2010/</guid>
		<description><![CDATA[I guess I forgot to mention this:&#160; On April 1, 2010, I received an e-mail from Microsoft that my MVP in C# was renewed for the third year.&#160; This makes me a happy, because with Resharper 5 (and therefore Visual Studio 2010) and Windows Mobile 7, I’m hoping that this will be an exciting year [...]]]></description>
			<content:encoded><![CDATA[<p>I guess I forgot to mention this:&#160; On April 1, 2010, I received an e-mail from Microsoft that my <a href="https://mvp.support.microsoft.com/profile=31F1E181-79EC-4497-B792-FA8F83D34936">MVP in C#</a> was renewed for the third year.&#160; This makes me a happy, because with Resharper 5 (and therefore Visual Studio 2010) and Windows Mobile 7, I’m hoping that this will be an exciting year for the .NET crowd.&#160; </p>
<p>Well, okay, perhaps I didn’t forget.&#160; Given that it was April 1st when I got the e-mail, I like to give things a few days to settle down.&#160; I am acquainted with some mischievous pranksters who would think it was a funny April Fools joke.</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/MVP_Horizontal_FullColor.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="MVP_Horizontal_FullColor" border="0" alt="MVP_Horizontal_FullColor" src="http://www.opgenorth.net/wp-content/uploads/2010/04/MVP_Horizontal_FullColor_thumb.png" width="240" height="97" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/05/mvp-in-c-for-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Me, Android, and YEG OpenData</title>
		<link>http://www.opgenorth.net/2010/04/04/me-android-and-yeg-opendata/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=me-android-and-yeg-opendata</link>
		<comments>http://www.opgenorth.net/2010/04/04/me-android-and-yeg-opendata/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 20:52:35 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=207</guid>
		<description><![CDATA[Not that long ago, the City of Edmonton announced it&#8217;s Open Data Catalogue.  I noticed that one of the data catalogues was a list of historical buildings in the city.  Yeah, I know that some people in other cities might consider this a pretty weak list.  I mean, the oldest building in Edmonton isn’t even [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList1.png"><img style="display: inline; margin-left: 10px; margin-right: 0px; border: 0px initial initial;" title="YegDataList" src="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList_thumb1.png" border="0" alt="YegDataList" width="164" height="244" align="right" /></a>Not that long ago, the City of Edmonton announced it&#8217;s <a href="http://data.edmonton.ca/">Open Data Catalogue</a>.  I noticed that one of the data catalogues was a list of <a href="http://data.edmonton.ca/DataBrowser.aspx?Container=coe&amp;EntitySet=HistoricalBuildings">historical buildings</a> in the city.  Yeah, I know that some people in other cities might consider this a pretty weak list.  I mean, the oldest building in Edmonton isn’t even 150 years old.  I’d wager that some parts of the world consider 150 year old buildings to be “new construction”.  Anyway, as I&#8217;ve been dabbling with <a href="http://developer.android.com">Android</a> now for about the past year, I thought a handy little project to try out would be to write an app for Android that would show me where the historical buildings are in the city.</p>
<p>I&#8217;ve got the foundation of a simple application started over a GitHub called, not surprisingly, <a href="http://github.com/topgenorth/historicalbuildings">Historical Buildings</a> (if you pull the source code, then just a heads up that I use <a href="http://www.jetbrains.com/idea/">IntelliJ</a> for my Android development).  This application currently works in the emulator, my next step is to installing it on my phone and trying it out for real.  Right now all the application does is present you with a list of buildings.  You click on one, and you&#8217;ll see on Google Maps where the building.</p>
<p>Some other ideas for features that may or may not happen:</p>
<ul>
<li>Figure out the whole unit testing story in Android.  Then setup a build script.  Then a build server.  CI rocks, but as I’m trying to learn the Android framework and figure out what all the parts are, I’m not to focused on that at the moment.</li>
<li>Don’t always fetch the data – store it locally
<ul>
<li>I don’t think the way I’m parsing the JSON result is very efficient or “proper”, but it does get the job done.</li>
</ul>
</li>
<li>Notify the user when they are within a certain distance of a historical building.</li>
<li>Currently YEG has a PDF explaining the significance of the building.  Not very friendly/convenient for mobile devices.  Need something better.
<ul>
<li>One thought would be to create Wikipedia entries and link to that.</li>
<li>Another thought is to petition the City of Edmonton to convert their PDF’s to a more neutral format (HTML anyone)?</li>
<li>The <a href="http://www.epl.ca">Edmonton Public Library</a> has some information about the “<a href="http://www.epl.ca/EPLPhotoBuildings.cfm">Lost Building of Edmonton</a>”.  Maybe incorporate that somehow – perhaps showing what buildings used to exist at a given address?</li>
</ul>
</li>
<li>Perhaps allow the user to update their coordinates for YEG’s historical buildings.  I’ve notice (on the emulator) that sometimes the lat/long isn’t exactly accurate.  If you look at the image below for the old Arlington Apartments, you notice that the marker should be over the pile of rubble slightly to the left of where it currently is.</li>
<li>Maybe include buildings that aren’t necessarily designated as historical, but are interesting architecturally or otherwise.</li>
<li>Instead of using YEG OpenData, perhaps an independent cloud based data store (<a href="http://www.microsoft.com/windowsazure/">Azure</a> maybe?)</li>
</ul>
<p>If you’ve got any other suggestions, I’m happy to hear them.</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="MapList" src="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList_thumb.png" border="0" alt="MapList" width="219" height="326" /></a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=e1a8a615-56c6-883e-b52b-35084586f039" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/04/me-android-and-yeg-opendata/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fun in SoCal</title>
		<link>http://www.opgenorth.net/2010/03/19/fun-in-riverside/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=fun-in-riverside</link>
		<comments>http://www.opgenorth.net/2010/03/19/fun-in-riverside/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 22:43:19 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/03/19/fun-in-riverside/</guid>
		<description><![CDATA[Just sitting here at Legoland in Carlsbad, CA waiting for my kids to get off Coastersaurus. Just thought I&#8217;d make a mention about my presentation on SOLID to the Inland Empire .NET User Group. This is my third year in a row as their March speaker. I&#8217;m glad to say that for the third year [...]]]></description>
			<content:encoded><![CDATA[<p>Just sitting here at <a href="http://www.legoland.com/">Legoland</a> in Carlsbad, CA waiting for my kids to get off Coastersaurus. Just thought I&#8217;d make a mention about my presentation on SOLID to the <a href="http://iedotnetug.org">Inland Empire .NET User</a> Group. This is my third year in a row as their March speaker. I&#8217;m glad to say that for the third year in a row they haven&#8217;t chased me away with pitch-forks and torches. Largely based on that reason, I&#8217;ll say the presentation went well. Well, that and the fact that the concepts did seem to be understood and there were no technical glitches.</p>
<p>Thanks James and his crew for agreeing to shift from the 2nd Tuesday to the 3rd Tuesday to accommodate my travel. </p>
<p>Here is a zip of the <a href="http://www.opgenorth.net/wp-content/uploads/2010/03/InlandEmpire.zip">code and slide deck</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/03/19/fun-in-riverside/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
