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!

Applause to MacRabbit, Panic and others.

The winner for Apple Design Awards 2007 has just been announced and I am glad in seeing names that I feel familiar with. :)

I've started using CSSEdit since v2.0, it stood out of the crowd at the time when I was looking for a nice CSS Editor. Simple, elegant and fast is a short summary. But it's not only skip deep, the X-Ray, live preview, real time updating and style lookup features simply blew me away! Validation, to-do list, style grouping, smart comment ... I can just keep going on and on. The features continue to grow in v2.5, like tabbed editing, style override, etc. Updating the website can now brings so much fun!

Panic, I've been the fans of this company since Transit. Now, Coda has entered the market for not so long, but has already stirred up a lot of discussion. Following the tradition of Panic, the interface is clean and beautiful, and it brings almost all the tools that a developer ever needs into a single application.

The FTP client, editor is top notch. The build in terminal is the feature I like most and the reference book is useful when you want a quick lookup. You can even setup a number of sites as your favorites in speeding up the connection. It is a very useful tool for the developer although there are still some rough edges. For instance, I find it difficult to change back to a file I was editing if I changed the functions (e.g. from FTP to Preview). Besides, the CSS editor simply pales when compare with CSSEdit 2.5. Also, it's a bit difficult to work with local files, since "Site" is the major idea of the application. You have to ftp back to the own machine if you want to work on local files.

Anyway, a big applause to all the winners, especially to MacRabbit and Panic.

Expression Engine Re-visit

Sometimes ago, I talked about my view towards Expression Engine.

Time rolling forward until May, 2007. I am now determining on how to setup the community site for CECID, which we expect it will be


partly a blog, partly a forum with user activity, some static pages for file downloading purposes.



The challenge is, are the a single platform that serve it all?

Can my old mate help me out?


My first reaction is to consider about Wordpress, the tools I am most familiar with. It is easy to setup, quite extensible (due to the availability of plugin and templates) but it only shines in a single perspective - Blogging. It will be difficult to integrate other features, especially on how to share a single user account across the different function.

So, a no go. Next, Drupal and Joomla comes up in mind.

Time to think alternative


I have tried Drupal quite extensively before, when I was setting up this blog. I remember how tedious it is in both configuration and content publishing. I can't even spot out the route on how to do every thing. The admin panel is messy in short.

Joomla, it has the functions required and provide rooms for the administrator to configure the look and feel. Customization can be done, yet, it's not intuitive. I don't have much interest to try out again, but might consider to take a second look at it.

Can we have a second chance?


