Out with 2013, and in with 2014

2013 was Exciting! I had several side contracts, which helped us buy a house. We left Jacksonville, and moved back to the Nashville area. I finally put some health issues behind me, allowing me to get out to some user group meetings again, as well as present. I put in a new topic for cf.Objective, which has been accepted. I picked up the camera I've been waiting a decade to buy, and jumped back in to photography with both feet. And, I carved in some time there to review a few books, do a CF Hour interview, and write a few blog posts (some even a little controversial). Now, there's downside here too. Heavy side contract work is not always conducive to a happy home. Buying a house, much less from another state (and the move that goes along with it) can be very grueling and stressful. Working at this kind of pace can bring on other health issues. The financial requirements of buying a house, moving state to state, setting up a new home, etc, make it impossible to do "other things" (like conferences, for instance). And, I still have several other book reviews I've yet to write, and didn't blog nearly as much as I would've liked. Well, you do what you can with what you have, and pray for the best. The two bright points in all of that are my wife, Teresa, and my daughter, Savannah, who continually support this crazed life, and without whom it really wouldn't be worth doing it all. I can never tell them enough how much I Love Them, nor just how much they mean to me. I never got the opportunity to talk about my conversation with Rakshith, concerning the future of ColdFusion. It was a great conversation, focusing quite a bit on Adobe's commitment to the platform, the strides in the education initiatives, and a focus on giving developers the tools (and language) they need to build better products. I think one of the greatest ColdFusion bits, to come out of this past year, was the creation of Team CF Advance. This group, entirely made up of volunteers, is working to produce Open Source applications and API's in ColdFusion. While it is still getting off the ground, the team has already made some pretty big strides. This is the kind of thing that will help bring ColdFusion back out front. I have high hopes, and high expectations, for what is to come from 2014. I've already committed to taking at least one picture a day, gotten seriously started on losing a few (too many) pounds, have several topics laid out for blog series, and am about to put some spit and polish on that preso I mentioned earlier. And that should be just the beginning. So, to all of my friends, colleagues, co-workers, and family, I wish you all the Happiest and most Prosperous of New Years.

2012 In Review, and the View for 2013

2012 was....unexpected. January really kicked it off when my immediate supervisor left, to take a position with another company. When this happened my employer approached me about taking on his position. Now, I had left a management position to come to this company, so that I could again focus on writing code, so this meant stepping back into a management role. This is also the third time this particular scenario has played out in my career. Luckily, this position still allows me to write code (at least for the moment), I'm just putting in more time.

Time. The one thing we all need, and the one thing we can't make. I've put in a lot of time at the office, for both my day job and side contracts. You do what you have to do to get things done, and there are some things I'm trying to get done. That said, 2013 will have me dialing it back a bit. I have some current obligations, but I'm gonna drop back some after that, and put some time towards more important things, like my Open Source projects, development mentoring, my health, and (most importantly) my family.

In 2012 I started riding a bike (bicycle) again. Nothing fancy, just an 18 speed Mongoose from Walmart. What was important was that it got me active again. Current work load has put a temporary damper on riding, but I was doing 10+ miles a day. Time to get back into the groove. Not only is it healthy, but it's fun.

One thing I want to do this year is become more involved beyond my desk. It's time to rejoin the world. I want to start speaking to the development community again (which I started in 2012, and want to continue). I want to find a civic organization to become a part of. I want to get more active with the American Legion and the VFW. And, I want start telling Washington how I really feel about the job they're (not) doing.

2012 was the year I moved all of my Open Source projects to GitHub. Each of those projects saw some movement last year, and I'm looking to get some more spun up in 2013. Still a huge focus on dealing with ColdFusion json data, but I do have some JQuery utility bits out there, as well as starting to work on some Bootstrap components, and the Google Maps custom tag.

