﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com/blog/</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2012 (c) 2012</copyright><ttl>60</ttl><item><title>Answering customer questions</title><description>&lt;p&gt;This made me laugh:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/blog/Images/Windows-Live-Writer/Answering-customer-questions_EDD4/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://ayende.com/blog/Images/Windows-Live-Writer/Answering-customer-questions_EDD4/image_thumb.png" width="1007" height="449"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And yes, I am aware that laughing at my own action is… strange.&lt;/p&gt;</description><link>http://ayende.com/blog/154369/answering-customer-questions?key=36bc85bc-591f-4a02-936e-d96b1415de01</link><guid>http://ayende.com/blog/154369/answering-customer-questions?key=36bc85bc-591f-4a02-936e-d96b1415de01</guid><pubDate>Tue, 08 May 2012 09:00:00 GMT</pubDate></item><item><title>Multi Threading Insanity</title><description>&lt;blockquote&gt; &lt;p&gt;&lt;img src="http://www.thefinancialpanner.com/wp-content/uploads/2010/12/EinsteinInsanity.jpg"&gt; &lt;p&gt;Insanity: doing the same thing over and over again and expecting different results.&lt;br&gt;&lt;a href="http://www.brainyquote.com/quotes/authors/a/albert_einstein.html"&gt;Albert Einstein&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;You obviously never done any multi threading work, dude!&lt;/p&gt;</description><link>http://ayende.com/blog/153793/multi-threading-insanity?key=bf22defd-c7a3-4044-a31a-e2ce153917ee</link><guid>http://ayende.com/blog/153793/multi-threading-insanity?key=bf22defd-c7a3-4044-a31a-e2ce153917ee</guid><pubDate>Mon, 30 Apr 2012 09:00:00 GMT</pubDate></item><item><title>The seven deadly sins for the developer (* some restrictions apply)</title><description>&lt;blockquote&gt;Originally posted at 3/30/2011&lt;/blockquote&gt;&lt;pre class="csharpcode"&gt;I have seen all of those in production code…&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; NullReferenceException();&lt;/pre&gt;
  &lt;/li&gt;
  &lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; AbstractController : Controller
