1 <html>
<head><title>InfoQ: Jim Weirich Discusses Rake, the Ruby Make Tool
</title>
16 <meta http-equiv=
"pragma" content=
"no-cache">
17 <meta http-equiv=
"cache-control" content=
"no-cache">
18 <meta http-equiv=
"expires" content=
"0">
19 <meta http-equiv=
"content-type" content=
"text/html; charset=utf-8">
20 <meta name=
"copyright" content=
"© 2006 C4Media">
21 <meta name=
"author" content=
"alex[at]c4media[dot]com">
25 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"/styles/style.css">
26 <link rel=
"stylesheet" type=
"text/css" media=
"print" href=
"/styles/print.css"><!--[if IE]>
27 <link rel="stylesheet" type="text/css" media="screen" href="/styles/style-ie.css" />
30 <link rel=
"shortcut icon" href=
"/favicon.ico" type=
"image/x-icon">
32 <script src=
"/scripts/JSResource_en.js" type=
"text/javascript"></script>
33 <script src=
"/scripts/commons.js" type=
"text/javascript"></script>
34 <script src=
"/scripts/ContentSummary.js" type=
"text/javascript"></script>
35 <script src=
"/scripts/CategoryManagement.js" type=
"text/javascript"></script>
36 <script src=
"/dwr/engine.js" type=
"text/javascript"></script>
37 <script src=
"/dwr/util.js" type=
"text/javascript"></script>
38 <script src=
"/dwr/interface/UserCategoryUtil.js" type=
"text/javascript"></script>
39 <script src=
"/dwr/interface/DWRRewriteAction.js" type=
"text/javascript"></script>
43 <meta name=
"keywords" content=
"jim weirich discusses rake,Ruby,Domain Specific Languages,Build systems,Rake,Mocks,">
44 <meta name=
"description" content=
"Jim Weirich, is the Chief Scientist for EdgeCase LLC and thecreator of rake, the popular make-like build tool written in Ruby. In this interview with InfoQ, Jim disccusses the birth of rake, Domain Specific Languages, and flexmock, his mocking library.">
46 <script type=
"text/javascript" src=
"/scripts/flashdetect.js"></script>
47 <script type=
"text/javascript" src=
"/scripts/scrubber/FABridge.js"></script>
48 <script type=
"text/javascript" src=
"/scripts/scrubber/FLVScrubberInterview.js"></script></head><body onload=
"init()">
54 <script src=
"/scripts/prototype.js" type=
"text/javascript"></script>
55 <script src=
"/scripts/login.js" type=
"text/javascript"></script>
56 <script type=
"text/javascript">
57 var loginLanguage='en';
58 var loginURL='/login.action';
59 var registerURL='/reginit.action';
60 var reactivateURL='/reactivate.action';
61 var reserpasswordURL='/resetpassword.action';
63 var logoutURL='/logout.action';
64 var editUserURL='/edituser.action';
65 var aboutURL='/about.jsp';
68 <div id=
"tooltip" style=
"display: none;"></div>
69 <div id=
"loginWindow" style=
"display: none;"></div>
70 <div id=
"tagPopup" style=
"display: none;"></div>
72 <h1 class=
"logo"><a style=
"" href=
"#">InfoQ
</a></h1>
83 <p class=
"skip"><a style=
"" href=
"#content">Skip to Content
</a></p>
85 <div id=
"quote"><p>Tracking change and innovation in the enterprise software development community
</p></div>
87 <div style=
"margin: 0pt 0pt 2px; padding: 0pt; float: left; width: 29%; position: relative;">
88 <p style=
"margin: 0pt; padding: 6px 37px 0pt 0pt; float: right;">
96 En |
<a href=
"/cn/">中文
</a> |
<a href=
"/jp/">日本語
</a>
99 <p style=
"margin: 0pt; padding: 6px 9px; text-align: left;">
100 <a href=
"/articles/InfoQ-Changelog" style=
"text-decoration: none; color: black;">Version
1.4</a>
108 <div id=
"sidebar-wrapper">
116 <p class=
"r-logo"><a href=
"/">InfoQ
</a></p>
133 <span style=
"font-size: x-small;">
137 320,
944 May unique visitors
150 <div class=
"box-simple">
151 <div class=
"box-simple-top"></div>
152 <div id=
"mainLoginArea" class=
"box-simple-content">
156 <li><a href=
"/reginit.action">Register
</a></li>
157 <li><a href=
"javascript:void(0)" onclick=
"javascript:showLoginWindow(this,ALIGN_LEFT,new Function('void(0);'));">Login
</a></li>
158 <li><a href=
"/about.jsp">About us
</a></li>
164 <li><a href=
"/rss/rss.action?token=JjnFl96mlUojLN35SZV6ruxkzcQU26Qx">Personal feed
<img src=
"/styles/i/btn-rss-blue.gif" alt=
"RSS Feed"></a></li>
166 <li><a href=
"/">Home
</a></li>
170 <div class=
"box-simple-bottom"></div>
181 <div id=
"mainCommunitiesArea" class=
"box">
182 <h2>Your Communities
</h2>
183 <div class=
"top-corners"><div></div></div>
184 <div class=
"box-content">
185 <div class=
"box-content-2">
191 <script language=
"JavaScript">
192 var communityChangeMessage = 'Your new preferences will be used starting with the next refresh.';
195 <div id=
"communities">
198 <li><input name=
"java" value=
"true" checked=
"checked" id=
"community1" onclick=
"includeExcludeCommunity(this);" type=
"checkbox">
199 <a href=
"/java/">Java
</a></li>
201 <li><input name=
"dotnet" value=
"true" checked=
"checked" id=
"community4" onclick=
"includeExcludeCommunity(this);" type=
"checkbox">
202 <a href=
"/dotnet/">.NET
</a></li>
204 <li><input name=
"ruby" value=
"true" checked=
"checked" id=
"community5" onclick=
"includeExcludeCommunity(this);" type=
"checkbox">
205 <a href=
"/ruby/">Ruby
</a></li>
207 <li><input name=
"soa" value=
"true" checked=
"checked" id=
"community2" onclick=
"includeExcludeCommunity(this);" type=
"checkbox">
208 <a href=
"/soa/">SOA
</a></li>
210 <li><input name=
"agile" value=
"true" checked=
"checked" id=
"community3" onclick=
"includeExcludeCommunity(this);" type=
"checkbox">
211 <a href=
"/agile/">Agile
</a></li>
213 <li><input name=
"architecture" value=
"true" checked=
"checked" id=
"community1389" onclick=
"includeExcludeCommunity(this);" type=
"checkbox">
214 <a href=
"/architecture/">Architecture
</a></li>
218 <div id=
"communitiesMessage"></div>
220 <div class=
"bottom-corners"><div></div></div>
231 <script type=
"text/javascript">
233 var searchString = document.getElementById("searchId").value;
234 document.getElementById("searchTerm").value = searchString + " site:www.infoq.com";
235 document.getElementById("submitForm").submit();
238 function clearSearchText(){
239 var searchtext = document.getElementById("searchId").value
240 if(searchtext==JSResource.search){
241 document.getElementById("searchId").
value="";
245 <form action=
"http://www.google.com/search" method=
"get" id=
"submitForm" target=
"_blank">
246 <input name=
"q" id=
"searchTerm" type=
"hidden">
249 <div style=
"background: transparent url(/images/bg-search.gif) no-repeat scroll 0pt 4px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
250 <input name=
"search" id=
"searchId" value=
"Search" style=
"border: 0px none ; padding: 0pt 9px; width: 85%; background-color: transparent; height: 19px;" onclick=
"clearSearchText();" onkeypress=
"if ((event.which && event.which == 13)||(event.keyCode && event.keyCode == 13)){doSearch();}" onblur=
"if(this.value=='') this.value=JSResource.search" type=
"text">
251 <a href=
"#" onclick=
"doSearch();return false;"><img src=
"/images/btn-search.gif" alt=
"Search"></a>
259 <div class=
"box-simple">
260 <div class=
"box-simple-top"></div>
261 <div id=
"featuredTopics" class=
"box-simple-content">
268 <h2>Featured Topics
</h2>
271 <li><a href=
"/virtualization/">Virtualization
</a></li>
272 <li><hr style=
"border: 0pt none ; width: 100%; height: 1px; color: rgb(200, 200, 200); background-color: rgb(200, 200, 200);"></li>
273 <li><a href=
"/performance-scalability/">Performance
& Scalability
</a></li>
274 <li><hr style=
"border: 0pt none ; width: 100%; height: 1px; color: rgb(200, 200, 200); background-color: rgb(200, 200, 200);"></li>
275 <li><a href=
"/rest/">REST
& Web Architecture
</a></li>
276 <li><hr style=
"border: 0pt none ; width: 100%; height: 1px; color: rgb(200, 200, 200); background-color: rgb(200, 200, 200);"></li>
277 <li><a href=
"/governance/">SOA Governance
</a></li>
284 <div class=
"box-simple-bottom"></div>
294 <div class=
"box-simple">
295 <div class=
"box-simple-top"></div>
296 <div class=
"box-simple-content adsTower2" id=
"leftbartextlinks">
297 <div style=
"background: white none repeat scroll 0%; width: 120px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
304 <h3>Sponsored Links
</h3>
307 <p><a id=
"tl-53" onclick=
"Ads.clickTextLink(this, 53);" href=
"http://www.projectzero.org/" target=
"_blank">Create
REST
<br>-enabled
Web
Apps
</a><br>with
Project
Zero
<br>from
IBM.
</p>
309 <p><a id=
"tl-76" onclick=
"Ads.clickTextLink(this, 76);" href=
"http://www-306.ibm.com/software/webservers/appserv/extend/virtualenterprise/" target=
"_blank">IBM WebSphere
</a><br>Virtualize apps
<br>to lower costs,
<br>Increase agility
<br><a id=
"tl-76" onclick=
"Ads.clickTextLink(this, 76);" href=
"http://www-306.ibm.com/software/webservers/appserv/extend/virtualenterprise/" target=
"_blank">Learn more!
</a></p>
311 <p>Terracotta:
<br>Scale your
<br>Apps w/ease
<br>Offload the DB:
<br><a id=
"tl-79" onclick=
"Ads.clickTextLink(this, 79);" href=
"http://www.terracotta.org/confluence/display/orgsite/Download" target=
"_blank">Learn More!
</a></p>
316 <div class=
"box-simple-bottom"></div>
320 <div class=
"box-simple">
321 <div class=
"box-simple-top"></div>
322 <div class=
"box-simple-content">
323 <p class=
"banner" id=
"bannerparagraph">
330 <a class=
"towerAdLeft" id=
"sk-59" href=
"http://www.versionone.com/getfreeteam" onclick=
"Ads.clickSkyscraper(this, 59 );" target=
"_blank"><img style=
"display: none;" src=
"/ads/VersionOneBanner.gif"></a>
336 <div class=
"box-simple-bottom"></div>
339 <div class=
"box-simple">
340 <div class=
"box-simple-top"></div>
341 <div class=
"box-simple-content">
343 <img style=
"display: none;" src=
"/styles/i/banners/books.gif" usemap=
"#booksmap" alt=
"">
344 <map name=
"booksmap"><area href=
"http://www.infoq.com/minibooks/scrum-xp-from-the-trenches" alt=
"Scrum and XP from the Trenches" title=
"Scrum and XP from the Trenches" shape=
"rect" coords=
"0,75,120,100"><area href=
"http://www.infoq.com/minibooks/starting-struts2" alt=
"Starting Struts 2" title=
"Starting Struts 2" shape=
"rect" coords=
"0,110,120,125"><area href=
"http://www.infoq.com/minibooks/agile-patterns" alt=
"Agile Patterns: The Technical Cluster" title=
"Agile Patterns: The Technical Cluster" shape=
"rect" coords=
"0,130,120,160"><area href=
"http://www.infoq.com/minibooks/ruby" alt=
"Mr. Neighborly's Humble Little Ruby Book" title=
"Mr. Neighborly's Humble Little Ruby Book" shape=
"rect" coords=
"0,165,120,205"><area href=
"http://www.infoq.com/minibooks/grails" alt=
"Getting Started with Grails" title=
"Getting Started with Grails" shape=
"rect" coords=
"0,210,120,235"><area href=
"http://www.infoq.com/minibooks/domain-driven-design-quickly" alt=
"Domain Driven Design Quickly" title=
"Domain Driven Design Quickly" shape=
"rect" coords=
"0,245,120,270"><area href=
"http://www.infoq.com/minibooks/scrum-checklists" alt=
"Scrum Checklists" title=
"Scrum Checklists" shape=
"rect" coords=
"0,275,120,290"><area href=
"http://www.infoq.com/minibooks/enterprise-soa" alt=
"Enterprise SOA Adoption Strategies" title=
"Enterprise SOA Adoption Strategies" shape=
"rect" coords=
"0,300,120,323"><area href=
"http://www.infoq.com/minibooks/vsnettt" alt=
"Visual Studio .NET Tips and Tricks" title=
"Visual Studio .NET Tips and Tricks" shape=
"rect" coords=
"0,330,120,355"><area href=
"http://www.infoq.com/minibooks/JTDS" alt=
"Java Transaction Design Strategies" title=
"Java Transaction Design Strategies" shape=
"rect" coords=
"0,365,120,390">
358 <div class=
"box-simple-bottom"></div>
362 <div class=
"sidebar-bottom"></div>
367 <div id=
"clearer"></div>
371 <div id=
"content-wrapper">
378 <div class=
"top-corners"><div></div></div>
379 <div class=
"box-content">
380 <div class=
"box-content-2">
381 <div class=
"box-content-3">
383 <div style=
"padding: 3px 0pt; clear: both; width: 100%; background-color: rgb(254, 255, 191); margin-bottom: 10px; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px;">
384 <b>Good News:
</b> We have re-worked our video infrastructure to provide more reliable service. Please email bugs at infoq.com with any problems.
387 <h1>Jim Weirich Discusses Rake, the Ruby Make Tool
</h1>
391 <strong>Jim Weirich
</strong>
394 <strong>Werner Schuster
</strong>
397 Apr
17,
2008 03:
12 AM
400 <dt class=
"community">Community
</dt>
402 <dd><a href=
"/ruby" name=
"ruby" id=
"5" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby
</a></dd>
404 <dt class=
"topics">Topics
</dt>
406 <dd><a href=
"/dsl" name=
"dsl" id=
"176" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Domain Specific Languages
</a>,
</dd>
408 <dd><a href=
"/builds" name=
"builds" id=
"12" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Build systems
</a></dd>
411 <dt class=
"topics">Tags
</dt>
413 <dd><a href=
"/rake" name=
"rake" id=
"178" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Rake
</a>,
</dd>
415 <dd><a href=
"/mocks" name=
"mocks" id=
"288" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Mocks
</a></dd>
420 <script type=
"text/javascript">
421 var TIMES = new Array(
0,
94,
214,
220,
250,
309,
328,
365,
484,
630,
761,
838,
852,
859,
919,
981,
1012,
1177,
1239,
1378,
1472,
1483,
1616,
1640,
1658,
1720,
1731,
1771,
1868,
1897,
1900,
1915);
422 var ACTION_IMG_EXPAND = '/styles/i/icon-open.gif';
423 var ACTION_IMG_COLLAPSE = '/styles/i/icon-collapse.gif';
424 var jsclassref='aHR0cDovL2Zsdi50aHJ1aGVyZS5uZXQvaW50ZXJ2aWV3cy9KaW1XZWlyaWNoLmZsdg==';
429 <div id=
"interviewContent" style=
"width: 100%;">Please install
<a target=
"_blank" href=
"http://www.adobe.com/go/getflashplayer">Flash player
</a>.
</div>
431 <script type=
"text/javascript">
432 FlashDetect.check(
9, "interviewContent", "The interview player requires
<a href='http://www.macromedia.com/go/getflashplayer' target='_blank'
>Flash version
9</a>.", "Please install
<a target='_blank' href='http://www.adobe.com/go/getflashplayer'
>Flash player
</a>.");
435 <div style=
"display: block; margin-top: 15px;">
436 <div style=
"display: inline; margin-right: 0px;" align=
"right">
446 <a target=
"_blank" href=
"" onclick=
"this.href='http://digg.com/submit?phase=2&url=' + escape(window.location)" rel=
"nofollow">digg+
</a>,
449 <a target=
"_blank" href=
"" onclick=
"this.href='http://reddit.com/submit?url=' + escape(window.location) + '&title=' + escape('Jim Weirich Discusses Rake, the Ruby Make Tool ')" rel=
"nofollow">reddit+
</a>,
452 <a target=
"_blank" href=
"" onclick=
"this.href='http://del.icio.us/post?url=' + escape(window.location) + '&title=' + escape('Jim Weirich Discusses Rake, the Ruby Make Tool ')" rel=
"nofollow">del.icio.us+
</a>,
455 <a target=
"_blank" href=
"" onclick=
"this.href='http://www.dzone.com/links/add.html?url=' + escape(window.location) + '&title=' + escape('Jim Weirich Discusses Rake, the Ruby Make Tool ')" rel=
"nofollow">dzone+
</a>,
458 <a target=
"_blank" href=
"" onclick=
"this.href='http://www.facebook.com/share.php?u=' + escape(window.location)" rel=
"nofollow">facebook+
</a>
473 <div class=
"vendor-content-box">
475 <h3>Related
<span class=
"vendor">Vendor
</span>Content
</h3>
482 <a href=
"/vendorcontent/show.action?vcr=213" target=
"_blank">
483 Introducing Project Zero: Building RESTful services for your Web application
491 <a href=
"/vendorcontent/show.action?vcr=294">
492 Agile Tool Evaluation Guide
500 <a href=
"/vendorcontent/show.action?vcr=293">
501 Evaluation Guide: Is Your SCM Tool Ready for Agile?
509 <a href=
"/vendorcontent/show.action?vcr=312" target=
"_blank">
510 IBM software architect eKit: Grady Booch podcast, whitepapers, articles
518 <a href=
"/vendorcontent/show.action?vcr=313" target=
"_blank">
519 IBM Agile Development eKit: Free Articles, Expert Q
&A, Educational Resources
540 <script type=
"text/javascript">
541 var replyEnabled=true;
544 var previewText='Preview';
545 var pleaseWait='Please Wait ...';
547 var postMessage='Post Message';
548 var errorSubject='Please enter a subject.';
549 var errorBody='You can not post a blank message. Please type your message and try again.';
551 var goBackOrEdit='Go Back/Edit';
554 var stopWatchText='Stop Watching Thread';
555 var startWatchText='Watch Thread';
556 var descending='false';
558 var postAddress= ctxPath + '/forum/post!post.action?language=' + 'en';
559 var postAddWatches= ctxPath + '/forum/watches!add.action';
560 var postRemoveWatches= ctxPath + '/forum/watches!remove.action';
564 <script src=
"/scripts/forum.js?rev=new" type=
"text/javascript"></script>
566 <div class=
"comments-header">
570 <a href=
"javascript:void(0)" class=
"comment-reply" onclick=
"javascript:loggedIn?replyFromTooltip(21380,true):showLoginWindow(this,ALIGN_RIGHT,new Function('replyFromTooltip(21380,true)'));">Reply
</a>
574 <span id=
"newMessage" style=
"display: none;"></span>
576 <span id=
"replyTree_21380"></span>
577 <span id=
"replyMessage_21380"></span>
580 <div class=
"comments-sort">
581 <span id=
"comments-sort" style=
"display: none;">
584 <a class=
"comment-sort-desc" href=
"javascript:changeOrder(2);">Sort by date descending
</a>
589 <ol class=
"comments">
594 <span id=
"lastMessages"></span>
595 <span id=
"replyFlatMessage_21380"></span>
601 <div class=
"box-bottom"></div>
604 <div class=
"bottom-corners"><div></div></div>
620 <!-- right side start -->
623 <div id=
"right-wrapper">
626 <h2>Exclusive Content
</h2>
627 <ul class=
"menu" id=
"tabsmenu">
628 <li id=
"tab_ALL_EXCEPT_NEWS" class=
"m-ALL_EXCEPT_NEWS-on"><a href=
"#" onclick=
"ContentSummary.switchTab('ALL_EXCEPT_NEWS');return false;">All
</a></li>
629 <li id=
"tab_ARTICLE" class=
"m-ARTICLE-off"><a href=
"#" onclick=
"ContentSummary.switchTab('ARTICLE');return false;">Articles
</a></li>
630 <li id=
"tab_PRESENTATION" class=
"m-PRESENTATION-off"><a href=
"#" onclick=
"JSResource.presentationsTab();return false;">Presentations
</a></li>
631 <li id=
"tab_INTERVIEW" class=
"m-INTERVIEW-off"><a href=
"#" onclick=
"JSResource.interviewsTab();return false;">Interviews
</a></li>
632 <li id=
"tab_MINIBOOK" class=
"m-MINIBOOK-off"><a href=
"#" onclick=
"JSResource.minibooksTab();return false;">Minibooks
</a></li>
634 <div class=
"top-corners"><div></div></div>
636 <div class=
"box-content">
637 <div class=
"box-content-2">
638 <div id=
"rightbarcontentbox" class=
"box-content-3">
647 <form id=
"tabstateform" action=
"">
648 <input id=
"startIndex" name=
"startIndex" value=
"0" type=
"hidden">
649 <input id=
"selectedTab" name=
"selectedTab" value=
"ALL_EXCEPT_NEWS" type=
"hidden">
650 <input id=
"rightBarLanguage" name=
"language" value=
"en" type=
"hidden">
658 <h1 class=
"ex-interviews"><a href=
"/interviews/bryant-ruby-maglev-gemstone">Avi Bryant on MagLev and GemStone
</a></h1>
660 <p class=
"image"><a href=
"/interviews/bryant-ruby-maglev-gemstone"><img src=
"/resource/interviews/bryant-ruby-maglev-gemstone/en/smallimage/AviBryant.jpg" alt=
""></a></p>
662 <p>Avi Bryant talks about working on MagLev, a Ruby implementation built by GemStone. Avi explains the reasons for MagLev, the merits of GemStone's distributed OODB features, and more.
</p>
663 <ul class=
"info link-col">
666 <a href=
"/architecture" name=
"architecture" id=
"1,389" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture
</a>,
668 <a href=
"/ruby" name=
"ruby" id=
"5" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby
</a>,
671 <li class=
"author"><span> </span>Jun
13,
2008,
</li>
673 <li class=
"comments">
674 <a href=
"/interviews/bryant-ruby-maglev-gemstone"><span> </span>
682 <div class=
"clearer"></div>
688 <h1 class=
"ex-articles"><a href=
"/articles/rising-agile-spirit-numbers">Using Numbers to Communicate - in the Spirit of Agile
</a></h1>
690 <p class=
"image"><a href=
"/articles/rising-agile-spirit-numbers"><img src=
"/resource/articles/rising-agile-spirit-numbers/en/smallimage/Spirit_of_Agile_small.jpg" alt=
""></a></p>
692 <p>Developers and the business use numbers differently, leading to poor communication. Here the "Spirit of Agile" tells a developer the trick: translate non-computational issues into number language.
</p>
693 <ul class=
"info link-col">
696 <a href=
"/agile" name=
"agile" id=
"3" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile
</a>,
699 <li class=
"author"><span> </span>Jun
13,
2008,
</li>
701 <li class=
"comments">
702 <a href=
"/articles/rising-agile-spirit-numbers"><span> </span>
710 <div class=
"clearer"></div>
716 <h1 class=
"ex-presentations"><a href=
"/presentations/Agile-Adoption-Joseph-Pelrine">Dealing With the Organizational Challenges of Agile Adoption
</a></h1>
718 <p class=
"image"><a href=
"/presentations/Agile-Adoption-Joseph-Pelrine"><img src=
"/resource/presentations/Agile-Adoption-Joseph-Pelrine/en/smallimage/JPelrine.jpg" alt=
""></a></p>
720 <p>In this presentation filmed during QCon London
2007, Joseph Pelrine talks about the challenges faced by organizations trying to adopt Agile methods.
</p>
721 <ul class=
"info link-col">
724 <a href=
"/agile" name=
"agile" id=
"3" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile
</a>,
727 <li class=
"author"><span> </span>Jun
12,
2008,
</li>
729 <li class=
"comments">
730 <a href=
"/presentations/Agile-Adoption-Joseph-Pelrine"><span> </span>
738 <div class=
"clearer"></div>
744 <h1 class=
"ex-articles"><a href=
"/articles/ddd-in-practice">Domain Driven Design and Development In Practice
</a></h1>
746 <p class=
"image"><a href=
"/articles/ddd-in-practice"><img src=
"/resource/articles/ddd-in-practice/en/smallimage/imagesmall.gif" alt=
""></a></p>
748 <p>In this article, Srini Penchikala discusses Domain Driven Design from a practical stand-point. The article looks at architectural guidelines and best practices that can be used in a DDD project.
</p>
749 <ul class=
"info link-col">
752 <a href=
"/architecture" name=
"architecture" id=
"1,389" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture
</a>,
754 <a href=
"/java" name=
"java" id=
"1" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java
</a>,
757 <li class=
"author"><span> </span>Jun
12,
2008,
</li>
759 <li class=
"comments">
760 <a href=
"/articles/ddd-in-practice"><span> </span>
770 <div class=
"clearer"></div>
776 <h1 class=
"ex-presentations"><a href=
"/presentations/colyer-server-side-osgi">Server Side OSGi
</a></h1>
778 <p class=
"image"><a href=
"/presentations/colyer-server-side-osgi"><img src=
"/resource/presentations/colyer-server-side-osgi/en/smallimage/AdrianColyer.jpg" alt=
""></a></p>
780 <p>Adrian Colyer describes OSGi, OSGi implementations, modularity, versioning, operational control, server-side OSGi, design considerations, using existing libraries, and Spring Dynamic Modules.
</p>
781 <ul class=
"info link-col">
784 <a href=
"/java" name=
"java" id=
"1" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java
</a>,
787 <li class=
"author"><span> </span>Jun
11,
2008,
</li>
789 <li class=
"comments">
790 <a href=
"/presentations/colyer-server-side-osgi"><span> </span>
798 <div class=
"clearer"></div>
804 <h1 class=
"ex-presentations"><a href=
"/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney">Agile Architecture Is Not Fragile Architecture
</a></h1>
806 <p class=
"image"><a href=
"/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney"><img src=
"/resource/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney/en/smallimage/coplienhenney.jpg" alt=
""></a></p>
808 <p>In this presentation filmed during QCon
2007, Coplien and Henney describe how to start with enough architecture to ensure long term success of an Agile developed project.
</p>
809 <ul class=
"info link-col">
812 <a href=
"/architecture" name=
"architecture" id=
"1,389" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture
</a>,
814 <a href=
"/agile" name=
"agile" id=
"3" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile
</a>,
817 <li class=
"author"><span> </span>Jun
10,
2008,
</li>
819 <li class=
"comments">
820 <a href=
"/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney"><span> </span>
830 <div class=
"clearer"></div>
836 <h1 class=
"ex-articles"><a href=
"/articles/nuescheler-jcr-rest">David Nuescheler on JCR and REST
</a></h1>
838 <p class=
"image"><a href=
"/articles/nuescheler-jcr-rest"><img src=
"/resource/articles/nuescheler-jcr-rest/en/smallimage/files.jpg" alt=
""></a></p>
840 <p>In this interview, Day CTO and JCR Spec Lead David Nuescheler discusses JCR, the Java Content Repository standard, its connection to REST, and the Sling web framework.
</p>
841 <ul class=
"info link-col">
844 <a href=
"/java" name=
"java" id=
"1" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java
</a>,
846 <a href=
"/soa" name=
"soa" id=
"2" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">SOA
</a>,
849 <li class=
"author"><span> </span>Jun
10,
2008,
</li>
851 <li class=
"comments">
852 <a href=
"/articles/nuescheler-jcr-rest"><span> </span>
862 <div class=
"clearer"></div>
868 <h1 class=
"ex-articles"><a href=
"/articles/nasdaq-case-study-air-and-s3">InfoQ Case Study: NASDAQ Market Replay
</a></h1>
870 <p class=
"image"><a href=
"/articles/nasdaq-case-study-air-and-s3"><img src=
"/resource/articles/nasdaq-case-study-air-and-s3/en/smallimage/image_amazon_air.jpg" alt=
""></a></p>
872 <p>In this case study InfoQ reviews the usage of Adobe AIR and Amazon Simple Storage Service (S3) in the NASDAQ Market Replay application.
</p>
873 <ul class=
"info link-col">
876 <a href=
"/architecture" name=
"architecture" id=
"1,389" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture
</a>,
878 <a href=
"/java" name=
"java" id=
"1" onclick=
"try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java
</a>,
881 <li class=
"author"><span> </span>Jun
09,
2008,
</li>
883 <li class=
"comments">
884 <a href=
"/articles/nasdaq-case-study-air-and-s3"><span> </span>
894 <div class=
"clearer"></div>
898 <ul class=
"newsnav link-col">
903 <li><a href=
"#" onclick=
"ContentSummary.setStartIndex('8');return false;">Older
></a></li>
910 <div class=
"box-bottom"></div>
913 <div class=
"bottom-corners"><div></div></div>
917 <script type=
"text/javascript">
918 ContentSummary.setSelectedTab('en');
923 <!-- right side end -->
926 <div class=
"clearer"></div>
937 InfoQ.com and all content copyright ©
2006-
2007 C4Media Inc.
938 InfoQ.com hosted at
<a href=
"http://www.contegix.com/">Contegix
</a>, the best ISP we've ever worked with.
939 <a href=
"/PrivacyPolicy.jsp">Privacy policy
</a>
951 <script type=
"text/javascript">
952 var includeName = 'Include';
953 var excludeName = 'Exclude';
954 var includeHint = 'You can include this category.';
955 var excludeHint = 'You can exclude this category.';
956 var excludeCategoryMessage = 'You can re-include from your profile personalization, or right now.
<BR />';
957 var viewallCategoryMessage = 'You can view all items that belong to this category.';
958 var busyMessage = 'Please wait...';
959 var contextPath = '' + '/';
960 var viewallCategoryPath= 'en';
961 var includeExcludeLink= true;