Friday, September 22, 2006

Shopping Cart Showdown

Here's the deal.

I need a shopping cart for a client. I have basic functionality the shopping cart MUST have. Not necessarily because the client demanded them but because I'm forming a hairbrained notion that these are some type of milestone or rite of passage for shopping carts.

1) coupons & discounts -- there's nothing like putting a coupon with your ad or on an invoice. Even better, giving out coupon codes in your newsletters. Make sure they're paying attention! Many carts don't seem to have this. The granddaddy of shopping carts in the open-source world requires being broken TWICE to have coupons ("easy discounts" and "easy coupons" must be added to oscommerce aka OSC to get coupons). Bonus points for coupon support out-of-the-box.

QuickCart & Viart Free have coupons out-of-the-box according to shopping-cart-reviews.com.

2) a template system with under 50 files. OSC fails this test, requiring nearly EVERY file to be changed to consistently alter the HTML appearance features of the website. ZenCart has 95 template files not counting those for the admin panel. Viart Free has 115 template files.

Winner: QuickCart (loaded version) comes in at under 38 -- note "page.tpl" is the "main page" of the site. Other template pages MAY NOT NEED TO BE ALTERED! I haven't figured that out conclusively. But they're not using something standardized like Smarty so you need some PHP savvy to plow through them.

3) separation -- real separation -- of logic and design. ZenCart is OK on this one. OSC fails miserably. Viart Free comes out on top -- using Smarty templating! WOOT! However note the loss on #2, coming in at 95 template files. Shame on them! Smarty is much MUCH smarter than that!

Viart Free, as I mentioned, uses Smarty, and has a standard "header" "footer". In spite of 115 files, using Smarty would probably make it a pleasure. I'm upset that there's no standard "right-sidebar" type formats, but that can easily be added to header/footer files so I'm happy enough.

QuickCart also seems to have real separation of logic vs design, so it's the 2nd runner up for not using a standard templating system like Smarty.


4) real-world examples that show off the system's flexibility for customization & style.

This is a tough cookie because people are generally lazy. I looked 3 times at http://www.mals-e.com/home.php because it had some of the better shopping cart examples I'd seen. Custom buttons, horizontal instead of vertical cart display, entirely different layouts. Turns out this is a free hosted service, you don't install the software, you do have to muck around in your website's HTML, but it's really a service that handles the customer's orders off your site. It allows a lot of flexibility, and he's hoping you make so many sales that you want the advanced site features, which are not make-or-break deals. I don't see coupon/discount code entry, so Mal's service fails #1, but it wins on 2 & 3. How much more separate from the logic can you be?

Viart has an odd quantity feature that involves a drop-down, but that's probably fixable. It requires clicking a JavaScript pop-up to confirm putting something into your shopping basket, which is awkward. These are awkward, but livable issues, but all the sites I looked at had these issues so no one bothered fixing them.

QuickCart -- they don't have that many sites in English, and they have SO MANY in other languages, I needed to narrow the playing field. So of the English sites, I saw minor promising variants in the cart design itself -- something near impossible to do in OSC -- as well as at least one site where the overall design was beautifully done very differently from the others. The cart behaved the way I would want a cart to behave. At least one site had web sites up for sale, with a number of options for ordering, which is something I may be doing myself.

5) No restrictions.

Viart Free fails here. Limited to 50 products. It requires a Zend optimizer installation. But it does install on GoDaddy. However, this is not terribly expensive to upgrade at $119, if you go over 10 categories/50 products.

In any case, the winner system from looking at the websites is Mal's service -- but if I eliminate the one host I bumped into during my search for something better, QuickCart did better than Viart.


The winning system today: QuickCart. Several hundred shops are listed, though some are spammers or the domains are now invalid. One problem is that I've not seen very strongly customized category views, and that's an area I'll need to customize. If you expect to have a very small cart, don't forget to check out Viart Free. Notable mention for money: SquirrelCart -- at about $70 it looks like a good bang for the buck -- but I can't say how it does amongst all the criteria mentioned here, since I couldn't evaluate it.

Note that many carts were eliminated from the contest for a variety of reasons. #1 price. #2 bad reviews out of the starting box (such as VirtueMart/Joomla! which has been repeatedly reported as having the shittiest support forum, being overly complex, etc. If I want that shit, I'll go back to OSC).

Ok, so next I'll be working with QuickCart and I'll let people know how it goes.

[tags]e-commerce, programming, reviews, design, competition, custom programming, education, metasite, usability, web applications[/tags]

Monday, September 18, 2006

Oh, Popeye! -- Broccolipita-ish

I bought fresh spinach and feta cheese at Sam's Club in Middletown. The plan was to make Spinakopita, one of my son's favorites -- I was going to make it with pie dough. I have a clue what dealing with filo is like --- so it was "spinakopita" -- I know it's not, but who cares as long as my son eats it?

