Tutorial: OpenOffice.Org Mail Merge

Posted on in Categories fedora linux, Gnome, GNU/Open source, Howto, Linux, Linux desktop, OS X, Tips, Ubuntu Linux, UNIX, Windows last updated January 14, 2009


Mail merge is a software function describing the production of multiple documents from a single template form and a structured data source. This helps to create personalized letters and pre-addressed envelopes or mailing labels for mass mailings from a word processing document which contains fixed text, which will be the same in each output document, and variables, which act as placeholders that are replaced by text from the data source. The data source is typically a spreadsheet or a database which has a field or column matching each variable in the template. When the mail merge is run, the word processing system creates an output document for each row in the database, using the fixed text exactly as it appears in the template, but substituting the data variables in the template with the values from the matching columns.

This technique of merging data to create mailshots gave rise to the term mail merge. OpenOffice.Org has a in built software mail merge feature.

If you haven’t tried OpenOffice.org’s mail merge feature because you find it confusing or difficult to use, you are in luck. Mail Merges in OpenOffice.org and StarOffice provides a detailed description of the mail merge feature from start to finish. Among other things, it shows how you can use the mail merge to create letters, labels, and envelopes.

=> You can download this excellent PDF ebook for your persusal or read the article online – Mail Merge in Openoffice.org: Everything You Need to Know.

Linux assembly language comparison: GNU Assembler (GAS) vs Netwide Assembler (NASM)

Posted on in Categories Howto, Linux, programming, UNIX last updated November 6, 2007

This article explains some of the more important syntactic and semantic differences between two of the most popular assemblers for Linux®, GNU Assembler (GAS) and Netwide Assembler (NASM), including differences in basic syntax, variables and memory access, macro handling, functions and external routines, stack handling, and techniques for easily repeating blocks of code.

Unlike other languages, assembly programming involves understanding the processor architecture of the machine that is being programmed. Assembly programs are not at all portable and are often cumbersome to maintain and understand, and can often contain a large number of lines of code. But with these limitations comes the advantage of speed and size of the runtime binary that executes on that machine. Even though the differences between these two assemblers are substantial, it’s not that difficult to convert from one form to another. You might find that the AT&T syntax seems at first difficult to understand, but once mastered, it’s as simple as the Intel syntax.

=> Linux Assemblers: A Comparison of GAS and NASM

BASH shell scripting tip: Set default values for variable

Posted on in Categories Howto, Linux, Shell scripting, Tips, UNIX last updated December 18, 2007

A shell variable may be assigned to by a statement using following syntax:

If value is not given, the variable is assigned the null string. In shell program it is quite useful to provide default value for variables. For example consider rsync.sh script:
rsync -avz -e ‘ssh ‘ [email protected]:$RSRC $LOCAL

This script can be run as follows:
$ ./rsync.sh /var/www .
$ ./rsync.sh /home/vivek /home/vivek

It will sync remote /home/vivek directory with local /home/vivek directory. But if you need to supply default values for a variable you can write as follows:

: ${RSRC:="/var/www"}
: ${LOCAL:="/disk2/backup/remote/hot"}
rsync -avz -e 'ssh ' [email protected]:$RSRC $LOCAL

: ${RSRC:=”/var/www”} ==> this means if the variable RSRC is not already set, set the variable to /var/www. You can also write same statement with following code:

if [ -z "$RSRC" ]

You can also execute a command and set the value to returned value (output). For example if the variable NOW is not already set, execute command date and set the variable to the todays date using date +”%m-%d-%Y”:

: ${NOW:=$(date +"%m-%d-%Y")}