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

<channel>
	<title>Zenwerx</title>
	<atom:link href="http://zenwerx.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://zenwerx.com</link>
	<description>Custom Development and Consulting</description>
	<lastBuildDate>Sat, 17 Jul 2010 14:55:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>LINQ-2-SQL &#8211; The Good and the Bad</title>
		<link>http://zenwerx.com/2010/07/17/linq-2-sql-the-good-and-the-bad/</link>
		<comments>http://zenwerx.com/2010/07/17/linq-2-sql-the-good-and-the-bad/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 14:54:47 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=315</guid>
		<description><![CDATA[It&#8217;s been a few weeks since I&#8217;ve posted an update on here, and I do have a good excuse! My brother is getting married (today &#8211; July 17th), I ended up going to Vegas for his bachelor party, and I&#8217;m preparing to go on vacation myself on Sunday. Before I go I did want to [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a few weeks since I&#8217;ve posted an update on here, and I do have a good excuse! My brother is getting married (today &#8211; July 17th), I ended up going to Vegas for his bachelor party, and I&#8217;m preparing to go on vacation myself on Sunday. Before I go I did want to make another post though, and so here it is.</p>
<h3>&nbsp;</h3>
<p>Since the release of LINQ in .NET 3.5 I had been a little skeptical of it. I&#8217;ve never been a fan of code that does things automagically (yes, I said automagically). When I took my latest job I started working on a project which made use of LINQ-2-SQL very highly, and so I was forced to embrace it and begin working with it.  My overall impression of it is that it&#8217;s not quite as bad as I originally thought. Selecting objects from a list with SQL-like syntax actually seems very natural, and the selection can replace a lot of lines of messy code when you&#8217;re searching for a certain subset of items within a larger collection. On the other hand, I still feel a foreach loop iterating over a collection makes your code more readable in the long run.</p>
<h3>&nbsp;</h3>
<p>There are also some nasty pitfalls when using LINQ-2-SQL which most developers won&#8217;t ever notice unless they&#8217;re using large datasets, which we just so happen to be doing. The system I was working on as mentioned earlier has a database which is between 10-20GB at any point in time. This is by no means extremely large, but it was big enough for us to start seeing major performance issues with sloppy LINQ-2-SQL code.</p>
<h3>&nbsp;</h3>
<p>No matter what the queries LINQ generated for selections were fairly efficient; I have no complaints about that at all. Where it breaks down, and horribly so if you don&#8217;t know what you&#8217;re doing, is when doing insert, update and delete operations. The default behavior of LINQ-2-SQL is to open the connection to the data store execute one data modification query for one record, close the connection, and then move to the next record. Like I said before, unless you&#8217;re working with big datasets this probably isn&#8217;t an issue. On the other hand our system was working with datasets on the size of hundreds of thousands to millions of rows at a time, working one row at a time. Can you imagine how much overhead was being generated for data modifications?? It was utter ridiculousness.</p>
<h3>&nbsp;</h3>
<p>The bright side of this whole situation is you can make LINQ-2-SQL more efficient in this regard, but you do need to be explicit about it. You must make sure to open your connection to the database before you begin your updates. If you want your whole update wrapped in a transaction you must tell LINQ this or each update will be its own transaction. Now, and not before, you ask LINQ to update your database. (There may be some inconsistencies here, I&#8217;m writing this from memory and I haven&#8217;t touched the offending project in months.)</p>
<h3>&nbsp;</h3>
<p>How does being explicit with LINQ fare compared to trusting the default behavior? Quite well I must say. Our modifications which were taking hours upon hours before could be done in as 15 minutes or less. We&#8217;re talking an order of magnitude of difference here. Personally I couldn&#8217;t believe how inefficient it was off the bat and how well it performed before. A couple little steps before any data modifications saved me the trouble of having to rip out the guts of the data access layer for this project and rewrite it.</p>
<h3>&nbsp;</h3>
<p>Anyway, I hope this helps someone else in the future. I&#8217;ll update with some code examples later when I get back to work.</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/07/17/linq-2-sql-the-good-and-the-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Model View Presenter (MVP) &#8211; Passive View</title>
		<link>http://zenwerx.com/2010/06/23/model-view-presenter-mvp-passive-view/</link>
		<comments>http://zenwerx.com/2010/06/23/model-view-presenter-mvp-passive-view/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 02:46:23 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=269</guid>
		<description><![CDATA[It&#8217;s time to get back to the project I was talking about the other day which required some refactoring. I started yesterday afternoon ( our bi-weekly kickoff was in the morning ) and finished modifications early this afternoon. Technically, removing the data objects into their own project was done yesterday too; that was the easy [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s time to get back to the project I was talking about the other day which required some refactoring. I started yesterday afternoon ( our bi-weekly kickoff was in the morning ) and finished modifications early this afternoon. Technically, removing the data objects into their own project was done yesterday too; that was the easy part! I also took the time, since I was already in modification mode, to change my databinding techniques. Rather than using an ObjectDataSource my views must implement a <em>bindView</em> method, which gets called from the presenter on initialization. From the <em>bindView</em> method I call the data retrieval methods. It seems much cleaner, and it removes the necessary reference of my data objects from the UI project.</p>
<h3>&nbsp;</h3>
<p>Now, as you can guess from the title of this post we&#8217;re making use of the MVP pattern to build this project, the passive view pattern to be exact. My first impressions of this pattern were a little fuzzy, I was trying to figure out why this was better than using MVC ( As I side note, I tried MS&#8217; MVC framework a few months back and was pleasantly surprised &#8212; It reminded me a lot of the Zend framework ). When I started implementing the pattern and began writing my unit tests I started to see where this pattern really began to shine. As a side effect though, I have a lot of interfaces and I hope those who touch the code later don&#8217;t get entirely confused.</p>
<h3>&nbsp;</h3>
<p>In the passive view pattern, all of your views are dumb. They contain absolutely no logic (or at least as little as possible). The views are only containers for your data, and what happens to that data is the responsibility of your presenter. Obviously when using event driven GUI&#8217;s you need a little bit of code in your view, but other than deciding which events to handle there&#8217;s basically nothing there. I&#8217;ve made a personal call by putting some validation into my views, but that was because I didn&#8217;t want to throw away the usefulness of the ASP.NET validation controls. I also continue to do validation in the presenter before anything gets persisted.</p>
<h3>&nbsp;</h3>
<p>The beauty of the pattern, as I stated already, is the unit testing. Since my views are as dumb as they can be the bulk of my testing is done at the presenter and data access layer. I think this is absolutely wonderful since automatic testing of GUIs is a horrible chore! While there are many tools which can help you along the way, it just never seems to be worth the effort. With the passive view pattern I can literally test the same set of events which would be raised through the GUI easily with unit tests.</p>
<h3>&nbsp;</h3>
<p>As an aside I&#8217;d like to mention that unit testing, while a great boon to the development community, doesn&#8217;t replace the task of testing by yourself. I still test every method I write with as much care and pride as possible. Assuming your code works correctly just because your unit test passed doesn&#8217;t mean it works right! I like to view unit tests more as an aid to help me pinpoint when I break things later.</p>
<h3>&nbsp;</h3>
<p>And now back to the downside of the MVP pattern&#8230; The complexity! I&#8217;m sure this is partially due to the way we&#8217;re tackling this particular project, but at the moment we have a lot of assemblies being generated in order to support the pattern:</p>
<h3>&nbsp;</h3>
<ul>
<li>Data Objects</li>
<li>Data Access Layer
<ul>
<li><em>Data Access Interfaces</em></li>
<li><em>Data Factory</em></li>
</ul>
</li>
<li>Presentation Layer
<ul>
<li><em>View Interfaces</em></li>
<li><em>Concrete Presenters</em></li>
</ul>
</li>
<li>UI Layer
<ul>
<li><em>ASPX Pages</em></li>
<li><em>User Controls (implementing view interfaces)</em></li>
</ul>
</li>
<li>WCF Service</li>
</ul>
<h3>&nbsp;</h3>
<p>That&#8217;s the basics of it anyway&#8230; And I&#8217;m still not sure I&#8217;m doing it entirely right. I made the design decision to communicate from presenter to view using only primitives (string, int, etc ). I&#8217;ve seen other people use another layer of interfaces for their data objects to facilitate the views using these, and the presenter translating between view data objects and actual data objects. In my opinion this just adds another layer of unnecessary complexity, but there could be a good reason for it as well.</p>
<h3>&nbsp;</h3>
<p>I do think the testability of this pattern adds significant value. The complexity is a side effect, but one which I believe is manageable as long as I keep things clear and concise. All told, I do think the MVP/Passive View pattern is adding value. If I didn&#8217;t think so I would have abandoned it early on in the process of development.</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/23/model-view-presenter-mvp-passive-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pi &#8211; Madness</title>
		<link>http://zenwerx.com/2010/06/23/pi-madness/</link>
		<comments>http://zenwerx.com/2010/06/23/pi-madness/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 01:54:49 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[Oddities]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=266</guid>
		<description><![CDATA[It seems I haven&#8217;t done any cleanup on my cached pi pictures in quite some time. I took a look today and the cache folder had ballooned much larger than I had ever seen! &#160; ******:zenwerx.com/pi/cache$ ls &#124; grep -c png 6544 ******:zenwerx.com/pi/cache$ du . -h 2.0G . &#160; 6500 images totalling 2GB! Oh, and [...]]]></description>
			<content:encoded><![CDATA[<p>It seems I haven&#8217;t done any cleanup on my <a href="/pi/cache/">cached pi pictures</a> in quite some time. I took a look today and the cache folder had ballooned much larger than I had ever seen!</p>
<h2>&nbsp;</h2>
<p><code><br />
******:zenwerx.com/pi/cache$ ls | grep -c png<br />
6544<br />
******:zenwerx.com/pi/cache$ du . -h<br />
2.0G    .<br />
</code></p>
<h2>&nbsp;</h2>
<p>6500 images totalling 2GB! Oh, and I accidentally deleted the browsing script when I cleaned up too. Whoops! Thank goodness it was just a symbolic link, but it had me worried for a bit!</p>
<h2>&nbsp;</h2>
<p><strong><em>Update &#8211; June 24th</em></strong><br />
Apparently the Pi picture script has been broken for a few months (ever since the server was upgraded). The permissions were set incorrectly on the cache folder and the script couldn&#8217;t save any images there. It&#8217;s all fixed now, but I wonder how big the folder would have been if there hadn&#8217;t been an issue&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/23/pi-madness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework &#8211; A Win</title>
		<link>http://zenwerx.com/2010/06/22/zend-framework-a-win/</link>
		<comments>http://zenwerx.com/2010/06/22/zend-framework-a-win/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 00:33:17 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=261</guid>
		<description><![CDATA[I&#8217;m certain there must be thousands of other posts out there like this already, but I felt the need to address my love for the Zend framework personally. I have picked it up for one of my custom development jobs and while it seemed a little tricky to figure out at first I am pleasantly [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m certain there must be thousands of other posts out there like this already, but I felt the need to address my love for the <a href="http://framework.zend.com/">Zend framework</a> personally. I have picked it up for one of my custom development jobs and while it seemed a little tricky to figure out at first I am pleasantly surprised at its usefulness. There are all sorts of fun things to find in the lovely class library the creators of PHP have made available for us.</p>
<h3>&nbsp;</h3>
<p>I&#8217;ve put off the learning of it for some time because of several factors. First and foremost, I had previously rolled my own framework before the Zend framework ever existed. While my framework isn&#8217;t as good as the Zend framework, it was specifically tailored towards my own needs. Second, most of the other projects I work on I always thought were too small to pick up the framework for. I always said to myself &#8220;I could do this quick and dirty, or spend a couple days learning ZF.&#8221; Quick and dirty always won out. Finally I&#8217;ve got a project which I figured was big enough in scope to dig into the framework for, and I really like it.</p>
<h3>&nbsp;</h3>
<p>From having (no so) simple things like a working class autoloader, which includes namespace support, to the routing of requests to controllers, or even using PHP itself as the templating language&#8230; It&#8217;s wonderful. As I said before the learning curve was a little much, and some of the documentation leaves you wondering what&#8217;s going on, but once you pick it up things are pretty good.</p>
<h3>&nbsp;</h3>
<p>At first I wasn&#8217;t entirely impressed with using PHP as the templating language. I had used the <a href="http://www.smarty.net/" target="_blank">Smarty templating engine</a> in my own framework and liked the way it worked. I thought it kept my templates nice and clean and unpolluted with code. Then I started thinking about how much work I used to put in to Smarty every time I wanted to create a new drop down list, or other data bound control. Sure, I had helpers set up&#8230; but I ended up writing a lot of code like this:</p>
<h3>&nbsp;</h3>
<p><code><br />
public static function wrap_some_new_tag($params, &amp;$smarty ) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;$newtag = new DataComboBox();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;// parse params common for all combo boxes<br />
&nbsp;&nbsp;&nbsp;&nbsp;self::$SMARTYMGR-&gt;parseComboParams($ts, $params);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;$newtag-&gt;setDefault("0", "(Select a XXXX)");<br />
&nbsp;&nbsp;&nbsp;&nbsp;$newtag-&gt;setDataSource( DataSourceFactory::getXXXXXX() );<br />
&nbsp;&nbsp;&nbsp;&nbsp;$newtag-&gt;setDisplayField("NewTagDisplayField");<br />
&nbsp;&nbsp;&nbsp;&nbsp;$newtag-&gt;setValueField("NewTagID");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;return $newtag-&gt;buildControl();<br />
}<br />
</code></p>
<h3>&nbsp;</h3>
<p>And in my templates was something like this:</p>
<h3>&nbsp;</h3>
<p><code>{newtag id='id' param1='param1' ... }</code></p>
<h3>&nbsp;</h3>
<p>I&#8217;m still polluting my view logic with a lot of data, as well as writing a wrapper every time I want a new form element which deals with parameters/etc. And I really started thinking, did I want to keep doing this?  With the Zend framework I can design forms in XML (or PHP code), have them filled with data&#8230; and no need to worry about how to hack Smarty to make it do what I like. I can also <a href="http://codeutopia.net/blog/2009/03/09/database-backed-zend_form-elements/">subclass Zend_Form_Element_XXXX to be data aware</a>. Who knows, maybe I&#8217;m thinking about this whole form thing all wrong; I am new&#8230; but I think this has potential.</p>
<h3>&nbsp;</h3>
<p>Anyway, this post is getting a little long and I have work to do&#8230; More updates at a later date.</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/22/zend-framework-a-win/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Development Blog</title>
		<link>http://zenwerx.com/2010/06/21/development-blog/</link>
		<comments>http://zenwerx.com/2010/06/21/development-blog/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 01:26:17 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://zenwerx.com/2010/06/21/development-blog/</guid>
		<description><![CDATA[I have started to record some of my programming experiences under the new &#8220;development&#8221; section. Inspired by an issue I ran in to at my day job. These posts won&#8217;t display on the front page but can be reached from the category menu.]]></description>
			<content:encoded><![CDATA[<p>I have started to record some of my programming  experiences under the new &#8220;development&#8221; section. Inspired by an issue I ran in to at my day job. These posts won&#8217;t display on the front page but can be reached from the category menu.</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/21/development-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design, Design, DESIGN</title>
		<link>http://zenwerx.com/2010/06/21/design-design-design/</link>
		<comments>http://zenwerx.com/2010/06/21/design-design-design/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 00:29:36 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://zenwerx.com/2010/06/21/design-design-design/</guid>
		<description><![CDATA[I am currently working on a large solo project which is comprised of both a website and a web service. The site is a content driver for another project which will communicate via the service. &#160; Even with a decent amount of design with my manager and I have already done I ran into a [...]]]></description>
			<content:encoded><![CDATA[<p>I am currently working on a large solo project which is comprised of both a website and a web service. The site is a content driver for another project which will communicate via the service.</p>
<h2>&nbsp;</h2>
<p>Even with a decent amount of design with my manager and I have already done I ran into a slight issue today. We are using ADO.Net and manually built data objects ( entity framework was investigated but passed on for reasons I won&#8217;t get in to ). I wanted to have many properties on my data objects lazily loaded and here is where I made my mistake.</p>
<h2>&nbsp;</h2>
<p>In order to facilitate the lazy loading I placed the data objects in the same project as the data access layer and ended up coupling them tightly to the access layer. While thinking about the WCF service today I realized my issues. The other project has to know about my data objects, but it shouldn&#8217;t know about my data access layer.</p>
<h2>&nbsp;</h2>
<p>Ok, well at this point we just separate the data objects out&#8230; Right? Well the data objects are coupled to the data access layer. A very bad idea I now have to remedy. This is an issue which will take a significant amount of refactoring.</p>
<h2>&nbsp;</h2>
<p>Despite days of design we still have an issue which is going to take development time out of our schedule. The moral here is to always think ahead, even when you believe you have a design worked out!</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/21/design-design-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SmartRSS</title>
		<link>http://zenwerx.com/2010/06/04/smartrss/</link>
		<comments>http://zenwerx.com/2010/06/04/smartrss/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 02:10:43 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=255</guid>
		<description><![CDATA[Well, this isn&#8217;t the project I was saying I didn&#8217;t have time for yesterday. This happens to be a project I was working on for a client. Since the plugin was originally available out in the wild, I am doing the same by making my modifications available in the spirit of free software. Enjoy!]]></description>
			<content:encoded><![CDATA[<p>Well, this isn&#8217;t the project I was saying I didn&#8217;t have time for yesterday. This happens to be a project I was working on for a client. Since the plugin was originally available out in the wild, I am doing the same by making my modifications available in the spirit of free software.</p>
<p><a href="/projects/smartrss/">Enjoy</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/04/smartrss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Friendly</title>
		<link>http://zenwerx.com/2010/06/03/mobile-friendly/</link>
		<comments>http://zenwerx.com/2010/06/03/mobile-friendly/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 02:35:23 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Oddities]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=233</guid>
		<description><![CDATA[I just wanted to note that I have turned on a mobile friendly version of the site for any users who are using iPhones or iPod touches. If you have any difficulties with the mobile version, please get a hold of me. Also&#8230; There&#8217;s a new section under oddities. Something which has been laying dormant [...]]]></description>
			<content:encoded><![CDATA[<p>I just wanted to note that I have turned on a mobile friendly version of the site for any users who are using iPhones or iPod touches. If you have any difficulties with the mobile version, please get a hold of me.</p>
<p>Also&#8230; There&#8217;s a new section under oddities. Something which has been laying dormant for about 4 years and I figured should see the light of day.</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/03/mobile-friendly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Project Delayed</title>
		<link>http://zenwerx.com/2010/06/03/new-project-delayed/</link>
		<comments>http://zenwerx.com/2010/06/03/new-project-delayed/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 00:08:55 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=222</guid>
		<description><![CDATA[I am sad to report my new project has been slightly delayed. I&#8217;ve been doing some contract work lately which has been keeping time for personal projects to a minimum. Hopefully some time will be available soon!!!]]></description>
			<content:encoded><![CDATA[<p>I am sad to report my new project has been slightly delayed. I&#8217;ve been doing some contract work lately which has been keeping time for personal projects to a minimum. Hopefully some time will be available soon!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/06/03/new-project-delayed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updates&#8230; Really???</title>
		<link>http://zenwerx.com/2010/04/14/updates-really/</link>
		<comments>http://zenwerx.com/2010/04/14/updates-really/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 03:55:52 +0000</pubDate>
		<dc:creator>Michael Carpenter</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://zenwerx.com/?p=180</guid>
		<description><![CDATA[Yes, I finally got around to updating the site. It looks a little more modern now, as well as includes a &#8220;Portfolio&#8221; section which includes a selection of my consulting/contract work over the last few years. Where did I get the time to do an update, since I haven&#8217;t done anything big in roughly 4-5 [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, I finally got around to updating the site. It looks a little more modern now, as well as includes a &#8220;Portfolio&#8221; section which includes a selection of my consulting/contract work over the last few years. Where did I get the time to do an update, since I haven&#8217;t done anything big in roughly 4-5 years? Well, the thing is that during those last 4-5 years I have been working full time and completing my Comp Sci degree part time (previously I had a College Diploma). It&#8217;s been a busy time! Well now the degree is done, so I have some time to do more work that I want to do.</p>
<h2>&nbsp;</h2>
<p>And since I have all this free time now, I think I&#8217;m going to start on a new project I&#8217;ve been meaning to get around to for a while now. Should have more to post in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://zenwerx.com/2010/04/14/updates-really/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