Then the spinach scare. Ok, so I throw out the spinach. Even though it was "organic" and probably didn't go near any other spinach -- with so many people in the hospital and someone dead, it's not worth spinakopita-ish to make everyone in my family sick.

So then what? I have a pound of feta and no place to go. So I bought a LOT of fresh broccoli. About 4 florettes. I steamed it. I thawed 2 pie crusts.

I cut up about 3 cloves garlic fine.

I didn't have a yellow onion so I used about 1/8 of a hefty red onion. -- about 3-4 tbs when chopped fine.

I fried up the garlic & onion in olive oil, tossed some crumbled up feta in briefly -- probably a good 1/2-3/4 cup. Only for about a minute or less -- I removed it from the heat when the cheese started melting a little -- just enough to make some creamy oil in the pan, but not to make a gooey mess.

I burned a finger from the steamer -- that is definitely a prerequisite!

Then I used tongs to hold pieces of broccoli on the cutting board (they're HOT!) and chop them up with my handy veggie cleaver -- cutting up the florets and stems into tiny chunks and a bunch of bittie flowers. I tossed this in with the stuff from the pan in a bowl, mixed it up and made some very sloppy loaves with quarters from the pie crust -- I cut the crust dough into quarters, then rolled it out thinner with a rolling pin. You may want to cut them, ball them up, re-roll them and make loaves like empanadas. I was short on time. If you seal them well, take a sharp knife and put slits in the top.

Now I am waiting for them to cook so I can eat them. I'm trying cooking them at 375 even though pie recipes cook hotter.

...

Mmmmm -- I waited until they were crisp but barely brown, and they're YUMMY! They also passed the son test.

Enjoy!
[tags]recipe, spinach, broccoli, garlic, onions, pastry[/tags]

oscommerce is a beast

I want to continue to offer e-commerce at a reasonable price, and that reasonable price will not be tagged on oscommerce. Oscommerce will easily be double the price of any other shopping cart going forward. The program is a beast, and as long as it's been around, it's turned into a Frankenstein monster.

To extend the program through "contributions" requires hacking it to bits. I installed only one or two modules that installed without having to individually hand-edit program files, but note that these modules completely and utterly REPLACE files from the base oscommerce installation, just as the ones that required hand-editing rendered the program un-upgradable.

This is point #1 in being absolutely and utterly unable to upgrade the package once installed and so-called plug-ins (read: hacks) are added.

This implies that oscommerce does not have "Hooks" - - no points at which contributions can easily be put into the program execution queue without disturbing the original files.

The templating of the program out-of-the-box is absolutely unforgivable. There is no separation of logic and design on the back-end of the program. Each are enmeshed within each other. One contribution forcibly ripped the template code out of the program code and separated them. I'm both grateful that someone went through the trouble and appalled that doing so was needed -- again this absolutely breaks the ability to upgrade the program.

I think I'm very spoiled by PmWiki. I never have to hack the program code to add a feature. Ever. That's Patrick's duty. Cookbook recipes (plug-ins) are kept separately from the program code. There are an abundance of program hooks to slip custom code into. The base install can be upgraded with or without the recipes being upgraded, with a minimal chance of breaking recipes, since the hooks serve as an API layer in the program, and rarely need to change how they behave.

I'm tempted to write in a shopping cart module, because oscommerce is the exact opposite of everything I've learned about a good, extensible and maintainable package.

I will be trying Zen Cart next. I now know enough about oscommerce to install it and even customize it, but I am not able, in any good conscience, to recommend it to a customer, and my price for installing oscommerce must be double what I thought it should be.

I have to apologize to the Frankenstein monster for having insulted him by comparing oscommerce to him. Oscommerce is far more of a hack than one body being combined with another brain.

[tags]e-commerce, custom programming, modules, open source, prices, programming, rant, usability, web applications, web standards[/tags]

Friday, September 15, 2006

oscommerce drop-down selection box hack

I was having a heck of a time today dealing with drop-down product option selections in oscommerce. I wrote a hack to catalog/includes/functions/html_output.php in the function definition for tep_draw_pull_down_menu I changed the following text:




for ($i=0, $n=sizeof($values); $i<$n; $i++) {
$field .= '';
}



To the following:



// Criss - XES - altered the following:


foreach ($values as $i=>$value) {
$xes_values[$value['id']] = $value['text']; }
asort($xes_values);

foreach ($xes_values as $xes_id=>$xes_text) {
$field .= '';
}



Now when I can have product option "A - 9oz" and "B - 30oz" and count on option A being the default selected item if the customer doesn't change the option. Try as I might "B - 20oz" was the option selected. Whether I re-added the options in a different order, whether I took out A B C D, etc. If it were sorted in reverse order, I could have left out A B C D, because 9oz should sort to the top of the list. This wasn't the issue. I have no idea why the program was so stubborn about sort order, but now all drop-downs, like it or not, throughout the site, will be sorted alphabetically!

I hope people find this code snippet helpful!

Free Family Tech Support

Doctors have this problem. The moment someone at the party finds out they're a doctor, they get the "Oh, it hurts when I do this..." request for free advice.

I get a little less of it than they do, since there aren't as many Mac owners, but would you believe my dentist did that to me? :) Did she think I was going to offer to come to her house to fix her ailing Mac for her? Or was she offering me to take the Mac home with me and keep it?

Macs are less popular than bodies, but I'm sure every PC tech at a party has this problem. It's never worse than when your family finds out that you do computer support, however. I don't, really DO computer support, not really. Certainly not for PCs. But the moment they hear geeky terminology, the relatives come out of the woodwork with stupid Windows questions that a Mac maven like myself can best answer with "Hrm. Sounds bad. Why don't you buy a Mac?" which of course leads to SOMEONE eventually actually getting a Mac. Now you're in business. Without getting paid.

My kids have Macs, because if I gave them PCs and they broke, got viruses, etc. I would just want to install Linux on them and be done with it, and the expensive games would then be worthless.

Considering the amount of time they spend with the games, maybe that's not such a bad thing, after all -- however, I digress...

Whenever there's a problem with the computers, the kids run in with panic, or determination to break any boundaries I assert in an attempt of procuring aid for their electronic addictions. Today my son's computer isn't on the network, so he has no Internet. Oh, what horror! I'm sorta happy. And exhausted. I certainly do NOT want to spend my wee-morning hours figuring out why his computer won't talk to our wireless device. My laptop is fine, he needs to be on a bus soon, so who cares? Obviously he does, but you get the point.

Somehow the computer has become a right rather than a privilege.

My mom got my old iBook. After her first 10 questions or so, she's been relatively quiet, until lately when it seems the modem may have died. That's a hardware issue I can't debug or fix since I'm 1000 miles away. So mom's pretty much been golden.

However, I see everyone from linux to PC techies running around fixing their family's computer issues. I'm not sure the doctors take care of family members in this way -- aside from the stupid party questions, how many family members want to take their clothes off in front of you and be touched, sometimes rather intimately, by their son/father/sister/cousin? So somehow, for the doctors, I think the buck stops at free advice.

There seems to be a law of the universe that for every geek there's at least one completely technically inept relative who has the lead touch and every computer or network they put their paws on breaks. Then there's the Internet un-savvy relative who blunders into adware and spyware, bad offers, identity theft, etc. And the mother -- usually it's the mother (mine's guilty too) who likes to pass along their spam, chain letters, petitions, jokes, etc. so they can share their inbox pain with you.

