<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Bob&apos;s Blog - ColdFusion Tidbits</title>
			<link>http://www.silverwareconsulting.com/index.cfm</link>
			<description>Some stuff about ColdFusion and Transfer</description>
			<language>en-us</language>
			<pubDate>Sat, 31 Jul 2010 23:54:50 -0400</pubDate>
			<lastBuildDate>Wed, 21 Jul 2010 09:43:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>bob.silverberg@gmail.com</managingEditor>
			<webMaster>bob.silverberg@gmail.com</webMaster>
			
			<item>
				<title>Where I&apos;m Going to Be At CFUnited</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/21/Where-Im-Going-to-Be-At-CFUnited</link>
				<description>
				
				I just finished updating my CFUnited schedule for next week&apos;s conference, now that all of the Saturday sessions are available. If you are going to be
attending this year&apos;s conference, the organizers are requesting that you enter your schedule into the 
&lt;a href=&quot;http://cfunited.com/2010/my/schedule&quot; target=&quot;_blank&quot;&gt;online scheduling app&lt;/a&gt; to help them determine room sizes for each session.&lt;/p&gt;
&lt;p&gt;I must say I am very impressed with this year&apos;s lineup. I had no trouble finding sessions that were of great interest to me in practically every
time slot, and the repeat sessions that take place on Satrurday are going to enable me to see virtually every session that I want. If you&apos;re
interested to know which sessions I&apos;ve chosen, see the table below, which was generated by the CFUnited scheduler app:  [More]
				</description>
				
				<category>CFUnited</category>				
				
				<pubDate>Wed, 21 Jul 2010 09:43:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/21/Where-Im-Going-to-Be-At-CFUnited</guid>
				
			</item>
			
			<item>
				<title>Getting Code Assistance in Eclipse when Creating ValidateThis XML Files</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/19/Getting-Code-Assistance-in-Eclipse-when-Creating-ValidateThis-XML-Files</link>
				<description>
				
				Although ValidateThis, my validation framework for ColdFusion objects, can accept metadata in a number of formats, my preferred method is via an
XML file. This file defines all of the validation rules for a particular object, and can, obviously, be created using any text editor.
If, like me, you are using Eclipse as your IDE (which includes users of ColdFusion Builder), you can enable code assist thanks to the 
XML Schema Definition (XSD) that I created for ValidateThis. This post will describe how to enable that feature.&lt;/p&gt;
&lt;h3&gt;What is an XSD?&lt;/h3&gt;
&lt;p&gt;XSD stands for XML Schema Definition. It is the successor to the Document Type Definition (DTD), providing a description of the required structure of
a particular type of XML document. XSDs are themselves written in XML, which makes them both machine- and human-readable. They are therefore an
excellent source of documentation about the type of XML document that they describe, and they can also be used to validate an XML document and to
enable code assist when editing an XML document.  [More]
				</description>
				
				<category>Eclipse</category>				
				
				<category>ValidateThis</category>				
				
				<category>CFBuilder</category>				
				
				<pubDate>Mon, 19 Jul 2010 15:56:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/19/Getting-Code-Assistance-in-Eclipse-when-Creating-ValidateThis-XML-Files</guid>
				
			</item>
			
			<item>
				<title>CFUnited is Almost Here - Learn about Validations and ORM</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/19/CFUnited-is-Almost-Here--Learn-about-Validations-and-ORM</link>
				<description>
				
				As I&apos;m sure many of you are aware, &lt;a href=&quot;http://cfunited.com&quot; target=&quot;_blank&quot;&gt;the final CFUnited&lt;/a&gt; will be starting in a little over a week. 
