Announcing ColdFire

If you have attended any of my Spry presentations, you have heard me sing the praises of Firebug, the best Firefox extension ever created. About once a week I discover something new about it that just amazes me.

About a week or so ago I discovered that Firebug, a Firefox extension, can also be extended. Turns out someone made FirePHP, an add on to Firebug that lets you do basic debugging of PHP code in Firebug.

Now I don't know about you guys - but I think anything the PHP folks can do we can do better. (And easier. And quicker...) So I started looking into how this could be added to Firebug. Turns out working with Firefox is a bit complex. Luckily I found out that Adam Podolnick (Podman on the CF IRC channel) was experienced with it. I've had plenty of experience working with ColdFusion's debug templates. So we teamed up to create ColdFire.

ColdFire is a plugin that will let you view debugging information in Firebug instead of a giant dump at the bottom of the page. This is especially useful in cases where ColdFusion's debug output doesn't play well with CSS based sites. Right now it is not quite ready for release, but Adam and I hope to have a 1.0 release sometime soon. Here are a few screen shots. Click the image for a larger picture.

The first screen shots shows the General Information tab. This is basic information about the request including server level, template, and other pieces of information. Unlike the built-in debug template, I also added support to show the current active application, if one exists.

This second screen shot shows the template display. Note how you can tell regular templates from includes, custom tags, and CFCs. Also note the red background on slow templates. We may add filtering so you can restrict the display to just one template or method. This would be useful when you are working on cutting down the execution time of just one part of the request.

Last is the query display. As you can see, it shows each query along with the SQL. This will probably need a bit more work for larger queries. Since I was able to use the code from Starfish, the queries will automatically replace cfqueryparam values with their real data, so you won't see ? in the SQL.

So - what do you guys think? Useful?

Comments

I like the look of that. I definately think it will be useful
# Posted By Jay McConathy | 3/9/07 10:12 AM
This looks great Ray, well done to you both. If you need beta testers please let me know. I find the data sources on the 3rd screen shot quite amusing... sorry is that childish... ;)
# Posted By Nick Tong | 3/9/07 10:16 AM
Nice Ray, sounds like a great tool, I'm first in line to be a Beta or Alpha tester hehe.
# Posted By John Ramon | 3/9/07 10:16 AM
Very nice! Just make sure it is Mac OS X Compatable.
# Posted By Mike Elston | 3/9/07 10:16 AM
Very nice...

What needs to be enabled on the server / in the application in the terms of debugging settings?
# Posted By Danlance | 3/9/07 10:17 AM
Nick - what are you - 2 years old? ;)

Danlance - You turn on debugging, select coldfire as the template, and that's it.
# Posted By Raymond Camden | 3/9/07 10:20 AM
Elston - I demonstrated this at CFUNITED/Express... on my Mac.
# Posted By Raymond Camden | 3/9/07 10:21 AM
This is great!!!!! Firebug is the ultimate debugging tool and having CF debugging available as well would make it just awesome. Especially love how you've made it even better than the standard stuff by reconverting the cfqueryparam variables. Great work Ray and Adam!!!
# Posted By Joe Danziger | 3/9/07 10:21 AM
Awsome
# Posted By Shlomy Gantz | 3/9/07 10:24 AM
Is it ready yet? It's been like over 15 minutes! Come on already :)
# Posted By Jeremy Prevost | 3/9/07 10:29 AM
That's brilliant Ray. I can't wait for it to be released. Here's one more beta tester if you need.

Cheers
# Posted By Marcos Placona | 3/9/07 10:36 AM
Count me in for beta testing, this looks amazing.
# Posted By Ryan Arneson | 3/9/07 10:44 AM
I'd have to argue that the web developer toolbar is the best, but firebug is right up there with it.

Now about that beta testing. :)
# Posted By Michael Dinowitz | 3/9/07 10:45 AM
Amazing work Ray! Add +1 to the list of beta / alpha testers ;)
# Posted By Rich Kroll | 3/9/07 10:53 AM
How is it going to function with fusebox and AJAX?