If you're the black geek of the family, you get the call, the email, the questions, and have to travel to the relative's house to do unpaid charity service in the name of family peace. After all, didn't you ask the person with the green thumb in the family to do your landscaping? You didn't? Didn't you ask the one most talented in the kitchen to come over and cook for your Thanksgiving meals? No? What about Aunt Martha? She's a neat freak and keeps a perfect house -- didn't you ask her to wash your kids' underwear and scrub your kitchen floor? You didn't do that either? Sheesh, what type of relative ARE you??

What is it that makes being a geek one of the few areas that people can trounce your personal, familial and professional boundaries? Doesn't Uncle James know that if you're fixing his computer, you're bound to find his porn folder?

I think it's one of the mysteries of the family moral and ethical system that I won't understand. I mean, my mom's a nurse, but I never asked her to take my blood pressure, administer an enema, draw blood, or give me chemo.

My family's pretty good on the scale of things, too. I watch others suffer under the burden of having done the family a "favor" and set up a computer network, which then they also must support when it's broken. It's true that people have much more respect when you set up a fee schedule. Suddenly they think twice about what they're breaking on the, computer or network, since they'll have to pay. Otherwise it's "what the heck, my nephew will fix it."

Maybe it's a good thing my family hasn't really realized that I do graphic and 3d design. All I need is for requests for unpaid or speculative work in the design area. Make my logo, do my website, I need a brochure...No one seems to think that time is limited, no one wants to take their work home with them, and we all need money.

[tags]family, rant, humor, life, interruptions, personal, prices, truth, spec work[/tags]

Thursday, September 14, 2006

The Name Memorization Game

I mentioned I'm becoming a networking junki--- um maven.

Well, the problem is that to win the game, you have to remember the name.

Oy, vey!

I have this somewhat eerie fascination with names. Names rarely if ever fit the character of the person in question. Most names are given to people for political reasons, rather than to fit the spirit or personality of the child, and many people have no clue what the personality of said child will be. So they pull a name off the family tree, or their favorite character in a book, or their favorite actor/singer/whoever.