Although I did attend a couple of CFUN&apos;s in the past (when they were a one-day event), this will be my first CFUnited, so I&apos;m pretty excited
about it. It will be great to meet even more people than I usually do at other conferences, such as &lt;a href=&quot;http://www.cfobjective.com/&quot; target=&quot;_blank&quot;&gt;cf.Objective()&lt;/a&gt; and &lt;a href=&quot;http://ncdevcon.com/&quot; target=&quot;_blank&quot;&gt;NCDevCon&lt;/a&gt;, and I wanted
to give a final plug to my sessions, as I think they will be of interest to a lot of developers. As well, I&apos;ve made some last minute changes to
both sessions to cover some new material.&lt;/p&gt;
&lt;h3&gt;What Your Mother Never Told You About CF9 ORM&lt;/h3&gt;
&lt;p&gt;The ColdFusion team at Adobe have done an outstanding job with ColdFusion ORM, which now provides ColdFusion developers with access to
&lt;a href=&quot;http://www.hibernate.org/&quot; target=&quot;_blank&quot;&gt;Hibernate&lt;/a&gt;, an enterprise-ready, open source, industry-standard Java ORM. The documentation on how to use CF ORM in the ColdFusion docs is also quite 
good, providing most of what you need to know to make use of the features. The problem, however, is that Hibernate is a pretty complex tool, and in
order to use CF ORM successfully you really need to understand certain things about Hibernate. This session is designed to teach you some of those 
things - it will cover material that is not included in the ColdFusion documentation, but that is essential to understand when working with the ORM.&lt;/p&gt;
&lt;p&gt;Topics covered will include Hibernate Session Management, Understanding Object States, Working with Detached Objects, Concurrency and 
Using a Base Persistent Object. We&apos;ll also be looking at the new Transaction Management model in the recently released ColdFusion 9.0.1.
If you plan on working with CF ORM and are not already familiar with these concepts I think you&apos;ll really benefit from this session. It is,
however, an advanced session, so if you are totally unfamiliar with CF ORM you may find it a bit confusing.&lt;/p&gt;
&lt;p&gt;The session is scheduled for 5:30pm (ouch!) on Wednesday, July 28th.&lt;/p&gt;
&lt;h3&gt;Automagic Validations for ColdFusion Objects&lt;/h3&gt;
&lt;p&gt;This session will provide an overview of, as well as a detailed &lt;em&gt;how-to&lt;/em&gt; about a Validation framework for ColdFusion. The title is
a slight misnomer, as, although the framework was originally written to work inside an object-oriented application, and remains an ideal solution for
that, it has recently been enhanced to work with simple ColdFusion structures as well.  This means that anyone who is looking for a better way of
addressing their validation requirements, both on the client side and on the server side, can now benefit from the framework, even if they are not
using objects.&lt;/p&gt;
&lt;p&gt;The main benefit of the framework is that it will automatically generate all of your client-side and server-side validations for you, from a simple
set of metadata. This frees you from the drudgery of writing similar validation code over and over again, and also eliminates the possibility of adding
bugs into your application via your validation code. The framework, called &lt;em&gt;&lt;a href=&quot;http://www.validatethis.org/&quot; target=&quot;_blank&quot;&gt;ValidateThis&lt;/a&gt;&lt;/em&gt;, is being actively developed by myself and a number of 
other contributors, so not only is it extremely functional and flexible right now, but new features are being added continually. If you are
interested in finding out more about it, including exactly how to implement it in a new or existing application (and it&apos;s dead easy), I encourage
you to attend my session. It will be held at 3:15pm on Friday, July 30th, and is being repeated at 2:45pm on Saturday, July 31st.&lt;/p&gt;
&lt;p&gt;I hope to see you at one, or both, of my sessions. If we haven&apos;t met before please come by and say hi.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<category>ValidateThis</category>				
				
				<category>CFUnited</category>				
				
				<pubDate>Mon, 19 Jul 2010 09:47:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/19/CFUnited-is-Almost-Here--Learn-about-Validations-and-ORM</guid>
				
			</item>
			
			<item>
				<title>ValidateThis 0.96.2 - Important Bug Fixes</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/13/ValidateThis-0962--Important-Bug-Fixes</link>
				<description>
				
				Since the release of version 0.96 of ValidateThis, my validation framework for ColdFusion objects, there have been a few bug reports which I have tried
to be quick to address. This has resulted in the release of versions 0.96.1 and 0.96.2 of the framework. If anyone has downloaded a copy of 0.96 or
0.96.1, I advise you to grab a copy of 0.96.2 from the &lt;a href=&quot;http://validatethis.riaforge.org/&quot; target=&quot;_blank&quot;&gt;RIAForge project page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m hoping that 0.96.2 will be as rock solid as most of the previous releases, and I want to thank &lt;a href=&quot;http://www.aliaspooryorik.com/&quot; target=&quot;_blank&quot;&gt;John Whish&lt;/a&gt; 
and &lt;a href=&quot;http://www.quackfuzed.com/&quot; target=&quot;_blank&quot;&gt;Matt Quackenbush&lt;/a&gt; for bringing the bugs to my attention.&lt;/p&gt; 
				</description>
				
				<category>ValidateThis</category>				
				
				<pubDate>Tue, 13 Jul 2010 23:34:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/13/ValidateThis-0962--Important-Bug-Fixes</guid>
				
			</item>
			
			<item>
				<title>ColdFusion 9.0.1 Now Available - With ORM Goodies</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/13/ColdFusion-901-Now-Available--With-ORM-Goodies</link>
				<description>
				
				ColdFusion 9.0.1 is now available for download at &lt;a href=&quot;http://www.adobe.com/go/getcf901&quot; target=&quot;_blank&quot;&gt;http://www.adobe.com/go/getcf901&lt;/a&gt;,
