Clean SVN Meta-Data From Project Via Commandline in *Nix

I just ran into a situation that I dont think I have faced before and I thought I would post the solution to the problem for my own future reference and for those of you that may find it useful.

I use CFEclipse and Subversion for working with my projects, but tonight I wanted to copy the contents of one of my project folders into another project folder using the Finder in OS X. So good ‘ole drag-n-drop and I was done. What I didnt take into account was the fact that you cant see all of the “.svn” folders in Finder by default since they are hidden, so all of them were copied into the new projects folder.
Well to say the least I wanted to clean all of that stuff out before I shared the new project folder to an SVN repository. So I opened terminal and had to think of a way to recursively delete the “.svn” folders under every folder in the application. There were 27 instances nested in the application so I didnt want to do each one by hand.
So a bit of Googling and I turned up a neat trick about the ‘rm’ commandline tool that I never knew.
First I wanted to find how many .svn folders I was dealing with so I typed this in the terminal:

find . -type d -name .svn

Which produced a long list of every instance. So it turns out that you can pass that find command to ‘rm’ as an argument and it will delete every instance that is found. It looks something like this:

rm -rf `find . -type d -name .svn`

Notice that the find command is wrapped in those funny grave accent quotes (key to left of ‘1’).
Now I know there is probably a better/faster way to do this with ANT but I dont have ant build files setup for every project. So I just thought that this might be useful.

ColdFusion, Ant and Subversion = AntFarm Build Manager

I have beeen working on a little ColdFusion application at work that will allow us to quickly create builds of our applications and move them to the dev/staging server for us to prepare for testing by our QA team. I have to admit I put off learning Ant for a long time but now I am SO glad that I did.
I got started playing with Ant based on a suggestion from Sean Corfield. I was asking Sean if there were any ways to checkout a copy of the latest code from Subversion and copy it to our dev server without having to do it manually and he quickly pointed me to Ant.So this little application Im calling AntFarm houses configurations of all of our projects and allows you to quickly create builds and deploy them. Its actually coming in quite handy since we have multiple developers all contributing to the same projects in subversion. Here are the features so far:

  • Holds configs for multiple projects
  • Checks code out from your subversion repository based on the project
  • Cleans up the code removing and unwanted files like .project files that somehow always find their way into subversion
  • Dynamically creates the version for the project and appends the subversion revision number to the build
  • Creates a tag in your subversion repository named with the appropriate version
  • Deploys the code to your deployment path (currently only works on local and mapped directories)
  • The project list shows you the latest build version and allows you to open the ant log for that build.
  • Allows use of your own custom build files or use the prepackaged one

Thats about all I can think of for now. Im really wanting to release this as opensource for everyone to modify as they see fit but I have to make sure that my boss doesnt mind since some of it was written on company time. Im sure he will be ok with it.
Its written on CF7 using Fusebox 5 so you will need to install the Fusebox framework as well as the latest version of ant in order to run it.
Heres a little snippet from the build.xml file that I will include with AntFarm. This gets the revision of the checked out code and then writes that to a file. Then I use the REPLACE task to replace that revision number with the full buildversion property. Its really quite nat!


And thats really all there is to that. I will post somemore tomorrow once I make sure its ok to release it.

Sniffing the Model-Glue….

I’ve been coding ColdFusion applications for about 8 years now and I consider myself to be a pretty good developer. I have used Fusebox for every app I have built going all the way back to 1999. I follow pretty sound coding practices and read all the blogs and try to keep up with whats going on in the CF Community. But for some reason, I am just not getting a handle on this Model-Glue thing!
I have spent almost all day today setting up Model-Glue:Unity and trying to get a simple app up and running using a few CFC’s and some views. I read the Model-Glue Quickstart in the documentation and managed to get the basic application template up and running but thats about the extent of it. I feel like someone has Model-Glued my head to the table and then flipped it upside down on me.
I know there is something that I am just missing or not grasping that is preventing me from moving forward with it but I cannot put my finger on it. No matter how many times I go through the code, or read a tutorial or refer to the documentation.
Maybe I have just been doing Fusebox for too long and have no experience with any other frameworks. Maybe my brain just thinks in fuses and circuits and then short-circuits when I try to alter the way that I think about an application.
Im not going to give up but, WOW, I certainly need a break so Im going back to doing some Fusebox development for the evening. Ahhh, the comforting feeling of something familiar!

Are code editors making me dumb?

We are in the process of hiring an architect and another developer and a couple of us started putting together our technical interview questions to prepare for the first round of interviews. While wading through all of the questions, something occured to me. I couldnt answer some of the questions myself!
The questions that were giving me the most trouble were the syntax related questions and picking the right function name out of a group. Come to find out, I wasnt the only one that was having trouble with them. Out of all three developers we have, the one with the least amount of experience has about 4 years of ColdFusion development experience. The next one is about 6 years and I have been developing in ColdFusion for over 8 years now. So why are we having so much trouble with what we considered to be simple questions?As we sat there and talked about the questions and how we actually code, a light bulb went off. Even though we all use different tools for coding like DreamweaverMX, Homesite+ and my favorite CFEclipse, there was one fundamental feature that we have come quite accustomed to using. The pop-up syntax insight! Now, I can remember back in the day of CF 4 spending hours of my free time actually reading the CFML Language Reference that came in the box with ColdFusion. Yeah, thats right, I actually read the entire function reference from front to back. I know, I know. I need a hobby right?
Now that many years have passed and I’m not so much into reading books on programming, has the tag insight function of most editors made me dumb? I agree that its a very great feature and my harmless use of this feature for timesaving when writing code seemed like a great thing at the time, but at what expense?
Typically in CFEclipse I will set the tag insight feature to a delay of 0ms so that it comes up automatically as Im typing. This allows me to only type a few characters of a tag or function before hitting enter and having the tag/function automagically written out for me. The same goes for the attributes of that tag. Im just trying to save myself some time while coding but I feel like years of doing this has made me lazy!
I guess everything is a trade-off. I just hate feeling like Im relying on a feature rather than just utilizing it for timesaving. Maybe I’ll turn that off for a day and see how bad it really affects me.

