Monday, September 11, 2006

OT: 9-11 Also My Birthday

I am always sad this day, and probably will be for the rest of my life.

All i ask for is that we rememeber all the lives and blood that have been spent to protect and fight for our country.

I think now of two people that mean a lot to me...

Todd Beamer, of Flight 93, who said the words that sparked our nation, "Let's Roll"

And Nathan Hale, first american spy, who said, "I only regret that I have but one life to lose for my country. "

It means to me that there are still american heroes, and that if we can unify and find ways to work together, we can be a great nation again...

But today is not about politics, it is about recognizing the sacrifice of life, love and liberty that others have made, and that we should honor their deaths..

Thank you...

Tuesday, July 18, 2006

OT: I stand by Israel and America

It is time that we got rid of all those jerks who are constantly getting away with killing in Israel and worldwide.

Btw, in case you didn't know I am jewish, but I am American first, and on this day I am proud of Israel for doing what America rarely has the guts to do.

Stand up for the lives and rights of our family and loved ones.

Like when we bombed Nagasaki or Hiroshimo, neither a pleasant experience. But when it was discovered that for us to manually take down those cities would cost us hundreds of thousands of our men's lives we chose for the attackers/evil people to die before us.

I stand by Israel and any who has to defend themselves against evil that kills them and their families daily.

I am a proud american this day, to know there are nations out there, who know and does what it takes to defeat evil!

Because this is a holy war of evil people!

They must be defeated, and if it's a choice of us dead vs them dead, I always choose them dead.

God Bless America and Israel!

Monday, July 10, 2006

How are we really taking advantage of code reusability?

This is something we always wanted, and now we have the tools to take advantage of it, but yet, the way companies are structured, there's no interest in having a universal library of coding modules.

I mean we like cflib.org, it feels a niche, but we need something a step up, where we can share full coding modules.

And this is also part of the difference between coders and designers, designers can show web designs and portfolio's, what can we really show?

So to fulfill two needs, our community should create a new type of modulare code sharing.

Here are my simplistic ideas for the structure of this code sharing community.

People would submit code, and put it into a category, registered members would review, and rate the code.

The code submitted should be framework neutral, something that could be used in almost any method. That of course could change as the amount code modules were available.

You can view the code, download the code, test the code, except code that is database specific, or File IO Specific.

Also other members can try to compete against the same code goal, and see if they can write it better in any of the following ways:

1. Clearer Documentation
2. Scalible to different levels of needs
3. Can it be done in less lines of functionality
4. Is there a version of it, in each of the popular frameworks of the times?

Etc. Keep it simple at first, but competition would provide coding examples of what good code was, and make good code available to beginners, or those who want to deliver products/services faster.

Rapid Application Development

There would also be a Dreamweaver Extension or Webservice, where you can browse, view, or download modules as you had a need for it.

I just had the idea, does this interest people?

What do you expect to be at new cf jobs?

I mean as we get more experienced, we have certain expectations of the way the development environment is setup. And each of us may slightly vary on that list, or what solutions.

When I start a new job, I expect:

1. Source Control
2. Coding Style Documentation or at least an example
3. Development Life Cycle, of where we do code from development to production
4. Project Management Process/System: So I know how to correctly manage my time, especially since there usually is a lot of multi-tasking.
5. Am I working alone or as part of a team, and how is the division of labor of that team organized?
6. What kind of training or training support is there?
7. What is the architecture of the code and database?

That's my basic list, what is your list?

Thursday, July 06, 2006

Where's the beef?

Well here's the thing, when i start off at a new company, I usually have to bring my bag own set of standard needs as a developer. And it's hard to find the solutions that fit every company.

1. What source control to use, and will it be cheap and work with many different ide's?

2. What kind of project management process or system aka How do we manage our time and priorities so that work that should be getting done is getting done.

3. What's our development environment? Do we have a dev server, production server, perhaps even a testing or qa server? And do each have seperate web and database servers?

4. What database are we using, is it well designed, what tools do i need to help make sure it's being used correctly and is well maintained. Are they using any maintenance plans, is there any diagrams of the database structure or ERD's?

5. What kind of coding style/framework are we using, what's the naming conventions, I want all of this info right away, so that the work I do, can fit in, with the best practices of cfml and the practices that this company wants it's way of doing things?

6. What tools/software do i need to download to have an elite developer's station? What OS? What DB Tools..

7. What kind of training plan is there or should we have?

I mean that's my point, there is no universal starting point or standards for the above question.

