<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>O(geek)</title>
        <link>http://geekswithblogs.net/ryanc/Default.aspx</link>
        <description>Ryan Cain, running in time proportional to Geek.</description>
        <language>en-US</language>
        <copyright>Ryan Cain</copyright>
        <managingEditor>ryancain@live.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>O(geek)</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/ryanc/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>HP Slate 500 vs iPad 2</title>
            <link>http://geekswithblogs.net/ryanc/archive/2011/04/04/hp-slate-500-vs-ipad-2.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2011/04/04/hp-slate-500-vs-ipad-2.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2011/04/04/hp-slate-500-vs-ipad-2.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In many respects is not really fair to compare these two products, as they are mostly targeted toward two different markets, however, the HP Slate 500 is the best offering that Microsoft and it’s partners have put forward to compete head-on with Apple and the rapidly growing tablet/slate market.  &lt;/p&gt;  &lt;p&gt;As way of background I have been a Windows Tablet PC user since the product was first released as an extended version of Windows XP.  I started by testing a Panasonic Toughbook convertible, moved on to what is still my favorite convertible, the Toshiba M200, and last used the Toshiba M400 convertible.  I mainly stuck w/ the convertible form factor as it met the dual need of a development laptop (ie I had to have a keyboard) combined with my desire for a pen input device for note-taking.  The new HP Slate is my first foray into a Windows slate device as my development (Windows, iPhone and Android) has moved to a 15” MacBook Pro.  &lt;/p&gt;  &lt;p&gt;I have also been using an iPad since about a month after its release, and recently upgraded to the new iPad 2, managing to grab hold of one on launch day.  (The 2 is definitely a worth upgrade to the first device.)  &lt;/p&gt;  &lt;h3&gt;HP Slate 500&lt;/h3&gt;  &lt;p&gt;While I may have missed a few quality slate releases in the previous years, in my experience the HP Slate 500 is the best Windows tablet to hit the market.  The Asus Eee Slate may come close, but the size the HP is what makes this unit the perfect business companion.  The screen resolution can be a bit small, especially for software not written for such a short screen, but where you really use it, OneNote, the size is perfect.  &lt;/p&gt;  &lt;p&gt;Even though I love the iPad and use it daily, I still believe Gates has it right when he says pen input is required for a usable tablet device in business.  The iPad is great for consumption, say for execs or board members in a meeting and needing access to information, but doing little in the way of creating digital content.  While there are great Apps for the iPad that actually work to take notes, it still feels like writing on a paper w/ crayon.  This is the single strongest point of the HP Slate and Windows 7 on slate devices.  Handwriting recognition is incredible, OneNote is perfect for use around the office, and the HP Slate is truly a business device in Gates vision.&lt;/p&gt;  &lt;p&gt;This same vision has led the Tablet PC market to sit stale for years and years, until Apple again took an idea and turned it around to create an entirely new market.  What has been missing all these years was a quality Windows interface that worked well in a tablet form factor.  Yes touch and pen input has been around forever, but the standard keyboard and mouse experience has remained the core of a paradigm that has been with us since Windows 1.0. I believe the focus on pen input has also been the biggest distraction keeping Windows from embracing the tablet form factor. Since a tiny stylus point can compensate for bulky, awkward fingers, there is no need to increase fonts or button or various other UI elements.  Thus Windows has remained Windows but now you use a pen instead of a mouse.   &lt;/p&gt;  &lt;p&gt;Of course the single greatest benefit of Windows on a slate, is well, Windows on a slate.  It’s a full Windows PC, so every single piece of your favorite software runs perfectly.  There’s no need to purchase new software, learn new software or change anything you’re used to.  &lt;/p&gt;  &lt;h4&gt;Hardware&lt;/h4&gt;  &lt;p&gt;Enough about Windows, what is the hardware like?  As I mentioned the form factor is great for note-taking.  Unlike when I carried the M400 into a room, I now fit into the meeting environment, with a notepad size device in front of me, not an SUV.  The screen resolution can be a little low, but any higher res and things would be unreadable.  Battery life has been great, I pretty much never worry about the battery, and just keep the unit in its (included) dock when I’m not actively using it.  I find that it’s actually small enough that I use it even during phone calls at my desk instead of sticky notes or various scraps of paper.  &lt;/p&gt;  &lt;p&gt;There is a bit of adjustment is getting used to the NTrig digitizer over the Wacom digitizer though.  Wacom makes an incredibly accurate and high quality digitizer that I have loved on the M400.  The HP, while the screen is much clearer, doesn’t have quite the same resolution and my handwriting isn’t quite as sharp as it used to be.  This took about a week to get used to.  Another change from the Wacom is that the stylus requires a battery, which a AAAA (yes 4 A’s) comes with the stylus.  This makes it a bit thicker than expected but still a very comfortable to use.  &lt;/p&gt;  &lt;p&gt;There are camera’s on the front and back, though I really haven’t used either beyond the initial tests with Skype.  There is also an SD card slot and single built in USB port.&lt;/p&gt;  &lt;p&gt;The nicest thing HP did was include both a dock and a leather case for the unit.  This helps reduce the total cost of the unit and gives you everything you need right in the box.  The dock is nice and includes 2 additional USB ports, and an HDMI port.  The case includes a spot for the stylus, though it would have been nice to also have a pocket for business cards or other small pieces of paper.  &lt;/p&gt;  &lt;p&gt;Overall the hardware design on this unit is excellent.  HP even went to the trouble of hiding all the serial numbers, and government labels in a small pullout plastic component, rather than covering the back of the unit with crap like regular Windows based units.  &lt;/p&gt;  &lt;p&gt;Now only if Windows 8 really does improve the tablet experience, this might be the perfect device for business users.  &lt;/p&gt;  &lt;h3&gt;iPad 2&lt;/h3&gt;  &lt;p&gt;As I write this the iPad 2 is still very hard to find in stores or online, I was lucky enough to pick up a unit on launch day before inventories ran out around the country.  &lt;/p&gt;  &lt;p&gt;There have been many many reviews on the iPad 2, but one item I’d like to point out is the upgraded dual-core CPU.  I’m not sure if my expectations were off on the original iPad or not, but the vast majority of reviews that I’ve read have said the original CPU was more the adequate for regular usage.  What is interesting is from the moment I started using the original iPad I felt that the CPU was underpowered and that application performance was impacted because of that.  Small things stuck out, like switching between apps, or scrolling being jittery on many native iPad apps.  While I fully understand and appreciate the need to limit the CPU for the benefit of power consumption, this was always a weak spot for me.  So much in fact that I was using the original less and less during my regular daily routine as Apps such as MobileRSS were just to slow to use while syncing my Google Reader feeds in the background.  &lt;/p&gt;  &lt;p&gt;The upgraded iPad 2 CPU nearly resolves this issue 100% for the current swath of Apps.  There are huge visible performance gains in many applications, everything is more responsive and snappier than before.  MobileRSS is fully usable while synchronizing in the background.  The WSJ app, while it still has usability issues, is actually usable on the upgraded CPU.  To me this is the single best improvement that makes the iPad 2 a very worthy successor to the original release.  &lt;/p&gt;  &lt;h4&gt;iPad 2 in Business&lt;/h4&gt;  &lt;p&gt;It has been said across the web, the iPad is a consumption device.  You read books, watch movies, read PDF’s.  The on-screen keyboard is nice and okay to use, but it is still a far cry from a real desktop keyboard.  There are different stylus you can purchase that work okay, and apps like Penultimate are great at ignoring your wrist as it rests on the screen.  But all of these input mechanisms are a kludge to get you by.  &lt;/p&gt;  &lt;p&gt;The keyboard is just too slow to take reasonable notes, and the stylus is much like writing on a paper with crayon or kids markers.  Do both work?  Definitely. Are they realistic to use in a fast paced meeting? Maybe if you practice *a lot*.  &lt;/p&gt;  &lt;p&gt;Where the iPad does shine is the many cloud based apps and extreme ease of use.  For meetings where you don’t need to take notes, it is the perfect device to send the agenda’s and backup documentation to the cloud via a service like Drop Box, then consume those documents digitally.  The PDF readers let you stay focused on the documents at hand and quickly browse to find relevant information.  This is dramatically better than trying to find supporting documents in stacks of file folders or notebooks.  &lt;/p&gt;  &lt;p&gt;Instant on and instant access to Apps are also another huge win for the iPad.  While the SSD on the HP really makes Windows fly, there is still a 10 – 60 second delay as you wait for a sleeping slate to wake.  The iPad provides instant access to the information you need when you need it, not after the agenda has moved to the next topic.  &lt;/p&gt;  &lt;h3&gt;Verdict&lt;/h3&gt;  &lt;p&gt;If is very hard to pick a specific device as the winner in this comparison.  Each have their strengths and weaknesses in the business world.  For me pen input is the deciding factor in my day-to-day workflow, so the HP Slate 500 goes with me to all my meetings.  &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/144695.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2011/04/04/hp-slate-500-vs-ipad-2.aspx</guid>
            <pubDate>Mon, 04 Apr 2011 18:49:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/144695.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2011/04/04/hp-slate-500-vs-ipad-2.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/144695.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/144695.aspx</trackback:ping>
        </item>
        <item>
            <title>Disneyland Inside Out on iPhone and Android</title>
            <link>http://geekswithblogs.net/ryanc/archive/2011/02/21/disneyland-inside-out-on-iphone-and-android.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2011/02/21/disneyland-inside-out-on-iphone-and-android.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2011/02/21/disneyland-inside-out-on-iphone-and-android.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It's hard to believe October was the last time I was over here on my blog.  Ironically after getter the developer phone from Microsoft I have been knee deep in iPhone programming and for the past few weeks Android programming again.  This time I've spent all my non-working hours programming a fun project for my "other" website, &lt;a href="http://disneylandinsideout.com"&gt;Disneyland Inside Out&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://disneylandinsideout.com"&gt;Disneyland Inside Out&lt;/a&gt;, a vacation planning site for Disneyland in California, has been around in various forms since June 1996.  It has always been a place for me to explore new technologies and learn about some of the new trends on the web.  I recently migrated the site over to DotNetNuke and have been building out custom modules for DNN.  I've also been hacking things together w/ the URLRewrite module in IIS 7.5 to provide strong SEO optimized URLs.  I can't say all that has really stuck within the DNN model of doing things, but it has worked pretty well.&lt;/p&gt;