and, in addition to fixing a number of issues with ColdFusion 9.0, it&apos;s packed full of goodies as well. The details of all the new features
can be found in the &lt;a href=&quot;http://www.adobe.com/support/documentation/en/coldfusion/901/cf901features.pdf&quot; target=&quot;_blank&quot;&gt;New Feature Notes&lt;/a&gt;, 
and the bug fixes and outstanding items can be found in the &lt;a href=&quot;http://www.adobe.com/support/documentation/en/coldfusion/releasenotes.html&quot; target=&quot;_blank&quot;&gt;Release Notes&lt;/a&gt;.
I think my favourite single new feature is the ability to do a &lt;em&gt;for - in&lt;/em&gt; loop with an array, as looping through an array using script has
always been a pain. I&apos;m also very happy with some of the improvements to ORM.
Here&apos;s a high-level summary of the new features, followed by some details on the ORM changes:
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Language enhancements&lt;/strong&gt; - including &lt;em&gt;for-in&lt;/em&gt; loops for arrays.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;New script functions implemented as CFCs&lt;/strong&gt; - including dbinfo, imap, pop, ldap, and feed.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Caching enhancements&lt;/strong&gt; - including the ability to get a handle on the ehCache session.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Support for IIS 7&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;ColdFusion Ajax enhancements&lt;/strong&gt; - including updates cfmap, cfgrid, file uploading and JavaScript functions.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;ORM enhancements&lt;/strong&gt; - more details below.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Amazon S3 support&lt;/strong&gt; - the ability to use Amazon S3 storage with most tags and functions that use a file or directory as input or output.&lt;/li&gt;
	&lt;li&gt;Various other enhancements covering areas such as Spreadsheets, AIR Integration, Flash Remoting, Blaze DS, Solr, Logging, Server Monitoring, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;ORM Enhancements&lt;/h3&gt;
&lt;p&gt;Here&apos;s a summary of the ORM enhancements in ColdFusion 9.0.1, followed by some details about each one:
&lt;ul&gt;
	&lt;li&gt;Support for Multiple Datasources&lt;/li&gt;
	&lt;li&gt;Transaction Management Improvements&lt;/li&gt;
	&lt;li&gt;skipCFCWithError Flag in ormSettings&lt;/li&gt;
	&lt;li&gt;mappedSuperClass Attribute for Components&lt;/li&gt;
	&lt;li&gt;Use EntityNew to Populate a New Entity&lt;/li&gt;
	&lt;li&gt;Support for HQL in cfquery&lt;/li&gt;
&lt;/ul&gt;  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Tue, 13 Jul 2010 11:48:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/13/ColdFusion-901-Now-Available--With-ORM-Goodies</guid>
				
			</item>
			
			<item>
				<title>ValidateThis 0.96 - Not Just For Objects, JSON Metadata and JavaScript Niceties</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/5/ValidateThis-096--Not-Just-For-Objects-JSON-Metadata-and-JavaScript-Niceties</link>
				<description>
				
				I&apos;ve just released version 0.96 of ValidateThis, my validation framework for ColdFusion objects. 
I guess I&apos;m going to have to come up with a new tagline, because, as of this release, ValidateThis is no longer only for objects. 
This update includes a bunch of new enhancements, the most significant of which is that you can now use VT to validate a structure.
That&apos;s right, you no longer need to be working with objects to make use of the framework. More details on that enhancement, and others, can be found
following the summary of changes:
&lt;ul&gt;
	&lt;li&gt;You can now use VT to validate a structure, not just an object.&lt;/li&gt;
	&lt;li&gt;Metadata can now be supplied in an external JSON file, as an alternative to the standard XML file.&lt;/li&gt;
	&lt;li&gt;You can now have multiple forms on the same html page for the same object, with different contexts.&lt;/li&gt;
	&lt;li&gt;A John Whish inspired package of enhancements has been added to the jQuery client-side validations.&lt;/li&gt;
	&lt;li&gt;A bug fix reported and patched by a user was implemented.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;As always, the latest version can be downloaded from &lt;a href=&quot;http://validatethis.riaforge.org/&quot; target=&quot;_blank&quot;&gt;the ValidateThis RIAForge site&lt;/a&gt;.  Details of the enhancements follow:  [More]
				</description>
				
				<category>ValidateThis</category>				
				
				<pubDate>Mon, 05 Jul 2010 16:34:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/5/ValidateThis-096--Not-Just-For-Objects-JSON-Metadata-and-JavaScript-Niceties</guid>
				
			</item>
			
			<item>
				<title>ValidateThis 0.95 - Enhancements to the Result Object and Client-Side Validations</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/25/ValidateThis-095--Enhancements-to-the-Result-Object-and-ClientSide-Validations</link>
				<description>
				
				I&apos;ve just released version 0.95 of ValidateThis, my validation framework for ColdFusion objects. This update includes some community contributions, as well as a number of features that 
