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). ↑
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
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!).
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.
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!
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.
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.