Wednesday, December 23, 2009

I just read the “Does the Distro Matter” post and immediately felt compelled to relay some of my experiences, not with distributions, but with recruiters. What is the deal with these people? Does it matter if a company is looking for experience with RHEL5 and you have experience with CentOS5? No! From a technical point of view they are almost identical! I would personally say that if you have 5-10 years experience with almost any distribution you should be able to move into a new one easily. But core skills do not matter to recruiters, only how well you match the buzz words. I helped a friend install a distributed MySQl environment for a small company once, but since it was not my company it apparently does not count as real experience. I may be a Java programmer with experience with several IDE’s but since Microsoft Visual Studio’s is not one of them it is the same as if I answered “What’s Java?” Why is this? What is wrong with these people?

I blame three things:

1) The recruiters, or even the companies central HR, are not in the field and thus do not understand the buzz words on their sheet. Most of them would not know the difference between one distribution of Linux and another. They also would not understand KRB/AD cross platform integration if it hit them in the face. They only know what is on the list in front of them. To them the difference between FC10 and FC11 may as well be the difference between speaking Bask and Thai. The people who would understand never get to see your resume.

2) The people who are looking for employees are too specific – mostly due to the fact the screeners don’t know anything. Do you ask for some one who understands the differences between Exchange Server 2003 and Server 2003 with Exchange? No, but they will ask for some one with RHEL5 (Even if they are using CentOS5) because that is what they are using. They could just ask for 15 years Linux experience but they don’t. In addition it would seem most people write the job requests so specific that only an internal candidate could possibly fill them. For example “Must have 5 years experience with Joseph ERP” Is not valid when Joseph ERP has less then 2000 outstanding user licenses across the globe and has only produced a commercial product for the last 6 years! Just because they guy your replacing had 5 years experience with it does not mean you need to be looking for some one with the exact same experience. Some times this is done so they can higher the internal candidate they had in mind before HR told them they had to post the job publicly, or sometimes this is done so they can decline any candidate they don’t feel is a good personal fit without filling out a ton of paperwork with HR, and sometimes it is because the person writing the job description was not thinking; i.e. the Joseph ERP example above.

3) The current applicant pool is so great they can get away with it. When I am loosing out to people with masters degrees, $100K worth of certifications, and 15 years experience, for a $20/hour job on a 3 Mo. contract you know there is a problem. That is too much experience for that job. On the other hand, if you have reached upper management, you have been apparently poisoned from playing in the field. No on wants to higher a former Director to manage their system migrations, so I should be grateful that they have the good sense to realize the over qualified person is a barging and buy. But this does mean that almost no mater how strict you write your requirements and how literal the recruiters follow them, eventually you will find a person who fits your requirements, or at least lies well enough to get in the door.

As an abstract complain, why do they ask what other jobs you have applied for and then disparage where you have applied? And why would they say they know some one at company X but when it is not the person you know at company X they believe you are lying about knowing any one at company X? And finally you do not have the technical experience to understand what I am telling you so why are you interrogating me regarding my technical experience. When I say that I believe DR is dead because of the reduced cost of CDP w/ FO why do you conclude I have no DR experience? I have many other complaints but I think most of them have been covered in prior posts.

Tuesday, December 22, 2009

Host Identity Protocol

This is going to be an uncherictersticaly short post; however I am woundering what is up with the Host Identity Protocol? For those who do not know the HIP allows for the implemntation of the HIT or Host Identity Tag. This is designed to solve the issue of moblie people losing thier sessions and streams when moving between networks. The assumption is that all, or atleast the majority, of services identify a client based upon there IP address. Acording to the abstract this will also make setting up servers behind NAT fierwalls easyer and increase security by uniqly identifying each host similer to an ssh finger print.

