Thursday, June 17, 2004

Plurals, where's my plurals??

Well yesterday and today of all things, I am working on re-thinking my companies site search functionality.

For which we are using SQL Server 2000's fulltext capability, I have been exploring and tweaking for the last 2 years. I thoroughly enjoy attempting to configure it right.

There are so many ways to go wrong.

Such as:

1. What are the customer's looking for?
2. Where's the data that's most likely to have the best pointer to the correct results?
3. How do I display results, and tools, and aids, to help the customer in case of difficulties, or just to make sure the search is usable.

My two search bibles, which I will never part even in death, are:

E-Commerce User Experience, Search Section/Chapter written by Nielsen Norman Group for which we know the most about the author, Jakob Nielsen, Usability Guru.

Then there is this color pdf from Cognetics, on Search Interfaces for Information Portals.

Also I still love Kristoffer Bohmann's article on Effective Search Results

In this deadly art of search design/development, we few mortals must dare to solve two main riddles.

1. How the heck can i find what the customer is looking for??
2. How should I display the results back.

Well yesterday to today, I've been working on question or battle #1.

Figuring out how to hack the data.

In our case we are searching 3 different ways, and then pre-determining the rank multiplier value for each, as well as a new feature I am adding called Rank Drop Off.

Rank Drop Off means, I got too much wanking results, and who's really going browse thru 30 pages of results. So to help eliminate the flock from the schlock, on the fly I determine the ranking percentages, and then drop off, anything below a certain percentage.

Now of the results, that come back, I am want to make sure no duplicates occur. Unfortunately we have product groupings that have the same title, (another item on my wishlist for cleanup), so I created a sql view to help give me only unique, active and searchable product groupings.

I also have to grab the top rank value of the first row, and use that to on the fly calculate a percentage of that ranking value for all the rest of the records.

I had to bring out my trusty rusty handy dandy The Guru's Guide to Transact-SQL, to look up joins, subqueries, all that funky stuff. That we in the Blue's Clues sql training class have learned.

So day later, I have all the layout, design, different modes, and yet I can not counter the PLURALS!!!


It could be the end of world, for us, stay tuned, as we find out what happened to the DEADLY PLURALS!!!!

Anyways, I can't get the freaking plurals to work.

I say table, hoping to get table and tables back.

freetexttable (product_groupings, title, '#filter#',80)

I have tried putting it in quotes, adding an * before and after.

I know there is an inflectional mode if you use a different method other than freetexttable, but freetextable has the rankings I need.

Plus there is just too much data, to hand-code a synonym or plurals table.

Do you oh wise wizards of Blue's Clues, have any ideas or suggestions.

That is beside the old "Jump off a cliff, Craig!".

Which is in my employment contract to not do, on thursdays! Especially in summer.

Anyways, that's my brain in a jar.

Wednesday, June 16, 2004

Coldfusion does not do Ecommerce Well??? - Blog

Go down near the end of the page, and you'll see the comment by Ben Forta on ecommerce.

I work for an ecommerce site, so hearing that ColdFusion is not a good solutions, really just hit me through the roof.

To make it easy, here's the Ben Forta quote:

Craig, the e-commerce space has never been where CF does well. Sure, it did ok there in the .COM era, but that was an exception, not the rule. Most of CF development happens on intranets and extranets and portals, internal stuff, and that is what CF is best at.

How can I deal with this? Can Ben Forta be wrong, or have we as coders just not persuaded the world that we can create stable, profitable ecommerce sites?

Perhaps, if you understood my personal work situation a little bit, that may add to your understanding.

For the last two years, I have been working for an ecommerce company. From day one, my job has been to clean up the horrible coding that was put in place, by a company using a packaged ecommerce system.

Every day, for the last year, I have been fighting with my boss, to help finish the cleaning process, to both clean up the code, database, files, folders everything.

Only each year, we never get it done, and he keeps coming up with reasons, why any other technology would automatically solve all our problems.

So here I am, trying to fight for my sanity, and wonder what can I do?

I am not a quitter, so every day, I work on different ways to improve the quality and stability, just so we can cleanly add new features and functionality.

And the funny thing is, each year, my boss finds a new technology, tries to get bids for pricing and either the prices are way out of our reach, or they really are not good solutions.

In other words, when you have a complicated site, it's unrealistic to just buy a package, and expect to easily deploy all your custom needs and features.

Also, it was way more expensive than coldfusion was.

So that adds to my relief and frustration, trying to save my job, trying to do the right thing no matter what.

And then this year, we decided to finish the clean up work, but instead of asking me to help finish it up, or to hire some desperately needed additional personnel, he decides to outsource all the final cleanup work.

Now during all this time, I have been starting my process of writing my first CFDJ article, hopefully to come out in june. All about why coldfusion is a great solution for ecommerce.

I get more and more fired up, I had presumed, that the reason coldfusion was so down-trodded upon, was that we really hadn't done good work.

