﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <channel>
    <title>azazeal's playground</title>
    <description>memoirs of a c# developer</description>
    <link>http://azazeal.xelixis.net/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>el-GR</language>
    <blogChannel:blogRoll>http://azazeal.xelixis.net/opml.axd</blogChannel:blogRoll>
    <dc:creator>azazeal</dc:creator>
    <dc:title>azazeal's playground</dc:title>
    <item>
      <title>Redcar 0.11 is out!</title>
      <description>&lt;p&gt;Is seems there's a new Redcar Editor gem released (v0.11) and I just upgraded to it.&lt;/p&gt;
&lt;p&gt;Version 0.11 contains the following enhancements / bug fixes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Enhancements:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Project search backed by Lucene (Dan Lucraft)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Fuzzy file finder now recognizes directories "a/c/repocontr" (Tim Felgentreff)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Recent project fuzzy finder (Benedikt M&amp;uuml;ller)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Improved DocumentSearch, with UI refinements, added Replace All commands (Tom Murray)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Raise/lower region behaves better when you select multiple lines (Benedikt M&amp;uuml;ller)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Which files are hidden in a project is now configurable (Konstantin Haase)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Added logger at Redcar.log, goes to ~/.redcar/user.log (Dan Lucraft)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Can hide files and directories from the project context menu (Benedikt M&amp;uuml;ller)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Notification if Redcar doesn't have permission to save files (Benedikt M&amp;uuml;ller &amp;amp; Bill Siggelkow)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Tweaked the load order to make the window appear faster during startup (Dan Lucraft)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* All the plugins use a single preference value to ignore files (Benedikt M&amp;uuml;ller &amp;amp; Daniel Lucraft)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Can ignore directories (Benedikt M&amp;uuml;ller)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* User definable keybindings (Chris Nelson)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bugfixes:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Fixed Unicode problems in DocumentSearch (Tom Murray)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* You can now symlink bin/redcar (Konstantin Haase)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Runnables are now terminated correctly when the tab is closed (Dan Lucraft)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* You are once again prompted when you close a window with running Runnables in (Dan Lucraft)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Fix encoding issue that broke highlighting when there are multi-byte characters in a line (Dan Lucraft)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;* Fixed project-dependent trees remaining open when project is closed (Delisa Mason)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/Redcar-011-is-out!.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/Redcar-011-is-out!.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=b5f0d77f-56cb-4026-ae36-62ee66c60270</guid>
      <pubDate>Thu, 24 Mar 2011 16:47:00 +0200</pubDate>
      <category>Redcar</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=b5f0d77f-56cb-4026-ae36-62ee66c60270</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=b5f0d77f-56cb-4026-ae36-62ee66c60270</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/Redcar-011-is-out!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=b5f0d77f-56cb-4026-ae36-62ee66c60270</wfw:commentRss>
    </item>
    <item>
      <title>Enabling and disabling the root account under Ubuntu</title>
      <description>&lt;p&gt;&lt;a title="Ubuntu Linux" href="http://www.ubuntu.com/" target="_blank"&gt;Ubuntu&lt;/a&gt; is one of those linux distributions that have the root account disabled and thus if you need to do something as root you have to "sudo" before your commands.&lt;/p&gt;
