<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Opgenorth.NET</title>
	
	<link>http://www.opgenorth.net</link>
	<description>A software geek torn apart by the dicotomy of .NET by day, Ruby and Android by night</description>
	<lastBuildDate>Tue, 01 May 2012 01:26:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/opgenorth/blog" /><feedburner:info uri="opgenorth/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Moving…</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/iVX2U15scUQ/</link>
		<comments>http://www.opgenorth.net/2012/04/30/moving/#comments</comments>
		<pubDate>Tue, 01 May 2012 01:26:01 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=387</guid>
		<description><![CDATA[Well, it seems that due to issues / problem / concerns with my current host, I have to move. On the plus side this does give me an excuse to try out Octopress. I will say that I was impressed with the whole process. It only took about an hour to export the content from [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it seems that due to issues / problem / concerns with my current host, I have to move. On the plus side this does give me an excuse to try out Octopress.  I will say that I was impressed with the whole process. It only took about an hour to export the content from this old site, setup an Octopress site, and then put that up on Heroku.</p>
<p>It will probably take a while for the DNS to propagate, but regardless after May 4, 2012 this old web site will no longer be available.</p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/iVX2U15scUQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2012/04/30/moving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2012/04/30/moving/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=moving</feedburner:origLink></item>
		<item>
		<title>Using AutoCompleteTextView and SimpleCursorAdapter</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/-f34vYN14mo/</link>
		<comments>http://www.opgenorth.net/2011/09/06/using-autocompletetextview-and-simplecursoradapter-2/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 03:30:09 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=372</guid>
		<description><![CDATA[I have a simple little pet project (for Android), and one of the things I wanted to do was to to have a text field that would show me previous values as I typed in the text box (see screenshot below). Of course, this control is already a part of the Android SDK &#8211; it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I have a simple little pet project (for Android), and one of the things I wanted to do was to to have a text field that would show me previous values as I typed in the text box (see screenshot below). Of course, this control is already a part of the Android SDK &#8211; it&#8217;s our good friend the <a href="http://developer.android.com/reference/android/widget/AutoCompleteTextView.html">AutoCompleteTextView</a>. </p>
<p><img src="http://www.opgenorth.net/wp-content/uploads/2011/09/AutoCompleteTextView.png" /></p>
<p>To populate the drop-down, I have an SQLite table called vehicle_descriptions, which looks something like the screenshot below. What I want is for a given vehicle (a value derived from another control on my Activity) to show me the value of the description column in the table.</p>
<p><img src="http://www.opgenorth.net/wp-content/uploads/2011/09/vehicle_descriptions_table.png" /></p>
<p>At first I started out by sub-classing <a href="http://developer.android.com/reference/android/widget/CursorAdapter.html">CursorAdapter</a>, but that just seemed to be a bit to heavy. What I had worked, but it seemed like there should be a simpler way to do this. <a href="http://developer.android.com/reference/android/widget/CursorAdapter.html">CursorAdapter</a> is probably a better choice for more elaborate requirements (maybe displaying images or doing some calculations), but in this case it struck me as overkill &#8211; I just wanted to do a simple lookup against a table. Turns out I was right &#8211; the easy way is to just use a <a href="http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html">SimpleCursorAdapter</a>.</p>
<pre>
    &lt;AutoCompleteTextView android:id=&quot;@+id/description&quot;
                          android:completionThreshold=&quot;1&quot;
                          android:layout_height=&quot;wrap_content&quot;
                          android:layout_width=&quot;fill_parent&quot;
                          android:hint=&quot;Trip Description (optional)&quot;
                          android:lines=&quot;1&quot; /&gt;
</pre>
<p>To setup my control, I have created a function that I call inside onCreate() of my Activity. Here is the code, and then I will explain it in more detail:</p>
<pre>
    private void initializeDescription() {
        _descriptionText = (AutoCompleteTextView) findViewById(R.id.description);
        final int[] to = new int[]{android.R.id.text1};
        final String[] from = new String[]{VehicleDescriptionsTable.DESCRIPTION};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_dropdown_item_1line,
                null,
                from,
                to);

        // This will provide the labels for the choices to be displayed in the AutoCompleteTextView
        adapter.setCursorToStringConverter(new SimpleCursorAdapter.CursorToStringConverter() {
            @Override
            public CharSequence convertToString(Cursor cursor) {
                final int colIndex = cursor.getColumnIndexOrThrow(VehicleDescriptionsTable.DESCRIPTION);
                return cursor.getString(colIndex);
            }
        });

        // This will run a query to find the descriptions for a given vehicle.
        adapter.setFilterQueryProvider(new FilterQueryProvider() {
            @Override
            public Cursor runQuery(CharSequence description) {
                String vehicle = getSelectedVehicle();
                Cursor managedCursor = _helper.getDescriptionsFor(vehicle, description.toString());
                Log.d(TAG, "Query has " + managedCursor.getCount() + " rows of description for " + vehicle);
                return managedCursor;
            }
        });

        _descriptionText.setAdapter(adapter);
    }
</pre>
<p>So, first things first. We setup two arrays. The to[] array holds a list of resource id&#8217;s that will be used to display the text values in the drop down. I just want to display the items in a list, so I used android.R.id.text1. The other array, from[] hold the name of the column that will hold the values to display. As I mentioned above, I want to show the values in the description column.</p>
<p>After that we new up a <a href="http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html">SimpleCursorAdapter</a>. The line itself should be pretty obvious. The null that we&#8217;re passing into the constructor is because we don&#8217;t yet have a cursor available. In this simple case, the 3rd parameter is android.R.layout.simple_dropdown_item1line will suffice. If we were making our own view for display description, then we&#8217;d pass in the resource id of the control that would display the text value.</p>
<p>After instantiating the adapter, we provide some direction as to how we should convert the cursor to a string value that can be displayed. We do this with a <a href="http://developer.android.com/reference/android/widget/SimpleCursorAdapter.CursorToStringConverter.html">CursorStringConverter</a>. All we do here is retrieve the value of the description column in the cursor as a string and return that.</p>
<p>The final part is to use a <a href="http://developer.android.com/reference/android/widget/FilterQueryProvider.html">FilterQueryProvider</a> to get a Cursor holding the rows and columns we want to display &#8211; note that I&#8217;m doing this by actually running a query each time. There are probably more efficient ways to do it (and if you have a better way I&#8217;d love to hear it). The line _helper.getDescriptionsFor() will return a cursor holding all the rows from my vehicle_descriptions table for a given vehicle. The user will select the vehicle from my vehicle spinner. I created the method getSelectedVehicle() as a convenience method to return the text that is selected in the spinner.</p>
<p>And of course, the final thing is to provide the adapter to the <a href="http://developer.android.com/reference/android/widget/AutoCompleteTextView.html">AutoCompleteTextView</a>.</p>
<p>For the sake of completeness, here is what getDescriptionsFor() looks like. The _activity below is a reference to whatever Activity. The code here is should be pretty simple &#8211; we just return a managedQuery from the ContentProvider for this application. Note that with our projection we return both the _id column and the description column. The <a href="http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html">SimpleCursorAdapter</a> requires the _id filed be present. Anyway, without further adieu &#8211; the code:</p>
<pre>
    public Cursor getDescriptionsFor(String vehicle, String descriptionFragment) {
        String[] projection = new String[]{VehicleDescriptionsTable._ID, VehicleDescriptionsTable.DESCRIPTION};
        String[] selectionArgs = new String[]{vehicle};

        StringBuffer selection = new StringBuffer(VehicleDescriptionsTable.DESCRIPTION)
                .append(&quot; LIKE '&quot;)
                .append(descriptionFragment)
                .append(&quot;%' AND &quot;)
                .append(VehicleDescriptionsTable.VEHICLE)
                .append(&quot;=?&quot;);
        String sortOrder = VehicleDescriptionsTable.DESCRIPTION;

        return _activity.managedQuery(VehicleDescriptionsTable.VEHICLE_DESCRIPTION_URI,
                projection,
                selection.toString(),
                selectionArgs, sortOrder);
    }
</pre>
<p>There you have it &#8211; <a href="http://developer.android.com/reference/android/widget/AutoCompleteTextView.html">AutoCompleteTextView</a> and <a href="http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html">SimpleCursorAdapter</a> together at last. </p></p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/-f34vYN14mo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2011/09/06/using-autocompletetextview-and-simplecursoradapter-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2011/09/06/using-autocompletetextview-and-simplecursoradapter-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-autocompletetextview-and-simplecursoradapter-2</feedburner:origLink></item>
		<item>
		<title>Slide deck and code from Prairie Developers Conference 2011</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/PMQvXnphqz4/</link>
		<comments>http://www.opgenorth.net/2011/06/16/slide-deck-and-code-from-prairie-developers-conference-2011/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 02:06:23 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2011/06/16/slide-deck-and-code-from-prairie-developers-conference-2011/</guid>
		<description><![CDATA[For those wanted the slide-decks and code from my talks at Prairie Developer&#8217;s Conference 2011, you can find them up on GitHub. Thanks to all who attended.&#160; Maybe we&#8217;ll see you again next year.]]></description>
			<content:encoded><![CDATA[<p>For those wanted the slide-decks and code from my talks at <a href="http://www.prairiedevcon.com/">Prairie Developer&#8217;s Conference 2011</a>, you can find them up on <a href="https://github.com/topgenorth/PrDC2011">GitHub</a>. Thanks to all who attended.&nbsp; Maybe we&#8217;ll see you again next year.</p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/PMQvXnphqz4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2011/06/16/slide-deck-and-code-from-prairie-developers-conference-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2011/06/16/slide-deck-and-code-from-prairie-developers-conference-2011/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=slide-deck-and-code-from-prairie-developers-conference-2011</feedburner:origLink></item>
		<item>
		<title>Gifts for Dogs</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/z2K4adfD3GM/</link>
		<comments>http://www.opgenorth.net/2011/04/06/gifts-for-dogs/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 22:48:57 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Samoyed]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2011/04/06/gifts-for-dogs/</guid>
		<description><![CDATA[Casey the Samoyed gets a spring gift &#8211; a portable steam cleaner for small parts of your carpet.]]></description>
			<content:encoded><![CDATA[<p><img style="display:block;margin-right:auto;margin-left:auto;" alt="image" src="http://www.opgenorth.net/wp-content/uploads/2011/04/wpid-Apr_6_2011_8285.jpg" /></p>
<p>Casey the Samoyed gets a spring gift &#8211; a portable steam cleaner for small parts of your carpet.</p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/z2K4adfD3GM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2011/04/06/gifts-for-dogs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2011/04/06/gifts-for-dogs/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=gifts-for-dogs</feedburner:origLink></item>
		<item>
		<title>Picking Apart PDF with Ruby and Linux</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/WIY9pBz8S8k/</link>
		<comments>http://www.opgenorth.net/2011/03/17/picking-apart-pdf-with-ruby-and-linux/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 00:09:00 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=356</guid>
		<description><![CDATA[I ran into a curious problem for a side problem of mine where I had some information in PDF files, both text and images.&#160; What I want to do is display the information from the PDF&#8217;s on a mobile (Android) device.&#160; PDF isn&#8217;t exactly a mobile friendly format, so I got the idea use HTML.&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into a curious problem for a side problem of mine where I had some information in PDF files, both text and images.&#160; What I want to do is display the information from the PDF&#8217;s on a mobile (Android) device.&#160; PDF isn&#8217;t exactly a mobile friendly format, so I got the idea use HTML.&#160; The next trick then becomes how to get the content out of the PDF&#8217;s I want into HTML.&#160; Tux to the rescue!</p>
<p>As luck would have the, the utilities pdftotext and pdfimage will allow you to extract your text and images from a PDF (respectively).&#160; pdftotext was even nice enough to extract the text from the PDF and put it into an HTML document for me. (To get these on your Ubuntu box:&#160;&#160; sudo apt-get install xpdf-utils).&#160; Once I had these apps installed, I used a bit of Ruby to automate the process &#8211; I had 65 PDF&#8217;s to convert and wasn&#8217;t crazy about the keystrokes involved for all 65 files.&#160; Net time to do all this was a comfortable couple of hours in front of my TV catching up on the backlog of shows on the PVR.&#160; How is that for multi-tasking?</p>
<p>Here is the Ruby script I wrote.&#160; I welcome suggestions / improvements / enhancements / comments / cash donations / bottles of scotch:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/ruby</span>
<span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">glob</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;*.txt&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span>file<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">glob</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;*.jpg&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span>file<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">glob</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;*.pdf&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span>
	basename = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">basename</span><span style="color:#006600; font-weight:bold;">&#40;</span>file,<span style="color:#996600;">'.*'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">directory</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>basename<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
		<span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">glob</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;./#{basename}/*.*&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file2<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span>file2<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">end</span>
	<span style="color:#9966CC; font-weight:bold;">else</span>
	  <span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">mkdir</span> basename <span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">directory</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>basename<span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
	<span style="color:#CC0066; font-weight:bold;">system</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;pdftotext&quot;</span>, <span style="color:#996600;">&quot;-htmlmeta&quot;</span>, file, <span style="color:#996600;">&quot;./#{basename}/#{basename}.html&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#CC0066; font-weight:bold;">system</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;pdfimages&quot;</span>, <span style="color:#996600;">&quot;-j&quot;</span>,  file, <span style="color:#996600;">&quot;./#{basename}/&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Converted #{file} to text and extracted images to #{basename}.&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/WIY9pBz8S8k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2011/03/17/picking-apart-pdf-with-ruby-and-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2011/03/17/picking-apart-pdf-with-ruby-and-linux/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=picking-apart-pdf-with-ruby-and-linux</feedburner:origLink></item>
		<item>
		<title>Purging your Privates (MSMQ with Powershell)</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/gtTvPOilsHg/</link>
		<comments>http://www.opgenorth.net/2011/03/01/purging-your-privates-msmq-with-powershell/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 15:31:01 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[programming powershell]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=353</guid>
		<description><![CDATA[A project I’m currently on makes heavy use of MSMQ and private queues.  Every so often, it’s necessary to purge messages from the queue during development. I got tired of always using the MMC snap-in to perform this task, so I whipped up this quick PowerShell script to handle the dirty work for me.  Granted, [...]]]></description>
			<content:encoded><![CDATA[<p>A project I’m currently on makes heavy use of MSMQ and private queues.  Every so often, it’s necessary to purge messages from the queue during development. I got tired of always using the MMC snap-in to perform this task, so I whipped up this quick PowerShell script to handle the dirty work for me.  Granted, it’s pretty crude, but it gets the job done.  Any suggestions or improvements, feel free to let me know.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$queuename</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;.\private$\myprivatequeue&quot;</span>
<span style="color: #000000;">&#91;</span>Reflection.Assembly<span style="color: #000000;">&#93;</span>::<span style="color: #800000;">LoadWithPartialName</span><span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;System.Messaging&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Out-Null</span> 
<span style="color: #800080;">$queue</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> <span style="color: #008080; font-style: italic;">-TypeName</span> <span style="color: #800000;">&quot;System.Messaging.MessageQueue&quot;</span>
<span style="color: #800080;">$queue</span>.Path <span style="color: pink;">=</span> <span style="color: #800080;">$queuename</span>
<span style="color: #800080;">$messagecount</span> <span style="color: pink;">=</span> <span style="color: #800080;">$queue</span>.GetAllMessages<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.Length 
<span style="color: #800080;">$queue</span>.Purge<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> 
<span style="color: #008080; font-weight: bold;">Write-Host</span> <span style="color: #800000;">&quot;$queuename has been purged of $messagecount messages.&quot;</span> <span style="color: #008080; font-style: italic;">-ForegroundColor</span> Yellow</pre></td></tr></table></div>

<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/gtTvPOilsHg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2011/03/01/purging-your-privates-msmq-with-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2011/03/01/purging-your-privates-msmq-with-powershell/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=purging-your-privates-msmq-with-powershell</feedburner:origLink></item>
		<item>
		<title>WIND Mobile and my Nexus One</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/NxCZBB8XF58/</link>
		<comments>http://www.opgenorth.net/2010/12/20/wind-mobile-and-my-nexus-one/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 03:13:52 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[nexus one]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=351</guid>
		<description><![CDATA[Just recently I switch my mobile carrier from Rogers to WIND Mobile. Their Holiday Miracle plan was just to good to pass up &#8211; even paying the penalty to break my Rogers contract I will still save money in the long run. Anyway, once the number got transferred over, I didn&#8217;t have a 3G connection, [...]]]></description>
			<content:encoded><![CDATA[<p>Just recently I switch my mobile carrier from Rogers to <a title="WIND mobile" href="../../www.windmobile.ca">WIND Mobile</a>. Their <a title="Holiday Miracle Plan" href="http://www2.windmobile.ca/en/Pages/unlimitedtalktextdata.aspx">Holiday Miracle plan</a> was just to good to pass up &#8211; even paying the penalty to break my Rogers contract I will still save money in the long run.</p>
<p>Anyway, once the number got transferred over, I didn&#8217;t have a 3G connection, even after selecting the WIND Home APN. &nbsp;After a bit of google, it seems that what I had to do is to setup an APN. &nbsp;In case I can&#8217;t find it later, here are the APN settings:</p>
<table>
<tbody>
<tr>
<td>APN</td>
<td>mms.WINDmobile.ca</td>
</tr>
<tr>
<td>Proxy</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr>
<td>Port</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr>
<td>Username</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr>
<td>Password</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr>
<td>Server</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr>
<td>MMSC</td>
<td>http://mms.WINDmobile.ca</td>
</tr>
<tr>
<td>MMS proxy</td>
<td>74.115.197.70</td>
</tr>
<tr>
<td>MMS port</td>
<td>8080</td>
</tr>
<tr>
<td>MMC</td>
<td>302</td>
</tr>
<tr>
<td>MNC</td>
<td>490</td>
</tr>
<tr>
<td>Authentication type</td>
<td>&lt;Not set&gt;</td>
</tr>
<tr>
<td>APN type</td>
<td>mms</td>
</tr>
</tbody>
</table>
<p>After setting this up, bingo, got my 3G connection going.</p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/NxCZBB8XF58" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/12/20/wind-mobile-and-my-nexus-one/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2010/12/20/wind-mobile-and-my-nexus-one/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wind-mobile-and-my-nexus-one</feedburner:origLink></item>
		<item>
		<title>TFS 2010, VS2010 Database Projects, and CI</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/WqLOmw7VyME/</link>
		<comments>http://www.opgenorth.net/2010/11/29/tfs-2010-vs2010-database-projects-and-ci/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 21:19:00 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Continous Integration]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/11/29/tfs-2010-vs2010-database-projects-and-ci/</guid>
		<description><![CDATA[I’m currently working on a project where there are some functional tests that require a SQL Server database. Before in the past I’ve always handled this by using Redgate’s excellent SQL Server tools to create a monolithic script that would deploy the DB Schema, and then another set of scripts to set up the data.&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>I’m currently working on a project where there are some functional tests that require a SQL Server database. Before in the past I’ve always handled this by using Redgate’s excellent SQL Server tools to create a monolithic script that would deploy the DB Schema, and then another set of scripts to set up the data.&#160; Then it’s pretty trivial to use OSQL.EXE to run the scripts and setup the database.</p>
<p>However, in this case, I’m constrained to use the VS2010 database project and TFS Build.&#160; So, the trick for me became how to use TFS 2010 Team Build to deploy a fresh copy of the database before the functional tests are run.&#160; After a bit of jiggery-pokery, here is what I ended up doing.&#160; I’m sure that at some point in my future, I will have to do this again, and nothing helps my failing memory like writing it down.</p>
<p>First a rough overview:</p>
<ol>
<li>Declare some variables to hold the physical path of my .dbproj and the default data path for SQL Server. </li>
<li>Convert the source code control path of my .dbproj to the physical path on disk. </li>
<li>To help with debugging and diagnostics, write a build message with the location of the physical path of the .dbproj </li>
<li>Add an MSBuild task to my workflow that would deploy the .dbproj. </li>
</ol>
<p>Without further adieu, here is more details breakdown of the steps involved.</p>
<h4>Declare Variables</h4>
<p>So, first things first – declare the two variables I need to hold the physical path to the .dbproj file, and the directory for my SQL Server databases.&#160; This should be pretty simple and straight forward (assuming that the POS that is the “Workflow Designer” isn’t crashing VS2010 constantly).</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/11/image.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.opgenorth.net/wp-content/uploads/2010/11/image_thumb.png" width="1000" height="379" /></a></p>
<p>Once that is out of the way I scrolled down the pretty, crashy, workflow designer until I came across the <u>Compile and Test</u> sequence.&#160; At the very start of it I added a sequence that I called <u>Deploy Database</u>.&#160; Inside this sequence I added the following Team Foundation Build Activities:</p>
<h4>ConvertWorkspaceItem</h4>
<p>The point to this BuildActivity is to figure where the hell on the file system TFS put one of the files.&#160; Pretty straight forward:</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/11/image1.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.opgenorth.net/wp-content/uploads/2010/11/image_thumb1.png" width="691" height="192" /></a></p>
<h4>WriteBuildMessage</h4>
<p>Always nice to have a message in your log file to help with troubleshooting.&#160; Here’s what my WriteBuildMessage activity looks like.&#160; Notice that the message makes use of the “DbProjectPath” variable that we set above in the ConvertWorkspaceItemActivity.</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/11/image2.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.opgenorth.net/wp-content/uploads/2010/11/image_thumb2.png" width="687" height="146" /></a></p>
<h4>MSBuild</h4>
<p>This the working part of the the sequence.&#160; In here we use MSBuild to call the .dbproj and deploy a fresh copy of the database to SQL Server. Key properties to set:</p>
<ul>
<li>CommandLineArguments : this contains the properties to pass on the command line when deploying.&#160; You’ll want to provide these properties
<ul>
<li>/p:TargetDatabase=YOUR_DATABASE_NAME </li>
<li>/p:”DefaultDataPath=DIRECTORY_OF_DATABASE_FILES” </li>
<li>/p:”TargetConnectionString=YOUR_CONNECTION_STRING_FOR_THE_TARGET_DATABASE” </li>
<li>/p:DeployToDatabase=True </li>
</ul>
</li>
<li>Configuration : just specify which configuration in the solution to use. </li>
<li>DisplayName : what ever you want, this is how the MSBuild activity will be displayed in your sequence </li>
<li>LogFile : the name of the log file for the deploy </li>
<li>OutDir : the output directory </li>
<li>Project : Notice that this is the value of DbProjectPath, which we set above in our ConvertWorkItem </li>
<li>RunCodeAnalysis : Set this to CodeAnalysisOption.Never.&#160; Doesn’t make much sense to do code analysis on a database project. </li>
<li>Targets : </li>
</ul>
<p>Here is what the properties look like for this particuar Build Activity:</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/11/image3.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.opgenorth.net/wp-content/uploads/2010/11/image_thumb3.png" width="648" height="493" /></a></p>
<p>Now all of this has to live somewhere.&#160; You might want to have this live somewhere else depending on when or how you want the database to deploy.&#160; In my case, as I wanted to deploy the database BEFORE my tests ran, I hunted through the workflow and found the sequence called <u>Run Tests</u>.&#160; I modified one side of the If condition to include a new sequence call <u>Deploy DB and Run Tests</u>:<a href="http://www.opgenorth.net/wp-content/uploads/2010/11/image4.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.opgenorth.net/wp-content/uploads/2010/11/image_thumb4.png" width="501" height="349" /></a></p>
<p>Here is an overview of what my Deploy DB and Run Tests sequence looks like</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/11/image5.png"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.opgenorth.net/wp-content/uploads/2010/11/image_thumb5.png" width="257" height="502" /></a></p>
<p>&#160;</p>
<h4>After Thoughts</h4>
<p>To be honest, I found the whole process annoying and awkward.&#160; Sure, I didn’t have to edit a bunch of XML by hand, but the Workflow Designer in Visual Studio 2010 wasn’t exactly a joy to work with either.&#160; I don’t know exactly what the problem was, but it kept crashing while I was trying to edit this Build Process Template. It was always the same error, an Out of Memory Exception.&#160; On a Dell Latitude E6510 with 4GB of memory, this shouldn’t be happening.&#160; As well, the whole editing process for the work flow was awkward at best.</p>
<p>As much as I dislike XML based build tools, at least text editors don’t get all crashy and such.&#160; As well, I found the overall experience of trying to create and piece together the workflow for Team Build to be sluggish and tedious.&#160; It’s great to have a GUI editor to hide the crummy XML, but honestly, I think the way <a href="http://www.finalbuilder.com/home.aspx">FinalBuilder</a> works is far superior to how VS2010 in terms of easy of use and readability(application crashes aside).</p>
<p>Next is to setup my Release build definition, and to tackle the issue of updated the version number in AssemblyInfo.cs and creating a zip file of all the deployment artifacts.&#160; But first I’ve got to go and buy a bottle or two of Talisker to help numb the pain that will follow as I go done down that path.</p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/WqLOmw7VyME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/11/29/tfs-2010-vs2010-database-projects-and-ci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2010/11/29/tfs-2010-vs2010-database-projects-and-ci/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tfs-2010-vs2010-database-projects-and-ci</feedburner:origLink></item>
		<item>
		<title>First Impressions: Windows Phone 7 Development</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/UxhqOxMDdi4/</link>
		<comments>http://www.opgenorth.net/2010/11/15/first-impressions-windows-phone-7-development/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 04:01:55 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/11/15/first-impressions-windows-phone-7-development/</guid>
		<description><![CDATA[I’ve spent a bit of my spare time in the past week looking at Windows Phone 7 from a developer’s point of view.  I’d have started sooner, but honestly, I didn’t see the point until there were actually devices that I could hold and use.  I know that in the U.S., some guys got developer [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve spent a bit of my spare time in the past week looking at Windows Phone 7 from a developer’s point of view.  I’d have started sooner, but honestly, I didn’t see the point until there were actually devices that I could hold and use.  I know that in the U.S., some guys got developer phones from Microsoft, but I don’t think that anybody up here in Canada was that lucky.</p>
<p>So, over the past year or so I’ve been dabbling with Android and I actually like programming for Android.  The biggest issues I’ve run into with Android are my lack of Java skills – I keep doing things the C# way (you really don’t realize how handy Linq is until you don’t have it) and the fact that Android doesn’t have a decent UI designer.  But otherwise, I like Android.</p>
<p>So, I was curious what the developer experience was for WP7.  In a nutshell – it’s not bad, and in some ways better than that of Android.</p>
<p>Things I like about WP7 development:</p>
<ul>
<li>Being a C# guy, it was pretty easy and fast for me to get going with WP7.  Of course, Novell now has <a href="http://www.monodroid.net">MonoDroid</a> which in theory should lessen the learning curve for a C# guy to create Android applications.</li>
<li>It’s nice to have good tooling to help with creating my UI’s.  Blend and Cider are pretty decent. Android does have <a href="http://droiddraw.org">DroidDraw</a>, but I’ve never really found that tool to be good to work with.  Eclipse has some sort of an GUI designer thingy, but again, I’ve found it to be kind of lack-lustre at best.  That, and I don’t use Eclipse – I prefer IntelliJ.</li>
<li>The Emulator seems to start up faster to me that the Android emulator – but that could just be me.</li>
<li>The MVVM pattern.  I know the theory, and am now learning the more practical side of it.  Was worried that WP7 was going to decent into the path of darkness and pain that was/is Web Forms.</li>
<li>I think that the debugger integrates better with the WP7 emulator.  Not that, generally speaking, I spend a lot of time in the debugger, but when you need it, it does seem to be more natural to me.  Again, this could just be because by day I do a lot of C# development so I’m more used to the Microsoft tooling to begin with.</li>
</ul>
<p>Some things I didn’t like about WP7 development:</p>
<ul>
<li>You have to have Vista or Windows 7.  Yes, I know, XP is almost 10 years old, time to move on.  Call me an O/S curmudgeon.  I don’t mind Windows 7, but Vista sucks/sucked.</li>
<li>It seems like to build your apps, you have to use Visual Studio 2010.  Not a problem for a developer, but I’m old school when it comes to compiling applications, and your build server shouldn’t be tainted by your IDE.</li>
<li>I’m use to the relatively easy going Google marketplace and the fact I have numerous avenues available to me to distribute Android applications.  No such joy with WP7 apps.</li>
<li>Editing XAML by hand.  But, I suppose it’s no worse that the XML resource files that Android uses.</li>
<li>Not seeing a lot of projects whose code I can read.  Granted it’s still early, so hopefully that will change.  Or not.  .NET doesn’t seem to have the same OSS community spirit that Java does.</li>
</ul>
<p>Microsoft has always tried to be pretty good to developers (sometimes to their own detriment), but I think Windows Phone 7 does have some things going for it, from a developer’s point of view anyway.  Here’s to hoping that strategy pays off – that cool apps will get written for WP7, and that it will be commercially viable.  Competition is good – it will keep Apple and Google on their toes.  <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.opgenorth.net/wp-content/uploads/2010/11/wlEmoticon-smile.png" alt="Smile" /></p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/UxhqOxMDdi4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/11/15/first-impressions-windows-phone-7-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2010/11/15/first-impressions-windows-phone-7-development/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=first-impressions-windows-phone-7-development</feedburner:origLink></item>
		<item>
		<title>YEG Open Data, the 2010 Edmonton Municipal Election, and Android</title>
		<link>http://feedproxy.google.com/~r/opgenorth/blog/~3/iPYiVUjquEw/</link>
		<comments>http://www.opgenorth.net/2010/10/15/yeg-open-data-the-2010-edmonton-municipal-election-and-android/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 13:55:00 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=306</guid>
		<description><![CDATA[(Or, things to do when you have a sick kid) One of the new data catalogues that the City of Edmonton has put up is the 2010 Election Results.&#160; This Thanksgiving Long Weekend I was kind of “grounded” at home when my son came down with a nasty inner ear infection.&#160; I was hanging out [...]]]></description>
			<content:encoded><![CDATA[<p><em>(Or, things to do when you have a sick kid)</em></p>
<p><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="election" border="0" alt="election" align="right" src="http://www.opgenorth.net/wp-content/uploads/2010/10/election.jpg" width="126" height="162" /></p>
<p>One of the new <a href="http://data.edmonton.ca/">data catalogues</a> that the City of Edmonton has put up is the <a href="http://data.edmonton.ca/DataBrowser/coe/Election2010Results#param=NOFILTER--DataView--Results">2010 Election Results</a>.&#160; This Thanksgiving Long Weekend I was kind of “grounded” at home when my son came down with a nasty inner ear infection.&#160; I was hanging out with him, and thought I could use the time to see how hard it would be and how quickly I could put together an Android application that would poll these results and show leading candidate in each contest for a given ward.&#160; Turns out it was not that hard at all.&#160; Development time was less than one day, and then I had the application running on my phone for a couple of days.</p>
<p>If you search the Android market place for YEG Vote, and you’re running Android 1.6 or higher you should able to find the application and install it (assuming, of course, you care about the election results).&#160; The application itself is pretty bare bones.&#160; It will get the results every five minutes, and then show the leading candidate.</p>
<p>I think my next trick will be to duplicate the application in C# and <a href="http://monodroid.net/">MonoDroid</a> just to get a feel for the differences and such.&#160; I’d wager that it will take even less time in <a href="http://monodroid.net/">MonoDroid</a> for me, given that I’m much more fluent in C# than I am in Java.&#160; I’d have done this in <a href="http://monodroid.net/">MonoDroid</a> to being with, but <a href="http://monodroid.net/">MonoDroid</a> is currently in a limited preview and one of the conditions of being in the preview program is that you can’t distribute applications written in <a href="http://monodroid.net/">MonoDroid</a> yet. I would have tried a Windows Phone 7 port, but it just doesn’t make much sense, given that the number of people in Alberta with actually WP7 devices is probably less than 10.&#160; Maybe next election.</p>
<p>If you have any suggestions or ideas, feel free to let me know. If I can scrounge up some time this weekend before the election I’ll see if I can implement them.</p>
<p>And, it goes without saying, regardless of what you think about this application,<strong> if you live in Alberta, make sure you get out and vote this Monday (October 18th, 2010).</strong></p>
<p><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="screenshot1" border="0" alt="screenshot1" src="http://www.opgenorth.net/wp-content/uploads/2010/10/screenshot1.png" width="234" height="349" /></p>
<img src="http://feeds.feedburner.com/~r/opgenorth/blog/~4/iPYiVUjquEw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/10/15/yeg-open-data-the-2010-edmonton-municipal-election-and-android/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.opgenorth.net/2010/10/15/yeg-open-data-the-2010-edmonton-municipal-election-and-android/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=yeg-open-data-the-2010-edmonton-municipal-election-and-android</feedburner:origLink></item>
	</channel>
</rss>