I mean the kind of good work, that doesn't require you to come back a week later, and fix all the errors, you never fixed in the first time.

Have we as an industry done really good, high quality work??


I mean I still hear of people, that do not see the need to comment their code, or think worrying about performance is lame.

So here I am, my boss just left for 3 weeks in France like he usually does every year. Summer is a our slow time, which is the perfect time to finish cleaning up the code, and totally revamping our ecommerce coding, database and all.

But instead, it's much more important that he goes to France.

Anyways, I don't mean to get on his case.

But I am on fire here, and wanting to show and prove why coldfusion is a great answer for Ecommerce.

But if Ben Forta doesn't believe it's good for Ecommerce, what am I to do?

That's why I get upset about all this flash, oo, java talk, because I am not sure, that as cfer's we've really mastered the basics?

I mean, are the customers happy with the work you did, has it improved their profitability,because you did it, or it was done in ColdFusion?

My point of all this, is that this is a fight, not some hoping things work out right.

I am dedicating this blog to prove to the world that ColdFusion is a great solution for speedy, stable and profitable ecommerce sites.

But that means, that we all, have to be coding at higher levels of quality.

Project Management
Correct SQL Coding Stability and Performance
Bug Tracking
Error Proofing

Whatever it takes to prove that Coldfusion is not dead, nor dying.

That's my humble freaking opinion.

Why seperate business logic from presentation?

It sounds logical, but I think it really handicaps us as developers, because too often, that CAN not MUST leads to the left hand not knowing what the right hand knows.

100% of all my work has been alone, developing applications, that integrate business logic with presentation. Maybe I am the only one who does.

But there comes a benefit, by having done all of the work, I have a better macro and micro picture of the application.

And I think this is actually a plus, because I strongly believe complete application knowledge is important.

I am just indicating that this is the better approach, I acknowledge it is the more painful approach, but I still belive it is the long-term better approach.

Now I am not saying all things about mvc, or fusebox or mach-ii are bad.

We obviously have to try a lot of things, different ways of looking at things, and seeing how we can improve speed, efficiency and performance.

And obviously there are different needs as a 1 man developer vs a team developer.

But you need to see both ends of the consequences of those approaches.

While I agree that the different methodologies can speed up the process of developing the application, but how do they train you to make sure you can do all parts of the application?

P.S. Now as most of you know my style by now, seem to understand that I am contra-trend, or contra-fad, or seem to be a luddite of some kind.

In reality, I am neither, I am here because I want to challenge your assumptions, make sure we are all making good decisions and the right decisions.

I am no guru, but all I want is an honest discussion of how we can move coldfusion further ahead.

As one of my favorite quotations:

I may disagree with what you say,
but I'll defend to the death you're right to say it.

Have a great day all!

Tuesday, June 15, 2004

End Users, who the heck are they?

Usamajility!?, has a great usability cartoon. It's both amazingly funny and enlightening at the same time.

Okay now let's get our shirt sleeves rolled up, and start working on our major area of disagreement.

It's not like I hate flash, or that I really love html 2.0/3.0/4.0. The major point I have been aiming for, again and again, is to understand your end user, and of course understand your client, but the end user is more important.

For example, if you client says I want the application to be X, then you create X, only the end user can't possibly figure out how to use application X.

So what do you do?

Do you tell the client, they had a bad implementation idea, and have them end up looking like fools to the world of their industry and to their customers, or do you try to ignore the end user, and hope the client can work it out at some future date.

My point is that the end-user is always right, more so than the client, who paid you. Because we're not like a fast food, where clients can just buy what they want then forget about the products/services we provide.

It's an ongoing relationship, based on how you help/hurt their meeting their goals.

Now, I personally think flash, ria, is overplayed as the new in thing, when it's more of a special circumstances technology, to do only in limited circumstances. Which may be your circumstances, developing rich media apps.

It's pretty rare where I come from to do any flash or RIA's.

So again, it's not like I dislike flash, I just rarely have seeen the need for it.

And I do acknowledge that I have personal ire, that is a flash-enabled site, because the whole usability of the coldfusion part of macromedia's site is horrible in it's searching, finding, linking and so forth.

Remember if your end users say we want a flash app, then that's fine, as long as the app will usable by the presumed end-users.

Be well all.

How can ColdFusion grow wisely?

I think there are some serious areas that we as an industry can grow. But it really depends on both as an industry pushing innovation, and branding, as well as helping Macromedia be aware of what direction we want to go in.

I think the first step is understanding the different markets that ColdFusion is sold to, and perhaps coming up with different ways to package or promote.

1. Small CF Site/Ecommerce Site - One of the things I like about ASP, in terms of the server, is that you just needed a .dll to use with IIS, and wham, you can do run CFML pages.

I think we need to create a SMALL CFML SERVER, basically what it would do is serve CFML pages, but have no cfadmin, or any advanced configuration, functionality. But then in all honesty, most small sites or shops just need to grab some CFML, then put up, and that's about it.