In Fusebox 5 you have to disable query execution time.. since the fusebox cfc's are clogging the debug parsing time.
# Posted By Frederic Fortier | 3/9/07 11:00 AM
AJAX: Good question. Let's say you load foo.cfm, and foo.cfm does an ajax call to goo.cfm. RIght now ColdFire shows the _main_ debug info, which is foo.cfm. Adam has said he thinks hew can make it support N sets of data per request, so we may have all soon. This will be HUGE as right now you can't do debugging with ajax since it adds crap to the output stream. Since ColdFire is all header based, this would not be an issue.

Fusebox: Well, as I said, we should be adding a filter. This will let you drill down to specific entries. It was not intended to remove entries, but you could do that to focus on non-fusebox stuff.
# Posted By Raymond Camden | 3/9/07 11:04 AM
bring it on! we've got a few sites we've built in the past where we had to turn off debugging output cause it mucked with JS or CSS or something else.
# Posted By jonese | 3/9/07 11:05 AM
This looks great! I always have Firebug open so this would be really convenient!!

Release it to the masses!!! :)
# Posted By Jim Prist | 3/9/07 11:19 AM
Very cool. We love FireBug here, these days you really just can't work without it. This extension onto it would be great. Count me in for testing.
# Posted By Nick Walters | 3/9/07 11:20 AM
Wow! I'm so excited---I can hardly wait to try this. I love Firebug and this would only add to its usefulness. Thank you for taking on this project!
# Posted By Richard Davies | 3/9/07 11:24 AM
Awesome! You just made my friday.
# Posted By Sam Curren | 3/9/07 11:25 AM
Well if you guys can make the AJAX integration. That is just going to be awesome.. but it still will be without it :-)

Thanks a lot.

Good work!
# Posted By Frederic Fortier | 3/9/07 11:37 AM
This sounds awesome.

When displaying queries could it parse the real values in and not the ? when using cfqueryparam?

AJAX support would be amazing.
# Posted By Sam Farmer | 3/9/07 11:40 AM
Sam, I think you missed some of my text in the entry. The code does replace the ? from cfqueryparam. A lot of ColdFire comes from the old Starfish.
# Posted By Raymond Camden | 3/9/07 11:46 AM
This is really sweet. What a fantastic idea... Thank you Ray!

>support N sets of data per request

Will it support -gag- frames and allow viewing the debug info of each frame in the current set? I'm personally not a frames-lover (or even liker) but I've got to support some legacy apps that make extensive use of them (they were so cool in 1998! ;). It's tough to get debugging info out of very small frames and this would make life so much easier.

If frames support isn't planned and this sounds like a feature request on a piece of software that isn't even released yet, then my apologies for that. I'm really looking forward to something to squash the CSS positioning headaches with debug info once and for all. Woohoo!
# Posted By Scott Krebs | 3/9/07 11:47 AM
Frederic - no promises. But - at a bare minimum - you can have debug turned on and it won't _break_ AJAX requests
# Posted By Raymond Camden | 3/9/07 11:50 AM
Scott, I believe this is all related to the AJAX stuff. Ie, if one URL has N sets of data than it should work. Should. Again - this is Adam's area here so I don't want to over promise.
# Posted By Raymond Camden | 3/9/07 11:53 AM
This is fantastic! I'm working on a project now that suffers from the "CSS Ate My Debugging" syndrome :) Firebug is incredible, and this will only add to its indispensability. If this is an unofficial beta signup page, count me in! Would love to see an extension to ModelGlue that made its debug output available too.
# Posted By Ken Dunnington | 3/9/07 11:58 AM
There may be some confusion. When I asked if people would be interested, I didn't mean in the beta, but in the product as a whole. Ie, "Does this make sense?".

There won't be a beta sign up or anything, I'll just post the bits to my blog. It will open to all.

Oh wait - no - um - the beta is available to anyone who visits the wishlist! Or gets me a good import beer! There we go! ;)
# Posted By Raymond Camden | 3/9/07 12:01 PM
This would be perfect for remote servers that do not have debug turned on like on jodohost.com. It is maddening not being able to see debug when I write such sloppy code.
This would save me hours of frustration!!!
# Posted By Don | 3/9/07 12:09 PM
This is a top idea!