&lt;p&gt;As part of my learning process, I spent most of the Fall bringing &lt;a href="http://disneylandinsideout.com/mobile"&gt;Disneyland Inside Out to the iPhone&lt;/a&gt;.  I will post more details on my development experiences later.  But this project gave me a really great opportunity to get a good feel for Objective-C development.  After 3 months I actually feel somewhat competent in the language and iPhone SDK, instead of just floundering around getting things to work.  The project also gave me a chance to play with some new frameworks on the iPhone and really dig into the Facebook SDK.  I also dug into some of the Gowalla REST api's as well.  We've been live with the app in iTunes for just about 10 days now, and have been sitting in the top 200 of free travel apps for the past few days.  You can get more info and the direct iTunes download link on our site:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://disneylandinsideout.com/mobile"&gt;Disneyland Inside Out for iPhone&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since launching the iPhone version I have gotten back into Android development, porting the Disneyland Inside Out app over to Android.  As I said in my first review of iPhone vs. Android, coming from a managed code background, Android is much easier to get going with.  I just about 3 weeks total I will have about 85 - 90% of the functionality up and running in the Android app, that took probably 1.5 - 2x's that time for iPhone. &lt;/p&gt;
&lt;p&gt;That isn't a totally fair comparison as I am much more comfortable w/ Xcode and Objective-C today and can get some of the basic stuff done much faster than I could in the fall.  Though I'd say some of the hardest code to debug is still the null pointer issues on objects that were dealloc'd too early in Objective-C.  This isn't too bad with the NSZoombies enabled for synchronous code, but when you have a lot of async, which my app does, it can be hairy at times to track exactly what was causing the issue.  &lt;/p&gt;
&lt;p&gt;I will post more details later, as I am trying to wrap up a beta of the Android app today.  But in the meantime, if you have an iPhone, iPod Touch or iPad head on over to the site and take a look at my app.  &lt;br /&gt;
 &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/144035.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2011/02/21/disneyland-inside-out-on-iphone-and-android.aspx</guid>
            <pubDate>Mon, 21 Feb 2011 18:17:40 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/144035.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2011/02/21/disneyland-inside-out-on-iphone-and-android.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/144035.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/144035.aspx</trackback:ping>
        </item>
        <item>
            <title>Looking to Rock the PDC 2010 LG E900 Phone on AT&amp;T?</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/10/29/looking-to-rock-the-pdc-2010-lg-e900-phone-on.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/10/29/looking-to-rock-the-pdc-2010-lg-e900-phone-on.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/10/29/looking-to-rock-the-pdc-2010-lg-e900-phone-on.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you are one of the numerous PDC10 attendees moving your iPhone SIM to your free LG-E900 Windows Phone 7, and you're on AT&amp;amp;T, you may have noticed the minute you lost WiFi coverage your data stopped as well.  If you read through the paperwork that comes with the phone there was a quick little note that says "you may need to manually configure your APN setting."  Well that was an important hint to getting your Windows Phone 7 up and running with data on AT&amp;amp;T.  To updates the APN do the following on your phone:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Open Settings&lt;/li&gt;
    &lt;li&gt;Cellular&lt;/li&gt;
    &lt;li&gt;Scroll to the bottom where is says Set or Edit APN
    &lt;ul&gt;
        &lt;li&gt;APN:  wap.cingular&lt;/li&gt;
        &lt;li&gt;Username:  wap@cingulargprs.com&lt;/li&gt;
        &lt;li&gt;Password:  CINGULAR1&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes those are all cingular names, but that's what AT&amp;amp;T still uses.  These settings are those that are required for the iPhone to work, so if you're coming from a non-iPhone plan, these settings may not work, or you may be required to upgrade your data plan.  Also I won't guarantee that this won't impact our data plans in any way, it simply gets the Windows Phone 7 up and running on the AT&amp;amp;T iPhone data plan, and seems to work fine for me.  &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/142506.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/10/29/looking-to-rock-the-pdc-2010-lg-e900-phone-on.aspx</guid>
            <pubDate>Fri, 29 Oct 2010 13:41:29 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/142506.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/10/29/looking-to-rock-the-pdc-2010-lg-e900-phone-on.aspx#feedback</comments>
            <slash:comments>17</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/142506.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/142506.aspx</trackback:ping>
        </item>
        <item>
            <title>PDC 2010 OData Feed iPhone App</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/10/26/pdc-2010-odata-feed-iphone-app.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/10/26/pdc-2010-odata-feed-iphone-app.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/10/26/pdc-2010-odata-feed-iphone-app.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I spent a few hours today and hacked, and I do mean hacked, together a quick iPhone App to consume the OData feed for PDC 2010.  Since the turnaround is way to quick to push something like this through the app store, I've pushed to code up to github for anyone to download and play with.  &lt;br /&gt;
