Thursday, June 24, 2004

Frameworks: The Good, Bad and the Ugly

D.Ross.Blog: Frameworks, Methodologies

Let's get this conversation out in the open.

Let's take some quotes from my infamous comments...

"That's my point, I am sure it is a good methodology, and I am all for improving our standards of coding to make ColdFusion is the solution for the web applications.

However, no methodology should sacrifice core values of performance and usability.

I understand for example, how it helps to have a common methodology for a team.

I am not here because I like slamming methodologies, I just want to make sure we are choosing methodologies for the right reason.

Because no matter how a methodology improves our coding standards/skills, it doesn't matter as long as it's coded to be the most efficient in performance and usable to the clients."

My point is that several-fold:

1. We should not just jump to a framework because everyone else does, or because it's a trend or fad. It must be because it fulfills the needs we have as a team/coder and because it delivers on our core values.

2. I don't care if it's the most elegant framework in the world, but if it takes away from the core values, then it's really not yet a good framework.

Here are my core values, and I hope they are similar to yours:

1. Performance and Scalibility: As my web apps get used by more and more people, I have to make sure that the web app is built for handling that, by using the most EFFICIENT/FASTEST LOADING ways of delivering functionality/content or whatever.

2. Url Usability: It sounds trivial, but it's actually a very important subtle thing. People like to be able to bookmark, or understand what page they are at. The old fusebox method of having all apps be on one page with different url variables, just doesn't cut it. Especially in the day of trying to do search engine optimization.

I do know it can do the seo friendly urls, but it should be on seperate pages. Which can be fusebox if you like that just includes the fusebox code. But we need to go a products page or a shopping cart page. There needs to be a visible difference in the address bar between pages.

3. The framework should be built to be easy to understand for people who don't even use that framework.

Point-in-case, at work we have several fusebox apps, that we don't even bother trying to fix because it's so convoluted trying to find where the actual code is and what not.

Now, I do approve of frameworks, as long as they are done right.

Of course it is much better than going blindly with no standards or no framework....

But we have to evaluate what is a good framework and what is a bad framework.

There are plenty of innovations that fusebox and other frameworks have brough to the cf world, that I like.

Like the idea of wireframing your apps, I still want to play with that as a great way of planning out your app logic.

I have not yet played with mach-ii. I am honestly a late adapter, probably always will be.

And maybe I still think that a good web app, is 1-3 pages with 5-10 cfincludes...

And because my code is commented, indented, planned, easy to read and understand, then I don't have to worry about dying, and having someone try to figure out what the heck my code is trying to do.

Unless coldfusion has changed so much that the speed differences are a lot different than they used to be, then I'll be glad to change my mind.

As long as the reuse method is the most EFFICIENT/RELIABLE way.

And as a nice as cfc's are, they are not it, nor are cfmodules or cffunctions or cfscripts.

CFINCLUDES are still the fastest gun in the REUSE West...

Wednesday, June 23, 2004

Think Longterm

One of the things that is hard to grasp as a newbie, is the importance of thinking longterm.

Because it takes a while to understand the importance of:

1. Commenting
2. Planning
3. Project Management
4. Error Proofing
5. Testing

There is probably more to the list, but most newbies, think if the app works, that's all that matters.

And I was the exact same way, give me a goal, and I couldn't wait to code.

But then begin the painful lessons:

1. This isn't exactly what I had asked for.
2. I have to change something in your code.
3. I get too many errors on this app, did you error proof it?
4. This application, 1 out of 100 gets the job done, what's happening 99% of the other times? Did you test it?

The reason why, I and other classicists/old schoolers/purists emphasize these things so much, is because you are dead on aiming for a hungry bull just ready to rip you to pieces.

We all make mistakes, and that's okay as long as we learn from them.

And to help you prevent them from the long haul, you need to take a different approach to your coding.

Take pride in your work, knowing that it is going to do it's thing for a long time 5-20 years, who knows??

However then make sure the app/project will last that long by following the methods that help make sure you get there.

Let's briefly go over these top-notch methods:

1. Commenting, Elyse over at Anticlue has a nice article on commenting, here

But simply said, commenting can be simple or complex, but the more details you put in there, the easier it will be to fix/repair in the future.

Which is the whole purpose, put in the details now, to make it easy for you later.

Also it's much more important, if people besides yourself are going to look at your code. Take pride in your code, make it look nice, neat and indented.

2. Planning, I can't say enough about planning. Planning is both the skills you develop to architech the project/app, but it's also making sure you have a clear/written and documented vision of your project.

3. Project Managmeent, it sounds like a pain in the ass, but really it's godsend. Because this prevents communication mistakes.

I don't know how many times, it's happened to me, where I thought I knew exactly what the client/customer/boss wanted for the project, only when I started coding, they said, "What the heck is this? This isn't what I wanted?"

Isn't that a pain???

So learn from this, use a simple-to-complex project management system to prevent communication mistakes, as well as not wasting anyones time until everyone knows what everyone else wants and will get done.

4. Error-Proofing, this is one of my concepts, if someone else came up with it before me, I apologize. Error Proofing simply means preparing your code to handle any possible error.

