Monday, November 28, 2005

ColdFusion: #19 With a Bullet

As most of you already saw posted elsewhere, ColdFusion recently took a bit of a jump up to #19 on TIOBE's index of most popular programming languages. I hadn't looked at this index in a while but it's interesting to see what CF is both above and below, and it's also nice to see the nine green up arrows next to it on the chart.

What's more interesting to me is what this really means. Yes, many have criticized the TIOBE methodology (usually when it doesn't work in their favor), so let's not focus on the specifics. Instead, let's take a look at the bigger picture, where things are going, what I think are some important convergences happening now and likely to happen in the future, and how CF fits into all of this.

First, if you haven't seen them already you need to check out Sean Corfield's blog and the entry by Hal Helms to which Sean refers. Read these first and let them sink in ...

Now that you're back, let's put this into perspective. I think the major thing Hal points out that's dead on is that there's a shift happening, and it goes far beyond just Ruby. In my mind this shift started quite a while back when people started questioning the complexity of EJB and opting to use POJOs because they're far simpler and they get the job done. Why make things more complex than they need to be?

Even further back there was an initiative in the Java Community Process (JCP) to allow scripting languages to tie in with Java. (Sound familiar?) Again this is in response to unnecessary complexity with the 800 pound gorilla languages like Java. Java's great, I love it, but for a lot of purposes it's just too much.