However I have three questins that leasd me to ask why this is a real projects:
1) Session ID's - When an application server needs to indentify a client they issue a session id to the client. For example when you hit my tomcat server and start a particuler session I don't care what network the client is on or what physical server the client may be hitting, I need to identify the client for the life of his session. Session ID's are already in place - so what what portion of session ID's fails so badly that it needs to be replaced with an entierly seporate project?
2) Existing Identifyers - Why not use existing identifiers such as the MAC address of the clients network interface? While it is true that ones IP can change all to frequently during the cource of a normal mobile operation, the MAC does not.
3a) Security Vs. Privacy - The answer to the above question leads to my final concern. Mac addresses can change when one user changes network interfaces. However the protocol sugested, as I understand it, sits between the Addressing and Transport layers. This is tradtionaly tied to a network interface thus changing interfaces would also change your HIT. The other one would be that MAC addresses can be esaly changed and this breaks it from being a consistant and secure identifyer. But HIP suffers from this as well.
3b) Security Vs. Privacy - There was a way to solve this security issue introduced back in the 90's; it was called CPU ID. This was a hardware based ID that was easy for all applications to read but very difficult to change or mask. The problem soon became that everyone screamed PRIVACY! It turns out people do not want to be uniquely identified with all of there activities on line at all times. As such manufactures quickly included the option to volunteerly turn off CPUID, and that was so popular it started to come turned off by default. This, of course, made it a completely invalid identifier.

So, unless you planning on replacing an entirely server side expiration based session ID I do not see how this will work. However, at the same time, I can not see why you want to replace session ID's. This leaves me to ask - Why is this a real project?

This is an actually question I am hoping some one can answer so please feel free to comment to this via the blog comments, or like most of you do, via twitter or facebook.

Friday, September 4, 2009

Open Source PDF Printing in Windows

Configuring broad application PDF and TIFF printing using Ghost Script and Red Mon port redirection.

If you have ever wanted to produce PDFs without having to pay for Adobes PDF writer please read on. If you have no need to create pdfs for free, then this is not the article for you.

Setting up Ghost Script
Down load the latest version of ghost script.
  • Download from http://www.cs.wisc.edu/~ghost/
  • (AFPL is the Always Free Version, and the GPL is the OK for commercial version, other wise they are nearly identical.)
Install into C:\gs
  • Run the installer and accept all the defaults except the location. Change that to C:\gs. At this time there are still some issues with directory names that include spaces.

Setting up RedMon port redirection Download and install the latest version of RedMon

Setting up printer

Since ghost script is a command line tool that uses it’s own environment, each printer will either be used at the ghost script command prompt, or via a pre written script. Obviously a script is better. We then must configure the port redirector to use this script


Printer Script

A script is just a test file that contains the required commands and settings. We will be creating one called “tif.rsp” and we will be placing it in the C:\gstools directory.

  1. Create a text file
  2. Cut and past the following lines.

-Ic:\gs\gs8.54\lib;c:\gs\fonts

-sDEVICE=tiffg4

-sOutputFile=c:\print.tif

-dNOPAUSE

-dSAFER

-dBATCH

-r600

-sPAPERSIZE=a4

  1. Save this as tif.rsp
  2. Copy tif.rsp to C:\gstools

Script items explained

If you want to change some of the variables inorder to make more printers that do difrent things, here is a list of each and wht they do.

  • -Ic:\gs\gs8.64\lib;c:\gs\fonts: Tells they system were to find Ghost Script and its fonts. It is highly likely you will need to change the version number to match your particular set up.
  • -sDEVICE=Device Name: Instruct GS to use a particular virtual encoder. Some acceptable encoders are

jpeg (several additional options are required to control quality with JPEG)

pdfwrite (sounds like this prints pdf’s to me)

tiffg4 (four bit black and white)

tiffgray (eight bit grey scale))

tiff12nc (12 bit RGB color)

tiff24nc (24 bit RGB color)

tiff32nc (32 bit CMYK color)

tiffsep (Creates one 32bit CMYK and a 8 bit grey for each separation)

There are also devices for fax, BMP, PCX, Photoshop PSD, Adobe PDF, PS, EPS, PXL, and many more.


