Monday, December 29, 2008

Build Anything

As an engineer, if you want to outwit someone who is asking you whether you can or can’t build a thing, just say, “Given enough time, I can build anything”.

They’ll believe you’re avoiding the question, and they’ll think you’re arrogant !!!

But sure, you need to take the time to explain your thinking to thisperson. You need to walk them through your development process. It’s an opportunity to educate and not come off...

However.

Given enough time, an engineer can build anything.
I’m optimistic.

Like any profession, Technology is full of different personalities, but it finally want the optimists. It is not the mere yes-folks, but for those folks who,say “**** it, we’re going to figure it out”.

This base optimism can be hidden in all types of personalities, but it shows up when there is an impossible situation and creates the impossible.Look at how technology people are changing pace when we are facing the worst ever economic crisis in the world !!!

I have in my career seen some Insane optimists. These are people who:

  • Work hard
  • Over-commit and still deliver
  • Rampantly go out of their way to help each other
  • Have a track record of stunning success
This is not a population limited to Technology but in all fronts.They show up in every impossible crossroads...

So, I remain optimistic which is my new-year resolution for 2009.

Where I sit, with the cranky engineers —the insane optimists — I hope we all share this optimism because, given enough time, we can build anything.

Monday, November 24, 2008

INNOPT08 , The NeST SEPG Conference




Overview :

INNOPT08 , The NeST SEPG Conference aims to bring together the practitioners, process champions and technology leaders from across the organization to share their innovative ideas, unique experiences and informative findings. Through paper presentations in the organization’s areas of interests, the conference seeks to advance the state of the art in the respective areas, while providing a platform for NeSTians to express themselves professionally. The technical exhibition planned on the sidelines of the conference is aimed at demonstrating the company’s leadership in the chosen themes through the work done in various operational units.

Conference Themes :

INNOPT is coined from the two streams of this year’s conference - Process Innovation and Performance Optimization.Process innovation take a giant leap forward from mere adherence, and forms the corner stone for any process improvement efforts. Contrary to common perception, innovation is what separates a great process from a good one. The theme was chosen by SEPG to instill the importance of innovation among process champions and practitioners alike, even while adhering to the company’s renowned Quality Management System.Performance optimization has always been a traditional stronghold of NeST, with its focus on performance sensitive fields such as embedded systems, system software, multimedia codec and image processing. Thanks to the recent emergence of multi-core processors, even desktop computing is looking at ways to improve performance, actively demanding the attention of designers and programmers, rather than left to compilers alone. Needless to say, performance optimized solutions is a critical business priority, justifying the choice of technical theme.

About SEPG :

Software Engineering Process Group (SEPG) is responsible for the overall software development capability of the organization, and continuously fine tune the Quality Management System of NeST.

Details :

Time : 09.00 - 17.00

Date : 28 Nov 2008

Venue : Travancore Hall, Park Center, Technopark, Trivandrum

Thursday, June 19, 2008

Adding Fonts in Linux to X Font Subsystem

This weekend, a new problem came my way.The problem may seem too small, but of wide implications where a customer-related environment is involved.We had installed linux to support the developer community in our organization,I had to attend to varied levels of problems in these machines which gave me ample opportunity to play with networking,applications,libraries,configurations in enterprise linux systems.All these machines were Red Hat Enterprise Linux v3 or 4. Lets come to what exactly it is.

We know that Openoffice is the standard Office application in linux and it draws font information from the installed fonts of the system.Here the root of the problem is that during installation, the language support in the OS was limited to US English and only its fonts were installed.

Now, the developers had a new area of work in a new project which made them to deal with documents encoded in Japanese.These were confidential data.The developer needed to decode the data using some online translator page from Excite or Google.But, when they opened the document,Japanese characters were not visible at all.


So,I had come right into this scene assuming that Japanese Language support has to be turned on either in the OS or in the application.First, i tried with enabling Japanese support in Openoffice.For that, you have to just turn on 'Asian Languages' support from Tools > Options.(Click on image for a detailed screenshot)



But from there itself, the problem was still visible for me.Under the new Japanese font support subsystem, no new fonts were visible.This meant that in the system, Japanese fonts were not installed.Also, the display of characters at the Japanese font part in the documents was still blank.

I tried restarting application and later, the OS at-large anticipating any change...but all in vain.
Now what is the course to be taken ?


Of course...download a Japanese font and install it to the OS.For that, i set out on google search .At last, i came to Wazu Japan's Gallery of Japanese Unicode fonts which were open (http://www.wazu.jp/gallery/Fonts_Japanese.html).I downloaded a less painful ttf font called Mona which was encoded in Japanese Font subsystem.

Now...what if the format of fonts were not supported in Linux.For that also, i went on to an extensive search.Lastly, i came to a convincible method to add fonts support to linux at a CentOS page.But most of the configuration in CentOS is supported in Enterprise Linux also.


To install the font, the procedure is as follows(This is for the Core X Font Subsystem):

1. Download the font to directories /usr/share/fonts and Create the /usr/share/fonts/local/ directory (if it does not already exist):

# mkdir /usr/share/fonts/local/


2. Copy the new font file into /usr/share/fonts/local/


3. Update the font information by issuing the following commands (note that, due to formatting restrictions, the following commands may appear on more than one line; in use, each commands should be entered on a single line):


# ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale
mkfontdir /usr/share/fonts/local/

4. If you had to create /usr/share/fonts/local/, you must then add it to the X font server (xfs) path:

# chkfontpath --add /usr/share/fonts/local/