&lt;p&gt;Enabling the root user account for an Ubuntu distribution is easy but not recommended as it may leave you vulnerable.&lt;/p&gt;
&lt;p&gt;To enable the root account fire up a terminal and just type the command below in order to set the root account's password:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000103; line-height: 22px;"&gt;sudo passwd root&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And in order to disable (lock out) the root account just type:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #000103; line-height: 22px;"&gt;sudo passwd -l root&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That's all there is to it.&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/Enabling-and-disabling-the-root-account-under-Ubuntu.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/Enabling-and-disabling-the-root-account-under-Ubuntu.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=f72aa595-9254-4df0-88c9-a1179430499c</guid>
      <pubDate>Mon, 27 Dec 2010 17:35:00 +0200</pubDate>
      <category>Linux</category>
      <category>Ubuntu</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=f72aa595-9254-4df0-88c9-a1179430499c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=f72aa595-9254-4df0-88c9-a1179430499c</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/Enabling-and-disabling-the-root-account-under-Ubuntu.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=f72aa595-9254-4df0-88c9-a1179430499c</wfw:commentRss>
    </item>
    <item>
      <title>How to install Redcar editor under Ubuntu 10.10 with RVM</title>
      <description>&lt;h3&gt;About Redcar (straight from the project's &lt;a href="https://github.com/redcar/redcar/wiki/faq" target="_blank"&gt;FAQ&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Redcar is a text editor for programmers written in Ruby. At the moment, it&amp;rsquo;s a young enough project that it is mainly of interest to Rubyists who want to use Ruby to script their editor.&lt;/p&gt;
&lt;p&gt;REDCAR IS ALPHA CODE. It&amp;rsquo;s very rough around the edges still, please be gentle: &lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;they&lt;/span&gt;&lt;/strong&gt; are working hard.&lt;/p&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;
&lt;p&gt;This guide assumes that you have succesfully installed &lt;a title="Ruby Version Manager" href="http://rvm.beginrescueend.com/" target="_blank"&gt;RVM&lt;/a&gt;. If you haven't done so please follow the guide &lt;a title="RVM Installation Documentation" href="http://rvm.beginrescueend.com/rvm/install/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;First we are going to create (and switch to) a gemset for our Redcar installation:&lt;/p&gt;
&lt;pre lang="code" class="ruby"&gt;rvm use 1.8.7@redcar --create&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Then we are going to get the gem:&lt;/p&gt;
&lt;pre lang="code" class="ruby"&gt;gem install redcar&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Install Redcar itself:&lt;/p&gt;
&lt;pre lang="code" class="ruby"&gt;redcar install&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Create a RVM wrapper for our executable:&lt;/p&gt;
&lt;pre lang="code" class="c-sharp"&gt;rvm wrapper 1.8.7@redcar wrapped redcar&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Create an alias for the executable by placing the following line into your &lt;strong&gt;~/.bashrc&lt;/strong&gt; file:&lt;/p&gt;
&lt;pre lang="code" class="ruby"&gt;alias redcar=wrapped_redcar&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Reload your &lt;strong&gt;~/.bashrc&lt;/strong&gt;:&lt;/p&gt;
&lt;pre lang="code" class="ruby"&gt;source ~/.bashrc&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That's it. You can now simply type redcar in a terminal and you are good to go.&lt;/p&gt;
&lt;h3&gt;shortcut creation&lt;/h3&gt;
&lt;p&gt;Should you require to create a shortcut for let's say Cairo or AWN just link to&amp;nbsp;&lt;strong&gt;~/.rvm/bin/wrapped_redcar&lt;/strong&gt; in order to launch Redcar from your dock.&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/How-to-install-Redcar-editor-under-Ubuntu-1010-with-RVM.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/How-to-install-Redcar-editor-under-Ubuntu-1010-with-RVM.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=3b7c7dc6-92cd-4554-b572-187473333bdd</guid>
      <pubDate>Tue, 21 Dec 2010 12:00:00 +0200</pubDate>
      <category>Redcar</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=3b7c7dc6-92cd-4554-b572-187473333bdd</pingback:target>
      <slash:comments>13</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=3b7c7dc6-92cd-4554-b572-187473333bdd</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/How-to-install-Redcar-editor-under-Ubuntu-1010-with-RVM.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=3b7c7dc6-92cd-4554-b572-187473333bdd</wfw:commentRss>
    </item>
    <item>
      <title>Starting your business, in less than a week, with Rails on Google App Engine</title>
      <description>&lt;p&gt;Bold words, wouldn’t you say? But that’s the case for me and I’ll try to explain.&lt;/p&gt;  &lt;p&gt;It was less than a month ago that I quit my job in pursuit of what we (developers) define as programmer happiness: &lt;i&gt;working your way, in your own time, under your own name with the tools that you (and you alone) choose to work with&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;The time had come for me to start something of my own... and relatively fast, without investing a small fortune in hardware and software, so Google App Engine was an obvious choice. Problem was &lt;i&gt;I didn't speak Python and&lt;/i&gt; &lt;i&gt;Java didn't fit my definition of happiness &lt;/i&gt;but I was determined to deploy on App Engine and so I searched for another language that I could utilize on Google App Engine.&lt;/p&gt;  &lt;p&gt;A little while ago I had discovered a *gem* in the GAE ecosystem: &lt;u&gt;&lt;a href="http://code.google.com/p/appengine-jruby/"&gt;appengine-jruby&lt;/a&gt;&lt;/u&gt;, that could allow me to use Ruby – a language that I could see my self writing - with Rails or Sinatra. At that point in time appengine-jruby for Rails wasn’t a viable option (you could indeed write your Rails app and deploy it, but 99% of the time it wouldn’t go live because of spin-up issues, caused by the fact that Rails needed a solid 30+ seconds in order to start which resulted to GAE throwing a beautiful Deadline exception in your face) and on the other hand Sinatra didn’t meet my expectations for a web app framework.&lt;/p&gt;  &lt;p&gt;But I’ve wanted to use Ruby on Rails for a long time (I felt pretty strong about using Rails, mostly because I was curious whether it could deliver what it promised) and there I was, having found my platform (GAE) and a ninja/hack-ish/don’t-do-it-at-home-you’ll-get-hurt kind of way, that no one else seemed to believe that was production ready.&lt;/p&gt;  &lt;p&gt;Now… I’m not a code ninja. I don’t wear a black belt and use a Katana keyboard but since I was determined to have an app up and running in less than 30 days, I&lt;em&gt; had to learn a new framework (Rails), write my first app, test it, deploy it to a platform that didn’t support it out-of-the-box, advertise it and someplace along the way try to make some money out of it&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Sadly, I lost the first 15 days of that 30 day time span and along with them my *research* time. &lt;i&gt;Which was a good thing&lt;/i&gt; as if I had started trying to figure everything out, it’s possible that I would have abandoned the whole Rails on GAE idea, as everything seemed not to be ready for production and I really had to get my hands dirty in order to &lt;a href="http://azazeal.xelixis.net/post/Patching-ruby-openid-to-work-under-GAE-%28consumer-side%29.aspx"&gt;&lt;u&gt;fix things that usually no one has to&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So what I did was this: Went to &lt;a href="http://rails-depot.appspot.com/"&gt;&lt;u&gt;http://rails-depot.appspot.com/&lt;/u&gt;&lt;/a&gt;, followed the guide and started a new Rails project. I had the the alpha release ready by &lt;a href="http://twitter.com/azazeal/status/11106560778"&gt;&lt;u&gt;26/3&lt;/u&gt;&lt;/a&gt; (the rails spin-up issue was manageable by then with a 20 LOC patch that anyone can find on the jruby-appengine community – &lt;i&gt;yeah I got lucky&lt;/i&gt;). The release version was up and running by &lt;a href="http://twitter.com/azazeal/status/11266292556"&gt;&lt;u&gt;29/3&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;All I invested in this app was time, nothing more, and frankly I don’t see myself writing anything other than Rails and deploying to no place other than Google App Engine for all of my personal projects.&lt;/p&gt;  &lt;p&gt;Sure I’m a solid .Net developer with extensive background in that, and perhaps that’s the way I’ll keep paying my bills in the near future, but &lt;i&gt;writing Rails and jumping on the jruby-appengine wagon so much early in the game, is something that has changed my perspective on a large number of issues&lt;/i&gt;. &lt;i&gt;I got an app up and running in less than 15 days, on a cloud computing system offered to me for free by one of the world’s leading IT companies&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;This seems like an awfully long blog post but I had to get it out of my system. Get it out to you and hope that you’ll consider using Ruby+GAE for your next project. Sure the community and the software are still immature but we are building strength in numbers day by day, patching things along the way and making this platform a solid and viable option for any project no matter how big or small.&lt;/p&gt;  &lt;h3&gt;about the app – taxster.gr&lt;/h3&gt;  &lt;p&gt;You can find the mentioned app at &lt;a href="http://www.taxster.gr"&gt;&lt;u&gt;taxster.gr&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It’s a receipt management application for Greek tax payers. Our parliament passed a law that makes us gather all the receipts we get throughout the year and submit them to the IRS. The purpose of the app is to offer a simple solution to managing your bundle of receipts, with reporting, analytics and export capabilities in various formats.&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/Starting-your-business-in-less-than-a-week-with-Rails-on-Google-App-Engine.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/Starting-your-business-in-less-than-a-week-with-Rails-on-Google-App-Engine.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=2eef0393-b9da-4cb0-8be3-cf4f4019d336</guid>
      <pubDate>Thu, 08 Apr 2010 10:26:43 +0200</pubDate>
      <category>Google App Engine</category>
      <category>Ruby</category>
      <category>Ruby on Rails</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=2eef0393-b9da-4cb0-8be3-cf4f4019d336</pingback:target>
      <slash:comments>12</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=2eef0393-b9da-4cb0-8be3-cf4f4019d336</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/Starting-your-business-in-less-than-a-week-with-Rails-on-Google-App-Engine.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=2eef0393-b9da-4cb0-8be3-cf4f4019d336</wfw:commentRss>
    </item>
    <item>
      <title>Patching ruby-openid to work under GAE (consumer side)</title>
      <description>&lt;p&gt;If anyone's trying to make a consumer work under jruby and GAE then perhaps you'll find &lt;a href="https://gist.github.com/f78150d4a19328536be9"&gt;this&lt;/a&gt; helpful.&lt;/p&gt;
&lt;p&gt;Cya around.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/Patching-ruby-openid-to-work-under-GAE-(consumer-side).aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/Patching-ruby-openid-to-work-under-GAE-(consumer-side).aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=76615f77-8fb0-4880-8b05-237d7d247c38</guid>
      <pubDate>Thu, 11 Mar 2010 14:28:00 +0200</pubDate>
      <category>Google App Engine</category>
      <category>Ruby</category>
      <category>Ruby on Rails</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=76615f77-8fb0-4880-8b05-237d7d247c38</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=76615f77-8fb0-4880-8b05-237d7d247c38</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/Patching-ruby-openid-to-work-under-GAE-(consumer-side).aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=76615f77-8fb0-4880-8b05-237d7d247c38</wfw:commentRss>
    </item>
    <item>
      <title>Maternal Pro</title>
      <description>&lt;blockquote&gt;   &lt;h4&gt;What I’ve been working on for the last four months&lt;/h4&gt;    &lt;p&gt;The last four months I’ve been the main developer / architect of a medical project called Maternal PRO, a documentation system for Gynecology and obstetrics which was presented at the 11th Gynecology Conference at the Hilton hotel in Athens, Greece from 28/5/2009 to 31/5/2009.&lt;/p&gt;    &lt;p&gt;Maternal was built on .Net Framework 3.5 SP1, it’s database agnostic(single user version uses a Sql Server 2005/2008 Express database with a Linq2Sql database layer) and has a 100% WPF UI.&lt;/p&gt;    &lt;h4&gt;How did I end up developing Maternal&lt;/h4&gt;    &lt;p&gt;Right after the start of 2009 (and a very successful past year) I was trying to establish my place somewhat more as a freelancer in the Greek IT market so I ended up writing a tech CV and sending it to the HR departments of some companies. One of those companies was &lt;a title="Visit NOON&amp;#39;s web page" href="http://www.noon.gr"&gt;NOON&lt;/a&gt;. After the initial interview I immediately started working for them on the project.&lt;/p&gt;    &lt;p&gt;NOON is really a cool place to work. Developers do have the flexibility to choose the tools they need in order to perform specific tasks and we also have the flexibility to try out cool new technologies (like WPF and Silverlight) and integrate them into our projects.&lt;/p&gt;    &lt;p&gt;We are not a Microsoft oriented company. My department might be but there are people here working with Java (mobile applications like Gynofone – which is like a Maternal lite version for Java based phones), others that work with Flash. We even have COBOL &amp;amp; PHP developers.&lt;/p&gt;    &lt;h4&gt;What the future looks like&lt;/h4&gt;    &lt;p&gt;Maternal was my first project while working for NOON. It’s left a bittersweet taste because of the pressed deadline but I’m happy to have worked on it: I’m happy to have architected it and I’m proud to say that I did.&lt;/p&gt;    &lt;p&gt;In the near future I might start developing a WPF Reporting engine. An end-user reporting toolkit that can be bundled with any .Net application that will be dependent on the business layer of the application and not the data repository.&lt;/p&gt;    &lt;p&gt;I’m eager to start working on this project, I’ve been thinking of ways to develop it for the last 2-3 years and I might even start working on .Net 4.0 on that project.&lt;/p&gt;    &lt;p&gt;So, that’s what’s been going on lately, that’s why the blog is not getting updated as much as I’d like and that’s what’s going to happen (hopefully) in the near future.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Write to you later,&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/Maternal-Pro.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/Maternal-Pro.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=2511acf9-cbd1-4363-9e72-9426c09ac3a4</guid>
      <pubDate>Wed, 03 Jun 2009 10:43:08 +0200</pubDate>
      <category>Projects</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=2511acf9-cbd1-4363-9e72-9426c09ac3a4</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=2511acf9-cbd1-4363-9e72-9426c09ac3a4</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/Maternal-Pro.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=2511acf9-cbd1-4363-9e72-9426c09ac3a4</wfw:commentRss>
    </item>
    <item>
      <title>I’m not dead, just busy</title>
      <description>&lt;p&gt;It’s been ages since the last post on my blog. The reason for that misfortune is that I took on a project for a new client that is really time-consuming and has an impossible deadline. That’s the bad news.&lt;/p&gt;  &lt;p&gt;The good news is that the project I’m working on got me in the beautiful world of WPF (&lt;em&gt;finally&lt;/em&gt;). I know that the majority of developers aren’t convinced that WPF makes sense yet but what I realized in the past 3 months that I’ve been intensely working with it, is that &lt;em&gt;&lt;u&gt;WPF can be a life saver&lt;/u&gt;&lt;/em&gt;!&lt;/p&gt;  &lt;p&gt;Right after April (that’s when my part in the project will be complete) I’ll make a strong comeback with blog posts. I’ve already made my mind on the post subjects and boy-oh-boy-do-I-have-material-to-work-with!&lt;/p&gt;  &lt;p&gt;I won’t go into much detail now but you should be expecting posts on ASP.NET MVC, WPF (although not an expert I’ve found some tricks that could make your life easier) and LINQ &amp;amp; Entity Framework.&lt;/p&gt;  &lt;p&gt;Till then,    &lt;br /&gt;Keep coding&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/Ie28099m-not-dead-just-busy.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/Ie28099m-not-dead-just-busy.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=8538205b-fed4-49f1-95e2-6d58f7fae8e0</guid>
      <pubDate>Thu, 26 Mar 2009 10:24:03 +0200</pubDate>
      <category>Blog</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=8538205b-fed4-49f1-95e2-6d58f7fae8e0</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=8538205b-fed4-49f1-95e2-6d58f7fae8e0</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/Ie28099m-not-dead-just-busy.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=8538205b-fed4-49f1-95e2-6d58f7fae8e0</wfw:commentRss>
    </item>
    <item>
      <title>The Mac candy</title>
      <description>&lt;p&gt;Today I had one of those new iMacs sent to me from a friend in order to repair something that didn't really need any fixing (I know, Macs never need fixing).&lt;/p&gt; &lt;p&gt;Anyway, as I'm going to have the Mac at my place for today and tomorrow, I started *using* it for more than text and photo editing so I got &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt; working, MySql up and Rails (Ruby is pre-installed so just gem install rails --include dependencies) and I started creating a new rails project.&lt;/p&gt; &lt;p&gt;I knew TextMate is a powerful development utility (more like a dev Swiss knife) since I've used it more than occasionally in the past I never developed any rails projects with it and what hit me at the time was how fast the whole thing started to come alive.&lt;/p&gt; &lt;p&gt;TextMate + Rails seems like a perfect match to me no matter what others may have to say, not to mention the Mac eye-candy that really makes my day whenever I happen to use one.&lt;/p&gt; &lt;p&gt;Two to three hours after that I found myself surfing a local e-commerce site (Greece doesn't have a big market for Macs - cry :() trying to find out how much would it cost me to get one for myself and believe me when I say that the "Express Checkout" button seemed really sexy at that point.&lt;/p&gt; &lt;p&gt;Despite the fact I didn't buy a Mac for myself (yet), days like these make me wonder: "&lt;em&gt;Why oh why don't we (Greeks) have a development market in which Macs could be an option for our workstations?&lt;/em&gt;".&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/The-Mac-candy.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/The-Mac-candy.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=44b489e3-4d6e-42ef-89de-7b1265cda802</guid>
      <pubDate>Fri, 09 Jan 2009 00:15:48 +0200</pubDate>
      <category>Apple</category>
      <category>Mac</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=44b489e3-4d6e-42ef-89de-7b1265cda802</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=44b489e3-4d6e-42ef-89de-7b1265cda802</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/The-Mac-candy.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=44b489e3-4d6e-42ef-89de-7b1265cda802</wfw:commentRss>
    </item>
    <item>
      <title>2009 &gt; 2008</title>
      <description>&lt;p&gt;In a few hours we'll say goodbye to 2008 and welcome 2009 and everyone all around the globe seems anxious to experience the first moments of 2009 in the best possible way.&lt;/p&gt; &lt;p&gt;There are those amongst us that have declared their new year's resolutions and others that haven't yet but what strikes me in this moments of joy is that there are some of us who won't have a chance to do so or won't even bother.&lt;/p&gt; &lt;p&gt;As we are all going to pay our respects to 2008 and celebrate the birth of the new year there are people getting bombed, people who are starving and people who have absolutely no clue on how they are going to survive one more year.&lt;/p&gt; &lt;p&gt;My hopes are high for 2009... My hopes are sky-high but hopes are just that: "the general feeling that some desire will be fulfilled". They are just a feeling. Hoping without working towards what you aim for never got anyone where they needed to be.&lt;/p&gt; &lt;p&gt;2009 smells of change: Change in politics, change in economics, change even in the way we change things and our world desperately needs to change but not (once again) for the worst but for the better.&lt;/p&gt; &lt;p&gt;May the new year bring you what 2008 wouldn't. May health, joy and love come to you in a way you never before imagined that could exist and may 2009 be the best year of your life yet.&lt;/p&gt; &lt;p&gt;Happy new year!&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/2009-3e-2008.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/2009-3e-2008.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=5b6dafb1-0d95-4faa-bc34-504fb630a9b0</guid>
      <pubDate>Wed, 31 Dec 2008 20:09:13 +0200</pubDate>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=5b6dafb1-0d95-4faa-bc34-504fb630a9b0</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=5b6dafb1-0d95-4faa-bc34-504fb630a9b0</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/2009-3e-2008.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=5b6dafb1-0d95-4faa-bc34-504fb630a9b0</wfw:commentRss>
    </item>
    <item>
      <title>embedding Sql server compact 3.5 sp1 in your application for both x32 and x64 systems</title>
      <description>&lt;p&gt;Having Sql Server Compact 3.5 SP1 embedded in your application for both x32 and x64 systems is really easy and a life saver. I took some screenshots that will guide you through the whole process. Enjoy.&lt;/p&gt; &lt;h4&gt;step 0: creating the X86 and AMD64 folders&lt;/h4&gt; &lt;p&gt;When your application tries to access Sql Server Compact it first looks whether its dlls exist into the application's directory into 2 specific folders: the &lt;strong&gt;&lt;em&gt;X86 &lt;/em&gt;&lt;/strong&gt;and &lt;strong&gt;&lt;em&gt;AMD64 &lt;/em&gt;&lt;/strong&gt;folder (for x32 and x64 versions respectively). So, create those 2 folders first.&lt;/p&gt; &lt;p&gt;&lt;em&gt;If your system is x64 and inside the AMD64 folder you've placed the Sql Server Compact dlls then your application will choose that directory by default for you (an easy performance gain).&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/00.%20Create%20folders_4.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="314" alt="00. Create folders" src="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/00.%20Create%20folders_thumb_1.jpg" width="256" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;step 1: adding Sql server compact's dlls to your application&lt;/h4&gt; &lt;p&gt;All of the Sql Server Compact Edition components that your application *may* use are defined in 7 dlls that can be found into the Sql Server Compact installation on your development machine (perhaps you can narrow it down to 3-4 dlls depending on what exactly you need from SqlCe but for this example I'll add them all).&lt;/p&gt; &lt;p&gt;In my machine I've installed both the x32 and x64 versions of Sql Server Compact 3.5 so I have all the dlls I need for both platforms.&lt;/p&gt; &lt;p&gt;Bellow can see some screenshots I took while adding the x64 dlls to my project.&lt;/p&gt; &lt;p&gt;&lt;a href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/01.%20Add%20files%20AMD64_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="192" alt="01. Add files AMD64" src="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/01.%20Add%20files%20AMD64_thumb.jpg" width="256" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/02.%20Select%20AMD64%20Files_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="133" alt="02. Select AMD64 Files" src="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/02.%20Select%20AMD64%20Files_thumb.jpg" width="256" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The dlls I selected correspond to the x64 version of Sql Server Compact. For the x32 dlls you have to look in the x32 program files folder.&lt;/p&gt; &lt;p&gt;After adding the dlls to your project it's important to select them again and set the "&lt;strong&gt;&lt;em&gt;Build Action&lt;/em&gt;&lt;/strong&gt;" to "&lt;strong&gt;&lt;u&gt;Content&lt;/u&gt;&lt;/strong&gt;" and the "&lt;strong&gt;&lt;em&gt;Copy to Output&lt;/em&gt;&lt;/strong&gt;" property to "&lt;strong&gt;&lt;em&gt;Copy always&lt;/em&gt;&lt;/strong&gt;" or "&lt;strong&gt;&lt;em&gt;Copy if newer&lt;/em&gt;&lt;/strong&gt;" so that these files are indeed copied to the application directory.&lt;/p&gt; &lt;p&gt;&lt;a href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/03.%20Copy%20Local%20AMD64_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="187" alt="03. Copy Local AMD64" src="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/03.%20Copy%20Local%20AMD64_thumb.jpg" width="256" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Repeat the above steps but this time place the dlls into the X86 folder and get them from the x32 installation directory of Sql Server Compact.&lt;/p&gt; &lt;p&gt;&lt;a href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/03.%20Copy%20Local%20AMD64_2.jpg"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Last but not least, we have to add the first (and only) reference to our project for &lt;strong&gt;&lt;em&gt;System.Data.SqlServerCe&lt;/em&gt;&lt;/strong&gt; and set its "&lt;strong&gt;&lt;em&gt;Copy Local&lt;/em&gt;&lt;/strong&gt;" property to "&lt;strong&gt;&lt;em&gt;True&lt;/em&gt;&lt;/strong&gt;".&lt;/p&gt; &lt;p&gt;&lt;a href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/04.%20Add%20SqlCe%20Reference_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="217" alt="04. Add SqlCe Reference" src="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/04.%20Add%20SqlCe%20Reference_thumb.jpg" width="256" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;That's it. The last screenshot is what the complete project looks like (with all the references). &lt;/p&gt; &lt;p&gt;&lt;a href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/07.%20Final_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="433" alt="07. Final" src="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/dep.5withyourapplicationforbothx32andx64_B918/07.%20Final_thumb.jpg" width="256" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Last minute note: &lt;em&gt;If you are using ClickOnce, remember to remove the pre-requisite for Sql Server Compact before you deploy, if you leave that single checkbox checked you defeat the purpose of having Sql Server Compact embedded to your app&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Keep coding and If I don't post anything more till the new year: &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;"May 2009 be what 2008 wasn't"&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/embedding-sql-server-compact-35-in-your-application-for-both-x32-and-x64-systems.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/embedding-sql-server-compact-35-in-your-application-for-both-x32-and-x64-systems.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=5d800c7e-51c8-451d-a911-1dcfcedc20d0</guid>
      <pubDate>Wed, 03 Dec 2008 19:46:10 +0200</pubDate>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=5d800c7e-51c8-451d-a911-1dcfcedc20d0</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=5d800c7e-51c8-451d-a911-1dcfcedc20d0</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/embedding-sql-server-compact-35-in-your-application-for-both-x32-and-x64-systems.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=5d800c7e-51c8-451d-a911-1dcfcedc20d0</wfw:commentRss>
    </item>
    <item>
      <title>strings, hex and byte arrays</title>
      <description>&lt;p&gt;I'll post a couple of method extensions I often use in my projects:&lt;/p&gt;  &lt;p&gt;The first one is a function that, given a byte array, converts it to a string hex representation and the second transforms a hex representation string to it's original byte array.&lt;/p&gt;  &lt;p&gt;   &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ba59efde-6d06-4a59-87f5-f97bd108a7d3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;public static string ToHexString( this byte[] bytes )
{
	if ( bytes == null ) return ( string )null;

	string ret = string.Empty;

	foreach ( byte b in bytes )
		ret += b.ToString( "x2" );

	return ret;
}&lt;/pre&gt;&lt;/div&gt;

  &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:effdd664-5157-4fe5-a848-5b73e4d051f8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;public static byte[] ToHexArray( this string str )
{
	if ( string.IsNullOrEmpty( str ) )
		return new byte[] { };

	if ( str.Length % 2 != 0 )
		return new byte[] { };

	int byteLength = str.Length / 2;
    byte[] ret = new byte[byteLength];
    int j = 0;
    
	for ( int i = 0; i &amp;lt; str.Length; i += 2 )
    {
    	string hex = str.Substring( i, 2 );
        ret[j] = byte.Parse( hex, System.Globalization.NumberStyles.HexNumber );
        j++;
	}

	return ret;

}&lt;/pre&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;Now that I think of it I'll post also a third method extension that determines whether a string is indeed a hex representation.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:feb29a2e-1eb6-4003-8a10-b281083da83c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;public static bool IsValidHexString( this string str )
{
	if ( string.IsNullOrEmpty( str ) ) return false;

	if ( string.Length % 2 != 0)
		return false;

	string map = "0123456789abcdef";	

	foreach ( char c in str.ToLower( ) )
		if ( !map.Contains( c ) )
			return false;

	return true;
}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I really hope these 3 extensions will be of use to you one day :) &lt;/p&gt;