And EE pops up in mind again. Headed over to their new homepage (http://ellislab.com/) and noticed about the new look. Gone through the 4 video tutorial in illustrating the main concept of EE (especially the templating system) and I can grasp their templating idea. Like why it is done this way and the strength of the architecture.

They provided the forum module with a single user database, too. So, it matches functionality. What I have done next is to apply for a trial account, allowing me to try out their templating system, forum module and such. Their templating system is very powerful, the content aggregation and look of the website can be designed with ease, it is a very nice MVC implementation. Imagine, you can customize the layout of the homepage in HTML, but you have provided additional tag that allows logical operation in building up the page.

A powerful templating system



For instance, I can define the homepage to show the latest forum post summary on the right hand side, and only show the summary of each blog entry in reverse chronological order. I can even pass in arguments which the tag can understand, e.g. the number of entry to show, etc.

The content of the website can be defined into groups, e.g. product group, download group, etc. For each group, we can define the look and feel individually. I have spoted a nice layout from the Open Source Web Design web page, and have it applied to the "Product" section.

Administration and installation is also a breeze, you post the article, configure the server all in one place. The layout makes much more sense and you can decide to turn on or off certain features as you see fit.

There's always a but ...



With all these features, I am sold, but there's a downside. It is not a free software.

They offered 2 types of license, basically one for commercial and one is not. I checked with them and they said we can use the non-commercial license. This license, together with the forum module, cost the centre for about HK$1200. I would say it is reasonably charged.

Now, what's left are the building of the Information Architecture, and also the templates that will be used in the forum module.

For anyone of interest, head over to Expression Engine and get a copy of Core Edition, which is for non-profit and personal use. It has provided the templating engine already.

H2O - Essential for your life

H2O

A couple of my entries are related to Hermes 2, the product that my team develops. Originally, two versions are provided, one as open source and one as closed source for commercial usage.

But on June 1, 2007, it's come to the end of the 2 products. Cause they will be merged into one - the H2O (pronounce as H-two-oh), which carries all the functions in the closed source, plus more.

H2O is a java application, that handles electronic messages, following the specification of ebMS and AS2. A web frontend is provided for configuration and status tracking. If you are looking for messaging solution, I sincerely recomment you to give H2O a try.

You can head to this location in getting the program, as well as related documentation. Additional information will be added to the website soon.

How to connect to a printer shared as a MS Windows print queue

To connect to this printer, all you need to do is similar to adding a local printer. The tricks in getting this done is step no. 3. So, watch out!


  1. Open the System Preference -> Print & Fax
  2. Click the "+" sign to add printer,
  3. Press the "option" key and mouse click on the "More Printers ..." button
    You can then find a menu item called "Advance" from the drop down list, which you can then specify the URI in reaching the SAMBA share.

    Follow the rules below to define the print que, userid and password.


    smb://<username>:<password>@<server>/<queue name>



    e.g. smb://paperdrip:xxx@printer.paperdrip.net/hp_printer

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.

Have a Cocoa Christmas

In this holiday season, there are several charity event in the Mac community and one of them is the A Holiday Cocoa Duel!.

It is in a hope of raising donation from the community to the charity by offering a number of holiday-themed applications.

Below is a summary on what each of the application do.


Operation X -> A game having santa to deposit gift through the chimney of each house but there's a F-16 to get into your way.

SantaSnaps -> My personal favorite, loaded up something like Photo booth but you can put up all the xmas decoration on yourself.

Snow Tracker -> Screen saver, for astrologist I think.

Snowy -> Snow, snowman and penguin everywhere.

Snowplane -> Dim the screen and snow falling on the background.

Photocard -> Forget to send out xmas card to your friend? No worry, create an e-card with ease!

Snow Wars -> Mr. Snowman is boring, they said let's have a snowball fight, the catapult style.

MacGiftWrap -> Want some decoration on your folder but don't want to change it one bye one? This app will replace the finder folder with ribbon wrapping around.

Mac Lights -> Decorate your desktop with Christmas light.

Holiday Lights -> Allow you to assign lights to Cocoa application.

Santa's Gizmo -> Let's hear what the developer said - "We embarked on a quest - a quest to obtain the ultimate machine. Struggling through the perils of the icy northern hemisphere, we flew over Kybar's Teeth, fought polar bears, and battled the vicious Elven Mages."

iSled -> Having the sled rider running accorss your screen.


Enjoy the offering but don't forget to donate.

Have a Merry Cocoa Christmas!

Attention to details in iChat

Apple, apple.

A company famous in addressing issue in details. There are already a lot of examples shown before but I am amazed there is still something new being found today.

I am having an audio chat with my friend, turned up my speaker and started talking. But I've noticed that the left channel is muted. I am scared if it might be something went wrong, started to look around in System Preferences and such but noticed nothing wrong.

Then my friend reminded me that, the mic on the MBP is located on the left hand side, near the speaker. So it is muted on purpose to prevent the echo from happening.

I am simply amazed. :)

A joy to do software development in OS X

I have been enjoying to do development in OS X for years, in JAVA most of the time. Eclipse, SVN, Apache ANT, Tomcat, Mysql .. all runs flawlessly and I can do deployment easily.

But I am enjoying even more lately with my first rails app. I do this with 3 apps most of the time, which I can "flow" nicely in between.


  1. Textmate
  2. CSSEdit 2
  3. DBVisualizer


Using the GUI of Textmate is like licking a tasty candy - Syntax highlighting, auto closing of tags, project navigation pane. It allows me to modify the different files in both tree mode and tabbed pages.

