<?xml version="1.0" encoding="utf-8"?>

			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>Brian Kotek: Inversion of Control - Model-Glue</title>
			<link>http://www.briankotek.com/blog/index.cfm</link>
			<description>Brian Kotek on ColdFusion, Flex, AIR, Java, Groovy, Design Patterns, and Object-Oriented Programming</description>
			<language>en-us</language>
			<pubDate>Tue, 07 Sep 2010 10:46:52 -0700</pubDate>
			<lastBuildDate>Fri, 16 Nov 2007 10:57:00 -0700</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>brian428@briankotek.com</managingEditor>
			<webMaster>brian428@briankotek.com</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author></itunes:author>
			<itunes:owner>
				<itunes:email>brian428@briankotek.com</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			
			<itunes:explicit>no</itunes:explicit>
			
			
			
			
			
			<item>
				<title>Joe Rinehart on Architectural Relationships Between Model-Glue and Cairngorm</title>
				<link>http://www.briankotek.com/blog/index.cfm/2007/11/16/Joe-Rinehart-on-Architectural-Relationships-Between-ModelGlue-and-Cairngorm</link>
				<description>
				
				Joe has posted a nice diagram that &lt;a href=&quot;http://www.model-glue.com/blog/index.cfm?mode=entry&amp;entry=445B5A72-3048-55C9-4318398DC6AD99E5&quot; target=&quot;_blank&quot;&gt;shows how the pieces of a Model-Glue application relate to the pieces of a Cairngorm application&lt;/a&gt;. As someone trying to learn Cairngorm, this is pretty useful. To be honest, from a noob perspective, Cairngrom seems to have a lot of layers and a lot of code, and I was unsure of what the actual point to these layers are. This diagram helped clear up some of the confusion.
				
				</description>
				
				
				<category>Model-Glue</category>
				
				<category>Flex</category>
				
				<category>Cairngorm</category>
				
				<pubDate>Fri, 16 Nov 2007 10:57:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2007/11/16/Joe-Rinehart-on-Architectural-Relationships-Between-ModelGlue-and-Cairngorm</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Get Model-Glue Training, With ColdSpring, Transfer and Reactor Too</title>
				<link>http://www.briankotek.com/blog/index.cfm/2007/11/7/Get-ModelGlue-Training-With-ColdSpring-Transfer-and-Reactor-Too</link>
				<description>
				
				Just a quick note that Doug recently posted about &lt;a href=&quot;http://www.alagad.com/go/training/enterprise-coldfusion/enterprise-coldfusion-with-model-glue&quot; target=&quot;_blank&quot;&gt;a sweet price decrease for his first Model-Glue training class&lt;/a&gt;. Setting up a training business is difficult so the price drop doesn&apos;t surprise me at all. You really need to build up a base of happy students who spread the word, and in the beginning that means you need appealing pricing.

Well, this is good news for anyone interested in building their ColdFusion skill set. Not only will you get a good dose of Model-Glue, from the basics on up, but there are course sections on CFCUnit,  ColdSpring, Transfer, and Reactor as well. Given the number of questions on various lists and blogs about MVC, dependency injection, object-relational mapping, and general object-oriented programming concepts, this seems like a great way to get your head around a lot of topics quickly and efficiently. Just because some of us long-time CF&apos;ers had to beat our heads against he wall trying to learn things doesn&apos;t mean you have to! (I could also tell you about walking to school in the snow uphill both ways...)

Anyway, the upshot is that anyone in the midst of trying to learn these things should definitely have a look at the class. $800 is just really darn cheap, and I wouldn&apos;t expect it to stay at that kind of price point for very long. Get in while the getting is good.
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>Unit Testing</category>
				
				<category>OOP CF</category>
				
				<category>Model-Glue</category>
				
				<category>ColdSpring</category>
				
				<category>Reactor</category>
				
				<pubDate>Wed, 07 Nov 2007 10:49:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2007/11/7/Get-ModelGlue-Training-With-ColdSpring-Transfer-and-Reactor-Too</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Using ANT and ColdFusion to Emulate Rails Generators</title>
				<link>http://www.briankotek.com/blog/index.cfm/2007/7/23/Using-ANT-and-ColdFusion-to-Emulate-Rails-Generators</link>
				<description>
				
				One of the nice things about Rails is how it can automatically spit out common code for you. For example, if you need a new Model or Controller, Rails can spit one out for you, ready to be customized, with one line of code.