&lt;p&gt;Till the next post, keep coding.&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/strings-hex-and-byte-arrays.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/strings-hex-and-byte-arrays.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=b7336ef4-c515-4309-babc-2a61af4f26d2</guid>
      <pubDate>Thu, 20 Nov 2008 04:56:38 +0200</pubDate>
      <category>.Net Framework</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=b7336ef4-c515-4309-babc-2a61af4f26d2</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=b7336ef4-c515-4309-babc-2a61af4f26d2</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/strings-hex-and-byte-arrays.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=b7336ef4-c515-4309-babc-2a61af4f26d2</wfw:commentRss>
    </item>
    <item>
      <title>world of warcraft: wrath of the lich king - the phenomenon continues</title>
      <description>&lt;p&gt;&lt;a title="Visit blizzard.com" href="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/454b2c07b4d0_1F17/wrath_2.jpg" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://azazeal.xelixis.net/image.axd?picture=WindowsLiveWriter/454b2c07b4d0_1F17/wrath_thumb.jpg" border="0" alt="wrath" width="250" height="125" align="left" /&gt; Blizzard&lt;/a&gt;'s second &lt;a title="Visit wow-europe.com" href="http://www.wow-europe.com" target="_blank"&gt;World Of WarCraft&lt;/a&gt; expansion pack, Wrath of the Lich King, reached it's release date. Indeed it's the thirteenth day of November 2008 and all around the globe the noise has already started as millions of active subscribers will rush to the nearest retail store to buy the new expansion.&lt;/p&gt;