&lt;br /&gt;
You can access it at:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://github.com/oofgeek/PDC10-OData-Viewer"&gt;http://github.com/oofgeek/PDC10-OData-Viewer&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I will in no way claim that this code is good, that it manages memory well or does anything other than "work".  But if you're heading to PDC10, and have an iPhone and an Apple Dev account download the code and party on!  Also note that I'm fairly new to iPhone development, and coming from over 8 years with .NET I'm still definitely cutting my teeth on this new platform.  &lt;br /&gt;
&lt;br /&gt;
In order to get the code to compile you will need the OData iPhone SDK, which you can download at:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.odata.org/developers/odata-sdk"&gt;http://www.odata.org/developers/odata-sdk&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Follow the install instructions that come with the SDK to re-configure the project to point to your install of the SDK.  The header and library paths on the Project info are currently pointing to a folder on my machine, as well as the binary for the library.  &lt;br /&gt;
&lt;br /&gt;
Also this is my first time pushing out code to github, so hopefully I didn't royally screw something up.&lt;br /&gt;
&lt;br /&gt;
Have fun and see you in Redmond!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/142460.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/10/26/pdc-2010-odata-feed-iphone-app.aspx</guid>
            <pubDate>Wed, 27 Oct 2010 04:19:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/142460.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/10/26/pdc-2010-odata-feed-iphone-app.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/142460.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/142460.aspx</trackback:ping>
        </item>
        <item>
            <title>Tom Bihn Bags&amp;ndash;Worth the Money</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/09/23/tom-bihn-bagsndashworth-the-money.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/09/23/tom-bihn-bagsndashworth-the-money.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/09/23/tom-bihn-bagsndashworth-the-money.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;For about 5 years now I’ve been carrying around the best recent TechEd bag; the messenger style bag from 2005.  It served me well as it could easily carry 2 laptop’s, plus loads of additional tech gear; iPad, multiple external hard drives, cables, etc.  My only dislike of the bag was that the strap never seemed that sturdy, and I occasionally had issues where the clip would reverse itself, making it very easy for the strap to come loose without me noticing.  &lt;/p&gt;  &lt;p&gt;Unfortunately this past week the metal clip part of the strap decided to completely break, which left my bag tumbling to the ground, 2 laptops and all.  Thankfully there was enough padding that neither were damaged, but since they are both MacBook Pro’s, the aluminum has a decorative dent on the corner now.  This led me to do some research on options that were available, of which many roads pointed to the Tom Bihn bags.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.tombihn.com/" href="http://www.tombihn.com/"&gt;http://www.tombihn.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I had heard about the Brain Bag for many years (originally from .NET Rocks), and have nearly purchased one in the past, but I just could justify spending the money.  Never thinking $140 for a bag to protect $5,000+ in equipment was probably worth it, until this most recent close call. &lt;/p&gt;  &lt;p&gt;Since I was coming from a messenger style bag, I decided to stick with the same style bag and selected the Empire Builder “briefcase”, the Absolute Shoulder Strap, 2 Brain Cells and a medium sized Cordura Organizer Pouch.  &lt;/p&gt;  &lt;p&gt;My biggest concern with the Empire Builder was whether or not it would hold both of my MacBooks (13” unibody MacBook Pro and 15” unibody MacBook Pro).  Well, Tom Bihn had posted a video to YouTube showing exactly how accommodating this bag is, so that answered that question.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:cf2c0d02-101d-4786-943b-77b47294b992" class="wlWriterEditableSmartContent"&gt;&lt;div id="5bc6064e-7883-4c33-8814-8621605a4215" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=7TLFKY3OCRY" target="_new"&gt;&lt;img src="http://gwb.blob.core.windows.net/ryanc/WindowsLiveWriter/TomBihnBags_DBBD/videoc31160029c44.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('5bc6064e-7883-4c33-8814-8621605a4215'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/7TLFKY3OCRY&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/7TLFKY3OCRY&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:425px;clear:both;font-size:.8em"&gt;Tom Bihn Empire Builder with 2 Laptops&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;The American made feature, that leads to the high price of the bags, is nice, but what’s even better is the quality of the product that you receive.  This is the first bag I have ever owned that has no sign of loose stitches or threads… anywhere!  Typically “out of the box” there are a few here or there that simply show the lack of craftsmanship, even on backpacks I’ve paid close to $200 for.  This quite simply is the highest quality bag I have ever held in my hand.  &lt;/p&gt;  &lt;p&gt;Beyond the craftsmanship the quality of materials appear to be excellent.  Shoulder strap clips are much stronger than my TechEd bag, zippers are high quality, and materials are top notch.  Even small details like the handles leave you feeling as though they are part of the backbone of the bag, not some added afterthought of an attachment that could break at any moment.  &lt;/p&gt;  &lt;p&gt;The bag has many different compartments and features, but rather than reinvent the wheel, Tom Bihn once again has posted a video showing off all the features of the bag:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3128a2cf-daef-4b92-a04e-4b3cb6aae9f1" class="wlWriterEditableSmartContent"&gt;&lt;div id="eac53133-3881-49ab-93cf-be042c948b93" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=zEJwe3Pfk5Y" target="_new"&gt;&lt;img src="http://gwb.blob.core.windows.net/ryanc/WindowsLiveWriter/TomBihnBags_DBBD/video3d2f01cef7e7.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('eac53133-3881-49ab-93cf-be042c948b93'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/zEJwe3Pfk5Y&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/zEJwe3Pfk5Y&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:425px;clear:both;font-size:.8em"&gt;Empire Builder Features&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Inside the bag, the Brain Cells are excellent protection for your laptops.  They definitely add extra bulk, but coming from someone who just pictured 2 cracked screens as his bag fell to the cement floor, that extra padding is now well worth it in my view.  The Brain Cells are hard sided with quite a bit of padding on the “bottom” (the bottom changes depending on if your order the horizontal or vertical cells).  They pretty much protect your laptop from any direction, from drops, or from stabs from other hard objects in your bag.  You can, if you want, order the Brain Cells for use on their own.  Each cell has its own handles, and place for a shoulder strap.  If you’re at a conference or such you can easily pull the cell out of your larger bag and carry just the cell around with you during the day.  &lt;/p&gt;  &lt;p&gt;The Absolute Shoulder Strap is probably overpriced, but I do agree with most of the reviews that I have read, namely it is the most comfortable shoulder strap I have ever had on a bag, especially when carrying 2 laptops at a time.  The neoprene padding feels exactly as you’d expect, and is worlds better than any of the sliding foam pads you normally experience with most bags.  &lt;/p&gt;  &lt;p&gt;Back on the overall bag, my only gripe is the “forced” modularity when ordering.  I love that you can order Brain Cells that fit your laptop, and additional pouches for organization, but wow the price adds up extremely fast.  I realize that the quality is a big reason you are paying top dollar, but it would be nice to at least include a single Brain Cell or such as part of the price of the bag.  Without that you are buying a bag that offers virtually no protection for your laptop.  I realize that not everyone is buying the bag for use with a laptop, so even if there were package deals, where buying a bag plus a brain cell saves you $30, would be a perfect compromise.  &lt;/p&gt;  &lt;p&gt;Overall if you are in the market for a bag, and carry lots of expensive equipment with you, I’d highly recommend looking into Tom Bihn as an option.  Pricing isn’t cheap, but you are definitely getting the quality you would expect from this price range.  &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/141955.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/09/23/tom-bihn-bagsndashworth-the-money.aspx</guid>
            <pubDate>Thu, 23 Sep 2010 23:28:26 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/141955.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/09/23/tom-bihn-bagsndashworth-the-money.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/141955.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/141955.aspx</trackback:ping>
        </item>
        <item>
            <title>The mapping of interface member [...] is not supported.</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/09/10/the-mapping-of-interface-member-.-is-not-supported.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/09/10/the-mapping-of-interface-member-.-is-not-supported.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/09/10/the-mapping-of-interface-member-.-is-not-supported.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is good to know, strange solution but it works:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/bc2fbbce-eb63-4735-9b2d-26b4ab8fe589"&gt;http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/bc2fbbce-eb63-4735-9b2d-26b4ab8fe589&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I created an Interface that my Linq to SQL classes implement so that I can create a generic function that will work across a few tables.  When I used the double equals (==) instead of the .Equals() in my LINQ query I got the runtime exception:&lt;/p&gt;