Well done!
# Posted By David Stockton | 3/9/07 12:09 PM
Don, the best solution is to download a Developer Version of ColdFusion and run locally.
# Posted By John Ramon | 3/9/07 12:14 PM
Fantastic! What about variables? I didn't see anything in the screenshots. Also, assuming variable dump will be included, would there be any way to add in my own scope as I've done in existing debug?

Very cool idea Ray! Thanks for all your hard work.
# Posted By jeff | 3/9/07 12:17 PM
A big woot! I use Firebug all the time, this makes it even more useful. Good job.
# Posted By Joel Cox | 3/9/07 12:23 PM
Ray,

That looks really cool! Kudos to you and Adam for coming up with this. I look forward to hearing more about it.
# Posted By Brian Swartzfager | 3/9/07 12:35 PM
Brilliant!!! I can't wait for ColdFire's release. I've been doing a lot of sites with CSS layouts so this will be a huge help!
# Posted By Kurt Bonent | 3/9/07 12:40 PM
Ray,

Once you get this wrapped up let me know because it would be the ideal thing to port the ModelGlue debugging info into this.

- Roy
# Posted By Roy Martin | 3/9/07 12:43 PM
I dont know where I might fit into this, but if you need any help feel free to hollar. =) This looks awesome.
# Posted By Justice | 3/9/07 12:45 PM
Late to the party, but looks like a promising tool. By the way, for Michael Dinowitz, I use a combination of Web Developer and FireBug--they each have their strengths. I love the ability of FireBug to integrate through such an extensible interface. Pretty awesome Ray!

Mark
# Posted By Mark Mazelin | 3/9/07 12:57 PM
This looks like it will be a great addition to the toolboxes. I love firebug more everyday especially with some of these css challenged sites I've had to help on. Thanks as always :)
# Posted By DK | 3/9/07 12:58 PM
very cool. I've just begun to learn of the beauty that is firebug, so to find out there is similar support for php and now CF is great.

So, how about ASP now?
# Posted By Jeff Wilkinson | 3/9/07 1:03 PM
I am definitely looking forward to using this.

I love Firebug and often thought it would be great if I could do CF with it as well.

Michael
# Posted By Michael Brennan-White | 3/9/07 1:04 PM
Lots of stuff here. Nice.

So first off - I didn't consider it for ModelGlue. It _may_ be something to consider. We could make ColdFire extensible, where if it finds a header of the form coldfire_XXXX, then it tries to parse XXX. It would only support simple datasets, but, it could be possible. Definitely a 2.0 thing. ;)

Jeff - I'll do an ASP one when they pry the CF from my cold, dead, hands. :)
# Posted By Raymond Camden | 3/9/07 1:11 PM
I just want a R2D2 mailbox...
# Posted By Scott P | 3/9/07 1:21 PM
I just want Starbuck back...
# Posted By Raymond Camden | 3/9/07 1:28 PM
tes
# Posted By Mike | 3/9/07 1:57 PM
Definitely looks cool and useful. Wouldn't mind giving it a spin when it is completed.
# Posted By Alfio | 3/9/07 1:58 PM
dsa
# Posted By desd | 3/9/07 1:59 PM
AHA! So THAT is where that CF tab in Firebug came from in your demo to the NZ Folks! Sneaky! Very Sneaky! But also WAY cool!
# Posted By Sid Wing | 3/9/07 2:16 PM
Looks great! Definitely would use this.
# Posted By Adam Fortuna | 3/9/07 2:39 PM
This would certainly get me to install FireBug. Looks awesome Ray. When can we have it? :)
# Posted By Sean Corfield | 3/9/07 4:19 PM
Brilliannttt!
# Posted By Sam Clement | 3/9/07 5:00 PM
As an FYI, I just added Total Execution Time and CFTRACE support on the server side. Next will be CFTIMER, EXCEPTIONS.