&lt;p&gt;I myself am a former World Of WarCraft player. I've been a WoW player since the beta and it wasn't until recently that I decided to stop playing but the &lt;em&gt;scent of this day, the aroma of the anxiety&lt;/em&gt; make me remember past glories in nostalgia.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;World of WarCraft &lt;em&gt;&lt;strong&gt;is&lt;/strong&gt;&lt;/em&gt; the phenomenon of our time: The first MMORPG that captured more than 10 million subscribers (&lt;em&gt;or is it 11 by now?&lt;/em&gt;), a game with a community that never seizes to amaze me and a game that brought people from all around the globe together.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Having said that, I'd like to congratulate every single Wrath player and wish them good luck in their new adventures in Wrath of the Lich King.&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/world-of-warcraft-wrath-of-the-lich-king-the-phenomenon-continues.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/world-of-warcraft-wrath-of-the-lich-king-the-phenomenon-continues.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=43985010-9cd4-4cc8-864f-91580b128a80</guid>
      <pubDate>Thu, 13 Nov 2008 01:13:00 +0200</pubDate>
      <category>World Of WarCraft</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=43985010-9cd4-4cc8-864f-91580b128a80</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=43985010-9cd4-4cc8-864f-91580b128a80</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/world-of-warcraft-wrath-of-the-lich-king-the-phenomenon-continues.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=43985010-9cd4-4cc8-864f-91580b128a80</wfw:commentRss>
    </item>
    <item>
      <title>The power of interface polymorphism</title>
      <description>&lt;h4&gt;The problem&lt;/h4&gt; &lt;p&gt;Apparently there are lots of developers out there that don't exactly know (or haven't actually thought of) how to separate their data access layer from the business or even the presentation layer in their projects and always get into trouble when they have to insert something new into their DAL or Business Layer.&lt;/p&gt; &lt;p&gt;For about two weeks now I've been developing a new blog engine based on ASP.NET MVC (BETA) and I was wondering how I could make it database independent because I would like the engine to be able to use XML files as the backend, Sql Server 2005, MySql or even Oracle if needed.&lt;/p&gt; &lt;p&gt;&lt;em&gt;This post will explain the simple solution I rely on to make my project backend-agnostic. &lt;strong&gt;The code here will be oversimplified&lt;/strong&gt;. If you'd like to have a look at what I'm building send me an email via the contact link and perhaps I'll send you something when I reach the next milestone.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Having determined the project's needs I realized that my presentation layer should be agnostic of the database access (which is indeed the best way to develop anyway).&lt;/p&gt; &lt;h4&gt;Step 0: Defining the data access layer's functionality&lt;/h4&gt; &lt;p&gt;Considering what a really simple - &lt;em&gt;probably a&amp;nbsp; baby like &lt;/em&gt;- blog engine does these days I designed an interface that met my simple needs.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:cdc328cc-7757-470a-b89c-649a61fd5f5a" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;using System;