This means what copy/app changes you want to happen based on what kind of error.

Also this can mean some cool looking error reporting, Qforms has some interesting ideas on form error handling.

Also it means, knowing your incoming data, protecting your datatypes. If your app depends on results from a query, what if you get no data one time? How does your app handle it?

5. Testing, this is one the that my current boss is a master of. You give him an app, and he will break it into smithereens. :)

Which is both funny and a good thing, because it takes a lot of work to do testing, and prepare your code.

You gotta lose your ego, come up with a testing system, that always changes and evolves, and make sure your code is really PERFECT, before it gets public.

That's all for now.

Remember think longterm, do you really want to have to fix some crappy app, you did 2-3 years ago, but was written so horribly no english person can read it?

I don't think so.

Tuesday, June 22, 2004

Ensuring CF As an E-Commerce Platform

ColdFusion Developer's Journal

Well here it is, my first official CFDJ article, if this is well received, I would love to write as much as I can.

I know this may sound weird, but I've waited a long time to be worthy enough, or ready enough. I'm just happy to be able to give something back.

Anyways enough of my blutherings.

Feel free to check it out at the link at the top, and give me your bloody honest opinion.

Thank you everyone!

Macromedia MXNA Aggregator in Flash

Phoenix ColdFusion UserGroup: Welcome to the Phoenix ColdFusion UserGroup

I know I may have come across as an acerbic anti-flash person. But when I see something cool, and it makes sense and is usable. I gotta get behind the bandwagon.

It may sound simple but something like this on the right side of the Arizona CFUG site, just rocks my boat.

It's perfect, especially when any of my posts show up :)

Another flash integration of the MXNA Aggregator, that I am just beginning to drool over.

This interface is very nice, although I still miss the ability to right-click and open into a new window. It still is a very beautiful application.


:} - A Good way to share learning


The reason I really like this community q&a site, is because there is so much knowledge and experience that we can share and learn from.

I don't claim to know it all, but I would like to learn it all, or as much as humanly possible.

Next time you have a problem or puzzle, or just want to fill some time helping other cfers, checkout

What's on your bookshelves?

It turns out that most of us, are trained by book knowledge, that and experience of course.

So I come to you today, to share what's on my book-shelves, and curious to here what you have on yours?

  1. Oracle PL/SQL Tips and Techniques

  2. Learn SQL Server 2000 Administration

  3. The Guru's Guide to Transact-SQL

  4. The Guru's Guide to SQL Server Stored Procedures, XML and HTML

  5. SQL Server 2000 Programming

  6. Instant SQL Programming

  7. Visual DHTML for the world wide web

  8. XML in 10 Minutes

  9. SQL Server 7.0 in 10 Minutes

  10. SQL in 10 Minutes

  11. Stupid Web Tricks

  12. Community Building on the Web

  13. Designing Web Usability

  14. Homepage Usability

  15. Website Automation Toolkit

  16. XSLT for Dummies

It is still sort of amazing the value of the printed word, as a means of communication and education.

Each of these books is sort of a step on a giant ladder, as we progress thru our skill-sets and our gradual shifts of paradigms.

Even to this day, I like to read >Website Automation Toolkit, because it was written before content management systems or backoffices, really existed. So here was this Paul Helsinki, who had writted for the Web Techniques Magazine, had come up with a couple different concepts of using perl to create a content/site management system.

I still get some new ideas, or refresh my concepts when I read a good old book like this.

Of course, I really got my web start, using the Instant HTML Book by WROX, a well-used book of mine,as a HTML reference.

In a way it is very pleasant to look back and see where we were, as long as we do not get too proud or egotistical about it.

Have a good day everyone!

Monday, June 21, 2004

How do you train yourself?

For me my path to coldfusion, was half a drive to know more, learn more, be more.

I was working at a Tech Support job for a local ISP. Getting that rapid burn out we all get after time, and wanted to learn more.

For example, I saw a need for an intranet that held all the massively disorganized information, on helping customers. So I started to learn javascript, html, especially from my favorite html book Instant HTML - Programmer's Reference by Steven Wright.

I pushed myself to find out how to create a framed interface, (yes, I know frames suck, but can be a good solution for intranets.)

Anyways I self-taught myself, html, javascript.

And as that went on, I became the webmaster, hostmaster and what not.

But I was never settling for whatever I currently knew, I always wanted to know, learn and master more.

So I was always bothering the web developer, at the ISP's web department to learn more, to learn, what the heck is coldfusion, etc....

And with time,grew to master more and more of my skills.

But as I have gotten older, I have seen how so many (apparently, but not confirmed) people were trained by their companies, or were sent on conferences by their companies.

I just have always wondered, what it took to get more education, the support of even half-way from companies.

Also I wonder what all of your learning paths are like?

I realize things have changed since the dot-com bomb, but if we're all to get better, and there really is no formalized training system, how can we improve other than thru conferences?

Especially if we're all so self-taught, that must inhibit our real awareness of each other's work in terms of quantity and quality.

That's my thought of the day...

How do you train yourself?