Every place I go, there is a mass discussion as to how what I consider bare minimum requirements. Why worry about what framework, if we don't have hte basics covered first?

That is my current blog point..

Think about it.

Framework Evangelism

This is what irritates me about coldfusion, i love to code. But if i don't code the way everyone else does, that somehow makes me a crappy coder.

If your happy with the way you work, so be it.

But we have to think more than just short term.

What if you died, and no one using your specific method was available for hire, and had to hire any variation of a coldfusion developer, how easy is it to take off from where you were to make changes, understandable.

But instead of seeing that as a practical need, you see that somehow as an attack on your favorite framework.

And honestly it really is irritating, the constant insinuations, the evangelization, join us, be with the good coders.

Because if your not with us, your against us.

That is totally purille.

I am not here out to defame or destroy the way you code..

But like with any method, even how you vacuum your home, there are pros and cons of every method of doing anything. And i try to bring up a few things, not because i want to hurt, insult or destroy your framework or methodology, but because I want to bring it to your attention as something to think about.

Is it so hard to admit that your framework or method of choice has flaws?

I know i try to always improve how I do things, make sure I understand the short term and long term costs of the way I do things.

All I ever wanted was to stop coldfusion from producing bad code, but you just can't believe that the way to do that may not be your way. And I am not saying my way is 100% perfect, there is no such thing.

Let's grow up a tad, and stop pushing X framework as the solution of all problems...

I may disagree with you,, but I don't hate you for disagreeing with me.

But it seems the more i try to participate in helping this industry grow as a blogger.

The more i get hate mail or the wrongful assumption i am trying to hurt or destroy someone's framework.

I honestly do not see OO or Java as the way to be the best coders, that's my humble opinion. It may work for you, and htat's fine I am not trying to persuade you one way or the other.

I was only trying to have a logical discussion.

But instead I get comments like, well you've not used OO or OOP, so your obviously a low quality programmer.

Is that what Hal Helms and Steve Nelson and other greats really had in mind when they had these ideas for improving coldfusion, that it's our way or the highway?

Where are all the nice people in coldfusion?

Friday, June 30, 2006

Being Mr. Clean

I'd like to share some of my experiences as a coder in the Mr. Clean role, where've i've had thru the last 3+ years, been the person cleaning up the code for other people.

And maybe it's having to do that constantly, that has made more my focus on the basics, rather than soem advanced cf programming.

So i'd like to share some of my systematic approaches I have to improving the code.

1. Documentation

Commenting is essential as more programmers are aware of, but when you have a lot of coldfusion files and applications, it's time to step up and document your applications as well.

And this doesn't have to be something highly complex.

For example if your a dba, you'd create a Entity Relationship Diagram as both document and reference material.

As a coder create an Informational Architechture of your Applications

Pick an Application on your site.

A. What files/folders does it contain
B. What custom tags/includes/cffunctions does it use
C. What datasource/databases does it use?
D. Any kind of major current problems going on with it?
E. And if you have the information, perhaps a small history would be nice as well.

This is all about my belief in the importance of preparing for the worst, and also providing training information, for either a peer, a successor, your manager, etc.

2. Source Control

This may sound sad or amusing, but not every company has source control in place, or knows what one is easiest to use and deploy. Or what ones can be cheap to try out and cause the least problems

This takes time and trying different ones out.

3. Pick and Document a Method/Framework

It doesn't matter to me what method you pick, but document as much of it as possible, what naming conventions your gonna use, coding styles, working in any kind of teamwork styles etc.

Even if your using the most known framework in cf world, each company tends to have it's own unique flair for how they implement it. So document it, for your posterity's sake.

4. Know and Train to be expert on all levels of application development.

Where you may start out by being a part of a team, using methods like fusebox where you only have to code in certain aspects of coldfusion application development, in the end, if someone leaves, or you move on, you may not always have the option of just coding in what you've done so far.

So I still believe that training in all aspects are important, good coding styles, using your variables/incoming data, parsing/manipulating strings/data, interaction with databases in writing great sql, basic layout and design.

I am not claiming to be an expert, I just suggest it's wise in the long haul to know as much as possible.

Now of course, it may not always be easy to implement all of these ideas, right away at full 100%, so you need to find small things, small incremental ways, so that you're gradually becoming the full rounded, long term thinking/planning developer.

I hope someday where I can stop having to go to places and be Mr. Clean, and just write good code.

Thank you.