&lt;span class="rem"&gt;// or &lt;/span&gt;
&lt;span class="rem"&gt;// public class AbstractPag : Page&lt;/span&gt;
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsAdmin { get;set; }
}&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; BlogMgr
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AddPostToBlog(Blog blog, Post post)
    {
            blog.Posts.Add(post);
            post.Blog = blog;
    }
}&lt;/pre&gt;
    &lt;/li&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;font size="2" face="Consolas"&gt;* I could only think of three, but I didn’t want to modify the title. &lt;/font&gt;&lt;font size="2" face="Consolas"&gt;Can you complete the list? &lt;/font&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/4810/the-seven-deadly-sins-for-the-developer-some-restrictions-apply?key=13fa365e-83da-4c2d-90c8-72440f673cb9</link><guid>http://ayende.com/blog/4810/the-seven-deadly-sins-for-the-developer-some-restrictions-apply?key=13fa365e-83da-4c2d-90c8-72440f673cb9</guid><pubDate>Wed, 13 Apr 2011 09:00:00 GMT</pubDate></item><item><title>Code review ranking methods</title><description>&lt;blockquote&gt;Originally posted at 3/8/2011&lt;/blockquote&gt;&lt;p&gt;I use a sort of a ranking sheet when I am doing code reviews. I recently run into one that was really horrible…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/Windows-Live-Writer/Code-review-ranking-methods_12A2E/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/Windows-Live-Writer/Code-review-ranking-methods_12A2E/image_thumb.png" width="910" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/4782/code-review-ranking-methods?key=abdf40a4-e539-4144-b784-18b05cc666a4</link><guid>http://ayende.com/blog/4782/code-review-ranking-methods?key=abdf40a4-e539-4144-b784-18b05cc666a4</guid><pubDate>Mon, 14 Mar 2011 10:00:00 GMT</pubDate></item><item><title>It really happened, legacy programmers tales</title><description>&lt;p&gt;Fairy tales always start with “Once upon a time”, and programmers tales starts with “when I was at a client”…&lt;/p&gt;  &lt;p&gt;Two days ago I was a client, and the discussion turned to bad code bases, as it often does. One story that I had hard time understanding was the Super If.&lt;/p&gt;  &lt;p&gt;Basically, it looked like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Itreallyhappenedlegacyprogrammerstales_AAE/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Itreallyhappenedlegacyprogrammerstales_AAE/image_thumb_2.png" width="328" height="99" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I had a hard time accepting that someone could write an if &lt;em&gt;condition &lt;/em&gt;that long. I kept assuming that they meant that the if &lt;em&gt;statements&lt;/em&gt; were 50 lines long, but that wasn’t the case.&lt;/p&gt;  &lt;p&gt;And then yesterday I had an even more horrifying story. A WCF service making a call to the database always timed out on the first request, but worked afterward. What would be your first suspicion? Mine was that it took time to establish the database connection, and that after the first call the connection resided in the connection pool. &lt;/p&gt;  &lt;p&gt;They laughed at my naivety, for it wasn’t connecting to the database that caused the timeout, it was JITting the method that the WCF service ended up calling.&lt;/p&gt;  &lt;p&gt;Yep, you got that right, JITting a single method (because the runtime only JIT a single method at a time). I had even harder time believing that, until they explained to me how that method was built: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Itreallyhappenedlegacyprogrammerstales_AAE/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Itreallyhappenedlegacyprogrammerstales_AAE/image_thumb.png" width="484" height="150" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p&gt;Some interesting stats:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It had a Cyclomatic Complexity of either 4,000 or 8,000, the client couldn’t remember.&lt;/li&gt;    &lt;li&gt;The &lt;em&gt;entire&lt;/em&gt; Rhino Mocks codebase fits in 13,000 LOC, so this single method could contain it several times over.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But you know what the &lt;em&gt;really&lt;/em&gt; scary part is?&lt;/p&gt;  &lt;p&gt;I upgraded from Super If to Black Hole Methods, and I am afraid to see what happen today, because if I get something that top the Black Hole Method, I may have to hand back my keyboard and go raise olives.&lt;/p&gt;</description><link>http://ayende.com/blog/4612/it-really-happened-legacy-programmers-tales?key=f3fb6629-317b-480d-ab05-8d0e1057afeb</link><guid>http://ayende.com/blog/4612/it-really-happened-legacy-programmers-tales?key=f3fb6629-317b-480d-ab05-8d0e1057afeb</guid><pubDate>Tue, 31 Aug 2010 09:00:00 GMT</pubDate></item><item><title>What Amazon considers Fantasy</title><description>&lt;p&gt;No, I haven’t checked the actual book, I just found it hilarious&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/WhatAmazonconsidersFantasy_1085F/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/WhatAmazonconsidersFantasy_1085F/image_thumb.png" width="455" height="581" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/4445/what-amazon-considers-fantasy?key=275d0720-68bc-4703-879b-6b37219685fc</link><guid>http://ayende.com/blog/4445/what-amazon-considers-fantasy?key=275d0720-68bc-4703-879b-6b37219685fc</guid><pubDate>Wed, 24 Mar 2010 10:00:00 GMT</pubDate></item><item><title>My Erlang Religious Moment</title><description>&lt;p&gt;It is not often that a piece of code cause me to have a religious moment, but this one managed to:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/MyErlangReligiousMoment_68F9/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/MyErlangReligiousMoment_68F9/image_thumb.png" width="615" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/4440/my-erlang-religious-moment?key=1a321d32-433c-4512-ac3d-04ccea1b20f1</link><guid>http://ayende.com/blog/4440/my-erlang-religious-moment?key=1a321d32-433c-4512-ac3d-04ccea1b20f1</guid><pubDate>Sat, 20 Mar 2010 10:00:00 GMT</pubDate></item><item><title>NHibernate – Get Thou Out Of My Database – 2nd Edition</title><description>&lt;p&gt;Following up on &lt;a href="http://ayende.com/Blog/archive/2009/06/06/nhibernate-ndash-get-thou-out-of-my-database.aspx"&gt;my previous post&lt;/a&gt;, the customer has complained about table names like [tbl_-1434067361], apparently they felt that this was misusing their naming policy. I told them that while I understood that, it &lt;em&gt;did&lt;/em&gt; meet their naming policy. I got a new naming policy that stated that numbers are not allowed in column or table name, (and showing forethought) that table names must be composed of valid English words.&lt;/p&gt;  &lt;p&gt;I, of course, decided that if this is what they wanted, they will get just that. And created this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/NHibernateGetThouOutOfMyDatabase2ndEditi_10BE2/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/NHibernateGetThouOutOfMyDatabase2ndEditi_10BE2/image_thumb_1.png" width="866" height="379" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The words.txt file was taken from this URL: &lt;a title="http://www.puzzlers.org/pub/wordlists/pocket.txt" href="http://www.puzzlers.org/pub/wordlists/pocket.txt"&gt;http://www.puzzlers.org/pub/wordlists/pocket.txt&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The result is exactly per their specification:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div&gt;     &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; [tbl_colonel] (
  [col_verbiage] &lt;span style="color: #0000ff"&gt;INT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;IDENTITY&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;,
   [col_unsparing] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_indomitable] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_bulldog] &lt;span style="color: #0000ff"&gt;BIT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_thank] DATETIME &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   &lt;span style="color: #0000ff"&gt;primary&lt;/span&gt; &lt;span style="color: #0000ff"&gt;key&lt;/span&gt; ([col_verbiage])
)
&lt;span style="color: #0000ff"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; [tbl_stump] (
  [col_upheaval] &lt;span style="color: #0000ff"&gt;INT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;IDENTITY&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;,
   [col_promissory] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_predecessor] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_chafer] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_unyoke] &lt;span style="color: #0000ff"&gt;INT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_vise] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   PostId &lt;span style="color: #0000ff"&gt;INT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   &lt;span style="color: #0000ff"&gt;primary&lt;/span&gt; &lt;span style="color: #0000ff"&gt;key&lt;/span&gt; ([col_upheaval])
)

