Password Nightmare

Almost every useful/interesting web site requires a password (Digg, del.icio.us, you name it). If you want to play with them, you’ll need to register. To register, you’ll need a password. It’s just the way it is on the net these days.

However, it’s a nightmare considering the number of my daily visited web sites.

Well, I don’t know how you handle it, personally I have my own mental system for this. Obviously I shouldn’t use the same password for every web site. I don’t trust anyone, not even Google (do you?). Therefore, I use a few primary words plus some special characters to generate a unique password for each site. For example, for web site foobar.com I might choose a primary word foobarcom mixed with 6&8 to generate a unique password foo6bar&com81.

That’s for generating passwords, the easy one. The hard one is to actually remember them. Currently I rely on Firefox2. But there’s one problem: it’s hard/troublesome to keep sync between multiple computers. Also, if I can’t use my own computer, I’m in trouble.

A more thorough refection on this issue could be found here: More on Passwords. And there’s a new way of handling it: Web Password Hashing.

Basically PwdHash lets you generate a unique password for each site based on a primary word you choose. Yes, it’s a little like my system described above but without requiring you to remember the special characters (and how to mix them with the primary word). So now all you need to remember is a few primary words (and on which web sites they are used).

PwdHash is a Firefox extension and is very easy to use. Whenever you need to enter a password (for a specific web site), just press F2 (or a special prefix “@@”) before you type your chosen primary word. PwdHash would generate a unique password for this site (only) based on the primary word you type3.

Please bear in mind that I don’t really think it’s a good idea to use the exact same method for treating your critical passwords. Be very serious about your critical, secret passwords.

Keep your secrets in you mind only, or it is not secret anymore.

1 Well, this might work for non-critical web sites. But for other critical, life-supporting sites (like E*Trade, NetBank), using the same system to generate passwords is simply unacceptable. It is wise to keep them completely separate from those used for non-critical web sites. If you’ve never been worried about it, you should start to worry.

2 Again, that’s for normal non-critical web sites. For critical passwords, I use Oubliette. These days, web sites start to require you to change your passwords every few months. I really can’t remember them without some kind of help.

3 If you don’t know what hashing means. Hashing is a process for generating unique word from a given input. It will always generates exactly the same word if the same input is given. And by unique we mean hashing will generate a completely different word if a different input is given (even just a single character change).

Stock Quote Feed

OK, I admit I cannot live without Bloglines.

I read news, technical publications, and friend blogs everyday on my Bloglines page. Almost everything has feed these days and it’s just damn convenient to be able to have-it-all in a single place.

Well, almost ...

One of the strangest thing keeps knocking my head is that there’s no stock quote feed (or at least I’m not aware of). There are a lot of web site for you to check the current stock quote, but none of them provide a feed. All I want is a simple feed of stock quote so I can read it on Bloglines once a day (or maybe once a week). I don’t want to maintain a portfolio on a financial portal site and have to manually log in everyday just to learn the current stock quote.

Luckily, someone has a solution: Yahoo stock to RSS converter. It’s a PHP script which parses Yahoo’s stock quote data to generate a feed. Simply put it on a PHP supported server and you get a personal stock quote feed for your own needs (there are quite a few parameters which let you tune the generated RSS content).

Since I’m using it with Bloglines, I have modified it a little bit to fit Bloglines’ interface. The original version makes Bloglines treat each quote update as a new entry. That ends up generating lots of entries for each stock (Yahoo’s stock quote updates every half an hour) and annoys me since I only care about the most current quote. Here’s the modified version (download and rename it): stockrss

Lotus Notes Parser for MoinMoin and Trac

I have been using MoinMoin and trac in my project for a long time. They are really great tools for development work. It’s imply damn cool to merge bug tracking with wiki (and vice versa).

However, it’s another story when you want to use wiki for project management purpose. One thing that keeps annoying me was that we use Lotus Notes in our company. My work as a project manager has to copy and paste those business emails into wiki. Since nobody would write their emails in wiki format, and in order to make email looks reasonably ok, I have to manually edit each email before I put it into wiki. What a nightmare!

That’s not respectable work anyway.

To make my life (and the team’s) easier, I hacked out a parser for just that purpose. The parser recognize the content you copied from Lotus Notes and will format it in an easier-to-read style (by making email headers stand out). Now I just need to copy-and-paste (but no edit anymore!).

Lotus Notes Parser for MoinMoin

Lotus Notes Parser for trac

My Favorite List of Firefox Extension

I cannot live (ok, browse) without Firefox. One of the reason is that there are so many usable extensions. Here’s my list, and most of them could be found on Firefox’s update site. Only links of those extensions which could not be found there are indicated here.

