845-820-0262
Middletown, NY
info@eclectictech.net

March 5, 2007

Easy-to-Edit website Demo Movie available!

Filed under: Design, Technology, Programming, MetaSite, Services, Clients, Information — Crisses @ 9:29 am

Liberate Your Website (part 1)

I’ve come to realize that people aren’t “getting it” when I tell them that my websites are “easy to edit” so I’ve created a movie (6 minutes 10 seconds) to demo it.

It isn’t one of those build-your-website applications you always see on the web — those force you to do all the dirty work and BOY can you break the website, create some hideous Frankenstein-monster website contraption that frightens away clients.

No, that’s not at all what this is.

You can’t really break the website when you use this application. Maybe you can make some poor content design choices, such as making all your content text bold, or italic, so that you have no means left with which to emphasize a word. Maybe you can type in all caps, make everything on the page a headline, etc. But you aren’t playing with the design, only the content, of your website, and changing styles and colors is not an accident.

So, take a look at the demo and see how this is a simple CONTENT management system, and don’t frighten your clients away anymore! In the demo movie — which is only 6 minutes! — I play with several real live websites, so you can see how easy it is to edit your own content. In 6 minutes I could hardly explain to a web designer what I want them to change on a website; I’d rather do it through the Easy-to-Edit system. That’s why all my websites are using this system: in spite of being a web designer, I want to have a quick and easy way to add and edit website content on my sites.

January 25, 2007

Don’t say I didn’t warn you

Filed under: Design, Programming, Services, Information, Sales — Crisses @ 8:02 am

Attention to all customers:

June of last year I raised my hourly fees. This year, I’m going to change my package prices. I’ve priced some exceptionally attractive packages, but I’m losing time and money on the deals.

I’m going to phase in new prices incrementally over the next several months.

Starting February 1st, I’m going to raise all the package prices on the website and any new work proposals that go out will be at the new prices — and that raise in prices will be about 10% per month until approximately November. Proposals always go out with an acceptance clause (”prices are good if you respond within X days”), and starting February 1st, work proposal acceptance clauses will be strictly adhered to. If you call the next month, after your offer has expired, the price will go up.

I will extend a courtesy for proposals that expired in January: Any proposal that expires in January can be locked in at the old rate if you sign a project agreement and submit a deposit before February 15th. Proposals that expired before January need to be re-estimated. Deadlines will also need to be changed, and it will be reflected in your work proposal.

Any customers whose proposals expired before January should request a new proposal for their work. It will give my new proposal system a good test and keep me busy.

Money Saving Tips:

  1. If your proposal or project agreement expired before January, request a new proposal or agreement and accept by February 15th or the expiration date, whichever is later.
  2. If your proposal or project agreement expires in January, sign a project agreement by February 15th.
  3. If you miss the boat, you’ll pay more.

November 26, 2006

Open Source Programmer’s Insurance

Filed under: Programming, Rights, Eclectic Tech, Services, Information — Crisses @ 9:48 am

Slashdot rejected my question submission, so I’ll write about it in my blog and see if anyone is interested in answering it.

I have insurance, but I want exactly the RIGHT insurance. My insurance agent says that what I have may very well cover what I do, but is hunting high and low for insurance that will explicitly rather than implicitly cover both the design AND the programming portions of my business without making me broke. All she’s finding are either policies with specific exclusions for web programming, or policies that are exceptionally expensive.

The problem is that every programmer is being lumped together. That means that programmers working on the stock exchange big bucks applications with billions of dollars in transactions a day at risk are being lumped in with smalltime web programming outfits like mine. I’m a programmer on the PmWiki project, and I create custom plug-ins for PmWiki for clients before contributing what I can back to the project, or accept bounties for plug-ins made directly available to the general public. I’ve also made alterations to other plug-ins for other open-source projects, and I’m creating an open source project or three of my own.

Now, I am not belittling the risks to my customers. I know that their business is everything to them, and that’s why I’m looking for insurance. But I don’t play with the big boys and my customers are not forking over the big bucks to cover the overhead I would have to pass along to my customers to cover the big insurance policies.

If I’m installing ZenCart, and ZenCart has a bug, am I covered? I never touched the back-end of the program, but of course every application — open source or otherwise — has inherent bugs and risks. I trust open source because the bugs are squished in a timely manner and I don’t have to pay for upgrades. Would all those policies with programming exclusions cover this?