2012 was also a year for consulting. I've done some minor consulting in the past, but 2012 saw me traveling for consults. In one project, I consulted with a niche market company in creating an MSOC platform for their growing business, to sell and host low cost, high impact sites for their industry. For three days we hashed out exactly what it was they were trying to accomplish, going over the details of systems and code architecture, scalability, and standards. With one developer they built (from scratch), tested, and launched their new platform in six months, with their own custom CMS, templating engine and more. I enjoy consulting, particularly in addressing architecture challenges, and hope to do more of that in 2013.

So, I know some of the things I would like to do in 2013. I could map it all out, but that lacks flexibility. I didn't plan for all of the things that came my way in 2012, but most of it was for the better. May 2013 be a wonderful, and prosperous, new adventure for everyone.

2011 In Review, and the View for 2012

My, how time flies when you're having fun! It seems like only yesterday that I was welcoming in 2011, and now we're here a year later. So many things have happened in the last year, and rereading that post I see that I missed some things I should've done, but let's take a look in retrospect.

I wrote 27 blog posts in 2011. This is nothing, compared to guys like Ray Camden or Ben Nadel, but for me it was quite a bit, especially when you consider that between March and August I released only one post. Very early in the year, I began a series on creatingmany sites with one codebase. In the process, the series has evolved to contain a fairly detailed primer in ColdFusion application architecture (because of it's importance to this process), has currently spanned 8 separate posts, and was even referenced by Sean Corfield in his great presentations on the same topic. 2012 will see the completion of that CF app discussion, and gradually move it back to the MSOC topic itself, as there is still a ton to talk about there, and a lot of interest in the topic. I also began a series on the jqGrid JQuery plugin. jqGrid is another Data Grid visualization tool (I have now written about three, including Ext JS and DataTables), and is a clear choice for those who must use JQuery. (To be fair, JQueryUI is working on a grid component, but they are still behind the curve, and way behind Sencha.) Finally, one common thread seen in the majority of my posts, is how much I've embraced cfscript. I wrote a lot of things, on a variety of topics, but most of my code examples were pure scripted examples.

Now let's talk about some other departures from the norm for Cutter.

You did not see a lot of content around Ext JS. In fact, I stopped writing Ext JS books. This is not, in any way, a reflection on my feelings for Ext JS. I still believe that Sencha has built one of the best client-side libraries for web application development. In evaluating the overall ROI, I realized that I was writing more for the community than the money, and that my reach was greater through my blog, while giving me flexibility on when and what I deliver from a content standpoint. That said, I didn't have a single project this year that used Ext JS, so had very little time to experiment and write about it. This year, I'm going to expand on a personal project, and get back to some great Ext JS content for my readers.

You, also, did not see me speak at any conferences this past year. Nor at any user group meetings. This wasn't because I didn't want to, but because of some more personal reasons. I'm not going to go in depth here, other than to say that I've had some long standing health issues that required me to have some surgery done on my mouth. (Mark Drew is making a joke right now...) Aside from the fact that this has been very costly (chewing up any conference/travel budget), it also meant that my speech has been affected for a good part of the year. Thankfully this experience is (mostly) over now, and I hope to get back to presenting sometime this year. Any user group looking for a speaker this year, please contact me through the Contact link on this blog.

One group I am hoping to speak to this year is the Northeast Florida CFUG. I have to call Mike back, but he's looking to get things kicked off again, and I want to help it be successful. If you're in or around the Jacksonville area, make sure to keep an eye on the site for upcoming events.

One other thing I'm looking to do is to migrate all of my projects into GitHub. I've been using Git at work, and I am loving it, and I think combining GitHub with RIAForge is a great way to promote the terrific technologies we work with every day. I will make the time, I promise.

This comes to the final discussion of this post, Adobe. I again had the pleasure of being an Adobe Community Professional this past year. Due to my health issues, I didn't get to do everything I would've wanted to this year, but I've tried to be a good supporter. There are some fabulous things coming in ColdFusion Zeus and, by extension, to ColdFusion Builder as well. There has been a lot of hub-bub over Adobe's communications flubs regarding Flash, mobile, and Flex. I've avoided much of the discussion, other than to say "be patient and watch". Flash isn't going away, and neither is Flex. HTML 5 is a beautiful thing, if you aren't developing desktop browser applications (i.e. You're only writing for mobile/tablet development). There, that is my whole contribution to that discussion. Give it a rest.

