<?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"
	>

<channel>
	<title>Loosely Typed in Ohio</title>
	<atom:link href="http://www.innova-partners.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.innova-partners.com/blog</link>
	<description>Innova Partners, software, networking, and websites.</description>
	<pubDate>Tue, 04 Nov 2008 17:00:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Zend Framework: WTF?</title>
		<link>http://www.innova-partners.com/blog/2008/11/04/zend-framework-wtf/</link>
		<comments>http://www.innova-partners.com/blog/2008/11/04/zend-framework-wtf/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 17:00:30 +0000</pubDate>
		<dc:creator>Jon Canady</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Anti-Framework]]></category>

		<category><![CDATA[Fail]]></category>

		<category><![CDATA[QuickStart]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.innova-partners.com/blog/2008/11/04/zend-framework-wtf/</guid>
		<description><![CDATA[As I was trying out Zend Framework 1.6.2, certain things made me cringe:


There&#8217;s a &#8220;Minimal&#8221; distribution, but it&#8217;s just as large as ever.  Non-minimal I guess means with Dojo and unit tests.  Forget the fact that I might never use Zend&#95;Search&#95;Lucene (Lucene search provider), Zend&#95;Gdata (Googel Data API), or Zend&#95;Service&#95;Nirvanix (no clue).
The &#8220;QuickStart&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>As I was trying out Zend Framework 1.6.2, certain things made me cringe:</p>

<ul>
<li>There&#8217;s a &#8220;Minimal&#8221; distribution, but it&#8217;s just as large as ever.  Non-minimal I guess means with Dojo and unit tests.  Forget the fact that I might never use Zend&#95;Search&#95;Lucene (Lucene search provider), Zend&#95;Gdata (Googel Data API), or Zend&#95;Service&#95;Nirvanix (no clue).</li>
<li>The &#8220;<a href="http://framework.zend.com/docs/quickstart">QuickStart</a>&#8221; is ten-pages long and is a full-on tutorial on how to build a basic application.  Not the &#8220;download this, put these files here, go to town&#8221; I was hoping for.  Perhaps I&#8217;m being pedantic, forge on.</li>
<li>On <a href="http://framework.zend.com/docs/quickstart/create-a-bootstrap-file">page 5</a>, you create a bootstrap.php file which contains a bunch of application configuration details.  All of these are pretty much stock and won&#8217;t change between applications.  On <a href="http://framework.zend.com/docs/quickstart/create-a-layout">page 7</a>, you add a bunch of stuff to the bootstrap file so your application can do something esoteric like <em>use view layouts.</em>  Also, there&#8217;s no explicit point telling you where to add the stuff.  Hint: take the last &#8220;cleanup&#8221; step, remove that, and add in all the new code.  This happens every time you modify the bootstrap.  Yes, we do this more than once.</li>
<li>When you&#8217;re creating your first layout, there&#8217;s nothing that tells you what file to put the example layout code in.  I had to google that, find an unrelated tutorial, and guess-and-check my way back to a working sample app.  (The unrelated Zend 1.5 tutorial said to use &#8220;default.phtml&#8221;, you need to use &#8220;layout.phtml&#8221; in whatever directory is in the bootstrap file.)</li>
<li>On <a href="http://framework.zend.com/docs/quickstart/create-a-configuration-and-registry">page 8</a> you update the bootstrap <em>again</em>, so your app has the privilege of <em>reading a database config file</em>.</li>
<li>Whoops.  On <a href="http://framework.zend.com/docs/quickstart/create-a-model-and-database-table">page 9</a> you update the bootstrap <em>for the last time</em> (in this tutorial).  Because before when you set it up to read the database config file you didn&#8217;t set it up to actually connect to a database.</li>
<li>Apparently, in the controllers you&#8217;re creating (on page 9), you have to tell the controller to fetch the controller&#8217;s model explicitly.  Also your model has-a Zend&#95;Db&#95;Table object, but not just <em>any</em> Zend&#95;DB&#95;Table object – you create a subclass!  So: Your &#8220;table model&#8221; explicitly gives the table name, and overrides the normal insert() and update() methods.  Then you have a regular application Model that has this &#8220;table model&#8221; as an instance variable.  In this &#8220;regular Application Model&#8221;, you have to explicitly write a save() function that takes a hash, rejects all of the entires whose keys don&#8217;t match a table column name, and then insert the array.  You also write a fetchEntries() function that is just a wrapper around the much longer $this-getTable()-fetchAll(&#8217;1&#8242;)-toArray(); call.  Finally, you write a fetchEntry method that fetches an entry by ID.  By far one of the most horrifying things I read, and this is the actual point where I gave up.</li>
<li>Just for kicks, I checked out <a href="http://framework.zend.com/docs/quickstart/create-a-form">page 10</a> that shows you how to create a form the Zend Framework way.  I was glad I stopped at the previous step: you actually define a subclass of Zend&#95;Form that defines your form programmatically as an object, and your view automatically wires up based on the class name!  So the only thing in your view is <code>?= $this-form</code>.  Not, y&#8217;know, <em>HTML</em> or anything.  (Astute readers here will wonder, if we&#8217;re generating forms this way, how are they styled?  Why, you just override the form&#8217;s <a href="http://framework.zend.com/manual/en/zend.form.decorators.html">decorator</a> object!  It is to gag.)</li>
</ul>

<p>So, it turns out that steps 1-4 were pretty much things that a shell script could do for me.</p>

<p>After that I find myself writing code to do things like have my models save an array of data properly, or explicitly telling my &#8220;GuestbookController&#8221; that it should go out, <code>require_once</code> the &#8220;Guestbook&#8221; model (their autoloader only handles &#8220;library&#8221; items.  &#8220;Application&#8221; items like <em>models</em> still need to be explicitly <code>require</code>d!), and then instantiate a new Model_Guestbook().  </p>

<p>And each time dorking with my bootstrap.php file and telling it to do things that the framework should really know how to do on its own.</p>

<p>And the <em>form</em> class!  </p>

<p>Dear goodness, this is the way people <em>choose</em> do to things?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innova-partners.com/blog/2008/11/04/zend-framework-wtf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I Hate You, Apple Customer Service (Updated!)</title>
		<link>http://www.innova-partners.com/blog/2008/10/23/i-hate-you-apple-customer-service/</link>
		<comments>http://www.innova-partners.com/blog/2008/10/23/i-hate-you-apple-customer-service/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 22:17:52 +0000</pubDate>
		<dc:creator>Jon Canady</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[display]]></category>

		<category><![CDATA[laptop]]></category>

		<category><![CDATA[notebook]]></category>

		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://www.innova-partners.com/blog/2008/10/23/i-hate-you-apple-customer-service/</guid>
		<description><![CDATA[Final Update!: A gentleman from Apple Executive Support (I think) just contacted me regarding the case.  He was very courteous about the whole thing.  I told him the honest truth: that I&#8217;m no longer completely enraged but that I just expected someone at the Apple Store to be able to help, or for [...]]]></description>
			<content:encoded><![CDATA[<p><b>Final Update!</b>: A gentleman from Apple Executive Support (I think) just contacted me regarding the case.  He was very courteous about the whole thing.  I told him the honest truth: that I&#8217;m no longer completely enraged but that I just expected someone at the Apple Store to be able to help, or for my return to be given preferential treatment (since it&#8217;s a <em>return</em>), but he mentioned that it&#8217;s a custom order thing with new hardware.  He said they were investigating whether or not they could get something expedited out for me, and I appreciate that.  It&#8217;s a little weird that I had to go this far up the chain to get an expedite, but it looks like things are in good shape now.</p>

<p><b>Update!</b>: It turns out that &#8220;a day or two at the factory and then overnight shipping&#8221; means 7-10 business days.  When questioned, the official response from the &#8220;AppleCare Support Admin&#8221; was &#8220;well, it takes a while to build the unit, and we have to ship it from China.&#8221;  <em>Then why the hell did you say overnight?</em>  Also, see the comments for various people trying to defend Apple&#8217;s policy.</p>

<p>Like any good Mac tool, I ordered the new 15&#8243; MacBook Pro the day they were announced.  I could rationalize the purchase &#8217;till next week, but the bottom line is I wanted a spiffy laptop and I ordered one.  I even custom-configured it with a larger, faster hard drive!</p>

<p>That last bit&#8217;s important.  For want of this hard drive in my defective unit, Apple Support <em>completely shit</em> all over me.</p>

<p><span id="more-240"></span>
When the new notebook came in, it had a crippling display issue which made the laptop unusable.  As much as that sucks, you don&#8217;t work around technology for years without developing a thick skin for this sort of thing.  So I expected Apple to own-up to their mistake and do whatever was necessary to get me together with a working machine.  I mean, this is a factory defect.  It <em>arrived</em> this way!  </p>

<p>Here&#8217;s what I expected to happen:</p>

<ul>
<li>Walk into Apple Retail store, explain problem, show them the defective unit, and have it replaced on-the-spot.</li>
</ul>

<p>Here&#8217;s what actually happened:</p>

<ul>
<li><strong>Call 1-800 number to schedule an <em>appointment</em> with the Genius Bar.</strong>  This is another rant really, but having to schedule my &#8220;please replace my defective product&#8221; visit is absolutely shit.  The appointment is for the next morning, which just made the suck that much more sucky.</li>
<li><strong>Take some time out of my day, head down to the Apple Store, and have them tell me that there&#8217;s nothing they can do.</strong>  If I&#8217;d had a base-configure machine, then fine, they&#8217;ll replace it.  But they can&#8217;t replace <em>my</em> machine because I have a faster hard drive, and they don&#8217;t have that model in stock.  When I point out that they have an otherwise <em>identical</em> machine that we can just swap the larger hard drive into, they refuse.  </li>
<li><strong>Call the 1-800 number again and set up an RMA.</strong>  They had to take my number and call me back for some reason, but to their credit, they <em>actually did</em>.<br />
Okay, so let&#8217;s overnight me a new machine with a return box, right?  <em>Wrong!</em>  They can&#8217;t overnight anything because it&#8217;s a custom machine.  It&#8217;ll take a week probably.  Just to check, I ask this guy whether or not the Apple Retail shop can physically just switch out my HD into a unit that works.  Nope, that&#8217;s unpossible.</li>
<li><strong>Be frustrated for most of the day</strong> because, if this were Dell, they&#8217;d have me a return-box and a new machine next-day.  None of this &#8220;visit an Apple Store for no reason, might take a week&#8221; bullshit.  I&#8217;d have a computer I hate using, but the <em>service</em> would be excellent.</li>
<li><strong>Eventually get a call</strong> from &#8220;Junior&#8221;, an Applecare Specialist Admin, who sets up the actual return through fedex.  He points out that yes, absolutely they overnight all of this.  I print out some shipping labels, give the box to FedEx, and as soon as FedEx has scanned the barcode they build me a custom laptop.  <strike>Again, the actual build might add a day-or-two, but it&#8217;s overnight shipped.  This makes me feel <em>slightly</em> better.</strike>  <em>Wrong!</em>  See update at the top for fun &#8220;overnight doesn&#8217;t mean overnight&#8221; doublespeak!</li>
</ul>

<p>What&#8217;s the point of having Brick-and-Mortar buildings if they can&#8217;t service my stuff?  It&#8217;s not like you&#8217;ve soldered chips on the board just for me, it&#8217;s a <em>hard drive that&#8217;s slightly larger than stock</em>.  Take my &#8220;special&#8221; drive, put it in a machine that&#8217;s functionally identical, and send the defective unit back.  Why that couldn&#8217;t be done the same day I got my defective unit I&#8217;ll never know.  </p>

<p>Alternatively, the first time I called, there shouldn&#8217;t have been any kind of confusion.  Got a bum laptop?  Sorry about that, let&#8217;s overnight you a new one with shipping labels and a box for your old one.</p>

<p>I still love Apple machines, but goodness help you if you get a damaged unit and it isn&#8217;t stock.  That larger hard drive will <em>cost</em> you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innova-partners.com/blog/2008/10/23/i-hate-you-apple-customer-service/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Database Models I Have Known And Endured</title>
		<link>http://www.innova-partners.com/blog/2008/10/17/database-models-i-have-known-and-endured/</link>
		<comments>http://www.innova-partners.com/blog/2008/10/17/database-models-i-have-known-and-endured/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 19:49:14 +0000</pubDate>
		<dc:creator>Eddie Bowen</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.innova-partners.com/blog/?p=234</guid>
		<description><![CDATA[One thing you might have noticed that we do is SQL. We do a lot of SQL, so you&#8217;d think we would have figured out the best way of hooking up applications to databases.

To an extent, we have become so familiar with the requirements of database-driven development that we have come to accept the tools [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.innova-partners.com/blog/wp-content/uploads/2008/10/goat.jpg" alt="" title="goat" width="109" height="130" style="float:left; margin: 0px 5px 5px 0px" />One thing you might have noticed that we do is SQL. We do a lot of SQL, so you&#8217;d think we would have figured out the best way of hooking up applications to databases.</p>

<p>To an extent, we have become so familiar with the requirements of database-driven development that we have come to accept the tools that we have as being adequate. Even ODBC.</p>

<p>Obviously we&#8217;ve long ago moved past PHP functions like <em>mysql&#95;fetch&#95;row</em>. We expect things like sanitizing and escaping, multiple vendor support, query abstraction, and so on. We look back fondly on the clumsy simplicity (and scope for injection) of things like this:</p>

<ul>
<h4 style='margin: 0px 0px 8px 0px; color: orange;'>PHP</h4>
<code>mysql_query( "SELECT * FROM T_Shirt WHERE color = '{$favorite_color}'" );</code></ul>

<p>Nowadays we&#8217;re more likely to fetch records through a framework API, such as this use of Zend Framework&#8217;s <em>Zend&#95;Db</em>:</p>

<ul>
<h4 style='margin: 0px 0px 8px 0px; color: orange;'>PHP / Zend Framework</h4>
<code><pre>$db = Page::getDb();
$select = $db->select();
$select->from( 'T_Shirts' );
$select->where( 'color = ?', $favorite_color );

return $db->fetchAll( $select );</pre></code></ul>

<p>Because the query is broken down into a set of calls we can pass the select object around before we do the fetch. This is surprisingly handy.</p>

<p>But what else is out there that might be better than what we&#8217;re doing now? What would be the next step, the thing that would make <em>Zend&#95;Db</em> look like <em>mysql&#95;query</em>?</p>

<p><span id="more-234"></span>
If we were to not care about efficiency or robustness, we could use Rails&#8217; <em>ActiveRecord</em></p>

<ul>
<h4 style='margin: 0px 0px 8px 0px; color: orange;'>RoR / ActiveRecord</h4>
<code>Shirt.find(:all, :conditions => ['color = ?' favorite_color] )</code></ul>

<p>Which gives us a list of objects. This is slightly better than getting a bunch of arrays, but the syntax is a one-shot way of fetching - there isn&#8217;t an easy way to assemble a query progressively. </p>

<p>What about Java? Java has <em>Hibernate</em>.</p>

<ul>
<h4 style='margin: 0px 0px 8px 0px; color: orange;'>Java / Hibernate</h4>
<code>List shirts = session.createQuery( "from T_Shirt as shirt where shirt.color = ?" ).setString(0, favorite_color).list();</code></ul>

<p>Which again gives us an set of objects. Like most ORM products, Hibernate tries to sanitize SQL, with the effect of not being terribly helpful. At least Hibernate lets us defer the actual fetch.</p>

<p>Let&#8217;s look at what Microsoft is doing. (If you irrationally hate Microsoft, you might want to stop reading now. Here&#8217;s a picture of <a href="http://www.houseoffusion.com/users/images/fat_guy.jpg">Richard Stallman</a> instead.)</p>

<p>The evil empire&#8217;s latest database connectivity approach is <em><a href="http://en.wikipedia.org/wiki/Linq">LINQ</a></em>. LINQ is implemented as a language extension, rather than as a set of functions.</p>

<ul>
<h4 style='margin: 0px 0px 8px 0px; color: orange;'>C# / LINQ</h4>
<code>var query = from t in T_Shirt where color == favorite_color select t;</code></ul>

<p>Notice the query isn&#8217;t a function or a quoted string; it&#8217;s a language construct, like a select or a foreach. BFD you might think. Keep reading.</p>

<ul>
<h4 style='margin: 0px 0px 8px 0px; color: orange;'>C# / LINQ</h4>
<code><pre>var next_query = from t in query where brand == 'Prada' select t;</pre></code></ul>

<p>We&#8217;re actually using the same query engine on an array; the enumerable object returned by the first query is the datasource for the second query. LINQ extends to XML, MySQL and ADO.NET</p>

<p>The really cool thing is how this works with (for example) Excel. The following code uses <em>LINQ to Excel</em>, an open source project.</p>

<ul>
<h4 style='margin: 0px 0px 8px 0px; color: orange;'>C# / LINQ</h4>
<code><pre>XlsWorkbook book = new XlsWorkbook("TestData\\100.xls");

var sheets = from s in book.Worksheets
                 where s.Name == "100"
                 select s;</pre></code></ul>

<p>This level of integration works both ways, so you can generate .xls files using selects too.</p>

<p>This isn&#8217;t just a <em>slightly</em> better way of fetching records; it&#8217;s a game-changer. Having been a Mac user for twenty years it&#8217;s a little odd being a Microsoft evangelist, but this is compelling stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innova-partners.com/blog/2008/10/17/database-models-i-have-known-and-endured/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Basecamp: First Day Impressions</title>
		<link>http://www.innova-partners.com/blog/2008/10/06/basecamp-first-day-impressions/</link>
		<comments>http://www.innova-partners.com/blog/2008/10/06/basecamp-first-day-impressions/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 15:58:13 +0000</pubDate>
		<dc:creator>Jon Canady</dc:creator>
		
		<category><![CDATA[Productivity]]></category>

		<category><![CDATA[37signals]]></category>

		<category><![CDATA[basecamp]]></category>

		<category><![CDATA[fanboy]]></category>

		<category><![CDATA[GTD]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.innova-partners.com/blog/2008/10/06/basecamp-first-day-impressions/</guid>
		<description><![CDATA[Innova has tried a few things in the past to keep our projects organized.  We have an internal Wiki that we use for sharing data, fileservers every five feet for document sharing, an inter-office Jabber server that keeps our IMs going.  We use FogBugz to track bugs, Harvest to track time, and emails [...]]]></description>
			<content:encoded><![CDATA[<p>Innova has tried a few things in the past to keep our projects organized.  We have an internal <a href="http://www.mediawiki.org/">Wiki</a> that we use for sharing data, <a href="http://fedoraproject.org/">fileservers</a> every five feet for document sharing, an inter-office <a href="http://www.jabber.org/">Jabber</a> server that keeps our IMs going.  We use <a href="http://fogcreek.com/FogBUGZ/">FogBugz</a> to track bugs, <a href="http://www.getharvest.com/">Harvest</a> to track time, and emails and sporadic meetings to tie everything together.</p>

<p>On larger projects that span more than three people, this tends to break down a bit.  The individual tools are awesome, but emails and occasional face-to-faces just weren&#8217;t getting the job done.  We just couldn&#8217;t keep everything organized amongst everyone with such an ad-hoc system.</p>

<p>Enter <a href="http://www.basecamphq.com">Basecamp</a>.</p>

<p><span id="more-233"></span>
Full disclosure: I&#8217;m a big <a href="http://gettingreal.37signals.com/">Getting Real</a> advocate, and I love the <a href="http://www.rubyonrails.org">Rails</a> framework.  So when we needed a tool to help us manage our projects, I immediately thought of Basecamp.</p>

<p>First-day impressions: bad-ass.  To-do items couldn&#8217;t be easier, dropping relevant emails/IMs in as messages is a snap.  For the projects where we do two-week sprints, setting those up as milestones and working off of those is great.  And I haven&#8217;t used it yet, but I&#8217;m imagining that the iCalendar feed is going to be a big win.  The dashboard looks extremely useful.</p>

<p>I wish the access controls were a little more fine-grained than just &#8220;Administrator&#8221; and &#8220;Not Administrator&#8221;.  Also, since I&#8217;m the Basecamp Account Owner I&#8217;m on everything whether I want to be or not, which might mean I&#8217;ll have to create a personal account and redirect the owner account to a shared e-mail.  </p>

<p>It won&#8217;t replace any of our dedicated tools, but as a central point where we can organize everything it seems like it&#8217;s a big win!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innova-partners.com/blog/2008/10/06/basecamp-first-day-impressions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OWASP AppSec 2008: Last Day</title>
		<link>http://www.innova-partners.com/blog/2008/09/25/owasp-appsec-2008-last-day/</link>
		<comments>http://www.innova-partners.com/blog/2008/09/25/owasp-appsec-2008-last-day/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 21:16:08 +0000</pubDate>
		<dc:creator>Jon Canady</dc:creator>
		
		<category><![CDATA[Security]]></category>

		<category><![CDATA[appsec]]></category>

		<category><![CDATA[conferences]]></category>

		<category><![CDATA[nyc]]></category>

		<category><![CDATA[owasp]]></category>

		<guid isPermaLink="false">http://www.innova-partners.com/blog/2008/09/25/owasp-appsec-2008-last-day/</guid>
		<description><![CDATA[The last day of the 2008 OWASP AppSec conference in New York City has passed!

Chris and I saw some excellent talks, including one that introduced a tool that actually scared Chris with its effectiveness – but I&#8217;ll let him tell that story.  One of my favorites was &#8220;Agile Development and Security&#8221; which predictably talked [...]]]></description>
			<content:encoded><![CDATA[<p>The last day of the 2008 OWASP AppSec conference in New York City has passed!</p>

<p>Chris and I saw some excellent talks, including one that introduced a tool that actually scared Chris with its effectiveness – but I&#8217;ll let him tell that story.  One of my favorites was &#8220;Agile Development and Security&#8221; which predictably talked about how to develop securely while using the Agile methodology.  Innova isn&#8217;t specifically an &#8220;Agile&#8221; shop, the talk was still extremely helpful.  </p>

<p>Overall, the whole conference was a smashing success!  Aside from NYC, which is just plain awesome, the training and various speakers got Chris and I in a security-conscious mindset.  The training, for me at least, reinforced a lot I already knew and taught me plenty that I didn&#8217;t.  The speakers I saw outlined how attackers think, and how to implement the various things we&#8217;ve learned in real production environments where everything isn&#8217;t milk and honey.  We&#8217;re identifying places where we can implement these things, and trying to come up with a good presentation to give to the Innova crew and the local OWASP chapter that covers everything.</p>

<p>Tomorrow we&#8217;re just going to tour the parts of Manhattan that we haven&#8217;t walked around yet, and I&#8217;ll be back in town late Friday night!  NYC is awesome, and I&#8217;ll damn well miss it, but I&#8217;m looking forward to the comforts of home!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innova-partners.com/blog/2008/09/25/owasp-appsec-2008-last-day/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