When a policy excludes programming, I see there being a really fuzzy line between “web design” and “web programming”. Certainly there’s a point at which something is very clearly web programming, but is it programming if I create a script that processes a webform to email the results to my client? Is it programming if I’m creating JavaScript DHTML DOM alterations? What about when I’m working on a design for a Smarty template? There’s pseudocode and even PHP code in there, but it’s all about the design.

In any case, what I want to know from my fellow collaborators in the world is:

What, if anything, do you do about insurance for your web application or programming company?

Do you have any suggestions for underwriters for open source programmers?

If you aren’t insured, have you even considered being insured?

October 16, 2006

Why I Won’t Build Your “MySpace Killer”

Filed under: Design, Technology, Programming, Services, Information, Humor — Crisses @ 1:06 pm

Often the topic of starting a “great” web business comes up, and in my age and wisdom (being both old to be a freelance web programmer, and one of a minority of women in the field) — there’s two ways to go: thinking “in” the box = come up with new brilliant technology, patent it and hire people to program it better and faster than anyone else can so you can quickly market it. If it climbs to the top before it is cloned you become the next target for people trying to out-do your website. This track is getting VERY old, VERY fast. Mainly you and your absolute best friend need to be programmers to do this (think Microsoft, Google…) because you can’t trust anyone with your terrific idea. Also it has to be so ground-breaking that only the best (read: smartest, wise, long-range thinking) of venture capitalists will see the end of the rainbow where the pot of gold sits. If it is easy to get the funding for your idea, someone probably is making it already.

Thinking “out” of the box = coming up with a way to use normal everyday technology to do something that fills — rather than creates — a real need or niche. It’s cheaper, faster, and if it really IS filling a need, it’s going to spread by word-of-mouth, and it won’t be “just a fad”. This technique aims lower and comes in under the radar — no billion dollar baby here — but it’s safer, less stressful, and you don’t have to be a programmer, generally speaking. The programmer is unlikely to run off with your baby if it doesn’t look like a “google killer”.

The problem is that great ideas are easy — the means to really make them work is the harder part (invention = 1% inspiration, 99% perspiration). I’m frustrated with people who want to “share” the rewards of their great web program idea (equity sharing) of up to 50%, but won’t be doing any of the actual work to make it hang together and be practical. If someone comes to me with a truly great idea (and I have NDA’s if they don’t), I can find them a great programming team, but the team will probably want cash on delivery, not equity. More “google killers” die every day than make it. They’re not original ideas, and if a site dies before it makes money, there’s no equity and it’s a huge waste of the programmer’s time.

Imagine that someone turned to you and said, “I have a great idea for a newspaper! I’ll give you the ideas, you develop the newspaper and run it, staff it, write for it, etc. I’ll give you 50%.” That approach frustrates me. People don’t get it. I can translate it to dozens of other fields — “I have a great plan for a house, you just have to build it. Then you can live on the top floor, and I’ll live downstairs. Ok?”

Somewhere in there people are cheapening the act of programming. After all, it’s just bits and bytes, right???

The Internet mimics life in a “survival of the fittest” way. I don’t pretend to know what’s “cool” or “hot” anymore — I work with “useful” :) I won’t get rich but that wasn’t in my personal game plan. I have my own great or good ideas, some might make me money, some won’t but will look really good on my resume.

Then there’s the flip side of this: If you’re not the head of the programming team and you’ve paid someone to build the google killer — what if it works? Now you have to program new features, fix bugs, etc. You either need to re-hire the same team, or get a programming staff. You go on Craigslist and choose the person who claims somehow to be able to fulfill your great Internet dream, but if you have this beautiful web baby together, are you really ready for that long-term commitment with a total dweeb with no business sense?

I can’t wait to be so busy with people I’ve looked in the eye and shaken the hands of that I can’t afford to even GLANCE at another Craigslist ad. I love my clients dearly, but you don’t know how rare it was that the people I dealt with BECAME clients at all. I certainly wouldn’t want to become business partners with some guy with the “next killer app” idea and had to actually look on Craigslist for a programmer. So wait — your only experience is the front end of websites as a user, and you think you can somehow manage a killer web application programming team? That’s an incredibly poor business move and you’ll get laughed out of the bank. And you want the programmer to work for nothing but equity? That’s spec work.

That brings me to another thing: Have you ever had one of those managers who knows absolutely nothing about what you do? It happens in IT all the time, but much less so in other professions. BUT if you’ve ever heard a nurse bitch that someone “stepped in” as the head of the nursing staff from a business-only background, you might get the idea. In most large corps — and this is a place where Microsoft does NOT get bad rankings — the heads of the corporation have NO IDEA how to produce their main products…much less have a clue what their IT department does sitting at their computers all day.