Trac_Fu

After using Trac for sometime now in our production environment, I have come across quite a few things that I like about it and several things that I dislike about it. This being the case, I decided that I would take it upon myself to write my own issue tracker. I am not very good with Python so I could probably rewrite a system in ColdFusion twice as fast as I could modify Trac to do what I want. So the Trac_Fu project has been born. Trac as in “Trac” obviously and Fu as in “coldFUsion

“. So Im not the most creative namer in the world!
Sticking true to my roots, I am developing it in Fusebox. Im currently using the newly released Fusebox 5 and as of today, Im using Reactor for the back-end model. Progress is pretty good. The stylesheets are mostly done. I have several of the list pages done, most of the database is ready. Speaking of the database, its basically modeled after the Trac database so that I can entertain the idea of porting existing items from Trac to Trac_Fu.
Im using the JavaSVN libraries to hook into subversion as well. Im only going to concentrate on getting the changesets pulled into Trac_fu for the first release. Then the source browser features will follow.
I hope to have some screenshots for you by the first of the week.

CFEclipse Tweaks: Fusebox Specific

Im a recent CFEclipse convert. I have tried to make myself use it many times before but after a few days I didnt feel like I was being very productive so I would always go back to either Homesite+ or DreamWeaverMX and never look back. Over the last 2 weeks I installed CFEclipse and removed DreamweaverMX and Homesite from my box completely in an attempt to “make” myself get used to coding in it.
At first it was a little rough as usual, but once I started playing with all of the settings and tweaking things the way I want it, I really found myself enoying using it. I have found a few plugins that make it easier to do some development and discovered a few tweaks that really helped me to get over the “hump”.
I will be doing a few entries of some of the things that I have found to make my life a little easier with Eclipse.
Today after talking with a few guys on the Fusebox 5 mailing list and playing with the code coloring options, I finally found a way to get my fusebox.xml.cfm and circuit.xml.cfm files to use syntax highlighting. By default Eclipse just uses the CFEclipse editor for them since there is a file type of *.cfm in the file associations preferences. So I thought that I could just add a new file association called *.xml.cfm and point it to my xmlbuddy plugin editor. Well that didnt work. So after maybe 30 minutes of digging through settings, I realized that you could put a whole filename into the file associations and assign an editor to it. So I added both of those file names and assigned xmlbuddy as the editor. Now my xml configs in fusebox are all syntax highlighted!
Stay tuned for more.

FuseBox 5 Officially Released

Sean Corfield has just released the first “official” build of the brand spanking new Fusebox 5 core files. You can download them at Fusebox.org. There is also a skeleton application offered up for download on the same page to help kick start your first FB5 project.
I have been working behind the scenes on a Bug/Issue tracking system written in ColdFusion that is basically a port of Trac and its using FB5 as the framework. All the development so far was based on a general release candidate build that Sean sent me a few weeks ago and so far it has been rock solid. I really like some of the new features that were added and the cool thing is that FB 4.1 apps are completely backwards compatible!!
What are you still doing here??? Go grab the files and start coding something!!

Google Code!!

The ever-expanding Google Empire has moved into a new space with the release of Google Code. Its akin to SourceForge and Tigris in that it provides services for opensource projects. You get a built-in Issue Tracker, Subversion repositories, and all kinds of neat little tools. I setup a project on there to see what the interface was like and I was quite impressed with its simplicity.
Even though Im a contributor to 4 different projects on SourceForge, it has always been a bit “overcomplicated” to me. At first there was a HUGE learning curve and tons of documentation to read on trying to get the CVS access setup and the file upload setup to release builds. After 4 or 5 years now it seems like second nature but I remember being very frustrated with it for weeks when I first got started.
The Google Code project is MUCH simpler. Its interface like all things Google is very clean and uncluttered. The management interface has a vew options that provide most all the functionality you will need without over-compicating things.
One caveat is that you must have a gmail account in order to setup a project but I would assume that most people have at least one now.
Head over to the Google Code page and get your OpenSource projects setup now and remember to always, “Release Early, Release Often”!!

Whitespace Management in ColdFusion

Was doing my daily rounds of the CF Blogs and came accross a nice piece of information that I thought I would share. Ray Camden has written a great post about the ways to battle the dreaded whitespace generated by ColdFusion.
Im probably as guilty as the next guy about not thinking about doing some of these things in my coding. I guess I’ve got something else to start working on.

Ray Camdens SPRY and CF Presentation

I just finished sitting in on the Breeze presenation that Ray Camden gave to the Detroit Users Group on SPRY and ColdFusion. I have to admit, I have always been a little hesitant to mess with AJAX at all. Mainly due to the complexity of some of the implementations that I looked at early on in its release.
I must say that Ray’s presentation really showed how simple the SPRY framework is to use. I was actually excited to download it and try it out for myself.
The Breeze presentation was recorded so it should surface on Rays blog within a day or two. Definately worth the hour and a half that it will take to watch it! Ray gives a ton of examples during the presentation and show how he integrated it with ColdFusion in BlogCFC as well.