<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Presentations</title>
        <link>http://ayende.com/Blog/category/495.aspx</link>
        <description>Presentations</description>
        <language>en-US</language>
        <copyright>Ayende Rahien</copyright>
        <managingEditor>Ayende@ayende.com</managingEditor>
        <generator>Subtext Version 2.0.0.43</generator>
        <item>
            <title>What I am working on...</title>
            <link>http://ayende.com/Blog/archive/2008/08/27/What-I-am-working-on.aspx</link>
            <description>&lt;p&gt;I am just going to post that, and watch what happens. I will note that this is code that I just wrote, from scratch.&lt;/p&gt;  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; TaxCalculator
{
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; conStr;
    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; DataSet rates;

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; TaxCalculator(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; conStr)
    {
        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.conStr = conStr;
        &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (SqlConnection con = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlConnection(conStr))
        {
            con.Open();
            &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (SqlCommand cmd = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCommand("&lt;span style="color: #8b0000"&gt;SELECT * FROM tblTxRtes&lt;/span&gt;", con))
            {
                rates = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet();
                &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlDataAdapter(cmd).Fill(rates);
                Log.Write("&lt;span style="color: #8b0000"&gt;Read &lt;/span&gt;" + rates.Tables[0].Rows.Count + "&lt;span style="color: #8b0000"&gt; rates from database&lt;/span&gt;");
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (rates.Tables[0].Rows.Count == 0)
                {
                    MailMessage msg = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MailMessage("&lt;span style="color: #8b0000"&gt;important@legacy.org&lt;/span&gt;", "&lt;span style="color: #8b0000"&gt;joe@legacy.com&lt;/span&gt;");
                    msg.Subject = "&lt;span style="color: #8b0000"&gt;NO RATES IN DATABASE!!!!!&lt;/span&gt;";
                    msg.Priority = MailPriority.High;
                    &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SmtpClient("&lt;span style="color: #8b0000"&gt;mail.legacy.com&lt;/span&gt;", 9089).Send(msg);
                    Log.Write("&lt;span style="color: #8b0000"&gt;No rates for taxes found in &lt;/span&gt;" + conStr);
                    &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ApplicationException("&lt;span style="color: #8b0000"&gt;No rates, Joe forgot to load the rates AGAIN!&lt;/span&gt;");
                }
            }
        }
    }

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Process(XmlDocument transaction)
    {
        &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
        {
            Hashtable tx2tot = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Hashtable();
            &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (XmlNode o &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; transaction.FirstChild.ChildNodes)
            {
            restart:
                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (o.Attributes["&lt;span style="color: #8b0000"&gt;type&lt;/span&gt;"].Value == "&lt;span style="color: #8b0000"&gt;2&lt;/span&gt;")
                {
                    Log.Write("&lt;span style="color: #8b0000"&gt;Type two transaction processing&lt;/span&gt;");
                    &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; total = &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt;.Parse(o.Attributes["&lt;span style="color: #8b0000"&gt;tot&lt;/span&gt;"].Value);
                    XmlAttribute attribute = transaction.CreateAttribute("&lt;span style="color: #8b0000"&gt;tax&lt;/span&gt;");
                    &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; r = -1;
                    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DataRow dataRow &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; rates.Tables[0].Rows)
                    {
                        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;)dataRow[2] == o.SelectSingleNode("&lt;span style="color: #8b0000"&gt;//cust-details/state&lt;/span&gt;").Value)
                        {
                            r = &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt;.Parse(dataRow[2].ToString());
                        }
                    }
                    Log.Write("&lt;span style="color: #8b0000"&gt;Rate calculated and is: &lt;/span&gt;" + r);
                    o.Attributes.Append(attribute);
                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (r == -1)
                    {
                        MailMessage msg = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MailMessage("&lt;span style="color: #8b0000"&gt;important@legacy.org&lt;/span&gt;", "&lt;span style="color: #8b0000"&gt;joe@legacy.com&lt;/span&gt;");
                        msg.Subject = "&lt;span style="color: #8b0000"&gt;NO RATES FOR &lt;/span&gt;" + o.SelectSingleNode("&lt;span style="color: #8b0000"&gt;//cust-details/state&lt;/span&gt;").Value + "&lt;span style="color: #8b0000"&gt; TRANSACTION !!!!ABORTED!!!!&lt;/span&gt;";
                        msg.Priority = MailPriority.High;
                        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SmtpClient("&lt;span style="color: #8b0000"&gt;mail.legacy.com&lt;/span&gt;", 9089).Send(msg);
                        Log.Write("&lt;span style="color: #8b0000"&gt;No rate for transaction in tranasction state&lt;/span&gt;");
                        &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ApplicationException("&lt;span style="color: #8b0000"&gt;No rates, Joe forgot to load the rates AGAIN!&lt;/span&gt;");
                    }
                    tx2tot.Add(o.Attributes["&lt;span style="color: #8b0000"&gt;id&lt;/span&gt;"], total * r);
                    attribute.Value = (total * r).ToString();
                }
                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (o.Attributes["&lt;span style="color: #8b0000"&gt;type&lt;/span&gt;"].Value == "&lt;span style="color: #8b0000"&gt;1&lt;/span&gt;")
                {
                    &lt;span style="color: #008000"&gt;//2006-05-02 just need to do the calc&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; total = 0;
                    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (XmlNode i &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; o.ChildNodes)
                    {
                        total += ProductPriceByNode(i);
                    }
                    &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;
                    {
                        &lt;span style="color: #008000"&gt;// 2007-02-19 not so simple, TX has different rule&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (o.SelectSingleNode("&lt;span style="color: #8b0000"&gt;//cust-details/state&lt;/span&gt;").Value == "&lt;span style="color: #8b0000"&gt;TX&lt;/span&gt;")
                        {
                            total *= (&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt;)1.02;
                        }
                    }
                    &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (NullReferenceException)
                    {
                        XmlElement element = transaction.CreateElement("&lt;span style="color: #8b0000"&gt;state&lt;/span&gt;");
                        element.Value = "&lt;span style="color: #8b0000"&gt;NJ&lt;/span&gt;";
                        o.SelectSingleNode("&lt;span style="color: #8b0000"&gt;//cust-details&lt;/span&gt;").AppendChild(element);
                    }
                    XmlAttribute attribute = transaction.CreateAttribute("&lt;span style="color: #8b0000"&gt;tax&lt;/span&gt;");
                    &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; r = -1;
                    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DataRow dataRow &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; rates.Tables[0].Rows)
                    {
                        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;)dataRow[2] == o.SelectSingleNode("&lt;span style="color: #8b0000"&gt;//cust-details/state&lt;/span&gt;").Value)
                        {
                            r = &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt;.Parse(dataRow[2].ToString());
                        }
                    }
                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (r == -1)
                    {
                        MailMessage msg = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MailMessage("&lt;span style="color: #8b0000"&gt;important@legacy.org&lt;/span&gt;", "&lt;span style="color: #8b0000"&gt;joe@legacy.com&lt;/span&gt;");
                        msg.Subject = "&lt;span style="color: #8b0000"&gt;NO RATES FOR &lt;/span&gt;" + o.SelectSingleNode("&lt;span style="color: #8b0000"&gt;//cust-details/state&lt;/span&gt;").Value + "&lt;span style="color: #8b0000"&gt; TRANSACTION !!!!ABORTED!!!!&lt;/span&gt;";
                        msg.Priority = MailPriority.High;
                        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SmtpClient("&lt;span style="color: #8b0000"&gt;mail.legacy.com&lt;/span&gt;", 9089).Send(msg);
                        &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ApplicationException("&lt;span style="color: #8b0000"&gt;No rates, Joe forgot to load the rates AGAIN!&lt;/span&gt;");
                    }
                    attribute.Value = (total * r).ToString();
                    tx2tot.Add(o.Attributes["&lt;span style="color: #8b0000"&gt;id&lt;/span&gt;"], total * r);
                    o.Attributes.Append(attribute);
                }
                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (o.Attributes["&lt;span style="color: #8b0000"&gt;type&lt;/span&gt;"].Value == "&lt;span style="color: #8b0000"&gt;@&lt;/span&gt;")
                {
                    o.Attributes["&lt;span style="color: #8b0000"&gt;type&lt;/span&gt;"].Value = "&lt;span style="color: #8b0000"&gt;2&lt;/span&gt;";
                    &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; restart;
                    &lt;span style="color: #008000"&gt;// 2007-04-30 some bastard from northwind made a mistake and they have 3 months release cycle, so we have to&lt;/span&gt;
                    &lt;span style="color: #008000"&gt;// fix this because they won't until sep-07&lt;/span&gt;
                }
                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;
                {
                    &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Exception("&lt;span style="color: #8b0000"&gt;UNKNOWN TX TYPE&lt;/span&gt;");
                }
            }
            SqlConnection con2 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlConnection(conStr);
            SqlCommand cmd2 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCommand();
            cmd2.Connection = con2;
            con2.Open();
            &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DictionaryEntry d &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; tx2tot)
            {
                cmd2.CommandText = "&lt;span style="color: #8b0000"&gt;usp_TrackTxNew&lt;/span&gt;";
                cmd2.Parameters.Add("&lt;span style="color: #8b0000"&gt;cid&lt;/span&gt;", transaction.SelectSingleNode("&lt;span style="color: #8b0000"&gt;//cust-details/@id&lt;/span&gt;").Value);
                cmd2.Parameters.Add("&lt;span style="color: #8b0000"&gt;tx&lt;/span&gt;", d.Key);
                cmd2.Parameters.Add("&lt;span style="color: #8b0000"&gt;tot&lt;/span&gt;", d.Value);
                cmd2.ExecuteNonQuery();
            }
            con2.Close();
        }
        &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception e)
        {
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (e.Message == "&lt;span style="color: #8b0000"&gt;UNKNOWN TX TYPE&lt;/span&gt;")
            {
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;
            }
            &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; e;
        }
        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;
    }

    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; ProductPriceByNode(XmlNode item)
    {
        &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (SqlConnection con = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlConnection(conStr))
        {
            con.Open();
            &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (SqlCommand cmd = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCommand("&lt;span style="color: #8b0000"&gt;SELECT * FROM tblProducts WHERE pid=&lt;/span&gt;" + item.Attributes["&lt;span style="color: #8b0000"&gt;id&lt;/span&gt;"], con))
            {
                DataSet &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet();
                &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlDataAdapter(cmd).Fill(&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;);
                &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt;)&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;.Tables[0].Rows[0][4];

            }
        }
    }
}&lt;/pre&gt;&lt;img src="http://ayende.com/Blog/aggbug/10472.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ayende Rahien</dc:creator>
            <guid>http://ayende.com/Blog/archive/2008/08/27/What-I-am-working-on.aspx</guid>
            <pubDate>Wed, 27 Aug 2008 19:39:25 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2008/08/27/What-I-am-working-on.aspx#feedback</comments>
            <slash:comments>59</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/10472.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Storming Castle Windsor &amp;amp; NHibernate - Code &amp;amp; Presentation</title>
            <link>http://ayende.com/Blog/archive/2007/07/04/Storming-Castle-Windsor-amp-NHibernate--Code-amp-Presentation.aspx</link>
            <description>&lt;p&gt;Those can be found &lt;a href="http://www.ayende.com/presentations.aspx"&gt;here&lt;/a&gt;, didn't manage to get a recording, though.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; Now the presentation is in PDF format.&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/9524.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ayende Rahien</dc:creator>
            <guid>http://ayende.com/Blog/archive/2007/07/04/Storming-Castle-Windsor-amp-NHibernate--Code-amp-Presentation.aspx</guid>
            <pubDate>Wed, 04 Jul 2007 05:36:46 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/07/04/Storming-Castle-Windsor-amp-NHibernate--Code-amp-Presentation.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/9524.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Presentation/Code from Microsoft Academy</title>
            <link>http://ayende.com/Blog/archive/2007/02/02/PresentationCodeFromMicrosoftAcademy.aspx</link>
            <description>&lt;p&gt;    &lt;a href="http://www.ayende.com/presentations.aspx"&gt;Here&lt;/a&gt; you can find both code and presentation from my recent talk, it is in Office 2007 format, because if I try to convert it to 2003 it gets to 25Mb.&lt;/p&gt;&lt;p&gt;    Have fun,&lt;/p&gt;&lt;p&gt;     &lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/6898.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2007/02/02/PresentationCodeFromMicrosoftAcademy.aspx</guid>
            <pubDate>Fri, 02 Feb 2007 12:40:13 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/02/02/PresentationCodeFromMicrosoftAcademy.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/6898.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Talking in DevTeach</title>
            <link>http://ayende.com/Blog/archive/2007/01/26/TalkingInDevTeach.aspx</link>
            <description>&lt;p&gt;    I am going to give several talks in &lt;a href="http://www.devteach.com/Session.aspx#50"&gt;DevTeach&lt;/a&gt; on May. The topics are: &lt;/p&gt;&lt;ul&gt;    &lt;li&gt;        Interaction based testing With Rhino Mocks     &lt;/li&gt;    &lt;li&gt;        Rapid (maintainable) web development with MonoRail     &lt;/li&gt;    &lt;li&gt;        Advanced usages of Inversion of Control containers     &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;    I am &lt;em&gt;very &lt;/em&gt;excited about it. &lt;/p&gt;&lt;p&gt;    The part that I really like is the "Advanced usages..." part of the last name. It means that I can assumes that you know what IoC is and I can blow their minds with the interesting stuff (Binsor, Auto Transaction, Bijection, AoP, Generic Specializing Decorators, Scoped Containers, etc). I am now working on a lecture about IoC for developers that doesn't neccesarily knows what it is, and I am frustrated that I can't get to the &lt;em&gt;really&lt;/em&gt; cool stuff.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/6924.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2007/01/26/TalkingInDevTeach.aspx</guid>
            <pubDate>Thu, 25 Jan 2007 23:33:29 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/01/26/TalkingInDevTeach.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/6924.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Cruel And Unusual Punishment (or, how I Practice)</title>
            <link>http://ayende.com/Blog/archive/2007/01/26/CruelAndUnusualPunishmentOrHowIPractice.aspx</link>
            <description>&lt;p&gt;    I was working on the talk I am going to give in the Microsoft Academy next week, and I really needed to practice saying everything. I quickly gathered some family memebers and subjected them to a high level lecture of IoC. Interesting what you can learn from the amount of glazing in their eyes. :-)&lt;/p&gt;&lt;p&gt;    I did the same to some co-workers today, and got even more good feedback (the best piece of advice was from our QA guy, which is certainly not the target audiance). I am starting to get a good feeling about this lecture, even though it is going to be very different from the one I did about Active Record.&lt;/p&gt;&lt;p&gt;    That one was basically all code, with a presentation there just to keep me from shooting off in some obscure directions and getting all excited that [HasManyAndBelongToMany] can now do a better job inferring what I mean. This is a more of an overview of the pattern and what advantages it can give me (I have to assume that a significant part of the audiance will be facing this concepts for the first time).&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/6925.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2007/01/26/CruelAndUnusualPunishmentOrHowIPractice.aspx</guid>
            <pubDate>Thu, 25 Jan 2007 23:27:09 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/01/26/CruelAndUnusualPunishmentOrHowIPractice.aspx#feedback</comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/6925.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Bum</title>
            <link>http://ayende.com/Blog/archive/2007/01/24/Bum.aspx</link>
            <description>&lt;p&gt;    That is what Microsoft thinks that I am ;-) Take a look at this &lt;a href="http://blogs.microsoft.co.il/blogs/yosit/archive/2007/01/23/Developer-Academy-07-Music-Video.aspx"&gt;horrifying video&lt;/a&gt;, detailing how I was reduced to begging in order to get to the event. At least I end up arriving in style :-)&lt;/p&gt;&lt;p&gt;    At least I wasn't &lt;a href="http://blogs.microsoft.co.il/blogs/yosit/archive/2007/01/16/Developer-Academy-07-Mafia-Movie.aspx"&gt;turtored&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/yosit/archive/2007/01/15/Developer-Academy-07-Action-Movie.aspx"&gt;thrown off a plane&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/yosit/archive/2007/01/24/Developer-Academy-07-SciFi-Movie.aspx"&gt;sent to space&lt;/a&gt; or &lt;a href="http://blogs.microsoft.co.il/blogs/yosit/archive/2007/01/21/Developer-Academy-07-Telenovela-Movie.aspx"&gt;Telenovelled&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;    Seriously, that is nearly 5 hours of my life, compressed into 40 seconds. For those of you who aren't Hebrew speaking, those are teaser videos for the Microsoft Academy Event at the end of the month.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/6930.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2007/01/24/Bum.aspx</guid>
            <pubDate>Wed, 24 Jan 2007 17:45:11 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/01/24/Bum.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/6930.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Talking on Microsoft Developer Academy</title>
            <link>http://ayende.com/Blog/archive/2007/01/05/TalkingOnMicrosoftDeveloperAcademy.aspx</link>
            <description>&lt;p&gt;    &lt;img src="http://www.microsoft.com/israel/msdn/images/academy/Banner.JPG" /&gt;&lt;/p&gt;&lt;p&gt;    I'll be giving a talk in Microsoft Developers Academy on the 31 January, 2007.&lt;/p&gt;&lt;p&gt;    I am going to give a 400 level talk about Inversion of Control. The main goal is to move from introducing the topic to people who never heard about it to talk about high level stuff such as decorator chains, generics inference and configuration DSL in one hour. &lt;/p&gt;&lt;p&gt;    I am on Track B,  10:00 - 11:00, COM414, the talk is called "Inversion of Control - Breaking Up The Dependencies".&lt;/p&gt;&lt;p&gt;     You can check the schedule &lt;a href="http://www.microsoft.com/israel/msdn/images/academy/Matrixb.jpg"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/6958.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2007/01/05/TalkingOnMicrosoftDeveloperAcademy.aspx</guid>
            <pubDate>Fri, 05 Jan 2007 05:52:40 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2007/01/05/TalkingOnMicrosoftDeveloperAcademy.aspx#feedback</comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/6958.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lectures Abstracts</title>
            <link>http://ayende.com/Blog/archive/2006/12/27/LecturesAbstracts.aspx</link>
            <description>&lt;p&gt;    Note: I just spend quite a bit time writing this, I am putting it on my blog so I will remember it exsts.&lt;/p&gt;&lt;p&gt;    &lt;span style="TEXT-DECORATION: underline"&gt;Who am I?&lt;br /&gt;    &lt;span style="TEXT-DECORATION: underline"&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;/span&gt; &lt;div style="PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 0px 30px; BORDER-LEFT: gray thick solid; PADDING-TOP: 4px; BACKGROUND-COLOR: #eeeeee"&gt;Oren Eini is a senior developer in We!, a consulting group based in Israel, focusing on architecture, data access and best practices. Most often, he is working on building complex business systems using .Net 2.0, NHibernate and Castle's Frameworks. Oren is an active member in several Open Source projects, including (but not limited :-) ) NHibernate, Castle and Rhino Mocks. He has a blog at http://www.ayende.com/Blog/ where he publish his thought every once in a while. &lt;/div&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;Level 4/300: &lt;/span&gt;Object Relational Mapping += 2: More then just data &amp;lt;-&amp;gt; object&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Object relational mapping are becoming only more popular, as people developing complex systems find that they need more than the tabular model to work with in their applications. A sophisticated ORM can do a lot more than merely get the data out of the database in object form, it can be a valuable assest in simplifying development and making things possible. In this session, you will see how you can utilize an ORM in untraditional ways to get an additional, better, approach to solving complex issues.&lt;br /&gt;Some of those ways include business rules, localization, state transitions, inversion of control, etc. All done via the ORM layer, and all can be used to drasticly simplify the complexity of the given scenarios.&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;Level 100: Using Active Record to write less code&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;What would you say if I told you that you can stop writing data access code in .Net? Aren't you tired of writing the same thing over and over again, opening connection, querying the database, figuring out what to return, getting back untype data that you need to start putting on the form? Do you &lt;span style="FONT-STYLE: italic"&gt;really&lt;/span&gt; see some value in writing yet another UPDATE statement?&lt;br /&gt;The Active Record framework allows you to fully utilize the power of the database, but without the back breaking work that it used to take. Active Record uses .Net objects to relieve &lt;span style="FONT-STYLE: italic"&gt;you&lt;/span&gt; from the repeating task of persistance. Those objects are schema aware and can persist and load themselves without you needing to write a single line of SQL. Building business application using Active Record is a pleasure, the database stuff just happens, and you are free to implement the business functionality. &lt;br /&gt;&lt;br /&gt;Presentation for this can be found here: &lt;a href="http://www.ayende.com/91/section.aspx/download/160"&gt;http://www.ayende.com/91/section.aspx/download/160&lt;/a&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;/span&gt;Level 200: Rapid (maintainable) web development with MonoRail&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span class="Normal" id="_ctl1_lstEvents__ctl1_lblDescription"&gt;If you're a fan of Ruby on Rails and want to see similar capabilities in .NET, or you're an ASP.NET developer looking for an easier way to do things, MonoRail will be irresistible once you find out what it can do for you. &lt;/span&gt;&lt;span class="Normal" id="_ctl1_lstEvents__ctl1_lblDescription"&gt;Strong support for Ajax makes writing buzzward compliant web applications a breeze. &lt;/span&gt;&lt;span class="Normal" id="_ctl1_lstEvents__ctl1_lblDescription"&gt;Utilization of the Model-View-Controller architecture and convention over configuration makes web development with MonoRail a pleasure. Free yourself from page-life cycle issues and viewstate worries, start working with MonoRail, where the framework works for you.&lt;br /&gt;This talk will introduce the general concepts of the framework, and how you can use them &lt;br /&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;Level 100: Interaction based testing With Rhino Mocks&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Beyond the simplest scenarios, all objects had collaborators that they work with. This flies in the face of testing objects in isolation. This is the problem that mock objects were created to solve. In this talk you will learn what mock objects are, how to utilize them and &lt;span style="FONT-STYLE: italic"&gt;best practices&lt;/span&gt; on when / how to utilize them. Rhino Mocks is a mock objects framework for .Net whose core goals are to let the developer rely on the compiler work well with refactoring tools.&lt;br /&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;Level 200: Inversion of Control and Dependency Injection: Breaking out from the dependecy hell&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Responding to change is the holy grail of software development. Inversion of Control (IoC) and Dependency Injection (DI) are two related patterns that allows to make significant changes to an application without having to touch every part of the application. IoC and DI encourage breaking the application into discerete, highly cohesive parts, so a change, when it eventually comes, is very local. A nice benefit is that applications that uses IoC are also very testable applications.&lt;br /&gt;This talk will introduce the concepts of IoC and how to use them in your application.&lt;br /&gt;&lt;br /&gt;Presentation can be found here: &lt;a href="http://www.ayende.com/91/section.aspx/download/145"&gt;http://www.ayende.com/91/section.aspx/download/145&lt;/a&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;Level 4/300: Advnace usages of Inversion of Control containers&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;You already understand the concepts of Inversion of Control and Dependency Injection, now is the time to see how far we can make the IoC container works for us. This talk will focus on using an IoC container in complex scenarios. We will talk about generic decorator chains and generic specialization, contextful containers and IoC DSLs. These powerful concepts can greatly enhance your ability to respond to change in your application.&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;Level 300: Writing Domain Specific Languages in Boo&lt;br /&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Domain Specific Langauge is not just the DSL SDK from Microsoft. A DSL can make working with the domain much easier, since you are capable of leveraging the domain concepts directly. The other alternative to a DSL is an XML file, and we all know how well declarative model can work when you need imperative concepts, just consider NAnt for a minute and you will see the issue. Usually, writing a DSL in .Net would be a complex issue, requiring writing a parser, interpreter, etc. Boo already handles all of that, and its open architecture means that it is very easy to extend it to express the concepts of the domain. This talk will show you how to build DSLs in Boo and how to utilize this power in your applications.&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;span style="TEXT-DECORATION: underline"&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://ayende.com/Blog/aggbug/6999.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/12/27/LecturesAbstracts.aspx</guid>
            <pubDate>Wed, 27 Dec 2006 04:55:21 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/12/27/LecturesAbstracts.aspx#feedback</comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/6999.aspx</wfw:commentRss>
        </item>
        <item>
            <title>I love Office 2007</title>
            <link>http://ayende.com/Blog/archive/2006/12/15/ILoveOffice2007.aspx</link>
            <description>&lt;p&gt;    I am in the middle of &lt;em&gt;looong&lt;/em&gt; install of VS SP1, so I can't code... When I can't code, I tend to write. Since I just has a series of post criticizing Microsoft (with another one that I'm busy writing now), I wanted to stop and thank the Office 2007 team.&lt;/p&gt;&lt;p&gt;    Office 2007 is a wonderful application suite, I am currently writing an IoC presentation in PowerPoint, and I am &lt;em&gt;loving &lt;/em&gt;what I can do with it. Just take a look at my current slide:&lt;/p&gt;&lt;p&gt;    &lt;img alt="(Image from clipboard).png" src="http://www.ayende.com/Blog/Images/tmp5C8.png" /&gt;&lt;/p&gt;&lt;p&gt;    I am extremely annoyed with the two-four "standard" presentation themes (all of which are mostly blue), and I really like that I can create visually pleasing results in such ease. The same goes for Word 2007, I wrote my MSDN article with it, and it produced a very good looking document with very little effort.&lt;/p&gt;&lt;p&gt;    Office 2007 makes my life easier, and to the Office team, you did a hell of a good work.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/7015.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/12/15/ILoveOffice2007.aspx</guid>
            <pubDate>Fri, 15 Dec 2006 15:04:01 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/12/15/ILoveOffice2007.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7015.aspx</wfw:commentRss>
        </item>
        <item>
            <title>NHibernate Web Cast Series: Thinking about the infrastructure</title>
            <link>http://ayende.com/Blog/archive/2006/12/10/NHibernateWebCastSeriesThinkingAboutTheInfrastructure.aspx</link>
            <description>&lt;p&gt;    Here is a status report about the &lt;a href="http://www.ayende.com/Blog/AboutThatNHibernateCourse.aspx"&gt;NHibernate&lt;/a&gt; &lt;a href="http://www.ayende.com/Blog/2006/11/08/ThinkingOutLoadAnyInterestInAnNHibernateCourse.aspx"&gt;Course&lt;/a&gt; that I talked about previously. I have talked with &lt;a href="http://blogs.microsoft.co.il/blogs/JustinAngel/"&gt;Justin&lt;/a&gt;, and at the moment is looks like we are going to do a web cast series about NHibernate. The draft syllabus can be found &lt;a href="http://wiki.ayende.com/wiki/index.php?title=NHibernate_Course"&gt;here&lt;/a&gt;, although this is merely a list of topics that we would like to cover.&lt;/p&gt;&lt;p&gt;    We are thinking of roughly 30 hours(!) or so of web casts, which should be enough to cover NHibernate from end to end, and maybe leave me out of a job :-). A you can imagine, trying to do something like this is a fairly lengthy, and involve quite an invensement in both time and effort. In other words, we would like to get paid for this effort.&lt;/p&gt;&lt;p&gt;    Now, beyond producing the web casts, I don't really want to deal with the hassle of creating a a site to sell the web casts. This is more of a headache avoidance issue than anything else. We checked in a couple of places, and it doesn't look like anyone we know is willing to handle the hosting/billing/headache issues. What I would like to know is whatever you can recommend (to me, or me to them) a way to handle this.&lt;/p&gt;&lt;p&gt;    If all else fails, we would handle this ourselves, but I would much rather worry about technical purity than about encrypting payments and calculating taxes. We are open to suggestions, so you can either drop me a line here, or contact me directly via my email address.&lt;/p&gt;&lt;img src="http://ayende.com/Blog/aggbug/7039.aspx" width="1" height="1" /&gt;</description>
            <guid>http://ayende.com/Blog/archive/2006/12/10/NHibernateWebCastSeriesThinkingAboutTheInfrastructure.aspx</guid>
            <pubDate>Sun, 10 Dec 2006 18:47:24 GMT</pubDate>
            <comments>http://ayende.com/Blog/archive/2006/12/10/NHibernateWebCastSeriesThinkingAboutTheInfrastructure.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://ayende.com/Blog/comments/commentRss/7039.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>