P.S. Happy Forth of July

Wednesday, June 28, 2006

How did you get your ColdFusion Training?

After a lot of the comments back and forth, I am kind of curious to here some comments on the different ways and methods that we all got trained to learn to use coldfusion.

I myself, learned by bothering the web development team, when I was a tech support person, to learn how to do everything from html, javascript and coldfusion.

I was always a person who wanted to learn more, do more.

No one was offering any training, classes, books.

But on my own I had started off by getting an Instant HTML book, then just started to play with html, javascript etc.

As for training companies provide, in my personal job experience:

1. I have been to exactly 1 ColdFusion Conference, CFNorth, loved it tremendously, but the company wouldn't pay to go a second time. Most of the companies I worked for did not seem willing to spend money on training, other than to maybe buy a book for you, and that was if you were lucky.

2. I also went to a free Allaire Spectra Demonstration in Minneapolis, where I saw Raymond Camden for the first time. Not because I really was into Spectra, but because it was free and it was any kind of coldfusion training that i could actually hear other developers from.

3. And this was before the days I even heard there was a CFUG, but I really did like the early days of the CFUG. I even was lucky enough to present a few times.

4. But most of my training was either me buying books on my own, learning on my own. I just asked a lot of questions.

5. Eventually I got the opportunity to help train others at 1 company, and I tremendously enjoyed that, not because I want to shove my preconceived notions down someone's throat, but really because I want to help other people have to go thru the painful process of learning that I and many others had to go thru. The CF Developer's Guidebook is awesome both for learning to get certified, but to also help know what are all the aspects of cf to master.

6. But as I get exposed more to different jobs, companies, it just became obvious to me that companies didn't really want to help train you. They wanted you to be trained in how ever many programming languages and methods, but didn't want to take the time or money to help you really master it.

7. And I've done a lot of job interviews, it would be very shaming that I would see all these web shops, that just didn't care about the quality of their code, yet I would have to try to get those jobs because sometimes that's all there was.

8. So because of that, I started to write my first articles, and I posted thme on defusion.com, they are still there.

I mean I even created this blog, because I want to both learn more, share more, hopefully to bring the quality of our industry as high as it gets.

But it really upsets and insults me all the negative comemnts I get. Like that because I don't agree with them, or didn't have the same experiences as them, that I am somehow not a good programmer.

I mean we are all shaped by our experiences, and none of us exactly have the same ones, can't we respect that out of each other?

I really hope you can see past your biases, to our common desires and dreams for coldfusion to be the best it can be, and that we as an industry can shine...

I am no Ben Forta, Charlie Arehart, I am just a ColdFusion Developer who loves ColdFusion, I just want to both be the best, and help us all as i can be the best.

So tell us all what kind of training experiences you had, I really would like to hear.

Thank you.

Tuesday, June 27, 2006

Are we going down a healthy path of ColdFusion?

Lately all i hear is eclipse, java, .net, code reuse, database introspection, and I find it rather irritating, I mean honestly have we as an industry really proven that we create stable, usable applications?

Maybe that's why I care less about what the trends are, because I see us more focus on what's new than doing ColdFusion at higher level's of quality.

I've had a lot of job interviews with many different companies, but what strikes me is this drive to new technology, without even been to the point of creating good code.

I think we've lost track of the lessons we should have learned with the dot-bomb.

Here are some of the lessons I learned:

1. There has to be solid financial stability, could care less for IPO's, porsche's but just to have a job I can keep, and be at for 10-20 years would be really ncie for a change.

2. The end of all these schlock shops that just churn out code, that 1-2 years later embarrasses or destroy's their reputation, because it was crappy coding.

3. New Trends/Fads are fun, but are no replacement for solid standards, good work ethics, and giving a damn about the applications you sell/provide or service.

4. The end of Short Term Planning/Thinking, I mean sure there are things we have to get done in the short term, but why keep self-destructing by avoiding what is essential to being a top knotch language...

Maybe that is why I am a fan of Charlier Arehart and a few others out htere, that try to help us create better code and applications....

Maybe that's why I could care less about OO, Fusebox, MachII, ColdReactor, ColdSpring.. Because are we really as a whole industry really turning out applications like we should be, something to be proud of, that lasts, instead of having to always re-write everything in 2-3 years because we didn't give a crap...

Maybe that's why I use to go to CFUG meetings and read the CFDJ....