When I am doing the frontend, I start with the CSS. In this new version, the "X-ray" and "preview" are the 2 features that I like a lot. I can open the preview window and check out how my changes are like. When I am done, I switch back to Textmate for the logic. BTW, Textmate allows me to open CSSEdit from the project tree when I right click on any CSS file.

Upon execution, I will need to check if the backend operates as desired. Now the DBVisualizer comes into picture, I can do SQL query, browse through data easily. And not to mention, this is a FREE application.

To complete the package, I relies on "Transmit" for ftp transmission (btw, it's nice to be able to right click on any file and open with Textmate for editing) and "Color Schemer Studio" in preparing the color scheme. It's always good to get inspiration from others.

As a side note, the environment switching in Ruby is welcoming. Since the DB setting on my local machine differs from my server, I only need to setup accordingly in the "Test" and "Development" environment in the file database.yam. Startup my webbrick with additional attribute, and I am set.


ruby script/server -e test



I treasure these little thing since I work on my mbp many hours in a day.

The “Partnership” in Hermes

Let's talk about "Partnership", one of the term you should know well in using Hermes.

After finishing this episode, you will know on how to create a partnership and can deliver messages to my testing server.

A large Hawaii pizza with extra cheese, please!


So, what is partnership?

Take an analogy, when you go to order a pizza, the waiter will ask you a couple of questions. What is your favorite topping? What size do you want? Do you want extra cheese?

Right, partnership is your decision on how the messages should be transmitted.

Partnership is an "agreement", in between you and the people who gonna receive your message (let's call them a "partner"). This "agreement" defines on how the message will be sent, e.g. should the partner reply with a note upon receiving a message.

Ok, how could I place my order?


In the Hermes 2 packages, you can find execution script called "partnership.sh" (or partnership.bat), the script will invoke a java class that helps to create the partnership. The program gather the partnership values from the xml file, which can be found from the "data" directory.

The XML file contains all the major configuration that you can find from the message specification, and the default value are configured to create partnership for loopback test. You should be able to spot the meaning of each of them by the name of each element and configure the partnership as desired.

Thus, to create the partnership, all you need to do is,


  1. Modify the xml file, e.g. if you want to create a partnership to send ebms message, you should edit the file "ebms.xml"
  2. Execute the batch script "sh partnership.sh ebms -a data/ebms.xml"


One thing to note is, the script will assume the username and password for the database to be those defined in the installation guide. If not, you will need to change the value in the file "conf/partnership.module.core.xml"

Who else can take my order?


So, you might want to talk to someone else other than yourself. Don't worry, I have setup a testing server. But PLEASE be gentle, don't try to stress test my server. :D


  1. Open "data/ebms.xml"
  2. Modify the following line from


    <transportEndpoint>
      http://127.0.0.1:8080/corvus/httpd/ebms/inbound
    </transportEndpoint>



    to


    <transportEndpoint>
      http://images.vsmile.com:8080/corvus/httpd/ebms/inbound
    </transportEndpoint>

  3. Execute the shell script,



    sh loopback.sh ebms



  4. All should goes well like in the loopback test, mark down the message id for the next step.


How would I know if my order has been placed?


Visit this page and look for the message id you get in the previous step.

Found it? Congratulation, you have sent your first ebms message over the internet.

What you can do next is to play around with the rest of the setting, like enabling the receive of acknowledgement, setup your own pair of server and try to exchange messages (make sure the partnership setting aligns between the server).

Once you are familiar with this, you can go live to exchange electronic messages with your business partner. Have fun!

Setting up of the Hermes2 Messaging Gateway

Introduction



Hermes 2 (or Corvus, the codename we used to call in the office) is a messaging gateway that enables the handling of electronic messages in the format of AS2 or ebMS. For details, you can refer to our product web page.

I have noticed different questions in the mailing list, and as one of the developer behind the product, I hope my contribution can help those people who is interested in using it.

First off, let's start our installation.

The procedures are basically the same as indicated in the installation guide but I will include a small section in answering some commonly asked question. Also, I want to bring up some interesting finding as I am going to deploy Hermes in a little bit different environment.

Prerequisite


Apart from the binary of Hermes 2, you will need to prepare some other supporting applications, note that I have replaced Postgres with Mysql cause my web host only provides the later one. :D

NOTE : I don't have time to test out everything on this platform so if you want full compliance, stick with Postgres. ;)



Configuration - Mysql


I will highlight the steps nvolved in using Mysql in place of Postgres, but for the rest of the installation, please check out the details from the installation guide.


  1. Create two databases, named as "as2" and "ebms" respectively
  2. Create an user "corvus", grant the right to "CREATE", "DELETE", "DROP", "SELECT", "INSERT", "UPDATE". Or you can simply grant ALL if you are as lazy as me.
  3. Modify the table schemas, replace "VARCHAR" with "VARCHAR(255)" and "BYTEA" with "BLOB". Or you can download my copy from here.
  4. Create the tables accordingly.


Configuration - Hermes


The configuration files in the binary is having Postgres configured as the database of choice. You will need to change the setting in using Mysql instead.



  1. Get yourself a nice editor, search for the string

    "org.postgresql.Driver"


    and replace it with

    "com.mysql.jdbc.Driver"



    Also, locate this as well,

    "jdbc:postgresql://localhost:5432/ebms"


    and replace it with,

    "jdbc:mysql://127.0.0.1:3306/ebms"



    Repeat the procedure for AS2.

  2. Put the jdbc driver of Mysql into the "lib" folder of the Corvus webapps

You can now startup the tomcat and check the various log files (catalina.out, corvus.log, ebms.log and as2.log) that no errors are thrown.

Configuration - Loopback test


Congratulation! Now you are just one step away from completion.

It doesn't mean all is set even if no error is thrown during startup, let's try out our installation with the loopback test. BUT since the program is developed with Postgres in mind so some changes has to be made.


  1. Copy the JDBC driver of Mysql into the lib folder and modify the execution batch files to include it in the classpath.
  2. Modify the file "partnership.module.corel.xml" in the "conf" folder. Do the same thing as in Step 1 in Hermes 2 configuration.

Ta-da, now you are all set and done. Run the loopback test as usual and you should get the following results,



- Module 'Corvus Partnership' initialized successfully.
Start sending AS2 loopback test case.
Sent AS2 loopback test case with returned message ID 20061117-170806-45901@210.245.164.9.
Start checking the received list.
Download the message from the list with ID 20061117-170806-45901@210.245.164.9.
Downloaded successfully.
End checking the received list.
============================
AS2 loop back test finished.
============================



Note



There's something funny upon executing the loopback test ...

I have encountered several DAO issues and turns out it is the case sensitivity in the SQL query. The DB tables are all created with a big cap for the first letter and somehow, in the SQL query, some of the statement is using lower cap and the mismatch leads to the DAO issue. I have changed the table name accordingly in all the DAO XML files and everything is working fine.

What if ...


You are lucky if everything can go in one pass. I will put up pointer to questions which I have seen many times in the google group.


  1. When I boot up Hermes 2, I saw this message in the corvus.log,

    Unsupported keysize or algorithm parameters



    This error will raise if you forgot to deploy the JCE patch. Make sure you are copying to the right location. Also, I found that I have to set the "JAVA_HOME" in my user profile in order to have the patch loaded properly.

  2. Why is the JDK version so specific? Can I use some other version like JDK 1.5?
    Trust me, you will save yourself a lot of time in using the version we request. We find that a method we rely on, has somehow been changed to a private method since 1.4.2_04, so you might experience issues like

    java.lang.IllegalAccessError: tried to access field
    org.apache.xpath.compiler.FunctionTable.m_functions from class org.apache.xml.security.Init



    For JDK 1.5, we have identified some code changes that need to be done before it can operate properly.
  3. Is the "wildcard" feature that was introduced in Hermes 1 still valid in Hermes 2?
    No, this feature has been taken away from Hermes 2, due to the change in principle from push mode to polling mode. You need to specify precisely on what are the messages you want to send or receive.
  4. OK, now everything is working, what if I want to write a client?
    To keep things simple, let's focus on ebms message delivery first. First of all, you need to create a "partnership" for sending out messages. You can do so by using the program in the loopback test, the program will read a "data" file which define the details of the partnership (think partnership to CPA in ebMS).
    After that, you develop your program and make a web service call to Corvus for message delivery. The web service call will include some of the key information you defined in the partnership, so that Corvus can pick up the rest (like where to send it to) from the database.
    The "end point" on Corvus that responsible for picking up the request is
    "http://127.0.0.1:8080/corvus/httpd/ebms/sender" and you need to supply the following information in the web service call,

    • cpaId
    • service
    • action
    • conversation id
    • from party id
    • from party id type
    • to party id
    • to party id type
    • ref to message id

    Also, you will want to create an "AttachmentPart" which carries the "payload" you want to send over to the recipient.
    Upon making the request, you should get a soap response. The body inside should contain an element called "message_id" and the value of this is a string. This is the "token" that Corvus generated for you. You can use this "token" to perform query.


I hope this episode can help you a bit in kicking start the installation. When you are busying in setting up the environment, I will prepare my next episode, focusing on the partnership thing and hope to bring you something more interesting. Stay tuned.

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.

Application I use regularly on my PowerBook

I am now gathering the latest version of the applications that I use regularly, for my soon-to-be arrived mbp c2d (Macbook Pro Core 2 Duo).

Documentary



  • Keynote
    I use both Keynote and Powerpoint, the decision point in using which depends if my file needs to be used by others. Personally, I like Keynote more, main because of the interface. The only thing I dislike before was the presentation tools, which I couldn't scroll up and down on the presenter's note, until now I figured out the hotkey. Besides, the templates looks more appealing to me, even the buildin one looks better than those from Powerpoint.
  • MS Office 2004
    Word, Excel, Powerpoint. Do I need to elaborate more?
  • OmniGraffle Professional 4.0
    OK, buying this tool is one of the best investment I have made. I made all the diagram for the documents or presentation with this program. The interface is very natural and un-obstructive, I have even made some vector graphics with the bezel tools in Omnigraffle. The license is a bit steep, I get the standard version firstly but I find myself enjoying a lot of the pro features like the support of multi-pages and master canvas.
  • OmniPlan Beta
    To be honest, I am not fond of tracking schedules with graph like Gantt Chart or work with resources allocation (I am an XP guy!!). But when things become un-avoidable (i.e. when you boss ask you for such a diagram), I will use this to entertain their request. Following it or not is another thing. :)

    And yet, I am not sure if I will pay for it when it comes out of beta.
  • Pages
    Compare to Keynote, I am using far less with Pages. But there is a project that I am working on right now (sort of like coming up with a book for myself) and I find it is very easy in using the tools to do my page layout. I have even bought a commercial template which renders my half-bake book looks great!
  • Paparazzi!
    Have you come across this unknown gems? It helps me A LOT in doing my documentation for the web application! I don't need to stitch the screen capture for a long web page into one after locating this tool!


Entertainment



  • Audion 3
    I know everyone use iTunes, I am one of it's user, too. But at times, there are mp3 that I want to play but not importing into my library, I will bring up this app. Too bad it had been dropped and I need to look for another UB mp3 player.
  • Audio Hijack Pro
    I use this to capture the audio off my DVD and also for tapping the internet radio broadcast. It's nice but I am not using it as often as I thought, I found myself unable to catch up with the program I tapped, no time to listen to in short. Besides, the mp3 I captured off the DVD is always resulted in a long single piece, and they have just recently released a new application to cut the mp3 into pieces.
  • HandBrake
    Media Center, what a hot topic, but I need to digitize my DVD or MP3 collection before I can enjoy it with the nice remote. HandBrake (or Hawkeye) is the tools I use to convert my DVD into MP4 so that I can browse it through with Front Row.
  • iTunes
    Do I need to say more? Oh, one thing you might of interest, is the size of my MP3 collection. It is now well over 60G and closing to 70G soon.
  • RealPlayer
    I only use this for Radio 4 internet broadcast. I find it difficult in locating the free version and the need for registration before you can download is annoying.
  • VLC
    The nice little app to play back all the .avi or mp4 movies I got.


Graphical / Imaging



  • Adobe Photo Elements 4
    The little brother of Adobe Photoshop, now what I want is an UB version!
  • Color Schemer Studio
    I have been eyeing on this tool for a long time, but the price tag drive me away everytime, until I saw the discount from MacZOT! The complimentary color suggestion, text color suggestion is so useful. And I can import color scheme provided on the web site, too. The original price is too costly and I find it worth the discounted value more.
  • Comic Life
    A funny idea to play around with photos you have taken in an event. My first trial on this is to present the photos taken in the C# Boot Camp. The layout and dialog is funny but my only gripe is the change in resolution means a redo. It's even nicer that a complete version was bundled with my mac mini. :D
  • DoubleTake
    Panorama, not something you will take regularly. But me, as a user of XPan (a camera that takes panorama on films), need this apps everytime when a roll is shot. I scanned in the films and stitch the two half back into one. It's tedious (for the scanning) but the stitching is easy. I have even used this for my wedding photos, too.
  • GraphicConverter
    I bought the licesne for this when I need to work on a bunch of photos, resizing to the resolution I desire. Later on, I tried to use this in place of Photo Elements. But it's a no go, simple action like copying or cropping, takes me a lot of effort. Mainly becoz of the weird shortcut key combination, and the lack of support of layering.
  • iPhoto
    Now my de facto tools in organizing my digital photos, especially important as I will publish them to my .mac website.
  • iView MediaPro
    I use this only for one thing - slide show. But I am not using it much now, especially as I am using iPhotos in doing my photo organization.


Productivity Boost



  • Curio
    I learnt about this idea tracking tools a long time ago but the price tag drive me away instantly. Until last month, when they were offering free license, I re-visited this apps and find it nice. I have used it in my latest project, to keep track of the ideas, requirement, screen mockup. I have even pay for the professional version. The idea sounds but could be done even better, e.g. the HTML export. I know it's hard to export since the data might consist of both text and graph but the decision in making each idea page an image is just too obscure. When I export the idea to HTML, I want to share with others and it's very likely that they will want to use the text. The PDF export is not much better, too. The page orientation keeps changing and get truncated most of the time. I have to go back and forth in changing the layout before a proper PDF can be generated. It has a lot of potential but I just don't get clicked with this yet. It could be my own problem, wish that I could get accustomed to this soon and turns my investment fruitful. ;)
  • Hog Bay Notebook
    After MacJournal gone commercial, I used this in place of it. It's simple and can do the job nicely. I know they have morphed into Mori lately, I am not sure if I am ready for the new layout yet. Maybe it's a good time in forcing me in phasing out the old version.
  • LaunchBar
    Apart from OmniGraffle, this is another tools that I feel my investment worth every penny! I am a notebook user and this tools allows me to focus my work on my keyboard, be it opening an app, dropping files into an app or even opening an URL. I can do it all with combination of keystrokes. It's resemble to Spotlight somehow but it's only a skin deep level comparison. Spotlight is SLOW and cannot do many of the thing I mentioned. Get this, or QuickSilver if you want a free alternative.
  • Pzizz
    I have an habit in taking a nap after lunch. I have heard about this apps before but again, the high price tag driven me away. I got a free copy from MDA sometimes ago and I find the Energizer Nap works quite well. After that, I pay up for the sleep module and the MDA offer on the upcoming version. I am now using it almost daily and on Sunday night when I find it uneasy to relax and sleep.
  • SplashID Desktop
    I have many serial number to keep track of, as well as login ID, this apps helps me to keep track of them nicely. Last thing I've heard from them is a version of Symbian OS. I have yet to check it out and it will be great if I can use it on my M600i.


Socializing



  • Adium
    Instant Messaging! Something I need to use both at work and home, with my colleagues, or overseas friend. Like many of you, I have identity for ICQ, MSN, Yahoo ... and it will be tiring if I need individual client for each of them. And with Adium, I can use them all at once, in styles! If I need to pick a top free app for Mac, this one can easily find it's place.
  • Firefox
    Safari is good, but it is still not a dominant player, in the Web 2.0 arena. Many of the features are not being supported and a second browser is always nice to be on hand.
  • iWeb
    How many photo gallery software has been released? But not until now, we have something so nicely integrated! Importing your photo into iPhoto for organization and then putting them up as a gallery with iWeb. The templates are gorgeous and the limitation they impose results in a very easy to use software. Are there downside? Yes, of course! It's SLOW! I don't know why it takes so long in doing action like adding a new blog, inserting a new image.
  • Mail
    Using mail is a joy, most of the time, it's intuitive and conversation highlighting is something very useful. So, when will be the time that I feel frustrated? It is when an email fails to get downloaded or somehow they can't render the email into readable text. But it's rare.
  • MarsEdit
    A simple (or too simple) blogging editor, it does the job alright and allowing me to blog offline is a big plus.
  • NetNewsWire
    RSS feed reader. I can organize the feed that I feel interested in nicely and have them synchronized to their server. So that I can get the same set of feeds on every machine. The built-in tabbed browser is a nice touch.
  • Thunderbird
    You may be wondering why I need a second email client. Well, I prefer to split my office email from my personal email. I used Entourage for about a year but given up lately. I don't know why it keeps telling me it cannot get the lock of my mail box (an IMAP account).


Software Development



  • Chmox
    CHM reader.
  • DbVisualizer
    This java based application enable the user to hook up to any database server, as long as a proper JDBC driver is provided. SQL statement execution, a spreadsheet like data browsing and editing. A very useful application for anyone that needs to deal with databaases.
  • Eclipse
    The java IDE, it's very common in the office. But at one point, I have selected to use Netbeans instead since it is more responsive. For the new mbp, I haven't decided which one to go yet.
  • iTerm
    Terminal, terminal, terminal. I used this almost daily and the tabbed shell support is one thing I cannot miss! But are there an UB version available?
  • TextMate
    I first heard about the apps from the Ruby guy and I keep wondering why do I want to pay for a text editor when I can find a free one (TextWrangler, Smultron, etc). Upon testing it out and enjoyed the feature of tabbed support, project tree and auto completion (sort of, like bracket closing upon opening), I feel the power of this editor. One interesting side note, when TextWrangler was still in the V1 phase, I have contacted the developer and tell them how much it means in supporting tabbed editor. But they reply frankly that no one would want this feature ... but see what do they do now. ;)
  • Transmit
    FTP is dated, but SFTP is not! Together with the support of WebDAV makes this a very useful application. Not to mention the integration with editor like Textmate which enables me to do updating on the fly without hassle!
  • X11
    OK, this is not really an application. But I do need this to install many thing like Fink, FreeNX Client.
  • zsCompare Lite
    One thing I still miss from the world of Windows is ViceVersa - a very nicely developed folder comparison application. zsCompare is a very closed alternative but still missed little thing like easy copying of the highlighted files to alternative location, exception by wildcard/regular expression. Anyway, it's better than having no choices.