were prompted by community requests. Here&apos;s a summary of the changes, followed by the details for each one.
&lt;ul&gt;
	&lt;li&gt;Numerous enhancements were made to the Result object, as well as the ability to easily substitute your own Result object for the one that is built into the framework,
		and the ability to automatically inject the Result object into your business object.&lt;/li&gt;
	&lt;li&gt;Client-side validations have been enhanced so that missing form fields will not generate JavaScript errors.&lt;/li&gt;
	&lt;li&gt;Client-side validation code has been refactored, and includes a fix from &lt;a href=&quot;http://martijnvanderwoud.wordpress.com/&quot; target=&quot;_blank&quot;&gt;Martijn van der Woud&lt;/a&gt; for the &lt;em&gt;equalTo&lt;/em&gt; validation type.&lt;/li&gt;
	&lt;li&gt;More refactoring to set the stage for future enhancements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;The latest version can be downloaded from &lt;a href=&quot;http://validatethis.riaforge.org/&quot; target=&quot;_blank&quot;&gt;the ValidateThis RIAForge site&lt;/a&gt;.  Details of the enhancements follow:  [More]
				</description>
				
				<category>ValidateThis</category>				
				
				<pubDate>Fri, 25 Jun 2010 12:01:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/25/ValidateThis-095--Enhancements-to-the-Result-Object-and-ClientSide-Validations</guid>
				
			</item>
			
			<item>
				<title>Comparing Files from Different Branches with Git Difftool</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/21/Comparing-Files-from-Different-Branches-with-Git-Difftool</link>
				<description>
				
				As a relative newcomer to Git one of the things I&apos;ve struggled most with is how to compare files from different branches. 
The challenge comes from the fact that, from the perspective of the file system, two branches cannot exist at the same time.
When you switch from one branch to another the new branch replaces the old branch, so you cannot use a native file compare tool to compare two sets
of files, as there really is only one set of files at any point in time. Now I admit that I might be totally wrong about this, 
and I&apos;m sure that there are other, perhaps better, solutions to the issue, but the one that works for me currently is &lt;em&gt;git difftool&lt;/em&gt;.
&lt;h3&gt;What is Git Difftool?&lt;/h3&gt;
&lt;p&gt;According to the &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-difftool.html&quot; target=&quot;_blank&quot;&gt;man page for git-difftool&lt;/a&gt;,
	&lt;blockquote&gt;
		&lt;p&gt;
			&lt;em&gt;git difftool&lt;/em&gt; is a git command that allows you to compare and edit files between revisions using common diff tools.
			&lt;em&gt;git difftool&lt;/em&gt; is a frontend to &lt;em&gt;git diff&lt;/em&gt; and accepts the same options and arguments.&lt;/p&gt;
	&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;
	I&apos;ve tried using &lt;em&gt;git diff&lt;/em&gt; in the past and, after spending years working with a wonderful tool like Subclipse&apos;s &lt;em&gt;Synchronize with Repository&lt;/em&gt;,
	I just did not enjoy the output of &lt;em&gt;git diff&lt;/em&gt; at all.
Luckily, &lt;em&gt;git difftool&lt;/em&gt; works with a file compare tool on your system, making the output much easier (for me at least) to deal with. 
On my system, which is OS X, because I have the Apple Developer Tools installed, when I issue the &lt;em&gt;git difftool&lt;/em&gt; the output is sent to &lt;em&gt;opendiff&lt;/em&gt;,
which in turn uses &lt;em&gt;FileMerge&lt;/em&gt; which is a nice, graphical file compare and merge tool. Other than installing the developer tools, which I did long before
I started using Git, I didn&apos;t have to do any other setup. I honestly have no idea how easy it is to set up a graphical compare tool to work
with &lt;em&gt;git difftool&lt;/em&gt; on a Windows or Linux box, but I&apos;m guessing it cannot be that difficult.&lt;/p&gt;
&lt;h3&gt;Using Git Difftool&lt;/h3&gt;
&lt;p&gt;To start a compare, you simply issue the &lt;em&gt;git difftool&lt;/em&gt; command and pass it paths to two sets of files. 
The paths look like &lt;em&gt;branchName&lt;/em&gt;:&lt;em&gt;path&lt;/em&gt;. So if I wanted to compare the file &lt;em&gt;ValidationFactory.cfc&lt;/em&gt; from the &lt;em&gt;master&lt;/em&gt; branch
to the same file in the &lt;em&gt;newStuff&lt;/em&gt; branch, I&apos;d type: &lt;code&gt;git difftool master:ValidationFactory.cfc newBranch:ValidationFactory.cfc&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I&apos;d see a prompt that says something like:
&lt;code&gt;merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld kompare gvimdiff diffuse ecmerge araxis emerge vimdiff
Viewing: &apos;master:ValidationFactory.cfc&apos;
Hit return to launch &apos;opendiff&apos;:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And when I hit return FileMerge would open up with both files displayed. If I want to compare an entire folder, I can just type
&lt;code&gt;git difftool master:ValidateThis/core/ newBranch:ValidateThis/core/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And then I receive that prompt for each individual file in turn.&lt;/p&gt;
&lt;p&gt;I still don&apos;t think this is anywhere near as good as what I had with Subclipse, and I&apos;m guessing there are ways to configure it to make it even friendlier, 
but for now it&apos;s much better than &lt;em&gt;git diff&lt;/em&gt;.&lt;/p&gt; 
				</description>
				
				<category>OS X</category>				
				
				<category>Git</category>				
				
				<pubDate>Mon, 21 Jun 2010 15:10:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/21/Comparing-Files-from-Different-Branches-with-Git-Difftool</guid>
				
			</item>
			
			<item>
				<title>Send Push Notifications to an iPhone from ColdFusion</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/21/Send-Push-Notifications-to-an-iPhone-from-ColdFusion</link>
				<description>
				
				&lt;a href=&quot;http://notifo.com/&quot; target=&quot;_blank&quot;&gt;Notifo&lt;/a&gt; is a relatively new service which allows you to send push notifications to mobile clients