It’s never a good idea to manage something you don’t understand. Ever.

On that note, are you interested in a basic web programming class? :)

October 9, 2006

Classes in PHP (object oriented programming)

Filed under: Programming, Information — Crisses @ 11:38 am

From a post to a user/developer list I’m on. Since I’ve never seen a great explanation of ANY object oriented programming, I figured I’d give a brief go at it.

Classes are a code structure from the object-oriented-programming side of PHP. A class is beyond a function. The class definition creates an ideal “object” (rather than an actual object, that comes later), and assigns it properties (variables) and methods (functions). Think of “object” in this case as a function on steroids.

Here’s the basic class syntax for how I would deal with shoelaces (I’m using comments for a real life physical action that I don’t feel like emulating in real code) — but note that an “object” isn’t usually a physical object — it could be an email, data, graphics, form buttons, or something even more abstract.

class Shoelaces {
	var $tied = false;
     // maybe we should double-knot them?
	var $double = false;

	function tie_shoelaces () {
		if ($this->tied) { return; }
		// instruction to grab shoelaces here
		$this->pull_tight();
		$this->overhand_knot();
		$this->pull_tight();
		$this->make_loop("right");
		$this->make_loop("left");
		$this->overhand_knot();
		$this->pull_tight();
		if($this->double) {
			$this->overhand_knot();
			$this->pull_tight();
		}
	}

	function pull_tight() {
		// yank whatever is in your hands
		// in opposite directions
	}
	function overhand_knot() {
		// loop item in right hand around item
		// in left hand one complete rotation
		// hold item in right hand again
	}
	function make_loop($side) {
		// creates a loop from the left
		// or right side of the lace
	}
}

Here’s how you use the class within the program flow (this code would be in the master body of your program — or in another function
or class):

// create an object instance — this is a specific local
// copy of the class for this specific instance/call.

$bootlaces = new Shoelaces;
// set the properties
$bootlaces->tied = false;
$bootlaces->double = true;
// tie the shoelaces (call the method i.e. execute the function)
$bootlaces->tie_shoelaces();

Now you should have a doubleknotted shoelace on your boots. This code can easily be reused for $sneakers also. Or even hacked for tying laces on other objects.

Now, the parts people have the hardest time wrapping their brain around:

  • Calling it “object” “method” “instance” etc. — It’s a prepackaged set of code (class), functions (methods) and one particular time you call the code (instance — such as $bootlaces or $sneakers). Call them what you want to but remember the standard synonyms so you aren’t confused when you read about them.
  • The term “$this” inside the class definition — $this is “$this object” or a place holder for the namespace INSIDE the object. I guess that once you call an instance, PHP translates $this to $bootlaces or $sneakers — it’s a generic “variable” that points back to the parent object and allows you to keep your scope within the object clear.
  • Translating this idea to actual code since I wimped out for understanding by using a physical not computing activity, so see a practical real-world paradigm for a class below.

There is no place to run code in the object without defining a function/method. It’s confusing to call it an object method when obviously you’re even using the syntax “function” :P

I didn’t use it above, but there’s also something called a “constructor method” and in PHP5 there’s a destructor method. All this means is “automatically run this function when I create the class instance” or a destructor is something auto-run when you destroy the object instance (not sure how, I don’t do PHP5 yet — maybe unset()?)

Syntax for a constructor in PHP4 is to name the constructor function the same name as the class name — inside the class definition.

	function Shoelaces() {}

I know this is probably confusing, so feel free to ask questions. Note however that this completely protects the code and variables of the class from colliding with the names of other items in the program. The only name of concern is the class itself. Other people can use your class pretty easily — it makes a very portable chunk of code. There’s more to it, but this is enough to actually get you using this idea if you decide it would make code more efficient.

A real example would be creating an “Email” class where you can set up emails to be sent.

class Email {
  var $to = "";
  var $from = "myname@example.com";
  var $subject = "";
  var $body = "";

  function Set_Params ($to, $subject, $body, $from=$this->from) {
    //assign to class values
    $this->to = $to;
    //etc. ...
  }

// a couple internal functions not used outside the
  function validate_email () {
    //validation in here
  }
  function make_headers () {
    //create headers including From - output to class variable
    $this->headers = $headers;
  }