Instead I get, have you done an enterprise application, focus on inane details instead of am I proud of the code I create, do I give a hoot that 5-15 years later it is still reasonably easy to read, scalable, can be easily fixed or changed...

I love programming in ColdFusion, just not sure where I fit in an industry that cares more about having/creating the next dot-com explosion when we really know it's just gonna blow in our faces again...

Just think about it...

Thursday, May 18, 2006

From Fluff to Functional:Dotcom Titles Evolve

I am completely frustrated with the whole mass confusion that exists as part of the IT/Web Job Search...

I want to open a discussion between recruiters, job seekers and big resume sites, to help clear this confusion up...

read more | digg story

Thursday, April 27, 2006

Dealing with non-standard boolean values

I am have worked with how Access and other sources deliver non-standard variances of boolean variables.

After all when you update/insert to the database, all you want is a 1 or 0.

So I created this udf to help speed that process up.

<cfset one = "false">
<cfset two = "0">
<cfset new_one = 0>
<cfset new_two = 0>

<b>default values:</b><br>
<cfoutput>
one = #one#<br>
two = #two#<br>
</cfoutput>

<cfscript>
function booleanize(value) {
if (not isboolean(value)) {
value = replacenocase(value,'on',1);
value = replacenocase(value,'off',0);
}
if (yesnoformat(value) eq 'Yes') {
value = 1;
}
if (yesnoformat(value) eq 'No') {
value = 0;
}
return value;
}
</cfscript>


<cfoutput>
<b>New Values:</b><br>
one = #booleanize(one)#<br>
two = #booleanize(two)#<br>
</cfoutput>

This includes the udf as well as the test example.

I know it sounds simple, but this is easier than having to adjust your code logic for every checkbox, access on/off or true/false value.

Think about it.

FEMA needs to be scrapped, senators say

Instead of fixing the problem, they want create a new organization in the same image. Ah but here is the punchline, they want to do this, 5 weeks before the Hurrican Season.

Amazing stupidity...

read more | digg story

Friday, April 07, 2006

Why SQL programming is so important to a CF Developer?

Right now I am listening to the ColdFusion Podcast, and I have to strongly agree with them, on the importance of learning to write correct and scalable sql code.

There are many different databases, and most cfers, start with access, which is great for beginners or very low traffic sites.

However if you want to build something that has to be able to handle lots of transactions.

Now the first part is to understand what causes blocks of performance?

Well for first off, any time you interact with the database with a cfquery or cfstoredproc, you are creating seperate blocks of memory, that need to be processed.

So how many cfqueries and correctly written queries is what really matters.

When you write the queries, identify the columns of data that you want to bring back. And Only have those columns in your select statement. In addition, having the columns in the correct order, as they are created in the tables, helps for performance...

Learn your table structures, make queries that work with the grain of their structure instead of warping it, making it go thru extra processing just because you were too lazy to put things in the correct order....

Now if it is just one table in the query, there are limits to what more you can do, to improve performance...

But with joins, you can take the query from the cfquery to a view or stored procedure. Views are usually the easiest, to create, from within sql enterprise manager.

Now when you run the page you can identify the performances of each cfquery, and over time you will get a hang for what query is causing problems or not...

For example if you are looping and doing a cfquery within that loop. That is actually causing a performance problem. The better approach is to combine the top query with the query in the loop, so that it is one connection with the server instead of looping.

Part of the problem is having the right tools and using them correctly...

But this all that i have time to discuss, please ask any questions. I'd be glad to help.

Tuesday, April 04, 2006

Charlie Arehart: A Pragmatic CFer

I know it's sad he's leaving Blue Dragon, and I know it feels like he's leaving. He isn't.

But perhaps this is our time, to give thanks and respect to one of the true leaders of our community.

I can still remember reading some of his first articles in cfdj, and I was really impressed, because to me, I wanted to learn more, do more, and be as efficient as possible.

To me, he seemed, how can I help people from any level of experience in cfml, program faster, easier and more efficiently.

From his tips about CF Studio and Homesite, to his different articles on developing.

I mean we all knew synax of Cf, but putting it together in a professional and efficient manner isn't something that we had the ability to take classes on.

So in bits and pieces, he is the guy that gave you that extra depth, made things faster for you to develop.

Gave you some undocumented features and knowledge of how CFML works.

I think that is is because of cf writers and programmers like Charlie Arehart, are the reason I wanted to blog and become a writer.

Remember your committment to the cf community is not just about how many articles or books, it's about your passionate committment to the craft of programming in cfml.

Thank you Charlie.....

