Using RCLI in Gentoo AMD64

We are operating a VMWare ESXi 3.5 server and is looking for way to perform operation on the VM via command line.

VMWare provides an API (which is a set of perl script) called RCLI (Remote Command Line Interface) and it provides the script in two flavor - Windows and Linux.

We want to issue the command on our Gentoo box which is running in 64 bit but the RCLI linux deliverable failed to deploy in 64 bit. Googling around noticed a patch to get around this.

Apply the patch by the following command

patch vmware-install.pl vmware-viperl-distrib.diff
After that, just install the script by,
./vmware-install.pl


It goes OK except a warning explaining the failure to bind with the perl module Crypt::SSLeay.

I guess it doesn't exist on my box and thus I emerge this right after. Upon doing so, when I try to issue the command "vmware-cmd", I was greeted with the following,

builder vmware-rcli-distrib # vmware-cmd
Can't load '/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux/auto/XML/LibXML/Common/Common.so' for module XML::LibXML::Common: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux/auto/XML/LibXML/Common/Common.so: wrong ELF class: ELFCLASS32 at /usr/lib64/perl5/5.8.8/x86_64-linux/DynaLoader.pm line 230.
at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux/XML/LibXML.pm line 12





No help to google around but I suspect it's again the missing of a proper perl module, so I emerge it again and try. Turns out I am right but I am seeing yet another error message on a different module. I repeat until I can execute "vmware-cmd" without an error.

Below is the list of module I have emerged,

  • emerge Crypt-SSLeay

  • emerge libxml-perl

  • emerge XML-LibXML-Common

  • emerge XML-LibXML

  • emerge Class-MethodMaker


After that, all is running well.

Low end dedicated server vs a powerful VPS

Lately, I am having an "itch" in owning a dedicated server, which enables me to install VMWare Server and run multiple of virtual OS. All to satisfy my control freak deep within.

But most of the subscription plan are expensive. You can find dirt cheap bargain but the "server" they are offering is even slower than the PC I have at work.

I have finally found a reasonably priced plan (around US$79) which offers a Dual Core CPU with 2G RAM and 320G of HDD space, not bad in terms of specification. Right before I click the "order" button, I came across this discussion thread, VPS vs. Dedicated - New Benchmark Results. Reading it through and noticed the availability of a benchmarking scripts.

I downloaded the script and have it run on my 2 VPS account, to my surprise, one of them is having a benchmark result 6 times faster than the other! And I am amazed to notice the result of some VPS plan is very close to the dedicated server which I am interested to order.

After a bit of struggling (on money and necessity of course), I opt for a VPS replacement on my slow account instead.

Below are the benchmark result for your reference.

VPS#1 : 241.8
VPS#2 : 164.7
VPS#3 : 29-30

My PC (Core2Duo E6600, 2G RAM, 250G HDD) has a benchmark result of 423.3

Interested to try it on your machine? Download UnixBench v4.1.0 - WHT Variant now!

Software I have purchased in 2007

Some people like to buy clothes and I definitely have a desire to buy good software. Be it commercial software, or shareware, I would get myself a license as long as I find it useful.


  1. Springy
  2. BetterZip
  3. PulpMotion
  4. HTTP Scoop
  5. Connected Flow - Aperture Plugin
  6. Connected Flow - iPhoto Plugin
  7. Sticky Window
  8. PDF Studio
  9. Coda
  10. Parallels
  11. Oxygen XML Editor (include the license for SVNClient)
  12. VMWare Fusion
  13. Screen Recycler
  14. iLife 2008
  15. iWorks 2008
  16. Keynote Pro - Eclipse Pro
  17. Graphic Converter 6.0 upgrade
  18. Fission
  19. Write Room
  20. VMWare Workstation 6.0 for Linux
  21. 1Password
  22. IntelliJ 7.0
  23. Mac OS X 10.5
  24. MarsEdit 2.0 upgrade
  25. TheMacPak


The heavily used application


With OS excluded, I still have a couple of candidate.
VMWare Fusion, iWorks, Connected Flow Aperture Plugin, 1Password. This one is tough so there will be two winners - VMWare Fusion and 1Password. You can find both application running on my mbp everyday, my development work rely very much on VMWare and 1Password could help me to manage the password for the different kind of account I am having.

