<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Archives on Opgenorth.NET</title><link>https://www.opgenorth.net/archives/</link><description>Recent content in Archives on Opgenorth.NET</description><generator>Hugo</generator><language>en-ca</language><lastBuildDate>Mon, 15 May 2017 18:14:00 +0000</lastBuildDate><atom:link href="https://www.opgenorth.net/archives/index.xml" rel="self" type="application/rss+xml"/><item><title>Ballistics of Norinco 7.62x51</title><link>https://www.opgenorth.net/archives/ballistics-of-norinco-762x51/</link><pubDate>Mon, 15 May 2017 18:14:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/ballistics-of-norinco-762x51/</guid><description>&lt;p&gt;After an amateur attempt at trying to calculate the &lt;a href="https://www.opgenorth.net/posts/ballistics-of-norinco-762x39/"&gt;BC of the Norinco 7.62x39mm&lt;/a&gt; ammunition, I thought I would do the same thing with Norinco&amp;rsquo;s 7.62x51mm ammo. As one would expect, this stuff is fairly inexpensive as well, running around $0.50/round. I don&amp;rsquo;t think this is &amp;ldquo;precision ammo&amp;rdquo;, but it works well enough in my rifle.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="Norc76251.jpg" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;First off, I pulled one bullet apart, and weight it. The projecticle itself weight 146.1 grains, so I guess this is supposed to be 147gr ammo. I measured ~ 42.0 grains of &amp;ldquo;mystery gun powder&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Ballistics of Norinco 7.62x39</title><link>https://www.opgenorth.net/archives/ballistics-of-norinco-762x39/</link><pubDate>Sat, 06 May 2017 19:10:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/ballistics-of-norinco-762x39/</guid><description>&lt;p&gt;On of the great things about 7.62x39mm rifles (like the SKS) is that (at the time of writing) ammo is fairly inexpensive. A fellow who keeps his eye open for a deal can find 7.62x39mm in the range of $0.16CAD (for corrosive) to $0.30CAD (for non-corrosive) ammo. Of course being surplus ammo, finding ballistics data on this ammunition can be a bit of a trick. Granted, the 7.62x39 cartridge isn&amp;rsquo;t exactly a &amp;ldquo;precision&amp;rdquo; round, but intellectual curiousity had me wondering what the ballistic coefficient (BC) of this Norinco ammo was.&lt;/p&gt;</description></item><item><title>Wiring Up a 2nd Generation Nest</title><link>https://www.opgenorth.net/archives/wiring-up-a-nest/</link><pubDate>Tue, 08 Sep 2015 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/wiring-up-a-nest/</guid><description>&lt;p&gt;This weekend I finally broke down and installed a &lt;a href="http://www.nest.com"&gt;2nd generation Nest thermostat&lt;/a&gt; in my house. They have a nice &lt;a href="https://nest.com/widget/compatibility/"&gt;compatibility wizard&lt;/a&gt; which does a pretty good job of showing you how to wire up your Nest based on the wires you can see in your existing thermostat. There were two gotchas that their wiring diagram didn&amp;rsquo;t cover. Here is a picture of the old thermostat (a Rodgers-White):&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="old_thermostat.png" alt="Old thermostat"&gt;&lt;/p&gt;&#10;&lt;p&gt;Notice that there were two &lt;strong&gt;W&lt;/strong&gt; wires. I&amp;rsquo;m not to sure what is up with that, I suspect that that one wire leads up to the humidifier. I ended up splicing the two wires together with a marette, and then connecting the spliced wire to the &lt;strong&gt;W&lt;/strong&gt; connection on the Nest. This was not documented anywhere on the Nest website.&lt;/p&gt;</description></item><item><title>Measuring Distance with Arduino</title><link>https://www.opgenorth.net/archives/measure-distance-with-arduino/</link><pubDate>Sat, 28 Dec 2013 17:02:40 +0000</pubDate><guid>https://www.opgenorth.net/archives/measure-distance-with-arduino/</guid><description>&lt;p&gt;The &lt;a href="http://www.parallax.com/product/28015"&gt;Ping)))&lt;/a&gt; is ultrasonic range finder that is pretty easy to use in an Arduino project. In my case, I&amp;rsquo;m using it to monitor the water level in a sump pump. I have an Arduino Uno R3 (with Ethernet Shield) connected to a Ping))) and a &lt;a href="https://www.sparkfun.com/products/10988"&gt;TMP36&lt;/a&gt; temperature sensor that is perched above my sump pump. Every 2 minutes the Uno will send out a ping, and figure out the distance to the water below. The TMP36 is used to account for the air temperature in the speed of sound calculations.&lt;/p&gt;</description></item><item><title>Sublime Text 2 and Arduino</title><link>https://www.opgenorth.net/archives/sublime-text-and-arduino/</link><pubDate>Sat, 09 Mar 2013 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/sublime-text-and-arduino/</guid><description>&lt;p&gt;If you&amp;rsquo;re looking to get into Arduino, and you&amp;rsquo;re a programmer, the first thing that will jump out at you is the Arduino IDE. It&amp;rsquo;s best described as &amp;ldquo;spartan&amp;rdquo; (to say the least). As I&amp;rsquo;m used to full featured IDE&amp;rsquo;s I started looking for a replacement to the default Arduino IDE.&lt;/p&gt;&#10;&lt;p&gt;There are extensions to use Visual Studio, but that means me starting up a VM to run Windows which I don&amp;rsquo;t really want to do for Arduino development. There is a another IDE which looks promising called Maria Mole - but it&amp;rsquo;s Windows only so not really a contender for me. I need something for OS X. I looked at setting up Eclipse as my default IDE, but ran into some issues with that. Nothing to major, but as I don&amp;rsquo;t like Eclipse in the first place I wasn&amp;rsquo;t to motivated to sort things out, so I abandoned Eclipse as an IDE choice.&lt;/p&gt;&#10;&lt;p&gt;The next thing I tried was &lt;a href="http://www.sublimetext.com/"&gt;Sublime Text&lt;/a&gt;. There is an Ardunio plugin called &lt;a href="https://github.com/Robot-Will/Stino"&gt;Stino&lt;/a&gt; that turns Sublime into a not bad IDE. In terms of writing your programs, Stino can pretty much do everything the Arduino IDE can do: compile programs, upload them to your Arduino board, import libraries, etc.&lt;/p&gt;</description></item><item><title>Embed GPS in a JPEG</title><link>https://www.opgenorth.net/archives/write-gps-to-jpg/</link><pubDate>Mon, 18 Feb 2013 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/write-gps-to-jpg/</guid><description>&lt;p&gt;One of the handy things about the JPEG format is the ability to store meta-data inside the image using &lt;a href="http://en.wikipedia.org/wiki/Exchangeable_image_file_format"&gt;EXIF&lt;/a&gt;. There are a few libraries out there for the various programming languages that can help you out with this, and Android actually has something built in to the SDK - the class &lt;a href="http://developer.android.com/reference/android/media/ExifInterface.html"&gt;ExifInterface&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Google&amp;rsquo;s documentation on writing latitude and longitude to a JPEG are a bit light on details - they loosely hint at the format that latitude or longitude should have. (See the documentation for &lt;a href="http://developer.android.com/reference/android/media/ExifInterface.html#TAG_GPS_LATITUDE"&gt;ExifInterface.TAG_GPS_LATITUDE&lt;/a&gt;). The API itself is pretty straight forward, but what Google doesn&amp;rsquo;t tell you is HOW the GPS coordinates should encoded.&lt;/p&gt;</description></item><item><title>Using AutoCompleteTextView and SimpleCursorAdapter</title><link>https://www.opgenorth.net/archives/2011-09-06-using-autocompletetextview-and-simplecursoradapter-2/</link><pubDate>Tue, 06 Sep 2011 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2011-09-06-using-autocompletetextview-and-simplecursoradapter-2/</guid><description>&lt;p&gt;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 - it&amp;rsquo;s our good friend the &lt;a href="http://developer.android.com/reference/android/widget/AutoCompleteTextView.html"&gt;AutoCompleteTextView&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://www.opgenorth.net/wp-content/uploads/2011/09/AutoCompleteTextView.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>Picking Apart PDF with Ruby and Linux</title><link>https://www.opgenorth.net/archives/2011-03-17-picking-apart-pdf-with-ruby-and-linux/</link><pubDate>Thu, 17 Mar 2011 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2011-03-17-picking-apart-pdf-with-ruby-and-linux/</guid><description>&lt;p&gt;I ran into a curious problem for a side problem of mine where I had some information in PDF files, both text and images.  What I want to do is display the information from the PDF&amp;rsquo;s on a mobile (Android) device.  PDF isn&amp;rsquo;t exactly a mobile friendly format, so I got the idea use HTML.  The next trick then becomes how to get the content out of the PDF&amp;rsquo;s I want into HTML.  Tux to the rescue!&lt;/p&gt;</description></item><item><title>Purging your Privates (MSMQ with Powershell)</title><link>https://www.opgenorth.net/archives/2011-03-01-purging-your-privates-msmq-with-powershell/</link><pubDate>Tue, 01 Mar 2011 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2011-03-01-purging-your-privates-msmq-with-powershell/</guid><description>&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>WIND Mobile and my Nexus One</title><link>https://www.opgenorth.net/archives/2010-12-20-wind-mobile-and-my-nexus-one/</link><pubDate>Mon, 20 Dec 2010 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2010-12-20-wind-mobile-and-my-nexus-one/</guid><description>&lt;p&gt;Just recently I switch my mobile carrier from Rogers to &lt;a href="../../www.windmobile.ca" title="WIND mobile"&gt;WIND Mobile&lt;/a&gt;. Their &lt;a href="http://www2.windmobile.ca/en/Pages/unlimitedtalktextdata.aspx" title="Holiday Miracle Plan"&gt;Holiday Miracle plan&lt;/a&gt; was just to good to pass up - 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&amp;rsquo;t have a 3G connection, even after selecting the WIND Home APN.  After a bit of google, it seems that what I had to do is to setup an APN.  In case I can&amp;rsquo;t find it later, here are the APN settings:&lt;/p&gt;</description></item><item><title>First Impressions: Windows Phone 7 Development</title><link>https://www.opgenorth.net/archives/2010-11-15-first-impressions-windows-phone-7-development/</link><pubDate>Mon, 15 Nov 2010 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2010-11-15-first-impressions-windows-phone-7-development/</guid><description>&lt;p&gt;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. So, over the past year or so I’ve been dabbling with Android and I actually like programming for Android. &lt;/p&gt;</description></item><item><title>Monster</title><link>https://www.opgenorth.net/archives/2010-09-13-monster/</link><pubDate>Mon, 13 Sep 2010 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2010-09-13-monster/</guid><description>&lt;p&gt;Life has been a bit busy as of late.  On Sept 4, 2010 a little monster invaded my house.  A savage beast, suitably evolved for our Canadian winters and a fearless hunter of snow-snakes.  Oh, that, and it turns out that she is a distant cousin to my last dog Bailey.  This is my new puppy Casey, who is just shy of 9 weeks old.&lt;/p&gt;</description></item><item><title>Using IntelliJ for Android Development â the Sequel</title><link>https://www.opgenorth.net/archives/2010-08-24-using-intellij-for-android-development-the-sequel/</link><pubDate>Tue, 24 Aug 2010 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2010-08-24-using-intellij-for-android-development-the-sequel/</guid><description>&lt;p&gt;A while ago, I posted a blog article about &lt;a href="http://www.opgenorth.net/2009/06/19/using-intellij-for-android-development-2/"&gt;using IntelliJ for Android development&lt;/a&gt;.  Given that was a year ago, and one version of IntelliJ later, I thought I would do a follow up post.  Long story short (and to sound like a TV commercial):  I liked IntelliJ IDEA 9 so much, I bought a license.&lt;/p&gt;&#10;&lt;p&gt;Since I blogged last year, the Android plug-in for IntelliJ has really matured.  I guess the only draw back to it is that you only get the Android plug-in when you buy the Unlimited Edition of IntelliJ – it’s not in the Community Edition.  Here are some general comments/thoughts/observations of mine:&lt;/p&gt;</description></item><item><title>Javascript IDE's</title><link>https://www.opgenorth.net/archives/2010-08-10-javascript-ides/</link><pubDate>Tue, 10 Aug 2010 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2010-08-10-javascript-ides/</guid><description>&lt;p&gt;Lately I’ve found myself doing a lot more web application development in JavaScript.  Typically, I always seem to fall back on plain old Notepad++ or Visual Studio.  As a developer, the user experience in either is, IMHO, somewhat lacking.&lt;/p&gt;&#10;&lt;p&gt;However, for the past week, I’ve been using &lt;a href="http://www.jetbrains.com/ruby/index.html"&gt;RubyMine&lt;/a&gt;.  &lt;a href="http://www.jetbrains.com/ruby/index.html"&gt;RubyMine&lt;/a&gt; is a Ruby on Rails IDE from &lt;a href="http://www.jetbrains.com"&gt;Jetbrains&lt;/a&gt;, but it seems to work rather well for editing JavaScript and HTML files.  Plus, as an added bonus, it automatically comes with built in support for &lt;a href="http://www.jquery.com"&gt;jQuery&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>MVP in C# For 2010</title><link>https://www.opgenorth.net/archives/2010-04-05-mvp-in-c-for-2010/</link><pubDate>Mon, 05 Apr 2010 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2010-04-05-mvp-in-c-for-2010/</guid><description>&lt;p&gt;I guess I forgot to mention this:  On April 1, 2010, I received an e-mail from Microsoft that my &lt;a href="https://mvp.support.microsoft.com/profile=31F1E181-79EC-4497-B792-FA8F83D34936"&gt;MVP in C#&lt;/a&gt; was renewed for the third year.  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. &lt;/p&gt;&#10;&lt;p&gt;Well, okay, perhaps I didn’t forget.  Given that it was April 1st when I got the e-mail, I like to give things a few days to settle down.  I am acquainted with some mischievous pranksters who would think it was a funny April Fools joke.&lt;/p&gt;</description></item><item><title>A Sad Day in Whoville</title><link>https://www.opgenorth.net/archives/2009-11-10-a-sad-day-in-whoville/</link><pubDate>Tue, 10 Nov 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-11-10-a-sad-day-in-whoville/</guid><description>&lt;p&gt;Well, today was a rather sad around the household.  This morning I had to take &lt;a href="http://picasaweb.google.ca/opgenorth/Bailey"&gt;Bailey&lt;/a&gt;, my dog, to the vet to be put down.  She had just turned 14 years old in September of this year, and age had finally caught up with her.  Her hips were going and we were getting concerned that one day she would be stuck on the floor and wouldn&amp;rsquo;t be able to walk anymore.&lt;/p&gt;</description></item><item><title>Git Resources</title><link>https://www.opgenorth.net/archives/2009-10-01-git-resources/</link><pubDate>Thu, 01 Oct 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-10-01-git-resources/</guid><description>&lt;p&gt;At the end of my talk on &lt;a href="http://www.git-scm.org"&gt;Git&lt;/a&gt; at the Edmonton Code Camp, somebody asked if I would put the links to the various git resources up on my website.  Here they are:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The &lt;a href="http://git-scm.org"&gt;git website&lt;/a&gt;, of course.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://progit.org"&gt;Pro GIT&lt;/a&gt; - an awesome book about git.  You can either order the dead tree version, or read it online.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4XpnKHJAok8"&gt;Linus Torvalds talking about git&lt;/a&gt;.  If you&amp;rsquo;re an SVN fan-boy, or have thin skin, you might want to skip this.  &amp;ldquo;&amp;hellip;you are ugly and stupid&amp;hellip;&amp;rdquo;&lt;/li&gt;&#10;&lt;li&gt;A fellow by the name of &lt;a href="http://excess.org/article/2008/07/ogre-git-tutorial/"&gt;Bart Trojanowksi gave an awesome talk&lt;/a&gt; to some Ottawa ruby group.  This is long, but worth it.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/jason_meridth/default.aspx"&gt;Jason Meredith&lt;/a&gt;, of Los Techies fame, has a three part series on &lt;a href="http://www.lostechies.com/blogs/jason_meridth/archive/2009/06/01/git-for-windows-developers-git-series-part-1.aspx"&gt;git for the Windows Developer&lt;/a&gt;.  Jason has some other good git stuff on his blog too.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;There you go, enjoy, and be distributed.&lt;/p&gt;</description></item><item><title>So, what do you need to do to be considered Agile?</title><link>https://www.opgenorth.net/archives/2009-09-17-so-what-do-you-need-to-do-to-be-considered-agile/</link><pubDate>Thu, 17 Sep 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-09-17-so-what-do-you-need-to-do-to-be-considered-agile/</guid><description>&lt;p&gt;One question that has been bouncing around in my mind is what, exactly, does one have to do to be considered Agile?  Let’s look at the &lt;a href="http://agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt;:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Individuals and interactions over processes and tools&lt;br&gt;&#10;Working software over comprehensive documentation&lt;br&gt;&#10;Customer collaboration over contract negotiation&lt;br&gt;&#10;Responding to change over following a plan&lt;/p&gt;&#10;&lt;p&gt;That is, while there is value in the items on&lt;br&gt;&#10;the right, we value the items on the left more.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Getting Starting with my ADP1</title><link>https://www.opgenorth.net/archives/2009-09-15-getting-starting-with-my-adp1/</link><pubDate>Tue, 15 Sep 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-09-15-getting-starting-with-my-adp1/</guid><description>&lt;p&gt;After a bit of tinkering, I managed to provision my ADP1 setup without a SIM card.  A bit of google, and here is what I did&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Download the Android SDK.  In my case, I unzipped it to C:\android-sdk-windows-1.1_r1.&lt;/li&gt;&#10;&lt;li&gt;Connection the phone via the USB cable to my computer.  When the phone asks for a device.&lt;/li&gt;&#10;&lt;li&gt;You’ll get the new hardware dialog, when prompted for the drivers, you’ll need to specify the location.  The Android SDK has the drivers, in my case they were at C:\android-sdk-windows-1.1_r1\usb_driver\x86.&lt;/li&gt;&#10;&lt;li&gt;Once you have the drivers installed cd to c:\android-sdk-windows-1.1_r1\tools.&lt;/li&gt;&#10;&lt;li&gt;Type adb devices.  This should list all the Android devices that you have connected.  If you don’t see any devices listed, then you have a problem.&lt;/li&gt;&#10;&lt;li&gt;Type adb shell.  This will direct your commands to your ADP1&lt;/li&gt;&#10;&lt;li&gt;Now while at the adb shell, su to root, then : &lt;/li&gt;&#10;&lt;li&gt;cd /data/data/com.android/providers.settings/databases/&lt;/li&gt;&#10;&lt;li&gt;sqlite3 settings.db&lt;/li&gt;&#10;&lt;li&gt;INSERT INTO system (name, value) VALUES (‘device_provisioned’, 1);&lt;/li&gt;&#10;&lt;li&gt;.quit&lt;/li&gt;&#10;&lt;li&gt;Reboot the phone&lt;/li&gt;&#10;&lt;li&gt;adb shell&lt;/li&gt;&#10;&lt;li&gt;am start –a android.intent.action.MAIN –n com.android.settings/.Settings&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Once all that is done, you should be enable to use your ADP1 as if you had a SIM card in it (we’ll except for the phoning part).&lt;/p&gt;</description></item><item><title>Good Bug Reports and Tracking</title><link>https://www.opgenorth.net/archives/2009-09-01-good-bug-reports-and-tracking/</link><pubDate>Tue, 01 Sep 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-09-01-good-bug-reports-and-tracking/</guid><description>&lt;p&gt;Every developer, no matter how experienced, has to dig in and fix bugs.  This is, in my experience, the typical cycle:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;bug is reported&lt;/li&gt;&#10;&lt;li&gt;bug is assigned to developer&lt;/li&gt;&#10;&lt;li&gt;developer thinks the bug is fixed&lt;/li&gt;&#10;&lt;li&gt;developer marks bug as resolved&lt;/li&gt;&#10;&lt;li&gt;tester checks to see bug is fixed, but it isn’t.&lt;/li&gt;&#10;&lt;li&gt;tester reopens bug, assigns it back to developer&lt;/li&gt;&#10;&lt;li&gt;back to step number two.  Repeat until developer (or tester) climbs to the top of a 307 foot administrative building with high-powered rifles to demonstrate USMC-worthy marksmanship.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Now, even if you aren’t into the whole Lean Software development philosophy (i.e. eliminating waste), you can probably appreciate that it can be pretty wasteful of time and patience every time that #6 happens, so please indulge me as I elaborate on some of the finer points of bug reporting. &lt;/p&gt;</description></item><item><title>Using IntelliJ for Android Development</title><link>https://www.opgenorth.net/archives/2009-06-19-using-intellij-for-android-development-2/</link><pubDate>Fri, 19 Jun 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-06-19-using-intellij-for-android-development-2/</guid><description>&lt;p&gt;&lt;em&gt;(Note:  this article is pretty dated, and used IntelliJ 8.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;So I have this semi-fancy Google &lt;a href="http://developer.android.com/guide/developing/device.html"&gt;Android Dev Phone 1&lt;/a&gt;.  Lately I&amp;rsquo;ve been devoting part of my spare time to learning about programming for &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; (the OS of the phone).  Google (probably because they didn&amp;rsquo;t ask for my opinion and/or input) decided to use Java as the lingua franca for Android programming.  If you ask me - and I know you will - they should have used C# and Mono (I might be a bit biased here).  Luckily, years ago I had done Java programming, so I wasn&amp;rsquo;t that intimidated by the use of Java on Android.&lt;/p&gt;</description></item><item><title>Getting Started Coding for my Android Dev Phone 1</title><link>https://www.opgenorth.net/archives/2009-03-26-getting-started-coding-for-my-android-dev-phone-1/</link><pubDate>Thu, 26 Mar 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-03-26-getting-started-coding-for-my-android-dev-phone-1/</guid><description>&lt;p&gt;Figured I was due to spend some time setting up a Linux VM and learning how to program my Android Dev Phone 1.  &lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt; is what is recommended, so I thought I’d give that a try first.  So, with the help of &lt;a href="www.susestudio.com"&gt;Suse Studio&lt;/a&gt;, I quick built myself a VM with Java 1.6 (&lt;em&gt;Aside:  I love Suse Studio, I can provision a VM in minutes&lt;/em&gt;).  I figured it would be pretty straight forward.  The docs on the Android Developer site for &lt;a href="http://developer.android.com/guide/developing/tools/adt.html#installingplugin"&gt;installing ADT plug-in&lt;/a&gt; seem pretty straight forward and simple, and I remember Eclipse having a very rich ecosystem of plug-ins that were easy to install (something I wish Visual Studio had – hint, hint Microsoft).&lt;/p&gt;</description></item><item><title>Getting Started with My ADP1</title><link>https://www.opgenorth.net/archives/2009-03-14-getting-started-with-my-adp1/</link><pubDate>Sat, 14 Mar 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-03-14-getting-started-with-my-adp1/</guid><description>&lt;p&gt;After a bit of tinkering, I managed to provision my ADP1 setup without a SIM card.  A bit of google, and here is what I did:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Download the Android SDK.  In my case, I unzipped it to C:\android-sdk-windows-1.1_r1.&lt;/li&gt;&#10;&lt;li&gt;Connection the phone via the USB cable to my computer.  When the phone asks for a device.&lt;/li&gt;&#10;&lt;li&gt;You&amp;rsquo;ll get the new hardware dialog, when prompted for the drivers, you&amp;rsquo;ll need to specify the location.  The Android SDK has the drivers, in my case they were at C:\android-sdk-windows-1.1_r1\usb_driver\x86.&lt;/li&gt;&#10;&lt;li&gt;Once you have the drivers installed cd to c:\android-sdk-windows-1.1_r1\tools.&lt;/li&gt;&#10;&lt;li&gt;Type adb devices.  This should list all the Android devices that you have connected.  If you don&amp;rsquo;t see any devices listed, then you have a problem.&lt;/li&gt;&#10;&lt;li&gt;Type adb shell.  This will direct your commands to your ADP1&lt;/li&gt;&#10;&lt;li&gt;Now while at the adb shell, su to root, then : &lt;/li&gt;&#10;&lt;li&gt;cd /data/data/com.android/providers.settings/databases/&lt;/li&gt;&#10;&lt;li&gt;sqlite3 settings.db&lt;/li&gt;&#10;&lt;li&gt;INSERT INTO system (name, value) VALUES (&amp;lsquo;device_provisioned&amp;rsquo;, 1);&lt;/li&gt;&#10;&lt;li&gt;.quit&lt;/li&gt;&#10;&lt;li&gt;Reboot the phone&lt;/li&gt;&#10;&lt;li&gt;adb shell&lt;/li&gt;&#10;&lt;li&gt;am start -a android.intent.action.MAIN -n com.android.settings/.Settings&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Once all that is done, you should be enable to use your ADP1 as if you had a SIM card in it (we&amp;rsquo;ll except for the phoning part).&lt;/p&gt;</description></item><item><title>Every Time you \[Ignore\] a Test, a Puppy Dies</title><link>https://www.opgenorth.net/archives/2009-02-20-every-time-you-ignore-a-test-a-puppy-dies/</link><pubDate>Fri, 20 Feb 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-02-20-every-time-you-ignore-a-test-a-puppy-dies/</guid><description>&lt;p&gt;If you using a unit testing framework such as &lt;a href="http://www.nunit.org"&gt;NUnit&lt;/a&gt;, you&amp;rsquo;re no doubt familiar with the &lt;a href="http://www.nunit.org/index.php?p=ignore&amp;amp;r=2.4.8"&gt;[Ignore]&lt;/a&gt; attribute.  (Note:  I haven&amp;rsquo;t used &lt;a href="http://www.mbunit.com"&gt;MbUnit&lt;/a&gt; in a while, but I&amp;rsquo;m pretty sure that all this applies there as well.)&lt;/p&gt;&#10;&lt;p&gt;For those who aren&amp;rsquo;t, when you adorn your [Test] with this attribute, then your test runner should pay no heed to this particular [Test].  Instead of going green or red, your test turns up as yellow in your test runner. At first blush, this seems handy - rather than deleting a failing or broken test you can have it [Ignore]d.&lt;/p&gt;</description></item><item><title>Common Sevice Locator</title><link>https://www.opgenorth.net/archives/2009-01-26-common-sevice-locator/</link><pubDate>Mon, 26 Jan 2009 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2009-01-26-common-sevice-locator/</guid><description>&lt;p&gt;One of the nice things about &lt;a href="http://martinfowler.com/articles/injection.html"&gt;Dependency Injection&lt;/a&gt; is that it can really help write a more flexible, modular application.  These days, it seems that there is no shortage of choice in the .NET community when it comes to IoC frameworks:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://structuremap.sourceforge.net"&gt;StructureMap&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.castleproject.org/container/index.html"&gt;Castle Windsor&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.ninject.org"&gt;Ninject&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://code.google.com/p/autofac/"&gt;Autofac&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.codeplex.com/unity"&gt;Unity&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.springframework.net/"&gt;Spring.NET&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;And probably others that I&amp;rsquo;m missing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Ironically, when you first start using an IoC framework, you might find that in trying to make a loosely-coupled, modular, application you end up shackling yourself to the framework you&amp;rsquo;re using for IoC. For example, you start off using your own homegrown IoC framework, and then decide at some point in the future to use a different framework, like say StructureMap.  Going through your codebase to make these changes can be quite the exercise in pain. There are a couple of ways to isolate yourself from this kind of situation.  I won&amp;rsquo;t get into all of them but instead will focus on the &lt;a href="http://www.codeplex.com/CommonServiceLocator"&gt;Common Service Locator&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>TypeMock, TestDriven.NET, and Red Tests</title><link>https://www.opgenorth.net/archives/2008-10-18-typemock-testdriven-net-and-red-tests-2/</link><pubDate>Sat, 18 Oct 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-10-18-typemock-testdriven-net-and-red-tests-2/</guid><description>&lt;p&gt;Lately I&amp;rsquo;ve been experimenting with &lt;a href="http://www.typemock.com/"&gt;TypeMock Isolator&lt;/a&gt;,  and it&amp;rsquo;s new AAA syntax.  For the past two years I&amp;rsquo;ve been a diehard Rhino.Mocks kind of guy, but figured that it&amp;rsquo;s time to check out other tools.  Anyway, I had a situation where a unit test of mine was failing when I ran it with &lt;a href="http://www.testdriven.net/"&gt;TestDriven.NET&lt;/a&gt;, but would pass when I ran it using the unit test runner in &lt;a href="http://www.jetbrains.com/resharper"&gt;Resharper 4.1&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Usually when I develop, I write individual tests and then run individually with TestDriven.NET and collectively with Resharper.  In this case, as I was writing one unit test, it kept failing with TestDriven.NET.  At first I thought it was just me being stupid (always a good place to start), and then I was worried that perhaps the documentation for TypeMock was to blame.  So, I sent a email to Avi at TypeMock, mostly expecting confirmation of my stupidity.&lt;/p&gt;</description></item><item><title>TypeMock, TestDriven.NET, and Red Tests</title><link>https://www.opgenorth.net/archives/2008-10-18-typemock-testdriven-net-and-red-tests/</link><pubDate>Sat, 18 Oct 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-10-18-typemock-testdriven-net-and-red-tests/</guid><description>&lt;p&gt;Lately I&amp;rsquo;ve been experimenting with &lt;a href="http://www.typemock.com/"&gt;TypeMock Isolator&lt;/a&gt;,  and it&amp;rsquo;s new AAA syntax.  For the past two years I&amp;rsquo;ve been a diehard Rhino.Mocks kind of guy, but figured that it&amp;rsquo;s time to check out other tools.  Anyway, I had a situation where a unit test of mine was failing when I ran it with &lt;a href="http://www.testdriven.net/"&gt;TestDriven.NET&lt;/a&gt;, but would pass when I ran it using the unit test runner in &lt;a href="http://www.jetbrains.com/resharper"&gt;Resharper 4.1&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Usually when I develop, I write individual tests and then run individually with TestDriven.NET and collectively with Resharper.  In this case, as I was writing one unit test, it kept failing with TestDriven.NET.  At first I thought it was just me being stupid (always a good place to start), and then I was worried that perhaps the documentation for TypeMock was to blame.  So, I sent a email to Avi at TypeMock, mostly expecting confirmation of my stupidity.&lt;/p&gt;</description></item><item><title>Where Windows Beats Linux</title><link>https://www.opgenorth.net/archives/2008-10-09-where-windows-beats-linux/</link><pubDate>Thu, 09 Oct 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-10-09-where-windows-beats-linux/</guid><description>&lt;p&gt;Most who know me are aware that, despite being a .NET developer and a Microsoft MVP, I&amp;rsquo;m a bit of a Linux freak at heart.  I actually prefer Linux to Windows.  Linux has come a long way in the past 18 years, although I&amp;rsquo;ve only been tinkering with it off and on for the past 9 years or so.  I will admit that perhaps Linux on the desktop isn&amp;rsquo;t quite there for the average consumer, but for me it.  And, when it comes to servers, there is no question:   use Linux unless you&amp;rsquo;ve got a pretty compelling reason to run Windows.&lt;/p&gt;</description></item><item><title>Ruminations of an IT contractor</title><link>https://www.opgenorth.net/archives/2008-09-30-ruminations/</link><pubDate>Tue, 30 Sep 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-09-30-ruminations/</guid><description>&lt;p&gt;Today was my last full time day on this contract.  Tomorrow I start up full-time with another.  Personally, I&amp;rsquo;ve gotten in the habit of looking a my past contract and conducting my own personal retrospective on what I learned or how I would do things differently.  I figured that because my memory is getting worse in my old age, I&amp;rsquo;d started putting these things down on my blog.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;For a greenfield project, don&amp;rsquo;t use the database someone hands off to you&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>What is In A Name?</title><link>https://www.opgenorth.net/archives/2008-08-26-whats-in-a-name/</link><pubDate>Tue, 26 Aug 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-08-26-whats-in-a-name/</guid><description>&lt;p&gt;As I was driving home today, I couldn&amp;rsquo;t help notice something.  Microsoft&amp;rsquo;s ASP.NET MVC framework is still in beta, and was only announced last October.  To my knowledge, there are currently three projects in the &lt;a href="http://maps.google.ca/maps?q=Edmonton,+Alberta&amp;amp;ie=UTF8&amp;amp;oe=utf-8&amp;amp;client=firefox-a&amp;amp;ll=53.540307,-113.510742&amp;amp;spn=18.606218,57.128906&amp;amp;z=5&amp;amp;iwloc=addr"&gt;Edmonton&lt;/a&gt; area based off this framework.&lt;/p&gt;&#10;&lt;p&gt;Castle Monorail has been around for much longer, three years or so?  It&amp;rsquo;s still listed as a release candidate on it&amp;rsquo;s website, but I&amp;rsquo;d say Monorail is suitable for production.  Currently, I am not aware of any projects in the Edmonton that are based off this framework.&lt;/p&gt;</description></item><item><title>Squawking About The Manning Early Access Program</title><link>https://www.opgenorth.net/archives/2008-08-23-squawking-about-the-manning-early-access-program/</link><pubDate>Sat, 23 Aug 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-08-23-squawking-about-the-manning-early-access-program/</guid><description>&lt;p&gt;*Note:  I originally wrote this post on August 23, 2008.  As things change with the book NHibernate in Action, I will be updating this post and resetting the date. *&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;d like to take a break from boring you two readers of my blog, and take a moment to annoy you with a rant.  Diversity is the spice of life after all.&lt;/p&gt;&#10;&lt;p&gt;This little remonstration of mine is about the &lt;a href="http://www.manning.com/about/meap.html"&gt;Manning Early Access Program&lt;/a&gt; (MEAP).  Well, specifically just  &lt;a href="http://www.manning.com/kuate/"&gt;one book&lt;/a&gt;.  I&amp;rsquo;ve got my eye on a couple of other books available with MEAP to see how they pan out before considering the whole &amp;ldquo;early access&amp;rdquo; useless.  Anyway&amp;hellip;&lt;/p&gt;</description></item><item><title>Unit Testing in JavaScript</title><link>https://www.opgenorth.net/archives/2008-08-16-unit-testing-in-javascript/</link><pubDate>Sat, 16 Aug 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-08-16-unit-testing-in-javascript/</guid><description>&lt;p&gt;Well, I don&amp;rsquo;t know why it&amp;rsquo;s taken me so long to get to get around to this: but I must say that there are now a couple of &amp;ldquo;must haves&amp;rdquo; in my web developer&amp;rsquo;s tool box.  One of them is &lt;a href="http://www.jquery.com"&gt;jQuery,&lt;/a&gt; and now the other is &lt;a href="http://docs.jquery.com/QUnit"&gt;QUnit&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://www.lostechies.com/blogs/chad_myers/default.aspx"&gt;Chad Myers&lt;/a&gt; has a good, quick, &lt;a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/08/28/getting-started-with-jquery-qunit-for-client-side-javascript-testing.aspx"&gt;post introducing QUnit&lt;/a&gt;, I&amp;rsquo;d &lt;em&gt;strongly suggest&lt;/em&gt; checking it out if you do web development (which, IMHO, implies some use of JavaScript, right?).  Chad&amp;rsquo;s post covers the basics pretty good, and I think I would just be duplicating/plagiarizing Chad&amp;rsquo;s work if I were to blog the hour or two I spent getting to know QUnit here.&lt;/p&gt;</description></item><item><title>How Much TDD is Enough?</title><link>https://www.opgenorth.net/archives/2008-08-06-how-much-tdd-is-enough/</link><pubDate>Wed, 06 Aug 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-08-06-how-much-tdd-is-enough/</guid><description>&lt;p&gt;At the last &lt;a href="http://groups.google.com/group/eamug"&gt;Edmonton Agile Methods User Group&lt;/a&gt; meeting, we had a brief discussion around &lt;a href="http://en.wikipedia.org/wiki/Code_coverage"&gt;code coverage&lt;/a&gt;, and what should be an acceptable number to shoot for.  Is it okay when the unit tests cover 80% of the code?  Or should 100% be the only acceptable value?  After all, how can you be confident in your code knowing that 20% of it isn&amp;rsquo;t tested.&lt;/p&gt;&#10;&lt;p&gt;Allow me to go out on a limb here, and state with absolute certainty that the correct answer is &amp;ldquo;It depends on your situation&amp;rdquo;.  Allow me to elaborate.&lt;/p&gt;</description></item><item><title>Rod Paddock at EDMUG</title><link>https://www.opgenorth.net/archives/2008-06-27-rod-paddock-at-edmug/</link><pubDate>Fri, 27 Jun 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-06-27-rod-paddock-at-edmug/</guid><description>&lt;p&gt;Last night (Thursday, June 26th) &lt;a href="http://blog.dashpoint.com/"&gt;Rod Paddock&lt;/a&gt; gave a talk on using &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt; 2.0 to the Edmonton .NET User Group.  I&amp;rsquo;d say that Rod did a pretty good job, despite the fact that the beta of both &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt; and Expression Blend didn&amp;rsquo;t exactly want to play nice all the time.  It&amp;rsquo;s definitely perked my interest in the technology, and I can see a lot of business potential for it.&lt;/p&gt;&#10;&lt;p&gt;The rich user experience that &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt; brings to the web-browser, will, I think raise the bar for what web applications will do for businesses.  Forget all the buzz about ASP.NET MVC or MonoRail or ASP.NET 3.5.  This is just another layer of makeup on the tired, old, hooker that is application development in .NET.  &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt; is what will make business users oh and ah and get excited about web apps again.&lt;/p&gt;</description></item><item><title>On the Functional Apex of Mainstream Build Tools in .NET</title><link>https://www.opgenorth.net/archives/2008-05-01-on-the-functional-apex-of-mainstream-build-tools-in-net/</link><pubDate>Thu, 01 May 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-05-01-on-the-functional-apex-of-mainstream-build-tools-in-net/</guid><description>&lt;p&gt;Wordy title.  To wordy.  Kind of like build files these days. I remember when I first discovered Ant, and then &lt;a href="http://nant.sourceforge.net"&gt;Nant&lt;/a&gt;*.  I was pretty happy, as it allow a decent way to compile my Java (and C#) without using make files.  Life was good as I could finally introduce some structure into HOW code was compiled.  The build process was no longer using whatever &amp;ldquo;build&amp;rdquo; command the IDE exposed, hoping that I didn&amp;rsquo;t forget a compiler directive or a file or a reference to some other library along the way.  Other programmers could also compile the code with out fear as well. &lt;/p&gt;</description></item><item><title>ALT.NET Session \#6: Maintaining A Framework</title><link>https://www.opgenorth.net/archives/2008-04-20-alt-net-session-6-maintaining-a-framework/</link><pubDate>Sun, 20 Apr 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-04-20-alt-net-session-6-maintaining-a-framework/</guid><description>&lt;p&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/"&gt;Jeremy Miller&lt;/a&gt; talking about the trials and tribulations of keeping a &lt;a href="http://structuremap.sourceforge.net/Default.htm"&gt;codebase&lt;/a&gt; viable and useful over the past four years.  A lot of tips and explanations were backed with diagrams on the whiteboard.  Kind of hard to blog that stuff, so this will probably be just a collection of bullets.&lt;/p&gt;&#10;&lt;p&gt;Lessons learned - a lot of them relate back to what are considered good, OO practices:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself"&gt;DRY&lt;/a&gt;, especially with the very small things.  When Jeremy was adding support for .NET 2.0, the generic support was problematic.  &lt;br&gt;&#10;Example:  Want to resolve a Repository&amp;lt;T&amp;gt;.  You can&amp;rsquo;t just look for the class Repository`1: i.e. was trying to resolve the class by using  typeof(Repository`1).  This did not work.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://c2.com/cgi/wiki?TellDontAsk"&gt;Tell, Don&amp;rsquo;t Ask&lt;/a&gt;.  Didn&amp;rsquo;t follow this to heavily at first, and so now effort has to be taken to rewrite code to adhere to this principle.&lt;/li&gt;&#10;&lt;li&gt;Using a lot of Double Dispatch (&lt;em&gt;hah!  look Jeremy the picture did turn out&lt;/em&gt;):&lt;/li&gt;&#10;&lt;li&gt;If you need to refactor, do it now.  Procrastination only makes it (refactoring) harder and more costly.&lt;/li&gt;&#10;&lt;li&gt;If you want to build a .NET framework and keep it around for four to five years, you should probably learn a bit about the fundamentals of .NET.&lt;/li&gt;&#10;&lt;li&gt;Small steps, frequent commits to source code.&lt;/li&gt;&#10;&lt;li&gt;Good solid battery of unit tests really helps with major changes.&lt;/li&gt;&#10;&lt;li&gt;Moving more towards coarser grained tests.  Does the test check the functionality?  Not to worried about the intermediate steps.&#10;&lt;ul&gt;&#10;&lt;li&gt;Assertions based on side effects really don&amp;rsquo;t work well.  Not very expressive, sometimes hard to figure out what what you&amp;rsquo;re trying to test.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;It helps have tooling inside your tests in order to help you quickly create tests, especially the difficult to setup/create tests.  Will result in a faster feedback cycle.  This infrastructure is more strategic, can be very help.&lt;/li&gt;&#10;&lt;li&gt;Jeremy recommends &amp;ldquo;Pragmatic Programmers&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Brief discussion about where to start learning all these pattern.  Advice is given to learn principles first (DRY, OCP, SRP, SOC, etc) as this will greatly help with the understanding and proper use of design patterns.&lt;/p&gt;</description></item><item><title>ALT.NET Session #4: Sprocs Good Or Evil / NHibernate with Cartoon Bears</title><link>https://www.opgenorth.net/archives/2008-04-19-alt-net-session-4-sprocs-good-or-evil-nhibernate-with-cartoon-bears/</link><pubDate>Sat, 19 Apr 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-04-19-alt-net-session-4-sprocs-good-or-evil-nhibernate-with-cartoon-bears/</guid><description>&lt;p&gt;Two topics merged into one.  Rod Paddock wants to talk about stored procs, and others want to learn how to explain NHibernate to other people who aren&amp;rsquo;t familiar with it (and minimize the jargon).&lt;/p&gt;&#10;&lt;p&gt;Rod uses a custom code-gen solution based heavily on sprocs - a data driven approach.  Sounds like it works well for him.  Oren concurs that this technique could be very effective in certain circumstances.  It will have problems with complex situations that deal with convoluted/difficult data scenarios.  He&amp;rsquo;s giving an example, but I just can&amp;rsquo;t keep up with him.  The point of Oren&amp;rsquo;s story is that a domain driven approach will would better when you&amp;rsquo;re not dealing with data but with data and behavior.&lt;/p&gt;</description></item><item><title>ALT.NET Session #5: Mono - Not Just For Linux</title><link>https://www.opgenorth.net/archives/2008-04-19-alt-net-session-5-mono-not-just-for-linux/</link><pubDate>Sat, 19 Apr 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-04-19-alt-net-session-5-mono-not-just-for-linux/</guid><description>&lt;p&gt;Joe starts polling to see what people want to talk about.  Most seem to be interest the libraries for Mono (being that they also work on Windows/.NET.  So, Joe starts talking about libraries for/from Mono.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="http://www.mono-project.com/Cecil"&gt;Mono.Cecil&lt;/a&gt;.  For all your reflecting and assembly modification needs.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.mono-project.com/Mono.Addins"&gt;Mono.Addins&lt;/a&gt;.  I&amp;rsquo;ve been looking at this off and on today, and I have to admit it looks pretty intriguing&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.mono-project.com/Rocks"&gt;Mono.Rocks&lt;/a&gt;:  Handy extension methods.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.mono-project.com/Mono.Zeroconf"&gt;Mono.Zeroconf&lt;/a&gt;: Zero configuration networking library&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.ndesk.org/DBusSharp"&gt;DBus#&lt;/a&gt;:  A C# implementation of &lt;a href="http://www.freedesktop.org/wiki/Software/dbus"&gt;D-Bus&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.mono-project.com/MonoCurses"&gt;MonoCurses&lt;/a&gt;: An API for console based applications&lt;/li&gt;&#10;&lt;li&gt;GTK# vs Windows:&#10;&lt;ul&gt;&#10;&lt;li&gt;My suggestion is to consider the target environment.  If you targeting Windows, stick with WinForms.  If you&amp;rsquo;re targetting Linux/Mac, go with GTK#. &lt;/li&gt;&#10;&lt;li&gt;Another issue that might influence your decision is that the documentation for GTK# is pretty sketchy, not very good.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="http://www.mono-project.com/IOMap"&gt;IOMap&lt;/a&gt;.  Turning this flag on, will help you with some of the cross-platform development issues.  This is a portable library that will help resolve things like directory seperators, case sensitivity in paths, and that sort of thing.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;A short session, which isn&amp;rsquo;t bad.  Gives me a chance to float around to check out some other things.&lt;/p&gt;</description></item><item><title>On Stored Procedures</title><link>https://www.opgenorth.net/archives/2008-04-18-on-stored-procedures/</link><pubDate>Fri, 18 Apr 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-04-18-on-stored-procedures/</guid><description>&lt;p&gt;Yesterday myself, &lt;a href="http://www.igloocoder.com"&gt;Don&lt;/a&gt;, &lt;a href="http://geekswithblogs.net/dlussier/Default.aspx"&gt;D&amp;rsquo;Arcy&lt;/a&gt;, and Eric were wandering around Seattle, just checking out the sights after the MVP Summit.  We took a break from the usual &amp;ldquo;run down D&amp;rsquo;Arcy and Manitoba&amp;rdquo; shtick, and actually had a serious conversation on the relevance of stored procedures for your typical database development/line of business app.  D&amp;rsquo;Arcy &lt;a href="http://geekswithblogs.net/dlussier/archive/2008/04/18/121341.aspx"&gt;blogged&lt;/a&gt; his take on it already.  I was going to reply in his comments, but as the comments grew, I figured my own post was in order.&lt;/p&gt;</description></item><item><title>Where Should Your Tests Live?</title><link>https://www.opgenorth.net/archives/2008-04-10-where-should-your-tests-live/</link><pubDate>Thu, 10 Apr 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-04-10-where-should-your-tests-live/</guid><description>&lt;p&gt;Thanks to &lt;a href="http://haacked.com/Default.aspx"&gt;Phil Haack&lt;/a&gt;&amp;rsquo;s &lt;a href="http://haacked.com/archive/2008/04/09/unit-test-project-structure-poll.aspx"&gt;online poll&lt;/a&gt;, there is a bit of controversy over where one&amp;rsquo;s unit tests should reside:  should the unit tests be housed in a separate project and assembly, or do they shack up in the same project as the code that they are testing?  Like &lt;a href="http://weblogs.asp.net/bsimser/archive/2008/04/09/unit-test-projects-or-not.aspx"&gt;Bil&lt;/a&gt;, I figured that rather than a big long blog comment, I&amp;rsquo;d be better of with my post.&lt;/p&gt;&#10;&lt;p&gt;Way back when I started out with TDD, I used to put the test fixtures in the same file as the class under test, sort of like:&lt;/p&gt;</description></item><item><title>VMware and 64-bit Ubuntu</title><link>https://www.opgenorth.net/archives/2008-03-05-vmware-and-64-bit-ubuntu/</link><pubDate>Wed, 05 Mar 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-03-05-vmware-and-64-bit-ubuntu/</guid><description>&lt;p&gt;Today I got a new hard drive for my web server, to replace the one that died back in February.  Hopefully the new 750GB drive will serve me as well as (or better) the old 200GB WD Cavair.  I must admit, I was a bit suprised at how cheap it was to get such a big HD.&lt;/p&gt;&#10;&lt;p&gt;The first order of business was to move my web site off it&amp;rsquo;s current home and onto it&amp;rsquo;s new, more permanent one.  I went about installing Ubunutu 7.10 64 bit, and them VMware server 1.0.4 on the new computer.  If you Google it, are a lot of articles on &lt;a href="http://www.google.ca/search?q=vmware+server+ubuntu+7.10"&gt;installing VMware on Ubunutu&lt;/a&gt;.  However, I did run into one stumbling block:  with 64bit Ubunutu you need one more dependency: ia32-libs&lt;/p&gt;</description></item><item><title>Continous Database Integration With Nant</title><link>https://www.opgenorth.net/archives/2008-01-22-continous-database-integration-with-nant/</link><pubDate>Tue, 22 Jan 2008 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2008-01-22-continous-database-integration-with-nant/</guid><description>&lt;p&gt;Last night I spent some quality time looking at &lt;a href="http://code.google.com/p/vincent-vega/"&gt;vincent-vega&lt;/a&gt;, aka Continuous Database Integration for SQL Server. This is a pretty simple and handy task for Nant that helps bring continous integration to your databases. I use updateSqlDatabase like as part of my integration tests like so:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Drop the database&lt;/li&gt;&#10;&lt;li&gt;Create a new database&lt;/li&gt;&#10;&lt;li&gt;Run some SQL scripts to bring my database up to date&lt;/li&gt;&#10;&lt;li&gt;Run various database integration tests, repeating steps 1 -3 as necessary.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;What this project will add a new task you: updateSqlDatabase. With this task, you can do one of three things: Add a database, Create a Database, and Update a database. updateSqlDatabase will look for SQL script files , and will execute those SQL scripts for you in the order they are found. Information about what scripts have been run are kept in a table that updateSqlDatabase creates for you when you create your database.  This will allow you to see the history of when your database was updated, and with scripts.  This&lt;br&gt;&#10;How to get started and use it? First, &lt;a href="http://code.google.com/p/vincent-vega/source"&gt;get the code&lt;/a&gt; from Google Code. Compile the code. Next copy the output of the build to your Nant bin directory.  See the image below.  You probably won&amp;rsquo;t need log4net.dll or Nant.Core.*.&lt;/p&gt;</description></item><item><title>Windsor and the db4o Facility</title><link>https://www.opgenorth.net/archives/2007-12-19-windsor-and-the-db4o-facility/</link><pubDate>Wed, 19 Dec 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-12-19-windsor-and-the-db4o-facility/</guid><description>&lt;p&gt;Once again, appealling to the niche (non-existant?) market, I give you a quick run down on using &lt;a href="http://www.db4o.com/"&gt;db4o&lt;/a&gt;, and the &lt;a href="http://www.castleproject.org/container/index.html"&gt;Castle Windsor&lt;/a&gt; &lt;a href="http://www.castleproject.org/index.php/Facility:db4o"&gt;db4o facility&lt;/a&gt;.  Yes, I know the link for the db4o facility link doesn&amp;rsquo;t work.  That is what prompted me to do this blog post. This is because, a while ago, the &lt;a href="http://www.db4o.com/"&gt;db4o&lt;/a&gt; facility was pulled from the Castle Project.  Apparently there was a licencing concern.  It&amp;rsquo;s my understanding that this has since been resolved, and I seen now that there is again the &lt;a href="http://www.db4o.com"&gt;db4o&lt;/a&gt; facility.&lt;/p&gt;</description></item><item><title>Code Cleanup with Resharper</title><link>https://www.opgenorth.net/archives/2007-12-17-code-cleanup-with-resharper/</link><pubDate>Mon, 17 Dec 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-12-17-code-cleanup-with-resharper/</guid><description>&lt;p&gt;As most Resharpies know, when you&amp;rsquo;re using Resharper you can reformat your code. A nice feature is that you can use this reformat code to also organize and layout your code files the way you like it.&lt;/p&gt;&#10;&lt;p&gt;For example, &lt;a href="http://codebetter.com/blogs/kyle.baley/archive/2007/12/17/removing-regions-or-quot-how-to-keep-your-code-expanded-quot.aspx"&gt;Kyle Baley did post&lt;/a&gt; on how to how to use the format code to get rid of regions. His techique is a bit unrefined - his revolutionary, dogmatic zeal he will clobber all regions and do nothing else - but still handy.   Myself, I&amp;rsquo;m a bit more compulsive / fussy when it comes to the layout of my code. Not only do I want regions gone, but I want the code to appear in a certain order. Lucky for me that Reformat Code does this for me. Here is the &lt;a href="http://www.opgenorth.net/Data/Sites/1/Files/ResharperPatterns.xml"&gt;Type Member Layout pattern I use&lt;/a&gt;. If you want to use it, just paste it into the type member layout window in Resharper.&lt;/p&gt;</description></item><item><title>We Don't Want External Code</title><link>https://www.opgenorth.net/archives/2007-12-14-we-dont-want-external-code/</link><pubDate>Fri, 14 Dec 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-12-14-we-dont-want-external-code/</guid><description>&lt;p&gt;One of the biggest discussions that I typically get when I try to introduce things like NHibernate (i.e. OSS) on a new contract goes like this:&lt;/p&gt;&#10;&lt;p&gt;&amp;ldquo;&lt;em&gt;We&amp;rsquo;re a bit reluctant to use that because it will introduce more code into our code base that isn&amp;rsquo;t ours. Because it&amp;rsquo;s OSS, there&amp;rsquo;s no support, and if there was a bug in it, we&amp;rsquo;d have to maintain it ourselves. That being case, we&amp;rsquo;d rather just write our own code, because that way we know what is going on with it and can maintain it better. We don&amp;rsquo;t want to have to figure out somebody elses code.&lt;/em&gt;&amp;rdquo;&lt;/p&gt;</description></item><item><title>Fun with Open Source: OpenDental</title><link>https://www.opgenorth.net/archives/2007-11-15-fun-with-open-source-opendental/</link><pubDate>Thu, 15 Nov 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-11-15-fun-with-open-source-opendental/</guid><description>&lt;p&gt;The past week I&amp;rsquo;ve been dabbling with an open source program called &lt;a href="http://www.open-dent.com/"&gt;Open Dental&lt;/a&gt; - mostly trying to see if can get it to compile under Mono, and running under Linux.  I figure that this would be a good opportunity to and work with a cross platform application.&lt;/p&gt;&#10;&lt;p&gt;According to their website, Open Dental has been supported under Linux since v4.7.  Here are some notes of my efforts so far.&lt;/p&gt;&#10;&lt;p&gt;You will need Mono v1.2.5.  It seems that there is a problem with the Linux binary installer ( a known bug that will be corrected in 1.2.6).  I used the &lt;a href="http://www.mono-project.com/Downloads"&gt;OpenSUSE 10.2 VMWare image&lt;/a&gt; which had a 1.2.5 install all set up.  That solved my problem of getting a current Linux distro with the most recent version of Mono.&lt;/p&gt;</description></item><item><title>Javascript Didnât Rape My Dog</title><link>https://www.opgenorth.net/archives/2007-11-09-javascript-didnt-rape-my-dog/</link><pubDate>Fri, 09 Nov 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-11-09-javascript-didnt-rape-my-dog/</guid><description>&lt;p&gt;One thing I noticed since I started doing ASP.NET programming back in 2002: I started using Javascript a lot less, and my copy of &lt;em&gt;JavaScrip_t: The Definitive Guide sits on the shelf gathering dust&lt;/em&gt;.  I&amp;rsquo;ve noticed a lot of developers I&amp;rsquo;ve worked with are the same way. In fact, I&amp;rsquo;d say that most of the ASP.NET programmers I&amp;rsquo;ve worked with these days really don&amp;rsquo;t know much about Javascript.&lt;/p&gt;&#10;&lt;p&gt;I don&amp;rsquo;t blame Javascript itself for this - I blame ASP.NET. Developers just get used to dropping the server side controls on their WebForms, and then doing everything server side. I&amp;rsquo;ve also worked at clients which had a &amp;ldquo;no client-side javascript&amp;rdquo; rule. All of this combines to cause our (my) Javascript skills to atrophy and wither. Kind of shame, really. (note: to a degree, I think the same can be said about CSS).&lt;/p&gt;</description></item><item><title>What is Right About .NET?</title><link>https://www.opgenorth.net/archives/2007-11-04-what-is-right-about-net/</link><pubDate>Sun, 04 Nov 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-11-04-what-is-right-about-net/</guid><description>&lt;p&gt;Recently, on one of the mailing lists I subscribe to, a member starting bashing .NET. A bit curious as to why there was this strong hatred of .NET, I posed a simple question:&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;What is wrong with .NET?&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;The answer I got back somewhat suprised me:&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;I guess the standard reply is, what is right about .NET?  .NET was invented so that M$ could provide software as a service. You would end up with a minimal OS on the disk, and no applications. When you turned your computer on, it would download whatever applications you needed, or did so on demand; if your subscription was paid up.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Unit Testing Data Access</title><link>https://www.opgenorth.net/archives/2007-09-24-unit-testing-data-access/</link><pubDate>Mon, 24 Sep 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-09-24-unit-testing-data-access/</guid><description>&lt;p&gt;One thing that I don&amp;rsquo;t like about writing tests is some of the jiggery-pokery that goes on with testing database access code. Jiggery-pokery being: ensuring the tables are there, up to date, and are holding the data that they are supposed to hold before and after the test has run. If you don&amp;rsquo;t pay attention to these details, you get a lot of false negatives on your unit tests. This will result in a loss of confidence in your unit tests. When this happens you stop running them, and loose confidence in your ability to refactor without fear.&lt;/p&gt;</description></item><item><title>Coding for Fun: Spying on Serial Ports</title><link>https://www.opgenorth.net/archives/2007-07-24-coding-for-fun-spying-on-serial-ports/</link><pubDate>Tue, 24 Jul 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-07-24-coding-for-fun-spying-on-serial-ports/</guid><description>&lt;p&gt;Yesterday I was house-bound looking after a sick eight year old boy.  To help pass time, I decided to play around with my chronograph (to clarify: in this context a chronograph is a tool to help you measure the velocity of projecticles, i.e. bullets).  I happen to own a &lt;a href="http://www.shootingchrony.com/"&gt;Shooting Chrony&lt;/a&gt; Beta Master, which you can, in theory, hook up via a serial port to your computer, download the velocities of up to 60 shots, and use that data to help you with building up some ballisitic tables for your firearm and hand-loaded ammunition.&lt;/p&gt;</description></item><item><title>VisualSVN and VS2008</title><link>https://www.opgenorth.net/archives/2007-07-23-visualsvn-and-vs2008/</link><pubDate>Mon, 23 Jul 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-07-23-visualsvn-and-vs2008/</guid><description>&lt;p&gt;So last night I installed Visual Studio 2008 RTM on my laptop.  This was a clean install - I did not have any beta versions of VS2008 installed.  When I went to try and do anything in VS2008, I kept getting the message &amp;lsquo;Visual Studio has encountered an unexpected error.&amp;quot;.  This error happens when I try to do anything, including VS2008.  The only way to close VS2008 was using Task Manager.  Most annoying.&lt;/p&gt;</description></item><item><title>Not So Deep Thoughts on Stored Procedures</title><link>https://www.opgenorth.net/archives/2007-04-26-not-so-deep-thoughts-on-stored-procedures/</link><pubDate>Thu, 26 Apr 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-04-26-not-so-deep-thoughts-on-stored-procedures/</guid><description>&lt;p&gt;Lately I&amp;rsquo;ve come to the conclusion that stored procedures are more of a specialist&amp;rsquo;s tool than a generalist.  To me, stored procedures are the kind of thing you use when you need to optimize your data access, or you have to do something DB specific.  Sure, I&amp;rsquo;ve seen lots (and written lots) of stored procedures to do the basic CRUD (mostly in &lt;a href="http://www.microsoft.com/sql"&gt;SQL Server&lt;/a&gt;, but also in &lt;a href="http://www.postgresql.org"&gt;PostgreSQL&lt;/a&gt;). These days though, I almost think that one doesn&amp;rsquo;t need stored procedures for the basic CRUD, only for specific and special cases.&lt;/p&gt;</description></item><item><title>Embedded Database and .NET</title><link>https://www.opgenorth.net/archives/2007-02-04-embedded-database-and-net/</link><pubDate>Sun, 04 Feb 2007 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2007-02-04-embedded-database-and-net/</guid><description>&lt;p&gt;As mentioned in some of my previous blog entries, I&amp;rsquo;m looking for am embedded database.  At the present, I think that I will remove SQL Server CE for now.  The biggest reason is that, as part of my pet project, the application to run on &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt; as well.  So, that kind of leaves &lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; and &lt;a href="http://www.firebirdsql.org"&gt;Firebird&lt;/a&gt;. &lt;br&gt;&#10;Now, in theory, it should matter much between the two for what I want to do.  I&amp;rsquo;m planning to use &lt;a href="http://www.castleproject.org/activerecord/index.html"&gt;ActiveRecord&lt;/a&gt; for my data layer, and I see that both &lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; and &lt;a href="http://www.firebirdsql.org"&gt;Firebird&lt;/a&gt; are supported.  So, switching between &lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; or &lt;a href="http://www.firebirdsql.org"&gt;Firebird&lt;/a&gt; will be pretty minimal.  What about stored procedures, I hear you say?  Well, truth be told, in my old age, I&amp;rsquo;ve sort of drifted away from stored procedures and look at them with a suspicious eye.  So, the fact that &lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; doesn&amp;rsquo;t have stored procedures really doesn&amp;rsquo;t bother or impact me at all.&lt;br&gt;&#10;I&amp;rsquo;ll do a bit more comparison between the two, and then decided from there which database to use.&lt;/p&gt;</description></item><item><title>Active Record Entry \#1.5/Genom-e Express</title><link>https://www.opgenorth.net/archives/2006-09-08-active-record-entry-1-5genom-e-express/</link><pubDate>Fri, 08 Sep 2006 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2006-09-08-active-record-entry-1-5genom-e-express/</guid><description>&lt;p&gt;Well, as predicted something did distract me from my &lt;a href="http://www.castleproject.org/index.php/ActiveRecord"&gt;ActiveRecord&lt;/a&gt; experiment.  I got a copy of &lt;a href="http://www.genom-e.com"&gt;Genome Express&lt;/a&gt; while at an &lt;a href="http://www.edmug.net/"&gt;EDMUG&lt;/a&gt; meeting recently.  Given that my copy of Genome Express was shiny and new, I installed it and began playing.&lt;/p&gt;&#10;&lt;p&gt;My initialize impression is that it&amp;rsquo;s promising.  I was able to very quickly reverse engineer a SQL 2005 schema and get a heirarchical data model going.  I was able to generate working DAL code for a 12 table database inside of a couple of hours.  About 75% of this time was spent reading the documentation.&lt;/p&gt;</description></item><item><title>Active Record Entry \#1</title><link>https://www.opgenorth.net/archives/2006-08-17-active-record-entry-1/</link><pubDate>Thu, 17 Aug 2006 00:00:00 +0000</pubDate><guid>https://www.opgenorth.net/archives/2006-08-17-active-record-entry-1/</guid><description>&lt;p&gt;Well, after playing with &lt;a href="http://www.castleproject.org/index.php/ActiveRecord"&gt;ActiveRecord&lt;/a&gt; for about a week and a bit now, and I can say it&amp;rsquo;s kind of a love-hate relationship.  I like how easy it is to drop in a class, or to make changes to the DB schema and have that reflected in your model.  Contrawise, changing databases should be just as easy.&lt;/p&gt;&#10;&lt;p&gt;Troubleshooting is a real bitch, and I find the documenatation a bit on the light side.  Also, on the surface, the parent/child relationships seem pretty easy to setup and configure, but I seem to be having some issues with it.  Also, a familiarity with &lt;a href="http://www.nhibernate.org"&gt;NHibernate&lt;/a&gt; definately seems to be helpful when debugging/troubleshoot.&lt;/p&gt;</description></item></channel></rss>