Enter Ruby, which regardless of what you think about it (jury's still out for me personally) is gaining a lot of attention for these exact reasons. Ruby and specifically the Rails framework takes a great deal of the gruntwork out of web development and as Hal points out, seems to revel in its perceived inferiorities when compared with something like Java. I can't find the study off-hand, but about 9 months ago a study came out outlining the huge productivity gains many companies are seeing when using one of the "P" languages (typically PHP, Python, or perhaps Perl to a lesser extent these days) as opposed to Java. It took businesses a while to get it but the tide is starting to turn, and Ruby is in the right place at the right time.

The really interesting thing to me about Ruby ever since I first looked into it is how gosh darn similar it is in concept to CF. Huge libraries of common functions to make life easier for the developer, and enough power to do fantastic things without introducing unnecessary complexities. The days of wearing a Java badge of pride are starting to fade and companies are more interested in Getting Things Done(tm) than they are in telling their buddies on the golf course that they're using EJBs.

The other thing that's going on in CF these days is an explosion of great tools that allow CF to rival many of the other web development technologies out there. Things like Arf!, Mach-II, ColdSpring, and the numerous other development and ORM-type frameworks sprouting up these days are great, and they all have their "CF-ness" in common, meaning give CFers the power of these tools without unnecessary complexity, all in the name of getting stuff done faster and better than with any other technology.

Add to all of this ColdFusion 7 itself, which is in my humble opinion light-years ahead of pretty much any other technology out there. At this point I feel like I've still only begun to scratch the surface of what CF 7 can do, and when you combine the great features of the product itself with the extremely powerful tools becoming available, not to mention CF's long tradition of keeping things simple and keeping developers highly productive, you can start to see how bright the future is looking.

I'm sure I'll have more to say on this in the near future, and I'd love to hear your thoughts as well. I and most other CFers have been fighting the good fight for a long time now and I think finally the IT community as a whole is starting to see the value of what CF has been about at its heart since the beginning. The real bonus is going to be when people see not only that CF solves many of the same problems Ruby purports to (Ruby being the "new hotness" at the moment), but that CF has been around for a very long time, is an extremely mature, feature-rich product, and that it ties in so insanely well with Java so you can use that bit of added power when you need it.

Keep up the great work CFers and keep on keepin' on. Things are only going to get better from here on out!


Comments


This is good discussion of cold fusion and good comparision wtih ruby.

We teach it easier to train CF programmers than in java or c++ or anything else, being it is a very simple language that amateurs can learn and use.

Pleas continue to be writing about the CF, it is good and easy to use for basics. very powerful too for web use.



One of the things that gives other languages the edge is that they are taught at the college-level. My school was heavy into both Java and Microsoft ASP at the time I attended. When I contacted Macromedia, they had little or no support to interface with colleges. Both SUN and Microsoft do that. What we are talking about, changes in the industry and so on, needs to reflect at schools as well, and I hope Adobe will do a better job at that.


I agree. I'm a student myself and it's all Java and Visual C++ around here.

You get to talking about tag-based languages here and everyone kind of goes limp and starts mumbling at PHP.

This is unfortunate, I think ColdFusion is totally awesome for web development, and with the way things are going, I bet you'll find that increasingly there'll be less and less desktop application development, and more and more web/tag programming.

In another thread, someone was getting into a flamewar about macintoshes vs. wintel systems, and I think it's safe to say that there's an analogy to be drawn between Apple's innovations 20 years ago and CF's innovations today.

CF may not get credit for a lot of the great things it does, but people are silently observing, and copying...



Yep, that's a great point. I use a macintosh all the time, and get ALL kinds of crap for it, but you know? It's a far superior system to windows, and as time goes on, windows gets more and more mac-like.

I predict .NET will get more and more CF-like as time goes on. Heck, once M$ buys adobe, it'll all be over then ;)



I have a question. Do you think Macromedia should embed a ColdFusion engine in the Shockwave/Flash players so the integration with CF and Flash would be complete?

I just got back drunk from the bar and can't get over whata good idea that sounds like!!!!11



Think about it when you're sober and see if it still sounds like a good idea. ;-)


Actually, the idea is not as far-fetched as it may seem. Here is a perfect opportunity to replace the stodgy Actionscript 2.0 with a full-featured, object-oriented Real Language. What's not to like?


http://slashdot.org/pollBooth.pl?qid=1321&aid=-1


Hey there, sparky. Are you ever going to update this blog, or am I going to have to spend the day at myspace.com and do searches for hot chicks who are also macromedia flash designers?


I found a link to what I think is the same report about the "P" languages to which I refer:
http://www.internetnews.com/dev-news/article.php/3492771

Saturday, November 26, 2005

ColdSpring: Better Model Management

I've been working for a couple of days on MachBlog, which I hope will become a great real-world sample app for Mach-II and maybe even something people will actually use. ;-) I'm also using this as my opportunity to dive in and learn ColdSpring, which if you haven't looked into it yet is an Inversion of Control/Dependency Injection framework for ColdFusion that plays very nicely with Mach-II.

Even in something as relatively simple as a Blog app when it's built with a domain model things can get semi-messy rather quickly. Just as a very simple example, numerous objects in the app of course use a datasource, and I'm encapsulating the datasource information in a simple datasource bean. The datasource bean in turn contains information such as the ColdFusion datasource name, the database type (SQL Server, MySQL, etc.), and the database user name and password in the event the app is used in an environment that requires this information.

Even if the datasource bean parameters are stored in a traditional configuration file of some sort, having to construct that datasource bean every single time I need it within my other objects can get rather cumbersome. Now imagine nested objects, for example a UserService that contains a UserGateway and UserDAO, and each of these objects needs a datasource bean. Managing even that simple scenario is already getting nasty.

Enter ColdSpring, which manages all this junk for you. By using a simple XML configuration file and in my case the Mach-II plugin, I don't have to worry about all that stuff. I just tell ColdSpring how the objects related to one another and in my CFCs I indicate that these dependent objects are arguments to an init method, and that's it. I don't have to worry about nested objects within my CFCs or even calling CreateObject() for the objects I need. Using the example above, if my UserService needs a UserGateway, and the UserGateway needs a datasource bean, all I have in my UserService's init method is the UserGateway indicated as an argument to the method. Then I can set that argument to the variables scope or do anything else I want to with it, but ColdSpring "gives" the UserService the appropriately configured UserGateway object.

I'll post more as I build this app out but I'm already seeing a huge benefit to doing things this way. It reduces complexity and increases flexibility, and your model doesn't have to know a single thing about ColdSpring to take advantage of this. In Mach-II's case the only objects that have to know about ColdSpring are the listeners. Bravo to Dave Ross and Chris Scott--keep up the great work on this!


Comments


I'm currently developing a Mach-ii application where each database record is stamped with the username and date-time when modified. I'm thinking that injecting my session facade into the DAO objects with ColdSpring might make this process a little easier.

Monday, November 21, 2005

BoardFusion on SourceForge

The BoardFusion project is now live on SourceForge.net. You'll notice you don't see anything on that page yet. That's a hint of sorts I suppose. I realize we're getting into the holiday season here in the U.S., but I want to start at least getting solid volunteers and putting the right people in place to make this project successful.

First and foremost we need a great designer or two. We'll be hosting the development on SourceForge (for now at least), but the project will have its own web site as well, and we'll want that to look top-notch and of course we'll need a great logo. Also, since we're starting this from scratch as opposed to copying another application, I want to do this in a FLiP-like manner, meaning HTML prototyping will happen very early in the process. I know opinions on this differ a bit, but I can unequivocally say that from my own experience the projects I've worked on that have gone the most smoothly have all had the front-end complete prior to very much code being written. So we'll need a great UI and we'll also want to start thinking about making this PAINFULLY easy to skin right from the outset. I think that the more easy BoardFusion is to skin, the more successful it will be in the long run.

So let's get the ball rolling. I'll announce this some other places as well since I know not everyone on the planet reads my blog. If you have general discussion-type stuff please feel free to comment to this entry. If you want to be involved please email me directly at matt@mattwoodward.com and go ahead and sign up for an account on SourceForge if you don't already have one. Then we can move the discussion and coding over there.


I'm really excited to see where this goes!


Comments


Will it be based on a specific framework (FB,MII,MG,Arf!,Reactor,...)?

It would be very nice if we could use a Flex2 UI. With Arf! or Reactor we could easely adapt it.




The framework question is yet to be determined--we have to balance the obvious benefits of using a framework with the fact that we'll want this to be painfully easy to deploy in a shared hosting environment. I'm obviously very partial to Mach-II but I don't want the framework discussion to overshadow what we're trying to accomplish here; it should just be a tool we end up using or not using after having a discussion about it. I will say that doing team development is infinitely easier with a framework IMO.

Having a Flex 2 UI has been mentioned by several people and I think it's an achievable goal, but I want to focus initially on getting the "guts" of the thing nice and solid with a great HTML-based UI, and if we build it right it should be relatively easy to hook a Flex 2 front-end onto it.



Nice. Ya definitely very pro plug and play. But try to put as much of the get/set logic in CFC's that a Flex UI could tap into later. I can also help out on the design aspect as well, you can check out my sites for my design style (www.dopejam.com, www.cflex.net, www.aftershox.com, www.tracylandscape.com, etc...).


of course its going to be i18n from the get-go, right?


That depends Paul, are you volunteering? ;-) I definitely think it should be so I'll study up on what you've done with Ray Camden on his blog as a bit of a crash course.