via a REST interface. Currently notifications can only be sent to the iPhone, but they plan to add support for Android and Blackberry in the future.
Because it is based on a &lt;a href=&quot;https://api.notifo.com/&quot; target=&quot;_blank&quot;&gt;REST API&lt;/a&gt;, it&apos;s very easy to interact with from a ColdFusion application, 
and I wanted to give it a try, so I whipped up
a quick &lt;a href=&quot;http://github.com/bobsilverberg/CFNotifo&quot; target=&quot;_blank&quot;&gt;API wrapper&lt;/a&gt; for it. 
It all seems to work extraordinarily well, and is quite cool.&lt;/p&gt;
&lt;h3&gt;CFNotifo is Born&lt;/h3&gt;
&lt;p&gt;I found out about Notifo from the &lt;a href=&quot;http://github.com/blog&quot; target=&quot;_blank&quot;&gt;GitHub blog&lt;/a&gt;, 
which describes a &lt;a href=&quot;http://github.com/blog/664-notifo-service-hook-added&quot; target=&quot;_blank&quot;&gt;Notifo service hook&lt;/a&gt; that was just added. This
service hook allows you to receive push notifications on your iPhone any time someone commits to your Git repo. Of course I had to try this right away,
and was duly impressed. The next step was to write some CFML that interacts with the API, so, as I mentioned above, I decided to create a simple API 
wrapper to make it even easier for others to do the same. In a matter of minutes I was able to create a single cfc which implements all of the current API.
This wasn&apos;t that challenging as there are only two API methods right now, &lt;em&gt;subscribe_user&lt;/em&gt; and &lt;em&gt;send_notification&lt;/em&gt;, but as Notifo adds more, 
I will follow suit.&lt;/p&gt;
&lt;h3&gt;How Does Notifo Work&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://paulstamatiou.com/&quot; target=&quot;_blank&quot;&gt;Paul Stamatiou&lt;/a&gt;, co-founder of Notifo, wrote up a &lt;a href=&quot;http://paulstamatiou.com/notifo-yc-w2010-gets-a-co-founder-me&quot; target=&quot;_blank&quot;&gt;detailed post about Notifo&lt;/a&gt; on his blog,
which is well worth reading. If you don&apos;t feel like following the link, here are the highlights:
&lt;ul&gt;
	&lt;li&gt;Allows you to send push notifications to a mobile client from a server.&lt;/li&gt;
	&lt;li&gt;Currently iPhone is supported, via an &lt;a href=&quot;http://itunes.apple.com/us/app/notifo/id359063459&quot; target=&quot;_blank&quot;&gt;app&lt;/a&gt; available in the app store. Android is up next, with other smartphones to be added in the future.&lt;/li&gt;
	&lt;li&gt;To subscribe to services you need a Notifo account, which can be set up via the &lt;a href=&quot;https://notifo.com/user/register&quot; target=&quot;_blank&quot;&gt;Notifo site&lt;/a&gt;, or via the iPhone app.&lt;/li&gt;	
	&lt;li&gt;To receive notifications you need to have the iPhone app installed.&lt;/li&gt;	
	&lt;li&gt;Once you&apos;ve subscribed to a service you can set various options for it via a web interface, including what type of notifications you want to receive 
	(normal, silent and stealth), and you can unsubscribe, block and report spam on a service.&lt;/li&gt;	
	&lt;li&gt;You can also set some global options for notifications, such as &lt;em&gt;silent hours&lt;/em&gt;, during which notifications will be sent silently.&lt;/li&gt;	