2012 will be a fantastic year. Set yourself some clear, definable goals. Break them down, step by step, and write the steps down on paper. Each successive step, print out in large letters and place it somewhere where you will see it each and every day. Set yourself up to succeed, and you will. Have a great year, everyone, and I can't wait to hear what you have planned for 2012.

New Job, New Home, A Lot of Work

It's been a very busy year, up til now. Work ramped up in February, contracting me for additional hours for a month and a half straight, after which I've worked on a sting of side projects. This helped me finance a move to Jacksonville, Florida. My new (daytime) job is full-time telecommute, which allows me to put my desk anywhere. Teresa wanted to get back to sunshine and beaches, being tired of the cold and snow of Tennessee winters, and chose Jacksonville for it's location and proximity to family and friends. Jacksonville is a great area, and we nailed a terrific place in Fleming Island. I like it because there's lots of tech (user groups and such), and it's not far from other tech centers (Orlando, Tampa, Atlanta, etc). It doesn't hurt that I can maintain a year around tan or that the beach is a short drive away.

A lot of work has come my way, often tacking an additional 40 to 60 hours a week on top of my normal day job schedule. Often I'll take a project that takes a week or two, then take a few weeks off to spend with the family (and catch up on my reading). I have a list of posts I need to write, due to exposure to some projects I hadn't previously been exposed to. Part of that already started with some exposure to the DataTables JQuery plugin, but I'm also lining up posts for jqGrid, jsTree, and the cfUniForm project. Evernote is filling up with little tidbits. The most difficult piece is coming up with the time to write examples. I'm particular about writing well formed code and documentation, which is why my posts sometimes get spaced out a bit.

One of the things I have discovered, in my exposure to these other projects, is how much I miss working with Ext JS day-to-day. JQuery UI is a good project, but lacks the maturity of Ext JS, and is missing too many key components for writing web applications (Data Stores, Grid, Tree, Menus, Tooltips, etc). My exposure to those other projects was an attempt to fill needs for which Ext JS would have been better suited, while locked into using JQuery UI. The JQuery UI team is working on closing that gap, but there is a lot of catch up necessary to match the breadth and power of Ext JS.

Speaking of Ext JS, Packt Publishing asked me to write the next Ext JS book on my own. While very flattered, I had to carefully weigh what that commitment would mean. Ultimately, I could not justify committing seven and a half months to writing the book with all of the other responsibilities I have right now. I will write a few articles for Packt (as part of my contract on the last book), but feel like I can continue to create blog content that would be more timely (no six month editorial process) and have a greater reach, and do so as my schedule permits without being a burden on my family. Sencha has already announced What to Expect in Ext JS 4.1, and recently put Ext Designer 1.2 in Beta, so there's a lot to talk about here.

Last, but definitely not least, I'm following all the buzz about the upcoming ColdFusion "Zeus". A quick Google Search already brings up a ton of info that Adobe has put out regarding the next version of the ColdFusion server platform, and it looks to once again be a significant release. Some of the big things already mentioned have been the move from JRun to Tomcat, the retirement of Verity in favor of Solr, the upgrade to Axis 2, and the inclusion of closures in CFML. That's just some of what's coming, as Adobe appears to be giving more and more detail during the various conferences through the year (and you never know the whole story until it's released).

How Did I Get Started With ColdFusion

Today, developers across the web answer "How I Got Started In ColdFusion". Each tale is unique, and this one is mine. My discovery of ColdFusion was a blessing, leading to a great life and fulfilling career of fantastic experiences with outstanding friends, acquaintances, and mentors. Here's how it started for me....