Thanks Tariq--we coders tend to need all the design help we can get!


I've tried to build a project like this sometime ago, never left the early stages, so i'll try to contribute to this one. A litle bit codind ( maybe throw some ideas, fixes, bug hunting ) but specially give some design help.
I don't hv much time in my hands nowadays but ill try to come up with a logo and icon design, even if is not chosen to be the official one, i tried =D Just give me a couple of days and ill send u an email with a logo sample ( or not a sample ) for u to check.

Happy coding !
Daniel



Very cool Daniel--if we could have multiple people submit logo ideas that would be great!


Hey Matt,

I was a senior developer in the CFOpenBB includes team with you. I'd like to help out in any way possible, except for graphics or design.

But if you need me to take on any programming portion, let me know.

Send me an email off-line, and let me know what positions or tasks you have available.

Thanks,
Ali



Matt,

Are I know you asked for volunteers in an earlier blog entry (I volunteered). Are you going to just grab the email addresses from that blog entry along with this one or are you going to have a more formal call for volunteers?



Ray, I'll probably gather the emails up from everywhere and send out a blast, accompanied with a blog post to make sure I didn't miss anyone.


The logic enclosed within the cf language is more than enough to build a nice forum app.

I will work on getting some cf related forum work together for a review. I have it running with just 3 tabels - forums, threads and threadsubs. Its more a plugin I wrote for one site and halfway done working on it for another.

Anyways, its just cfcs and a few pages. Nothing real specatacular but it has been running a very important internal discussion forum for some time.


Saturday, November 19, 2005

BoardFusion It Is!

After I got quite a decent response both here as well as via e-mail to my question about resurrecting cfopenbb, I've decided to take things in a slightly different direction and give the project a new name: BoardFusion. I've submitted it as a project on SourceForge which is pending approval, so once that's up and running I'll get everyone more info.