using System.Collections.Generic;

using Blog.Models;

namespace Blog.DataAcessLayer
{
    public interface IBlog
    {
        Post GetPostById( int Id );
        List&amp;lt;Post&amp;gt; GetIndexPosts( );
    }
}&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This interface will be the only way the rest of the project (my controllers that is - remember? it's an ASP.NET MVC Project) can communicate with the underlying data source.&lt;/p&gt;
&lt;h4&gt;Step 1: Creating the data access layer factory&lt;/h4&gt;
&lt;p&gt;The way the blog engine understands where the underlying data source exists and what type of data source (XML, MySql, Sql Express, etc) we've chosen to use is though the connectionStrings setting in the Web.config file.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b81dbe53-ceb9-4b7a-8e36-67445ec07e77" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;connectionStrings&amp;gt;
	&amp;lt;add name="Db" connectionString="Data Source=localhost;Initial Catalog=blog;Integrated Security=True" providerName="System.Data.SqlClient"/&amp;gt;
&amp;lt;/connectionStrings&amp;gt;  &lt;/pre&gt;&lt;/div&gt;&lt;pre class="xhtml" lang="code"&gt;&lt;/pre&gt;
&lt;p&gt;What this connection string entry (Db) really says to the application is that I'm using a connection whose provider is the System.Data.SqlClient namespace with the specified connection string value. Easy right? &lt;em&gt;Indeed&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Next, we'll create factory that can give us (when invoked) the appropriate data access layer implementation.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9412b7a7-5d26-4801-b445-94bb7039cb03" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;using System;
using System.Configuration;

namespace Blog.DataAcessLayer
{
    internal static class BlogFactory
    {
        public static IBlog GetNewBlog( )
        {
            string connectionString = ConfigurationManager.ConnectionStrings["Db"].ConnectionString;
            string providerName = ConfigurationManager.ConnectionStrings["Db"].ProviderName;

            if ( providerName == "System.Data.SqlClient" )
                return new Providers.SqlServerProvider( connectionString );
            /*
            else if ( providerName == "MySql" )
                return new Providers.MySqlProvider( connectionString );
            else if ( providerName == "Xml" )
                return new Providers.XmlProvider( connectionString );
            else if ( providerName == "Oracle" )
                return new Providers.OracleProvider( connectionString );
            */
            else
                return ( IBlog )null;
        }
    }
}&lt;/pre&gt;&lt;/div&gt;
&lt;h4 class="c-sharp" lang="code"&gt;Step 2: Implementing a provider&lt;/h4&gt;
&lt;p class="c-sharp" lang="code"&gt;What we need next is to implement a provider so you can get an idea of what's going on. I'm going to give you head start on the SqlServerProvider.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ed43663e-ecd4-4f00-8300-c82c680d22aa" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;

using Blog.Models;
using Blog.DataAcessLayer;

namespace Blog.DataAcessLayer.Providers
{
    internal class SqlServerProvider : IBlog
    {
        #region [ Properties ]

        private string ConnectionString { get; set; }

        #endregion

        #region [ Constructor ]

        public SqlServerProvider( string ConnectionString )
        {
            this.ConnectionString = ConnectionString;
        }

        #endregion

        #region [ Interface Implementation ]

        public Post GetPostById( int PostId )
        {
            Post ret = null;

            using ( SqlConnection cnn = GetConnection( ) )
            {
                SqlCommand cmd = cnn.CreateCommand( );
                cmd.CommandText = "p_GetPostById";
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.AddWithValue( "@PostId", PostId );

                using ( SqlDataReader reader = cmd.ExecuteReader( ) )
                {
                    if ( reader.Read( ) )
                    {
                        ret = new Post( );
                        ret.PostId = ( int )reader["PostId"];
                        ret.Title = ( string )reader["Title"];
                        ret.Body = ( string )reader["Body"];
                        ret.Author = ( string )reader["Author"];
                        ret.DateSubmitted = ( DateTime )reader["DateSubmitted"];
                    }

                    reader.Close( );
                }

                cnn.Close( );
            }

            return ret;
        }

        public List&amp;lt;Post&amp;gt; GetIndexPosts( )
        {
            List&amp;lt;Post&amp;gt; ret = new List&amp;lt;Post&amp;gt;( );

            using ( SqlConnection cnn = GetConnection( ) )
            {
                SqlCommand cmd = cnn.CreateCommand( );
                cmd.CommandText = "p_GetIndexPosts";
                cmd.CommandType = CommandType.StoredProcedure;

                using ( SqlDataReader reader = cmd.ExecuteReader( ) )
                {
                   while ( reader.Read( ) )
                    {
                        Post p = new Post( );

                        p.Author = ( string )reader["Author"];
                        p.DateSubmitted = ( DateTime )reader["DateSubmitted"];
                        p.Body = ( string )reader["Body"];
                        p.PostId = ( int )reader["PostId"];
                        p.Title = ( string )reader["Title"];

                        ret.Add( p );
                    }

                    reader.Close( );
                }

                cnn.Close( );
            }

            return ret;
        }

        #endregion

        #region [ Helpers ]

        private SqlConnection GetConnection( )
        {
            SqlConnection cnn = new SqlConnection( this.ConnectionString );
            cnn.Open( );

            return cnn;
        }

        #endregion
    }
} &lt;/pre&gt;&lt;/div&gt;
&lt;h4 class="c-sharp" lang="code"&gt;Step 3: What does our database look like?&lt;/h4&gt;
&lt;p class="c-sharp" lang="code"&gt;Normally, the database should have been created first but this is not a real world example so I'll just provide a simple script you can use to create your database (this is a Sql Server 2005 script):&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e341d40e-db89-4274-9fa4-7dd988cd58ec" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="sql"&gt;SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [Post](
	[PostId] [int] IDENTITY(1,1) NOT NULL,
	[Title] [nvarchar](400) NOT NULL,
	[Body] [ntext] NOT NULL,
	[Author] [nvarchar](40) NOT NULL,
	[DateSubmitted] [datetime] NOT NULL CONSTRAINT [DF_Post_DateSubmitted]  DEFAULT (getdate()),
 CONSTRAINT [PK_Post] PRIMARY KEY CLUSTERED 
(
	[PostId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [p_GetPostById]
	@PostId int
AS
BEGIN

	SET NOCOUNT ON;

	SELECT
		*
	FROM Post
	WHERE
	( PostId = @PostId )

END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [p_GetIndexPosts]
AS
BEGIN

	SET NOCOUNT ON;

	SELECT TOP 10
		*
	FROM Post
	ORDER BY DateSubmitted DESC

END
&lt;/pre&gt;&lt;/div&gt;
&lt;p class="c-sharp" lang="code"&gt;After creating the database, remember to update the connection string to the one that suits your installation.&lt;/p&gt;
&lt;p class="sql" lang="code"&gt;Lets define our Post object now:&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f5c02e67-047e-4403-87eb-b8f559ad94d6" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;using System;

namespace Blog.Models
{
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Body { get; set; }
        public string Author { get; set; }
        public DateTime DateSubmitted { get; set; }
    }
}&lt;/pre&gt;&lt;/div&gt;
&lt;h4 class="sql" lang="code"&gt;Step 4: Getting the data access to our controllers.&lt;/h4&gt;
&lt;p class="sql" lang="code"&gt;Since the controllers in ASP.NET MVC can inherit from base classes (&lt;em&gt;we are after all using .Net aren't we?&lt;/em&gt;) wouldn't it be cool not to have to write the same stuff over an over again till the end of time? &lt;em&gt;&lt;strong&gt;Please! someone argue that!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="sql" lang="code"&gt;Lets define a base controller for our application:&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:da504163-5608-4d62-8e58-d5c40254eead" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Security.Principal;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using System.Web.UI;

using Blog.DataAcessLayer;

namespace Blog.Controllers
{
    [HandleError]
    [OutputCache( Location = OutputCacheLocation.None )]
    public abstract class ControllerBase : Controller
    {
        #region [ Properties ]

        private IBlog __blog;

        #endregion

        #region [ Constructor ]

        protected ControllerBase( ) : base( ) { }

        #endregion

        #region [ Properties ]

        protected IBlog Blog
        {
            get
            {
                if ( __blog == null )
                    __blog = BlogFactory.GetNewBlog( );

                return __blog;
            }
        }

        #endregion
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now that this is done, lets implement the HomeController (front page controller for our blog):&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:411f16bd-d083-4a55-9ca8-577dd00b2365" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace Blog.Controllers
{
    public class HomeController : ControllerBase
    {
        public ActionResult Index( )
        {
            return View( Blog.GetIndexPosts( ) );
        }

        public ActionResult Entry( int id )
        {
            return View( Blog.GetPostById( id ) );
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p class="c-sharp" lang="code"&gt;Last and final step is to define our ASP.Net MVC Views, we'll just need 2 for this example (one for the blogs front page and one for the permalink of each post):&lt;/p&gt;
&lt;p class="c-sharp" lang="code"&gt;&lt;strong&gt;Index View (front page):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:197f0b2d-fefe-499f-84a2-d2a068e8c115" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="Blog.Views.Home.Index" %&amp;gt;

&amp;lt;%@ Import Namespace="Blog.Models" %&amp;gt;

&amp;lt;asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server"&amp;gt;
    &amp;lt;% foreach( Post p in ViewData.Model) { %&amp;gt;
    
        &amp;lt;h2&amp;gt;&amp;lt;%= Html.Encode( p.Title ) %&amp;gt;&amp;lt;/h2&amp;gt;
    
        &amp;lt;p&amp;gt;&amp;lt;%= Html.Encode( p.Body ) %&amp;gt;&amp;lt;/p&amp;gt;
        &amp;lt;%
            string permalinkUrl = Url.Action( "Entry", "Home", new { id = p.PostId } );
            string author = Html.Encode( p.Author );
            string timeStamp = p.DateSubmitted.ToUniversalTime( ).ToString("dd/MM/yyyy HH:mm");
        %&amp;gt;
        &amp;lt;small&amp;gt;
            &amp;lt;%= author %&amp;gt; | &amp;lt;%= timeStamp %&amp;gt; UTC | &amp;lt;a href="&amp;lt;%= permalinkUrl %&amp;gt;" title="Permalink"&amp;gt;Permalink&amp;lt;/a&amp;gt;
        &amp;lt;/small&amp;gt;
    
    &amp;lt;% } %&amp;gt;
&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p class="c-sharp" lang="code"&gt;&lt;strong&gt;Entry View (permalink):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:24a0dcfd-4f46-4276-97ed-bbde5629a26f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Entry.aspx.cs" Inherits="Blog.Views.Home.Entry" %&amp;gt;
&amp;lt;asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"&amp;gt;
    
    &amp;lt;% if( ViewData.Model == null ) { %&amp;gt;
    
        &amp;lt;h1&amp;gt;The post was not found!&amp;lt;/h1&amp;gt;
        
    &amp;lt;% } else { %&amp;gt;
        
            &amp;lt;h2&amp;gt;&amp;lt;%= Html.Encode( ViewData.Model.Title ) %&amp;gt;&amp;lt;/h2&amp;gt;
        
            &amp;lt;p&amp;gt;&amp;lt;%= Html.Encode( ViewData.Model.Body )%&amp;gt;&amp;lt;/p&amp;gt;
            &amp;lt;%
                string permalinkUrl = Url.Action( "Entry", "Home", new { id = ViewData.Model.PostId } );
                string author = Html.Encode( ViewData.Model.Author );
                string timeStamp = ViewData.Model.DateSubmitted.ToUniversalTime( ).ToString( "dd/MM/yyyy HH:mm" );
                string indexUri = Url.Action( "Index", "Home" );
            %&amp;gt;
            
            &amp;lt;small&amp;gt;
                &amp;lt;%= author %&amp;gt; | &amp;lt;%= timeStamp %&amp;gt; UTC | &amp;lt;a href="&amp;lt;%= permalinkUrl %&amp;gt;" title="Permalink"&amp;gt;Permalink&amp;lt;/a&amp;gt;
                &amp;lt;br /&amp;gt;
                &amp;lt;a href="&amp;lt;%= indexUri %&amp;gt;" title="Back to index"&amp;gt;Back to the blog's index&amp;lt;/a&amp;gt;
            &amp;lt;/small&amp;gt;
    
    &amp;lt;% } %&amp;gt;
    
&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 class="xhtml" lang="code"&gt;Step 5: Putting it all together&lt;/h4&gt;
&lt;p class="xhtml" lang="code"&gt;For your convenience I've uploaded the full source code (the link is provided below) - written in Visual Studio 2008. You should need ASP.NET MVC (BETA) installed for it to launch.&lt;/p&gt;
&lt;p class="xhtml" lang="code"&gt;I hope I gave you something to think about, your comments are always welcome.&lt;/p&gt;
&lt;p&gt;&lt;a title="The Power Of Interface Polymorphism" href="http://azazeal.xelixis.net/file.axd?file=2008%2f11%2fDALInterfaces.zip"&gt;DALInterfaces.zip (278.67 kb)&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/The-power-of-interface-polymorphism.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/The-power-of-interface-polymorphism.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=848395e5-e02f-4591-aabe-f74e74732a40</guid>
      <pubDate>Tue, 11 Nov 2008 23:28:00 +0200</pubDate>
      <category>Design &amp; Architecture</category>
      <category>Separation of Concerns</category>
      <category>ASP.NET MVC</category>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=848395e5-e02f-4591-aabe-f74e74732a40</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=848395e5-e02f-4591-aabe-f74e74732a40</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/The-power-of-interface-polymorphism.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=848395e5-e02f-4591-aabe-f74e74732a40</wfw:commentRss>
    </item>
    <item>
      <title>Blog alive</title>
      <description>&lt;p&gt;Welcome to my new blog. I sincerely hope that every single bit of information posted here will be of use to you but even if that's not the case I sure hope I'll at least be able to make you smile.&lt;/p&gt;
&lt;p&gt;Till the first true post,&lt;br /&gt;Bye bye.&lt;/p&gt;</description>
      <link>http://azazeal.xelixis.net/post/Blog-alive.aspx</link>
      <author>azazeal.nospam@nospam.mafia-consultancy.com (azazeal)</author>
      <comments>http://azazeal.xelixis.net/post/Blog-alive.aspx#comment</comments>
      <guid>http://azazeal.xelixis.net/post.aspx?id=151c8195-b9c6-4d5c-8b18-39cb492c67e4</guid>
      <pubDate>Mon, 10 Nov 2008 23:19:00 +0200</pubDate>
      <dc:publisher>azazeal</dc:publisher>
      <pingback:server>http://azazeal.xelixis.net/pingback.axd</pingback:server>
      <pingback:target>http://azazeal.xelixis.net/post.aspx?id=151c8195-b9c6-4d5c-8b18-39cb492c67e4</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://azazeal.xelixis.net/trackback.axd?id=151c8195-b9c6-4d5c-8b18-39cb492c67e4</trackback:ping>
      <wfw:comment>http://azazeal.xelixis.net/post/Blog-alive.aspx#comment</wfw:comment>
      <wfw:commentRss>http://azazeal.xelixis.net/syndication.axd?post=151c8195-b9c6-4d5c-8b18-39cb492c67e4</wfw:commentRss>
    </item>
  </channel>
</rss>