Monday, April 03, 2006

Textpad: Still the best coding tool

It is still amazing, after 10 years, I still use textpad for my code editing. There are many reasons why it is superior to any ide.

* the ability to maintain block indents
* automatic code indentation (see indent style)
* regular expression based search and replace, including multiline regex
* Macro recording feature to facilitate complex text transformations and data processing.
o Macro feature supports multiple regex searches (and replacements) within a macro
* syntax highlighting (extendable to many different languages)
* ability to call external programs (such as Java compilers)
* large file support
* support for editing multiple files, with tabbed document selection
* block select mode
* synchronized scrolling of multiple files

Pure and simple it is the best text editor, at least so for me.

The interface is customizable, it has clip libraries so you can have snippets, auto commands etc.

But where it excels is the speedy file/folder search which can be enhanced by using Regular Expressions.

Why a text editor vs an IDE?

Well i believe in something called feature over-creep, where the at some point the application fulfilled all the core needs, but because they wanted to keep making money, they added more and more features, that probably would be best as a seperate application...

Do we really need an application that does everything? Or the best application for each specific need?

I guess it depends on your style, old school vs new school...

I'd rather have a fast and powerful editor, then something that did so many things i really could care less for. And look at how the memory requires of each is quite different...

What are the favorite old school software you still love to use?

Here is a few of my favorite's:

1. Namewiz - Batch file renamer for renaming digital photo files and any other files, according to masks or however you format it.
You can get NameWiz here.
2. Eyedropper - a system tray color grabber http://eyedropper.inetia.com/
3. IrfanView - greatest image viewer ever
4. Freenote - a notes system that i used to create all my notes for every task/project. It stays right in the system tray, ready when you need it. Get it here

That's enough for now...Please add your favorites as a comment...

Wednesday, March 29, 2006

I think I am getting OO

After that's all the cf blogs talk about lately, and so I am kind of slowly but surely getting on to that path.

To me it's all about better architecture for applications. I kind of like the idea of Model-View Controller, it was the methodology that was taught in that Fusebox Class I took..

It honestly was very interesting, if you work in team environments.

My big pet peeves was, the parsing fusebox has to do, to enable mvc. Now I admit I am still new to MVC and OO.

And that was my big problem with the whole process, was the whole setup process, how it affects performance, having to do all the parsing to enable MVC.

Secondly, how can we tell if we're going too far into OO, aka focusing more on the architechture then speed of delivery.

I think it would be nice to get some opportunity to learn and practice more MVC/OO.

And get my hands dirty in Ajax.

But until then, I will focus on my basics.

Project Management, Scalability, Documentation, Performance, Best Practices.

One of the ideas, I had posted a long time ago, was to have some kind of global code repository, like cflib, but it would be full applications, not tags. The purpose of this is to share code, review code, to see who writes what kind of application, in what way, that is both optimal and scalable.

Other than that, let's keep bring the bar up on CFML being the language to program in. We should be both coders and scientists...

Monday, March 27, 2006

Does Documentation Methodology Exist?

This is something I have been thinking about for the last 2-3 years, I see situation where companies have created a lot of wonderful applications.

However there is no documentation as to what those applications are, what code, databases, tables, servers.

I know this is a part of the argument about coldfusion developers not being computer scientists, and perhap's we're not..

But how come there isn't some research or tools on this?

Am i the only one concerned with the overwhelming lack of documentation methodologies?

I mean, currently i am on contract, and we don't have documentation of our applications, and we want to create that, but don't have a clear method as how to extract that information and put it into an updatable and digestable format.

There's no list of applications, there's no manual or bibliography of coding style's etc. They have good people here, but how can we put it together...

I mean we like many people, don't have the time and energy to browse by hand every aspect of the sites, and then also browse thru the code, databases, structures etc.

There must be a means, to extract that information and present it in a digestable format.

Have any of you seen tools like this?

Does a documentation metholodgy exist?

Or does all that matter is that we put comments in our code?

This just personaly irritates me, because we all want to get to this higher level of professionalism, as an industry, but do we cover all the bases that includes?

Just a question.

Tuesday, March 21, 2006

The Importance of Solid Project Management

First off, i am listening to the latest ColdFusion Podcast, about project management here. And I enjoy hearing about how developers battle/deal with clients about managing the projects.

Honestly it all starts with preparation, if you don't have a solid project management process and system, that can handle almost every situation...

And when you skip the process, you'll only be causing your own problems.

