Out With The Old, In With The New: 2009 - 2010

Wow! Where has all the time gone? This morning I'm looking back on 2009, and it has flown by. We've watched our banks collapse, and our government bail them out. We've watched the housing market go to pot, and friends and family have lost their homes. We've seen congress attempt to pump life into a social health care program, and watched it divide a nation. We've seen the auto industry grind to a halt, and seen iconic brands completely shut their doors. It's been a depressing year.

I think many of us have had a hard time keeping a positive attitude this past year. I know that the early part of the second half of this year I saw my own morale hit lows, the uncertainty making me moody and impatient. I was waiting for something (anything) positive to happen. You can see it on this blog as well, when you see that the last post made was in October, and I never even touted the release of ColdFusion 9 (which is well worth blogging about). But, things have changed.

A few months back, I had a personal epiphany. I reminded myself that change is only affected through action. My inaction was pulling me down, not really adversely affecting my work or family (yet), but not doing anything to improve my conditions either. So, I woke up. I decided that I would be my own positive force for change. I apologized to those I worked with, and vowed to find my inner motivation, to move forward with purpose, and challenged them all to do the same.

In that time, my shift in thought, word, and action has brought about personal change and growth. I have consciously worked to change my own personal perspective of each situation, to take on each new challenge as an opportunity, and to give more of myself to others with a servant's heart. I have, once again, realized that happiness begins with a decision; knowing that the only person's thoughts and actions that I can control are my own. I can influence others, through my words and actions, but I can not control them. If I maintain a path of right thinking and right feeling and right doing, then that influence can be a positive influence, and I will be happier for doing what is right.

So, where have I been? Well, I took the time to read some fiction. I generally read one fiction title a year, but this time I read fourteen (in a row). I also took in some self-help and leadership titles that I've been putting on hold for a while. I did some work on my open source CFQueryReader project, put in a topic for cf.Objective() 2010, and committed to updating Learning Ext JS for a 2nd Edition around the changes in the ExtJs 3.x releases (with more ColdFusion examples).

At work, we've undertaken a key rewrite of our most important front-end application, which has been exciting, challenging, and rewarding. We have several high priority projects that we are completing prior to a major conference in February. Currently, we're hiring for several positions, with a very active interview process. And, most recently, my boss decided to pursue other interests, and I have taken on the interim Development Manager position. This alone has been a major transition, with many extreme shifts in my basic duties and responsibilities, but has been very exciting and rewarding as well. It helps to have such an outstanding team, within Development, as well as so many great people who work with us day to day.

Last night, my wife and daughter having fallen asleep already, I was standing on our back deck at the stroke of Midnight. All around the neighborhood I could hear cheers and singing, while fireworks were going off left and right. I stood there, staring up in the darkness, and said a prayer The Father. I prayed for the strength and wisdom to approach the coming challenges of this new year. I prayed for the vision to see each new opportunity, and the will and courage to act when necessary (and the understanding on when not too). I prayed for patience and guidance, in discovering what new paths I am meant to walk upon. I prayed for the health and well being of my family and friends, that they might continually have love, life, and prosperity. And I prayed that everyone would endeavor to improve their own understanding, of themselves and their fellow man, so that we might all create a better world in 2010. If everyone endeavors to become better, and do what they can to make life better for those around them, then we can make this world a better place.

Happy New Year everyone! May 2010 be your year of greatness!

Cleaning RSS

So, it appears that my RSS feed is 'dirty', and that is why my posts haven't been appearing on ColdFusion Bloggers. I've been going back and forth with the W3C Validator for a while now, so hopefully this message will finally break the barrier.

Update 09.04.08 5:30AM Central: So, still not aggregating.

Caught By The Bug

The dreaded BlogCFC curse. After 30 days without a post you see the message 'Sorry, no post' (more or less).

I'm busy. Way busy. Several side projects, fun at work with servers, and a few hush-hush things...I'm beat. I can't go into a ton of particulars on anything, but there are things coming. I am working on a custom asset manager written in ColdFusion and Ext, that I'll be open sourcing, but it's taken a side burner for now. Ext is a blast, and I hope to continue to create and release Ext custom components, but I will always be using ColdFusion for my server-side code examples.

Speaking of code, I still owe everyone my sample code from my WebManiacs Presentation. With all this activity, I am way behind the eight ball on rolling some of this up. I hope to get it out sometime within the week. I'm also hoping to get a chance, soon, to re-record the presentation. I had done it once before WebManiacs, for the Nashville ColdFusion User Group, but the recording was a wash. We'll try to get that scheduled soon, and get it out there for everyone.