&lt;p&gt;&lt;span name="subject"&gt;The mapping of interface member [...] is not supported.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Changing my query up to use the .Equals() it runs beautifully. &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/141747.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/09/10/the-mapping-of-interface-member-.-is-not-supported.aspx</guid>
            <pubDate>Fri, 10 Sep 2010 19:47:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/141747.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/09/10/the-mapping-of-interface-member-.-is-not-supported.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/141747.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/141747.aspx</trackback:ping>
        </item>
        <item>
            <title>Mobile Development Resources (iPhone &amp;amp; Android)</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/09/08/mobile-development-resources-iphone-amp-android.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/09/08/mobile-development-resources-iphone-amp-android.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/09/08/mobile-development-resources-iphone-amp-android.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;While building our mobile app I came across a few valuable resources for some of the specific issues I was facing, I thought I'd share those in case others were looking for similar info.&lt;/p&gt;  &lt;h2&gt;Customized Color Progress Bar&lt;/h2&gt;  &lt;br /&gt;  &lt;h3&gt;iPhone&lt;/h3&gt;  &lt;p&gt;This one probably violates all UI rules defined by Apple, but we were looking to change the color of the progress bar for our app based on certain values.  As the bar filled up, we wanted it to change to red so the user could quickly see while driving that is represented a different state than when it was green.  There is no built in mechanism to do this on the iPhone, but I did come across a great free 3rd party progress bar that only requires attribution for licensed use:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://p-development.nl/blog/colored-uiprogressview"&gt;http://p-development.nl/blog/colored-uiprogressview&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Android&lt;/h3&gt;  &lt;p&gt;Android does have the colorization feature built into the framework.  All that is required is an XML file for your progress bar and an attribute on your progress bar itself.  The XML file should be placed in the res/drawable folder in your project and look something like:&lt;/p&gt;  &lt;pre class="brush: xml;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;layer-list xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
&amp;lt;item android:id="@android:id/background"&amp;gt;
    &amp;lt;shape&amp;gt;
        &amp;lt;corners android:radius="5dip" /&amp;gt;
        &amp;lt;gradient
                android:startColor="#ff9d9e9d"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:angle="270"
        /&amp;gt;
    &amp;lt;/shape&amp;gt;
&amp;lt;/item&amp;gt;

&amp;lt;item android:id="@android:id/secondaryProgress"&amp;gt;
    &amp;lt;clip&amp;gt;
        &amp;lt;shape&amp;gt;
            &amp;lt;corners android:radius="5dip" /&amp;gt;
            &amp;lt;gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
            /&amp;gt;
        &amp;lt;/shape&amp;gt;
    &amp;lt;/clip&amp;gt;
&amp;lt;/item&amp;gt;
&amp;lt;item
    android:id="@android:id/progress"
&amp;gt;
    &amp;lt;clip&amp;gt;
        &amp;lt;shape&amp;gt;
            &amp;lt;corners
                android:radius="5dip" /&amp;gt;
            &amp;lt;gradient
                android:startColor="#FF3333"
                android:endColor="#800000"
                android:angle="270" /&amp;gt;
        &amp;lt;/shape&amp;gt;
    &amp;lt;/clip&amp;gt;
&amp;lt;/item&amp;gt;

&amp;lt;/layer-list&amp;gt;&lt;/pre&gt;

&lt;p&gt;If the above is named “redprogress.xml” then simply add an attribute to your progress bar tag in the UI of:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;android:progressDrawable="@drawable/redprogress"&lt;/pre&gt;

&lt;h2&gt;JSON Parsing&lt;/h2&gt;

&lt;br /&gt;

&lt;h3&gt;iPhone&lt;/h3&gt;

&lt;p&gt;All of the data we use in our app comes from a REST service that pushes out JSON formatted data.  The iPhone framework doesn't include any libraries for parsing of the JSON data, but as with the colored progress bar there is a great open source 3rd-party library that provides that parsing for you:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://code.google.com/p/json-framework/"&gt;http://code.google.com/p/json-framework/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One gotcha though is that if you are pushing out your JSON data from a .NET REST service, apparently there is not standard representation for dates yet within JSON, so you will have to roll your own date parsing method.  A good starting point to parse the .NET formatted JSON date is at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://efreedom.com/Question/1-1757303/Parsing-JSON-Dates-iPhone"&gt;http://efreedom.com/Question/1-1757303/Parsing-JSON-Dates-iPhone&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Android&lt;/h3&gt;

&lt;p&gt;Android has all the JSON objects and parsing already built in and accessible with no extra libraries needed.  Access your REST service is as simple as building up and HTTP connection and reading back the JSON as a string, then parsing as such:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;JSONObject json = new JSONObject(result);
int myInt = json.getInt("MyJsonFormattedDataItem"));&lt;/pre&gt;



&lt;p&gt;As with iPhone though, there is no built in parsing method for the .NET date type formatted in JSON so you will have to roll your own.  &lt;/p&gt;

&lt;h2&gt;Icons &amp;amp; Graphics&lt;/h2&gt;

&lt;p&gt;On the iPhone side Glyphish has some great free icons at:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://glyphish.com/" href="http://glyphish.com/"&gt;http://glyphish.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They are also raising a few dollars and building out @2X icons for the retina display and the iPad.&lt;/p&gt;

&lt;p&gt;For Android every icon that is included on the phones are part of the SDK that you can spelunk around and find.  This is great to use the standard icons for Preferences, Refresh and such.  There is also a great starter pack from Google that you can build your own icons from:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://developer.android.com/guide/practices/ui_guidelines/index.html" href="http://developer.android.com/guide/practices/ui_guidelines/index.html"&gt;http://developer.android.com/guide/practices/ui_guidelines/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both platforms have many other options available for icons, these are the 2 sources we used along with having an artist create some of the more important icons such as the Application icon.  &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/141688.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/09/08/mobile-development-resources-iphone-amp-android.aspx</guid>
            <pubDate>Wed, 08 Sep 2010 20:58:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/141688.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/09/08/mobile-development-resources-iphone-amp-android.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/141688.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/141688.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET AJAX Control Toolkit and DotNetNuke Module Development</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/09/07/asp.net-ajax-control-toolkit-and-dotnetnuke-module-development.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/09/07/asp.net-ajax-control-toolkit-and-dotnetnuke-module-development.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/09/07/asp.net-ajax-control-toolkit-and-dotnetnuke-module-development.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;While working to get the AutoCompleteExtender control up and running in a custom DNN module, I ran across a forum post that said doing so "just works", which if you have previous ASP.NET AJAX experience and know what is and isn't in DNN is probably very true.  Trying to get it to run for the first time though, there's a few items to be aware of. &lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;First recommendation, go download Fiddler (&lt;a href="http://www.fiddler2.com/fiddler2/"&gt;http://www.fiddler2.com/fiddler2/&lt;/a&gt;), like now... no seriously go download it. &lt;/p&gt;
&lt;p&gt;If you are running DNN in a dev environment on localhost, I'd also recommend getting Firefox for testing.  There is a fiddler plugin for Firefox that allows all traffic to be forwarded to fiddler, including localhost traffic, something that isn't easy for Internet Explorer to do.  I'm sure there's some extra tricks to getting DNN to use the ipv4.fiddler name (see the docs post fiddler install that described using the tool with IE), but I didn't have a chance to get into that, and Firefox just works, plus it forces you to test your site in another browser.&lt;/p&gt;
&lt;p&gt;The combination of these are are exactly what you need to debug any errors you might be getting but don't see since the AJAX calls are happening in the background (duh). &lt;/p&gt;
&lt;p&gt;You'll also need to download and install the ASP.NET AJAX Control Toolkit from Microsoft (&lt;a href="http://www.asp.net/ajaxlibrary/act.ashx"&gt;http://www.asp.net/ajaxlibrary/act.ashx&lt;/a&gt;).  What is very nice (I'm running DNN 5+) is the core pieces supporting ASP.NET AJAX are already in place in DNN, so there is nothing you need to do in the CMS itself.  The control toolkit when compiled will copy itself into the bin directory of your custom module, so there's nothing extra to install on your DNN server either. &lt;/p&gt;
&lt;h2&gt;The Service&lt;/h2&gt;
&lt;p&gt;Something important to remember is a DNN Module is an ASP.NET user control, which means the default callback mechanisms for AJAX to a static method on a page, will not work.  In fact the built in Smart Tag tool to "Add AutoComplete Page Method" will error out with the error "Cannot create page method "GetCompletionList" because no CodeBehind or CodeFile file was found!".  You will need to either create your own ASMX web service and WCF service.  In my case I simply added the service to my custom module, but since it's just a web service you can serve that up from anywhere. &lt;/p&gt;
&lt;p&gt;I used the VS 2010 built-in "AJAX-enabled WCF Service", but you can use a standard ASMX web service as well, though you do need to decorate this service correctly for it to work with AJAX (notably the class need to be decorated with [ScriptService]).  This automatically decorates your class with all the necessary attributes for it to work as an AJAX enabled web service.  This will also create a new web.config in your custom module and add all sorts of stuff that really can't be there since your module is hosted within the context of a larger site.  You'll need to copy the relevant bits into the web.config for your DNN site.  The relevant bits include everything in the &amp;lt;system.serviceModel&amp;gt; section, including the behaviors, serviceHostingEnvironment and services. &lt;/p&gt;
&lt;p&gt;Now you can add your WCF service for the auto complete.  In my case I'm working against a Linq-to-SQL model, so my method looks like (note that if you use clipboard inheritance and copy from another project that created this method in the code behind of an ASP.NET page this method is marked as static, which it can't be in the context of a true service.  This is soemthing that I kept missing and causes things not to run during execution):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;        [OperationContract]&lt;br /&gt;
        public string[] GetCompletionList(string prefixText, int count, string contextKey)&lt;br /&gt;
        {&lt;br /&gt;
            DataClassesDataContext dc = new DataClassesDataContext();&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;            var q = from t in dc.Tags&lt;br /&gt;
                    where t.Description.ToLower().StartsWith(prefixText.ToLower())&lt;br /&gt;
                    select t.Description;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;            return q.Take(count).ToArray();&lt;br /&gt;
        }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That's it for your service. &lt;/p&gt;