I stick by the process I helped to create at Rockler, it's simple and solid, but adapt it towards your own needs.

Then make sure everyone is on board for it, if not, it's just gonna self-destruct.

1. Project Request - Whether you are working with a boss, client or another department, the crust of all failures of projects start with the request. This has to be as fully detailed as possible.

It pays to define your specs as to what information you want from them. Because if they want to save time and energy and stress, the more information they provide the more accurate a picture of the project you'll have.

2. Project Plan - Now you take that request and figure out how to display what your idea of how to execute the plan out. You can not jump to any conclusions, you do not assume anything.

3. Project Review - This is the process of reviewing the plans to make sure that the requester agrees and approves of exactly the full details of your project plan, if not, then go over step by step, what needs to be changed in your project plan, until it matches 100% what they need and want. If they sign off on the project, then no changes can be allowed. This is their time to add features, or change look and feel etc. Here you can do the prototyping, wireframing etc. Whatever it takes to show the flow of the application. Also this is the time you develop a functional testing checklist, so how will you know if each step of the application is a success or not a success. The more work you work with clients to do this, the more accurate your project will do.

4. Project Coding/Developing - Now you start to actual taking the plan, and step by step execute your plan, no variations allowed. And the more you document any variations.

5. Testing - Use a test server, to test the applications, without making it available to public, use your functional testing checklist...

6. Deployment - Make sure you have a plan for this especially when you have different database, coding, graphics, files etc. More complexity demands solid planning and scheduling...

Now no system is perfect, and all of them get refined to the style of your project management...

But it all depends on how many project errors you have....

Use your project horror stories to improve yourself, learn from your mistakes...

Thursday, March 16, 2006

More thoughts on frameworks

There have been a lot interesting blog posts back and forth about frameworks, java integration.

I don't want to bring up the huge framework flamewars, I just want to ask a few questions, and postulate a few answers..

Frameworks in all honesty, are our attempt as cfers, to finally deploy some computer science concepts into coldfusion. Being that the huge majority of cfer's did not go thru any computer science training.

Being as that may be, we each thru our own experiences, and needs we have developed. We have our own set of ideas what we need from a coldfusion development environment..

And it is that development that enables us to deliver good applications...

And that's half the problem, we don't know which com sci concepts to put within coldfusion coding methods. Do we use OO, do we use scaffolding, rails, beans, etc.

Now when I personnally saw that CFML was on a java platform, my thought wasn't how can i code my cfml in java syntax.

My thought was, oh nice, now i can use some java functions/modules, that can do more things that what cfml has built in to it.

I can remember some image manipulation tag I had to use in the 1990's to resize images, and that if it had been java based it would have been much smoother, more options, etc.

Each has it's strength, so let's maximize what each can do, to create the best applications...

But each person on the chain of development to production, has different needs.

Manager Needs
1. Documentation of Applications
2. Documentation of Databases
3. Project Management System
4. Source Control
5. Coding Standards - How do we want our company/department to code, so that we know how to train and read code.
6. Disaster Recovery Plan - If any one on team dies or leaves, what information do I need to have to make it easy for the replacement to more easily take up from them.
7. Training Plan - How to track the training levels of different personnel, what books, classes, budget etc.
8. Code Review Process - To help developers identify bad applications, so they can improve both app and themselves..
9. Deployment Process - To move applications from development to production environments.

Developer/Coder Needs
1. My favorite editing/ide tool
2. My favorite db tool or standard db tools
3. Source Control Tool
4. Bookshelves for all my books
5. A copy of the coding standards
6. Constant Training/Reading
7. Code Reviewing
8. My collection of misc tools
9. Browser Testing - if your applications are possibly for multiple browsers
10. How can i build a good application, that can be easily fixed, repaired or modified?


End User Needs
1. Usability
2. Scalability
3. Error Catching & Reporting

I mean the lists could go on, there are probably things I missed...

Frameworks I feel is a misleading term, I prefer to call it architechture..

Your creating a coding architecture plan, based on that architecture, applications should be both created and used in a certain way.

But you see there is a difference between coding in a certain way, and how you deliver that application to an end user.

So where this is leading to, is some kind of checklist of asking certain questions to determine what kind of framework do you need.

Here are some of my questions, I'd Ask:

1. Are developers working as a team or as individuals?
2. Do you have different people doing, design, database, logic?
3. What level of learning curve do you want form a framework?
4. What are the skill level of your developers?
5. Are you coding in other languages?