I think this is going to be a great project and given some of the folks that have expressed interest, we're going to have some very talented CFers involved.




Comments


I was on the CFopenBB project, too.
Count me in! Contact me via email if you need any help setting up guidelines or anything.


Please tell me you're planning to write BoardFusion from scratch rather than attempt a line-by-line port of the original?


Absolutely Sean--trying to port phpbb line by line is one of the big things I thought was wrong with the original concept. This will be created from the ground up.


I was on the cfopenbb as a tester - glad to see that the idea isn't dead.

I know its probably too late now but 'BoardFusion'? Sounds too much like 'BoredFusion'. Were FusionForum, ForumFusion, etc taken?



Funny Matthew--I thought this same thing at first. Maybe it's still a valid concern. We can continue to brainstorm on the name, but ForumFusion (which I prefer over FusionForum) is taken as a .com, but the .org version is available. Not saying that should necessarily dictate the name choice but having a domain name match the product certainly doesn't hurt. The only other issue, also minor, is that the BoardFusion project was just approved on SourceForge.net today, and I'm not sure what's involved with changing the name, etc.

Long and short of this is I'm not married to BoardFusion but it is a bit in process at this point. Nothing that can't be changed I'm sure.



No biggie - I figured that the wheels were already in motion. Also, it might be an issue for the released package but there is certainly more than enough to do between now and then.

Was a feature spec doc ever created for cfopenbb? If its going to be written from the ground up to emulate phpbb's feature set I would imagine that analysis would have to be done.



Not sure about a spec doc for cfopenbb--I didn't ever see one but I'll ask.


There never was a spec doc created...


Great to see someone picking up the banner on this project!

As far as naming, take what I'm about to say with a grain of salt, considering "BoardFusion" is incredibly close to "BlogFusion" (my product). I've been considering options for moving BlogFusion to open source/free non-commercial usage/etc., so it'd suck to have confusion there. (Full disclaimer - I filed for a trademark on BlogFusion a while back)

As far as naming, internet marketing guru had a great article about naming a while back:

http://sethgodin.typepad.com/seths_blog/2005/10/the_new_rules_o.html

also here:

http://www.onedegree.ca/2005/10/16/silly-names-are-back-and-thats-a-good-thing

Honestly, if I had it to do over, I'd probably choose something less "generic" for my blogging app's name.






 


Tuesday, November 15, 2005

Should We Resurrect cfopenBB?

As many of you are probably aware, the cfopenbb project never really got off the ground. A few weeks ago it was officially abandoned. While I think it was a great idea, in my opinion the execution plan was flawed from the beginning because it was an attempt to do a file-by-file port of phpbb. As you can imagine this caused numerous issues and combined with the lack of clear decisions about how to handle the PHP -> CF mismatches, it's probably no surprise this didn't take off. I'm not saying any of this to criticize so much as to point out why in my estimation things never took off.

As I said above, however, I think it was a great idea, and while I didn't have the time to take up the former leader of the project on the offer to take things over before it got abandoned, I think at some point it would be great to readdress the project, albeit in a different way. When I see how many deployments there are of phpbb and some of the really, really nice free .NET message board apps out there, I know we as a community can match or better these offerings with ColdFusion.

So what I'd really like to do is get a sense of how many people think A) coming up with a world-class, free message board app is a good idea, and B) how many people would be interested in helping with the development. This isn't a commitment, it's just to gauge interest at this point. And before you answer, consider this a clean slate--it doesn't have to (nor should it, really) be approached in the same way cfopenbb was originally. We could take this in any direction that makes sense.

Post comments here if you're interested or have other thoughts on this potential endeavor.


Comments


I would like to be apart of this project! Please keep me up to date.


I think its a great project and idea, and would really love to see it happen. I would be willing to help out as I could, but couldn't commit to a full time role by any means.


same for me - would like to join. I was in the original cfopenBB list.

I would support to go for a 'modern' cfBB app, build with a cfframework not a file-per-file port of phpBB.



This sounds very interesting. The more free full scale tools that are out there the better for the CF community.


I'm all for more open source CF! Rock On!


Yes... I would really like to participate!!