Must-Have

  • ieview
    Launch IE for viewed page directly from within Firefox. Also it can remember which page (when viewed by Firefox) should IE be automatically launched. For web sites that can only work in IE, it is really very handy!
  • adblock
    Block partial content with wild card setting. Useful for AD prevention.
  • autohide
    Make Firefox full screen truly full of screen. Help you hide the toolbar as well. Must-have for those using Firefox as presentation tool.
  • spellbound
    Spell checking any text field or text area within Firefox. No need for any external dictionary or spell checker any more.
  • imagezoom
    Add zoom function for images in Firefox. Very useful when image size does not fit very well.
  • outsidebar
    Do you hate the expanding of sidebar to push the window to the right? It expands sidebars to the left to help keep your window static.
  • disable targets for downloads
    Prevents an unnecessary blank page opened when clicking a download link.
  • searchpluginhack
    Ever wondered how to remove an installed search engines? It can help you by providing a simple right click directly on the search box dropdown list.
  • resizable-textarea
    Ever complained about the too-small textarea when editing on the web? It can resize textareas to your needs.
  • pdfdownload
    Allow to choose how to handle a PDF file link (download, view it within Firefox, or view it externally).
  • noscript
    Help control the usage (allowed or not allowed) of JavaScript (by site).
  • all-in-one gestures
    Execute common commands via mouse gestures.
  • linky
    Open/download/validate links and pictures in tabs or windows.

Usable

  • forecastfox
    Shows weather forecast in the status bar.
  • greasemonkey
    User script manager for Firefox. Required by many other useful user scripts.
  • mozcc
    Shows embedded Creative Commons licenses of current pages.
  • better search
    Enhance various search engine (search result page), including Google, A9, MSN, Yahoo, del.icio.us ...
  • customizegoogle
    Enhance Google search result page and removes ads and spam.
  • Merriam-Webster search box
    Merriam-Webster search engine to Firebox search box.

Web Mail

  • gmail s/mime
    Add function of sending/receiving encrypted S/Mime messages in GMail.
  • gmail delete button
    Add a delete button to GMail. Requires greasemonkey installed.
  • webmailcompose
    Directly launch various web mail compose window for mailto: link.

Developer

  • colorzilla
    Advanced eyedropper, color picker, page zoomer, and other colorful goodies.
  • web color names
    Let you select color by name or by hex number.
  • measureit
    Draw a ruler directly within Firefox to get the pixel width and height of any element on a web page.
  • editcss
    Let you modify the currently used CSS content on the fly (in Firefox, not on the server). Very handy when you are experimenting different styles.
  • aardvark
    Let you manipulate(hide/view/view source) pages by block. Very helpful for working with CSS styles.
  • view formatted source
    View source inline or in a formatted (colored syntax) form.
  • view cookies
    Add a cookies tab to view page info dialog to check used cookies for current page.
  • add’n’edit cookies
    Allow you to add/edit session and saved cookies.
  • web developer
    Add a menu and a toolbar with various web developer tools.
  • javascript debugger
    Provide a JavaScript debugger for Firefox.
  • curisecontrol monitor
    Show a CruiseControl monitor green/red light in the status bar.
Google Desktop Search Enterprise

Finally, there’s Lotus Notes support from Google Desktop Search Enterprise. My work place uses Notes and the search function within Notes really sucks. I installed Google Desktop Search Enterprise today but only enabled the searching for Notes. So far, I’m pretty satisfied at what I get.

Well, I actually uninstalled all desktop search tools on my computers a few weeks ago. There were two main reasons. First of all, I rarely use them (well, I rarely found what I wanted using any of them). Second, they degraded the performance to a point that I cannot tolerate anymore.

The main reason why such tools cannot help me might come from the reason that most of my documents (search targets) are e-books. It might be hard using a few keywords to search among a large volume of e-books (and hoping the rihgt one would popped up at the front). Indeed, most of the times the search result is too long for me to pick from. Having said that it didn’t help to seach in my e-books, I found such tools are good at searching emails or chat logs. That is, the smaller documents the more precise results.

I probably will use it to search Notes only. But that alone really makes me a happy man.

Self-Controlled CruiseControl

CruiseControl is a tool for implementing Continuous Integration. It helps manage the builds for your projects. You can schedule the builds based on time or on any modification made to the repository storing your project. Beyond controlling the builds, it also provides a reporting dashboard for monitoring the status of your projects.

So, the workflow goes like this. You make some modification to the code base and check it into the repository. After a few minutes of waiting (a cup of coffee or tea), a mail notification will be sent to you telling you whether or not your modification caused any problem to the code base. If no problem, well, you can be relaxed and either go home or get another work item. If there’s a problem, you can quickly check the build log included in the mail to see what was the cause. After you fix the problem, you can sit back and wait for the email notification of the result of this fix. Normally we would like to set the waiting time to be within 10 minutes so we can get quick feedback. Note that there’s no manual operation on the server side in the workflow. Every thing is automated.

This is great, really great indeed!

The configuration of CruiseControl itself is through a XML file. In the file you specify the builder, the schedule, the notification, etc. Usually, we would like to put this configuration file in the repository as well. And that brings the idea of “eating your own dog food”.

A separate CruiseControl builder is set up for updating its own configuration file. Whenever I need to change any settings, I simply modify the XML file and check it in. A few minutes later, all changes to the configuration are taking effect. This is great in that I don’t need to log into the build machine. It could be done on any host as long as I or anyone else can check in the configuration file.