I mean each has their strengths's and weaknesses.

So then the big question is what goals do you want to accomplish by adhering to a specific framework...

And in choosing a framework, go by what's best for you and your developers, not just because what your peer or industry uses.

Tuesday, March 07, 2006

Hal Helms - OOP Training in MPLS after cfobjective

Hal Helms will be teaching his Designing and Developing OO
Applications with CFCs class in Minneapolis March 13-17.

http://www.halhelms.com/index.cfm?fuseaction=training.cfcsDetails

This class will be offered at:

Faegre & Benson, LLP.
21st Floor
90 South 7th St.
Minneapolis, MN

There are 4 slots available and the price is $2,495.00 per student
or $2,195.00 if all 4 slots are filled

Let me know if you're interested - feel free to call me at
612-986-5077.

Thanks,
Nathan Miller

Friday, March 03, 2006

What is a Site Bible, and why are they important?

Well for a number of years, I have been in the position of trying to go from a system of absolutely no documentation, to a system of documentation...

I honestly can't remember where I heard of this idea, but basically a Site Bible, is just a 3-ring binder, lists all your server info, datasources, databases, applications, personnel..

Basically if you died, who would know where anything was, and what anything did?

What is your development environment, and if your the one who set it up, what if you died, how would any new people know how to use it?

Some people have tried web-based solutions, but I tend to having printed copies of everything, secure of course, on-site.

I mean in the history of ColdFusion, it's not known for encouraging people to document their servers, databases, and etc. Because most cfer's do not come from a computer science background...

But all that aside, what if your whole team died, and they hired a new crew, do we all care so little for the work we've done,that we refuse to hand it off as good as we made it?

Also I am curious to see what other companies, people have used as their documentation process...

Site Bible's are also a good place to store emergency procedures, phone numbers, anything you need if online or servers go bad...

Think About It!

Thursday, February 16, 2006

Some thoughts on Frameworks

Frameworks is the big question of our decade, which to use, what's the best for what kind of development environment I am in. I find these are all valid and important questions.

I find that I have some reasonable concerns on frameworks, and although I have them, I am not trying to say that frameworks are bad or evil. I just don't think we're at the highest level of quality yet.

Here are a few of my needs for a framework:

1. Works well in individual or team environments
2. Is not visible to the end user, end users see each web page as a seperate page and application.
3. Eliminate any and all processing that is needed for a framework to run, so that each application is just loading it's own functional needs.
4. Each application can be stand-alone or part of a whole application farm, and if different frameworks are used for different applications, that they can seamlessly work together.
5. Clean and Easy to read so that non-framework users can just as easily read,add or modify that application.

Now, I know as we keep upgrading and adding new frameworks, we are going to eventually be at this point, I can feel it in my blood. (I hope) But let's discuss, the where's and why's of each need, so even if you disagree with me, at least you can understand what i say, and perhaps why I say.

Need 1: Works well in individual or team environments

Face it, not all of us work in big shops, and sometimes whole websites, applications are written by 1-2 people, not necesarily working together.

So we need to find a framework with ways that works well with both. And of course it is nicer and more learning involved in a team environment, but reality is not always on our side.

Need 2: Framework invisible to End User

I totaly admit that I am a Jacob Nielsen, usability fan. And honestly as great as the framework applications may be in maintainability and stability, it bites in terms of usability to the end user. Frameworks are very important to us as coders, but let us not forget that it's our end users that need to be able use these applications, whether they be for Intranets or Ecommerce Portals.

People do enjoy bookmarking sites, and to help them we need to have readable bookmarks. And I admit that non-framework sites don't always have this well done either. But there are ways to make it seamless.

For example which is easier to read?

1. http://www.mysite.com?index.cfm?fuse=shopping.cart

2. http://www.mysite.com/shopping_cart.cfm

I know some claim that most people don't read the web page links or don't really bookmark them. But how many of are willing to take that chance? Read more about this here at Useit.com.

And btw, there are ways to make this streamlined, for example creating shopping_cart.cfm that just has the correct includes to your x-framework specific code. But then it's all invisible to the end user, which is a good thing.

Need 3: Eliminating Unecessary Processing

As part of setting up each aspect of the framework, it takes some processing per page, to help it both setup, and recall which applications to load. I think this an honest balancing act, that needs further tweaking. Perhaps the big question is what processing should be done for the framework on every page, and what processing should let the application code itself do. I think this is something for open discussion on the blogs.