I definitely have code to contribute. I think it would be a good idea to try to resurrect, and I agree with you that a straight port would not be the best way to go. I've implemented phpbb and looked around inside the code. A cf solution should take it's own direction.


Excellent--thanks for the feedback everyone. What's the next step? Should we get things rolling over at someplace like tigris, or just come up with our own setup? I'm certainly not averse to hosting it myself somewhere.

How about a name? Should I see if we can adopt cfopenbb or do you want to come up with something else?



I would love to be a part of this project in any capacity.


Would definitely like to help out here. Is FuseBoard already taken?

Eric



I would definitely be willing to help out.

As someone who volunteered for cfopenBB my opinion is that trying to port phpBB line for line was a major factor in it not getting off the ground. I don't know php and I think a lot of the other volunteers didn't either so we were looking for some direction from someone who did. That direction never came.

It would be cool to have both html and flex as front end and admin options.




As for names....how about BoardFusion?


Cool--keep the name suggestions coming. FuseBoard and BoardFusion have both been suggested. I'm a bit partial to FuseBoard myself, but let's keep brainstorming! Remember, it's all in the marketing! ;-)


I was one of the team leads on this project (as you know Matt), and I agree with your assessments. I would also vote that whomever takes the lead on the project has time to answer questions and stay involved. I know it's no one's full time job, but it can be frustrating not to get answers to questions.


Actually I take that back--I think boardfusion is a bit better. Plus fuseboard.org is already taken. I actually started (prior to cfopenbb) building a message board that was meant to look and work like phpBB but under the hood was completely different and called it "interfuse" but I'm not sure I like that name anymore.


I went ahead and registered the domain name boardfusion.org just in case that's the name we end up using.


Ya boardfusion sounds cool. At my last job we used FuseTalk, it was ok, didn't take too long to integrate. The forum idea has been around for awhile and all forums have basic functionality; so aside from that integration into existing stuff is a key feature (single signon and all that).


This is just an opinion, but I dont really care what its called, because it really should be able to be rebranded however the user wants. It should have the obligitory footer, but I hope its not going to be branded very much.