Create a virtual printer
    1. Go to Printers and Faxes (Off of the start menu or in the control panel)
    2. Add a printer
    3. Choose Local
    4. Set the port to RPT1 (created by the RedMon installer.)
      • If this port does not exist, add it.
      • Select the Create a New Port option and choose Redirected Port.
      • Name it RPT1: -or- RPT2:, or RPT3:, etc.
    5. Choose the Generic manufacturer and MS Publishing Imagesetter for the type.
    6. Open the printer just created
    7. Go to properties
    8. Go to the Ports Tab
    9. Set the configuration options for the port to:
    10. Redirect this port to the program: C:\gs\gs8.xx\bin\gswin32c.exe (obviously you will need to change these to your particular location for each)
    11. Arguments for this program are: @c:\gstools\tif.rsp -

(See window snapshot below for example) Pay attention that there is a hyphen at the end of the Arguments for this program field.



Prompt for filename

When output is set to Prompt for filename, the redirection program should write its output to a file. The name of the file is obtained from a Save as dialog, can be obtained by inserting %1 in the program arguments. If you wish to place %1 in the program arguments and do not want it substituted with the filename, you must instead use %%1.

For example, the program arguments might include:

 -sOutputFile="%1"

This method is recommended for use with Ghostscript, and is commonly used with a PostScript printer driver and the Ghostscript pdfwrite device to create a PDF writer.

Do not share a printer which uses RedMon with Prompt for filename. RedMon will not allow this because the Save as dialog box would appear on the server computer, not the client which submitted the print job.

Fine Tuning

After you install the printer, you may want to fine-tune its properties. To do so, open again the Printers setting folder, and right click on the printer; select `Properties`.

  1. Under `Device Settings`, set very low values (e.g. 5) to the following two parameters:
    1. Minimum font size to download as outline
    2. Maximum font size to download as bitmap
  2. Next, go to the `Advanced` tab, and from there, select `Printing Defaults…`. In the window that opens, select `Document options`, then `Postscript options`. Set the following two options:
    1. PostScript Output Option: Optimize for Portability
    2. TrueType Font Download Option: Outline


For large format color printing: I recommend using the Xerox Document Center CS50 PS. Just make sure you tell the driver the paper sizes you want to use are loaded. To do this just go back to the properties window, click on the Device Settings Tab and under the Tray Assignment menu select a few paper sizes. Personally I believe, in addition to Letter, Legal and Tabloid are musts.


Appendix:
We pages to know for this application set:

http://www.cs.biu.ac.il/~herzbea/makeP.htm#_Creating_PDF_using_Windows_Office_A

http://www.cs.wisc.edu/~ghost/doc/cvs/Devices.htm

http://server3.nethost.co.il/set_tif.html

http://www.noliturbare.com/

http://server3.nethost.co.il/set_tif.html

http://www.cs.wisc.edu/~ghost/doc/cvs/Use.htm#Known_paper_sizes

Sunday, May 17, 2009

Installing VMServer 2 on Ubuntu 9.04

I just installed VMServer 2 on Ubuntu 9.04, and like most linux VM installs, there is a trick. Below you will find the cheet sheet version in a hope that it saves some of you some time when you go to install VMServer 2 on your Ubuntu machine. I make the assumption that you have installed things before, and maybe used VM ware in the past, but if that is not the case and you would like a more detailed guide just let me know.

0) Prep the system
Find out what kernel your running with uname -r
Install the headers with sudo apt-get install linux-headers-`uname -r` build-essential xinetd where uname is the name of your kernel.

1) Get VMWare server. http://www.vmware.com/products/server/

2) Sign up or login & don't forget to make note of your serial number

3) Download the Linux tar file, not the rpm

4) Expand the tar file
tar xvfz VMare-server-*.tar.gz

5) cd into the folder