&lt;/ul&gt;  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>Notifo</category>				
				
				<pubDate>Mon, 21 Jun 2010 09:41:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/21/Send-Push-Notifications-to-an-iPhone-from-ColdFusion</guid>
				
			</item>
			
			<item>
				<title>My Interview on WebDevRadio</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/17/My-Interview-on-WebDevRadio</link>
				<description>
				
				I had the honour and pleasure of being interviewed by &lt;a href=&quot;http://michaelkimsal.com/blog/&quot; target=&quot;_blank&quot;&gt;Michael Kimsal&lt;/a&gt; for his 
&lt;a href=&quot;http://webdevradio.com/&quot; target=&quot;_blank&quot;&gt;WebDevRadio podcast&lt;/a&gt; a few weeks ago. 
The episode was published last week and is now available for listening and/or downloading from 
the &lt;a href=&quot;http://webdevradio.com/index.php?id=103&quot; target=&quot;_blank&quot;&gt;podcast website&lt;/a&gt;, as well as 
via &lt;a href=&quot;http://itunes.apple.com/podcast/webdevradio-com-web-development/id74402299&quot; target=&quot;_blank&quot;&gt;iTunes&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For those of you that don&apos;t know Michael, you&apos;re missing out. I met him at &lt;a href=&quot;http://ncdevcon.com&quot; target=&quot;_blank&quot;&gt;NCDevCon&lt;/a&gt; and found him to be an extremely pleasant, funny and smart individual.
I enjoyed my chats with him at the conference, and really enjoyed discussing all sorts of topics with him for the podcast, including, 
but not limited to, how I came to develop using ColdFusion, contributing to open source projects, test-driven development and unit testing in general, and
object-relational mapping (ORM) in ColdFusion. I also really appreciated the opportunity to have my voice heard outside of the ColdFusion community.&lt;/p&gt; 
				</description>
				
				<category>TDD</category>				
				
				<category>ColdFusion</category>				
				
				<category>Podcasts</category>				
				
				<pubDate>Thu, 17 Jun 2010 10:49:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/17/My-Interview-on-WebDevRadio</guid>
				
			</item>
			
			<item>
				<title>Checking for JavaScript Errors with Selenium</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/7/Checking-for-JavaScript-Errors-with-Selenium</link>
				<description>
				
				I&apos;ve recently been writing some end-to-end tests for &lt;a href=&quot;http://www.validatethis.org&quot; target=&quot;_blank&quot;&gt;ValidateThis&lt;/a&gt;, 
my validation framework for ColdFusion objects, using &lt;a href=&quot;http://seleniumhq.org/&quot; target=&quot;_blank&quot;&gt;Selenium&lt;/a&gt;. One of the things I wanted to test
were the client-side validations that the framework generates automatically. Selenium makes it very easy to test these, as I can use Selenium&apos;s
&lt;em&gt;assertText&lt;/em&gt; command to locate failure messages that have been generated by the &lt;a href=&quot;http://bassistance.de/jquery-plugins/jquery-plugin-validation/&quot; target=&quot;_blank&quot;&gt;jQuery Validation plugin&lt;/a&gt;,
using XPath, and check whether the message is what I expected.&lt;/p&gt;
&lt;p&gt;I found, however, that I was often getting JavaScript errors when the page first loaded (because I was working on the JS and was introducing errors),
so I was looking for a quick way to add an assert to my test to check whether any JS errors occurred. After some Googling I came to the conclusion that
there is nothing built into Selenium to support this, but there are a number of hacks that can be used to accomplish it. I&apos;m going to describe one of them 
here. Let me state again, for the record, that this is pretty hacky. I&apos;d love to hear from others who may have better solutions.&lt;/p&gt;
&lt;p&gt;I simply add a script to my page that will catch any JS errors by intercepting the &lt;em&gt;window.onerror&lt;/em&gt; event:
&lt;code&gt;&lt;script type=&quot;text/javascript&quot;&gt;
	window.onerror=function(msg){
		$(&quot;body&quot;).attr(&quot;JSError&quot;,msg);
	}