Also, I hope we start out small and make sure we nail the essentials before moving on to the fluff. For instance, I would really like to see something like punbb (http://www.punbb.org) starting out and then add the extra features later in the release cycle.

sorry if this is more input than you are really asking for at this point.



Matt, email me - I work for an ISP so I can get us free hosting and ill pickup the domain name if it still needs to be done.


Dan's been nice enough to offer hosting for the "official" web site for the project, which unless there are any major objections we'll call BoardFusion. I'll get CVS or SVN hosting figured out as well as a dev site set up and we should be able to get rolling!

There are other infrastructure concerns of course, with communication being the main one. How do those of you interested in participating want to communicate? Mailing list? Yahoo group or something similar? Message board hosted on our own server? Let's get that figured out ASAP.



I went ahead and created a project for BoardFusion on tigris. (Sorry, but cfopen.org is just too unreliable for me to put things there.) I'll get everyone more details once the project is approved.


I used to be a PHP developer for the majority of my web development career, but I have found such a love for ColdFusion and what it can accomplish that I left the PHP language and went straight into ColdFusion and haven't really wanted to turn back. I'm open to help with anything that I can. I'm a CSS guru and have been working with ColdFusion for a while now.

I feel the more we push towards an Open Source CF community the more CF will see developers coming to it, especially as now ColdFusion hosting is becoming cheaper by the day!

What about this name: Fusion Forum

- Tony




Cool Tony--we've already started up but you're welcome to join. Just create an account at sourceforge.net if you don't already have one and email your user name to me at mpwoodward@gmail.com and I'll get you added to the project.


Glad to hear its underway! CF needs a forum solution ..


No one has mentioned Galleon, Ray Camden's free open source forums app. Instead of re-inventing the wheel (again!), why not contribute to Ray's app?

It seems to be a common failing in the CF community regarding open source projects that we keep re-inventing the same ol' wheels over and over again. The end result is that there are a bunch of half-assed apps out there that no one wants to use. If cfopenbb failed, despite all the apparent support and offers of help, why will BoardFusion be any different? Why not rally around an existing project that does a lot (most?) of what folks actually want from a forums app?



Sean, we're all aware of Ray's Galleon application, and while it's nice and may fit the bill for a lot of people, it's (no offense to Ray is in any way intended with this) lacking a lot of what more full-featured solutions like phpBB have. Things like easy skinning, just as one simple example, make or break forum apps in the minds of the end users. We're starting from scratch with the mindset of creating something that rivals any other forum app out there regardless of language.

We've had many lengthy discussions thus far among the developers who've signed on for the project and if we reach our goals the end result will be anything but half-assed (but thanks for the vote of confidence!).

Why it will be different than cfopenbb? There was IMO a fundamental flaw with the approach that was being attempted with that project. BoardFusion is not picking up where cfopenbb left off other than in the spirit of creating a world-class open-source forum solution that just happens to be in CF.



sean, that's a "common failing" of all open source communities, there are a zillion half-assed/half-dead SF projects last time i looked. i don't see that sort of stuff as specific to cf.

time will tell but why don't you give matt the benefit of the doubt on this one.




I think that lumped in with all of the half-assed projects that are out there, are definitely some nuggets of gold as well. The success/failure rate of other developers' projects (in my mind at least) shouldn't be a factor when someone has an idea that they are passionate about and want to see it come to life. I would hate to believe that all the good ideas are already used up, and that we as developers should stop trying to be innovative and just live with what we have. I don't think that would be a good philosophy for very many areas of business in general.



Are we running low on CF programmers? Do we need to ration people's efforts now so everyone who wants to participate in an open-source project should be assigned to specific projects? I, for one, like the idea that there might be competing (yes, even half-assed) projects out there. That's what makes this fun. If I wanted to sign onto a formalized development team to do someone's bidding, I'd go to work.

If you can't handle a little beautiful uncertainty, stay out of the open-source movement.



Kammie, I've probably been doing open source longer than you've been writing software so don't be so touchy. I'm sure you'd find most of the successful open source projects to be pretty formal...

Everyone seems to have overreacted to my comment. Matt explained why he does not want to use Galleon as a base for BoardFusion and that's fine - that wasn't clear from the original post. I wish him luck.

I would just like to see a little more teamwork in the ColdFusion open source movement... that's what has made great software in the (non-ColdFusion) open source world (think Apache, OpenOffice, GNU libraries etc etc).

A lot of people lament the lack of good, free, open source ColdFusion applications and the main reason is that many folks just want to build a little toy app on their own "just for fun". A lot of people want to take but not give...



BTW, Matt, your email notifications have a typo in the URL - three 'm's in commmentID=


I'm no programmer but I can tell you that this project, completed, will do much for the CF world. I am pulling for your collective success and appreciate the efforts of each of you.

Wednesday, November 9, 2005

Mach-II 1.1.0 Available

The wait is finally over--you can now download Mach-II 1.1.0! This is a very solid release with some really nice improvements. We'll be releasing additional documentation and sample apps in the coming weeks as well as updating mach-ii.com to point to some great resources for Mach-II.

Thanks to everyone involved with this release for their hard work, late nights, and dedication. Look for a ramp-up in ancillary materials now that we have the code out the door. Enjoy!


Comments


Matt, thanks for all your hard work in coordinating the development and release of Mach-II 1.1.0. I think the new release's added features and continued dedication to quality, maintainable applications is going to make a lot of Mach-II'ers happy. Well done.

Ben Edwards



Thanks Ben--I was very happy and honored to be a part of the release!


Matt thanks for your hard work on this release. The rest of the team including Peter deserve a big thanks as well!

Asynchronous ColdFusion Presentations

Last night was "asynchronous night" at the Dallas/Fort Worth CFUG. Here are my two presentations and related code from the meeting last night. The first presentation covered the asynchronous CFML event gateway in CF 7 Enterprise, the second dealt with CFAjax and AJAX issues in general. In addition to the very simple example for AJAX I'm including here we went through a few of the examples that are provided with CFAjax. Enjoy!


Comments


Nice! Thanks Matt!


Man, very disappointed I had to miss it - The Wife had other plans for us... :(

Thanks for posting the preso though!




I finished writing today an alternative to cfajax; I called it ajaxCFC.
It's an improved version (still lack documentation). Please check it out at http://www.robgonda.com/blog/projects/ajaxcfc/

-Rob