And, speaking of NCFUG, Mark Mandel is presenting Thursday night, July 31st on Transfer. Details can be found on the NCFUG Meeting page.

That's all for now. I'll try not to let it go so long between posts this month.

Why Can't I Comment?...

I've been so head down, on several projects professional and personal, that I only just noticed a few weeks worth of error messages in Cutter's Crossing's email box. A very odd error about missing a captcha-hash-variable kinda thing (don't have one handy). So, I get my next door co-worker to pull up my blog and ask him to post a comment, any comment. Low and behold, in place of the captcha there was a broken image icon. That wonderful clear box with the red X going through it, that we all know and love. Simply reinitializing BlogCFC took care of the issue, but I realize I've missed out on valuable feedback.

If you're reading this, and you tried to comment earlier, please try again, and I'm sorry for the trouble. I'll try to keep a more vigilant eye.

In the meantime, I'm looking for some really outstanding (public) examples of a drag-and-drop page content editor interface. Some experimenting with some of the Ext (2.1) sample code says I should be able to do it, but I'm looking to see some clear cut, and tested, solutions. BTW, if you haven't looked at the extended examples that they put out with the 2.1 update, then you should. There's some very nice stuff in there, particularly dealing with layouts.

Find This Character, Please!

OK, if I had hair I would have pulled it out by now. For several months I've been getting this error from BlogCFC, but I can't track the true source to remove the offender:

Script Name: /rss.cfm?mode=full&mode2=cat&catid=9856ECF2-3048-71C2-17879EB46D54D46F Detail: An invalid XML character (Unicode: 0x19) was found in the element content of the document.

I can't find this character anywhere. No clues at all. But, it's playing havoc with some RSS readers, apparently, and loading my inbox. So, anybody have some suggestions how I might find this?

The Year In Review

2007, The Year Of The Scorpio, was a fantastic year to be a ColdFusion developer. The release of ColdFusion 8 marked a new age in web application development, with so many new features and enhancements that should see some truly outstanding next generation applications in the years to come. As a community, the CF crowd has really been flourishing, with new releases in several major frameworks, the introduction of the RIAForge open source repository for Adobe related technologies, widely publicized adjunct technologies like Flex 3 and AIR approaching final release (spawning a new conference in 2008, showcasing all three technologies together), and the premier of our own developer's social networking site, ColdFusion Community. We saw the loss of the CFDJ albatross, while the Fusion Authority Quarterly, introduced at CFUnited 2006, has truly come out as an excellent ColdFusion developer's resource. And we can't forget our very own, ColdFusion specific, blog aggregator, ColdFusion Bloggers, introducing us to so many other great developers willing to share their knowledge and experiences, like the creative, and very colorful, examples provided by Ben Nadel.

I've always felt that a day without learning is a day that your dead from the neck up.I spent quite a bit of time this year learning new things, and sharing most. I've been slowly picking up Flex, put a little research into AIR, adopted JQuery heavily, run series of posts on developing on Apache and utilizing the outstanding components of the ExtJS library (the most trafficed posts on this blog). I tried to share some of the things I had learned about the new functionality of ColdFusion 8, started posting some General Coding Guidelines I've been writing for our company, and even got some first hand experience looking at the Current ColdFusion Job Market.

I look forward to sharing more in the year to come. I always look for, and appreciate, all of the feedback you readers send my way. I think the future for ColdFusion is extremely bright, and I can't wait to see what 2008 holds for us all.

2007 CFeMmys Voting Begins

The voting has begun on the 2007 CFeMmys. Todd Sharp began the CFeMmys last year, for the ColdFusion community to vote, and recognize, those who made contributions throughout the year. Somehow, someone made a mistake, and submitted Cutter's Crossing in the 'Best Blog' category. While I won't turn down any votes, it's a bit humbling to be included in such prestigious company (man, that's twice in two weeks!)

So, don't forget to head over and vote! Voting is through this Friday at noon. The competition has nothing to worry about, I couldn't bribe anyone even if I wanted too;) Best of luck to all the nominees!

Back In Business

Alright, now I can get busy again. It's taken me some time, but I was finally able to find the personal bandwidth to set my home network back up. That means that I can now reconnect to my home server, with all of my sample code, playpens, Flex learning projects, etc., and that CFEclipse once again has something to connect to.