Need 4: Stand-Alone Applications - Frameworks and Non-frameworks have to be able to work together.

One of my personal pet peeves, is that working for X Company and they outsourced some code, and this one application was done in fusebox, while 100% of our other code was all done in normal cfml code.

Simply there has to be a way so that your framework can easily be worked along side with other frameworks, or easily translated if necessary.

Maybe this is just a fantasy, like having Randy Moss on my fantasy football team. But honestly sometimes we are forced to take in applications made in different frameworks, and yet they're all for the same website. So we have to somehow find a way to integrate them, so they can work well together, and not make it too difficult for anyone following us, and seeing code for a website, done in many different methods/frameworks.

Need 5: Easy to read and modify

You created this beautiful application, in the most hotly used framework, everyone you chat with loves this application especially in the framework you did it in.

However when you turn it in for your client, they look at you, and say something like...

"What framework is that? We don't use that framework, so it's going to be hard in the future to be able to read/modify that application, especially since we didn't ask you to create it in X Framework......"

They're not saying the framework is bad, or evil, just if we do things in frameworks, they have to be easy to read and modify by other people who are completely unfamiliar with that framework.

Is this realistic perhaps not, is it needed, heck yeah.

Maybe I am just sharing some of my pet peeves from my years as an ColdFusion Developer, but I feel these are real needs and hopefully set some goals for future framework development and upgrades.

Thank you very much...

P.S. A Happy and Belated Valentines Day....

Tuesday, January 03, 2006

Marketing Theory: Pros and Cons

One of the main issues of consternation these last few years, has been my didactic arguments over the values of Marketng Theory, and it's areas of weakness.

One of the issues that had really consterned me, at one of my previous positions, is how they seemed to be out of touch with their customers. And as I am reading different MBA books these days, it seems to me there is a clear confrontation between the two different perspectives.

Marketing Theory indicates that, the best way to make decisions regardin promotions, packaging and sales was thru segmenting the prospective/current customers into their different demographics and analyze how the best path to encourage new and repeat sales.

However there are several holes in that theory, that will become obvious as I continue to tell my story.

Company X, continued to look for new sales and promotions to advertise, based partially on inventory, to indicate which items we needed to get rid of, and partially on finding the next hot new item, that our customer would want.

However, basing our promotions on those two sounds well, but what if your customers, have certain expectations of the online/offline store inventories that are not being met.

For example, when you go to a Paint Store and they sold lots of nice varying colors, but none of the basic colors were in stock, nor were there any brushes. For each industry there are some basic items, that customers expect you to keep in stock. Because they don't always visit the online/offline stores for new items or what's on sale. Sometimes they need a paint brush, and if your a paint store, and they don't find what they would naturally expect you to carry, why would they come to you again?

I am not saying to not analyze your customer base, what products hot n not, shape your promotions on inventory. But if you don't plan to cover the bare essentials a customer expects you to have what's the point?

You can have the highest sales, but still be losing repeat customers. Because although they may have bought during a sale, why would they come back again, unless you had what they needed and expected from your type of retail industry.

And yet, Company X, would rather not be in contact with the customers directly, to hear what they thought. It's not easy, and this isn't simply about blaming, but how we as an ecommerce/retail industry can make sure we're delivering good service, products and even more importantly a good experience.

Mark Hurst, of GoodExperience.com, has been one of mailing lists, I read weekly/monthly, he has been a fount of common sense, and good advice. He talks and re-emphasizes the importance of delivering a good experience to the customer.

It sounds complicated but it's not.

You have to really understand your customer, to help provide them what they want. You can suggest new things, trends and changes in products and services. But if you aren't deliverying what they'd expect on a daily basis, very well, why would they bother with you?

This reminds me of an earlier experience I had in Company Y. I was working in a Mail Order Department of a Video Game Used/New Buy/Seller. They had 1 central warehouse at their headquarters. Other departments if they had a connection to the upper management, got priority in inventory.

Let's say I took an order on Tueday.

I am waiting for the order to ship, but the last item in inventory was taken by someone in another department on Friday, even though I had already an anxious customer awaiting their order.

Inventory is a very key aspect of ecommerce, if not managed wisely, it will manage you.

For example, imagine making a huge online/offline promotion of a new product, only to find out weeks later, that inventory is out of stock, or didn't place any orders or enough orders for supply.

If ecommerce is gonna become a stable industry, we must become a well-oiled industry of best practices...

Well that's been what's on my mind...

Think about it.