Let's find a cheap price, re-package it, do not think the name ColdFusion Express, completely wrong branding approach.

Think ColdFusion Small Server, just for small shops to run CFML with datasource connectivity.

Offer it for maybe $20-100. It's a great intro, and it encourages those who like free or near free web application servers, to start using, CFML, and as they progress, then we can introduce bigger packages as they grow.

2. Then we need the ColdFusion ISP Server, face it, ISPs don't want to get a different license,admin for each site running on server. They want the ability to control admin, multiple sites, but administer them separately, as well as having a sub-control panel to give to site owners,without interfering with other shared sites.

This has been a long term need, to give ISPs a cheap licensing package. Remember, identify endusers, identify all unmet needs, and potential needs.

3. ColdFusion Load-Balanced Server, basically it's a personal need for me to only to have 1-cfadmin page to administer the same site on two different or multiple servers. It would be nice to monitor, turn caching off, control anything, across a range of servers that are serving the same site.

After all, if ColdFusion is going to be a medium to high traffic solution, then we got to provide the necessary tools to help ease the administration of those sites. Especially as more and more methods of load-balancing become available.

4. High-End Server, especially for medium-big to big companies who want a big dollar price, for a big enterprise application server. Then it has to be packaged with rich features, to help ease the administration of that server.

If ColdFusion is going to be a high-end server equal to J2EE, Websphere,then it has to have the server management and maintenance capabilities of those servers and more.

Okay my next suggestions for growing wisely.

In this day and age of economics and controlling costs, I think it's time to show case sites, companies using coldfusion: that have controlled their costs extremely well or have made a lot of profitability because of using coldfusion.

Let's hit people in the pockets, show how we can both save and earn money, ROI, baby.

But to do that, we need to have those sites, companies showcased.

That's all I can think of for today, hit you later, cf gator.

Monday, June 14, 2004

What is usability, beyond all the cool phrases?

It sounds like it's more complicated than it is. This post is based on all the comments, regarding my RIA post.

So let's take it to the next step usability.

Irregardless of what the guru's say, and I do not pretend to be a guru, just one coder talking to other coders.

Our applications have to be designed/developed for who our end users are. And based on their know-how they have reasonable expectations of the web app, and the browser in which they interact with that app.

Browser Usability: Must not intefere with list

1. Link colors should stick to standard link colors, so there is no confusion as to what is a link and what is not a link.
2. The paging of back/foward should not be intefered with, because they have a reasonable expectation of going back and forth.
3. Right-click context menu's should work for easier printing, view source, etc.

I am not saying you can't do things to protect images and etc, but it shouldn't overwhelmingly so replace the browser experience.

Now I do like how the display of flash, but it too much replaces the browser experience.

I wish there was a good way to convert flash to javascript vector graphics, then you can have the great interface that does not interfere with browser experiences. - Interesting site about javascript vector graphics

Rich Internet Applications = Yuck

I mean if it's for an ad, or a game or some entertainment material, flash is perfect for that.

But no offense to all my flash friends, but as a web interface, flash is highly unusable.

There is no sense of back and forth, no page identity, no bookmarkability, no right click....

You see customers have certain expectations of their experience world, that is if certain actions/behaviors get the results they are normally expecting to get.

For example,when I am searching in the developer's exchange, and I find a couple results, I expect to be able to right-click and open into a new window, or whatever it is that I want to do.

Instead of Flash or Browsers trying to dominate the user experiences they need to intermingle without intefering with reasonable experience expecations.

For me rich/animated/flash interfaces to data, may be nice, not that essentail, unless it's to some antiquated super-slow database, then it might make sense.

I certainly find there are things to learn by how flash and coldfusion or flash and databases interact, very interesting in terms of the data interaction.

But as a web architecture, it completely misses the boat.

1. Know the audience, I know clients/customers can be uninformed sometimes, or caught their eye on something fancy, but you're only going to make yourself look like a fool if you just go along with whatever catches their fancy.

Like trying to use a flash site for data interactions that will be dealing with mainly senior citizens. Does that make sense at all? It depends on knowing the end user.

That's why as unpretty as it may be, and it's certainly not my personal preference, I always stick to lowest common denominator.

Use what the customer most easily can use to get whatever specific jobs or tasks they want/need to do.

Do not EVER let interface or pretty flashy things get in the way of that objective.

However if you plan carefully, I actually am sure you can implement flash/ria that make sense for specific markets or customers.

But let's not live in the fantasy land that RIA, is applicable for everyone.

I mean I would love to learn flash, learn oo (hopefully not having to :)), learn java, play more with css and dhtml. But it's the end user that indicates what technology will get the best job done for the customer.

And so far, I've had zero to none opportunity to do so, maybe you have had different jobs than I, and that's certainly realistic.

But remember who the end user is, then determine what technology methodology you can use, not want to use.

That is why RIA is yucky, because it is not built on meeting the most common interface needs, but based on creating new ones, which are not really acceptable for most usefull applications.

Sorry, but that's my humble opinion.