&lt;h2&gt;The Client&lt;/h2&gt;
&lt;p&gt;On the client side, if you've followed the Microsoft install instructions, you should now be able to drag and drop a TextBox onto your page and extend it with the AutoCompleteExtender.  Since DNN is already ASP.NET AJAX aware, it already has a ScriptManager on the page, so if you happen to add that or a ToolkitScriptManager to your code, your module will blow up at runtime.  If needed you can always get at this script manager and add attributes and info to do via code.  In this case the AutoCompleteExtender has all it needs in the tag attributes. &lt;/p&gt;
&lt;p&gt;The two key tag attributes you need for the AutoCompleteExtender are:&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;
&lt;p&gt;ServiceMethod&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;="GetCompletionList"&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;ServicePath&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;="MyService.svc"&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;&lt;p&gt;The first tells the control what web service method to call, the second is the actual URL of the service that you will be calling.  (DNN appears to resolve the URL correctly into the folder DesktopModules where your custom module code is located.) &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;That should be all you need to get up and running.  It is nice to see these "newer" technologies supported by DNN while the CMS lags a big behind in other areas. &lt;/p&gt;
 &lt;img src="http://geekswithblogs.net/ryanc/aggbug/141663.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/09/07/asp.net-ajax-control-toolkit-and-dotnetnuke-module-development.aspx</guid>
            <pubDate>Tue, 07 Sep 2010 15:30:24 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/141663.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/09/07/asp.net-ajax-control-toolkit-and-dotnetnuke-module-development.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/141663.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/141663.aspx</trackback:ping>
        </item>
        <item>
            <title>Thoughts on Android and iPhone Development</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/08/25/thoughts-on-android-and-iphone-development.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/08/25/thoughts-on-android-and-iphone-development.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/08/25/thoughts-on-android-and-iphone-development.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Over the past few months I had the great opportunity to tackle the challenge of learning both the iPhone and Android mobile platforms for the first time as a developer.  I had used both previously as a consumer, so it was interesting to finally get a chance to jump in with both feet for a work project.&lt;/p&gt;