The worst investment


There's several of them, TheMacPak, Screen Recycler, Parallels and Oxygen XML Editor. But if I have to pick one, it will go to Parallels. I bought it even before it ships, it works OK but definitely resources hog. Besides, I am so used to VMWare that I jumped right into it when they have the mac version ready. Sometimes, I should just wait and decide.

The bang of the bucks


Springy. It's very useful, especially with the context menu integration. The good thing is, it even works with JAR files, that helps me to navigate through the java library which I need to tackle in development work.

The interesting candidate


Apart from the application above, I would also like to mention a service which I used a lot over the year. I purchase the stock photo and vector graphics which I used in presentation from iStockphoto. They used to be quite cheap ($10 for 10 credit) but have increased the price recently. Still, they offer a wide range of quality photos that could liven up the boring presentation.

SVN over WebDAV (and proxy server)

I was setting up a project in LaunchPad and is trying to import the source from our SVN server. Since they can only do it via HTTP so I have to enable WebDAV support for my SVN server. But to make things complicate, the request have to get through a proxy server (err, 2 to be precise).

OK, so, what has to be done?

Firstly, you need to setup the mod_dav_svn on your SVN server.


Install apache server, I am using Gentoo Linux, so all I have to do is

emerge apache



And then, I need to enable apache in loading mod_dav_svn, so I modified /etc/conf.d/apache2

APACHE2_OPTS="-D DEFAULT_VHOST -D SSL -D SSL_DEFAULT_VHOST -D PHP5 -D DAV -D DAV_FS -D SVN"



After that, we have to define the context path, as well as the repository location. These information is stored in the config files for mod_dav_svn, mine is located under "modules.d "and named as "47_mod_dav_svn.conf". The file structure is something like the following, you might want to refer to the Red Book for details of each syntax.


<IfDefine SVN>
<IfModule !mod_dav_svn.c>
LoadModule dav_svn_module modules/mod_dav_svn.so
</IfModule>
<Location /src/xyz>
DAV svn
SVNPath /usr/local/repository/xyz
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/svn/svnconf/svnusers
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
SVNAutoVersioning On
SVNIndexXSLT /svnindex.xsl
</Location>
</IfDefine>



Restart apache and all should be done. Check by issuing the following command,

svn list http://localhost/src/xyz



Requesting the repository via a proxy server



My SVN server is sitting behind the firewall and all request has to be done from the web server in front of it. The web server is running apache and I can do that by using mod_proxy.

The source is served by one of the virtual host, and we need to modify the httpd.conf in configuring the mod_proxy.


<VirtualHost *>
ServerName www.mycode.com
....
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyPass /src/xyz http://192.168.0.1/src/xyz
ProxyPassReverse /src/xyz http://192.168.0.1/src/xyz
CacheRoot "/path/to/write/proxy/file"
</IfModule>
</VirtualHost>



Note that I am only showing the excerpt. Restart apache and test by issuing the command

svn co http://www.mycode.com/src/xyz



If you can checkout properly, then, congratulation. You are all set :)

There's always some tricks



But I find that I am the unlucky one, and I have spot a couple of thing

1. In setting up the mod_dav_svn, the "Location" specified has to be the same as the "context path" you define in mod_proxy. For example,


ProxyPass /src/abc http://192.168.0.1/src/abc



It won't work if the request context path differs from the destination URL.

2. If your SVN server is installed behind a SQUID Proxy Server, you will need to make sure it supports all the DAV command that is required by SVN. Take a look at this .

Good luck!

Installing NXServer to Ubuntu Feisty Fawn