&lt;/script&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will cause an attribute called &lt;em&gt;JSError&lt;/em&gt; with a value corresponding to the JavaScript error message to be added to the &lt;em&gt;body&lt;/em&gt; tag of my document if a JavaScript 
error occurs. Note that I&apos;m using jQuery to do this, so this specific example won&apos;t work if jQuery fails to load. 
Then, in my Selenium test, I just use the command &lt;em&gt;assertElementNotPresent&lt;/em&gt; with a target of &lt;em&gt;//body[@JSError]&lt;/em&gt;.
Now, if any JavaScript errors occur on the page my test will fail and I&apos;ll know I have to address them first. If, for some strange reason, I want to
check for a particular JavaScript error, I could use the &lt;em&gt;assertElementPresent&lt;/em&gt; command with a target of &lt;em&gt;//body[@JSError=&apos;the error message&apos;]&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Note that I&apos;m using this with a test fixture page, it&apos;s not an actual page that is part of an application. I&apos;m not sure that this would be very
useful in an automated testing environment, I&apos;m just using it for some TDDing, where I want to write an end-to-end acceptance test first, and
then write my unit tests. Getting the test to fail because of a JavaScript error is a nice way, imo, of satisfying the criteria that I must have a 
failing test before writing code to make it work. The usefullness of this technique in terms of pure testing is questionable, but I find it useful 
for my purposes, so I thought I&apos;d put it out there for others.&lt;/p&gt; 
				</description>
				
				<category>TDD</category>				
				
				<category>Selenium</category>				
				
				<pubDate>Mon, 07 Jun 2010 17:54:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/7/Checking-for-JavaScript-Errors-with-Selenium</guid>
				
			</item>
			
			<item>
				<title>Using Git Rebase to Squash Commits</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/6/Using-Git-Rebase-to-Squash-Commits</link>
				<description>
				
				A Git command that can be very useful, yet is often overlooked by beginners (such as myself) is the &lt;em&gt;rebase&lt;/em&gt; command.
I admit to not fully understanding all of its uses, but there is one simple use for it that I have found myself taking advantage of lately.
Here&apos;s the scenario:&lt;/p&gt;
&lt;p&gt;You have a remote Git repository, perhaps hosted at &lt;a href=&quot;https://github.com/&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;. You want to work on a
new feature, so you create a local branch on your machine: &lt;code&gt;git checkout -b newBranch&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You make some changes and commit them to the local branch: &lt;code&gt;git commit -a -m&quot;My first set of changes&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You make some more changes and commit them to the local branch: &lt;code&gt;git commit -a -m&quot;My second set of changes&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You make some more changes and commit them to the local branch: &lt;code&gt;git commit -a -m&quot;My third set of changes&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You now have three separate commits that relate to one feature, and the feature is complete. You could simply push the changes to your remote,
but then you&apos;d end up with three commits on the remote that are not particularly meaningful. The only reason you have three commits in your local repo is
that you completed the work in three steps. Perhaps you&apos;d rather have just one commit reported in the remote repo for this feature. Thankfully &lt;em&gt;git rebase&lt;/em&gt; 
allows you to do that very simply.  [More]
				</description>
				
				<category>Git</category>				
				
				<pubDate>Sun, 06 Jun 2010 21:40:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/6/Using-Git-Rebase-to-Squash-Commits</guid>
				
			</item>
			
			<item>
				<title>ValidateThis 0.94 - More community contributions</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/5/ValidateThis-094--More-community-contributions</link>
				<description>
				
				I&apos;ve just released version 0.94 of ValidateThis, my validation framework for ColdFusion objects. Once again this update includes community contributions, including
some from &lt;a href=&quot;http://jamiekrug.com/blog/&quot; target=&quot;_blank&quot;&gt;Jamie Krug&lt;/a&gt; and &lt;a href=&quot;http://www.aliaspooryorik.com/&quot; target=&quot;_blank&quot;&gt;John Whish&lt;/a&gt;.
Here&apos;s a summary of the changes, followed by the details for each one.
&lt;ul&gt;
	&lt;li&gt;A new &lt;em&gt;boolean&lt;/em&gt; validation type has been added.&lt;/li&gt;
	&lt;li&gt;Proper optionality is now supported for all validation types.&lt;/li&gt;
	&lt;li&gt;The framework can locate your rules definition file with zero configuration when you pass an object into a method call.&lt;/li&gt;
	&lt;li&gt;A &lt;em&gt;newResult()&lt;/em&gt; method has been added to the ColdBox plugin.&lt;/li&gt;
	&lt;li&gt;A &lt;em&gt;getFailureMessages()&lt;/em&gt; method has been added to the Result object.&lt;/li&gt;
	&lt;li&gt;An issue with overriding failure messages with the &lt;em&gt;custom&lt;/em&gt; validation type has been addressed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;The latest version can be downloaded from &lt;a href=&quot;http://validatethis.riaforge.org/&quot; target=&quot;_blank&quot;&gt;the ValidateThis RIAForge site&lt;/a&gt;.  Details of the enhancements follow:  [More]
				</description>
				
				<category>ValidateThis</category>				
				
				<pubDate>Sat, 05 Jun 2010 07:58:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/5/ValidateThis-094--More-community-contributions</guid>
				
			</item>
			
			<item>
				<title>Using TextMate as the Default Editor for Git on OS X</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/6/3/Using-TextMate-as-the-Default-Editor-for-Git-on-OS-X</link>
				<description>
				
				There are a number of Git commands which pop open a text editor which you then use to provide information. For example, if you issue the command:
&lt;code&gt;git commit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The editor will appear allowing you to type your commit message. The default editor that appears for me, on OS X, is &lt;em&gt;vi&lt;/em&gt;
which is a strange beast to work with if you&apos;ve never encountered it before (which I hadn&apos;t, prior to using Git). 
I found a &lt;a href=&quot;http://www.tuxfiles.org/linuxhelp/vimcheat.html&quot; target=&quot;_blank&quot;&gt;helpful cheat sheet&lt;/a&gt;, which allowed me to use the
editor, but I still find it cumbersome. Thankfully it&apos;s a pretty simple matter to use a different text editor with Git. There are a number of ways of doing this, and I&apos;m going to discuss two of them. To start, let&apos;s look at how Git decides what editor to use.&lt;/p&gt;
&lt;h3&gt;Which editor will Git use?&lt;/h3&gt;
&lt;p&gt;According to the &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-commit.html&quot; target=&quot;_blank&quot;&gt;man page for git-commit&lt;/a&gt;:
	&lt;blockquote&gt;
		&lt;p&gt;The editor used to edit the commit log message will be chosen from the GIT_EDITOR environment variable, the core.editor configuration variable, the VISUAL environment variable, or the EDITOR environment variable (in that order).&lt;/p&gt;
	&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;We&apos;re going to look at changing the EDITOR environment variable and the core.editor configuration variable.&lt;/p&gt;
&lt;p&gt; 
&lt;h3&gt;Change the EDITOR environment variable&lt;/h3&gt;
&lt;p&gt;Simply add the following line to your .bash_profile:&lt;code&gt;export EDITOR=&quot;/usr/bin/mate -w&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will cause Git to use TextMate, and may also allow other command line tools to use it as well.&lt;/p&gt;
&lt;h3&gt;Change the core.editor configuration variable&lt;/h3&gt;
&lt;p&gt;Issue the following command:&lt;code&gt;git config --global core.editor &quot;mate -w&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is useful if you only want to change the behaviour of Git, and not affect the rest of your environment.&lt;/p&gt; 
				</description>
				
				<category>OS X</category>				
				
				<category>Git</category>				
				
				<pubDate>Thu, 03 Jun 2010 09:23:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/6/3/Using-TextMate-as-the-Default-Editor-for-Git-on-OS-X</guid>
				
			</item>
			
			<item>
				<title>Who Is Using Contexts with ValidateThis, and How?</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/5/19/Who-Is-Using-Contexts-with-ValidateThis-and-How</link>
				<description>
				
				This is being cross-posted from the &lt;a href=&quot;http://groups.google.ca/group/validatethis&quot; target=&quot;_blank&quot;&gt;ValidateThis Google group&lt;/a&gt;
in case there is anyone who uses ValidateThis and reads this blog, but does not subscribe to that group.&lt;/p&gt; 
&lt;p&gt;I&apos;m conducting an informal survey (consisting of this post) to find out who is using the Contexts feature of VT and how they are using it.
 Mark Mandel and I had an interesting conversation the other night about contexts, in which he suggested that contexts might be
unnecessary with some tweaks to the JavaScript that is generated for client-side validations. As we walked through all of the use cases
that I&apos;ve had for contexts it seemed that he was correct (unsurprisingly - he seems to have an annoying habit of being correct about
things), but I imagine that other folks may have found different use cases.&lt;/p&gt;
&lt;p&gt;So, if I could beg a minute or two of your time, for anyone currently
using VT, would you mind answering the following questions:
&lt;ol&gt;
	&lt;li&gt;Do you use contexts?&lt;/li&gt;
	&lt;li&gt;Can you provide me with some examples of what the contexts are? I&apos;m
particularly interested in knowing what problem you are solving by
using the context.&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;Ideally you&apos;d post your responses to the &lt;a href=&quot;http://groups.google.ca/group/validatethis/browse_thread/thread/8b6e42ff5f2457c1&quot; target=&quot;_blank&quot;&gt;thread on the Google group&lt;/a&gt;,
but if you&apos;d rather not do that feel free to leave a comment here or email me directly.&lt;/p&gt;
&lt;p&gt;Thanks for your help with this.&lt;/p&gt; 
				</description>
				
				<category>ValidateThis</category>				
				
				<pubDate>Wed, 19 May 2010 07:33:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/5/19/Who-Is-Using-Contexts-with-ValidateThis-and-How</guid>
				
			</item>
			</channel></rss>