And not to get too wild.... but RDS is really just HTTP calls. If you look at Dreamweaver, it just does HTTP calls to get data. It is possible to enable RDS support via the plugin to let you browse DBs, and even see source code for files. Now mind you - I'm just talking wildly here so take this with a gigantic grain of salt.
# Posted By Raymond Camden | 3/9/07 5:12 PM
That is awesome! Count me in for beta testing!
# Posted By Jaana Gilbert | 3/9/07 6:45 PM
How can we help?
# Posted By Matt | 3/9/07 8:12 PM
Matt, it will be hosted at RIAForge, which means that you will be able to log issues and help us debug.
# Posted By Raymond Camden | 3/9/07 9:17 PM
To borrow a phrase...

"Insanely Great!"
# Posted By Jay Greer | 3/10/07 1:31 AM
Wow - 55 replies in 8 hours. I think that answers your question Ray
# Posted By Richard Tugwell | 3/10/07 2:46 AM
Great stuff. I just started getting used to this Firebug thingie.

How can I sign up to be notified when it becomes available?
# Posted By William from Lagos | 3/10/07 12:35 PM
Great stuff. I just started getting used to this Firebug thingie.

How can I sign up to be notified when it becomes available?
# Posted By William from Lagos | 3/10/07 12:35 PM
"Oh wait - no - um - the beta is available to anyone who visits the wishlist! Or gets me a good import beer! There we go! ;)" - LOL! If I make it to cf.Objective I'll try to sneak some homebrew on the plane, does that count? :)
# Posted By Ken Dunnington | 3/10/07 1:20 PM
I've had a few more repeats on this so I'll say it again. You do not need to sign up. I'll be posting the bits when they are ready (which should be very soon). So... stop asking how to get the bits. ;)
# Posted By Raymond Camden | 3/10/07 1:43 PM
@Ray -- Great stuff about the cfqueryparam being replaced. Thats my bad for not actually reading the whole entry. Damn reading....
# Posted By Sam Farmer | 3/10/07 2:02 PM
Sam: Yeah, the feature isn't perfect. Like for example, if you had name = <cfqueryparam ...>, you will see name = foo, where in reality it should be name = 'foo', but I figure people can deal.

Again - a lot of this was already done in Starfish - I'm just using the old code with some new updates.
# Posted By Raymond Camden | 3/10/07 2:16 PM
PLEASE tell me this is coming out soon! It might be a dream come true for me, honestly, you know exactly what some people just need!
# Posted By Alexander | 3/10/07 9:20 PM
I remember you pointed that out when I said "Hey, Look, PHP!" when you did the Spry presentation to the Auckland CFUG.

I'm looking forward to it being ready!
# Posted By David Harris | 3/10/07 9:55 PM
Is it ready yet? jk! :)
# Posted By Anand Paleja` | 3/12/07 7:59 AM
Looks *very* useful! Will be installing it as soon as it's available.
# Posted By Paul Glover | 3/12/07 12:30 PM
@ Ray: way off topic, but you started it :)
I want Starbuck back too! What the heck were they thinking? That said, I want Cylons back too! Season 3=yawn (with a few exceptions).
# Posted By Jeremy Prevost | 3/12/07 4:01 PM
Awesome, can't wait!
# Posted By Brandner | 3/12/07 4:49 PM
hmm...what to say that's not said already?

Awesome, cool, rocking, miindblowing - please apply the one(s) that are not already used.

I'm using Firebug all the time, and I won't be using it any less once this get out.
# Posted By Trond Ulseth | 3/13/07 3:46 AM
This rocks. Unfortunately my work development environment is all done on a shared CF web server. So I can't hook up the ColdFire.cfm to debugging without affecting everyone else.

But it's an awesome tool.
# Posted By Dave Konopka | 3/15/07 8:07 AM
Looks like a great tool, Ray!

I wouldn't mind Alpha/Beta testing it!
# Posted By Tak | 5/8/07 8:34 AM
It has been out for a few months now. :) Still considering it 'beta' though.
# Posted By Raymond Camden | 5/8/07 8:39 AM
Unfortunately my work development environment is all done on a shared CF web server
yes.
# Posted By JOZEPH | 12/30/07 6:14 PM
If this is an unofficial beta signup page, count me in! Would love to see an extension to ModelGlue that made its debug output available too.
# Posted By SEO | 1/21/08 3:48 PM
It was released sometime ago. http://coldfire.riaforge.org
# Posted By Raymond Camden | 1/21/08 3:52 PM