Just installed the Ubuntu Feisty Server to a new machine and remote access is one of the first few things that I need. Below are the steps I have taken. I am by no means the original author that figure out the installation process but I am providing a summary and solution on the different issues that you may encounter.


  1. Download the NXClient, NXNode and NXServer from the website of Nomachine, you can use the DEB version provided. The sequence DOES matter, so, please follow accordingly.

    • Install nxclient
    • Install nxnode
    • Install nxserver

  2. Load up your /etc/ssh/sshd_config file into an editor:


    sudo nano /etc/ssh/sshd_config



    Add the following line & save the file


    AuthorizedKeysFile /usr/NX/home/nx/.ssh/authorized_keys2



    Restart sshd by typing:


    sudo /etc/init.d/ssh restart



  3. Done! Now verify NXServer is running properly by typing:


    sudo /usr/NX/bin/nxserver --status



    This should return:


    NX> 900 Connecting to server ..
    NX> 110 NX Server is running.
    NX> 999 Bye.



  4. Now comes to the part that ppl start having problem, configure the NXClient on your client machine, start the connection and after the point of "Authentication", the whole client apps disappear. The fix is sort of funny, it is done by adding a hostname "unix" to the host file, example as follows,


    127.0.0.1 localhost unix



    The reason for the change is NXServer tries to look for the display from unix:xxxx and the system cannot resolve the host name "unix" which results in failed connection.

  5. It works OK already in the local network but I find myself failed to get back to the office from home. I get an error message like


    "Could not yet establish the connection to the remote proxy"



    By digging around the web, I noticed an article from Nomachine.

    The error is due to a firewall was set in between my home and office machine. By turning on the SSL flag on my OS X client and the connection can be established right away.


By following these, you should have the NXServer installed properly. But you may want to join the discussion if you still encounter problems upon following the procedures. Below are the 2 that I locate all the information above, kudos to the contributer over there.

Step by step guide and also discussion on the installation process

This thread discuss the issue of the client that cannot connect to the server

A Web Service Client in PEAR SOAP

In the preparation of my next episode on Hermes 2, I have been struggling on how to develop a web service client in technology other than Java. My primary candidate is definitely ruby, but I have to give up on it after playing it for a while. I just don't know how to construct a MIME message in Soap4r.

So, I headed to my second lover, PHP. From there, I have a couple of choices, NuSOAP, Pear SOAP and PHP Extension. I have decided to use Pear SOAP cause NuSOAP seems to be stopped from developing and PHP Extension is not something I am familiar with. With that said, let's move forward and see how it works.

Installation, embrace beta packages


I am not drilling into the details on how to compile PHP with Pear support, google on this topic and you should get loads of responses. There are 2 things that I feel worth mentioning.


  1. Change the preferred_state to beta so that you can install the latest version of PEAR::SOAP.


  2. pear config-set preferred_state beta



  3. After that, install all the dependency for SOAP, including Mail_MIME and Mail_DIME, if NOT, you will not be able to send multipart message.

    pear install -alldeps SOAP





Hurray! Now show me some code ...


OK ok ... First of all, create a new soap client and define the endpoint that it will be connecting to.


$url='http://images.vsmile.com:8080/corvus/httpd/ebms/sender';
$soapclient = new SOAP_Client($url);



After that, prepare the parameter which you will be sending over in the SOAP message, this parameter should be those required by the web service server for program execution. You should encapsulate all the value in the class SOAP::Value and put them into an array. Notice on the last value that I am packaging, I am using the SOAP_Attachment object which is a child of the SOAP_VALUE.


$params =
array (
new SOAP_VALUE('cpaId', 'nonEmptyToken', 'cecid'),
......
new SOAP_Attachment('SWA','text/xml','./dbhelper.xml')
)
;



Along with the program parameter, you will also need to define on how the SOAP message should be delivered. This include the document type of the message, how the file should be sent over as, etc. All these settings will again be encapsulated in an array.

From the code below, notice that I am defining the attachment will be sent over as a MIME message, i.e. a multipart message.


$options=array(
'namespace' => "http://service.ebms.edi.cecid.hku.hk/",
'soapaction' => '',
'style' => 'document',
'use' => 'literal',
'trace' => 1,
'timeout' => 30000,
'Attachments'=>'Mime'
);



With these, we can initiate the call!


$resp = $soapclient->call('query', $params, $options);



Damn it! It doesn't work!


Yes, it doesn't work to me either, until I read this.

I modified my SOAP_Base::_makeMimeMessage as instructed. Notice about the double quote surrounding "text/xml"? Axis reject the SOAP request if it is un-quoted.


