More Praise for b2evolution ...

I had an old blog, with a few posts I liked, but the blog software had been discontinued. b2evolution allows you to run an entirely separate and independent blog - with a single installation of software, with very little effort.

In this case, the other blog is for fun - so I didn’t want it linked to this one, and I wanted to keep the URL of the existing blog. I copied the content from the posts I liked, and it’s all set.


Choosing a web "technology" or product

There is an amazing array of awesome open source software available for a wide variety of applications. Choosing the right product is extremely important.

Be sure you have a clear definition of what you are trying to do first. If you are trying to create a simple web site that is easy to use and maintain - you can use a blog or content management system. You could even use a template based system offered by many hosting companies. If you want to sell items on line, and you don’t want to use eBay - you may be able to use PayPal, or you may need a cart. The only way to decide what makes sense is to really understand what you want to do, and then, what the different methods are. The same is true for a social network, a resource site, and or a huge multi-function system.

Next, you should understand your time frame and resources. In a nutshell, if you don’t have much time, you will need to choose a solution (hosted or not) that allows you to bring it to life quickly. If you have a team with experience with a specific product, that may be a driving factor. Be sure their experience is with a current, active product, not an unsupported technology. If you have LAMP servers, and you want to use a java based product, be sure the servers are ready to support it.

Another key consideration is the interaction with other systems. For example an ecommerce site may need to interface with an accounting system.

Finally, one of the best ways to evaluate products is to try them out. Even if you have to buy a copy (assuming the cost is not prohibitive), to evaluate it fully, the investment will probably be valuable - either by allowing you to purchase it comfortably, or abandon it after careful review.

My evaluation criteria for web-based products:

  • Will run on my server
  • Online/live demo at the source site to experiment with
  • Documentation is accessible and adequate, and in a language I can read
  • Does not have current serious security issues, or offers a patchSecunia
  • Market share, popularity
  • Interfaces to other products
  • Easy to install
  • Easy to use
  • Support forum or organization
  • Community and contributions, plugins
  • Architecture of software
  • Extensibility
  • Comments posted in blogs and forums about the product, although these must be reviewed carefully.
  • Cool name and neat site :)

Know what you don't know

“An education isn’t how much you have committed to memory, or even how much you know. It’s being able to differentiate between what you know and what you don’t.”
Anatole France

Great SSL Explanation

This is a great explanation of how to do SSL certificates.

Fast AJAX / Dual Page Population

To speed up an AJAX page load, particularly with a toolkit such as dojo, you can do the following:

  • Set the cache headers on the server for ‘far-future’ dates on toolkit files, and any other files that don’t change often. Use the directory name and a FilesMatch directive
  • Break the HTML/CSS/javascript into separate files, and set the caching properly
  • Use compression (mod_deflate). If you have a large initial page load, followed by many small AJAX requests, the compression overhead may not be worth it.
  • Use dynamic loading to defer the loading of content until it is needed where possible

Use the YSlow plugin for Mozilla Firefox to check for other performance improvements.

Dual Page Population
Often there is some server-side logic that runs the same for the initial page load and later AJAX requests. One approach is to send a flag that indicates whether it is an AJAX request, and to use json_encode followed by an exit() to return the results for AJAX, or Smarty variables to return a full HTML page.