  function SendEmail() {
    // validate TO & FROM email addresses
    $this->validate_email($this->to);
    $this->validate_email($this->from);
    // create headers
    $this->make_headers();
    // send the email (should add custom From header too)
    mail($this->to, $this->subject, $this->body, $this->headers);
  }
}
$email4Larry = new Email;
// set the properties
$email4Larry->Set_Params(
    "larry@example.com", "Hi, Larry", $body);
$email4Larry->SendEmail();

More some other time if anyone’s interested.

September 23, 2006

Shopping Cart Showdown

Filed under: Technology, Programming, MetaSite, Information — Crisses @ 12:29 am

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.

September 18, 2006

oscommerce is a beast

Filed under: Technology, Programming, Services, Information — Crisses @ 6:30 am

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.

September 15, 2006

oscommerce drop-down selection box hack

Filed under: Technology, Programming, Information — Crisses @ 3:52 pm

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!

September 9, 2006

Life is Like — Programming

Filed under: Programming, Clients, Information, Humor — Crisses @ 1:07 pm

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.

June 11, 2006

CMS Disappointment

Filed under: Technology, Programming, MetaSite, Services, Information — Crisses @ 10:20 am

I have been trying to work out the features and the back-end program to run Holistic - Hudson Valley.

As I would do for any client, I wrote up a sheet of the major features I required. I checked 3 CMS packages that are free/open source, and that I have confidence that they have a large number of add-ons and a strong community: Drupal, Joomla! and Xoops.

I’ve used Xoops, and I liked it A LOT.

I’ve used Drupal, but when looking for plug-ins that would give the package the features I was looking for it fell short.

I researched packages for Joomla, and except for true single-sign-on integration with Moodle, it came up with the most promising feature availability. I saw that a couple of the components would cost money. The amount wasn’t enough to hamper me, so I dove in. I started working on it, decided to opt for my first purchase of a module, which was more than the original price I thought I would be spending on the feature ($99). I bought it. It’s one of those no-money-back things. Then I saw that Joomla! did not include the fine group permissions that I had come to expect from using Xoops.

My first barricade was that the new $99 module only works with a certain release of Joomla! — that was OK because I’d downloaded two versions of Joomla. I installed the correct one, got it working, fed it the database info, and everything was happy. Or so I thought. I could now install the somewhat expensive module (the other modules were cheaper).

Joomla! comes with a pre-created set of a few user group types. And no way to customize them, unless you want to buy someone’s hack. I have a list of about 8 module features I need installed. The group modification hack gives no easy indication of which other modules it plays nice with — you need to pour through the forums. Maybe they’ve created patches for it to work with the modules you want — maybe not. No guarantees. Oh, yeah, and if you want the best version of their package, there’s a subscription fee. Not a one-time license fee — a monthly or annual subscription fee. This stopped me dead in my tracks.

I was looking for something cheap and easy. So far I’d spent about $100 and had at least another $50 USD and £22.50 (probably about $50USD) to spend ahead of me. If any more unexpected barriers came up and I had to shell out any more money for modules that did not guarantee playing nice with other modules — this was going to end with me going postal.

I’m starting to think that Joomla! is a rip-off — about 1/3 of the functionality I was looking for as a base to begin was going to cost me money. I think some of the people charging money for components were on the package’s core development team. If the component is terribly useful, and should be ported to the main body of the program — such as flexibility with user groups — it would probably never happen because the guy who is making money off the module is going to scream bloody murder. That is not the type of open source generosity I’m looking for. I don’t mind asking for donations, and I don’t mind giving donations if I make money off my project — AT ALL. But Joomla! doesn’t say “Warning, most of what you want to extend this package with will cost you.”

I should have considered my choices longer and harder, but thankfully I’ve only spent $99 so far. Once I spent the other $100 or so, I may have found out that something else essential was missing, and how much would that have cost me?

I’m off to do more research on the Xoops packages. Xoops has a better core philosophy as far as I can tell. The basic package is deliberately made to be extensible without having to hack the core code. Even if I do end up having to buy an add-on or two, they won’t come with huge warnings that they are hacks of the core package and may not play nice with other modules. I’ve used Xoops and was very happy with it. If there’s a module I can’t find to fill a feature I need, I can try creating it myself.

Xoops had come in a close 2nd place in my assessments, but I was lured in by the promise of everything “just working” with Joomla!. Joomla! is more polished to the eye, but apparently the “just working” isn’t true. I’m going to need to triple check that none of the modules I want costs money, but I’m pretty sure they don’t. In any case, I have some experience in hacking Xoops modules…and I know the user groups are already fine-grained and fully customizable.

*Grumps*

Web creation, hosting & design
by Eclectic Tech, LLC