<?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>Simon Whatley &#187; Ruby on Rails</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/ruby-on-rails/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +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>Plan Your Future in Five Easy Steps</title>
		<link>http://www.simonwhatley.co.uk/plan-your-future-in-five-easy-steps</link>
		<comments>http://www.simonwhatley.co.uk/plan-your-future-in-five-easy-steps#comments</comments>
		<pubDate>Tue, 18 Aug 2009 09:33:09 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[chosen technology]]></category>
		<category><![CDATA[Competing technologies]]></category>
		<category><![CDATA[e.g. open-source software]]></category>
		<category><![CDATA[five easy steps]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Freelancing]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[futurist]]></category>
		<category><![CDATA[futurology]]></category>
		<category><![CDATA[Peter Schwartz]]></category>
		<category><![CDATA[plan]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[test case]]></category>
		<category><![CDATA[united kingdom]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web development example]]></category>
		<category><![CDATA[Wired Magazine]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2013</guid>
		<description><![CDATA[The September 2009 UK edition of Wired ran an interesting article, carrying the same title as this post, by futurist Peter Schwartz. In the article, Schwartz proposed a 5 step plan to predicting and therefore safe guarding your future.]]></description>
			<content:encoded><![CDATA[<p>The September 2009 <a href="http://www.wired.co.uk" title="UK edition of Wired" target="_blank" rel="nofollow">UK edition of Wired</a> ran an interesting article, carrying the same title as this post, by futurist <a href="http://en.wikipedia.org/wiki/Peter_Schwartz_(futurist)" title="Wikipedia: Peter Schwartz (futurist)">Peter Schwartz</a>. In the article, Schwartz proposed a 5 step plan to predicting and therefore safe guarding your future. Below are the five steps.</p>
<p>Schwartz starts by defining a test case. This is in essence a question; <q>How can I future-proof my career?</q> Once you know the question, you can then set about identifying key influences on your question&#8211;e.g. technological change&#8211;scenarios that may bring about the change&#8211;e.g. new competing technologies, lack of technological development in your sector, or the collapse of a key stakeholder&#8211;and finally, future implications.</p>
<p>Here is what Schwartz says in more detail:</p>
<h3>1. List driving forces</h3>
<p>What variables, trends and events will affect your mission? The first step is to list them. Next, divide them into uncertainties (such as economic, political and social conditions) and relative certainties (such as global population growth and climate change). Finally, rank the items according to their importance, from most to least significant. The result: a catalogue of factors that will determine the future of your area.</p>
<p>If I take web development as an example:</p>
<ul>
<li>Pace of technological change.</li>
<li>Number of companies using the chosen technology.</li>
<li>Number of people available in the industry (permanent and contract).</li>
<li>State of the [digital] economy.</li>
<li>Competing technologies, e.g. Ruby on Rails <abbr title="versus">vs</abbr> ColdFusion, <abbr title="Asynchronous JavaScript and XML">AJAX</abbr> <abbr title="versus">vs</abbr> Flash, offline <abbr title="versus">vs</abbr> online, desktop <abbr title="versus">vs</abbr> mobile.</li>
<li>Support of the community, e.g. open-source software, tutorials and application servers.</li>
<li>Support of key stakeholders, e.g. Adobe&#8217;s support of Flash, Flex and ColdFusion.</li>
</ul>
<h3>2. Make a scenario grid</h3>
<p>Now it&#8217;s time to map out possible futures. The two most important uncertainties from the top of your list form the axes of the grid, with each of the quatdrants representing a potential future. Some may be more likely than others&#8211;and some may seem downright improbable&#8211;but they all depict the interplay of key forces. Thus, they&#8217;re within the range of possibility and deserve attention. They help you prepare for a range of possibilities and bolster core actions with those related to the future you deem most likely.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>3. Imagine the possible futures</h3>
<p>Sketched as a grid, these 4 possible scenarios are so abstract that it would be hard to recognise them if they merged. Make them more concrete by fleshing them out into imaginery, but plausible, news stories of the forces at play.</p>
<p>To continue the web development example:</p>
<ul>
<li>Global financial crisis prevents companies investing in technology. They cannot raise the adequate funding to push through key development projects, even if it means increasing efficiencies within the company.</li>
<li>Adobe drops support for ColdFusion causing turmoil in the community. Railo picks up a lot of business, but can&#8217;t scale to fill the demand. Far-sighted companies migrate to other suitable platforms.</li>
<li>Ruby on Rails booms under the paradigms: Convention over Configuration and Don&#8217;t Repeat Yourself, eating into ColdFusion&#8217;s key mantra: Rapid Application Development.</li>
<li>Key advances in technology on the desktop and mobile continue at pace. Micro-payments allow people to create relatively cheap applications that appeal to a mass audience. Development frameworks allow developers to transfer their skills between technologies without the need for significant retraining.</li>
</ul>
<h3>4. Brainstorm implications and actions</h3>
<p>Now it&#8217;s time to develop strategies for coping with each of the four possible futures you&#8217;ve imagined. Start by listing all the implications of each of the scenarios and then come up with actions that would enable you to prosper under any of the new conditions. Some actions would apply to almost any scenario: these should form the basis of your plan, since they help you to prepare for a range of possibilities. Bolster these core actions with those related to the future you deem most likely.</p>
<p>Examples of possible implications:</p>
<ul>
<li>Scarce funding.</li>
<li>Limited demand for new technologies.</li>
<li>Few companies to work for.</li>
<li>Few new projects to work on.</li>
<li>Increased competition for places.</li>
<li>Increased demand for people with key skills, e.g. mobile.</li>
</ul>
<p>and possible actions:</p>
<ul>
<li>Concentrate on existing technologies.</li>
<li>Develop and exit strategy, e.g. cross-train into a new technology.</li>
<li>Cultivate your network, make new contacts at major development houses.</li>
<li>Polish skills in areas of uncertainty.</li>
<li>Start your own cutting-edge business.</li>
</ul>
<h3>5. Track the indicators</h3>
<p>The main value of the scenarios is that they sensitise you to the way the future is unfolding. Over time, the world is likely to gravitate toward one of your four quadrants. The trick is to recognise the shif in progress. As you monitor the news, look for signals that a particular possibility is becoming a concrete reality. Keep a file of news relevant to your scenarios, jotting down a quick note, along with the date, whenever you come across a significant story. Evaluate these developments on a quarterly basis so you can track the trends. Keep adjusting your action strategy to anticipate the future as it emerges.</p>
<p>Of course it is possible that none of your four quadrants becomes true. If this is so, you will need to go back and re-evaluate your scenario grid. Keeping a critical eye on your grid and apace of industry developments, you can be assured that the future will not change so quickly that you&#8217;ll miss an opportunity.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/plan-your-future-in-five-easy-steps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmer’s Dozen &#8211; Programming Best Practices</title>
		<link>http://www.simonwhatley.co.uk/programmers-dozen-programming-best-practices</link>
		<comments>http://www.simonwhatley.co.uk/programmers-dozen-programming-best-practices#comments</comments>
		<pubDate>Tue, 03 Mar 2009 11:23:46 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[fuzzy logic]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[object orientated]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1826</guid>
		<description><![CDATA[Take control of your code with these programming best practices from Kevlin Henney. At JAOO Aarhus 2008 Kevlin used a trash can, vampires, a train wreck, whiskey and much more to make you understand and remember his 13 constructive points (a programmer’s dozen) about programming and code smells.]]></description>
			<content:encoded><![CDATA[<p>Take control of your code with these programming best practices from Kevlin Henney. At <abbr title="Java and object-oriented software engineering">JAOO</abbr> Aarhus 2008 Kevlin used a trash can, vampires, a train wreck, whiskey and much more to make you understand and remember his 13 constructive points (a programmer’s dozen) about programming and code smells.</p>
<p>The 13 points made by Kevlin were:</p>
<ul>
<li>0. Prefer code to comments.</li>
<li>1. Follow a consistent form.</li>
<li>2. Employ the contract metaphor.</li>
<li>3. Express independent ideas independently.</li>
<li>4. Encapsulate.</li>
<li>5. Parameterize from above.</li>
<li>6. Restrict mutability of state.</li>
<li>7. Favor symmetry over asymmetry.</li>
<li>8. Sharpen fuzzy logic.</li>
<li>9. Go with the flow.</li>
<li>10. Let code decide.</li>
<li>11. Omit needless code.</li>
<li>12. Unify duplicate code.</li>
</ul>
<p>You can see a <a href="http://blog.jaoo.dk/2009/01/19/programmers-dozen-programming-best-practices/" title="Programmer’s Dozen - Programming Best Practices" target="_blank" rel="nofollow">video of Kevlin&#8217;s presentation</a> on the <a href="http://jaoo.dk/" title="JAOO" target="_blank" rel="nofollow">JAOO website</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/programmers-dozen-programming-best-practices/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let&#039;s not Dilly-Dally: ColdFusion has its Merits</title>
		<link>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits</link>
		<comments>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits#comments</comments>
		<pubDate>Fri, 09 Jan 2009 10:58:36 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[enterprise-level search]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[fundamentals]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[web technology]]></category>
		<category><![CDATA[web world]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1734</guid>
		<description><![CDATA[ColdFusion is 13 years old. That make makes it the daddy of the web world! It does not make it any less hip or useful than the relatively new kids on the block. Let's not dilly-dally, bicker or insult one another about which is best, which one is dying and which one is not worth the computer it is compiled on. What is important is to understand the merits of each language and decide which one best suits the application, not only in technical terms, but also in terms of time-to-market, cost of development, availability of a skilled workforce etc.]]></description>
			<content:encoded><![CDATA[<p>ColdFusion is 13 years old. That make makes it the daddy of the web world! It does not make it any less hip or useful than the relatively new kids on the block.</p>
<p>Take this scenario. A company I once worked for had what can be described as a business directory built upon a licensed, yet bastardised, version of a popular ColdFusion-based <abbr title="Content Management System">CMS</abbr>. It didn&#8217;t work that well! The decision was made to redevelop the application in Java. It took two years to reach the same level of functionality! What happened next? Ruby-on-Rails is what! The rest is history and beyond the topic of this post.</p>
<p>So, in effect, the application almost went full-circle in its development paradigm &#8212; both ColdFusion and Ruby-on-Rails can be considered <q>Rapid Application Development</q> environments, Java, certainly not. Why did the decision makers not stick with ColdFusion and put time aside to actually build it properly in the first place? To put it simply, they lost faith in ColdFusion; it was largely mis-understood.</p>
<p>The weakness of every programming language does not lie with the language itself per se &#8212; albeit it can have an important influencing factor &#8212; but rather with the ability, or indeed inability, of the developer to leverage the language in the most efficient and optimal way.</p>
<p>ColdFusion, like every other programming language has had and I&#8217;m sure still does have its fair share of poor developers; those people simply working with it as a means-to-an-end, rather than those passionate about the language, those people programming without understanding the fundamentals of programming or the implications of their poorly written code. This is apparent from .NET to Java, ColdFusion to Ruby, JavaScript to ActionScript.</p>
<p>Let&#8217;s not dilly-dally, bicker or insult one another about which is best, which one is dying and which one is not worth the computer it is compiled on. What is important is to understand the merits of each language and decide which one best suits the application, not only in technical terms, but also in terms of time-to-market, cost of development, availability of a skilled workforce etc.</p>
<p>ColdFusion, whether rightly or wrongly in some people&#8217;s opinion, can sit proudly amongst its peers and provide a truly compelling alternative.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Here&#8217;s how (in no particular order):</p>
<ol>
<li>Low Total Cost of Ownership &#8211; frequently, ColdFusion is described as expensive, it simply isn&#8217;t especially if you consider the natively supported functions. But to put it bluntly, if your company cannot afford the cost of ColdFusion standard, or indeed ColdFusion hosting, you have bigger things to worry about regarding the profitability of the company; you won&#8217;t be able to afford much of anything! The problem becomes not the product. ColdFusion applications are quicker to develop and developers are vastly cheaper to employ than their peers in Java or Ruby, just look at <a href="http://www.itjobswatch.co.uk/" title="ITJobsWatch" target="_blank" rel="nofollow">ITJobsWatch</a> for examples.</li>
<li>Rapid Application Development &#8211; ColdFusion vastly simplifies tasks. What would take other languages numerous lines of code to produce is efficiently encapsulated either in a tag or function or as a setting in the administrator. This is a simplistic yet indicative example: where else can you connected to a database simply with one line of code or indeed simply by name? ColdFusion changed the idea of specifying development time in terms of months and years to weeks and months or small features a matter of hours and days. Simplicity is not the mother or all evil. To be pragmatic, simplification reduces costs.</li>
<li>Rich Internet Applications &#8211; ColdFusion may or may not have pioneered the <abbr title="Rich Internet Application">RIA</abbr> paradigm, but it has played a significant supporting role to Flash and now Flex. ColdFusion natively supports Flash remoting, providing the all important data access tier.</li>
<li>Platform Maturity &#8211; ColdFusion 8 is built upon the latest version of Java (1.6). Along with internal improvements to the ColdFusion application, this has afforded ColdFusion unprecedented speed improvements and stability.</li>
<li>Language Maturity &#8211; with each major release of ColdFusion comes many language enhancements added to the core. This means that previous addons, for example image manipulation, which came at a premium are now standard. Adobe and other companies that produce <abbr title="ColdFusion Markup Language">CFML</abbr> engines are now participating in  a <abbr title="ColdFusion Markup Language">CFML</abbr> advisory committee, which aims to set standards for the core language. This is not only a sign of maturity but a letter of intent by the industry that will mean your application will work on any engine, assuming no proprietary functionality is used.</li>
<li>The Ultimate Middleware &#8211; ColdFusion sits comfortably between any backend and front end system. Be it interfacing with a host of databases, Java, .NET, <abbr title="Component Object Model">COM</abbr>, Corba or connecting to classic <abbr title="HyperText Manrkup Language">HTML</abbr> or rich Flash, Flex and <abbr title="Asynchronous JavaScript and XML">AJAX</abbr> frontends with little or no configuration.</li>
<li>Feature Rich &#8211; what other web technology <strong>natively</strong> supports <abbr title="">PDF</abbr> generation, charting, enterprise-level search, <abbr title="Asynchronous JavaScript and XML">AJAX</abbr>, image manipulation, Atom and <abbr title="Really Simple Syndication">RSS</abbr> creation, Zip and <abbr title="Java Archive">JAR</abbr> file manipulation, a server monitor, Flex integration, encryption libraries, all important database connectors, webservice creation, <abbr title="">XML</abbr> manipulation, inbuilt reporting application (similar to Crystal Reports), email, <abbr title="File Transfer Protocol">FTP</abbr> to name but a few? I hazard a guess at none, unless you&#8217;re happy to pay a premium.</li>
<li>Platform Independent &#8211; since ColdFusion 6, when Macromedia redeveloped the entire application in Java, ColdFusion has been platform independent. You can install it on practically any machine.</li>
<li>OpenSource Alternatives &#8211; BlueDragon and Railo are both significant alternatives to Adobe ColdFusion and both have opensource alternatives, the latter of the two having recently joined the JBoss community. Adobe are also considering providing a free edition to academic institutions.</li>
<li>The Future &#8211; many commentators have mentioned Hibernate as a significant addition to the next release of ColdFusion, version 9. But having seen the prerelease notes, that is not all that will be added. Alas I&#8217;m under <abbr title="Non-Disclosure Agreement">NDA</abbr>, but rest assured, there is going to be a significant intake of breath when developers get hold of the next release. ColdFusion 8 was firmly geared towards middle management with fuzzy additions, ColdFusion 9 is set to re-address the balance with compelling language and functionality enhancements.</li>
</ol>
<p>ColdFusion evangelism needs to step up a gear! Adobe certainly doesn&#8217;t afford much marketing budget to the product, prefering <q>The Community</q> do the hard work. It is not always easy convincing the decision makers that ColdFusion is a good product of choice, without Adobe&#8217;s unnerving support, but we have to work hard, break down those barriers, encroach on events outside the comfortable sphere of the ColdFusion world and demonstrate ColdFusion&#8217;s match-winning ability.</p>
<p>ColdFusion isn’t dying, it’s simply niche. Every niche has its place.</p>
<p><strong>UPDATE:</strong> If you would like to view the ensuing debate regarding ColdFusion prompted by <a href="http://aralbalkan.com/1864" title="Aral Balkan - Why learning ColdFusion today is a waste of time." target="_blank" rel="nofollow">Aral Balkan</a>, feel free to do so. This post should serve as a positive reminder of ColdFusion&#8217;s virtues, alongside the need for a balanced and polite debate.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>UK Ruby User Group on LinkedIn</title>
		<link>http://www.simonwhatley.co.uk/uk-ruby-user-group-on-linkedin</link>
		<comments>http://www.simonwhatley.co.uk/uk-ruby-user-group-on-linkedin#comments</comments>
		<pubDate>Sat, 23 Feb 2008 14:35:25 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Ada]]></category>
		<category><![CDATA[centralised network]]></category>
		<category><![CDATA[Eiffel]]></category>
		<category><![CDATA[fellow developers]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[start networking]]></category>
		<category><![CDATA[UK Ruby User Group]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[user group]]></category>
		<category><![CDATA[Yukihiro]]></category>
		<category><![CDATA[yukihiro matsumoto]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=343</guid>
		<description><![CDATA[Ruby is a language of careful balance. Its creator, Yukihiro â€œmatzâ€ Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to form a new language that balanced functional programming with imperative programming.]]></description>
			<content:encoded><![CDATA[<p>Ruby is a language of careful balance. Its creator, Yukihiro â€œmatzâ€ Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to form a new language that balanced functional programming with imperative programming.</p>
<p>With the increasing importance of <a href="http://en.wikipedia.org/wiki/Rapid_application_development" title="Rapid Application Development" target="_blank" rel="nofollow">Rapid Application Development</a> (<acronym title="Rapid Application Development">RAD</acronym>) and the popularity of the Ruby language driven by <a href="http://www.rubyonrails.org/" title="Ruby on Rails" target="_blank" rel="nofollow">Ruby on Rails</a>, this user group aims to assist developers in defining their role, provide information resources and a chance to meet fellow developers and provide a centralised network within the community.</p>
<p>To join the group and start networking, simply click on the link below:</p>
<p>UK Ruby User Group:</p>
<p><a href="http://www.linkedin.com/e/gis/31026/79705D6CDE7C" title="UK Ruby User Group" target="_blank" rel="nofollow">http://www.linkedin.com/e/gis/31026/79705D6CDE7C</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/uk-ruby-user-group-on-linkedin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Frameworks</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-frameworks</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-frameworks#comments</comments>
		<pubDate>Wed, 22 Feb 2006 11:15:42 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ben Edwards]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion application server]]></category>
		<category><![CDATA[Coldspring]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Hal Helms]]></category>
		<category><![CDATA[Mach-II]]></category>
		<category><![CDATA[Model-Glue]]></category>
		<category><![CDATA[model-view-controller]]></category>
		<category><![CDATA[New Brunswick]]></category>
		<category><![CDATA[onTap]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[public services]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tartan]]></category>
		<category><![CDATA[TheHUB]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[web-application framework]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=27</guid>
		<description><![CDATA[With the introduction of ColdFusion MX, the ColdFusion community is maturing. Most CF developers have moved beyond spaghetti code and the mixing of business logic with presentation code. But it can be difficult and wasteful to "re-invent the wheel" for every application you write. Frameworks can help promote good development practices, standards, and a sound foundation for creating an application.]]></description>
			<content:encoded><![CDATA[<p>With the introduction of ColdFusion MX, the ColdFusion community is maturing. Most <abbr title="ColdFusion">CF</abbr> developers have moved beyond spaghetti code and the mixing of business logic with presentation code. But it can be difficult and wasteful to &#8220;re-invent the wheel&#8221; for every application you write.</p>
<p>Frameworks can help promote good development practices, standards, and a sound foundation for creating an application.</p>
<p>In this article I list a number of these frameworks, but I will leave you to compare them, and decide which you may want to adopt.</p>
<h3>Fusebox</h3>
<p><em>An Historically Strong Framework</em></p>
<p>Fusebox is a popular framework for building ColdFusion and PHP web applications. &#8220;Fuseboxers&#8221; find that the framework releases them from much of the drudgery of writing applications and enables them to focus their efforts on creating great, customer-focused software.</p>
<p>Fusebox provides a small set of &#8216;core&#8217; files and large amount of structure which is helpful to developers. It emphasizes separation of presentation from logic and uses a readily understandable vocabulary for modeling websites, namely circuits, fuses and switches.</p>
<p><a title="Fusebox Application Framework" href="http://www.fusebox.org" target="_blank" rel="nofollow">http://www.fusebox.org</a></p>
<h3>Mach-II</h3>
<p>Mach II is a web-application framework developed by <a title="Hal Helm's personal site" href="http://www.halhelms.com">Hal Helms</a> and Ben Edwards that evolved out of a desire to create a framework that specifically addressed maintenance issues using an <abbr title="Object Orientated">OO</abbr> style. Mach II is based on an Implicit Invocation Architecture and directly supports the <abbr title="Model-View-Controller">MVC</abbr> design pattern.</p>
<p><a title="Mach-II Application Framework" href="http://www.mach-ii.com" target="_blank" rel="nofollow">http://www.mach-ii.com</a></p>
<h3>Model-Glue</h3>
<p>Model-Glue helps you build Object-Oriented ColdFusion applications based on the Model View Controller pattern. It&#8217;s designed to be easy to use and play well with others, like <a title="Tartan Framework" href="http://www.tartanframework.org">Tartan</a>.</p>
<p><a title="Model-Glue Framework" href="http://www.model-glue.com" target="_blank" rel="nofollow">http://www.model-glue.com</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>onTap</h3>
<p>The onTap framework is an Open Source Framework for quickly developing powerful web applications using Adobe&#8217;s <a title="Adobe (Macromedia) ColdFusion" href="http://www.macromedia.com/software/coldfusion/">ColdFusion application server</a>. The framework itself bears a marked resemblance to the recently buzzy <a title="Ruby on Rails - open source web framework" href="http://www.rubyonrails.org/">Ruby on Rails</a>.</p>
<p><a title="onTap Framework" href="http://www.fusiontap.com/" target="_blank" rel="nofollow">http://www.fusiontap.com</a></p>
<h3>TheHUB</h3>
<p>TheHUB, like other application development frameworks, utilizes the notion of a central hub template that all requests for the application pass through. That cental hub is the point or place within the application that the processing of all code hinges upon. The code simply checks for a query string and then reads the parameters passed to handle template loading and screen rendering.</p>
<p><a title="TheHub Framework" href="http://www.codesweeper.com" target="_blank" rel="nofollow">http://www.codesweeper.com</a></p>
<h3>Tartan</h3>
<p>Tartan is a command-driven service framework for ColdFusion. It was built to help produce the service layer within a larger application architecture which relies on strict separation or layering of functionality.</p>
<p>All access to the underlying business logic is controlled by public services which are available locally as <abbr title="ColdFusion Components">CFCs</abbr> and remotly via Flash Remoting and <abbr title="Simple Object Access Protocol">SOAP</abbr> web services. A service can be composed of any number of commands, each of which implements a discreet operation within the application. These contain the core logic for the application. Commands can communicate with databases via <abbr title="Data Access Objects">DAOs</abbr>, manipulate values received from the client, execute other commands and even communicate with services available on other remote servers.</p>
<p>At the center of Tartan are 6 Core classes : LocalServiceProxy, LocalService, Command, <abbr title="Data Access Object">DAO</abbr>, ValueObject and ExceptionHandler. They provide most of the functionality of the framework, and must be extended by the application developer.</p>
<p><a title="Tartan Framework" href="http://www.tartanframework.org" target="_blank" rel="nofollow">http://www.tartanframework.org</a></p>
<h3>ColdSpring</h3>
<p>ColdSpring is a framework for <abbr title="ColdFusion Components">CFCs</abbr> (ColdFusion Components).</p>
<p>ColdSpring&#8217;s core focus is to make the configuration and dependencies of your <abbr title="ColdFusion Components">CFCs</abbr> easier to manage. ColdSpring uses the &#8220;inversion-of-control&#8221; pattern to &#8220;wire&#8221; your <abbr title="ColdFusion Components">CFCs</abbr> together. Inversion-of-control provides many advantages over traditional approaches to assembling your application&#8217;s model. Also part of ColdSpring is the first Aspect-Oriented-Programming (AOP) framework for <abbr title="ColdFusion Components">CFCs</abbr>.</p>
<p><a title="ColdSpring Application Framework" href="http://www.coldspringframework.org" target="_blank" rel="nofollow">http://www.coldspringframework.org</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><em><strong>UPDATE:</strong> Since creating this blog post many years ago, two more frameworks have been released that require an honourable mention.</em></p>
<h3>ColdBox</h3>
<p><em>My New Framework of Choice</em></p>
<p>ColdBox is an event-driven conventions based ColdFusion Framework. It provides you with a set of reusable code and tools that you can use to increase your productivity, and it provides you with a development standard when working in a team environment. It makes use of an <abbr title="Model View Controller">MVC</abbr> (Model View Controller) design pattern and an extensive array of patterns for its operations such as Factories, Helpers, Workers, etc. And since it is based on <abbr title="ColdFusion Components">CFCs</abbr> it does not rely on an <abbr title="eXtensible Markup Language">XML</abbr> dialect.</p>
<p>NB. ColdBox also takes advantage of ColdSpring or Lightwire.</p>
<p><a href="http://www.coldboxframework.com" title="The ColdBox Framework" target="_blank" rel="nofollow">http://www.coldboxframework.com</a></p>
<h3>Lightwire</h3>
<p>Lightwire is a very lightweight Direct Injection (<abbr title="Direct Injection">DI</abbr>)/Inversion of Control (<abbr title="Inversion of Control">IoC</abbr>) engine for directly injecting dependencies into singletons and transient business object. The framework is optimised to create transient objects as well as singletons and allows for programmatic as well as <abbr title="eXtensible Markup Language">XML</abbr> configuration. It is the lightweight framework for people who&#8217;d like to put more logic in their beans and less in their service layer.</p>
<p><a href="http://lightwire.riaforge.org" title="Lightwire" target="_blank" rel="nofollow">http://lightwire.riaforge.org</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-frameworks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>onTap &#8211; Web Application Framework</title>
		<link>http://www.simonwhatley.co.uk/ontap-web-application-framework</link>
		<comments>http://www.simonwhatley.co.uk/ontap-web-application-framework#comments</comments>
		<pubDate>Wed, 19 Oct 2005 15:41:43 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[onTap]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Server Side]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=13</guid>
		<description><![CDATA[The onTap framework is an Open Source Framework for quickly developing powerful web applications using Macromedia's ColdFusion application server.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.fergusonhouse.com/">onTap</a> framework is an Open Source Framework for quickly developing powerful web applications using Macromedia&#8217;s ColdFusion application server. The framework itself bears a marked resemblance to the recently buzzy <a href="http://www.rubyonrails.org/">Ruby on Rails</a>.</p>
<p>The <a href="http://www.fergusonhouse.com/">onTap</a> Framework can be downloaded at the following <acronym title="Universal Resource Locator">url</acronym>:</p>
<p><a href="http://www.fergusonhouse.com/?netaction=download">http://www.fergusonhouse.com/?netaction=download</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/ontap-web-application-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