$params = array('content_type' => 'multipart/related;
type=text/xml');


to


$params = array('content_type' => 'multipart/related;
type="text/xml"');


Ta-da, it works ok now!

The quest for a VPS provider

In the preparation of an internet performance test of our latest product, I figure that all the server I own has one thing or two missing. I need to look for additional server environment in order to test throughly.

I could bring one up at home by using Parallels but I still need another one that is hosting elsewhere.

My first thought is to leverage my account at JaguarPC, but my shared web hosting plan didn't provide Java support, so this isn't an option to me. But I noticed that they have a service which brings the flexibility of a dedicated server and the price similarity to shared web hosting, i.e. the VPS (Virtual Private Server). They were having a promotion at that time and I can do what I want by migrating my shared hosting plan to a VPS plan.

This begins my numerous email with the support in learning more abou this service. I have to give the support team an applause since I could always get a reply in a very short time. Besides, they have the patience in explaining the plan to me and offer an account migration. BUT, my migration cannot turn to be fruitful as the promotion period has just been over by the time when I am ready to place the order.

I have to look elsewhere (cause it's not as cheap without the discount) but turns out it's a good opportunity for me to learn more about this service. I want to share the experience in my quest and hope someone might find this useful.

... When I thought Virtuozzo is the only option for VPS ...



I first learnt about VPS from my existing web hosting company and they are using Virtuozzo as the engine for all VPS plan. Cause I haven't spent the time to look around and I thought Virtuozzo is everything for VPS.

But upon looking further, I know that Xen is becoming popular in the VPS world, too. The 2 technologies differs quite differently, Virtuozzo is emulating in OS level while Xen is emulating in the hardware level. Also, for the server having Virtuozzo in place, all the VM (Virtual Machine) has to be run in the same OS as the host. While for Xen, VM running in different OS are running in parallel. One thing to note though, the OS running in each VM has to be modified in a way to support the host. But a good news is on the horizon, the upcoming CPU will have the virtualization taken care so that patch is no longer required.

Also, Virtuozzo is a commercial product, support is provided directly from the company and a nice control panel is also included. For Xen, it's an opensource project, support level might not be as complete as Virtuozzo but the developing process is rolling out very quickly. Also, since Virtuozzo is developed with the ISP in mind, so there are a lot of little tools for administration process.

Another consideration is performance, there are fans for each of this technique. Virtuozzo is claimed to be light in footstep, also, they have a "memory burst" which allows anyone of the VM to leverage the memory of the other VM if they are idel at that moment. For Xen, since it is emulating down to the hardware level so the overhead is comparatively smaller than other solution.

I can select the OS as desired?
Yeah, but you have to bite your bullet, too.


JaguarPC offers 4 different kind of OS to be run in the VM but I find that there could be even more offering in the other provider. Cause I am more familar with Gentoo so it would be a bonus if this is available as an option.

A big difference from a shared hosting is, you need to take care of all the software installation and patching. Software installation is OK but the difficult (or tedious?) part is the security administration. Some service provider can help to install the security patch if you select a particular OS (Centos Linux most of the time).

So, what about administration, you might ask? If you have ever used a shared hosting, you should have seen a web based administration page. There are several big names which provides an interface on top of the OS which aims to ease the administration task, e.g. setting up of DNS, email account, etc. Cpanel, Direct Admin, Plesk and Interworx are some of the "big name" and Cpanel is one of the hottest name that you will come across. Again, there are fans for each of these products while some of the comment I hear the most is, Cpanel require some more system resources when compared with the others but it also provide extensive amount of features, too.

For me, I have installed neither of them, firstly is because it isn't provided and secondly, I think I am feeling right at home with Gentoo. Also, plans without using these control panel can come cheaper in price.

So, what's your pick finally?



Below is a list of service provider that I have considered and maybe I can share some of my personal encountering that leads to my decision.


  1. JaguarPC
    They are the service provider where I put this blog to. Their plans are generous and the support shines. I can usually get a reply shortly from them and they are patience with my numerous questions sending back and forth. I should have signed up with them if I didn't missed the window for their promotion.

    Their VPS runs on Virtouzzo and the pricing is competitive but you might be able to get more resources for your VDS from the other service provider.
  2. eApps
    I first encounter eApps from Google, when I try to search for Java hosting. They have plans specialized for Java Servlet hosting (which is what I want to do), their pricing is OK and the review I read has a mixed reaction but I can't quite get the "resources" I would get for my VDS so I ended up headed to somewhere else.

  3. Xelhosting.com*
    I heard of some rave review for Xelhosting and I begin to study the plan to offer. But I am surprised to find that their web site is so clean and simple, i.e. I got little information apart from the hosting plan details. I usualy get my feeling towards the company from the reaction of existing user but they provided no user forum, and only a short FAQ.

    Their offering is quite good, with a wide selection of host OS including something rare like Suse and Slackware.

    I put them on my "waiting list", might consider them if I cannot find any closer match.

  4. ServerAxis*
    ServerAxis is another service provider that I heard a lot, and upon checking out what they have to offer, all I can say is "WOW"! They are the most genrous provider that I have seen. 512M RAM, 20G HDD space and 200G bandwidth for a mere US$30 is quite a bargain. I am so tempted to place my order BUT the thing that draw me back is the ordering procedures.

    I am no strangers to online shopping but what they are asking is sort of weird to me. They require the customer to send an "image" of their credit card for any ordering. I can understand they want to prevent fraud ordering but I am reluctant to do so, so I emailed their sales and check if there are alternaive solution. They responsed and tell me I can mask out the signature on the card in an email that I got after a day or so. Too bad I am on the hurrying side so I signed up a plan elsewhere.

  5. SliceHost*
    I found SliceHost from some other recommendation, their web site is designed towards a Web 2.0 style and I can find quite a bit of information through their user forum, blog and FAQ. Their offering is quite attractive, too, although not as powerful as those in ServerAxis but very good enough to me. 256M RAM, 10G HDD and 100G bandwidth for US$20. Also, they offer Gentoo linux as the VDS, which is a big plus to me since I have been a long time Gentoo Linux user.

    I head up to sign up mine and the process is a breeze. I have my newly opened VDS in a matters of minutes, installed my application and I can start my testing right away!

    The machine is very snappy and it feels even more powerful than the other dedicated server I own (a dual pentinum III server with 1G RAM). Remote access is very acceptable, too (I am accessing it from Hong Kong to the macine located in the USA).

  6. RimuHosting
    I have came across some very positive comment regarding to the level of support they provide. They even offer server colocated in different location for you to choose from but the pricing is on the more expensive side. I need to cough up almost US$40 for something similar to what I got in SliceHost but seems they are limiting only a small amount of VDS running on each of server to ensure a reliable operation, maybe that's the higher price you are paying for.


I am now a happy user of SliceHost and I would recommend anyone who want to get a shot on VPS with them.

I will soon try to setup my own Xen boxes for fun. Happy VDSing, everyone.

Using WordPress as the project information repository

As illustrated in my previous post, I have selected WordPress as the tool in building up my project tracking page.

Below is a recap on what I am aiming to do,

  1. Categorize the entry
  2. Allow visitor to leave comment
  3. Searchable!
  4. Can ease my documentation effort
  5. Time tracking or something like completion
  6. Can integrate with the other resources, e.g. version control, file server, etc.


Turns out I can achieve all but the 5th requirement, which I have decided in doing it separately.

 



Categorize the entry


Setting up category is a breeze but what I want to share with you is the structure I use.

Each category of functions that I need to implement will have their own category, e.g. one of the feature we will implement is called "Document Processor", I declared it as one of the primary category and for any related smaller function will become it's child.

Apart from that, I have created task related primary category, e.g. Coding, Architecture.

So when we create a new blog entry, we firstly select the related function and then the task.

 



Allow visitor to leave comment


Searchable!


These 2 are standard features from WordPress, the only thing that once bothers me is the problem in sending out email to author when new comment is posted. But I have it resolved finally.

 



Ease my documentation effort


Originally, my ultimate goal to achieve is allowing me to run a script, gather what have been put up on the repository and have a document generated. It is good but I don't know how I could do so, have thought about using DocBook but no time to look into it yet.

So, I step back and thing, if I could generate PDF for related post and have them join togehter could be something good enough. I started looking for plugin that generates PDF file and I have found Contutto.

The installation is a snap and one could even modify the CSS file used for PDF generation. I am too lazy to have it touched up and used the default for now. Maybe I will change the layout to match how the project web site is like.

 



Integrate with the other resources, e.g. version control, file server, etc.


What I have done is to integrate the RSS feeds and provide links to the web interface of the external resources from the project page. Thus, the user can use this as the entry point in looking for anything.

I have found the Sidebar plugin a very welcoming feature, especially in integrating RSS feeds. You can get a bunch of widgets from the WordPress website and manipulating them is just some drag and drop. The use of AJAX is clever.

I used SVN for version control and WevSVN provides both the RSS feeds and a web interface for user to browse around the repository.

For files browsing, I am using a little PHP script called e-Directory Index that allows user to browse around the file server and download any of them as desired.

To fulfill my last desire, i.e. time tracking, I have once thought about developing a client that integrates with Basecamp. It's doable as the API are all nicely presented but I just don't have the time. And I am now doing this in the old fashioned way - whiteboard. On each week, I will list out the tasks that has to be completed and give a tick on the item finished.

This solution is serving well and see if there are anything that I can refine.

Web application for project tracking

Now is the time for the development of another new product. Before I head forward to do anything, I sit down and try to come up with a tracking mechanism, as I was being told our development process is not transparent at all.

I started with a list of thing which I want to achieve from the tool,

  • Categorize the entry
  • Allow visitor to leave comment
  • Searchable!
  • Can ease my documentation effort
  • Time tracking or something like completion
  • Can integrate with the other resources, e.g. version control, file server, etc.


We have used Basecamp from 37Signals and it serves most of the purpose. The only downside is, information are stored on their server, which we have some hesitation. We want to put everything in this single repository which means confidential information could be found.

So, we decided to host it on our server. The decision in using a blog is very natural but limitation shows immediately, like how do we use it as a file repository and integration with document generation is no easy task. Then, we consider in using a traditional CMS, but setting up and publishing with a CMS is a daunting process.

A couple of candidates that pops up immediately,

  • activeCollab
  • Drupal
  • Expression Engine
  • Wordpress


Before reading forward, be warned that the comment below is my very own view. Sometimes, it's even goes to my personal aesthetic, so you could be seeing it way differently from me. ;)

 



activeCollab



activeCollab is an easy to use, web based, open source collaboration and project management tool.



It is a mock-up of Basecamp, which allow the user to install and run it on their own server. Hey, isn't this THE solution I am looking for?

Having said that, you know I have turned my back away. The main gripe is, it is not mature for production yet. 0.6 was released and I have heard about a lot of changes will be done in 0.7. I am willing to try out new thing but not that new as yet to reach even the alpha release. ;)

To be fair, it looks really promising, and everything was done by Ilija Studen alone. I think the project is now expanding with more contributor and I will definitely re-visit it again at later time.

 



Drupal



Drupal is software that allows an individual or a community of users to easily publish, manage and organize a great variety of content on a website.



The software was developed by 2 university student back in 2000 and it has already gone through 4 versions with version 5.0 on the horizon. It is a powerful system that provides a complete set of basic features like user management, access security control and a nice publishing framework. Also, it is extensible, which module can be written and operate in extending what it can do.

The installation procedure is straight forward, at least I can get it work in the first shot, but configuring the system to suit your need will take some time. I can have the first post published in minutes. Indeed, there are a lot of little options, finding out the way in customization is not easy. Also, you will need to navigate between pages and I find the loading speed is on the slower side.

One of the reason why I want to try out Drupal is for the use of Project and PDF module. The Project Module allows me to set project information like project website, CVS tree (via viewcvs which allow you to scan through the repository from the browser), documentation, etc.

After that, I can add issue (which can be a new task or a bug submission), and assign priority as a new content.

These features covers the basis for project tracking but it's not flexible, especially for the issues manipulation. Issues can be glanced as a summary with information like last update and assigned to. I can even sort it by project or priority.

And yet, I find the content creation is clumsy, especially in the initial setup phase. I have to jump from the administration page to the content creation page from time to time. Besides, the content to be shown is too crowded (I am using the theme "pushbutton") which introduce the barrier in using. Also, the category for each issue is predefined, and the content editting page is limiting. Like if I want to attach a picture in between, I have to firstly have it uploaded and enter the link manually.

Again, we step away from using Drupal, for the time needed in managing the site is a bit too much to me. We just want to jump in and out quickly.

 



Expression Engine



ExpressionEngine, our flagship product, is a modular, flexible, feature-rich web publishing system.

ExpressionEngine supports great add-on modules - an image gallery, a moblog module, and our new discussion forum, to name just a few - so you can build your dream site.



I first heard about this product from Veerle's blog 2.0. Her blog is definitely a joy to read, informative and with a VERY NICE layout.

It has a rich user base and availability of a large volume of additional modules. pMachine themselves has developed a number of them, from image gallery to forum. Apart from that, developers around the world can submit their module to pMachine and have it verified, before putting it up on their server for user to download. This can ensure the reliability of each module available.

I tried the community edition provided by pMachine, following their nice installation procedure, and have my copy running shortly. The admin pages are solid, the flow is very natural and it's a pleasing to the eye. The module and plugin development is very structural, by just implementing a clearly defined set of functions.

And yet, I didn't land my vote on this product, which relates a lot to my personal taste.


  • It's difficult to change template
  • PHP 4 instead of 5 is used. I prefer something more OO in nature. OK, it has nothing to do with functions, just my geek factor has some influence on this.
  • Template customization is powerful, or too powerful. I don't want to learn everything in adding a link or change a color.


 



WordPress



WordPress is a state-of-the-art semantic personal publishing platform with a focus on aesthetics, web standards, and usability.




I ended up using this after testing out all the products above. But the funny thing is, it was the first product that comes up in mind but turns away instantly by myself.

Let's do something different, by commenting on what I dislike first.

Documentation integration will be a pain. Concering there is no API available in retrieving each post and there are next to zero plugin that was designed for project tracking (OK, there's a todo plugin somehow). The handling of angle bracket in the editor can make content creation a problem. The issue is that, the angle bracket was not handled properly as the editor always try to taken it out which makes code posting impossible.

But it provides something that I am seeing as more valuable (and I have located work around somehow).

First of all, installation is painless. Although I have been installing WordPress on numbers of machines, I am still enjoying the 2 steps process everytime.

Getting into the system and setup the basic web site structure is painless. The admin site layout is just as fluid as Expression Engine and the use of AJAX effect is clever. It's not sole for eye catching but serve the functions well, too. The page preview in post construction is a very welcome feature. Also, by disabling the visual rich editor can solved the angle bracket issue.

Also, I have located a very good PDF plugin that allows PDF generation for each entry which helps somehow in the document generation.

One last thing, most of the people in the project team is familiar with this product, having them getting used to this system is at no cost at all.

Now, all set and done, I will share the details on how to customize WordPress into our project tracking software in my next entry.

Sending email from Wordpress in local server

I have a wordpress installed in the office for project tracking. Everything works fine except one thing - sending out email.

The wordpress resides on my own linux box and wordpress will issue the mail() command provided by PHP, for any email delivery. The caveat for that is, it relies on my PHP setting. Unlike the Windows counter part, which can simply define the SMTP location and have the email delivered accordingly, we linux user will be using the SENDMAIL underneath for message delivery.

Sendmail, is equivalent to nightmare to me, but my life is saved by Gentoo which has SSMTP installed by default.

That's what our friends in Debian defines SSMTP,


SSMTP is an extremely simple MTA to get mail off the system to a mail hub



OK, after googling around, I found that SSMTP is very customizable. Mail can be sent successfully after setting up the following,

root


Define a valid email address that exist in the mail server. I used my own email address since I am sole responsible for the server setup.

mailhub


This is the key field. I specified the real SMTP server that I want to use.

rewriteDomain


I specified the domain name that I want to use which is the name of the company I am working for.

That's it! Now mail will be delivered properly.

Happy WordPressing.