6) Fix the installer (Otherwise you will have trouble compiling vsock)
Either - install the patch
get the patch (created by delgurth @ http://blog.delgurth.com) from http://ubuntuforums.org/attachment.php?attachmentid=94477&d=1227872015
  • If you have not done the install (and assuming your still inside the expanded VMServer install folder)
patch bin/vmware-config.pl /path/to/vmware-config.pl.patch
  • If you have already installed
sudo patch /usr/bin/vmware-config.pl /path/to/vmware-config.pl.patch

Or - Fix it manually (Finish install first)
tar xvf /usr/lib/vmware/modules/source/vsock.tar
cd vsock-only
sed -i 's/^\#include //' autoconf/*.c
include
make
sudo cp vsock.o /lib/modules/$(uname -r)/misc
sudo ln -s vsock.o /lib/modules/$(uname -r)/misc/vsock.ko
sudo depmod -a
sudo /etc/init.d/vmware restart

7) Install / reconfigure
  • If you have not installed
sudo ./vmware-install.pl
  • If you have already installed but skipped the vsock install,
sudo /usr/bin/vmware-config.pl

8) Preparing a user
During the configuration, when prompted for the admin user you can enter your user name, or, if you accepted the default, your can use root
  • If your using root you will need to set a root password, since by default root on ubuntu is locked without a password (make it very strong)
sudo passwd root

9) Fixing permissions
Login by opining a web browser and going to https://server:8333
Enter root, or if you set the admin, the admins user name
Enter your password
Go to Permissions
Click on New Permission
Enter your user name
Choose the Admin role
Remove root, if root was set as the default admin user

Thursday, April 30, 2009

RSync and SSH Keys - A Presentation on backups

Recently I did a presentation on RSync and RSnapshot focusing on using it for backups. You can down load the presentation from http://www.theonealandassociates.com/files/rsyncPortable.zip or if you do not have Open Office yet (a free and powerful Office suite comparable and compatible with MS Office and Word Perfect) or another application that can handle the ultra efficient open document formats, you can get the power point version (at twice the total download size) at http://www.theonealandassociates.com/files/rsyncPortable1_with_ppt.zip
The presentation is narrated and is easy to follow, but for you looking for the cliff's note version

1. You do not need to set up an rsync server to use rsync. The server function handles file browsing and other functions and set up is not required for transfers.
2. If your going to automate your backups going from one computer to another, you should implement some basic security. Moving your files over SSH for example is easy, but you need to set up a pair of ssh keys so that you don't have to enter a password to shh from one server to another. Simply perform the flowing commands from the production server (now known as Server A) and just use remote execution to perform your work on the backup server (hence forth know as Server B)
2.i) backupuser@ServerA:~> ssh-keygen -t rsa
    a) Do not enter a passphrase (just hit enter)

2.ii) backupuser@ServerA:~> ssh backupuser@ServerB mkdir -p .ssh
    a) This creates an ssh directory for the backup user on server B

2.iii) backupuser@ServerA:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
    a) This moves the contents of your public key to the remote servers authorized keys file
    b) You can just as esaly open a second terminal window, log into server B, vi the .ssh/authorized keys file, and cut and past from the vi window of your .ssh/id_rsa.pub file on server A
2.iv) backupuser@ServerA:~> ssh b@B chmod 0700 .ssh/
2.v) backupuser@ServerA:~> ssh b@B chmod 0600 .ssh/authorized_keys
    a)If you don't restrict the permission SSH will ignore the file by default and the whole thing will fail to function.

3. Set up an automates script containing a command like
3.i) rsync -a -r -v -t -z --stats --progress -e ssh /dir/for/destination/files/ backupuser@ServerB.MyDomain.com:/dir/for/source/files/
3.ii) there are more detailed instructions for windows and Linux inside the presentation.

You can verify the whole thing is working, and trouble shoot problems, by ssh'ing witht he verbose option -vvv and looking at the recipiants logs /var/log/secure
backupuser@ServerA:~> ssh -vvv b@B
b@B sudo -tail -f /var/log/secure



Your basically done. Though the presentation fills a nice half hour time slot and provides more detail; as such I highly recommend downloading it from the links at the top of the post ;)

Wednesday, April 29, 2009

Please show your work and label your units

A small rant on units. I have run into meaningless use of units so often lately that I thought I post a small rant here. “Please show your work and label your units” is something every instructor I had since grade school has been reiterating, so why do we have a problem with people failing to do just that? Units are important as they provide understanding to numerical measurements. To do so the units used in quantitative measurements should be appropriate for what is measured, consistent with comparable measurements, and above all well labeled. To begin with I would like to address the disturbingly prevalent absence of units. For example I was recently looking at a simple matrix chart in a magazine comparing baby monitors. One of column was labeled distance and had units such as 700, 300, 500, but no where in the article or the chart did it tell you 500 what; inches, meters, feet, miles, what? The second frustrating error is the inconsistent use of units. To use the prior example I would have only slightly less disdain if the article indicated 700 In., 300 M, 500 Ft. Yes, one now has the information required to understand the measurement and to do the comparison, with conversion, however the inconstant units do not allow us to use the chart in a useful way to make quick comparisons. The third issue I have is the use of units that either don't make sense for the measurement or don't convey accurate information. Simple said units need to make sense for what the measure. For example, the axiom that one should always leave two car lengths between your car and the car ahead of you, suffers from this bad choice of units. The units, car lengths, are first non standard (i.e ranging 2.7 M for a Smart to 5.7M for a Lincoln Town Car) and second, meaningless. I say meaningless because stopping distance is a function of the speed the vehicle is traveling. For example if I am travailing at 10 kph I can easily stop in less then 3 meeter's. However if I am travailing at 150 kph I would not be able to register the need to stop and have my foot hit the break, let alone stop, inside 5 times that distance. Let us look at it this way, we want a fixed unit to govern distance with regard to a variable distance/time function; thus we need a constant time unit. Simply said, if you stay two seconds behind the car ahead of you the distance will become greater at higher speeds, thus accommodating for the greater stopping distance required.
Now I understand when what you are looking to measure quantitatively is intrinsically tied to a qualitative value it gets harder. For example a recruiter asked me how many years of experience I have writing disaster recovery plans. My first thought was, who does nothing but write disaster recovery plans for their career, that must be a rather specialized market. I was tempted to say 10 years since my first disaster recovery project was in 1998, when I took over a flawed DR project, and the last one I wrote was in 2008 when I wrote one as part of developing standard operational documentation. However the first plan was for an environment I understood with a budget I understood and was limited in scope (servers and licenses for the IT department which served a greater college at the local university) and the last one was integrally tied to the development of a brand new .com operational procedures manual which I was helping start from scratch. And while I had written several in between, (~5 in total) they had all been part of normal operations for the company and not separately measured. In addition many of those had the assistance of an establish continuity plan to borrow from. I would argue hours, not years, would have been a more accurate reflection of my experience. For example if you have two candidates, one of which has 10 years experience, and one who has 2 years, which one should you higher for a managerial position? What if the one who has 10 years managed one worker who clocked only 8 hours a week for 10 years while the second one managed a department of 50 full time employees and a dozen contractors for two years? One has more “years” but at the same time far fewer hours of managerial experience. However, this is nearly an impossible paradigm shift for most people. In the above example if I had replied to the recruiters experience query with “I have over 2,500 hours of disaster recovery experience” it is likely I would have received a blank stare.
In conclusion, please use appropriate, consistent, and well labeled units in all quantitative measurements. Doing so will make your work measurably more useful.

How to hack your head

This post is taken from a conversation occurring on the Phoenix Lunix Users Group, and giving that the information is both obvious and important, but never followed, I felt that it was important to present it here for all of you in hope it will help change the way you work.

Hack your Head
or
How to maintain optimal thought processing abilities.

When working on systems, we often get into the zone, don't eat, don't stretch and don't maintain optimal glucose for thought processes. We therefore get REALLY STUPID and don't notice it. This can happen late at night, or at noon, but when it happens, we must acknowledge our own limitations.

If you have attacked a problem for 30 minutes using caution, and addressing resources, and cannot fix it, get up and walk around, go outside look at the sun. Be assured that some part of your higher functioning is still working on it in a creative way. Poking a problem for 30 hours with the same information you were unable to think with initially, is not productive, it's stupid. You might need to attempt to explain the problem to another (like we do on the PLUG list) in order to get clarity for instance. We learn to package and organize abstractions to develop if/then/therefore logic via PLUG list discussions, and or questioning our initial assumptions. There are a great many people who never learned systems analysis using documentation, Linux veterans did not have the luxury of Google (RHCE does not allow you to use anything but the system itself). Others essentially do not think in language, but use higher functioning to solve problems. All of us develop a higher functional way to solve problems, but sometimes that process fails and we must therefore use language or logical dissection to find our way out. We all LOVE doing this, it's incredibly addicting, but it also has some mental health risks, that must be mitigated with lifestyle changes.

Be sure to follow these daily cautionary steps to remain healthy:
1) Eat a good mix or protein, polyunsaturated fats and carbs on a regular schedule.
2) Sports drinks are just going to make you crash badly, however, adding B and C vitamins with a good breakfast, lunch and dinner will go a long way toward allowing you think effectively. Caffiene does assist with some times of tunnel attention, but can also cause health issues. The best and brightest don't drink coffee all day - that's for marketing people.
3) When you are too tired or ill to work, you must acknowledge it. Too many systems administrators just work and work and work, over and beyond what is healthy and make grave mistakes when tired.
4) Build a healthy life away from computing to provide for emotional balance. We get so far into the abstract analytical virtual realm and develop functional stunting, especially under the pressures of 24X7 Uptime.
5) Talk to others in a deep personal level; if you have noone to talk to, call your own voice mail or record yourself. Einstein and thinkers of the last century all kept uber personal journals. The mere act of talking about things or examining issues through grief and anger to laughter will assist development of free flowing heathy emotional states and that all important core of individuality and muscled critical thought.
6) Do various balanced emotional and physical things that restore your individualism, such as walk/bike, laugh, and play games, hug, chase the opposite sex and dream or create, and listen to music. Allowing children to swing and listen to music is known to stimulate intelligence.
The sheer number of IT professionals and college students taking SSRI neurotransmitter uptake inhibiters is astounding, and certainly not necessary. Exercise has been shown to be more statistically effective over time than SSRIs. Tobacco has been long used as an anti-anxiety medication, however, smoking does kill. Anxiety from balancing unrealistic, unevolved demands from people who cannot understand you when you talk is best mitigated with laughter and zen detachment.

I am sure you all can relate to Number 10 on the top ways to Hack your Brain http://brainz.org/brain-hacks/
O'Reilly has some good books that are an amusing way to wait for your greater intelligence to find the best solution to another problem.
1. Mind Performance Hacks: Tips & Tools for Overclocking Your Brain (Hacks) by Ron Hale-Evans
2. Google Hacks: 100 Industrial-Strength Tips & Tools by Tara Calishain
3. On Intelligence by Jeff Hawkins
4. Mind Wide Open: Your Brain and the Neuroscience of Everyday Lifeby Steven Johnson
5. Getting Things Done: The Art of Stress-Free Productivity by David Allen
6. Firefox Hacks: Tips & Tools for Next-Generation Web Browsing (Hacks) by Nigel McFarlane
7. Knoppix Hacks: 100 Industrial-Strength Tips and Tools by Kyle Rankin
8. How the Mind Works by Steven Pinker
9. This Is Your Brain on Music: The Science of a Human Obsession byDaniel J. Levitin

Derived from HackFest Series PLUG ,
Written by Lisa Kachold:
Edited by Bryan O'Neal