The weeks ahead are going to be fun, with a company holiday party, my daughter's impending sixth birthday, and the holiday itself, but I have a few things to put out here in the blogosphere for all the world to see. I have a cool extension to the ExtJS RowExpander plugin for the 2.0 DataGrid implementation, that needs a public sample before it's posted. A lot of folks have been asking for sample code for the cell renderer and cell click I mentioned in a recent post. And I still have to re-record a certain CF8 Ajax preso (hopefully this week).

So, I'm going to get back to work now to put together some code and some posts. Let me know what you're questions, comments, and war stories are.

Watch What You Write, Someone Is Reading

Today I received the following comment here, on an older post on Variables and Naming Conventions:

...I wish Adobe would publish and adopt some kind of official naming convention. Sometimes reading sample code written in some other convention can make things harder to follow...
It was almost funny that this comment had come in when it had. Recently I was doing a lot of research for a User Group presentation I just did on the new ColdFusion 8 Ajax Components (have to re-record it before public release). In the process, I spent a great deal of time going over documentation all over the internet, from LiveDocs to countless blogs, absorbing the wealth of information that is already out there. It was outstanding that there were so many resources out there for people to learn from. On the other hand, it was a little sad that so much of the sample code was written in ways that can really start new developers off with some bad habits.

I'm not perfect, by any means, but I try to pay careful attention to the code that I place on this blog for readers to use and learn from. One thing that I attempt to do is pay attention to basic Web Standards, like using XHTML (the current standard) instead of HTML, keeping styles in the stylesheet, and having unobtrusive JavaScript. I don't always do it, sometimes it doesn't make sense for a quick example, but I try, especially within code downloads. I also try to adhere to my own Coding Guidelines, so that code appears to be consistent and easy to read and understand.

Probably the one that bothers me the most, and that I see most prevalent in blogs, documentation, and books, is the lack of proper variable scoping. I know that, often, we're just publishing quick examples, but this can be an extremely detrimental practice. I have worked on some very large enterprise applications, with years of code written by half-a-dozen different developers, most of whom learned their ColdFusion (and development) skills through the docs or a book. Many had actually come up with some very creative and effective algorithms to fix some issue, or create some new whiz bang feature, but their code was so poorly scoped that, after time, it could take down the server. Why? How? Enterprise sites may contain several hundred (or thousand) templates, containing dozens of variables on each page, and can potentially be hit by hundreds (or thousands) of users simultaneously. Multiply the number of variables by the number of pages by the number of users, then imagine ColdFusion doing a ScopeCheck on each one, to figure out which scope each variable requested belongs in. Even if the variable is in the VARIABLES scope, it's still that many times ScopeCheck will be called while rendering a page.

Still not convinced? Go download varScoper, and run it on your project root folder, including your subfolders, and see what it comes up with. Yeah, I'm still in shock. Cleanup on that is easier on a small subproject scale, but it's definitely forced me to think better when I'm writing my code, paying attention as I go, to minimize the performance impact of my applications, no matter how small it may be. I learned my bad habits from the docs, various books, sample code slung around on the CF-Talk list. I've continued to realize that there are better ways of doing things (like OOP and frameworks), and adjust my style and methods, and I think it's important to consider these 'best practices' when contributing. A little more code, but the right thing to do in the end, for you, your app, and your systems.

So, if you own a site of documentation, revise it. If you're writing a book, edit it. If you publish a CF blog, live it. The up-and-coming are reading us all of the time to find out how to use this wonderful language. Let's try to show 'em how to do it the right way. You might not follow any guidelines at all, within your development, but this scoping thing is way too important to gloss over, and will only help everyone in the long run.

Hey, where did everything go?

Ouch! I have no content. Guess I've been away too long. See, we have this FNG (Fairly New Guy, get your mind out of the gutter) in our office, working in our SEO/SEM department, who's been hacking away in PHP trying to make a few tools for their team. Since he wants to tap into our databases, and write tools that interface with the rest of our system, he is now going to start learning ColdFusion. Not much of a stretch, and I'm confident that, once he's into it, he's really going to enjoy himself. Anyway, I pulled up my blog today, to get him the links for setting up his dev environment, when I notice a big "Sorry" message on my blog's homepage. For shame! Sorry folks, I've been busy.

[More]

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9.3.006. Contact Blog Owner. Layout inspired by bluerobot.com., with some JQuery thrown in for fun.