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

<channel>
	<title>Ramble &#187; CodeMash</title>
	<atom:link href="http://www.alterzone.net/blog/category/codemash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alterzone.net/blog</link>
	<description>Where the Future Never Looks the Same Way Twice</description>
	<lastBuildDate>Mon, 17 Jan 2011 02:43:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CodeMash 2.0.1.1 Wrap-Up</title>
		<link>http://www.alterzone.net/blog/2011/01/16/codemash-2-0-1-1-wrap-up/</link>
		<comments>http://www.alterzone.net/blog/2011/01/16/codemash-2-0-1-1-wrap-up/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 02:43:01 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/?p=207</guid>
		<description><![CDATA[I just got back yesterday from CodeMash 2.0.1.1, held annually each January in Sandusky, Ohio at the Kalahari Water Park Resort. I saw a lot of great sessions, but I focused mostly on a couple of topics. I really enjoyed the sessions on algorithms, parallel programming, and Netflix&#8217;s use of AWS. I attended an evangelical [...]]]></description>
			<content:encoded><![CDATA[<p>I just got back yesterday from <a href="http://www.codemash.org">CodeMash 2.0.1.1</a>, held annually each January in Sandusky, Ohio at the Kalahari Water Park Resort.</p>

<p>I saw a lot of great sessions, but I focused mostly on a couple of topics.  I really enjoyed the sessions on algorithms, parallel programming, and Netflix&#8217;s use of <a href="http://aws.amazon.com">AWS</a>.  I attended an evangelical (in a good way) session by <a href="https://twitter.com/jonkruger">@jonkruger</a> on Ruby on Rails from a .NET developer&#8217;s perspective.  I also worked through a bunch of <a href="http://www.rubykoans.com">Ruby Koans</a> during the PreCompiler.  This is the year I&#8217;m going to build some Ruby on Rails projects.</p>

<p>Another favorite session was <a href="http://www.codemash.org/Sessions#Functional+Programming+for+Everyday+.NET+Development">Functional Programming for Everyday .NET Development</a> by <a href="https://twitter.com/jeremydmiller">@jeremydmiller</a>.  I met him the previous CodeMash in an Open Spaces session on FubuMVC.  This year, his presentation on applying functional programming techniques to everyday C# programming was among the most informative and useful for my day job.</p>

<p>An early session on the first day, <a href="http://www.codemash.org/Sessions#Asymptotics+and+Algorithms+-+What+You%27ve+Forgotten+Since+University">Asymptotics and Algorithms</a>, by <a href="http://www.twitter.com/garyshort">@garyshort</a> was a lot of fun.  I dredged up old CS undergrad knowledge as he walked through Big-O notation and measuring some sort algorithms.  In fact, his presentation was better than the one I remember receiving in school.</p>

<p>Of course, the <a href="http://www.twitter.com/chadfowler">@chadfowler</a> keynote was interesting.  I never thought a talk that uses examples from <a href="http://en.wikipedia.org/wiki/Six_Sigma">Six Sigma</a> management strategy for 1/3 of the material would be so entertaining.</p>

<p>The other keynote I loved was by Scott Chacon (<a href="https://twitter.com/CHACON">@chacon</a>) of <a href="http://www.github.com">GitHub</a> on what he called the &#8220;Developer Driven Development&#8221; philosophy of GitHub and why it works.  It was an inspiring talk with the core being that the three things that motivate creative work are autonomy, mastery, and purpose and the Open Source way of doing development with decentralized, autonomous developers who can choose when, where, and what to work on is a great model for emphasizing those motivators.  It works for GitHub and it an work for you.</p>

<p>I may have more detailed write-ups later, but I wanted to get some initial wrap-up thoughts down while they were still fresh in my mind.  I highly recommend this conference.  This was my fifth year attending and next year will hopefully be my sixth.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2011/01/16/codemash-2-0-1-1-wrap-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m going to CodeMash 2009!</title>
		<link>http://www.alterzone.net/blog/2009/01/04/im-going-to-codemash-2009/</link>
		<comments>http://www.alterzone.net/blog/2009/01/04/im-going-to-codemash-2009/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 01:50:20 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[2009]]></category>
		<category><![CDATA[CodeMash]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2009/01/04/im-going-to-codemash-2009/</guid>
		<description><![CDATA[Once again, I will be attending CodeMash. I&#8217;ll blog about anything I find particularly exciting or interesting. It should be fun. Look me up if you are attending.]]></description>
			<content:encoded><![CDATA[<p><img style="max-width: 800px;" src="http://codemash.org/images/badges/attendee1.png" /><br /></p>

<p>Once again, I will be attending CodeMash.  I&#8217;ll blog about anything I find particularly exciting or interesting.  It should be fun.  Look me up if you are attending.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2009/01/04/im-going-to-codemash-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeMash 2008 Wrap Up, Part 1</title>
		<link>http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/</link>
		<comments>http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 23:59:13 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/</guid>
		<description><![CDATA[CodeMash 2008 came to end on Friday. This year&#8217;s conference was even better than the inagural event; a whirlwind two days, packed with three keynotes and dozens of sessions. I talked with developers coming from a wide range of backgrounds and organizations. As one attendee remarked to me while we were getting food from the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codemash.org" title="CodeMash Website">CodeMash 2008</a> came to end on Friday. This year&#8217;s
conference was even better than the inagural event; a whirlwind two
days, packed with three keynotes and dozens of sessions. I talked
with developers coming from a wide range of backgrounds and 
organizations.  As one attendee remarked to me while we were getting
food from the buffet, it was nice to be in a event full of geeks.</p>

<p>Topics at CodeMash are varied and atendees are encouraged to 
attend sessions outside their comfort zones.  I see CodeMash as a
valuable way station on the raod from journeyman to master, a place
where the pragmatic meets the esoteric and the everyday programmer
can be exposed to ideas and practices that illuminate the deeper
nature behind and practices of software engineering.  I certainly
had that experience this year.</p>

<p><span id="more-146"></span></p>

<p>The first day was packed with events. Our first keynote was delivered
by <a href="http://www.nealford.com/mypastconferences.htm" title="Neal Ford's Conference Slides">Neal Ford</a>, 
<em>Software Engineering &amp; Polyglot Programming</em>. 
The takeaway was a vision of the future of programming where the
language is separate from the platform and we take advantage of solid
runtime platforms like the JVM or .NET CLR while casting aside the
cumbersome languages traditionally associated with them in favor of
more productive, more dynamic languages. For example, Groovy on the
JVM or IronPython on .NET.  In Ford&#8217;s view,</p>

<blockquote>
  <p>Testing is the engineering rigor of software engineering.</p>
</blockquote>

<p>By combining dynamic languages on solid runtimes with rigorous 
testing practices, software &#8220;engineering&#8221; can begin to live up
to its namesake.</p>

<p><a href="http://objo.com/" title="Joe O'Brien's Blog">Joe O&#8217;Brien&#8217;s</a> <em>Ruby Testing Mandatory</em> talk was one
of those &#8220;outside my comfort zone&#8221; talks, as I know very little 
about Ruby.  But, the testing support Joe showed was quite impressive.
It is a mandatory practice because:</p>

<ol>
<li>It&#8217;s included in the language</li>
<li>It&#8217;s easy &amp; you can make it easier</li>
<li>There is nothing you cannot unit test in Ruby</li>
</ol>

<p>With a powerful, dynamic language like Ruby, you can easily do stupid
things, but testing can help you catch problems earlier, mitigating
the risk. This conclusion sounded, unsurprisingly, like Neal Ford&#8217;s
keynote.  But, I was sold on the importance of testing last year.
The take away from this session for me was seeing how awesome
the Ruby tools are.  I think I briefly experienced the 
Reality Distortion Field that seems to be increasingly turning
otherwise rational programmers into Ruby zealots.  I&#8217;ll definitely
be making some time over the next few months to play with Ruby.</p>

<p>Continuing on my non-.NET language tour, I stopped by 
<a href="http://catherinedevlin.blogspot.com/" title="Catherine Devlin's Blog">Catherine Devlin&#8217;s</a>, 
<em>Crash, Smash, Kaboom Course in Python</em> session.  It was a very code
heavy session and I surprised myself by already knowing much of what
she discussed as she introduced Python programming via the 
development of a solar system modeling program, complete with
realistic gravitational forces and exploding planets.  It was a fine
introduction to the language and I was relieved that the example
project was not yet another Web app.  Yes, Python can do more
than Web pages.</p>

<p>After lunch, I had the great pleasure of seeing the best keynote of
the conference, <em>Mashing it up with IIS7</em>, delivered by <a href="http://www.hanselman.com/blog/" title="Scott Hanselman's Computer Zen">Scott
Hanselman</a>. The talk of the conference was actually the
first ten minutes of his presentation which was, basically, stand-up
for geeks. When the keynote presenter uses LOLCat slides in his
presentation, you know you are in for a good time. The presentation
itself was on hosing PHP on IIS7. Despite some technical difficulties
during the presentation, it was great. I wish we were upgrading soon
because I was sold on the new feature set. I am actually starting to
gain a little respect for the IIS folks. I&#8217;m not ready to give up my
beloved Apache, but IIS7 looks sharp and I hope I get to play around
with it soon.</p>

<p>As an aside, the highlight of CodeMash for me was talking with and
rocking out with Scott playing <a href="http://www.rockband.com/" title="Rock Band Website">Rock Band</a> during the Day 1 party.
He seems like a very nice guy, knowledgable, and a quick study on the
drums. I actually think many people found Rock Band to be a
centerpiece of the event. You could always find the most interesting
people hanging out around the game as well as the funniest moments.
I have a grainy cellphone video of a &#8220;cowbell&#8221; incident that
I&#8217;ll post in the near future for those that were there.  The
funniest thing about the Rock Band setup was that there was a 
<em>real</em> band playing next door.</p>

<p>I skipped the first of the vendor sessions in the afternoon due to
being really tired by this point.  In the afternoon, I checked out
<a href="http://www.blueskyonmars.com/" title="Blue Sky On Mars">Kevin Dangoor&#8217;s</a>, 
<em>Introducing the Dojo JavaScript Tool</em> talk.  Being a complete
JavaScript novice, I found it very informative.  The feature
set is huge and the care taken in making the core libraries as 
compact on the wire as possible really impressed me.  The quote
of the session:</p>

<blockquote>
  <p>The great thing about Dojo is that you don&#8217;t need to know JavaScript
  well.</p>
</blockquote>

<p>The final session of Day 1 was <a href="http://diditwith.net/default.aspx" title="Did it with .NET">Dustin Campbell&#8217;s</a>
<em>Putting the Fun into Functional with F#</em>. This was my favorite
session and I heard many other atendees remark that it made their
head spin. As Dustin explains, <a href="http://research.microsoft.com/fsharp/fsharp.aspx" title="Microsoft Research - F#">F#</a> is a <strong>HUGE</strong> language
developed by <a href="http://research.microsoft.com/" title="Microsoft Research">Microsoft Research</a> that fully implements
the three major programming paradigms we have today: functional,
imperative, and object-oriented. The talk focused on the functional
aspects. I think I learned more about functional programming from
this one talk than from all the intermittent reading of Lisp websites
I&#8217;ve done over the past few years. Since the language comes with the
full source code, I&#8217;m really excited to download and play around with
it. Dustin also appears on the latest <a href="http://hanselminutes.com/" title="Hanselminutes Podcast">Hanselminutes</a> podcast and
does a good job explaining some of the points he made in the talk. I
listened to it on my way home tonight. I think F# is going to be a
big deal in the .NET community once people wrap their minds around
the functional aspects.  There is so much power there, yet the
language is also very accessible to current .NET/C# programmers.</p>

<p>After dinner, the Attendee Party commenced where the aforementioned
Rock Band rocking out occured.  Great times were had by all.  I was
originally going to summarize my entire CodeMash 2008 experience
in this entry, but as it is already getting late, I&#8217;ll end it here.
Stay tuned for my summary of Day 2, which included an utterly
fascinating keynote by Brian Goetz on concurrency programming
and some Perl bashing from Bruce Eckel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2008/01/14/codemash-2008-wrap-up-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeMash 2008 &#8211; Day 0</title>
		<link>http://www.alterzone.net/blog/2008/01/10/codemash-2008-day-0/</link>
		<comments>http://www.alterzone.net/blog/2008/01/10/codemash-2008-day-0/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 05:34:57 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>
		<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2008/01/10/codemash-2008-day-0/</guid>
		<description><![CDATA[My friend Mike and I made it to Sandusky, OH for CodeMash 2008 this afternoon. The only event scheduled for today was a panel discussion in the evening on &#8220;Talking Technology to Humans.&#8221; It was alright, if not exactly a topic that held my interest too much. Mike and I decided to try making some [...]]]></description>
			<content:encoded><![CDATA[<p>My friend Mike and I made it to Sandusky, OH for CodeMash 2008 this afternoon.  The only event scheduled for today was a panel discussion in the evening on &#8220;Talking Technology to Humans.&#8221;  It was alright, if not exactly a topic that held my interest too much.</p>

<p>Mike and I decided to try making some quick and dirty podcasts of each day using a new microphone that he obtained.  The result of our first attempt for Day 0 is linked below.  The quality isn&#8217;t great, but it was our first attempt and done with nothing more than Audacity, a Macbook, and a microphone.</p>

<p>The real events start tomorrow.  I&#8217;m not sure if I will live blog like last year.  That&#8217;s pretty hard and my battery is unlikely to last the entire day, but I will at least take some notes and post when I can.</p>

<p><a href="http://rmc.irt.drexel.edu/playlists/sdt23/CodeMash_2008.html">CodeMash 2008 (HTML)</a></p>

<p><a href="http://rmc.irt.drexel.edu/playlists/sdt23/CodeMash_2008.xml">CodeMash 2008 (RSS)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2008/01/10/codemash-2008-day-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeMash 2.0.0.8 &#8211; I&#8217;ll Be There!</title>
		<link>http://www.alterzone.net/blog/2007/11/12/codemash-2008-ill-be-there/</link>
		<comments>http://www.alterzone.net/blog/2007/11/12/codemash-2008-ill-be-there/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 22:00:47 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/11/12/codemash-2008-ill-be-there/</guid>
		<description><![CDATA[CodeMash CodeMash 2.0.0.8 is coming in January. If you missed last year&#8217;s inaugural conference, check out some of my posts from last year to get a feel for the event. If you are interested in attending, early-bird registration is about to end this week. The session list for this year is shaping up to be [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://www.codemash.org/"> <img src="http://www.codemash.org/images/bloggerbadge2008.gif" alt="CodeMash – I'll be there!" /></a><a href="http://www.codemash.org/" rel="tag">CodeMash</a></p>

<p>CodeMash 2.0.0.8 is coming in January.  If you missed last year&#8217;s inaugural conference, check out some of my <a href="http://www.alterzone.net/blog/category/codemash/">posts </a>from last year to get a feel for the event.  If you are interested in attending, early-bird registration is about to end this week.  The <a href="http://codemash.org/SessionList.aspx">session list</a> for this year is shaping up to be even better than last.  Last year there was a lot of .NET and a significant amount of Ruby.  This year, it looks like a lot of .NET and a bunch of Python.  I guess I better brush up on my Python skills before January.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/11/12/codemash-2008-ill-be-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeMash: End of Conference Thoughts</title>
		<link>http://www.alterzone.net/blog/2007/01/19/codemash-end-of-conference-thoughts/</link>
		<comments>http://www.alterzone.net/blog/2007/01/19/codemash-end-of-conference-thoughts/#comments</comments>
		<pubDate>Sat, 20 Jan 2007 03:57:35 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/01/19/codemash-end-of-conference-thoughts/</guid>
		<description><![CDATA[CodeMash 2007 was great!  I had a blast.  The keynotes were excellent, the sessions I went to were excellent, the resort was excellent.  The only thing that sucked was the food (come one guys, at least give us something hot!). The big themes of the conference were definitely DSLs and SOA.  I particularly liked the [...]]]></description>
			<content:encoded><![CDATA[<p>CodeMash 2007 was great!  I had a blast.  The keynotes were excellent, the sessions I went to were excellent, the resort was excellent.  The only thing that sucked was the food (come one guys, at least give us something hot!).</p>

<p>The big themes of the conference were definitely DSLs and SOA.  I particularly liked the Joe O&#8217;Brien sessions on Ruby and Rails in the Enterprise.  Scott Guthrie was a very dynamic speaker.  Everything with him was &#8220;super.&#8221;</p>

<p>I now have some ideas for things to implement back at work.  After the conference, both Chas and I bought<em> <a href="http://www.amazon.com/Programming-Ruby-Pragmatic-Programmers-Second/dp/0974514055/sr=8-1/qid=1169265211/ref=pd_bbs_sr_1/002-8255433-2100859?ie=UTF8&#038;s=books">Programming Ruby</a></em> and <em><a href="http://www.amazon.com/Java-Ruby-Manager-Pragmatic-Programmers/dp/0976694093/sr=1-1/qid=1169265290/ref=pd_bbs_sr_1/002-8255433-2100859?ie=UTF8&#038;s=books">From Java to Ruby</a></em>.   The later book was recommended as a good source of business case arguments for some Ruby adoption in the Enterprise.</p>

<p>I can&#8217;t wait for CodeMash 2008.  I&#8217;ll probably have more to say about these topics and even perhaps the conference itself later this weekend.  For now, I&#8217;m tired and we have a long drive ahead of us in the morning.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/01/19/codemash-end-of-conference-thoughts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeMash: Developing Data-Driven Web Applications with LINQ</title>
		<link>http://www.alterzone.net/blog/2007/01/19/developing-data-driven-web-applications-with-linq/</link>
		<comments>http://www.alterzone.net/blog/2007/01/19/developing-data-driven-web-applications-with-linq/#comments</comments>
		<pubDate>Fri, 19 Jan 2007 21:08:58 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Scott Guthrie]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/01/19/developing-data-driven-web-applications-with-linq/</guid>
		<description><![CDATA[Presented by: Scott Guthrie These are &#8220;live&#8221; notes and necessarily rough. Today&#8217;s Problem: Data != Objects Traditional data access includes a mixture of languages (SQL and native code), arguments loosely bound, results loosely typed, compiler cannot help catch mistakes and queries in quotes within the code. In LINQ, classes describe data. There is encapsulated business [...]]]></description>
			<content:encoded><![CDATA[<p>Presented by: <a title="Scott Guthrie" href="http://www.alterzone.net/blog/weblogs.asp.net/scottgu">Scott Guthrie</a></p>

<p>These are &#8220;live&#8221; notes and necessarily rough.</p>

<p>Today&#8217;s Problem: Data != Objects</p>

<p>Traditional data access includes a mixture of languages (SQL and native code), arguments loosely bound, results loosely typed, compiler cannot help catch mistakes and queries in quotes within the code.</p>

<p>In LINQ, classes describe data.  There is encapsulated business validation.  A query is a natural part of the language and the compiler provides intellisense and type-checking.</p>

<p>LINQ can query against objects, relational, and XML.  Also, LINQ enabled ADO.NET &#8211; LINQ to Datasets, LINQ to SQL, LINQ to Entities.  Plugin architecture, can create new &#8220;LINQ to&#8221; modules.</p>

<p><em>LINQ Basics </em></p>

<p>Query operators can be used against any .NET collection (IEnumerable)</p>

<ul>
    <li>Built-in examples: Select, Where, GroupBy, Join, etc.</li>
    <li>Extensibility model supports adding/replacing them</li>
</ul>

<p>Query Expressions can operate on information sources and apply query operators against them to return IEnumberable sequences.  Chain operators together.</p>

<p><em>Projections</em></p>

<ul>
    <li>Take results from expression and modify it in a different way</li>
    <li>Enables &#8220;data shaping&#8221; in query expressions</li>
</ul>

<p>Projections w/ Anonymous Types makes the compiler create an object with the properties of the type on the right-hand assignment of the first assignment. Still strongly typed at runtime. <em>Very cool.</em></p>

<p><em>LINQ to SQL</em></p>

<ul>
    <li>Maps .NET classes to relational SQL data</li>
    <li>translates LINQ queries to SQL execution</li>
    <li>Supports change tracking for insert, update, delete operations</li>
    <li>supports entity-level validation rules</li>
    <li>built on top of ADO.NET and integrates with connection-pooling and transactions</li>
</ul>

<p>Associations</p>

<ul>
    <li>Usually expressed with PK/FK</li>
    <li>Relationships inferred from FK</li>
</ul>

<p>LINQ can implement server-side paging and complicated joins.</p>

<p>LINQ different from embedded SQL in that it is strongly typed and can also query against different data sources, not just relational databases.</p>

<p>LINQ for SQL Architecture Services:</p>

<ul>
    <li>Change tracking</li>
    <li>Concurrency control</li>
    <li>Object identity</li>
</ul>

<p>db.SubmitChanges() will generate SQL code to update database.  Can drop down and put in your own SQL or stored procedure, but really shouldn&#8217;t do this unless really necessary.</p>

<p>Implicit or explicit transaction scope.</p>

<p><em>BLINQ</em></p>

<ul>
    <li>UI scaffold</li>
    <li>Point to DB and it will create CRUD pages</li>
    <li>Generates LINQ for SQL data model</li>
    <li>Easy way to quickly build CRUD pages against data models</li>
    <li>Free download today</li>
</ul>

<p><em>LINQ for Entities</em></p>

<ul>
    <li>Entity Data Model (EDM) enables rich conceptual modeling of data</li>
    <li>Entities can be split across multiple tables, and support rich inheritance</li>
    <li>Higher level of abstraction</li>
    <li>Full LINQ support over EDM definitions</li>
</ul>

<p><em>LINQ to XML</em></p>

<ul>
    <li>Declarative construction of XML document</li>
    <li>Support for language integrated queries</li>
    <li>Cleaner, simpler, smaller and faster XML API</li>
    <li>Does  XML TextReader for you</li>
</ul>

<p><em>There was lots of stuff in this presentation, so check out the slides, especially for the code samples.</em></p>

<p>Fin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/01/19/developing-data-driven-web-applications-with-linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeMash: Integrating Ruby into the Enterprise</title>
		<link>http://www.alterzone.net/blog/2007/01/19/codemash-integrating-ruby-into-the-enterprise/</link>
		<comments>http://www.alterzone.net/blog/2007/01/19/codemash-integrating-ruby-into-the-enterprise/#comments</comments>
		<pubDate>Fri, 19 Jan 2007 19:36:07 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/01/19/codemash-integrating-ruby-into-the-enterprise/</guid>
		<description><![CDATA[Presented by: Joe O&#8217;Brien These are &#8220;live&#8221; notes and necessarily rough. Three Step Process to Get Ruby into the Enterprise Developer&#8217;s Helper Enterprise Glue Application Development Developer&#8217;s Helper Ruby the language Rake Capistrano Ruby the language every developer needs a scripting language repeated tasks are automated mouse clicks become scripts IRB rocks! Interactive shell environment [...]]]></description>
			<content:encoded><![CDATA[<p>Presented by: Joe O&#8217;Brien</p>

<p>These are &#8220;live&#8221; notes and necessarily rough.</p>

<p><em>Three Step Process to Get Ruby into the Enterprise</em></p>

<ol>
    <li>Developer&#8217;s Helper</li>
    <li>Enterprise Glue</li>
    <li>Application Development</li>
</ol>

<p><strong>Developer&#8217;s Helper</strong></p>

<ul>
    <li>Ruby the language</li>
    <li>Rake</li>
    <li>Capistrano</li>
</ul>

<p>Ruby the language</p>

<ul>
    <li>every developer needs a scripting language</li>
    <li>repeated tasks are automated</li>
    <li>mouse clicks become scripts</li>
    <li>IRB rocks!  Interactive shell environment for running Ruby</li>
</ul><ul>
    <li>Ruby is cross-platform, so you can call up IRB in various systems</li>
    <li>Can run scripts from within IRB</li>
</ul>


<p>Rake</p>

<ul>
    <li>&#8220;Make done right&#8230;finally&#8221;</li>
    <li>DSL for automating tasks</li>
    <li>Dependency based programming</li>
</ul>

<p>What about ANT?</p>

<ul>
    <li>Works well to a certain size of project</li>
    <li>Not a scripting language, but you start needing scripting language features on larger projects</li>
</ul>

<p>Capistrano</p>

<ul>
    <li>a sysadmin&#8217;s dream come true</li>
    <li>deployments become:</li>
</ul><ul>
    <li>standardized</li>
    <li>remote</li>
    <li>easy</li>
</ul>
    <li>must be POSIX server (No IIS)</li>


<ul>
    <li>cap setup</li>
    <li>cap deploy</li>
    <li><strong>cap rollback</strong></li>
    <li>cap update_code</li>
</ul>

<p><strong>Enterprise Glue</strong></p>

<ul>
    <li>XML with REXML and Builder</li>
    <li>Faster CSV</li>
    <li>Watir (for testing)</li>
    <li>ActiveRecord</li>
</ul>

<p>REXML</p>

<ul>
    <li>Processing XML</li>
    <li>Tree parsing</li>
    <li>Stream parsing</li>
    <li>Can generate XML, but very API focused, so Builder is better for generation</li>
</ul>

<p>Builder</p>

<ul>
    <li>DSL for creating XML files</li>
    <li>Uses the power of Ruby to generate XML from code</li>
    <li>No sharp pointy brackets</li>
</ul>

<p>Faster CSV</p>

<ul>
    <li>Library for CSV file parsing</li>
    <li>Nice clean interface</li>
    <li>The CSV in Ruby trunk is very slow, use &#8220;Faster CSV&#8221;</li>
</ul>

<p style="font-weight: bold">Watir <span style="font-style: italic; font-weight: normal">(Very Cool)</span></p>

<ul>
    <li>Testing community has harnessed Ruby for testing</li>
    <li>Web App Testing In Ruby</li>
    <li>DSL for &#8216;driving&#8217; your web app</li>
    <li>Now works on more than IE</li>
</ul>

<p>ActiveRecord</p>

<ul>
    <li>ORM for Ruby on Rails</li>
    <li>Can be used stand alone</li>
    <li>Flexibility and stability in data migration</li>
    <li>Nice DSL for accessing your data</li>
    <li>Classes represent tables</li>
    <li>Objects represent rows</li>
    <li>Attributes of objects represent cells</li>
</ul>

<p>ActiveRecord opinionated software</p>

<ul>
    <li>Convention over configuration</li>
    <li>no XML needed</li>
    <li>give up a little control</li>
    <li>gain speed of development</li>
    <li>gain consistency</li>
    <li>Can use it without conventions, can configure if you want to</li>
    <li>Uses metadata in database to infer datatypes of columns and creates methods for itself, on the fly, named after the columns</li>
</ul>

<p>In  glue scenario, it could be taking logs and putting them into a database.</p>

<p>ActiveRecord also has good validation and clean way to define relationships between tables.</p>

<ul>
    <li>i.e. migrating data from old database to new schema</li>
</ul><ul>
    <li>setup ActiveRecord for both databases, read them in as one, interact with them as objects and the validation is there to help you avoid problems.</li>
</ul>


<p><strong>Application Development</strong></p>

<p>Digression: Get<em> Enterprise Integration Patterns</em> book.</p>

<p>Digression: SOA requires well-defined boundaries down to the DB level, app databases, not integrated databases</p>

<p>Digression: &#8220;Starbucks does not do a two-phase commit.&#8221;  &#8212; Find the article with this quote</p>

<p>The digression about SOA (some notes are marked above) is very interesting.  Check out the slides.</p>

<p>And, we&#8217;re back from the digression&#8230;</p>

<ul>
    <li>ActiveMessaging</li>
    <li>RESTful Rails</li>
</ul>

<p>ActiveMessaging</p>

<ul>
    <li>Rails, Java, and JMS</li>
    <li>JMS as middleware (see slide)</li>
</ul><ul>
    <li>messaging queue that uses STOMP</li>
    <li>Don&#8217;t have to convert all the legacy code</li>
    <li>Model goes to database or JMS in MVC pattern</li>
</ul>


<p>REST</p>

<ul>
    <li>Standardizing CRUD in Rails</li>
    <li>Extensible presentation formats</li>
    <li>Allows you to harness logic</li>
    <li>App treated as a service</li>
</ul>

<p>Standard actions</p>

<ul>
    <li>index</li>
    <li>create</li>
    <li>update</li>
    <li>delete</li>
    <li>destroy</li>
    <li>show</li>
    <li>new</li>
</ul>

<p>Can create your own types!</p>

<p>Summary &#8211; Ways to Get Ruby into the Enterprise</p>

<ul>
    <li>As a Developer&#8217;s Helper</li>
    <li>As Enterprise Glue</li>
    <li>For Application Development</li>
</ul>

<p><em>This session was great.  I&#8217;m excited to start using Ruby and especially ActiveRecord and ActiveMessaging at work.</em></p>

<p>Fin.</p>

<p><em /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/01/19/codemash-integrating-ruby-into-the-enterprise/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CodeMash: Curry Favor with Closures: An Introduction to Functional Programming</title>
		<link>http://www.alterzone.net/blog/2007/01/19/codemash-curry-favor-with-closures-an-introduction-to-functional-programming/</link>
		<comments>http://www.alterzone.net/blog/2007/01/19/codemash-curry-favor-with-closures-an-introduction-to-functional-programming/#comments</comments>
		<pubDate>Fri, 19 Jan 2007 17:25:37 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>
		<category><![CDATA[Functional Programming]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/01/19/codemash-curry-favor-with-closures-an-introduction-to-functional-programming/</guid>
		<description><![CDATA[Presented by: Bill Wagner These are &#8220;live&#8221; notes and necessarily rough. Google for PLINQ, for an interview. Closure: a combination of a function and its executing environment (not precise definition) Yield Return: syntactic sugar for iterator pattern. Real World Use of Functional Programming enumeration of the input operation on that input the output could be [...]]]></description>
			<content:encoded><![CDATA[<p>Presented by: <a title="Bill Wagner" href="http://www.alterzone.net/blog/www.srtsolutions.com/public/blog/20574">Bill Wagner</a></p>

<p>These are &#8220;live&#8221; notes and necessarily rough.</p>

<p>Google for PLINQ, for an interview.</p>

<p>Closure: a combination of a function and its executing environment (not precise definition)
Yield Return: syntactic sugar for iterator pattern.</p>

<p><em>Real World Use of Functional Programming </em></p>

<ul>
    <li>enumeration of the input</li>
    <li>operation on that input</li>
    <li>the output</li>
</ul><ul>
    <li>could be sequence or scalar</li>
</ul>
    <li>payoff: enumeration, output are generic</li>
    <li>payoff 2: operation can be anonymous</li>


<p><em>Framework 2.0 Examples</em></p>

<ul>
    <li>RemoveAll: call this method on every item in list, if returns true, remove item</li>
    <li>Exists</li>
    <li>Find, FindAll, FindLast, FindLastIndex</li>
    <li>ForEach</li>
    <li>TrueForAll</li>
</ul>

<p>We are always writing looping or branching constructs.  Enumerate sequence is common.  Scalar result from a sequence is common.  Thread safety and closures.  Since this pattern is so common, language changes can make this easier &#8211; hence C# 3.0.</p>

<p>C# avoids problems with language change by using contextual keywords like &#8220;yield return&#8221; which onlly means something in special places.  You should be able to take C# 2.0 and compile into C# 3.0.</p>

<p>Why Add Functional Concepts</p>

<ul>
    <li>Programs = mathematical functions</li>
</ul><ul>
    <li>e.g. y = f(x)</li>
</ul><ul>
    <li>no side effects, no state, mapping between input and output</li>
    <li>can prove that the function works, mathematically</li>
</ul>
    <li>they may be functions of functions:</li>
<ul>
    <li>z = f(g(x), y)</li>
    <li>This is <strong>currying</strong></li>
    <li>There are MIT videos on functional programming</li>
</ul>

    <li>There are <strong>no side effects</strong></li>
<ul>
    <li>Functions have inputs, and one output</li>
    <li>They don&#8217;t change other values (no state changes)</li>
</ul><ul>
    <li>member variables, or global variables</li>
</ul>



<p><em>Extension Methods</em></p>

<ul>
    <li>injected into existing class</li>
    <li>extension methods are <strong>last</strong> in method resolution order</li>
</ul><ul>
    <li>String has a concat(), so the extension method won&#8217;t execute</li>
</ul>
    <li>ToArray(), ToList() are important to know (System.Linq)</li>
<ul>
    <li>immediate vs. deferred execution</li>
</ul>
    <li>Can even add methods onto a <strong>sealed</strong> class</li>


<p><em>Lambdas</em></p>

<ul>
    <li>Lambdas are shorthand for anonymous delegates.  You write this:</li>
</ul><ul>
    <li>x => x + 1</li>
</ul>
    <li>Compiler creates full delegate code</li>
    <li>&#8216;var&#8217; is not weak typing, or dynamic typing</li>
<ul>
    <li>is local type inference</li>
</ul><ul>
    <li>sometimes called &#8216;Duck Typing</li>
</ul>

    <li>Compiler infers type of variable from right-hand-side of experssion</li>
    <li>only local to a procedure</li>
    <li>can&#8217;t change type after init</li>


<p>If you want to try, need to search and find dll.  Namespace is System.Linq.</p>

<p><em>There was lots of good stuff in this presentation. These notes are very incomplete. I&#8217;ll link to the slides, if they become available online.</em><em> </em></p>

<p>Fin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/01/19/codemash-curry-favor-with-closures-an-introduction-to-functional-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeMash: SOA, The Next Wave of Distributed Development or the Return of the Son of CORBA?</title>
		<link>http://www.alterzone.net/blog/2007/01/19/codemash-soa-the-next-wave-of-distributed-development-or-the-return-of-the-son-of-corba/</link>
		<comments>http://www.alterzone.net/blog/2007/01/19/codemash-soa-the-next-wave-of-distributed-development-or-the-return-of-the-son-of-corba/#comments</comments>
		<pubDate>Fri, 19 Jan 2007 16:07:55 +0000</pubDate>
		<dc:creator>Stephen Tolton</dc:creator>
				<category><![CDATA[CodeMash]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.alterzone.net/blog/2007/01/19/codemash-soa-the-next-wave-of-distributed-development-or-the-return-of-the-son-of-corba/</guid>
		<description><![CDATA[Presented by: Neal Ford These are &#8220;live&#8221; notes and necessarily a bit rough. Haven&#8217;t we done distributed computing before? Why hasn&#8217;t this worked? Because of: Vendor proprietariness OMG tried to create multi-vendor CORBA, but couldn&#8217;t get major vendor to cooperative (Microsoft) Opaque transport binary transport is hard to debug Reliance on point-to-point communications Can&#8217;t rely [...]]]></description>
			<content:encoded><![CDATA[<p>Presented by: <a title="Neal Ford" href="http://www.alterzone.net/blog/nealford.com">Neal Ford</a></p>

<p>These are &#8220;live&#8221; notes and necessarily a bit rough.</p>

<p>Haven&#8217;t we done distributed computing before?  Why hasn&#8217;t this worked?</p>

<p>Because of:</p>

<ul>
    <li>Vendor proprietariness</li>
</ul><ul>
    <li>OMG tried to create multi-vendor CORBA, but couldn&#8217;t get major vendor to cooperative (Microsoft)</li>
</ul>
    <li>Opaque transport</li>
<ul>
    <li>binary transport is hard to debug</li>
</ul>
    <li>Reliance on point-to-point communications</li>
<ul>
    <li>Can&#8217;t rely on this assumption</li>
</ul>
    <li>Expensive</li>
<ul>
    <li>Vendors saw this as a way to separate your company from their money</li>
</ul>
    <li>Too much work on plumbing</li>


<p>Deutsch&#8217;s 8 Fallacies of Distributed Computing.  People make assumptions that don&#8217;t take into account real world operations and situations.</p>

<p><em>Enter SOA</em></p>

<p>&#8220;The current darling of the peripherally technical management crowd&#8221;</p>

<p>Over-hyped and isn&#8217;t a technology at all!  It&#8217;s an architectural style.  Each vendor co-opts the definition to match their tools.</p>

<p><em>Definitions</em></p>

<p>In a SOA world, a service is a &#8220;coarse-grained, self-contained business function.&#8221;  &#8220;Business function&#8221; is the only thing the manager hears.  A lot of the SOA literature is about the business case, this business focus helps make it so popular with peripherally technical management.</p>

<p>Service must be <strong>coarse grained</strong>, remember the wrong assumption about network latency being 0!  Can&#8217;t make it too fine grained.   Stateless and always available.</p>

<p>Component vs Service.  A component is a glob of software that&#8217;s used by app that is out of the control of the writers of the component and used without change.  A service is used more like a black box at a remote end-point and is synch or asynch.</p>

<p>SOA needs to be finer grained than entire application, but coarser grained than individual parts that make up an application.  Important balance to create.  It is an enterprise-wide architecture.  New apps are (in the Nirvana view) to be assembled from existing services rather than built from scratch.  Services are registered in central registry and can be discovered and their interfaces &#8220;negotiated&#8221;.  Common services (like security) can be shared by all applications or application services.</p>

<p><em>Service Oriented Ambiguity</em></p>

<p>For some SOA is about exposing software through web services.  Others thing SOA implies an architecture where applications disappear and functionality and UI through something like a portal aggregator.</p>

<p>For some, it is about allowing systems to communicate over some form of standard structure (usually XML).  This can become &#8220;CORBA with angle brackets&#8221;.</p>

<p><em>Problem we are Trying to Solve</em></p>

<p>Autonomous apps around Enterprise that can&#8217;t communicate with each other.  Islands of information or &#8220;stove pipes.&#8221;  You always end up in this place, regardless of how well you plan things.</p>

<p>The solution has a bunch of services, representing business processes with the messy &#8220;real world&#8221; on the back end (legacy systems, databases, packaged apps).  The other side has Web interfaces.  Also hangin on the front is portal and display functions, simple web services, document processing.</p>

<p><em>How do you evolve to an SOA Architecture</em></p>

<p>Stage 0: Integration as Afterthought</p>

<ul>
    <li>No integration or point-to-point integration</li>
    <li>Silos</li>
    <li>Apps have services layers for common services (logging, persistence, security, etc.)</li>
    <li>Package apps expose low-level APIs for C or Java</li>
</ul>

<p>Stage 1: Enabling Services</p>

<p>Easiest step</p>

<ul>
    <li>Expose app functions as Web Services</li>
    <li>Wrap apps using Web Service Facades</li>
    <li>Relatively easy to accomplish <strong>right now</strong></li>
    <li>No integration of common services, no service management</li>
</ul>

<p>Stage 2: Managed Web Services</p>

<ul>
    <li>Centrally managed common services shared by multiple apps</li>
    <li>May not be feasible for package apps</li>
    <li>Start to realize return on tech investment</li>
    <li>Process resides inside apps</li>
</ul>

<p>Stuff like logging (coarse grained) moved up to the bus level.  More work.  Services have to be on reliable machines.  Probably can&#8217;t collapse out stuff from packaged apps, but you can for your own stuff. The apps still have business processes within them.  Start seeing return on investment.  For example, if you change security characteristics, just change service and everyone is upgraded.
Stage 3:  Paradigm Shift</p>

<ul>
    <li>Dissolve apps into coarse grain business services</li>
    <li>Package vendors offer apps as collection of services</li>
    <li>Business processes managed across services</li>
</ul>

<p>View characteristics moved up to something like Web portal.  Only things that pertain to service live within the service.  Controller stuff is at the bus level since there are things that encompass multiple services.  You need a mechanism to drive these things.  So, Controller/Presenter split in two pieces.  The stuff specific to a service stays in service, but controller moves to bus.  At this point, you can start composing services together to get new applications.</p>

<p>Early adoption is quick, but build out time between stage 1 and 2 is long flat curve.  Lots of resources go into the transition, but no big return of investment.  This is where you are most likely to have project canceled out from underneath you as a &#8220;dead-end plumbing project.&#8221;  Need to understand that Stage 1 -> 2 is a bit painful and takes time and resources.  But, once you get to stage 2, you get lots of benefits and the curve tilts up.</p>

<p>To get to Stage 3, package vendors will need to start selling services a la carte, but they don&#8217;t want to do that.  Many vendors plan is to sell you packages.  They want you to get to the point where you are only running their software in your org.  They don&#8217;t want to start competing on merit instead of integration.  Fortunately, smaller players are starting to offer services a la carte and this will force big vendors to come around as the smaller players gain traction.</p>

<p><em>Technical and Organizational Hurdles</em></p>

<p>Technical</p>

<ul>
    <li>Evolving or incomplete standards</li>
    <li>immature tools</li>
    <li>semantic mapping between apps and businesses</li>
    <li>reliability of internal and external network connections</li>
    <li>performance considerations</li>
    <li>transaction management, security</li>
    <li>versioning</li>
    <li>canonical representations</li>
</ul>

<p>Technical problems have solutions.  Organizational issues are much harder.</p>

<p>Organizational</p>

<ul>
    <li>technology learning curve (no new features for 6-8 months as transitioning)</li>
    <li>transition from app centric to service centric is a <strong>political shift</strong>.  This is the death of SOA architecture in many organizations.  You need a senior-level executive to push this through.</li>
</ul><ul>
    <li>funny example given of how a consultant played groups against each other to get SOA architecture put in place &#8211; consulting judo!</li>
</ul>
    <li>Apps have less control over data and environments</li>
    <li>increased dependencies are more complex to manage</li>
    <li>establish software development processes and best practices</li>
    <li>trap of &#8216;Enterprise Object Model&#8217; that never happened</li>


<p>Technical Issues</p>

<p>Transport Mechanism</p>

<ul>
    <li>SOA does not imply WS-*</li>
    <li>POX &#8211; Plain Old XML</li>
    <li>REST &#8211; Representational State Transfer</li>
</ul><ul>
    <li>simple semantics</li>
    <li>return plain XML</li>
    <li>light weight, intuitive protocol</li>
</ul>


<p>REST or WS-*</p>

<p>Depends on your end goal.  Amazon, for example has moved to REST.</p>

<p>REST is simplier, lightweight.</p>

<p>WS-* is more complex, but useful for application integration outside firewall.</p>

<p>You will probably end up with a combination of both of these.</p>

<p><em>Versioning Services</em></p>

<p>How do you version endpoints?</p>

<ul>
    <li>service, service_1, service_1_1?</li>
</ul>

<p>SOA solves this with document centric approach.</p>

<ul>
    <li>All information passed around in docs</li>
    <li>Service endpoint definitions never change</li>
    <li>Underlying document can change</li>
    <li>Creates loosely typed document-centric messages</li>
</ul>

<p>the doc has the data expected by the strongly-typed service, but has bunch of XML in it.  Use Strategy Design Pattern to &#8220;re-hydrate&#8221; into object at the endpoint.  Provides loose, dynamic typing at the bus level.  The endpoints can be strongly typed.</p>

<p>Logic to differentiate versions resides inside services.  Transformation strategies inside endpoint change over time while API remains stable.</p>

<p><em>Canonical Representations</em></p>

<p>Rather than provide unique interfaces between each endpoint, create canonical data representation at bus level.  Establishing these representations is the first step in SOA.  Canonical &#8211; adj, reduced to simplest and most significant form possible without loss of generality.</p>

<p>In a simple world, canonical rep. can simply be union of representations from multiple departments.  But, the real world is not this clean. Realistic view has overlapping aspects between competing views of, for example, customer.  The union has some special rules to handle differences between views.</p>

<p><em>Lessons Learned w/ Complex Apps</em></p>

<ul>
    <li>technology was never hardest part&#8230;</li>
    <li>defining business was always harder</li>
    <li>don&#8217;t adopt Enterprise Service Bus (ESB) b/c you think that it will magically &#8220;fix&#8221; a scattered business</li>
</ul><ul>
    <li>no standard on what an ESB is.  Vendors are offering whatever they have laying around and want to sell you in a big bundle and call it an ESB.</li>
    <li>Really a big Rube Goldberg machine</li>
</ul>
    <li>Integration is hard, no matter what technology</li>
    <li>Agility is key</li>
<ul>
    <li><strong>build using small, well defined pieces</strong></li>
    <li><strong>test your tech</strong> throughout development process.  Test each piece in isolation.</li>
    <li><strong>iterate over and over</strong></li>
</ul>


<p>Small iterative development and testing everywhere are critical to get these things to work.</p>

<p>We&#8217;ve chipped away at the assumptions made with CORBA and evolved considerably about our technical thinking about distributed computing.  Business thinking has also changed and evolved in a similar way.  So, SOA is not the return of CORBA.
Fin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alterzone.net/blog/2007/01/19/codemash-soa-the-next-wave-of-distributed-development-or-the-return-of-the-son-of-corba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