&lt;p&gt;I have been focused on .NET development in C# for the past 8 years, but originally cut my teeth on unmanaged C &amp;amp; C++ during the 90's, along with a smattering of Java development for college courses during the same time.  Both platforms brought me back full circle and in some cases were frighteningly deja vu, especially since we're now 10+ years out from my work in those languages.&lt;/p&gt;
&lt;p&gt;The following are some of my observations as a .NET managed code developer building apps for these platforms for the first time.&lt;/p&gt;
&lt;h2&gt;Frameworks and Languages&lt;/h2&gt;
&lt;p&gt;It was an absolute blast to learn 2 brand new frameworks in the span of 3 months.  If you are a managed code developer and want an easy transition into mobile (this applies until Windows Phone 7 is released), I highly recommend trying Android as your first platform.  Virtually every managed code concept from the Microsoft world is translated on Android in one form or another.  The challenge is definitely the iPhone, but a very fun one at that.&lt;/p&gt;
&lt;h3&gt;iPhone&lt;/h3&gt;
&lt;p&gt;The language, the concepts, even the message (read function/method) names are foreign and brand new for me as a managed code developer.  Actually having to think about object lifecycle and release memory is so last millennium.  It is also extremely powerful for the resource constraints we are currently under on our mobile devices.  Apple has a great Build and Analyze tool to help you find memory leaks and unreleased objects, along with instrumentation to do the same.  Though quite interestingly, virtually everyone warns you not to run memory leak tools on the iPhone simulators, as those tools themselves have major memory leaks that will cloud your data with extraneous noise.&lt;/p&gt;
&lt;p&gt;Probably the single most powerful part of iPhone development is the UI framework that is built into the box for you.  If you have wondered how so many iPhone apps work in the same manner, it is because Apple has created project templates to use their recommended UI design, along with providing specific UI elements to ensure that consistency.  As a developer this is great, as I can build easy to use apps without having to bend over backward to do something that works just like the native Apps on the device.  This I believe is one of the strongest unifying elements of the iPhone platform.&lt;/p&gt;
&lt;p&gt;Objective-C itself is a very unique addition to the C language.  It is very evident to see where some of its features and concepts are a workaround for the limitations of its parent language.  It bends over backward to keep true C compatibility, often times to the detriment of the usability of the language for a beginner.  Messages are a very interesting concept and are essentially methods or functions that are late bound at runtime.  This provides a cool design concept for the iPhone API's that gives Apple some extended flexibility to add Messages to the API that your objects can handle, but at the same time don't break backward compatibility to code that doesn't already implement that Message.&lt;/p&gt;
&lt;h3&gt;Android&lt;/h3&gt;
&lt;p&gt;Android quite simply is a modern managed platform for the mobile world.  XML is the goo that defines the UI and Java is present in all its managed wonder.  Even with the limited tooling (see below) Google manages to throw in small niceties to the framework that just make developers lives easy.&lt;/p&gt;
&lt;p&gt;For this project we published a REST web services with JSON data.  For the iPhone I had to find a 3rd party framework to do the JSON processing for me, Google has this built in.  I also needed to customize the progress bar colors.  The iPhone required another 3rd party component, Google required some minor XML definition files with new colors and the progress bars were updated.&lt;/p&gt;
&lt;p&gt;Even beyond that Android has great localization support, and automatically pushes strings and other content out into XML resource files that can be changed on a per language basis.  This is the first time I have seen this in a platform in a method that literally forces it upon the developer.  Typically localization is an after thought and code becomes littered with English language questions and phrases.  Microsoft makes it fairly easy to pull those strings out into resource files and so does Apple, but neither do it by default like Google does for Android in Eclipse.&lt;/p&gt;
&lt;p&gt;The most lacking part of the framework is really the UI.  While very easy to create using XML, it provides such a level of flexibility that it is very easy for developers to quickly devolve their App into a world of extremely poor usability.  This is very evident in the quality of applications on the Android platform even some A-list titles aren't quite as polished as their iPhone counterparts.&lt;/p&gt;
&lt;h2&gt;Tooling&lt;/h2&gt;
&lt;p&gt;Tooling is something Microsoft has always done well, especially with their most recent releases of Visual Studio, they have removed virtually any rough edge around sitting down and writing some code. Needless to say I come from a world of being very spoiled and have high expectations for what the tools should take care of for you.&lt;/p&gt;
&lt;h3&gt;Xcode&lt;/h3&gt;
&lt;p&gt;Like most Apple products Xcode seems to "just work".  Creating new projects based on templates for the iPhone give a great start project, dragging and dropping files between the Finder and Xcode makes added resources a breeze.&lt;/p&gt;
&lt;p&gt;If there is a weak link in this non-IDE, it has to be Interface Builder.  Applying the drag, drop, code concepts of Visual Studio leaves you completely lost in Xcode.  There is a definite learning curve that requires actually picking up a book and reading through some examples (step by step ones I might add) before you really get the hang of things.  Buttons and Views in IB don't automatically link to variables or messages in your code, and require a manual linking before they can be used.  Given the resource starved nature of mobile, this is completely understandable, but not intuitive.&lt;/p&gt;
&lt;p&gt;Often it is very easy to write some code, add a few variables for your onscreen controls, but completely forget to synthesize them as an IBOutlet or add a message that you forget to decorate with the IBAction keyword.  This often leads to a few minutes of confusion as your save, recompile and wonder why you're getting nothing when dragging and dropping your controls in IB to your code.&lt;/p&gt;
&lt;p&gt;That also lends itself to another unique aspect of Interface Builder; you actually drag and drop between an onscreen UI components to a visual representation of your code to pair the two items up.  Granted this isn't the only method to do such, but is definitely an Apple way of "writing" code.&lt;/p&gt;
&lt;p&gt;Before I mentioned Xcode is a "non-IDE".  That applies to its 3.x and earlier incarnations.  The best way to describe the UI is something like Visual Studio and Adobe Photoshop combined.  Some integration, but lots of tools and document windows open everywhere, especially with Interface Builder open.  It appears that Apple is well aware of this Window overpopulation as there are some great enhancements in the works for Xcode 4. (﻿&lt;a href="http://developer.apple.com/technologies/tools/whats-new.html"&gt;http://developer.apple.com/technologies/tools/whats-new.html&lt;/a&gt;)  I believe some of the specifics are still under NDA, but needless to say the content they showed at this years WWDC looks incredible for the next version of Xcode, very Visual Studio meets Apple.&lt;/p&gt;
&lt;p&gt;The biggest drawback in tooling to me is actually that lack of a true device emulator.  Instead Apple has created what they call Simulators that essentially run natively on your Mac desktop/laptop.  These simulators do not mimic the devices 100%.  There are bugs in the Simulators not present on the devices, and scarily some of your code can run without issue on the simulator that crashes immediately on the device.  This makes it incredibly difficult to build a wide array of test platforms to test your App on.  Instead what we did was start collecting old iPhone and iPod touches to install different version of the iOS on for our testing.&lt;/p&gt;
&lt;h3&gt;Eclipse&lt;/h3&gt;
&lt;p&gt;Where Java and the Android framework may have been easier to develop in than the iPhone, Eclipse more than made up its role to increase the level of frustration in actually writing Android apps.  I ended up configuring the same MacBook Pro I used for iPhone development to do the Android development.&lt;/p&gt;
&lt;p&gt;My number one frustration with Eclipse (Galileo) is its time bombed memory leak.  Upon first opening the IDE it flies along swimmingly.  Documents open fast, debugging works like a charm, its a great IDE from a speed perspective.  Somewhere along 2-4 hours in though, especially when doing any debugging the IDE slows to a snails pace.  Documents take up to 30 seconds to open, jumping to the next line of code in the debugger can take 5-10 seconds.  Its all really quite a horrible experience.  I did find the references (&lt;a href="http://www.bahtiyar.org/?p=58"&gt;http://www.bahtiyar.org/?p=58&lt;/a&gt;) to increase the amount of memory available to Eclipse (which BTW definitely don't go above the 1GB mark, otherwise it seems to crash on start) and to hard code the Java version to 1.6.  All these settings seemed to do was to increase the amount of time before the IDE slowed to a halt.  Since this appears to be such a widespread issue one can only assume it is being worked on and should be resolved in the not-to-distant future.&lt;/p&gt;
&lt;p&gt;Eclipse also has a very primitive user interface builder for Android.  There are some bugs, like failing to display a TabHost and TabWidget, that appear to have been around for quite a while, but have not been fixed.  Once you get it down though, it is very nice to be able to build out the UI in XML, very much in the same fashion as MS developers we have begun using XAML for UI design.&lt;/p&gt;
&lt;p&gt;Finally one of the stranger features of the IDE is the background compilation.  While in itself a very nice "instant" feedback while writing code, I did run into a few situations where I introduced an error, either in XML or my code, and I could not for the life of me get that error cleared out.  Since there appears to be no method to Clean Targets or Rebuild the Project, the error just hung around.  It would only disappear when I changed other code, which seems to have caused the whole project to recompile.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;To learn each of the platforms I spent quite a bit of time in the online developer documentation from each company.  Both have some great intro and starter documents to get the tools installed and get your first Hello World application built.  In addition to these I also read through some developer books (my first computer books in a while).  These included:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/Beginning-iPhone-Development-Exploring-SDK/dp/1430216263/ref=sr_1_1?s=electronics&amp;amp;ie=UTF8&amp;amp;qid=1282775367&amp;amp;sr=1-1"&gt;Beginning iPhone 3 Development&lt;/a&gt; - This is an excellent introduction to writing your first Apps for the iPhone&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/More-iPhone-Development-Tackling-Beginning/dp/143022505X/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1282775420&amp;amp;sr=1-1"&gt;More iPhone 3 Development&lt;/a&gt; - An equally excellent add-on to the beginning book.  I highly recommend both as a beginner.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/Beginning-Android-2-Mark-Murphy/dp/1430226293/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1282775493&amp;amp;sr=1-1"&gt;Beginning Android 2&lt;/a&gt; - Of the 4 books, this is the lowest quality of them all.  It reads more like official documentation delivered by Google than a good introduction book.  It is often at too high of a level of discussion to be useful.  I'd pass on this and go right to the Pro book.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.amazon.com/Pro-Android-2-Sayed-Hashimi/dp/1430226595/ref=pd_bxgy_b_text_b"&gt;Pro Android 2&lt;/a&gt; - This is the same level of quality as the iPhone dev books.  A recommended starter resource, even though its titled "Pro".&lt;/p&gt;
&lt;h2&gt;Closing&lt;/h2&gt;
&lt;p&gt;Overall this was a great learning experience for me, and both Apple and Google have great platforms to develop for.  Each have their pro's and con's, but both are sure to get better in light of the level of competition in the mobile space.  If you haven't checked out mobile development and you have access to a Mac, I'd highly recommend installing Xcode or Eclipse and giving it a try.  As I mentioned in a previous post the world is going mobile and as a developer it'll do nothing but benefit you to have some experience with these platforms.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/141492.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/08/25/thoughts-on-android-and-iphone-development.aspx</guid>
            <pubDate>Wed, 25 Aug 2010 23:32:06 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/141492.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/08/25/thoughts-on-android-and-iphone-development.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/141492.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/141492.aspx</trackback:ping>
        </item>
        <item>
            <title>Windows Live Sync on Mac</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/08/23/windows-live-sync-on-mac.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/08/23/windows-live-sync-on-mac.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/08/23/windows-live-sync-on-mac.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I've been running various versions of Live Mesh and Live Sync on my Mac over the past year.  So far I haven't been terribly happy with Live Mesh, but it got the job done, albeit very slowly at times.  I'm am very exited at what I am seeing though in the latest Windows Live Sync beta for both Windows and Mac OS X.&lt;/p&gt;
&lt;p&gt;When installing the latest version of Live Sync, which is still in beta I ran across the following error on start:&lt;/p&gt;
&lt;p&gt;"Sorry, there is a problem with Windows Live Sync. Please quit Sync, make sure your computer is connected to the Internet, and then start Sync again."&lt;/p&gt;
&lt;p&gt;A Google search led me to Brian Hall's blog post at:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bhall.com/2010/07/fix-windows-live-sync-beta-for-mac.html"&gt;http://www.bhall.com/2010/07/fix-windows-live-sync-beta-for-mac.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;His specific post didn't help, but the link he provided to Microsoft sure did:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowslivehelp.com/thread.aspx?threadid=02bfeeed-601e-40e9-977c-65d4c656a5ce&amp;amp;page=1"&gt;http://www.windowslivehelp.com/thread.aspx?threadid=02bfeeed-601e-40e9-977c-65d4c656a5ce&amp;amp;page=1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Deleting the folder at the following location seemed to do the trick for me:&lt;/p&gt;
&lt;p&gt;~/Library/Application Support/Live Id&lt;/p&gt;
&lt;p&gt;After deleting that and emptying the trash the Live Sync beta started no problem and prompted me for my Live ID and password.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/141449.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/08/23/windows-live-sync-on-mac.aspx</guid>
            <pubDate>Mon, 23 Aug 2010 20:59:10 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/141449.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/08/23/windows-live-sync-on-mac.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/141449.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/141449.aspx</trackback:ping>
        </item>
        <item>
            <title>The Growth of Mobile</title>
            <link>http://geekswithblogs.net/ryanc/archive/2010/08/19/the-growth-of-mobile.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2010/08/19/the-growth-of-mobile.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2010/08/19/the-growth-of-mobile.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In the past few months I've had the great opportunity to learn both the iPhone and Android platforms for an App we built for my 9 to 5 job.  This was a great new chance to learn brand new languages and frameworks after 8 years of living in the Microsoft world.  I'll get to more of the specifics in later posts.&lt;/p&gt;
&lt;p&gt;In order to validate some of our platform decisions and the choice to move toward mobile development I did some research and came across some amazing stats.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;According to CITA (the wireless trade association), there are over 285 million wireless subscriber accounts in the US.  This is the equivalent of 91% of the US Population with a cell phone in their hand.  Granted many folks have multiple cell phone accounts (personal and work), so this is a bit of a misnomer, but still absolutely amazing to think how far cell phones have come in the past decade in the US.  (&lt;a href="http://blog.nielsen.com/nielsenwire/online_mobile/android-soars-but-iphone-still-most-desired-as-smartphones-grab-25-of-u-s-mobile-market/"&gt;﻿http://www.ctia.org/media/industry_info/index.cfm/AID/10323&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Nielsen estimates that over 50% of all cell phones will be smartphones by the end of 2011.  This is just incredible to think for years I was a lone geek walking around the office with a huge brick on my belt buckle, and now, pretty much within the past 3 years these advanced devices are just about to be the most popular type of mobile device.  (﻿&lt;a href="http://blog.nielsen.com/nielsenwire/online_mobile/android-soars-but-iphone-still-most-desired-as-smartphones-grab-25-of-u-s-mobile-market/"&gt;http://blog.nielsen.com/nielsenwire/online_mobile/android-soars-but-iphone-still-most-desired-as-smartphones-grab-25-of-u-s-mobile-market/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The same Nielsen stats point to the iPhone with a 28% share of smartphones, and Android taking 27% of all smartphone sales in the first 6 months of 2010.  These 2 platforms make up 50% of all sales for the first half of 2010.&lt;/li&gt;
&lt;li&gt;According to Steve Jobs in his antenna-gate press conference Apple sold more than 3 million iPhone 4's in their first 3 weeks of sales.  Eric Schmidt announced at the Techonomy conference that Google has been activating 200,000 Android phones PER DAY as of July 2010. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think looking through all these numbers, to me, it is staggering how quickly we have adopted the mobile lifestyle.  The technology has finally reached a point where battery life matches that amazing power and features of a mobile device.  The entry point for smartphones is no longer $500, and often the newest phones run just $99 with a contract, or most frequently $199 for the latest and greatest device.&lt;/p&gt;
&lt;p&gt;When I look back over the past year since adopting the iPhone as my primary platform, mobile access has truly become a way of life for me.  Rarely do I sit at a desktop computer anymore (except at work where I'm coding all day anyway).  Instead most of the time the first place I access information is on my phone or iPad, where I'm not next to a desk or at home.&lt;/p&gt;
&lt;p&gt;It definitely gives some food for thought for a "corporate" programmer like myself, where we may lag behind some consumer trends in our day to day work, but where user expectations quickly creep up on us and suddenly we are thrust into entirely new worlds in order to meet our organizational needs.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/141398.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Cain</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2010/08/19/the-growth-of-mobile.aspx</guid>
            <pubDate>Thu, 19 Aug 2010 20:30:03 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/141398.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2010/08/19/the-growth-of-mobile.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/141398.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/141398.aspx</trackback:ping>
        </item>
        <item>
            <title>SharePoint RSS Reader &amp;ndash; Authenticated Feeds</title>
            <link>http://geekswithblogs.net/ryanc/archive/2008/12/09/127769.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2008/12/09/127769.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2008/12/09/127769.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you are trying to setup a blog in SharePoint and want to aggregate its feed to a parent site, you’ll find that if you’re using NTLM you’ll get the following error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The RSS webpart does not support authenticated feeds&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This seems frustrating at first as you begin to wonder why you can create a blog, add RSS feed viewers, but can’t combine the two.  Basically this appears to come down to an authentication issue, and NTLM’s lack of ability to delegate credentials.  The solution:  Kerberos, and what appears to be a very simple solution at that.  &lt;/p&gt;  &lt;p&gt;Basically just change the default Authentication Provider in SharePoint Central admin to Negotiate (Kerberos), use SetSPN to register an SPN for your App Pool account on your domain controller and allow that App Pool account to delegate through “trusted through delegation.”&lt;/p&gt;  &lt;p&gt;More details on this can be found at:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/markarend/archive/2006/10/03/RSS-Viewer-web-part-and-authenticated-feeds.aspx"&gt;Mark Arend: RSS Viewer web part and authenticated feeds&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The referenced MSDN article from the above with more details on the setspn is at (4th question):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163740.aspx"&gt;Credentials and Delegation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The download for the setspn tool for Server 2003 is at:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6EC50B78-8BE1-4E81-B3BE-4E7AC4F0912D&amp;amp;displaylang=en"&gt;Windows Server 2003 Service Pack 1 32-bit Support Tools&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/127769.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan C</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2008/12/09/127769.aspx</guid>
            <pubDate>Tue, 09 Dec 2008 17:49:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/127769.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2008/12/09/127769.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/127769.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/127769.aspx</trackback:ping>
        </item>
        <item>
            <title>SSL Host Headers</title>
            <link>http://geekswithblogs.net/ryanc/archive/2008/10/06/125663.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2008/10/06/125663.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2008/10/06/125663.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In case you happen to be needing to do host headers with a wildcard SSL Certificate, here is the article from Microsoft on how to do it in IIS 6:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/596b9108-b1a7-494d-885d-f8941b07554c.mspx?mfr=true" href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/596b9108-b1a7-494d-885d-f8941b07554c.mspx?mfr=true"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/596b9108-b1a7-494d-885d-f8941b07554c.mspx?mfr=true&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The basic command line call is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;cscript.exe adsutil.vbs set /w3svc/&lt;i&gt;&amp;lt;site identifier&amp;gt;&lt;/i&gt;/SecureBindings ":443&lt;i&gt;:&amp;lt;host header&amp;gt;&lt;/i&gt;"&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where &amp;lt;site identifier&amp;gt; is the numeric identifier displayed in IIS, and &amp;lt;host header&amp;gt; is the header you’re trying to capture for the given site.  &lt;/p&gt;  &lt;p&gt;Also for reference, the full path to:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;cscript.exe  is c:\windows\cscript.exe &lt;/p&gt;    &lt;p&gt;adsutil.vbs is c:\inetpub\adminscripts\adsutil.vbs&lt;/p&gt;&lt;/blockquote&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/125663.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan C</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2008/10/06/125663.aspx</guid>
            <pubDate>Mon, 06 Oct 2008 16:06:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/125663.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2008/10/06/125663.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/125663.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/125663.aspx</trackback:ping>
        </item>
        <item>
            <title>SSRS Global Variable &amp;quot;Trick&amp;quot;</title>
            <link>http://geekswithblogs.net/ryanc/archive/2008/06/26/123410.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2008/06/26/123410.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2008/06/26/123410.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We are working through a beta release of an internal project so I'm getting a chance to solve many different problems right now.  Today I had to update a report that has an issue where its count at the bottom was displaying the total number or records instead of just those that were visible.  &lt;/p&gt;  &lt;p&gt;Basically this is a report of applicants who have passed all tests during a job recruitment process.  If they fail any step then they shouldn't show on the list.  I did some tricks with the data of the report to check to see if the failed any test and hide a rectangle if they have.  This formula used a few aggregates to get the job done.  Of course anyone who's used SSRS 2005 knows you can't do aggregates of aggregates, so that makes getting the count at the bottom much more difficult.  &lt;/p&gt;  &lt;p&gt;The trick I used was to create a "global" variable in the code of the report.  I wrapped that variable in a Function that looked like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public dim passedCount as int32 = 0 &lt;/p&gt;    &lt;p&gt;public function IncreasePassedCount(a as boolean, b as boolean) as boolean     &lt;br /&gt;    if a or b then      &lt;br /&gt;        return true      &lt;br /&gt;    end if &lt;/p&gt;    &lt;p&gt;    passedCount = passedCount + 1     &lt;br /&gt;    return false &lt;/p&gt;    &lt;p&gt;end function&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;a and b are flags that specify whether or not there was a failure, since there's 2 possible ways an applicant could fail on a given row.  If they have failed then we return true (so that way hidden = true, somewhat counter intuitive for web and windows programmers).  Otherwise they have passed everything and we want to keep everything visible.&lt;/p&gt;  &lt;p&gt;This code is then called via the Visibility expression on the rectangle that holds all the data.  That expression looks like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;=Code.IncreasePassedCount(     &lt;br /&gt;Sum(Fields!PassedByScore.Value) &amp;lt;&amp;gt; Count(Fields!TestScoreId.Value),       &lt;br /&gt;Sum(Fields!PassedByFlag.Value) &amp;lt;&amp;gt; Count(Fields!TestScoreId.Value))&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The IncreasePassedCount function serves double duty for me; a. it increases the passedCount variable as needed b. it returns a boolean to hide or show the rectangle.  This way I can guarantee my code is being called only when it needs to be to increase my counter.  If you try to call this method in an IIF statement the method always seems to get called, even when it is only in the true or only the false clause.  I'm guessing this is just how SSRS resolves its code behind.  &lt;/p&gt;  &lt;p&gt;Now with that in place I have a very simple text box that has my total count, now based on what's visible not on all the records.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;=Code.passedCount &lt;/p&gt;&lt;/blockquote&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/123410.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan C</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2008/06/26/123410.aspx</guid>
            <pubDate>Thu, 26 Jun 2008 23:15:10 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/123410.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2008/06/26/123410.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/123410.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/123410.aspx</trackback:ping>
        </item>
        <item>
            <title>DataGridView DropDown Column Index -1 Exception</title>
            <link>http://geekswithblogs.net/ryanc/archive/2008/06/26/123409.aspx</link>
            <description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanc/archive/2008/06/26/123409.aspx'&gt;http://geekswithblogs.net/ryanc/archive/2008/06/26/123409.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In developing one of our new applications I ran into an interesting issue with the DataGridView, which contained a DropDown (ComboBox) column that was bound to a different BindingSource.  The basic issue is that the user would click a LinkButton and select a file.  That process would create a new instance of an object on the backend, which would be added to a list that was then bound to the DataGridView.  The drop down option on this new item would be left null however.  When the user would go to click the drop down to make a selection, they would receive the following exception:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;System.IndexOutOfRangeException: Index -1 does not have a value. at     &lt;br /&gt; System.Windows.Forms.CurrencyManager.get_Item(Int32 index) at       &lt;br /&gt;System.Windows.Forms.DataGridView.DataGridViewDataConnection.OnRowEnter      &lt;br /&gt;(DataGridViewCellEventArgs e) at System.Windows.Forms.DataGridView.OnRowEnter(DataGridViewCell&amp;amp;      &lt;br /&gt; dataGridViewCell, Int32 columnIndex, Int32 rowIndex, Boolean canCreateNewRow, Boolean      &lt;br /&gt; validationFailureOccurred) at System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32      &lt;br /&gt; columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean      &lt;br /&gt; throughMouseClick) at System.Windows.Forms.DataGridView.OnCellMouseDown(HitTestInfo hti, Boolean      &lt;br /&gt; isShiftDown, Boolean isControlDown) at System.Windows.Forms.DataGridView.OnCellMouseDown      &lt;br /&gt;(DataGridViewCellMouseEventArgs e) at System.Windows.Forms.DataGridView.OnMouseDown      &lt;br /&gt;(MouseEventArgs e) at System.Windows.Forms.Control.WmMouseDown(Message&amp;amp; m, MouseButtons button,      &lt;br /&gt; Int32 clicks) at System.Windows.Forms.Control.WndProc(Message&amp;amp; m) at      &lt;br /&gt; System.Windows.Forms.DataGridView.WndProc(Message&amp;amp; m) at       &lt;br /&gt;System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m) at       &lt;br /&gt;System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This really didn't seem to make any sense.  We had done this many times before and it worked perfectly fine, it was just this specific code that was causing an issue.  The code at issue was the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;recruitmentBindingSource.DataSource = recruitments; &lt;/p&gt;    &lt;p&gt;dataGridViewAttachments.DataSource = null;     &lt;br /&gt;dataGridViewAttachments.DataSource = attachments;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The recruitmentBindingSource was used for the drop down, and the gridview was where our problem was.  Well it turns out the 2nd line where we set the DataSource of the gridview to null was the source of the exception.  We had placed that line in there to force the gridview to refresh its display data.  We were updating that attachments list in a service, and the one way to make the gridview refresh is to set its DataSource to null, then to the object you want to work with.  Well this appears to cause more problems than its worth!  (Especially since I closed another issue today that was being caused by this null "refresh hack.")  &lt;/p&gt;  &lt;p&gt;After doing a little research I came across the following code, namely the ResetBindings(), which appears to be just what the doctor ordered in this case.  I hadn't used this method again, since I ran into issues with it a few months back on non-datagridview controls, but for gridviews that call seems to refresh the data nicely and force the grid to reread the data in the object collection.  The new code that resolves this issue now looks like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;recruitmentBindingSource.DataSource = recruitments;     &lt;br /&gt;recruitmentBindingSource.ResetBindings(false); &lt;/p&gt;    &lt;p&gt;attachmentBindingSource.ResetBindings(false);     &lt;br /&gt;attachmentBindingSource.DataSource = attachments;      &lt;br /&gt;dataGridViewAttachments.DataSource = attachmentBindingSource;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notice I've changed the gridview to now use a BindingSource rather than directly binding to my list collection.  &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanc/aggbug/123409.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan C</dc:creator>
            <guid>http://geekswithblogs.net/ryanc/archive/2008/06/26/123409.aspx</guid>
            <pubDate>Thu, 26 Jun 2008 22:57:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/ryanc/comments/123409.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/ryanc/archive/2008/06/26/123409.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/ryanc/comments/commentRss/123409.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/ryanc/services/trackbacks/123409.aspx</trackback:ping>
        </item>
    </channel>
</rss>