I&apos;ve thought for a while that similar capabilities could be obtained using Apache ANT, which comes built in to Eclipse or can be downloaded separately and run from the command prompt. Last night I had a few minutes so I decided to try it for fun. And it seems to work pretty well! 

For example, in a Model-Glue app, I could execute an ANT task called create_controller.xml. What this would do is prompt me for the name of the controller. Say I enter &quot;StoreController&quot;. Then it copies the Controller from the Model-Glue application template folder into my application&apos;s controller folder and names it StoreController.cfc. Then it embeds new XML into the Model-Glue config XML file like:

&lt;code&gt;
&lt;controller name=&quot;StoreController&quot; type=&quot;deli.controller.Controller&quot;&gt;
	&lt;message-listener message=&quot;OnRequestStart&quot; function=&quot;OnRequestStart&quot; /&gt;
	&lt;message-listener message=&quot;OnQueueComplete&quot; function=&quot;OnQueueComplete&quot; /&gt;
	&lt;message-listener message=&quot;OnRequestEnd&quot; function=&quot;OnRequestEnd&quot; /&gt;
&lt;/controller&gt;
&lt;/code&gt;

into the controllers block. It does this by doing some replace commands on the Model-Glue XML, as well as replacing the controller name and the application name. It does the same sort of replace within the CFC to embed the proper name and path.

I also did this with a create_event.xml file. This prompts me for the name of the event, and a view file name, and then creates the XML for the event, copies a view template into my views folder, and name it to match the view file name I specified.

If you&apos;ve used the Model-Glue application template to create a new application, you know it already does some copying of files and some replacing. It wouldn&apos;t be hard to imagine it also copying and creating a set of build XML files to perform common tasks like this. These build XML files would all be set up specific to the newly generated app, with the proper paths and application name already embedded within them. And obviously the same sort of thing could be done with any framework (ColdBox, Fusebox, Mach-II, etc.)

These two examples were quite simple to create. And while they don&apos;t save a huge amount of time, it does save some time. I don&apos;t have to worry about creating new view or controller stub files, or creating the base XML in the config file. The build XML will do this for me in about one second. I could imagine making these do much more complex things if necessary, since ANT has a very large set of tasks that it can perform, including RegEx processing and replacement.

I was curious to see if anyone had thought about something like this before, and if this sounds like it would be useful.
				
				</description>
				
				
				<category>CFEclipse</category>
				
				<category>ColdFusion</category>
				
				<category>Model-Glue</category>
				
				<pubDate>Mon, 23 Jul 2007 08:42:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2007/7/23/Using-ANT-and-ColdFusion-to-Emulate-Rails-Generators</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>The Bookstore App Meets ColdFusion 8 (aka Operation: AJAX)</title>
				<link>http://www.briankotek.com/blog/index.cfm/2007/7/2/The-Bookstore-App-Meets-ColdFusion-8</link>
				<description>
				
				I&apos;ve been playing with the new AJAX capabilities in ColdFusion 8, and I&apos;m impressed. They&apos;ve really made it easy to add AJAX functionality to an application. As a personal experiment, I decided to try converting an existing page-based app into a single-page, AJAX-driven one. So as usual, I brushed the dust off of my tried-and-true sample bookstore application and went to town.

Some of you might have seen the bookstore app before; I&apos;ve had it on my site for quite a long time. It&apos;s gone through Fusebox 3, FuseQ, Fusebox 4, Fusebox 5, Mach-II, and Model-Glue:Unity versions. It was also the basis for my &quot;Framework-Agnostic Models&quot; presentation at this year&apos;s Frameworks Conference.

I was quite stunned to find that converting the Fusebox 5 version into an AJAX application took about 2 hours. Yes, 2 hours. Part of the reason it was straightforward was that the app already leveraged self-contained content blocks for each page element. Basically, each of the sidebar elements, the main page content, and the menu are all CFDIV blocks now. Each one updates on its own, asynchronously, using the built-in AJAX goodies in CF8.

It was interesting to see how my development approach had to change to support a more event-driven GUI. Each link or form is tied to a JavaScript event handler that determines which content elements to update via AJAX. I can see now how doing complex GUI programming is a real challenge, because this was only 8 or 10 events. I think I have some learning to do when it comes to patterns that apply more to GUI development than the patterns I&apos;m used to dealing with in the model.