&lt;span style="color: #0000ff"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; [tbl_reprieve] (
  [col_wherewith] &lt;span style="color: #0000ff"&gt;INT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;IDENTITY&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;,
   [col_wolf] VARBINARY(8000) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_legendary] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_ago] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_carabineer] DATETIME &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   [col_referee] NVARCHAR(255) &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;,
   &lt;span style="color: #0000ff"&gt;primary&lt;/span&gt; &lt;span style="color: #0000ff"&gt;key&lt;/span&gt; ([col_wherewith])
)&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;The fun part about this approach is that you &lt;em&gt;still&lt;/em&gt; get great level of security, while maintaining the naming convention. Even more than that, you get queries like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;div&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; col_verbiage, col_indomitable, col_bulldog, col_wolf, col_legendary, col_referee
&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; tbl_colonel &lt;span style="color: #0000ff"&gt;JOIN&lt;/span&gt; tbl_repreieve &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; tbl_repreieve.tbl_referee = tbl_colonel.col.unsparing
&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; col_ago = &lt;span style="color: #006080"&gt;&lt;a href="mailto:'Fun@house.at'"&gt;'Fun@house.at'&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is obvious that we are getting users &amp;amp; blogs with specific email, right?&lt;/p&gt;

&lt;p&gt;This is actually much harder than just numeric values, because this is going to &lt;em&gt;really&lt;/em&gt; mess with your mind.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Nitpicker corner: Yes, this is a humorous post, don’t take it seriously, and please don’t really do it to unsuspecting customers / DBAs. Unleash it on silly integration teams only.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://ayende.com/blog/4051/nhibernate-get-thou-out-of-my-database-2nd-edition?key=6cb0888f-74c8-46c8-87f6-b6db97e9b743</link><guid>http://ayende.com/blog/4051/nhibernate-get-thou-out-of-my-database-2nd-edition?key=6cb0888f-74c8-46c8-87f6-b6db97e9b743</guid><pubDate>Mon, 08 Jun 2009 16:03:00 GMT</pubDate></item><item><title>Does this include a trip to Mars as well?</title><description>&lt;p&gt;I'll be the first to admit that I am not the best at Geography, but somehow I don't think that this is likely.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ayende.com/Blog/images/ayende_com/Blog/200906020644.jpg" width="434" height="109" alt="200906020644.jpg" /&gt;&lt;/p&gt;
</description><link>http://ayende.com/blog/4044/does-this-include-a-trip-to-mars-as-well?key=155289d4-4b70-4d77-9fc7-505688161673</link><guid>http://ayende.com/blog/4044/does-this-include-a-trip-to-mars-as-well?key=155289d4-4b70-4d77-9fc7-505688161673</guid><pubDate>Tue, 02 Jun 2009 10:45:15 GMT</pubDate></item><item><title>Random Developer Quotes</title><description>&lt;p&gt;Those are just things that I happened to hear or say in the last week:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Q: Did you read the book Beautiful Architecture?&lt;/p&gt;    &lt;p&gt;A: No, I don’t read fantasy books.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Q: Why are you doing the dishes?&lt;/p&gt;    &lt;p&gt;A: I was a C++ programmer for a long time, I am used to cleaning up after myself.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://ayende.com/blog/4010/random-developer-quotes?key=1f33381d-a481-4e4f-b664-03c5618de836</link><guid>http://ayende.com/blog/4010/random-developer-quotes?key=1f33381d-a481-4e4f-b664-03c5618de836</guid><pubDate>Wed, 13 May 2009 10:20:00 GMT</pubDate></item><item><title>Post #4000</title><description>&lt;p&gt;Dear ALT.NET Community,&lt;/p&gt;  &lt;p&gt;You are likely familiar with that classic Warren Zevon song, Werewolves of London. I was reminded of this the last night being in London under a full moon and in the same hotel as one of the more famous Lycanthropic developers in the .NET community, Ayende Rahien, with whom you are also likely familiar as, well, you are reading his feed. Duh.&lt;/p&gt;  &lt;p&gt;Shocked? Read on...&lt;/p&gt;  &lt;p&gt;To call Ayende a werewolf is inacurate, of course. A lycanthrope, yes: Half-man, half-animal (i.e. manimal). But his primal half does not take the form of the lupine. Rather, Ayende is a were-Rhino. This should be obvious given the various logos and trade names he chooses. There you have it! His shape-shifting nature explains his Rhino fetish along with the genesis of the names of such projects RhinoMocks, RhinoCommons, Hibernating Rhinos, etc.&lt;/p&gt;  &lt;p&gt;Yes we're all familiar with the conventional wisdom detailed in the classic essay of the same name by Fred Brooks, "No Silver Bullets." In this corner case of our industry &lt;i&gt;there is a silver bullet, a couple (luckily, friends)!&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;There are a few things you can do to protect yourself from this marauding monster, Mr. Rahien. When in his manimilian state, if you ask him a question about NHibernate, you will stop the abomination in his tracks. If, being a proper member of the ALT.NET tribe, you cannot think of an NHibernate question (as you are undoubtedly an expert at this point) engage the brute in a discussion regarding the popular science fiction book series, "The Wheel of Time." That should do.&lt;/p&gt;  &lt;p&gt;IMPORTANT: a curious, oft-overlooked but quite dangerous feature of the wererhino is that the beastly transformation can be triggered when the subject views a piece of code built on the Entity Framework. Be very, very careful when working with EF code around Ayende.&lt;/p&gt;  &lt;p&gt;You have been warned.&lt;/p&gt;  &lt;p&gt;Yours truly,&lt;/p&gt;  &lt;p&gt;Dave Laribee&lt;/p&gt;</description><link>http://ayende.com/blog/4009/post-4000?key=a84fb74c-4461-4e08-8de6-b4e7ec55f52b</link><guid>http://ayende.com/blog/4009/post-4000?key=a84fb74c-4461-4e08-8de6-b4e7ec55f52b</guid><pubDate>Tue, 12 May 2009 23:28:58 GMT</pubDate></item><item><title>Why I released Windsor?</title><description>&lt;p&gt;Because getting &lt;a href="http://castle.uservoice.com/pages/16605-unofficial-castle-project-feedback-forum/suggestions/168104-kick-ayende-until-he-releases-windsor?direct_login_token=07e288937b357cb0b71f6dfe1efe580d&amp;amp;subdomain=castle&amp;amp;tracking_code=85a17ce065093ac02b037d648136a1b5"&gt;kicked&lt;/a&gt; that many times will &lt;em&gt;hurt&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://ayende.com/Blog/images/ayende_com/Blog/200905072355.jpg" width="480" height="88" alt="200905072355.jpg" /&gt;&lt;/p&gt;
</description><link>http://ayende.com/blog/3999/why-i-released-windsor?key=df3258f8-896b-43e1-baa5-50e69cba2cc7</link><guid>http://ayende.com/blog/3999/why-i-released-windsor?key=df3258f8-896b-43e1-baa5-50e69cba2cc7</guid><pubDate>Thu, 07 May 2009 21:56:23 GMT</pubDate></item><item><title>1st April Post – The multi purpose method</title><description>&lt;p&gt;Since it appears to be customary, I decided that I need to make a few posts for April 1st. Here is the second of them.&lt;/p&gt;  &lt;blockquote&gt;   &lt;div&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RemoveReversalsMoveCompletedMessagesAndFinishSubQueueMove(Guid transactionId)
{
    Api.JetSetCurrentIndex(session, txs, &lt;span style="color: #006080"&gt;"by_tx_id"&lt;/span&gt;);
    Api.MakeKey(session, txs, transactionId.ToByteArray(), MakeKeyGrbit.NewKey);

    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Api.TrySeek(session, txs, SeekGrbit.SeekEQ) == &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;)
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;
    Api.MakeKey(session, txs, transactionId.ToByteArray(), MakeKeyGrbit.NewKey);
    Api.JetSetIndexRange(session, txs, SetIndexRangeGrbit.RangeInclusive | SetIndexRangeGrbit.RangeUpperLimit);
    
    &lt;span style="color: #0000ff"&gt;do&lt;/span&gt;
    {
        &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; queue = Api.RetrieveColumnAsString(session, txs, txsColumns[&lt;span style="color: #006080"&gt;"queue"&lt;/span&gt;], Encoding.Unicode);
        &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; bookmarkData = Api.RetrieveColumn(session, txs, txsColumns[&lt;span style="color: #006080"&gt;"bookmark_data"&lt;/span&gt;]);
        &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; bookmarkSize = Api.RetrieveColumnAsInt32(session, txs, txsColumns[&lt;span style="color: #006080"&gt;"bookmark_size"&lt;/span&gt;]).Value;

        &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; actions = GetQueue(queue);

        &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; bookmark = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MessageBookmark
        {
            Bookmark = bookmarkData,
            QueueName = queue,
            Size = bookmarkSize
        };

        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (actions.GetMessageStatus(bookmark) == MessageStatus.Processing)
            actions.MoveToHistory(bookmark);
        &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;
            actions.SetMessageStatus(bookmark, MessageStatus.ReadyToDeliver);

        Api.JetDelete(session, txs);
    } &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; (Api.TryMoveNext(session, txs));
}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;And yes, it is from real code, and it is going to production soon.&lt;/p&gt;</description><link>http://ayende.com/blog/3930/1st-april-post-the-multi-purpose-method?key=f0e65681-6c92-41bc-899b-a70485ed14d8</link><guid>http://ayende.com/blog/3930/1st-april-post-the-multi-purpose-method?key=f0e65681-6c92-41bc-899b-a70485ed14d8</guid><pubDate>Wed, 01 Apr 2009 20:28:23 GMT</pubDate></item><item><title>1st April Post – Sending Data</title><description>&lt;p&gt;Since it appears to be customary, I decided that I need to make a few posts for April 1st. Here is the first of them.&lt;/p&gt;  &lt;blockquote&gt;   &lt;div&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; IEnumerator&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt; SendInternal(AsyncEnumerator ae)
{
    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
    {
        &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; client = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TcpClient())
        {
            &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
            {
                client.BeginConnect(Destination.Host, Destination.Port,
                                    ae.End(),
                                    &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);
            }
            &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
            {
                logger.WarnFormat(&lt;span style="color: #006080"&gt;"Failed to connect to {0} because {1}"&lt;/span&gt;, Destination, exception);
                Failure(exception);
                yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
            }

            yield &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 1;

            &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
            {
                client.EndConnect(ae.DequeueAsyncResult());
            }
            &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
            {
                logger.WarnFormat(&lt;span style="color: #006080"&gt;"Failed to connect to {0} because {1}"&lt;/span&gt;, Destination, exception);
                Failure(exception);
                yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
            }

            logger.DebugFormat(&lt;span style="color: #006080"&gt;"Successfully connected to {0}"&lt;/span&gt;, Destination);

            &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;var&lt;/span&gt; stream = client.GetStream())
            {
                &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; buffer = Messages.Serialize();

                &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; bufferLenInBytes = BitConverter.GetBytes(buffer.Length);

                logger.DebugFormat(&lt;span style="color: #006080"&gt;"Writing length of {0} bytes to {1}"&lt;/span&gt;, buffer.Length, Destination);

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    stream.BeginWrite(bufferLenInBytes, 0, bufferLenInBytes.Length, ae.End(), &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Could not write to {0} because {1}"&lt;/span&gt;, Destination,
                                      exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }
            
                yield &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 1;

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    stream.EndWrite(ae.DequeueAsyncResult());
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Could not write to {0} because {1}"&lt;/span&gt;, Destination,
                                      exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }

                logger.DebugFormat(&lt;span style="color: #006080"&gt;"Writing {0} bytes to {1}"&lt;/span&gt;, buffer.Length, Destination);

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    stream.BeginWrite(buffer, 0, buffer.Length, ae.End(), &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Could not write to {0} because {1}"&lt;/span&gt;, Destination,
                                    exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }
            
                yield &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 1;

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    stream.EndWrite(ae.DequeueAsyncResult());
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Could not write to {0} because {1}"&lt;/span&gt;, Destination,
                                      exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }

                logger.DebugFormat(&lt;span style="color: #006080"&gt;"Successfully wrote to {0}"&lt;/span&gt;, Destination);

                &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; recieveBuffer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[ProtocolConstants.RecievedBuffer.Length];
                &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; readConfirmationEnumerator = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AsyncEnumerator();

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    readConfirmationEnumerator.BeginExecute(
                        StreamUtil.ReadBytes(recieveBuffer, stream, readConfirmationEnumerator, &lt;span style="color: #006080"&gt;"recieve confirmation"&lt;/span&gt;), ae.End());
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Could not read confirmation from {0} because {1}"&lt;/span&gt;, Destination,
                                      exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }

                yield &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 1;

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    readConfirmationEnumerator.EndExecute(ae.DequeueAsyncResult());
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Could not read confirmation from {0} because {1}"&lt;/span&gt;, Destination,
                                      exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }

                &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; recieveRespone = Encoding.Unicode.GetString(recieveBuffer);
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (recieveRespone == ProtocolConstants.QueueDoesNotExists)
                {
                    logger.WarnFormat(
                        &lt;span style="color: #006080"&gt;"Response from reciever {0} is that queue does not exists"&lt;/span&gt;,
                        Destination);
                    Failure(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; QueueDoesNotExistsException());
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }
                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(recieveRespone!=ProtocolConstants.Recieved)
                {
                    logger.WarnFormat(
                        &lt;span style="color: #006080"&gt;"Response from reciever {0} is not the expected one, unexpected response was: {1}"&lt;/span&gt;,
                        Destination, recieveRespone);
                    Failure(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    stream.BeginWrite(ProtocolConstants.AcknowledgedBuffer, 0,
                                      ProtocolConstants.AcknowledgedBuffer.Length, ae.End(), &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Failed to write acknowledgement to reciever {0} because {1}"&lt;/span&gt;,
                                      Destination, exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }

                yield &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 1;

                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    stream.EndWrite(ae.DequeueAsyncResult());
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception exception)
                {
                    logger.WarnFormat(&lt;span style="color: #006080"&gt;"Failed to write acknowledgement to reciever {0} because {1}"&lt;/span&gt;,
                                      Destination, exception);
                    Failure(exception);
                    yield &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;
                }
                Success();

                buffer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[ProtocolConstants.RevertBuffer.Length];
                &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; readRevertMessage = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AsyncEnumerator(ae.ToString());
                readRevertMessage.BeginExecute(
                    StreamUtil.ReadBytes(buffer, stream, readRevertMessage, &lt;span style="color: #006080"&gt;"revert"&lt;/span&gt;), ae.End());
                yield &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 1;
                &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                {
                    readRevertMessage.EndExecute(ae.DequeueAsyncResult());
                    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; revert = Encoding.Unicode.GetString(buffer);
                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (revert == ProtocolConstants.Revert)
                    {
                        Failure(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);
                    }
                }
                &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception)
                {
                    &lt;span style="color: #008000"&gt;// expected, there is nothing to do here, the&lt;/span&gt;
                    &lt;span style="color: #008000"&gt;// reciever didn't report anything for us&lt;/span&gt;
                }

            }
        }
    }
    &lt;span style="color: #0000ff"&gt;finally&lt;/span&gt;
    {
        &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; completed = SendCompleted;
        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (completed != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)
            completed();
    }
}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;And yes, it is from real code, and it is going to production soon.&lt;/p&gt;</description><link>http://ayende.com/blog/3929/1st-april-post-sending-data?key=8f234c99-7a19-4b40-b669-7c1c47721fb0</link><guid>http://ayende.com/blog/3929/1st-april-post-sending-data?key=8f234c99-7a19-4b40-b669-7c1c47721fb0</guid><pubDate>Wed, 01 Apr 2009 20:25:58 GMT</pubDate></item><item><title>Raising the level of abstraction</title><description>&lt;p&gt;Right now I am working with a co-worker, and I realized that I am:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Using Mac OS&lt;/li&gt;    &lt;li&gt;Running Windows in VMWare Fusion &lt;/li&gt;    &lt;li&gt;To connect via SharedView to a remote machine&lt;/li&gt;    &lt;li&gt;To connect via remote desktop to another machine&lt;/li&gt;    &lt;li&gt;Which is also a virtual instance&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And I wonder about the latency…&lt;/p&gt;</description><link>http://ayende.com/blog/3866/raising-the-level-of-abstraction?key=2bf324f1-0099-4202-afbf-dc58bdd2d143</link><guid>http://ayende.com/blog/3866/raising-the-level-of-abstraction?key=2bf324f1-0099-4202-afbf-dc58bdd2d143</guid><pubDate>Wed, 11 Feb 2009 17:54:59 GMT</pubDate></item><item><title>Laughing in code</title><description>&lt;p&gt;I am not sure that this will make any sort of sense world wide, but Israeli coders should have a chuckle or two over this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Laughingincode_D37F/image_2.png"&gt;&lt;img height="170" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Laughingincode_D37F/image_thumb.png" width="460" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/3863/laughing-in-code?key=facebdb2-2791-4cba-9fb2-dec1a8dd3737</link><guid>http://ayende.com/blog/3863/laughing-in-code?key=facebdb2-2791-4cba-9fb2-dec1a8dd3737</guid><pubDate>Tue, 10 Feb 2009 13:02:41 GMT</pubDate></item><item><title>There is no database</title><description>&lt;p&gt;I just noticed that for the last few months I have been consistently denying the existence of a database. I use the term persistent storage when asked, and when asked I usually say: “There is no database”.&lt;/p&gt;  &lt;p&gt;It has gotten to the point that this is how I draw the DB on most whiteboard sessions:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Thereisnodatabase_CDF3/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="242" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Thereisnodatabase_CDF3/image_thumb.png" width="225" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/3808/there-is-no-database?key=76ef7cc3-49fe-437a-a2f3-b75b751bc395</link><guid>http://ayende.com/blog/3808/there-is-no-database?key=76ef7cc3-49fe-437a-a2f3-b75b751bc395</guid><pubDate>Wed, 14 Jan 2009 22:38:46 GMT</pubDate></item><item><title>More funny code</title><description>&lt;p&gt;I like going through the Mass Transit code base. Here is one reason:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Morefunnycode_13CFF/image_2.png"&gt;&lt;img height="84" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Morefunnycode_13CFF/image_thumb.png" width="688" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/3750/more-funny-code?key=6d587351-a79a-4dc6-b5b9-a49b2a7a06b5</link><guid>http://ayende.com/blog/3750/more-funny-code?key=6d587351-a79a-4dc6-b5b9-a49b2a7a06b5</guid><pubDate>Sat, 13 Dec 2008 20:32:55 GMT</pubDate></item><item><title>Who wrote this code?!</title><description>&lt;ol&gt;
  &lt;li&gt;A drunken monkey, using his left feet&lt;/li&gt;

  &lt;li&gt;Honest, it was the cat&lt;/li&gt;

  &lt;li&gt;Offshore team of developer using the latest chisel technology&lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;It was lovingly crafted by a monk in a mountain on the Himalaya and submitted on six hundred A4 pages, the &lt;em&gt;calligraphy&lt;/em&gt; was impressive&lt;/li&gt;

  &lt;li&gt;Me&lt;/li&gt;
&lt;/ol&gt;
</description><link>http://ayende.com/blog/3702/who-wrote-this-code?key=45154f89-e144-4646-b629-ee5bae1bc796</link><guid>http://ayende.com/blog/3702/who-wrote-this-code?key=45154f89-e144-4646-b629-ee5bae1bc796</guid><pubDate>Sat, 15 Nov 2008 05:45:57 GMT</pubDate></item><item><title>Code that makes me laugh</title><description>&lt;p&gt;&lt;a href="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Codethatmakesmelaugh_149E9/image_2.png"&gt;&lt;img height="189" alt="image" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/Codethatmakesmelaugh_149E9/image_thumb.png" width="860" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://ayende.com/blog/3689/code-that-makes-me-laugh?key=8eaef3e1-0bc2-4372-87b0-ef66ee7b5c37</link><guid>http://ayende.com/blog/3689/code-that-makes-me-laugh?key=8eaef3e1-0bc2-4372-87b0-ef66ee7b5c37</guid><pubDate>Tue, 11 Nov 2008 21:27:45 GMT</pubDate></item></channel></rss>