Everything is perfect now, except ...

The current version of CruiseControl does not support adding/removing builders on the fly. That is, if you add a new builder, you have to restart CruiseControl. Well, I admit that the needs for adding builder rarely happens.

I know version 2.2.1 has been out for quite a while. I have just installed it but had problems with it, so I go back to version 2.2. The problem relates to Subversion modification set, which always reports the last modification is 1970/xx/xx ... Not good!

Spellchecker for Firefox

I love Firefox and I use it everyday. Mostly because there are so many must-have extensions that I cannot live without them. Of course, Firefox itself is also a must-have.

There’s one more must-have extension I found today. SpellBound could let you spell check any html text area or input field. That’s a great help when I’m publishing my blog. Originally I have to copy and paste into a text editor. Now I’m more comfortable with blog publishing.

Integrating ClearCase with Araxis Merge

I have been using Araxis Merge for a long time. And ever since I used ClearCase in my day job, I got really bad mood. The original merge tool used by ClearCase was really hard to use and confusing. I really couldn’t get any clue when I was faced with its ugly interface even after several months. So I tried to search to find if there’s any solution for replacing it with other tools. Fortunately, they already had one on their web site, but that’s for diff function only.

So here it is, I have modified the sample Perl script to include the merge function as well. Follow the steps and you’ll be happy thereafter:

Create a Perl script like the following and replace the last line with your own path to Araxis Merge tool:

   $base = "";
    $out = "";
    $titleN = 0;
    for ($i = 0; $i <= $#ARGV; $i++) {
        if ($ARGV[$i] eq "-base") {
            ## it is a base file, replace parameters
            $ARGV[$i] = "";
            ## process next param:
            ## replace it by /wait /3 /merge /a1
            $i++;
            ## retrieve the base file
            $base = $ARGV[$i];
            $ARGV[$i] = "/wait /3 /merge /a1 $base";
        }
        
        if ($ARGV[$i] eq "-out") {
            ## it is a title, delete the parameter
            $ARGV[$i] = "";
            $i++;
            ## retrieve the output file
            $out = $ARGV[$i];
            $ARGV[$i] = "";
        }
         
        if ($ARGV[$i] eq "-fname") {
            # it is a title, delete the parameter
            $ARGV[$i] = "";
            $titleN += 1;
            ## process next param:
            ## replace it by /titleN:"$argv[$i]"
            $i++;
            $ARGV[$i] = "/title$titleN:\"$ARGV[$i]\"";
        }
    }
    system "c:/dev/tool/araxis/merge/compare.exe @ARGV $out";

Get Perl2Exe to convert this Perl script to an executable. You must have Perl installed on your machine for the conversion.

Modify the file <ClearCase root path>\lib\mgrs\map and replace all occurrence of "/..\..\bin\cleardiffmrg.exe/" with “full path to your converted Perl script executable”.

That’s it and now Araxis Merge will appear whenever a compare or merge is needed by ClearCase.

Desktop Search

Ever since I tried Google Desktop Search, there were a few competitions appeared in the market. Suddenly the market became so hot that no one can afford not joining the party. Google, Copernic, and Microsoft all announced their products. And I have tried them all.

Well, I have to say, they are quite similar. Not just the functionality they intend to provide, but the interface they provide. They all do well on what they supposed to provide: indexing and searching. I can find what I want among my collection of a few GB of e-books with all products. However, I did find one annoying point about Copernic Desktop Search. It nearly made my machine hang during indexing (even I set its priority to idle). That doesn’t make much sense to me so I drop this one from my list. Both of the other two products do not have this problem.

The downside of Google Desktop Search is that it does not support PDF file format (yet, at least). Well, I have a lot of e-books in PDF format. The MSN Deskbar Search included in MSN Toolbar Suite Beta does support PDF files (through Adobe’s IFilter Plugin). Besides that, the two products work almost the same to me.

I haven’t yet got a feeling of which one is better at searching since I didn’t really have done any complex search. Since I have both installed on my machine (indexing the same set of targets), eventually I will find out the answer. But currently they are all quite capable of doing the job well.

UML Sketch Tool

Recently I have some needs to draw some neat UML diagrams for demonstration purpose. I’m never Ration Rose fan, which is really too difficult for my simple usage.

Microsoft Visio has always been the choice for drawing diagram, and it does really good job. However, I prefer using Pavel Hruby’s Stencil instead of the original default one. They are a lot more useful and UML 2.0 compliant.

But this time I have tried another little tool for sketching UML diagrams. Try this: UMLet. First of all, it’s free and it’s written in Java. Second, it is in some way more convenient than Visio. The main concept of this thing is to help you draw fast. You don’t need to go through any pop-up/dialog to fill in the value/text you want to be shown. The drawing is as powerful and as convenient as Visio. You can also choose to export the diagram into JPEG/PDF/SVG/EPS formats. Neat!

If all you want is to quickly draw a diagram and use it to discuss with your peer, this little tool suffices.