I have a heck of a time memorizing given names for some reason. Aside from my memory being ephemeral on the best of days, I believe that the vacuum when trying to call up a name results from the name being discordant with the person's energy, personality, or spirit. I won't go into it on my work blog, but suffice to say that I'm psychically sensitive.

I've belonged to several organizations where people choose their own names, not to mention online "Handles" or AIM Screen-names, or whatever you want to call these aliases people hide behind (or come out from under!) on the web. What I find fascinating in that I rarely remember a person's given name when given to me at an introduction. But if the person says "I'm Thistle" I'll remember it. Not ONLY will I remember that they're Thistle, but when I DO get their "real-life name" -- I'll remember Thistle AKA John Smith. If I were introduced to John Smith, I'd forget his name in 2 seconds. For some reason the discordance is what helps me remember Thistle vs John Smith.

I wonder why this is. I've been through the MSR (Medieval Studies & Re-creation) and the SCA (Society for Creative Anachronism), and I could rattle off the fictitious names and often titles of a hundred individuals AND their legal given names. Send me to a business networking event and suddenly I'm at a loss. I also have the same skill from Compuserve/BBS and the current Internet chat and email social circles.

I think I'll have to come up with mental trickery for this one. I don't have as much trouble remembering a business name. Maybe I can trick my mind into thinking of someone as Smith Loan Corp aka John Smith. That would be piggybacking the odd skill I have for remembering aliases and fictional names. Then once I have the name down, I have to "Flip" them around in my head -- as if I'm introducing a medieval recreation pal to my mother -- or embarrass myself by introducing John as "Smith Loan Corp". I still find it better to "Smith Loan -- I mean John Smith" than to not introduce someone because I can't remember their name for the life of me.

It's also amazing that the moment I'm writing down the person's name doing job intake, typing it into a contract, and adding it to my accounting program to print out the first invoice, that seems to be enough writings for me to memorize the person's name. Maybe I just need to write the person's name 3 times :)

[tags]clients, networking, personal, rant,[/tags]

Saturday, September 9, 2006

Life is Like -- Programming

It's really messed up how programming can follow real life. I think maybe I've been programming too much lately. It doesn't matter. In the car, I was working on the Magical Chain Mail Vest (a shiny crochet object to be gifted to my son as part of my plot to enrich his imagination), and it's a very loose design (anyone who has seen the bows and arrows hat -- that's the stitch pattern I'm using for the vest -- I'll post the directions if it comes out OK.)

I've been watching how quickly this vest is taking shape. But it's a nonsense vest. It's for show, for play. It's not going to be WARM, any more than the "bows and arrows hat" is warm. It's not "real" it's a vague vacuous waste. To be real, it would need to be re-done entirely (and probably in a different yarn).

I tried "rapid application development" (RAD) tools a few times. Not RUBY on RAILS but equivalents in PHP. I've tried RAD for a real open-source project (my Contract Manager application, still in Alpha, but taking good shape right now -- note I ripped it apart and started again without the RAD this time and it's come much(!) further). And when it comes down to it, it's just not robust. It's not real. It takes shape very quickly, but it's never going to keep you warm in the winter. Very much like quickly creating a magical chain mail vest from Freecycle freebie yarn for my son. I'm sitting in the car crocheting and suddenly the yarn and the work is the equivalent of Cake or Ruby on Rails, and it all comes together -- it all makes sense.

I had a similar revelation today. It's Saturday. Time for my own projects. Time for Laundry. Time to kick back and relax (yeah, right!). I got up, started working on a new quicky open-source idea, got distracted by Guy Kawasaki's blog entry for online reviews, started looking into getting on Yelp to place reviews and see what it's like, got distracted by Technocrati, and now I'm posting to my blog and doing blog upkeep.

My partner, who had to rush out to meet a friend today, called and asked what I was up to. I said something like "I'm being me!" Huh? "I keep getting tangented -- it's like when you start a new clause with an open bracket in a program and you forget to close it. Eventually you're nested 10 IF statements (etc) deep and you forgot how you got there, and what you need to do to close out your brackets."

When actually programming, both my partner and I start out every new "clause" in a program by typing the open and close brackets -- even in HTML I do this -- then backspacing to type the contents. "if ()" hit backspace then type. It doesn't mean you'll remember everything you wanted to do in every level of the loop if it gets deep, but it does mean that you won't get nasty errors -- just bugs :P

I wish I could do that in real life. I have a program to finish -- I have gotten most of the laundry READY but not run any loads yet, I would like to go out, I need to check the mailbox, and I want to work on getting something going (maybe a newsletter to my clients) so people give my business good reviews on a variety of websites, so I can request referrals, and so I can return the favors for them. Oy vey! It's Saturday, so I think the laundry then the mail come first.

[tags]programming, humor, life, clients, networking[/tags]