System Utilities



  • ChronoSync
    I use this to syncrhonize the folders between my macs (ah, can't wait for Portal!) but I find it is not working as much as I desire. The file diff functionality for 2 way synchornization is far from satisfaction, so I haven't used it for much now.
  • Cocktail
    Ah, everyone wants a healthy mac, I will run the cron job and fix permission when I remember. I have once setup the schedule thing but I found my using pattern is a bit hard to get a proper schedule from working.
  • Split & Concat
    I am a newsgroup guy and I always got a bunch of files segment. This little gem helps me to join them back together into one piece.
  • Stuffit (Deluxe?Expander?)
    I have been using it since version 4 or 4.5? But now, I am uncertain if I still need to Deluxe version. The only thing I miss is the short cut (cmd-u) to expand files, and also to package files from the context menu. Give me some more time to decide if it worth the US$29.99 for version 11 upgrade.
  • SuperDuper!
    Backup, backup. I was once a user of Retrospect but the time it takes to backup my folders renders me from doing it frequent enough, which also results in having an aged backup. Since I got SuperDuper, I am doing much more frequent and I feel secure. :)
  • UnRarX
    RAR is nice, I even have WinRAR registered. This tools ease the pain to unrar file segments from commandline.


Update (Nov 7, 2006) : Turns out I have some apps missed mentioning.

  • xScope
    It's a suite of tools especially useful for web page creation, on screen ruler, browser sizes.
  • Unison
    I like newsgroup and Unison is king in managing all the content. The binary post manipulation is especially good, it can gather all the segement and joint as a complete file to ease the download.