In the early nineties I was stationed at Ft. Meade, MD, working for the National Security Agency. Professional Development is a key thing in the military. We were expected to constantly learn and foster new skills that might help us do our jobs better. Being interested in computers at an early age, I started taking classes on computer systems and, having a background in linguistics, once again became fascinated with computer programming, taking classes in C and C++.

This new thing called "the internet" was becoming a big deal around the office. On my first PC, in the barracks, I was becoming a junky of Prodigy (then AOL, then my first ISP...) and learning to master 'search' through Alta Vista. At work someone asked me to create a 'web page' for our department on our local intranet. NCSA Mosaic was rapidly being replaced with Netscape Navigator, and updates to HTML had introduced new tags, like TABLE and IMG. Things were changing rapidly.

I started teaching myself HTML. Compared to 'programming languages', HTML was a walk in the park, though a bit frustrating in it's layout limitations. The internet was really becoming a big thing, and I thought I was ahead of the curve. I could make a living doing this? Wow, that would be cool! I had been in the Army for almost a decade. Still young, and single, with no kids, I had been thinking it was time to move on in the world. The Army had been good to me, but I thought I could do more, be more, back in the civilian world. (Mental Note: kick self later for being young and dumb)

I became friends with a guy who owned a screenprinting and advertising specialties company in southern Delaware. I created a quick web site for them, which helped them get some state funding for growth and expansion. They offered me a job, leading me to believe that my new skills could help them augment their corporate branding offerings to another level. After a brief assignment overseas, I put in paperwork to get out of the Army, packed up my stuff, and moved to the Eastern Shore to start a new life and career.

Things didn't quite work out as planned. The company really wanted someone to sell product to the military, develop paperwork automation processes in the office, and help out with 'production' (printing T-Shirts and stuff). Transitioning from military life to civilian life isn't always easy, and I had trapped myself in a strange place, with no real friends, in a job that wasn't going anywhere. I did this for three years, working 18+ hour days for next-to-nothing, becoming more and more disillusioned and watching myself slide behind the curve again. I had taught myself Visual Basic for Applications, tying together workflow between different MS Office applications, but my web development advancement had grown stale, being relegated to maintaining the company website with MS FrontPage (shiver). Then the best thing happened, I was layed off. The company decided they really needed a salesman more than a computer guru.

Unemployment has the fortunate by-product of forcing one to do the things they need to do. I knew that I loved computers, and had a talent for languages. I needed to get back to those things. For two months I called Manpower everyday, hauling stuff around warehouses or working in a buddies garage changing oil and tires, while scanning the want ads. Finally, I saw an ad for a Corporate Support Specialist with a regional Internet Service Provider. I went in for the interview, they gave me a test (on ColdFusion), and I failed. I didn't know the language, didn't have much for reference, and bombed it.

Luckily, the interviewer saw some potential. They referred me up to the manager of the Tech Support team. He was a retired Army guy himself, and had an open position in his department. The thought was, bring me in, learn the ropes and the business, and work on increasing my skills until I could transition to development. Now we're talking! I didn't make much, but it was more than the screenprinting company, better than being unemployed doing odd jobs, and it was getting back on track. I jumped on it.

I was a good Tech Support rep. We talked 70 year old ladies through manually creating a Windows Dialer to dial into our service. We talked 80 year old men through setting up and using email. Yes, that TV looking thing in front of you is called a 'monitor' and, no, that is not a cupholder (seriously). Things were pretty smooth, and I wasn't on the phone all the time, so I started brushing back up on web dev skills. I got on a mailing list to learn JavaScript (which had passed me by til then). I started playing with DHTML, and this new thing called CSS (Layout! Hot Damn!) To make it worthwhile, I created the first real FAQ for the ISP; a set of interactive, online tutorials for the basic tasks we always talked about on the phone (setting up email programs, configuring browser settings, etc.)