In any event, I&apos;ve added this AJAX-ified version of the bookstore to the Framework-Agnositc Models Code and Presentation .zip file in the right sidebar. If anyone is interested in having a look, please do and let me know what you think.
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Model-Glue</category>
				
				<category>ColdSpring</category>
				
				<category>Reactor</category>
				
				<category>Mach-II</category>
				
				<category>Fusebox</category>
				
				<pubDate>Mon, 02 Jul 2007 08:42:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2007/7/2/The-Bookstore-App-Meets-ColdFusion-8</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Model-Glue:Unity = Wicked</title>
				<link>http://www.briankotek.com/blog/index.cfm/2006/6/16/ModelGlueUnity--Wicked</link>
				<description>
				
				I had the chance to play with the Alpha, then the Beta, and watched Joe&apos;s presentation on Model-Glue:Unity yesterday. All I can say is this kicks ass. A stunning example of what happens when a sharp guy with vision combines three great frameworks together and creates something amazing. I liked his discussion of what he called (I believe) &quot;2nd generation&quot; and &quot;3rd generation&quot; frameworks, where the 2nd generation helps you eliminate duplication at the file level, but the 3rd generation helps you eliminate duplication at the process level (for example, handling CRUD for ALL of your tables in an abstracted way). I won&apos;t go into more detail because there are already some &lt;a href=&quot;http://www.remotesynthesis.com/blog/index.cfm/2006/6/15/ModelGlue-Unity-Presentation-Notes&quot; target=&quot;_blank&quot;&gt;other blog posts&lt;/a&gt; that cover this. Suffice to say that I continue to be floored by what the CF community is pumping out nowadays. Fusebox 5, Reactor, ColdSpring...this stuff is just getting ridiculously awesome. :-)
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>Model-Glue</category>
				
				<pubDate>Fri, 16 Jun 2006 10:32:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2006/6/16/ModelGlueUnity--Wicked</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Model-Glue / ColdSpring / Reactor Bookstore</title>
				<link>http://www.briankotek.com/blog/index.cfm/2006/4/14/ModelGlue--ColdSpring--Reactor-Bookstore</link>
				<description>
				
				Since I&apos;d gone most of the way with the last iteration of my bookstore demo application by porting it to Model-Glue and ColdSpring, I figured why not keep going. This version adds the use of the Reactor ORM API.

The only catch now is that in order to use Reactor, I had to drop my &quot;fake query&quot; approach and move to using a real RDBMS. I chose SQL Server because I have it installed locally and its fairly common. The zip file includes the SQL script and some CSV files with the data in it. There are only three tables and a few rows of data, so it should be trivial for users of other RDBMSs to set it up. In lieu of that, I hope that the code itself will offer some help to users considering any or all of these frameworks.

The file is attached to this post (I&apos;m trying out the Blog enclosures), but it is also always available in the Links pod in the right sidebar.

A readme is included but it&apos;s fairly straightforward: set up Model-Glue 1.1, set up ColdSpring, set up Reactor, and unzip the app to your web root. I&apos;d be interested to hear from both new users as well as people with experience in these new frameworks. Please let me know what you think! Thanks.
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Model-Glue</category>
				
				<category>ColdSpring</category>
				
				<category>Reactor</category>
				
				<pubDate>Fri, 14 Apr 2006 07:00:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2006/4/14/ModelGlue--ColdSpring--Reactor-Bookstore</guid>
				
				
				<enclosure url="http://www.briankotek.com/blog/enclosures/mgbookstorereactor.zip" length="30649" type="application/unknown"/>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Model-Glue / ColdSpring Bookstore Sample Application</title>
				<link>http://www.briankotek.com/blog/index.cfm/2006/3/12/ModelGlue--ColdSpring-Bookstore-Sample-Application</link>
				<description>
				
				The next step in my ongoing reference application, a simple bookstore, is a Model-Glue and ColdSpring implementation. I took the CFCs that make up the Fusebox 4.1 version, modified them slightly, and reused them in this new version. You can download it from the &quot;Links&quot; pod in the right sidebar. There&apos;s also a readme file if anyone would like a bit of additional information.

It does require the version of Model-Glue that supports ColdSpring autowiring. I&apos;m not sure if that has been rolled out into an official dot release yet; I had to download it from the Subversion repository. Anyway, I&apos;m interested to hear what folks think, especially anyone with Model-Glue expertise. I think I grasp most of it but I&apos;m always looking to learn more. Thanks!
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>Model-Glue</category>
				
				<pubDate>Sun, 12 Mar 2006 20:53:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2006/3/12/ModelGlue--ColdSpring-Bookstore-Sample-Application</guid>
				
				
			</item>
			
		 	
			</channel></rss>