Tools for PHP obfuscation

We have developed a PHP application and is about to be released. And we want to obfuscate our PHP source before selling it, thus, I have evaluated different product that aimed in performing this kind of activity, I have selected to check out the following products.

  • ByteRun Protector for PHP
  • PHP Thicket Obfuscator
  • PHP Encoder

ByteRun Protector for PHP


Encoding process


ByteRun Protector for PHP is first mentioned in PHPArch, a nice review is given and steps by steps procedure in illustrating on how PHP codes can be encoded are shown. It has provided a windows only GUI interface for the user to select the projects folder and where the encoded file should put into.

The encoding comes with 3 level of security and only the PHP encoded in level “weak” can be executed with the original loader. The rest of the 2 can only operate under the loader provided. The encoding process is painless and you can encode the script with different parameter, such as expiration date for execution and domain checking. All these configuration can be saved as a “project” and you can execute individual project at anytime, to ensure the deliverable will always be encoded under the same setting.

Deployment


There are very little documentaion on how the deployment should be done, upon copying the encoded scripts to the execution platform, I have added the corresponding extension as instructed and upon execution, segmentation fault is resulted.

I have sent an email to the support but no reply from them so far. The only help I can help is a single page of html indiciating I should make sure the loader is properly loaded but it just doesn’t seems to work.