This was all good, but wasn't getting me moved to Corporate Support. I took on a real challenge on my own. I got a copy of Visual Studio from the college, and began to create a dialer application for the company. I had already gotten up to speed on the changes in HTML, picked up better than passable skills in JavaScript, and was fairly good with CSS. Now I needed to dig in deeper into programming, so I started learning Visual Basic (not a big jump from VBA), then InstallShield scripting, which in turn led to diving back in to C++. Four months later the ISP was pressing it's own CD's of the dialer app for distribution to new clients. And, they were hiring again in the Corporate Support department.

Delmarva Online was a small regional Internet Service Provider, with about 14,000 dialup clients, that also ran a small hosting business. They hosted roughly 600 corporate sites for everything from churches to school districts to car dealerships and small manufacturing companies. In it's earliest days they had used a server-side technology called IHTML, and by the time I moved into Corporate Support they still had one or two clients on that platform. But the majority of their clients were on something called ColdFusion, a server-side technology built on C++ by a company called Allaire. Coming in to Corporate Support, my job was similar to that of Tech Support; walking clients through email configuration and stuff. But, I also got the responsibility of taking on minor coding tasks to hosted sites, slowly learning ColdFusion.

Having started on-line classes for Computer Science, with the University of Maryland University College, I was really getting in to Object Oriented Programming. .NET was in beta at this point, and I was thinking that it was going to be 'the thing', but I was getting better and better everyday with ColdFusion. Our lead programmer, Joel Firestone, had taken his hobby site for guitar (Guitarists.net) to a new level, getting it mentioned in Guitar Player magazine. Pretty cool for a site that had taken a few months of "spare time" to develop in ColdFusion (Joel moved to PHP later in life, and has since moved his site to that as well, but that's another story). We had one or two sites on ASP that had taken me forever to implement easy stuff, like mail, that took me seconds in ColdFusion. I really started to pick it up, combining ColdFusion with JavaScript, CSS and XHTML. They started giving me small apps to write, then full site rewrites. ColdFusion 5 was released, and UDF's were the new rage, then Blackstone started talking about CFC's, and I quickly started seeing full Object Oriented web development on the horizon. ColdFusion was moving to a Java EE server, and the changes were awesome!

Jump ahead a decade. Wow, how times have changed! ColdFusion has changed hands twice (from Allaire to Macromedia to Adobe), and has gotten better and better with each iteration. I've watched ColdFusion grow with the web, and continually been amazed by the things that have been done. I've had the opportunity to play with close to a dozen server-side technologies in that time, and always come back to ColdFusion for the core of my work. It does far more than just pay the bills, and I'm never short of work, and thank God every day for the opportunities that have come my way this past decade. ColdFusion development (and developers) change and grow every day. Millions of sites with outdated code are being upgraded, or rewritten, to more modern development standards. ColdFusion is an incredibly easy language to learn and use, which also makes it easy to write bad code as well. Today we see developers apply new skills and standards towards writing scalable and efficient code, which highlights the ROI of ColdFusion development in that those upgrades and rewrites are accomplished in a fraction of the time (and cost, and resources) than it would take in many competing technologies. The web's first web application server platform and language has proven itself as an enterprise ready rapid application development platform, and modern developers are proving it, time and again, as a real world solution toward answering real business needs rapidly and effectively.

I've seen great frameworks come about, outstanding public (and private) sites, Web Services enter the fray and change and grow, ColdFusion developers (historically server-side people) embrace JavaScript and Ajax, mobile become the new hotness, Open Source projects multiply and grow and grow and grow... It's an exciting time to work on the web, and just as exciting to work with such a dynamic technology as ColdFusion. I can't wait to see what comes next!

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!

Development Ties

On the last day of CFUnited 2005, a group of us were out on the patio having a final drink together. I got into a conversation with Clark Valberg about linguistics. I was a translator in latter half of my time in the military, and Clark was asking if I thought my experience with learning another language had helped me in learning to be a better developer?

I absolutely agreed. I have an aptitude for languages, and always have. It's something I've picked up, and I can generally get to a point where I can effectively communicate (at least on the simplest of terms) within a very short time. Programming isn't much different, if you think about it. When I first got into computing again, after leaving the Army, I was teaching myself ten different programming languages at the same time. I had a lot of catching up to do, being out of the game for so long, so I picked up some books, found online resources, and took to the task of getting up to speed.

Maybe that's why there are so many talented developers outside the US. In the US, we aren't required to learn another language out of necessity, whereas in most other countries of the world (not all, but most) it is very commonplace for people to speak two or more languages.

You can kind of apply this in the reverse, to some degree, as well. Those who only learn one development platform may be limiting themselves. Knowing one programming language inside and out can be a good thing, but learning others can also open a developer to new ways of approaching a challenge. I've known many developers who knew a server-side language (ColdFusion, ASP, PHP, whatever), but never bothered to learn JavaScript, or how to write well formed XHTML. To me, that's limiting. Even crippling.

What are your thoughts?

Where Do You Stand?

Several months ago gas in Nashville cost almost $3 a gallon. One enterprising station owner decided to charge around $2.60 a gallon, while all of his competition was at the $2.97 range. While he did this, people were lined up to get in the station. People were pouring through his little convenience mart, to go to the bathroom, or maybe pick up on his 2 for $2 Coca Cola deals. His competitor's stations (there are 4 more within a two block radius) were nearly empty.

This station owner was a very smart man. Did he lose money? His profit margin may have been smaller, but the traffic and sales increase probably doubled his typical profit intake. He had to bring in tankers three times a day to refill his tanks, and some delivery truck was almost always there restocking something in his convenience store.

There is a lesson to be learned here by America's retailers. If you've never worked in retail management, you don't know what kind of mark-ups most retailers have on the goods you and I purchase every day. Sometimes those mark-ups are anywhere from 70 - 100% of the actual cost of goods. Bars and Restaurants even more so, where the mark-up could be as much as 600% on some items. Now, to be fair, these businesses have a lot of overhead they have to pay: salaries, utilities, licenses, security, insurance, etc. But, notice they're having trouble doing some of these things right now? No one is buying.

This is called "market correction". See, we (the American public) have allowed these companies to more or less rape us for years. Why is it that an automobile that cost $3,000 is 1977 will cost $18,000 today? Why does a gallon of milk cost almost $3.50? Why is it that a gallon of gas that sold for $1.15 in 1999...? Well, because we let them charge us that much. And right now, we're done. Not only won't we pay those rates, we can't.

The government is so heavily involved in trying to 'bailout' America (Have you read the stimulus plan?), that big business is still losing the Big Picture. You want your people to stay employed? You want to get back towards the black? You want to keep getting fat bonuses, and have the funding to continue driving innovation and expansion? OK, then charge a reasonable rate for product. What is really more important, a fat profit margin, or staying in business?

I know, there are dozens of other factors involved here. Employers think they pay too much for help. Employees don't think they get paid enough. Unions want every benefit the rest of the American public can't afford. Fuel and utility costs are rising, increasing the expenditures and affecting the bottom line. When does the cycle stop? When do we, the American public, wake up and say enough is enough? When do American businesses say "We can do better by the American people, and survive, and be profitable." and start working with the boundaries of sanity. $250 for a Wii and $40 a game? It's a f@%#ing game. $200 for an iPhone? It's a damn phone. $80 for a pair of Nike? They're shoes for God's sake, they're gonna wear out in six months if you use 'em right.

When did we become so screwed up that we would continually let ourselves be taken advantage of? When does common sense sink in and we all say "No"? (When does "Common Sense" become common again?) There is a difference between being profitable, and being Greedy.

It takes people, average Americans like you and I, to stand up and be heard. It takes forcing retailers and businesses to "get it straight." What do you want to say? What do you want to do? How do you want to live? These aren't just retorical questions, I'm looking for your feedback. Stand up and be heard.

Our 44th...

To all of my friends, family, and colleagues who voted for our new President Elect, Congratulations. It is my sincerest hope, wish, and prayer, that in the coming four years I never have to say "I told you so."

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.

More Entries