5. Adding new fonts to the fontconfig font subsystem is more straightforward; the new font file only needs to be copied into the /usr/share/fonts/ directory (individual users can modify their personal font configuration by copying the font file into the ~/.fonts/ directory).


6. After the new font has been copied, use fc-cache to update the font information cache:
fc-cache

# fc-cache <directory>

(Where directory would be either the /usr/share/fonts/ or ~/.fonts/ directories.)


Individual users may also install fonts graphically, by browsing fonts:/// in Nautilus, and dragging the new font files there.


NOTE: If the font filename ends with ".gz", it has been compressed with gzip, and must be decompressed (with the gunzip command) before the fontconfig font subsystem can use the font. Now,what did i see when i started Office once again, new font was listed under 'Fonts'

Epilogue:

The Japanese characters were visible now in both Openoffice Writer and Impress and it came under 'Fonts' in the Text Toolbar.




User could now easily start testing translations on Google Translator by copying the text directly from Openoffice Impress.

Please refer to XFont Subsystem documentation in Linux for major ideas involved in this article

Saturday, April 26, 2008

Installing Broadcom drivers for xSeries Server with RedHat Enterprise Linux 4

This is the account of a problem i experienced in setting up an IBM x3650 server with linux enterprise 4 update 2(64-bit).The following problem occurs mostly if you are performing an install using 3rd party driver-detect option or using 'pci=nommconf' or even the generic 'noapic' option.But here, i had to comprehend it in a clean install too...This post is particularly helpful in many situations if you are doing linux install in IBM xseries where network device is not taken by default.

As we had completed install and tested network configuration, we could see that there were two network interfaces and both of them not being detected.

# ifconfig -a

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1

(No ethernet device showing up)


# service network restart

the following error comes up:

Bringing up interface eth0: 3com3c501 device eth0 does not seem to be present, delaying initialization. [FAILED]


We thought it as a classic PCI device detection problem since most network interfaces belong to PCI genre.But a close inspection revealed that this was not the actual cause.We could see a PCI device named '3Com3c501'.

This prompted me to search for drivers for that device name.But i was once again disheartened to find that the device was named obsolete in their homepage itself and that such drivers have not been in use since kernel 2.4 or Redhat 9x line of OS.

Then came the usual search for the problem in forums which have often come to my rescue in identifying which course to take.I found some useful posts here:

http://www.linuxquestions.org/questions/linux-networking-3/3c501-device-eth0-does-not-seem-to-be-present-230505/

It was telling that 3com drivers as shown here is the legacy driver which pops up when the destined driver for the actual device is not taken by default.This put me in one more question.How to detect the actual ethernet device if it has not been taken? The answer was another post on the same page.Just issue

# lspci -v

This showed up the actual PCI listing of the motherboard.Now in the head 'Network interface', i was seeing Broadcom NetXtreme II series of device.

I began search issuing "Broadcom NetXtreme II + EL4 driver".I could find them both in support site of IBM x series and Broadcom homepage.I downloaded the drivers as zip files,burned in into a CD,extracted them to the server and began installation as per the INSTALL.txt manual

I preferred the RPM source install method and the steps are as follows:

1. Install the source RPM package:

# rpm -ivh bnx2-.src.rpm


2. CD to the RPM path and build the binary driver for your kernel:

# cd /usr/src/{redhat,OpenLinux,turbo,packages,rpm ..}

# rpm -bb SPECS/bnx2.spec

or

# rpmbuild -bb SPECS/bnx2.spec (for RPM version 4.x.x)

Note that the RPM path is different for different Linux distributions.

The driver will be compiled for the running kernel by default. To build
the driver for a kernel different than the running one, specify the
kernel by defining it in KVER:

# rpmbuild -bb SPECS/bnx2.spec --define "KVER "


where in the form of 2.x.y-z is the version of another
kernel that is installed on the system.

3. Install the newly built package (driver and man page):

# rpm -ivh RPMS//bnx2-..rpm

where is the machine architecture such as i386:

# rpm -ivh RPMS/i386/bnx2-.i386.rpm


Note that the --force option may be needed on some Linux distributions
if conflicts are reported.

The driver will be installed in the following path:

2.4.x kernels:

/lib/modules//kernel/drivers/net/bnx2.o

2.6.0 kernels:

/lib/modules//kernel/drivers/net/bnx2.ko

2.6.16 and newer kernels:

/lib/modules//kernel/drivers/net/bnx2.ko
/lib/modules//kernel/drivers/net/cnic.ko

4. Unload existing driver if necessary:

# rmmod bnx2

If the cnic driver is loaded, it must be unloaded first before bnx2 can
be unloaded:

# rmmod cnic

5. Load the driver:

# insmod bnx2.o
or
# insmod bnx2.ko (on 2.6.x kernels)
or
# modprobe bnx2

To load the cnic driver:

# insmod cnic.ko
or
# modprobe cnic

6. To configure network protocol and address, refer to various Linux documentations

After the install was completed and system restarted, the Kudzu hardware configurator popped up and asked to add the new device with network settings.The network device was successfully configured for the rest.....

NOTE: Please check support available with the server before attempting these steps and also it is advisable to refer to documentation online.Some legacy drivers may not be enabled by this method.The outlined documentation is compatible with only Broadcom NetXtreme II onboard and we r not claiming it could work for any other custom drivers.

IBM, xSeries are trademarks or IBM Corporation, Worldwide. Broadcom,NetXtreme are trademarks of Broadcom Inc.