PHP Thicket Obfuscator


I have high hope on this product as they critized heavily on competiting product like those by Zend, also, they declare the PHP is obfuscated (note the different between this and encoding) and could not be reverse engineered by any decompiler available. They even claimed that, the obfuscated PHP scripts can be executed in regular loader, no customized loader will be needed.

Encoding process


The encoding process is performed in command prompt, there is a bunch of argument one can (or has to) pass into the encoding command. You have to specify which of the file (or files you listed in a project file) together with what do you want to do with it, to ease the customization, a very primitive has been provided for the user to create the project file. The building process is scriptable and can easily be merged into the building process.

I have spent hours trying to figuring out on how could I obfuscate my code to no avail, maybe I am too old in typing command? The only documents I got is some html pages, which resemble very closely to a typical “how-to” document, i.e. with a lot of word but you cannot easily follow through. I have finally given up and moved on to the next product.

PHP Encoder


Encoding process


The trial version of PHP Encoder from ionCube contains a command-line encoder (again?!), the loader and a user guide (finally!). I have followed through the user guide, and fires up the encoder (they have 2 encoders, for PHP4 and PHP5 respectively) which I only need to specify the source and output folder location.

The product has 3 different level which differs in function, like the Pro version allows the generation of time limiting license while the Cerberus version can limit the execution of the script to a certain MAC address only.

Like PHP Thicket Obfuscator, the command line execution allow us to integrate the encoding process easily into our build process. The encoder can execute on various platform like linux and windows but the licesne will be bound to a particular MAC address.

Deployment


I have copied the whole set of encoded PHP, as well as those provided by the program for loader verification to my testing machine. I fired up the testing script and it shows the steps that I need to take in order to have my encoded script to operate properly.

I have modified the php.ini as instructed, and copied the loader to a particular location and reload the testing script. It reports I am fine and then, I moved on to check my program.

Ta-da, everything just works!

I logged in and start to wander around, every functions just work like before. Then, I opened the encoded script in text editor and noticed nothing that I can understand. :)

My decision is very apparent, I would propose to use ionCube PHP Encoder for our project.