Saturday, June 19, 2010

Data Center Visits

In the past few months, I got a chance to visit a few data centers.  From small server rooms to large co-location sites, these were great opportunities to get first hand experience at these operational data centers.  There are sites which are very organized and structured, and there are sites which are very ill-planned to the point they are basically a patch work of racks put randomly in a room.  Yet, they are both facing similar cooling challenge, where high heat-load server blades are simply too much for these data centers.  In a few years, server racks went from 1-5 kW, to 10kW or even 20+kW racks.  These data centers are simply not designed with these type of heat density growth in mind.

With our company venturing into the cooling optimization products and services, it is invaluable to get on the ground experience, see all sorts of different data centers, and the challenges face by these operators. In the past 2 weeks, I was able to visit the server rooms of 2 organization.  One of them is in the process of revamping the server room to accommodate the high heat-load server blades which are already in place, and more are coming in.  Another organization is also in the process of procuring new servers, and wanted to do a proof-of-concept solution first.  Proposes were put forth, and I have not receive any feedback yet.  It is time to follow up next week and perhaps, fingers cross, just may be, I will get my first sale.  Either way, it is a learning process, I hope to get some insightful feedback and see how we can better position ourselves to serve the impending need for cooling optimization.

Sunday, June 13, 2010

Testing Twitterlive - integration

This is to test the Twitterlive - integration I have setup.  I used to used Twitterfeed, but has blocked the API calls from TwitterFeed due to spam problems.
If all goes well, my Twitter, Facebook and other social media accounts should get a snippet of this post and a link back to this page.

Why am I doing this?  In today's information age, people are going to "google" you when you apply for a job, funding, business partnership, etc.  What do you want them to find?

Company Website Revamped

After the company website has been hacked a couple of months ago, I have quickly migrate the content from Joomla 1.1.x to Joomla 1.5.x.  It only took a few days, but I had to drop a few plugins and hack a very scripts.  The abundance of plugin in the open source ecosystem is both a bless and a curse.  It is a blessing because at the moment, the ecosystem allow small business to move into market quickly and cheaply. However, often times the plugin may not be of the best quality, such as poor code which allow hacker to remotely exploit the website.  Furthermore, for less popular software/plugins, the development may cease and may not have compatibility issues with other components you relied on.  This is the case for a lot of the Joomla 1.1.x plugins we have been using.

After successfully migrating to the new platform, I still not happy with the layout.   Luckily, Joomla 1.5.x came with some very professional template and I have based our new website on one of the templates which came with default package.
The new platform also came with some new features which used to be a plugin in the previous version and therefore allow me to retire a few of the plugins such as the LxMenu plugin for Joomla 1.1.x.

The most tedious process is cleaning up the platform for the new platform.  The old website use to have a plugin allowing the display of "tabs" to hold the content.  I decide not to use the "tabs" display format because I believe this is not good practice for the web.  For example, when user search for text, the browser may find it, but because it is not on the current tab at the top, the user may not be able to see it, which may confuse some user.
The website has been up and running with this new template for a good few weeks now, however I don't think we have complete the clean up of the content yet.  There are still pages with dead images, links or old content formating code.  
With our current state of business, I don't think we can afford to hire a full time web-developer/designer.  I could delegate some of the work to my colleagues, which I already have for the simpler task.  However, to take-over the maintenance of the website, I don't think we have an employee with that kind of skill set yet.
In order to justify hiring a web-developer, I need to find a way to turn our website into a revenue generator.  
At the moment, we are getting roughly 70-80 visits a day. Since we are a very niche market company, I don't think our goal is just eyeballs.

Perhaps e-commerce?  With niche market products and a small market, will e-commerce work?

Sunday, June 6, 2010

Broken links for product additional files in Virtuemart 1.1.4, Joomla 1.5.15 and SEF turned on

We still have to run our website in legacy mode because Virtuemart is still natively incompatible with Joomla 1.5.x.  The migration to Joomla 1.5.x is obviously incomplete as there is still minor bugs here and their.  One of the bugs which I was unable to find an answer to on the web is the shop.getfile bug.  In virtuemart, you can upload downloadable files against a product, and it will appear to be available for download.

After adding the additional files, there is a link which appears on the bottom of the product details page allowing the user the download the file you just added.

Unfortunately with our setup, the generated URL for the downloadable file was incorrect.  Debugging this issue was painful as I was unable to get XDebug to work properly.  The Apache child process on my local development environment just keep crashing when ever I have the debugger attached, but this is a long story possibly for another separate entry.  It turns out the components/com_virtuemart/router.php was missing the shop.getfile entry and I have to manually added it back it.  Inside the virtuemartBuildRoute function add the shop.getfile case into the switch statement.  It will look something like this:

case 'shop.getfile';
  $segments[] = 'products_getfile';
  $segments[] = $query['product_id'];
  $segments[] = $query['file_id'];

Then in the virtuemartParseRoute function, add the corresponding code to handing the routing statement created above.  It will look something like this:

case 'products_getfile':
  $vars['page'] = "shop.getfile";
    $vars['product_id'] = $segments[1];
    $vars['file_id'] = $segments[2];

Adding the above code back in and the additional file links for products works again!

I would like to submit a patch to Virtuemart.  Unfortunately, it appears the development issue tracker at is not open to public submissions. Hopefully this problem is eventually spotted and fixed by the Virtuemart development team.