<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8005120615989478842</id><updated>2011-11-27T20:10:52.738-05:00</updated><category term='linux'/><category term='scripting'/><category term='computer science'/><category term='key'/><category term='sms'/><category term='java'/><category term='authentication'/><category term='books'/><category term='httpd'/><category term='vmware'/><category term='apple'/><category term='security'/><category term='convert'/><category term='ssh'/><category term='cobol'/><category term='command'/><category term='OAS'/><category term='root'/><category term='degree'/><category term='openssh'/><category term='curve'/><category term='hacker'/><category term='oracle'/><category term='cs'/><category term='interface'/><category term='HPUX'/><category term='redhat'/><category term='sudo'/><category term='iphone'/><category term='blackberry'/><category term='filesystem'/><category term='vswif'/><category term='shell'/><category term='ipod'/><category term='unix'/><category term='session'/><category term='server'/><category term='DBA'/><category term='att'/><category term='su'/><category term='generation'/><category term='ifconfig'/><category term='variables'/><category term='jailbreak'/><category term='proc'/><title type='text'>bsd, unix, vmware, linux, and oracle - administration tools and tips by william nix : tronik</title><subtitle type='html'>tricks of the trade from a unix systems administrator - william nix : tronik : xunlinkx</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default?start-index=101&amp;max-results=100'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>103</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3218803836987477854</id><published>2011-04-06T09:14:00.002-04:00</published><updated>2011-04-06T09:14:47.779-04:00</updated><title type='text'>Port 88 open on Mac OS X - KDC monitoring daemon</title><content type='html'>If you enable either File Sharing (AFP or SMB), Mac OS X 10.5.6 will have not only the AFP or SMB ports, but also port TCP/88 open. The daemon on this port is kdcmond(8), which is described as “KDC monitoring daemon – Open Directory Single Sign On”. Most people who are not connected to a Mac OS X Server-based network probably don't need this service.&lt;br /&gt;&lt;br /&gt;If you would like to disable this daemon, you need to change the launchd(8) configuration, which is accomplished by this one-liner:&lt;br /&gt;&lt;br /&gt;Disable:&lt;br /&gt;sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.kdcmond.plist&lt;br /&gt;Enable:&lt;br /&gt;sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.kdcmond.plist&lt;br /&gt;Note that these commands edit the above files, implying that the effects may be undone by future updates from Apple.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3218803836987477854?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3218803836987477854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3218803836987477854'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2011/04/port-88-open-on-mac-os-x-kdc-monitoring.html' title='Port 88 open on Mac OS X - KDC monitoring daemon'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6366162847094591978</id><published>2011-04-05T10:19:00.000-04:00</published><updated>2011-04-05T10:19:19.460-04:00</updated><title type='text'>Mac OS X VPN and L2TP for Android / iPhone and iPad devices (or others l2tp)</title><content type='html'>From: http://blog.theilluminatedengineer.com/?p=136&lt;br /&gt;--- Ugh. The link to the original is good, I'll use it as long as its there, but I put this here to keep it just in case the other guys site goes down. Good article, props to the author... I got mine working.&lt;br /&gt;&lt;br /&gt;-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 1: An Introduction&lt;br /&gt;&lt;br /&gt;There are lots and lots of different types of VPN setup and I honestly don’t understand how most of them work.  I do know that we will be using the L2TP protocol.&lt;br /&gt;&lt;br /&gt;The phone will need 3 things to connect to the VPN server on the mac; a user name, password and a shared secret.  The user name and password correspond to an account on the local computer.  The shared secret is a code known only to the server and client and is used to secure the connection.&lt;br /&gt;&lt;br /&gt;Were going to do a lot of tasks on the command line as the root user so start up the OSX terminal and enter the command:&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;$ sudo -s&lt;br /&gt;and give it your password when it asks.&lt;br /&gt;&lt;br /&gt;Step 2: Store a secret key in the OSX Key Chain&lt;br /&gt;&lt;br /&gt;The shared key will be stored in the OSX Key Chain, this puts it some place secure rather than storing it in plain text where it can be seen by anyone with access to the box.&lt;br /&gt;&lt;br /&gt;Ideally the shared key should be complex and hard to guess.  Personally I use a 64 character random hexadecimal key from https://www.grc.com/passwords.htm but you may want to use something a little less awkward to type in.&lt;br /&gt;&lt;br /&gt;To store this run the command:&lt;br /&gt;$ sudo security add-generic-password -a com.apple.ppp.l2tp \&lt;br /&gt;    -s com.apple.net.racoon -T /usr/sbin/racoon -p "shared key" \&lt;br /&gt;    /Library/Keychains/System.keychain&lt;br /&gt;Replace “shared key” with whatever shared key you picked above.&lt;br /&gt;&lt;br /&gt;The VPN server is two part.  The actual server is called vpnd but there is a second task called racoon.  Racoon is, I believe, responsible for setting up  the initial connection and handling the security.  The “-T” option in the above command gives racoon permission to access the keychain and read the value&lt;br /&gt;&lt;br /&gt;Step 3: Configure the VPND service&lt;br /&gt;&lt;br /&gt;VPND takes it configuration from a standard plist configuration file.  Start up vi (or the editor of your choice) and edit the file:&lt;br /&gt;&lt;br /&gt;/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist&lt;br /&gt;The file content should be:&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;    ActiveServers = ("com.apple.ppp.l2tp");&lt;br /&gt;    Servers = {&lt;br /&gt;        "com.apple.ppp.l2tp" = {&lt;br /&gt;            Addresses = ("XXX.XXX.XXX.XXX");&lt;br /&gt;            DNS = {OfferedSearchDomains = (); OfferedServerAddresses = (); };&lt;br /&gt;            IPv4 = {&lt;br /&gt;                ConfigMethod = Manual;&lt;br /&gt;                DestAddressRanges = ("YYY.YYY.YYY.YYY", "ZZZ.ZZZ.ZZZ.ZZZ");&lt;br /&gt;                OfferedRouteAddresses = ();&lt;br /&gt;                OfferedRouteMasks = ();&lt;br /&gt;                OfferedRouteTypes = ();&lt;br /&gt;            };&lt;br /&gt;            Interface = {SubType = L2TP; Type = PPP; };&lt;br /&gt;            L2TP = {&lt;br /&gt;                IPSecSharedSecret = "com.apple.ppp.l2tp";&lt;br /&gt;                IPSecSharedSecretEncryption = Keychain;&lt;br /&gt;                Transport = IPSec;&lt;br /&gt;            };&lt;br /&gt;            PPP = {&lt;br /&gt;                AuthenticatorPlugins = (DSAuth);&lt;br /&gt;                AuthenticatorProtocol = (MSCHAP2);&lt;br /&gt;                IPCPCompressionVJ = 0;&lt;br /&gt;                LCPEchoEnabled = 1;&lt;br /&gt;                LCPEchoFailure = 5;&lt;br /&gt;                LCPEchoInterval = 60;&lt;br /&gt;                VerboseLogging = 1;&lt;br /&gt;                DSACLEnabled = 1;&lt;br /&gt;                Logfile = "/var/log/ppp/vpnd.log";&lt;br /&gt;            };&lt;br /&gt;            Server = {&lt;br /&gt;                Logfile = "/var/log/ppp/vpnd.log";&lt;br /&gt;                MaximumSessions = 128;&lt;br /&gt;                VerboseLogging = 1;&lt;br /&gt;            };&lt;br /&gt;        };&lt;br /&gt;    };&lt;br /&gt;}&lt;br /&gt;There are three values above that you need to set for your own network:&lt;br /&gt;&lt;br /&gt;Set the value marked XXX.XXX.XXX.XXX to the IP address of the server.  If you have more than 1 network interface set it to the one you want the server to listen on (e.g 192.168.2.10).&lt;br /&gt;The values YYY.YYY.YYY.YYY and ZZZ.ZZZ.ZZZ.ZZZ indicate the range of IP addresses the VPN server should assign to clients when they connect.  Make sure this range isn’t in use by any other computers or DHCP servers and its big enough for the number of clients you want to connect. (e.g 192.168.2.100 and 192.168.2.120).&lt;br /&gt;It’s important the file has the correct permisions:&lt;br /&gt;&lt;br /&gt;chown root:admin \&lt;br /&gt;    /Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist&lt;br /&gt;chmod u+w,a+r,a-x \&lt;br /&gt;    /Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist&lt;br /&gt;Step 4: Set up launchd to start the vpnd service at startup&lt;br /&gt;&lt;br /&gt;We need to make sure the vpnd server starts up each time we restart the computer, doing it manually would get boring quickly.&lt;br /&gt;&lt;br /&gt;Starting boot tasks is handled on OSX by the launchd service.  Create a new plist file using vi (or your editor of choice) at:&lt;br /&gt;&lt;br /&gt;/System/Library/LaunchDaemons/com.apple.ppp.l2tp.plist&lt;br /&gt;Put in the following content:&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;&lt;br /&gt;&lt;plist version="1.0"&gt;&lt;br /&gt;    &lt;dict&gt;&lt;br /&gt;        &lt;key&gt;Label&lt;/key&gt;&lt;br /&gt;        &lt;string&gt;com.apple.ppp.l2tp&lt;/string&gt;&lt;br /&gt;        &lt;key&gt;ProgramArguments&lt;/key&gt;&lt;br /&gt;        &lt;array&gt;&lt;br /&gt;            &lt;string&gt;/usr/sbin/vpnd&lt;/string&gt;&lt;br /&gt;            &lt;string&gt;-x&lt;/string&gt;&lt;br /&gt;            &lt;string&gt;-i&lt;/string&gt;&lt;br /&gt;            &lt;string&gt;com.apple.ppp.l2tp&lt;/string&gt;&lt;br /&gt;        &lt;/array&gt;&lt;br /&gt;        &lt;key&gt;OnDemand&lt;/key&gt;&lt;br /&gt;        &lt;false/&gt;&lt;br /&gt;    &lt;/dict&gt;&lt;br /&gt;&lt;/plist&gt;&lt;br /&gt;It’s important the file has the correct permisions:&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;chown wheel /System/Library/LaunchDaemons/com.apple.ppp.l2tp.plist&lt;br /&gt;chmod u+w,a+r,a-x /System/Library/LaunchDaemons/com.apple.ppp.l2tp.plist&lt;br /&gt;There is two ways to get this file to read in and the server to start.  You can reboot your computer or you can issue the following command:&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;launchctl load /System/Library/LaunchDaemons/com.apple.ppp.l2tp.plist&lt;br /&gt;You should now have a running vpnd fully configured and ready to connect to.  We can check this by examining the log files:&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;tail -f /var/log/ppp/vpnd.log&lt;br /&gt;This file should contain lines of the form:&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;2010-05-26 01:38:10 BST Listening for connections...&lt;br /&gt;If it doesn’t your going to need to start doing some debuging.  Check the contents of the /var/log/ppp/vpnd.log or /var/log/system.log for useful messages.  The comments on the Mac OSX Hints page have a lot of usefull information on things that could go wrong.&lt;br /&gt;&lt;br /&gt;Step 5: Configure the Firewall&lt;br /&gt;&lt;br /&gt;Make sure that your firewall / router is configured to forward UDP on ports 500, 1701 and 4500 to the server box.&lt;br /&gt;&lt;br /&gt;There are so many different routers out there that you’ll need to go read the manual or search online for how to setup your specific brand.&lt;br /&gt;&lt;br /&gt;Step 6: Configure the iPhone&lt;br /&gt;&lt;br /&gt;If everything above went well you should now have a fully running and secured VPN server that can be accessed from any place on the internet.&lt;br /&gt;&lt;br /&gt;To set your iPhone up to use the server go through the following steps:&lt;br /&gt;&lt;br /&gt;Open the settings app&lt;br /&gt;Select “General” &gt; “Network” &gt; “VPN”&lt;br /&gt;Add a new VPN configuration&lt;br /&gt;Set the VPN type to L2TP&lt;br /&gt;Configure the following settings:&lt;br /&gt;Description: Anything you want&lt;br /&gt;Server: The IP Address of your server (This is the public address given to you by your internet provider.  Depending on your provider this address may change frequently.  I recommend setting up a dns alias account with http://www.dyndns.com/ to make this step easier and more robust)&lt;br /&gt;Account: The user name of an account on the server (this can be the one you normally log in as)&lt;br /&gt;RSA SecureID: Off&lt;br /&gt;Password: The password for the account you set above&lt;br /&gt;Secret: The shared secret you picked above (enjoy typing in the 64 character hex key if you used it. It’s worth it!)&lt;br /&gt;Send All Traffic: Yes&lt;br /&gt;Turn the VPN connection on via the switch at the top of the “General” &gt; “Network” &gt; “VPN” page.  A switch also appears near the top of the launch screen of the settings application&lt;br /&gt;Once your connected you should see a blue “VPN” icon in the bar at the top of the iPhone screen&lt;br /&gt;Some of these settings could use going over in more detail.  The VPN connection uses two levels of protection.  The first is a user name and password that can be used to log on to the server machine, you can use your normal user account or create a new one with less permissions.  The second is the shared key, which wraps up the entire communication.  The longer and more complex your shared key is the harder it will be to break.&lt;br /&gt;&lt;br /&gt;The “Send All Traffic” option tells the iPhone to send all traffic over the VPN connection, not just traffic directed at the VPN server.  You want this on as it protects all of your traffic to any site by encrypting it and sending it to your VPN server before it then makes it out on to the internet.  This makes it almost impossible for someone to monitor what your doing when your on a public WIFI or using 3G.  It also has the effect of making your public IP address appear to be that of your home internet connection, in theory this lets you use UK restricted web sites when you’re out of the county (iPlayer etc.), but it may not work if the site uses more than just IP to determine where you are.&lt;br /&gt;&lt;br /&gt;If you have any problems check the /var/log/ppp/vpnd.log or /var/log/system.log files for useful messages. The comments on the Mac OSX Hints page have a lot of useful information on things that could go wrong (keep an eye out for the dreaded MD5CHAP error that seemed to plague people on older versions of OSX, though I didn’t see it on 10.6).&lt;br /&gt;&lt;br /&gt;Hopefully that’s you now up and running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6366162847094591978?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6366162847094591978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6366162847094591978'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2011/04/mac-os-x-vpn-and-l2tp-for-android.html' title='Mac OS X VPN and L2TP for Android / iPhone and iPad devices (or others l2tp)'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-4169740091838009541</id><published>2011-03-03T12:17:00.000-05:00</published><updated>2011-03-03T12:17:12.965-05:00</updated><title type='text'>grep, od, and dos2unix - Need to fix some crappy files that won't grep?</title><content type='html'>Recently I had to write a program to extract about 2500 passwords from a Novell eDirectory. That was all well and good, until I sent said output of file to a user who mangled the format on a Windows Machine. The user opened it in Excel or Notepad (or something...who knows...) and then worked with it, and send it back to me to pull the users they'd left in the file out of the Novell eDirectory.&lt;br /&gt;&lt;br /&gt;Well that file wasn't in a format grep liked. How long did it take me to figure that out...quite a while, because there's nothing that looks different about the file to the naked eye (or naked editor.)&lt;br /&gt;&lt;br /&gt;After googling and feeling very greptarded, I came upon the solution. I identified that the file I previously had and the file I receieved back had different octal values (man od) - I then used dos2unix to reconvert the file to a format grep would work with... grep really didn't like grepping on the improperly formatted file. Very strange... Simple magic... it worked, and the day was saved.&lt;br /&gt;&lt;br /&gt;Aside from that, Novell, Netware, and eDirectory are crap. Unfortunately the place I work is still utilizing several servers that run it. Everything else is switched to Microsoft Windows and Active Directory (and my division which runs UNIX (HP-UX and RHEL))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-4169740091838009541?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4169740091838009541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4169740091838009541'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2011/03/grep-od-and-dos2unix-need-to-fix-some.html' title='grep, od, and dos2unix - Need to fix some crappy files that won&apos;t grep?'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-2400755504637730424</id><published>2010-11-05T16:30:00.001-04:00</published><updated>2010-11-05T16:30:37.363-04:00</updated><title type='text'>default SSL enabled in Oracle Internet Application Server 10gr2 ias10gr2</title><content type='html'>So, if you dont have a directive for "data id="start-mode" value="ssl-enabled"" in your opmn.xml file then any directives in your ssl.conf don't get loaded due to the IfDefine SSL thats in by default the httpd.conf and ssl.conf files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-2400755504637730424?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2400755504637730424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2400755504637730424'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2010/11/default-ssl-enabled-in-oracle-internet.html' title='default SSL enabled in Oracle Internet Application Server 10gr2 ias10gr2'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1280147409898626315</id><published>2010-10-21T09:26:00.001-04:00</published><updated>2010-10-21T09:26:39.240-04:00</updated><title type='text'>Idiots in the industry.</title><content type='html'>&lt;meta content="text/html; charset=UTF-8" http-equiv="Content-Type"&gt;&lt;/meta&gt; &lt;meta content="text/css" http-equiv="Content-Style-Type"&gt;&lt;/meta&gt; &lt;title&gt;&lt;/title&gt; &lt;meta content="Cocoa HTML Writer" name="Generator"&gt;&lt;/meta&gt; &lt;meta content="1038.32" name="CocoaVersion"&gt;&lt;/meta&gt; &lt;style type="text/css"&gt;p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 11.0px Helvetica; color: #141414; background-color: #f0f0f0}&lt;/style&gt;   &lt;br /&gt;&lt;div class="p1"&gt;"You can buy 10 idiots to perform the tasks of what 2-3 highly qualified individuals can, IF customers don't care."&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1280147409898626315?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1280147409898626315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1280147409898626315'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2010/10/idiots-in-industry.html' title='Idiots in the industry.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6603956178118783098</id><published>2010-06-24T16:36:00.000-04:00</published><updated>2010-06-24T16:36:32.395-04:00</updated><title type='text'>SELinux, Oracle, and RedHat Enterprise Linux revisited...</title><content type='html'>Ran into some more issues with SELinux and Oracle. We have some libraries stored in another location that are compiled with -fpic -shared (CFLAGS) and the program linking to it wasn't, and neither are any of the other libraries it links to (provided by Oracle... 10gr2 DB software)&lt;br /&gt;&lt;br /&gt;SELinux is set to enforcing, but targeted.&lt;br /&gt;&lt;br /&gt;So whats the fix...Well you either set all the libraries to a textrelocatable context ala &lt;strong&gt;chcon -t texrel_shlib_t /u01/app/oracle/product/10.2/client/lib/*.so&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;for 64bit. Then, like I ran into with using an external php as it tries to call oracle libraries, you&amp;nbsp; must set the exec stack... &lt;b&gt;execstack -c /path/to/library.so&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ok, thats one way to do it..&lt;br /&gt;The other is to `setsebool -P allow_execmod=1` to allow execmods across relocatable text...&lt;br /&gt;&lt;br /&gt;Thats how I did it...because Oracle can't compile their libraries right, and my DBA was tired of waiting...I'd prefer to not have to do this at all though eh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6603956178118783098?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6603956178118783098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6603956178118783098'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2010/06/selinux-oracle-and-redhat-enterprise.html' title='SELinux, Oracle, and RedHat Enterprise Linux revisited...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5876475997921661602</id><published>2009-12-03T19:32:00.000-05:00</published><updated>2009-12-03T19:32:23.214-05:00</updated><title type='text'>SELinux, Apache and PHP 5.</title><content type='html'>Recently at work we hired a contractor to come in and do some work.&amp;nbsp; The department that hired him requested a machine for him. Instead of giving the guy admin access on a CentOS machine, I decided he could run everything in user space.&amp;nbsp; Thats fine...and I figured I'd duplicate the environment he'd use just so I could make sure it would work.&amp;nbsp; I don't like to provision machines and give anyone but myself or my system administrators admin access.&lt;br /&gt;&lt;br /&gt;The guy wanted PHP5, Apache 2 (I used 2.2), Moodle (Some Courseware php program), and PostgreSQL.&lt;br /&gt;&lt;br /&gt;Everything compiled without a hitch (mostly, since I had to look up what all php modules he needed compiled in...also added Suhosin for good measure since who knows what this guy will be doing.)&lt;br /&gt;&lt;br /&gt;After fighting a bit with PHP modules I then discovered that SELinux was denying access to libphp5.so in the apache httpd/modules directory.&lt;br /&gt;&lt;br /&gt;This was an error : "cannot restore segment prot after reloc: Permission denied" - Of course, disabling SELinux fixed this...but I dont always want to disable SELinux...&lt;br /&gt;&lt;br /&gt;Someone suggested running execstack against libphp5.so to enable a flag on the file so SELinux would let Apache load the module...That didn't work.&lt;br /&gt;&lt;br /&gt;I'll update this post later with some answers...I hope. For now, I'm leaving the office.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5876475997921661602?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5876475997921661602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/12/selinux-apache-and-php-5.html#comment-form' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5876475997921661602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5876475997921661602'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/12/selinux-apache-and-php-5.html' title='SELinux, Apache and PHP 5.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1906371748330265237</id><published>2009-11-27T10:21:00.000-05:00</published><updated>2009-11-27T10:21:06.428-05:00</updated><title type='text'>yum rollback feature / rpm rollback feature</title><content type='html'>Doing some upgrades this week on a production system and don't want anything to break...So, I looked into this.&lt;br /&gt;&lt;br /&gt;One of the least-known secrets about &lt;i&gt;rpm&lt;/i&gt; is that it can rollback (undo) package changes. It can take a fair bit of storage space to track the information necessary for rollback, but since storage is cheap, it’s worthwhile enabling this feature on most systems.&lt;br /&gt;Here are cut-to-the-chase directions on using this feature:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;     To configure &lt;i&gt;yum&lt;/i&gt; to save rollback information, add the line &lt;tt&gt;tsflags=repackage&lt;/tt&gt; to &lt;i&gt;/etc/yum.conf&lt;/i&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;     To configure command-line &lt;i&gt;rpm&lt;/i&gt; to do the same thing, add the line &lt;tt&gt;%_repackage_all_erasures 1&lt;/tt&gt; to &lt;i&gt;/etc/rpm/macros&lt;/i&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;     Install, erase, and update packages to your heart’s content, using &lt;i&gt;pup&lt;/i&gt;, &lt;i&gt;pirut&lt;/i&gt;, &lt;i&gt;yumex&lt;/i&gt;, &lt;i&gt;yum&lt;/i&gt;, &lt;i&gt;rpm&lt;/i&gt;, and the &lt;i&gt;yum&lt;/i&gt; automatic update service.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;If/when you want to rollback to a previous state, perform an &lt;i&gt;rpm&lt;/i&gt; update with the &lt;tt&gt;–rollback&lt;/tt&gt; option followed by a date/time specification. Some examples: &lt;tt&gt;rpm -Uhv –rollback ‘9:00 am’&lt;/tt&gt;, &lt;tt&gt;rpm -Uhv –rollback ‘4 hours ago’&lt;/tt&gt;, &lt;tt&gt;rpm -Uhv –rollback ‘december 25′&lt;/tt&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1906371748330265237?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1906371748330265237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/yum-rollback-feature-rpm-rollback.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1906371748330265237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1906371748330265237'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/yum-rollback-feature-rpm-rollback.html' title='yum rollback feature / rpm rollback feature'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1584872234118479727</id><published>2009-11-13T16:22:00.002-05:00</published><updated>2009-11-13T16:22:42.520-05:00</updated><title type='text'>php5 / suhosin extension (not patch) on CentOS or RHEL</title><content type='html'>Red Hat / CentOS Linux Install Suhosin PHP 5 Protection Security Patch&lt;div id="container"&gt;&lt;div id="page"&gt;&lt;div id="content_box"&gt;&lt;div class="hfeed" id="content"&gt;&lt;div class="post-1765 post hentry category-apache category-centos category-lighttpd category-linux category-php category-redhat-and-friends category-security category-fedora-linux tag-centos-suhosin tag-open-source-application tag-php-core tag-protection-security tag-rhel-suhosin tag-security-patch tag-suhosin tag-vulnerabilities tag-zend-engine tag-zend-technologies post_box top" id="post-1765"&gt;&lt;div class="headline_area"&gt;      &lt;div class="headline_meta"&gt;&lt;br /&gt;&lt;span&gt;&lt;a href="http://www.cyberciti.biz/faq/rhel-linux-install-suhosin-php-protection/#comments" rel="nofollow"&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="format_text entry-content"&gt; &lt;div style="float: right; margin-left: 5px; margin-top: 0px;"&gt;&lt;a href="http://www.cyberciti.biz/faq/category/php/" title="See all PHP related FAQ"&gt;&lt;img border="0" src="http://figs.cyberciti.biz/3rdparty/php-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: red;"&gt;Q.&lt;/span&gt; Wordpress and many other open source application developers asks users to protect PHP apps using Suhosin patch to get protection from the full exploit. Suhosin is an advanced protection system for PHP installations. It was designed to protect your servers from various attacks. How do I install Suhosin under RHEL / CentOS / Fedora Linux?&lt;br /&gt;&lt;span id="more-1765"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="float: right; margin-left: 5px; margin-top: 0px;"&gt;&lt;a href="http://www.cyberciti.biz/faq/category/redhat-and-friends/" title="See all Redhat/CentOS/Fedora Core related FAQ"&gt;&lt;img border="0" src="http://figs.cyberciti.biz/3rdparty/rhlogo.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: #009900;"&gt;A.&lt;/span&gt; Suhosin was designed to protect your servers against a number of well known problems in PHP applications and on the other hand against potential unknown vulnerabilities within these applications or the PHP core itself including wordpress and many other open source php based apps.&lt;br /&gt;&lt;h2&gt;Install Suhosin as extension&lt;/h2&gt;Download latest version of Suhosin, enter:&lt;br /&gt;&lt;code&gt;# cd /opt&lt;br /&gt;# wget http://download.suhosin.org/suhosin-0.9.27.tgz&lt;/code&gt;&lt;br /&gt;Make sure you have php-devel installed:&lt;br /&gt;&lt;code&gt;# yum install php-devel&lt;/code&gt;&lt;br /&gt;&lt;h3&gt;Compile Suhosin under PHP 5 and RHEL / CentOS Linux&lt;/h3&gt;Type the following commands:&lt;br /&gt;&lt;code&gt;# cd suhosin-0.9.27&lt;br /&gt;# phpize&lt;br /&gt;#./configure&lt;br /&gt;# make&lt;br /&gt;# make install&lt;/code&gt;&lt;br /&gt;&lt;h3&gt;Configure Suhosin&lt;/h3&gt;Type the following command to create Suhosin configuration file:&lt;br /&gt;&lt;code&gt;# echo 'extension=suhosin.so' &amp;gt; /etc/php.d/suhosin.ini &lt;/code&gt;&lt;br /&gt;&lt;h3&gt;Restart web server&lt;/h3&gt;Type the following command to restart httpd:&lt;br /&gt;&lt;code&gt;# service httpd restart&lt;/code&gt;&lt;br /&gt;If you are using lighttpd, enter:&lt;br /&gt;&lt;code&gt;# service lighttpd restart&lt;/code&gt;&lt;br /&gt;&lt;h3&gt;Verify Suhosin installation&lt;/h3&gt;Type the following command:&lt;br /&gt;&lt;code&gt;$ php -v&lt;/code&gt;&lt;br /&gt;Sample output:&lt;br /&gt;&lt;pre&gt;PHP 5.1.6 (cli) (built: Jun 12 2008 05:02:36)&lt;br /&gt;Copyright (c) 1997-2006 The PHP Group&lt;br /&gt;Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies&lt;br /&gt;    with XCache v1.2.2, Copyright (c) 2005-2007, by mOo&lt;br /&gt;    with &lt;span style="color: red;"&gt;Suhosin v0.9.27&lt;/span&gt;, Copyright (c) 2007, by SektionEins GmbH&lt;/pre&gt;You can find more information by running phpinfo():&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: black; font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://www.php.net/phpinfo"&gt;&lt;span style="color: #000066;"&gt;phpinfo&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Sample output:&lt;br /&gt;&lt;br /&gt;&lt;div class="wp-caption alignnone" id="attachment_1771" style="width: 510px;"&gt;&lt;a href="http://www.cyberciti.biz/faq/wp-content/uploads/2008/09/suhosin-php-security.png"&gt;&lt;img alt="Fig.01: Suhosin information and settings displayed by phpinfo()." class="size-full wp-image-1771" height="552" src="http://www.cyberciti.biz/faq/wp-content/uploads/2008/09/suhosin-php-security.png" title="Suhosin information and settings displayed by phpinfo()." width="500" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Fig.01: Suhosin information and settings displayed by phpinfo()&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="comments"&gt;&lt;form action="http://www.cyberciti.biz/faq/wp-comments-post.php" id="commentform" method="post"&gt;&lt;br /&gt;&lt;center&gt;&lt;div id="adslargerect"&gt;&lt;div id="load-adslargerect"&gt;&lt;a href="http://ad.doubleclick.net/click;h=v8/38e4/0/0/%2a/n;44306;0-0;0;38935165;4252-336/280;0/0/0;u=idgt-29404131_1258140564,114d99831c04f82,none,;%7Eaopt=2/1/5e/0;%7Esscs=%3f" target="_blank"&gt;&lt;img alt="Click here to find out more!" border="0" src="http://s0.2mdn.net/viewad/817-grey.gif" /&gt;&lt;/a&gt;&lt;noscript&gt;&amp;lt;a href="http://simplyguide.com/r/www/delivery/ck.php?oaparams=2__bannerid=31__zoneid=19__cb=60e3591730__oadest=http://a.collective-media.net/jump/idgt.linuxopensource/article_below;sec=article;fold=below;tile=4;sz=336x280;ord=123456789?" target="_blank"&amp;gt;&amp;lt;img src="http://a.collective-media.net/ad/idgt.linuxopensource/article_below;sec=article;fold=below;tile=4;sz=336x280;ord=123456789?" width="336" height="280" border="0" alt=""&amp;gt;&amp;lt;/a&amp;gt;&lt;/noscript&gt; &lt;noscript&gt;&amp;lt;a target='_blank' href='http://simplyguide.com/r/www/delivery/ck.php?n=2c8a12b'&amp;gt;&amp;lt;img border='0' alt='' src='http://simplyguide.com/r/www/delivery/avw.php?zoneid=19&amp;amp;amp;n=2c8a12b' /&amp;gt;&amp;lt;/a&amp;gt;&lt;/noscript&gt; &lt;/div&gt;&lt;/div&gt;&lt;/center&gt;&lt;small&gt;&lt;div class="post_tags"&gt;Tagged as: &lt;a href="http://www.cyberciti.biz/faq/tag/centos-suhosin/" rel="tag"&gt;centos suhosin&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/open-source-application/" rel="tag"&gt;open source application&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/php-core/" rel="tag"&gt;php core&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/protection-security/" rel="tag"&gt;protection security&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/rhel-suhosin/" rel="tag"&gt;rhel suhosin&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/security-patch/" rel="tag"&gt;security patch&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/suhosin/" rel="tag"&gt;suhosin&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/vulnerabilities/" rel="tag"&gt;vulnerabilities&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/zend-engine/" rel="tag"&gt;zend engine&lt;/a&gt;, &lt;a href="http://www.cyberciti.biz/faq/tag/zend-technologies/" rel="tag"&gt;zend technologies&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/small&gt;     &lt;/form&gt;&lt;/div&gt;&lt;div class="prev_next post_nav"&gt;       &lt;div class="previous"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="sidebars"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--var seriesdropdown = document.getElementById("orgseries_dropdown");if (seriesdropdown) {  function onSeriesChange() {  if ( seriesdropdown.options[seriesdropdown.selectedIndex].value &gt; 0 ) {   location.href = "http://www.cyberciti.biz/faq/series/"+seriesdropdown.options[seriesdropdown.selectedIndex].attributes.getNamedItem('class').value;  }    }    seriesdropdown.onchange = onSeriesChange;}--&gt;&lt;/script&gt;   &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--[if lte IE 7]&gt; &lt;div id="ie_clear"&gt;&lt;/div&gt;&lt;![endif]--&gt; &lt;script src="http://simplyguide.com/r/www/delivery/spcjs.php?id=1" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://simplyguide.com/r/www/delivery/spc.php?zones=21%7C19%7C16%7C17%7C15%7C20%7C14%7C18%7C13%7C22%7C23&amp;amp;source=&amp;amp;r=41401972&amp;amp;charset=UTF-8&amp;amp;loc=http%3A//www.cyberciti.biz/faq/rhel-linux-install-suhosin-php-protection/&amp;amp;referer=http%3A//www.google.com/search%3Fq%3Dsuhosin+centos+php%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dorg.mozilla%3Aen-US%3Aofficial%26client%3Dfirefox-a" type="text/javascript"&gt;&lt;/script&gt;&lt;script src="http://simplyguide.com/r/www/delivery/fl.js" type="text/javascript"&gt;&lt;/script&gt;  &lt;script src="http://c.cyberciti.biz/cbzcache/js/jqads.js" type="text/javascript"&gt;&lt;/script&gt; &lt;script type="text/javascript"&gt;&lt;!--  function rotatenixCraftads(nixcraftAds){    $("#load-ads" + nixcraftAds).appendTo('#ads' + nixcraftAds)  }//--&gt;&lt;/script&gt; &lt;div style="display: none;"&gt;  &lt;/div&gt;&lt;script type="text/javascript"&gt;&lt;!--rotatenixCraftads('topage');//--&gt;&lt;/script&gt;  &lt;div style="display: none;"&gt;  &lt;/div&gt;&lt;script type="text/javascript"&gt;&lt;!--rotatenixCraftads('toprect');//--&gt;&lt;/script&gt;  &lt;div style="display: none;"&gt; &lt;div id="load-adstoprect2"&gt;  &lt;!-- Ad_slot --&gt; &lt;/div&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;&lt;!--rotatenixCraftads('toprect2');//--&gt;&lt;/script&gt;  &lt;div style="display: none;"&gt;  &lt;/div&gt;&lt;script type="text/javascript"&gt;&lt;!--rotatenixCraftads('whitepapers');//--&gt;&lt;/script&gt;  &lt;div style="display: none;"&gt;  &lt;/div&gt;&lt;script type="text/javascript"&gt;&lt;!--rotatenixCraftads('largerect');//--&gt;&lt;/script&gt;    &lt;script type="text/javascript"&gt;var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));&lt;/script&gt;&lt;script src="http://www.google-analytics.com/ga.js" type="text/javascript"&gt;&lt;/script&gt; &lt;script type="text/javascript"&gt;var pageTracker = _gat._getTracker("UA-108650-1");pageTracker._initData();pageTracker._trackPageview();&lt;/script&gt;     &lt;!-- Dynamic Page Served (once) in 0.174 seconds --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1584872234118479727?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1584872234118479727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/php5-suhosin-extension-not-patch-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1584872234118479727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1584872234118479727'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/php5-suhosin-extension-not-patch-on.html' title='php5 / suhosin extension (not patch) on CentOS or RHEL'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-4577108730249500655</id><published>2009-11-03T13:34:00.000-05:00</published><updated>2009-11-03T13:34:15.665-05:00</updated><title type='text'>setup bridging br0 eth0 on Centos or RHEL for KVM virtual machines</title><content type='html'>There were several places online I could've visited to help me get bridging going on my system...They all seemed to be written for a home user though.&lt;br /&gt;&lt;br /&gt;I recently setup a new CentOS 5.4 workstation on a machine here at work, and have been planning on moving everything over to that from my Mac Management station. Currently using a Macbook Pro as a management station but I'd like to free it up to do other things...&lt;br /&gt;&lt;br /&gt;Also I wanted to do some KVM virtualizing because thats how RedHat does it, and thats our vendor...so...&lt;br /&gt;&lt;br /&gt;For starters, I needed to let any VM's I created have bridged access to the network... This was probably the most difficult part, because it was just a mixed-bag when it came to how other people had done it. Here's how I did it, and it works for me.&lt;br /&gt;&lt;br /&gt;The interface is an Intel gigabit card (wasn't supported until 5.3 out of the box!), so 1 physical interface formerly known as eth0.&lt;br /&gt;&lt;br /&gt;`yum install bridge-utils` will install the proper utilities to enable bridging, and should also enable the kernel module on most distros.&lt;br /&gt;&lt;br /&gt;I guess the tricky thing is, when you use bridging, you're actually kind of saying "ok bye eth0, we're going to replace you with br0 and then let br0 hand out access to any other interfaces" - This is hard for some people to grasp...&lt;br /&gt;&lt;br /&gt;So goto /etc/sysconfig/network-scripts and `cp ifcfg-eth0 ifcfg-br0`&lt;br /&gt;&lt;br /&gt;Then edit ifcfg-br0 to contain the following information:&lt;br /&gt;DEVICE=br0&lt;br /&gt;BOOTPROTO=static&lt;br /&gt;ONBOOT=yes&lt;br /&gt;NETMASK=255.255.255.0&lt;br /&gt;IPADDR=x.x.x.x&lt;br /&gt;GATEWAY= x.x.x.1&lt;br /&gt;TYPE=Bridge&lt;br /&gt;USERCTL=no&lt;br /&gt;IPV6INIT=no&lt;br /&gt;PEERDNS=yes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then edit ifcfg-eth0, it should just have&lt;br /&gt;DEVICE=eth0&lt;br /&gt;ONBOOT=yes&lt;br /&gt;BRIDGE=br0&lt;br /&gt;&lt;br /&gt;-&lt;br /&gt;You should then reboot. your main interface will have become br0, and eth0 will just be sitting there...waiting...for something.&lt;br /&gt;&lt;br /&gt;Anyway,&lt;br /&gt;You can use brctl show to show the current bridges on your system, and it gets more complicated from there on out.&lt;br /&gt;&lt;br /&gt;You can then assign eth0 to virtual machines in the Virt Manager and the vm will use that as its bridge access. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-4577108730249500655?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/4577108730249500655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/setup-bridging-br0-eth0-on-centos-or.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4577108730249500655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4577108730249500655'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/setup-bridging-br0-eth0-on-centos-or.html' title='setup bridging br0 eth0 on Centos or RHEL for KVM virtual machines'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-2250232045132785653</id><published>2009-11-02T15:49:00.000-05:00</published><updated>2009-11-02T15:49:25.167-05:00</updated><title type='text'>pidgin, otr, and random number generation</title><content type='html'>on a new centos plus workstation (5.4) i was trying to IM with pidgin and otr with my friends. we use OTR for private communication.&lt;br /&gt;&lt;br /&gt;the key generation was failing, hanging actually, strace showed some problem with timeouts and /dev/urandom.&lt;br /&gt;&lt;br /&gt;On the advice of someone who ran into the same problem, I used rngd to feed /dev/urandom into /dev/random&lt;br /&gt;&lt;br /&gt;rngd -o /dev/urandom -r /dev/random&lt;br /&gt;&lt;br /&gt;This worked and key generation completed successfully. Joy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-2250232045132785653?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/2250232045132785653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/pidgin-otr-and-random-number-generation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2250232045132785653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2250232045132785653'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/11/pidgin-otr-and-random-number-generation.html' title='pidgin, otr, and random number generation'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-7574150738670862997</id><published>2009-10-14T11:12:00.002-04:00</published><updated>2009-10-14T11:13:14.073-04:00</updated><title type='text'>Pam Update, security pam_limits and 64 bit libs</title><content type='html'>ok, so, you have an x64 server and you updated pam, and you want to use pam_limits - cool story. until you try to login...and you're like, why isn't it working? because you added the line:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;session required /lib/security/pam_limits.so&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;to /etc/pam.d/login&lt;br /&gt;&lt;br /&gt;but you CAN login remotely and you check your log files and see 'Module unknown' when someone tries to login locally. This is because you're a 64bit server using a 32bit library...from /lib...so change that line to&lt;br /&gt;&lt;br /&gt;&lt;b&gt;session required /lib64/security/pam_limits.so&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Then local logins work. =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-7574150738670862997?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/7574150738670862997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/10/pam-update-security-pamlimits-and-64.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7574150738670862997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7574150738670862997'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/10/pam-update-security-pamlimits-and-64.html' title='Pam Update, security pam_limits and 64 bit libs'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-8489495256109350049</id><published>2009-10-13T09:41:00.000-04:00</published><updated>2009-10-13T09:41:23.140-04:00</updated><title type='text'>Updated on SSH Key authentication.</title><content type='html'>Public key authentication is great, as most of us have known for years, but I'm still in the middle of converting everyone to it who use the systems where I work.&amp;nbsp; Its actually a pretty big task since so many people do have to connect into our servers in order to get information...and if those accounts cannot connect then...well, stuff starts breaking.&lt;br /&gt;&lt;br /&gt;We've done really well and our systems are really stable, of course they're still running HP Unix, but the new systems that are on their way into production are RedHat Linux (RHEL 5), so we have our work cut out for us. No problem -- They seem to be quite resilient and stable.&amp;nbsp; I wish we could get some Oracle on BSD. Grr.&lt;br /&gt;&lt;br /&gt;Anyway, a lot of interesting changes going on in the workplace right now, so, I'll leave those for another time. Just wanted to give a quick update to all the readers out there... I'm still alive. Thanks for your emails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-8489495256109350049?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/8489495256109350049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/10/updated-on-ssh-key-authentication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8489495256109350049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8489495256109350049'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/10/updated-on-ssh-key-authentication.html' title='Updated on SSH Key authentication.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-4401434604175272709</id><published>2009-09-18T16:51:00.000-04:00</published><updated>2009-09-18T16:51:15.272-04:00</updated><title type='text'>SSH and SSH Key Pair Authentication instead of Passwords</title><content type='html'>Well, some of the users where I work were wanting to know what makes key authentication better than password authentication... Its a difficult thing to explain when people are unaware of the advantages of key auth, and the risks of password authentication. I suppose I try to explain it away with "this will actually make it simpler in the case of a compromise" ... So I may post more about this later, but a general reasoning behind this is described well by some PuTTY documentation.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;a href="" name="i0"&gt;&lt;/a&gt;Public key authentication - an introduction&lt;/h2&gt;Public key authentication is an alternative means of identifying yourself to a login server, instead of typing a password. It is more secure and more flexible, but more difficult to set up. &lt;br /&gt;In conventional password authentication, you prove you are who you claim to be by proving that you know the correct password. The only way to prove you know the password is to tell the server what you think the password is. This means that if the server has been hacked, or &lt;a href="" name="i1"&gt;&lt;/a&gt;&lt;em&gt;spoofed&lt;/em&gt; (see &lt;a href="http://tartarus.org/%7Esimon/putty-snapshots/htmldoc/Chapter2.html#gs-hostkey"&gt;section 2.2&lt;/a&gt;), an attacker can learn your password. &lt;br /&gt;Public key authentication solves this problem. You generate a &lt;a href="" name="i2"&gt;&lt;/a&gt;&lt;em&gt;key pair&lt;/em&gt;, consisting of a &lt;a href="" name="i3"&gt;&lt;/a&gt;public key (which everybody is allowed to know) and a &lt;a href="" name="i4"&gt;&lt;/a&gt;private key (which you keep secret and do not give to anybody). The private key is able to generate &lt;a href="" name="i5"&gt;&lt;/a&gt;&lt;em&gt;signatures&lt;/em&gt;. A signature created using your private key cannot be forged by anybody who does not have that key; but anybody who has your public key can verify that a particular signature is genuine. &lt;br /&gt;So you generate a key pair on your own computer, and you copy the public key to the server. Then, when the server asks you to prove who you are, PuTTY can generate a signature using your private key. The server can verify that signature (since it has your public key) and allow you to log in. Now if the server is hacked or spoofed, the attacker does not gain your private key or password; they only gain one signature. And signatures cannot be re-used, so they have gained nothing. &lt;br /&gt;There is a problem with this: if your private key is stored unprotected on your own computer, then anybody who gains access to &lt;em&gt;that&lt;/em&gt; will be able to generate signatures as if they were you. So they will be able to log in to your server under your account. For this reason, your private key is usually &lt;a href="" name="i6"&gt;&lt;/a&gt;&lt;em&gt;encrypted&lt;/em&gt; when it is stored on your local machine, using a &lt;a href="" name="i7"&gt;&lt;/a&gt;passphrase of your choice. In order to generate a signature, PuTTY must decrypt the key, so you have to type your passphrase. &lt;br /&gt;This can make public-key authentication less convenient than password authentication: every time you log in to the server, instead of typing a short password, you have to type a longer passphrase. One solution to this is to use an &lt;a href="" name="i8"&gt;&lt;/a&gt;&lt;em&gt;authentication agent&lt;/em&gt;, a separate program which holds decrypted private keys and generates signatures on request. PuTTY's authentication agent is called &lt;a href="" name="i9"&gt;&lt;/a&gt;Pageant. When you begin a Windows session, you start Pageant and load your private key into it (typing your passphrase once). For the rest of your session, you can start PuTTY any number of times and Pageant will automatically generate signatures without you having to do anything. When you close your Windows session, Pageant shuts down, without ever having stored your decrypted private key on disk. Many people feel this is a good compromise between security and convenience. See &lt;a href="http://tartarus.org/%7Esimon/putty-snapshots/htmldoc/Chapter9.html#pageant"&gt;chapter 9&lt;/a&gt; for further details. &lt;br /&gt;There is more than one &lt;a href="" name="i10"&gt;&lt;/a&gt;public-key algorithm available. The most common is &lt;a href="" name="i11"&gt;&lt;/a&gt;RSA, but others exist, notably &lt;a href="" name="i12"&gt;&lt;/a&gt;DSA (otherwise known as DSS), the USA's federal Digital Signature Standard. The key types supported by PuTTY are described in &lt;a href="http://tartarus.org/%7Esimon/putty-snapshots/htmldoc/Chapter8.html#puttygen-keytype"&gt;section 8.2.2&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-4401434604175272709?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/4401434604175272709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/ssh-and-ssh-key-pair-authentication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4401434604175272709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4401434604175272709'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/ssh-and-ssh-key-pair-authentication.html' title='SSH and SSH Key Pair Authentication instead of Passwords'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-2620981893278890662</id><published>2009-09-18T11:09:00.002-04:00</published><updated>2009-09-18T11:09:45.488-04:00</updated><title type='text'>sudo, su, and you. oh, and root. and some tips...</title><content type='html'>&lt;div class="info"&gt;&lt;a href="http://www.freebsd.org/cgi/man.cgi?query=sudo&amp;amp;sektion=8" title="FreeBSD man page search for sudo, section 8"&gt;&lt;tt class="man" xmlns:xlink="http://www.w3.org/1999/xlink"&gt;sudo(8)&lt;/tt&gt;&lt;/a&gt; executes commands as a different user on Unix systems, as allowed by the &lt;tt class="file"&gt;sudoers&lt;/tt&gt; configuration file. Commands run via &lt;tt class="cmd"&gt;sudo&lt;/tt&gt; are &lt;a href="http://sial.org/howto/logging/"&gt;logged via syslog&lt;/a&gt;, providing an audit trail. While &lt;tt class="cmd"&gt;sudo&lt;/tt&gt; &lt;a href="http://xkcd.com/c149.html"&gt;may not work on your friends&lt;/a&gt;, I consider it essential to system administration.&lt;br /&gt;&lt;/div&gt;&lt;ul class="list"&gt;&lt;li&gt;&lt;a href="http://www.courtesan.com/sudo/sudo.html"&gt;&lt;tt class="cmd"&gt;sudo&lt;/tt&gt; homepage&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sial.org/howto/cfengine/examples/sudoers/"&gt;Managing &lt;tt class="file"&gt;/etc/sudoers&lt;/tt&gt; with CFEngine&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="s1.1"&gt;Alternatives&lt;/a&gt;&lt;/h3&gt;&lt;div class="info"&gt;Consider also &lt;a href="http://sourceforge.net/projects/sudosh/"&gt;&lt;tt class="cmd"&gt;sudosh&lt;/tt&gt;&lt;/a&gt;, or special &lt;tt class="cmd"&gt;logbash&lt;/tt&gt; versions of the shell that log all commands. &lt;em class="em"&gt;Never use the unsafe and unlogged &lt;tt class="cmd"&gt;sudo -s&lt;/tt&gt;, &lt;tt class="cmd"&gt;sudo -i&lt;/tt&gt;, and &lt;tt class="cmd"&gt;su&lt;/tt&gt; commands&lt;/em&gt;. Between &lt;tt class="cmd"&gt;sudo&lt;/tt&gt; and proper &lt;a href="http://sial.org/howto/cfengine/"&gt;configuration management&lt;/a&gt;, logging in as &lt;tt class="code"&gt;root&lt;/tt&gt; should be a very rare occasion.&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;a href="" name="s2"&gt;List Commands&lt;/a&gt;&lt;/h2&gt;&lt;div class="info"&gt;To see what commands can be run on a system, issue &lt;tt class="cmd"&gt;sudo -l&lt;/tt&gt;. Depending on the &lt;tt class="file"&gt;sudoers&lt;/tt&gt; configuration, this may prompt for the user’s password.&lt;br /&gt;&lt;/div&gt;&lt;div class="data-shell"&gt;$ &lt;kbd&gt;sudo -l&lt;/kbd&gt;&lt;br /&gt;User admin may run the following commands on this host:&lt;br /&gt;(ALL) NOPASSWD: ALL&lt;br /&gt;&lt;/div&gt;&lt;div class="info"&gt;If &lt;tt class="code"&gt;root&lt;/tt&gt; is allowed to run &lt;tt class="cmd"&gt;sudo&lt;/tt&gt;, one can inspect what commands another user may run:&lt;br /&gt;&lt;/div&gt;&lt;div class="data-shell"&gt;$ &lt;kbd&gt;sudo sudo -u someotheruser sudo -l&lt;/kbd&gt;&lt;br /&gt;User someotheruser may run the following commands on this host:&lt;br /&gt;(ALL) NOPASSWD: /usr/sbin/cleanup-logs&lt;br /&gt;&lt;/div&gt;&lt;div class="info"&gt;If administrators are allowed to &lt;tt class="cmd"&gt;sudo&lt;/tt&gt; to any other user, this can be done directly via:&lt;br /&gt;&lt;/div&gt;&lt;div class="data-shell"&gt;$ &lt;kbd&gt;sudo -u someotheruser sudo -l&lt;/kbd&gt;&lt;br /&gt;User someotheruser may run the following commands on this host:&lt;br /&gt;(ALL) NOPASSWD: /usr/sbin/cleanup-logs&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;a href="" name="s3"&gt;Configuration&lt;/a&gt;&lt;/h2&gt;&lt;div class="info"&gt;The &lt;tt class="file"&gt;sudoers&lt;/tt&gt; configuration file uses &lt;a href="http://en.wikipedia.org/wiki/EBNF"&gt;Extended Backus-Naur Form (EBNF)&lt;/a&gt;, which is flexible but complex. For an overview, see the &lt;a href="http://www.freebsd.org/cgi/man.cgi?query=sudoers&amp;amp;sektion=5" title="FreeBSD man page search for sudoers, section 5"&gt;&lt;tt class="man" xmlns:xlink="http://www.w3.org/1999/xlink"&gt;sudoers(5)&lt;/tt&gt;&lt;/a&gt; documentation.&lt;br /&gt;&lt;/div&gt;&lt;ul class="list"&gt;&lt;li&gt;Always use &lt;a href="http://www.freebsd.org/cgi/man.cgi?query=visudo&amp;amp;sektion=8" title="FreeBSD man page search for visudo, section 8"&gt;&lt;tt class="man" xmlns:xlink="http://www.w3.org/1999/xlink"&gt;visudo(8)&lt;/tt&gt;&lt;/a&gt;.&lt;/li&gt;&lt;div class="info"&gt;The &lt;tt class="cmd"&gt;visudo&lt;/tt&gt; command should be used to edit the &lt;tt class="file"&gt;sudoers&lt;/tt&gt; data. Otherwise, errors or permissions problems may crop up randomly. If building a complex &lt;tt class="file"&gt;sudoers&lt;/tt&gt; file using &lt;a href="http://sial.org/howto/cfengine/"&gt;configuration management software&lt;/a&gt;, sanity check the resulting data with &lt;tt class="cmd"&gt;visudo -f tempsudoers -c&lt;/tt&gt; before moving it into production use.&lt;/div&gt;&lt;li&gt;Last entry wins&lt;/li&gt;&lt;div class="info"&gt;The last matching rule in &lt;tt class="file"&gt;sudoers&lt;/tt&gt; wins; that is, if a &lt;tt class="code"&gt;NOPASSWD&lt;/tt&gt; entry is followed by an entry that requires the implicit &lt;tt class="code"&gt;PASSWD&lt;/tt&gt;, the user will be prompted to enter their password.&lt;/div&gt;&lt;div class="data"&gt;ALL ALL=(ALL) NOPASSWD: ALLALL ALL=(ALL) ALL&lt;/div&gt;&lt;div class="data-shell"&gt;$ &lt;kbd&gt;sudo -l&lt;/kbd&gt;User admin may run the following commands on this host:(ALL) NOPASSWD: ALL(ALL) ALL$ &lt;kbd&gt;sudo -k; sudo /bin/ls&lt;/kbd&gt;Password:&lt;/div&gt;&lt;div class="info"&gt;To avoid this problem, place &lt;tt class="code"&gt;NOPASSWD&lt;/tt&gt; entries after any entries that require a password. The following requires passwords for all commands excepting &lt;tt class="cmd"&gt;xinetd&lt;/tt&gt; service changes on a &lt;a href="http://www.redhat.com/"&gt;RedHat Linux&lt;/a&gt; system:&lt;/div&gt;&lt;div class="data"&gt;%wheel ALL=(ALL) ALL%wheel ALL=NOPASSWD: /sbin/service xinetd *&lt;/div&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="s3.1"&gt;Disallow Shell Access&lt;/a&gt;&lt;/h3&gt;&lt;div class="info"&gt;Use the following configuration to avoid needless use of unsafe and unlogged shells. Encourage users to avoid launching a root shell, and reserve a special &lt;tt class="cmd"&gt;logbash&lt;/tt&gt; shell that logs all commands for the rare occasions a root shell is needed.&lt;br /&gt;&lt;/div&gt;&lt;div class="data"&gt;&lt;span class="comment"&gt;# specify full list of shells and login commands here&lt;/span&gt;&lt;br /&gt;Cmnd_Alias SHELLS= /bin/sh, /bin/ksh, /bin/bash, /bin/zsh, \&lt;br /&gt;/bin/csh, /bin/tcsh, \&lt;br /&gt;/usr/bin/login, /usr/bin/su&lt;br /&gt;&lt;br /&gt;%wheel  ALL=(ALL)       ALL, !SHELLS&lt;br /&gt;&lt;/div&gt;&lt;div class="info"&gt;If the configuration is correct, a user attempting to gain shell access will be properly rejected:&lt;br /&gt;&lt;/div&gt;&lt;div class="data-shell"&gt;$ &lt;kbd&gt;sudo -s&lt;/kbd&gt;&lt;br /&gt;Sorry, user jdoe is not allowed to execute '/bin/zsh' as root on …&lt;br /&gt;$ &lt;kbd&gt;sudo -i&lt;/kbd&gt;&lt;br /&gt;Sorry, user jdoe is not allowed to execute '/bin/sh' as root on …&lt;br /&gt;$ &lt;kbd&gt;sudo su&lt;/kbd&gt;&lt;br /&gt;Sorry, user jdoe is not allowed to execute '/usr/bin/su' as root on …&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-2620981893278890662?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/2620981893278890662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/sudo-su-and-you-oh-and-root-and-some.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2620981893278890662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2620981893278890662'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/sudo-su-and-you-oh-and-root-and-some.html' title='sudo, su, and you. oh, and root. and some tips...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-2795785123482325695</id><published>2009-09-17T10:40:00.001-04:00</published><updated>2009-09-17T15:10:01.631-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openssh'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='key'/><category scheme='http://www.blogger.com/atom/ns#' term='generation'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='convert'/><title type='text'>OpenSSH and SSH.COM Key generation - Some Concerns...</title><content type='html'>&lt;div class="entry"&gt;&lt;div class="snap_preview"&gt;Where I work some people use a very old commercial SSH Client - Its from circa 2002 and its really not that great.&amp;nbsp; So we're switching to key based auth -- This brings some problems about.&amp;nbsp; Some of my users will be using this antiquated client which generates some ugly keys. I'd prefer everything be openssh based. So, I found some information about this on someones blog, and I decided I would share it here on my blog, and leave it here for my reference as well as yours! Happy converting.&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;Connecting two server running different type of SSH can be nightmare if you does not know how to convert the key. In this tutorial, I will try to explain on how to convert the public key from OpenSSH to SSH2 and SSH2 to OpenSSH. To convert the key, it must be done in OpenSSH server.&lt;br /&gt;&lt;u&gt;&lt;b&gt;Convert OpenSSH key to SSH2 key&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run the OpenSSH version of ssh-keygen on your OpenSSH public key to convert it into the format needed by SSH2 on the remote machine. &lt;b&gt;This must be done on the system running OpenSSH.&lt;/b&gt;&lt;br /&gt;#ssh-keygen -e -f ~/.ssh/id_dsa.pub &amp;gt; ~/.ssh/id_dsa_ssh2.pub&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;b&gt;Convert SSH2 key to OpenSSH key&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Run the OpenSSH version of ssh-keygen on your ssh2 public key to convert it into the format needed by OpenSSH. &lt;b&gt;This needs to be done on the system running OpenSSH.&lt;/b&gt;&lt;br /&gt;#ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub &amp;gt; ~/.ssh/id_dsa_1024_a_openssh.pub&lt;/li&gt;&lt;/ul&gt;&lt;span id="more-249"&gt;&lt;/span&gt;Steps involved to produce and convert the keys.&lt;br /&gt;&lt;b&gt;OpenSSH&lt;/b&gt;&lt;br /&gt;To generate an OpenSSH sshv2 key&lt;br /&gt;$ ssh-keygen -t dsa -f newkey&lt;br /&gt;Generating public/private dsa key pair.&lt;br /&gt;Enter passphrase (empty for no passphrase):&lt;br /&gt;Enter same passphrase again:&lt;br /&gt;Your identification has been saved in newkey.&lt;br /&gt;Your public key has been saved in newkey.pub.&lt;br /&gt;The key fingerprint is:&lt;br /&gt;c6:db:3a:ff:4c:79:a7:d8:cb:be:82:e8:9d:db:8c:e9 brad@eta&lt;br /&gt;To export to ssh.com&lt;br /&gt;$ ssh-keygen -e -f newkey.pub&lt;br /&gt;—- BEGIN SSH2 PUBLIC KEY —-&lt;br /&gt;Comment: “1024-bit DSA, converted from OpenSSH by brad@eta”&lt;br /&gt;AAAAB3NzaC1kc3MAAACBAJ7QKkrLoOE9TNPVmKVedk1GAr/S+Cruq3/GtjRnxvJqbBbfne&lt;br /&gt;lWYUC+vbHc5a+7bgRsQfCgoCeGKH5wGD4CDWQMhy2XYomnGf1gUC86Hq77/Noqa02N441E&lt;br /&gt;FSTIEoNlU2aYi8zwVQKlgP6e22mG9sK7zSaGX639ctaigHuST8qPAAAAFQC2az8dfxHkkD&lt;br /&gt;ZAEw+RcvRn3cpXFQAAAIEAgYpPs6d+Kyw37ZaBarlMEaZoEfrxhUZ44SN+KoqBZYpSVwyH&lt;br /&gt;J+/RB0zVUizXCmZ5RhYSsYZ57Iixx1bBmBxogaEh5d7xxUpg/9Xctf94Jsf7vxccjZ4XYA&lt;br /&gt;RrVikq/0L9fuKOmo4ET9iAf+GL7w2u5gzxxZr+xX5jw/A7907lOCwAAACAMoHHk0o1XkG+&lt;br /&gt;yeaPtuwbrHshGqTjpOUkJ/AYuQ8OBuVAOdqse1di9JpeHko26G0zoH3N+nDHMGdYYTNHzR&lt;br /&gt;NYRd2q20ztcAP52crZo1rtpNdvs6c+RTEIgoP3oYh1e1+rg70tWKIW3R/NYB39CESHoyqs&lt;br /&gt;AJ7vzOPm0iUOd36YECY=&lt;br /&gt;—- END SSH2 PUBLIC KEY —-&lt;br /&gt;&lt;b&gt;SSH&lt;/b&gt;&lt;br /&gt;To generate a key:&lt;br /&gt;$ ssh-keygen&lt;br /&gt;Generating 2048-bit dsa key pair&lt;br /&gt;1 oOo.oO&lt;br /&gt;Key generated.&lt;br /&gt;2048-bit dsa, marshalb@obelix.cqu.edu.au, Tue Jul 15 2003 13:53:34 +1000&lt;br /&gt;Passphrase :&lt;br /&gt;Again&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;br /&gt;Private key saved to /usr/users/staff/m/marshalb/.ssh2/id_dsa_2048_b&lt;br /&gt;Public key saved to /usr/users/staff/m/marshalb/.ssh2/id_dsa_2048_b.pub&lt;br /&gt;To convert from ssh.com to OpenSSH (using OpenSSH ssh-keygen):&lt;br /&gt;$ ssh-keygen -i -f id_dsa_2048_b.pub&lt;br /&gt;ssh-dss AAAAB3NzaC1kc3MAAAEBAKueha6mfr5OUcscc88lmQUBBgYSZ08htHFaYzke2N&lt;br /&gt;5WG6ql1NgwQsyY2mMRxvvGckBeInx2GvRlz1+izDs5p4UGhkMzG8qOoT2y2vLwTFQyxi4I&lt;br /&gt;XET1e0E8VYC0dcLfs5Zg6RxEY7GA5FiydS6dceuPnLJgCYDfyb9Qbk4rVEvREODo8dV/KR&lt;br /&gt;lZxecEgaeKOO7ZnEzaIVPRCVb6U6EaRtZvxKfGnNFI957AfZ+Hqevz1IeQNDCp00EmaNli&lt;br /&gt;8Ow4rjOPlH7o818r35Ea8mMoV0hkirNQ25zf/Z1LvCS3649537YDi/SVmMMpGCvT93w/TR&lt;br /&gt;vk5RKlwVVy+TH52C8/MKEAAAAVAOuDCV61LvfKz0bd8hYEJ/gGof9XAAABAQCFRhlpWtVO&lt;br /&gt;hTxcWcrnZp9EbbVRZO16St5TPjL86khb7b/VjScOAgt0tslHwtEEQzImv1xRkk6ZQ1o9pv&lt;br /&gt;Azb1fMZrZMGIy9zUXvL0v6LNXxCxN9YIjx14OXYfH8EIQDZJGRJoxHvEvUVjv3lHnTuxbd&lt;br /&gt;Krcbagvakxvgjq1wVyEueilO+g+WhJm+Q+XIYRl0TK9qtsAVFmzxBxT5USZFJ+1kbG7ipp&lt;br /&gt;fFSGWRd3KPUCVQ8iGO3IMjtIlfcuGOArbKB06kMlxsdjNjhcEIHtR0jpaEeB2X+HrVScQE&lt;br /&gt;oXG4S8YkiIExlIvjhrVr571BTOuO9H5VHt4CtKUxeXxKZWslulYwAAABAHm3zlMsXxPL/H&lt;br /&gt;Oq29qf7Lk90b7El+j19E2UkyssfSu6+/k4bFf6ax2n3yEn31S5bUdNvgqmlEjdERc4SkU6&lt;br /&gt;5b5LW2ZI1v7kRoegG+bD2Q21N9Rv/lwS7CTprenKiMMRJ8TU7FMIVT3zEZkV+etC7cbaN+&lt;br /&gt;09GoiFTt+h7IDmo7onlo64oSMrcc+xt++ZUzENTVBgDoS92jlpnELkyJqZgb1/fdEPT6wR&lt;br /&gt;j132yBxWLqDGmbp9msmY1us+XNDY8isF80u9yTTXGTskOtCSaeavDDtPOKN5ZR20sHpIBg&lt;br /&gt;t6zd6mm/zKD6OZo14BLSJr7ldwSRzNNYMtkLnNyFSYxAIrm9Y=&lt;br /&gt;You can then use the output in authorized_keys file on an openssh box.&lt;br /&gt;&lt;b&gt;OpenSSH v2 -&amp;gt; SSH v2&lt;/b&gt;&lt;br /&gt;On the OpenSSH box, create a DSA key via the following:&lt;br /&gt;$ ssh-keygen -t dsa&lt;br /&gt;Export the key into ssh.com v2 format:&lt;br /&gt;$ ssh-keygen -e -f ~/.ssh/id_dsa.pub &amp;gt; newPubKey&lt;br /&gt;Copy the converted ssh key to the ssh.com server&lt;br /&gt;$ scp newPubKey server:.ssh2/id_dsa.pub&lt;br /&gt;On the server, tell the ssh.com server that the public key is allowed:&lt;br /&gt;echo “Key id_dsa.pub” &amp;gt;&amp;gt; ~/.ssh2/authorization&lt;br /&gt;&lt;b&gt;SSH v2 -&amp;gt; OpenSSH v2&lt;/b&gt;&lt;br /&gt;On the ssh.com box, generate a DSA key:&lt;br /&gt;$ ssh-keygen&lt;br /&gt;Copy the generated key to the openssh box:&lt;br /&gt;$ scp ~/.ssh2/id_dsa_1024_a.pub server:.ssh&lt;br /&gt;Convert the public key to openssh format and append to authorized_keys:&lt;br /&gt;$ ssh-keygen -i -f id_dsa_1024_a.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;br /&gt;On the ssh.com box setup the private key:&lt;br /&gt;$ echo “IdKey id_dsa_1024_a” &amp;gt;&amp;gt; ~/.ssh2/identification&lt;br /&gt;&lt;b&gt;SSH v2 -&amp;gt; SSH v2&lt;/b&gt;&lt;br /&gt;On the ssh.com client, generate a DSA key:&lt;br /&gt;$ ssh-keygen&lt;br /&gt;Copy the generated key to the server:&lt;br /&gt;$ scp ~/.ssh2/id_dsa_1024_a.pub server:.ssh2&lt;br /&gt;On the server, tell the ssh.com server that the public key is allowed:&lt;br /&gt;$ echo “Key id_dsa._1024_a.pub” &amp;gt;&amp;gt; ~/.ssh2/authorization&lt;br /&gt;On the ssh.com client setup the private key:&lt;br /&gt;$ echo “IdKey id_dsa_1024_a” &amp;gt;&amp;gt; ~/.ssh2/identification&lt;br /&gt;&lt;b&gt;OpenSSH v2 -&amp;gt; OpenSSH v2&lt;/b&gt;&lt;br /&gt;On the OpenSSH box, create a DSA key via the following:&lt;br /&gt;$ ssh-keygen -t dsa&lt;br /&gt;Copy the ssh key to the server&lt;br /&gt;$ scp ~/.ssh/id_dsa.pub server:.ssh/id_dsa.pub&lt;br /&gt;Add the key to the authorized_keys file on the server&lt;br /&gt;$ cat ~/.ssh/id_dsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-2795785123482325695?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/2795785123482325695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/openssh-and-sshcom-key-generation-some_17.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2795785123482325695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2795785123482325695'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/openssh-and-sshcom-key-generation-some_17.html' title='OpenSSH and SSH.COM Key generation - Some Concerns...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1174034159939102459</id><published>2009-09-14T14:00:00.001-04:00</published><updated>2009-09-17T15:10:01.616-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='proc'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='filesystem'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle on Linux needs access to /proc? Only for Enterprise Manager?</title><content type='html'>So, on some of our systems oracle runs as the oracle user, and the /proc filesystem is off limits for standard user accounts. This hasn't affected much...however I came across the error:&lt;br /&gt;Error retrieving information from EMD.  Exception: oracle.sysman.emSDK.emd.comm.MetricGetException: Could not open /proc/partitions&lt;br /&gt;&lt;br /&gt;today...Hrm. Wonder what thats hurting...Probably nothing as everything seems to be running properly.&lt;br /&gt;&lt;br /&gt;In addition...uname must be unrestricted in order for Oracle Wallet Manager (owm) to function. Probably lots of other java stuff too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1174034159939102459?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1174034159939102459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/oracle-on-linux-needs-access-to-proc_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1174034159939102459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1174034159939102459'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/oracle-on-linux-needs-access-to-proc_14.html' title='Oracle on Linux needs access to /proc? Only for Enterprise Manager?'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-8616958955598860211</id><published>2009-09-14T12:13:00.001-04:00</published><updated>2009-09-17T15:10:01.602-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='cobol'/><category scheme='http://www.blogger.com/atom/ns#' term='sudo'/><category scheme='http://www.blogger.com/atom/ns#' term='DBA'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='su'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='HPUX'/><category scheme='http://www.blogger.com/atom/ns#' term='variables'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Linux, sudo, and environment variables</title><content type='html'>Our DBA came to me and said he was having some problems with sudo. A little background, we recently upgraded our test systems to the latest version of RedHat Enterprise Linux.&amp;nbsp; We have a pretty complicated setup with Oracle and Fujitsu NetCOBOL and a lot of customizations for our site.&amp;nbsp; My latest round of updates with the systems prompted me to enact a new baseline security policy.&amp;nbsp; One of the features of this new baseline policy is that it requires us going to a new procedure for issuing super user commands... Used to we'd just su, as thats how it had always been done here on HPUX and other UNIX Operating Systems.&amp;nbsp; With little separation of duty due to such a small staff, the DBA and others have all frequently pitched in to help with administration tasks.&lt;br /&gt;&lt;br /&gt;Anyway, enforcing su provides a lot of benefit, even if it does mean we have to change the way we're doing some things.&amp;nbsp; Our system relies a lot upon environment variables being carried over from one environ to the other, and some of our system users and the tasks they perform depend largely upon those envars.&amp;nbsp; So, it came to pass that there is a directive in the sudoers file that allows (or, by default, disallows) environment variables passing through with sudo execution. This is "Default env_reset" - Changed to "Default !env_reset" to say ! = NO! Don't reset the envars when using sudo!&lt;br /&gt;&lt;br /&gt;This solved our issue, and the DBA was able to complete the upgrades.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-8616958955598860211?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/8616958955598860211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/linux-sudo-and-environment-variables_14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8616958955598860211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8616958955598860211'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/linux-sudo-and-environment-variables_14.html' title='Linux, sudo, and environment variables'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5444401599758786038</id><published>2009-09-11T08:43:00.001-04:00</published><updated>2009-09-17T15:10:01.589-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='att'/><category scheme='http://www.blogger.com/atom/ns#' term='curve'/><category scheme='http://www.blogger.com/atom/ns#' term='jailbreak'/><category scheme='http://www.blogger.com/atom/ns#' term='sms'/><category scheme='http://www.blogger.com/atom/ns#' term='ipod'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>The blackberry Curve 8300 - 83xx - Pretty cool.</title><content type='html'>I recently came across a free Blackberry Curve 8300 for ATT - a friend of a friend was getting an iPhone 3G (after she had become enamored with the iPod touch) and was just going to give it to him, fortunately for me he has Verizon not ATT or T-Mobile, and I said I'd offer him some money for it. He said "nonsense (nice!), I'll ask her if I can give it to you." So she said yes.&lt;br /&gt;&lt;br /&gt;The software that came with it was old, like it had never been updated. I later found out why. The synching/software interface for the blackberry is atrocious. I later found out too that you can do MOST things without synching. Such as over-the-airwaves App installs and stuff. Not to mention...Synching the blackberry to the computer is extremely slow. It took like 35 minutes just to do the software upgrade. The iPhone definitely has it beat in that arena.&lt;br /&gt;&lt;br /&gt;Anway, I'm a happy, Loyal, iPhone user (only because its unix in my pocket, and jailbroken..so I can do the things I need to do with MY computer - hopefully all of this carrier-lock in junk will be over soon.), but I was impressed with this little device, despite its stubbornness in wanting to charge. It seems to have some issues...I bought a car charger for my girlfriend for this device, and it seemed to charge straight away. When I hooked it up to the computer (much like I had found trying to synch it at work) - It was a mess of steps to get the thing recognized and charging.&amp;nbsp; Why can't I just plug the USB cable in and let it charge the battery. ARGH.&lt;br /&gt;&lt;br /&gt;Anyway, hopefully I can work on her Vista machine some more (i did the synching and initial software upgrade on an XP machine) and get it to recognize the device so she can charge it there, since my friend forgot to bring me the wall charger.&lt;br /&gt;&lt;br /&gt;Overall, I like the device. They're relatively inexpensive, though the data plan is more expensive than an iphone at 30$/month (35$/month if you want at least 200 txt messages...some are a requirement otherwise you're getting shafted at the .20/.30 cent per message mark. Lame.&lt;br /&gt;&lt;br /&gt;Its not an iPhone, but its not half bad either, and it has a large community support base as well. Once I got past a few of the quirks, everything seems to be OK and she seemed to pick it up pretty intuitively.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5444401599758786038?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5444401599758786038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/blackberry-curve-8300-83xx-pretty-cool_11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5444401599758786038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5444401599758786038'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/blackberry-curve-8300-83xx-pretty-cool_11.html' title='The blackberry Curve 8300 - 83xx - Pretty cool.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3506748723368717395</id><published>2009-09-04T14:20:00.001-04:00</published><updated>2009-09-17T15:10:01.574-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>unix security problems</title><content type='html'>so, you're in a meeting and you get asked to provide an account to a group thats not in your department. when you tell your friends they tell you to tell the people you work "if you're so good at security make your own account"&lt;br /&gt;&lt;br /&gt;that wouldn't go over well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3506748723368717395?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3506748723368717395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/unix-security-problems_04.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3506748723368717395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3506748723368717395'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/unix-security-problems_04.html' title='unix security problems'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-2917048930372968778</id><published>2009-09-03T16:33:00.001-04:00</published><updated>2009-09-17T15:10:01.560-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='command'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>session recording with 'script' in linux/unix hosts.</title><content type='html'>don't forget you can use the 'script' command 'script output.log' to record all commands you type.&lt;br /&gt;you can use this as a reference to see what you've done in the session ( such as wanting to record all file permission changes that you make in a session )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-2917048930372968778?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/2917048930372968778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/session-recording-with-in-linuxunix_03.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2917048930372968778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2917048930372968778'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/09/session-recording-with-in-linuxunix_03.html' title='session recording with &amp;#39;script&amp;#39; in linux/unix hosts.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5649993291817588884</id><published>2009-08-26T12:31:00.002-04:00</published><updated>2009-09-17T15:10:01.540-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='OAS'/><category scheme='http://www.blogger.com/atom/ns#' term='httpd'/><category scheme='http://www.blogger.com/atom/ns#' term='root'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Enable Oracle Application Server to run on port &lt;1024 on HPUX</title><content type='html'>&lt;div class="subhead2"&gt;Below are the instructions, probably a little too detailed, on how to enable oracle to start httpd as root then fork to user specified in httpd.conf (em -&amp;gt; advanced properties -&amp;gt; httpd.conf) - For most people, Since Oracle App server is just a modified apache...Task 1 is the only thing you really have to do. You can then add the port in EM, and add the vhost directive in either ssl.conf or whatever file you're sourcing vhosts from.&lt;/div&gt;&lt;div class="subhead2"&gt;&lt;/div&gt;&lt;div class="subhead2"&gt;--&lt;/div&gt;&lt;div class="subhead2"&gt;&lt;/div&gt;&lt;div class="subhead2"&gt;Task 1: Enable &lt;a href="http://www.blogger.com/post-create.g?blogID=3853124588782850379" id="sthref312" name="sthref312"&gt;&lt;/a&gt;Oracle HTTP Server to Run as Root for Ports Set to Less Than 1024 (Unix Only)&lt;/div&gt;If you are on a UNIX system and you are changing the Listen port to a number less than 1024, perform these steps before you change the Oracle HTTP Server Listen port.&lt;br /&gt;By default, Oracle HTTP Server runs as a non-root user (the user that installed Oracle Application Server). On UNIX systems, if you change the Oracle HTTP Server Listen port number to a value less than 1024, you must enable Oracle HTTP Server to run as root, as follows:&lt;br /&gt;&lt;ol start="1" type="1"&gt;&lt;li&gt; Log in as root.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Run the following commands in the middle-tier Oracle home:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="oac_no_warn" xml:space="preserve"&gt;cd ORACLE_HOME/Apache/Apache/bin&lt;br /&gt;chown root .apachectl&lt;br /&gt;chmod 6750 .apachectl&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=3853124588782850379" id="BABIGCHJ" name="BABIGCHJ"&gt;&lt;/a&gt; &lt;br /&gt;&lt;div class="subhead2"&gt;Task 2: Use the&lt;a href="http://www.blogger.com/post-create.g?blogID=3853124588782850379" id="sthref313" name="sthref313"&gt;&lt;/a&gt; portconfig Command to Change the Oracle HTTP Server Listen Ports&lt;/div&gt;Use the following procedure to change the Oracle HTTP Server HTTP or HTTPS listen port:&lt;br /&gt;&lt;ol start="1" type="1"&gt;&lt;li&gt; Set the ORACLE_HOME environment variable to the home directory of the Oracle Application Server instance where the Oracle HTTP Server resides.&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="oac_no_warn" xml:space="preserve"&gt;(UNIX) setenv ORACLE_HOME /dev0/private/oracle/appserv1/ &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt; On UNIX systems, set the LD_LIBRARY_PATH, LD_LIBRARY_PATH_64, LIB_PATH, or SHLIB_PATH environment variables to the proper values. The actual environment variables and values that you must set depend on the type of your UNIX operating system.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Create an alias (on UNIX systems) to represent the &lt;code&gt;portconfig&lt;/code&gt; command.&lt;br /&gt;For example, to execute the command as an alias on UNIX systems, enter the following command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="oac_no_warn" xml:space="preserve"&gt;alias portconfig '$ORACLE_HOME/jdk/bin/java -cp &lt;br /&gt;$ORACLE_HOME/sysman/webapps/emd/WEB-INF/lib/emd.jar:&lt;br /&gt;$ORACLE_HOME/dcm/lib/dcm.jar:&lt;br /&gt;$ORACLE_HOME/sso/lib/ossoreg.jar&lt;br /&gt;oracle.sysman.ias.sta.tools.PortConfigCmdLine \!*'&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt; Use the newly created &lt;code&gt;portconfig&lt;/code&gt; command as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="oac_no_warn" xml:space="preserve"&gt;portconfig -oracleHome ORACLE_HOME &lt;br /&gt;-oldPort old_port &lt;br /&gt;-newPort new_port &lt;br /&gt;[-sso -url http://sso_host:port -user http_server_admin_user &lt;br /&gt;  [-site name_of_sso_partner_application]&lt;br /&gt;  [-admin mod_osso_admin_user]&lt;br /&gt;  [-vHost path_to_mod_osso_configuration_file]]&lt;br /&gt;[-webCache] [-debug]&lt;br /&gt;{-start | -restart}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;For example, on UNIX systems:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="oac_no_warn" xml:space="preserve"&gt;portconfig -oracleHome $ORACLE_HOME -oldPort 7777 -newPort 7778 -webCache&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5649993291817588884?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5649993291817588884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/enable-oracle-application-server-to-run_1293.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5649993291817588884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5649993291817588884'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/enable-oracle-application-server-to-run_1293.html' title='Enable Oracle Application Server to run on port &amp;lt;1024 on HPUX'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1503910229519734619</id><published>2009-08-26T11:45:00.002-04:00</published><updated>2009-09-17T15:10:01.514-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vswif'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ifconfig'/><category scheme='http://www.blogger.com/atom/ns#' term='interface'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><title type='text'>Changing VSWIF IP in VMWare ESX</title><content type='html'>Pretty nice post on esxcfg commands...&lt;br /&gt;&lt;br /&gt;Esxcfg command help &lt;br /&gt;&lt;div class="style56"&gt;&lt;/div&gt;&lt;div class="style56"&gt;&lt;u&gt;Esxcfg-firewall&lt;a href="http://www.blogger.com/post-edit.g?blogID=3853124588782850379&amp;amp;postID=5348615641339545474" id="EsxcfgFirewall" name="EsxcfgFirewall"&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;Description: Configures the service console firewall ports&lt;br /&gt;Syntax: esxcfg-firewall &lt;options&gt;&lt;br /&gt;&lt;br /&gt;Options:&lt;/options&gt;&lt;/div&gt;&lt;table border="0" cellpadding="0" style="width: 596px;"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;td class="style42" width="180"&gt;-q&lt;/td&gt;     &lt;td class="style44" width="400"&gt;Lists current settings&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-q &lt;service&gt;&lt;/service&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Lists settings for the specified service&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-q incoming|outgoing&lt;/td&gt;     &lt;td class="style44"&gt;Lists settings for non-required incoming/outgoing ports&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-s&lt;/td&gt;     &lt;td class="style44"&gt;Lists known services&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-l&lt;/td&gt;     &lt;td class="style44"&gt;Loads current settings&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-r&lt;/td&gt;     &lt;td class="style44"&gt;Resets all options to defaults&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-e &lt;service&gt;&lt;/service&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Allows specified service through the firewall (enables)&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-d &lt;service&gt;&lt;/service&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Blocks specified service (disables)&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-o &lt;port, tcp|udp,in|out,name=""&gt;&lt;/port,&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Opens a port&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-c &lt;port, tcp|udp,in|out=""&gt;&lt;/port,&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Closes a port previously opened by –o&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-h&lt;/td&gt;     &lt;td class="style44"&gt;Displays command help&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-allowincoming&lt;/td&gt;     &lt;td class="style44"&gt;Allow all incoming ports&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-allowoutgoing&lt;/td&gt;     &lt;td class="style44"&gt;Allow all outgoing ports&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-blockincoming&lt;/td&gt;     &lt;td class="style44"&gt;Block all non-required incoming ports (default value)&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-blockoutgoing&lt;/td&gt;     &lt;td class="style44"&gt;Block all non-required outgoing ports (default value)&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Default Services:&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" style="width: 596px;"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;td class="style42" width="180"&gt;AAMClient&lt;/td&gt;     &lt;td class="style44" width="400"&gt;Added by the vpxa RPM: Traffic between ESX Server hosts for VMware High Availability (HA) and EMC Autostart Manager – inbound and outbound TCP and UDP Ports 2050 – 5000 and 8042 – 8045&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;activeDirectorKerberos&lt;/td&gt;     &lt;td class="style44"&gt;Active Directory Kerberos - outbound TCPs Port 88 and 464&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;CIMHttpServer&lt;/td&gt;     &lt;td class="style44"&gt;First-party optional service: CIM HTTP Server - inbound TCP Port 5988&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;CIMHttpsServer&lt;/td&gt;     &lt;td class="style44"&gt;First-party optional service: CIM HTTPS Server - inbound TCP Port 5989&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;CIMSLP&lt;/td&gt;     &lt;td class="style44"&gt;First-party optional service: CIM SLP - inbound and outbound TCP and UDP Ports 427&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;commvaultDynamic&lt;/td&gt;     &lt;td class="style44"&gt;Backup agent: Commvault dynamic – inbound and outbound TCP Ports 8600 – 8619&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;commvaultStatic&lt;/td&gt;     &lt;td class="style44"&gt;Backup agent: Commvault static – inbound and outbound TCP Ports 8400 – 8403&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;ftpClient&lt;/td&gt;     &lt;td class="style44"&gt;FTP client - outbound TCP Port 21&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;ftpServer&lt;/td&gt;     &lt;td class="style44"&gt;FTP server - inbound TCP Port 21&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;kerberos&lt;/td&gt;     &lt;td class="style44"&gt;Kerberos - outbound TCPs Port 88 and 749&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;LicenseClient&lt;/td&gt;     &lt;td class="style44"&gt;FlexLM license server client - outbound TCP Ports 27000 and 27010&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;nfsClient&lt;/td&gt;     &lt;td class="style44"&gt;NFS client - outbound TCP and UDP Ports 111 and 2049 (0 – 65535)&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;nisClient&lt;/td&gt;     &lt;td class="style44"&gt;NIS client - outbound TCP and UDP Ports 111 (0 – 65535)&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;ntpClient&lt;/td&gt;     &lt;td class="style44"&gt;NTP client - outbound UDP Port 123&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;smbClient&lt;/td&gt;     &lt;td class="style44"&gt;SMB client - outbound TCP Ports 137 – 139 and 445&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;snmpd&lt;/td&gt;     &lt;td class="style44"&gt;SNMP services - inbound TCP Port 161 and outbound TCP Port 162&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;sshClient&lt;/td&gt;     &lt;td class="style44"&gt;SSH client - outbound TCP Port 22&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;sshServer&lt;/td&gt;     &lt;td class="style44"&gt;SSH server - inbound TCP Port 22&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;swISCSIClient&lt;/td&gt;     &lt;td class="style44"&gt;First-party optional service: Software iSCSI client - outbound TCP Port 3260&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;telnetClient&lt;/td&gt;     &lt;td class="style44"&gt;NTP client - outbound TCP Port 23&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;TSM&lt;/td&gt;     &lt;td class="style44"&gt;Backup agent: IBM Tivoli Storage Manager – inbound and outbound TCP Ports 1500&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;veritasBackupExec&lt;/td&gt;     &lt;td class="style44"&gt;Backup agent: Veritas BackupExec – inbound TCP Ports 10000 – 10200&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;veritasNetBackup&lt;/td&gt;     &lt;td class="style44"&gt;Backup agent: Veritas NetBackup – inbound TCP Ports 13720, 13732, 13734, and 13783&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;vncServer&lt;/td&gt;     &lt;td class="style44"&gt;VNC server - Allow VNC sessions 0-64: inbound TCP Ports 5900 – 5964&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;vpxHeartbeats&lt;/td&gt;     &lt;td class="style44"&gt;vpx heartbeats - outbound UDP Port 902&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Note: You can configure your own services in the file /etc/vmware/firewall/services.xml&lt;br /&gt;&lt;br /&gt;&lt;u&gt;esxcfg-firewall examples:&lt;/u&gt;&lt;br /&gt;Enable ssh client connections from the Service Console:&lt;br /&gt;# esxcfg-firewall -e sshClient&lt;br /&gt;Disable the Samba client connections:&lt;br /&gt;# esxcfg-firewall -d smbClient&lt;br /&gt;Allow syslog outgoing traffic:&lt;br /&gt;# esxcfg-firewall -o 514,udp,out,syslog&lt;br /&gt;Turn off the firewall:&lt;br /&gt;# esxcfg-firewall -allowIncoming&lt;br /&gt;# esxcfg-firewall -allowOutgoing&lt;br /&gt;Re-enable the firewall:&lt;br /&gt;# esxcfg-firewall -blockIncoming&lt;br /&gt;# esxcfg-firewall –blockOutgoing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Esxcfg-nics&lt;/u&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3853124588782850379&amp;amp;postID=5348615641339545474" id="EsxcfgNics" name="EsxcfgNics"&gt;&lt;/a&gt;&lt;br /&gt;Description: Prints a list of physical network adapters along with information on the driver, PCI device, and link state of each NIC. You can also use this command to control a physical network adapter’s speed and duplexing.&lt;br /&gt;Syntax: esxcfg-nics &lt;options&gt; [nic]&lt;br /&gt;&lt;br /&gt;Options:&lt;br /&gt;&lt;/options&gt; &lt;br /&gt;&lt;table border="0" cellpadding="0" style="width: 596px;"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;td class="style42" width="180"&gt;-s &lt;speed&gt; &lt;/speed&gt;&lt;/td&gt;     &lt;td class="style44" width="400"&gt;Set the speed of this NIC to one of 10/100/1000/10000. Requires a NIC parameter. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-d &lt;duplex&gt; &lt;/duplex&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Set the duplex of this NIC to one of 'full' or 'half'. Requires a NIC parameter. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-a&lt;/td&gt;     &lt;td class="style44"&gt;Set speed and duplex automatically. Requires a NIC parameter. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-l&lt;/td&gt;     &lt;td class="style44"&gt;Print the list of NICs and their settings. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-r&lt;/td&gt;     &lt;td class="style44"&gt;Restore the NICs configured speed/duplex settings. (Internal use only) &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-h&lt;/td&gt;     &lt;td class="style44"&gt;Displays command help &lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;u&gt;esxcfg-nics examples:&lt;/u&gt;&lt;br /&gt;Set the speed and duplex of a NIC (vmnic2) to 100/Full:&lt;br /&gt;esxcfg-nics -s 100 -d full vmnic2&lt;br /&gt;Set the speed and duplex of a NIC (vmnic2) to auto-negotiate:&lt;br /&gt;esxcfg-nics -a vmnic2 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Esxcfg-vswitch&lt;a href="http://www.blogger.com/post-edit.g?blogID=3853124588782850379&amp;amp;postID=5348615641339545474" id="EsxcfgVswitch" name="EsxcfgVswitch"&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;Description: Creates  and updates virtual machine (vswitch) network settings&lt;br /&gt;Syntax: esxcfg-vswitch &lt;options&gt; [vswitch[:ports]] &lt;br /&gt;&lt;br /&gt;Options:&lt;/options&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" style="width: 596px;"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;td class="style42" width="180"&gt;-a &lt;/td&gt;     &lt;td class="style44" width="410"&gt;Add a new virtual switch. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-d&lt;/td&gt;     &lt;td class="style44"&gt;Delete the virtual switch. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-l&lt;/td&gt;     &lt;td class="style44"&gt;List all the virtual switches. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-L &lt;pnic&gt; &lt;/pnic&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Set pnic as an uplink for the vswitch. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-U &lt;pnic&gt; &lt;/pnic&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Remove pnic from the uplinks for the vswitch. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-p &lt;portgroup&gt;&lt;/portgroup&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Specify a portgroup for operation. Use ALL for operation to work on all portgroups &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-v &lt;vlan id=""&gt; &lt;/vlan&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Set VLAN ID for portgroup specified by -p. 0 would disable the VLAN. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-c&lt;/td&gt;     &lt;td class="style44"&gt;Check to see if a virtual switch exists. Program outputs a 1 if it exists, 0 otherwise. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-A &lt;name&gt; &lt;/name&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Add a new portgroup to the virtual switch. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-D &lt;name&gt; &lt;/name&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Delete the portgroup from the virtual switch. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-C &lt;name&gt; &lt;/name&gt;&lt;/td&gt;     &lt;td class="style44"&gt;Check to see if a portgroup exists. Program outputs a 1 if it exists, 0 otherwise. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-r&lt;/td&gt;     &lt;td class="style44"&gt;Restore all virtual switches from the configuration file (Internal use only) &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td class="style42"&gt;-h&lt;/td&gt;     &lt;td class="style44"&gt;Displays command help &lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;u class="style47"&gt;&lt;br /&gt;esxcfg-vswitch examples:&lt;/u&gt;&lt;br /&gt;Add a pnic (vmnic2) to a vswitch (vswitch1):&lt;br /&gt;esxcfg-vswitch -L vmnic2 vswitch1    &lt;br /&gt;Remove a pnic (vmnic3) from a vswitch (vswitch0):&lt;br /&gt;esxcfg-vswitch -U vmnic3 vswitch0&lt;br /&gt;Create a portgroup (VM Network3) on a vswitch (vswitch1):&lt;br /&gt;esxcfg-vswitch -A "VM Network 3" vSwitch1&lt;br /&gt;Assign a VLAN ID (3) to a portgroup (VM Network 3) on a vswitch (vswitch1):&lt;br /&gt;esxcfg-vswitch -v 3 -p "VM Network 3" vSwitch1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Esxcfg-vswif&lt;a href="http://www.blogger.com/post-edit.g?blogID=3853124588782850379&amp;amp;postID=5348615641339545474" id="EsxcfgVswif" name="EsxcfgVswif"&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;Description: Creates and updates service console network settings. This command is used if you cannot manage the ESX Server host through the VI Client because of network configuration issues.&lt;br /&gt;Syntax: esxcfg-vswif &lt;options&gt; [vswif] &lt;br /&gt;&lt;/options&gt;&lt;br /&gt;Options:&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" style="width: 596px;"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;td class="style42" width="180"&gt;-a&lt;/td&gt;       &lt;td class="style44" width="410"&gt;Add vswif, requires IP parameters. Automatically enables interface. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-d&lt;/td&gt;       &lt;td class="style44"&gt;Delete vswif. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-l&lt;/td&gt;       &lt;td class="style44"&gt;List configured vswifs. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-e&lt;/td&gt;       &lt;td class="style44"&gt;Enable this vswif interface. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-s&lt;/td&gt;       &lt;td class="style44"&gt;Disable this vswif interface. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-p&lt;/td&gt;       &lt;td class="style44"&gt;Set the portgroup name of the vswif. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-i &lt;x.x.x.x&gt; or DHCP &lt;/x.x.x.x&gt;&lt;/td&gt;       &lt;td class="style44"&gt;The IP address for this vswif or specify DHCP to use DHCP for this address. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-n &lt;x.x.x.x&gt; &lt;/x.x.x.x&gt;&lt;/td&gt;       &lt;td class="style44"&gt;The IP netmask for this vswif. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-b &lt;x.x.x.x&gt; &lt;/x.x.x.x&gt;&lt;/td&gt;       &lt;td class="style44"&gt;The IP broadcast address for this vswif. (not required if netmask and ip are set) &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-c&lt;/td&gt;       &lt;td class="style44"&gt;Check to see if a virtual NIC exists. Program outputs a 1 if the given vswif exists, 0 otherwise. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-D&lt;/td&gt;       &lt;td class="style44"&gt;Disable all vswif interfaces. (WARNING: This may result in a loss of network connectivity to the Service Console) &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-E&lt;/td&gt;       &lt;td class="style44"&gt;Enable all vswif interfaces and bring them up. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-r&lt;/td&gt;       &lt;td class="style44"&gt;Restore all vswifs from the configuration file. (Internal use only) &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-h&lt;/td&gt;       &lt;td class="style44"&gt;Displays command help. &lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Note: You can set the Service Console default gateway by editing the /etc/sysconfig/network file or through the VI Client under Configuration, DNS &amp;amp; Routing. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;esxcfg-vswif examples:&lt;/u&gt;&lt;br /&gt;Change your Service Console (vswif0) IP and Subnet Mask:&lt;br /&gt;esxcfg-vswif -i 172.20.20.5 -n 255.255.255.0 vswif0&lt;br /&gt;Add a Service Console (vswif0):&lt;br /&gt;esxcfg-vswif -a vswif0 -p "Service Console" -i 172.20.20.40 -n 255.255.255.0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Esxcfg-route&lt;a href="http://www.blogger.com/post-edit.g?blogID=3853124588782850379&amp;amp;postID=5348615641339545474" id="EsxcfgRoute" name="EsxcfgRoute"&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;Description: Sets or retrieves the default VMkernel gateway route&lt;br /&gt;Syntax: esxcfg-route &lt;options&gt; [&lt;network&gt; [&lt;netmask&gt;] &lt;gateway&gt;]  &lt;br /&gt;&lt;network&gt; can be specified in 2 ways: as a single argument in &lt;network&gt;/&lt;mask&gt; format or as a &lt;network&gt; &lt;netmask&gt; pair. &lt;br /&gt;&lt;gateway&gt; is either an IP address or 'default' &lt;br /&gt;&lt;br /&gt;Options: &lt;/gateway&gt;&lt;/netmask&gt;&lt;/network&gt;&lt;/mask&gt;&lt;/network&gt;&lt;/network&gt;&lt;/gateway&gt;&lt;/netmask&gt;&lt;/network&gt;&lt;/options&gt;   &lt;br /&gt;&lt;table border="0" cellpadding="0" style="width: 596px;"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;td class="style42" width="180"&gt;-a&lt;/td&gt;       &lt;td class="style44" width="410"&gt;Add route to the VMkernel, requires network address (or 'default') and gateway IP address. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-d&lt;/td&gt;       &lt;td class="style44"&gt;Delete route from the VMkernel, requires network address (or 'default'). &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-l&lt;/td&gt;       &lt;td class="style44"&gt;List configured routes for the Service Console. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-r&lt;/td&gt;       &lt;td class="style44"&gt;Restore route setting to configured values on system start. (Internal use only) &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-h&lt;/td&gt;       &lt;td class="style44"&gt;Displays command help &lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;u&gt;&lt;br /&gt;esxcfg-route examples:&lt;/u&gt;&lt;br /&gt;Set the VMkernel default     gateway route:&lt;br /&gt;esxcfg-route 172.20.20.1&lt;br /&gt;Add a route to the VMkernel:&lt;br /&gt;esxcfg-route -a default 255.255.255.0 172.20.20.1    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Esxcfg-vmknic&lt;a href="http://www.blogger.com/post-edit.g?blogID=3853124588782850379&amp;amp;postID=5348615641339545474" id="EsxcfgVmknic" name="EsxcfgVmknic"&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;Description: Creates  and updates VMkernel TCP/IP settings for VMotion, NAS, and iSCSI&lt;br /&gt;Syntax: esxcfg-vmknic &lt;options&gt; [[portgroup]] &lt;br /&gt;&lt;br /&gt;Options:&lt;/options&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" style="width: 596px;"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;td class="style42" width="180"&gt;-a&lt;/td&gt;       &lt;td class="style44" width="410"&gt;Add a VMkernel NIC to the system, requires IP parameters and portgroup name. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-d&lt;/td&gt;       &lt;td class="style44"&gt;Delete VMkernel NIC on given portgroup. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-e&lt;/td&gt;       &lt;td class="style44"&gt;Enable the given NIC if disabled. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-D&lt;/td&gt;       &lt;td class="style44"&gt;Disable the given NIC if enabled. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-l&lt;/td&gt;       &lt;td class="style44"&gt;List VMkernel NICs. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-i &lt;x.x.x.x&gt; &lt;/x.x.x.x&gt;&lt;/td&gt;       &lt;td class="style44"&gt;The IP address for this VMkernel NIC. Setting an IP address requires that the -n option be given in same command. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-n &lt;x.x.x.x&gt; &lt;/x.x.x.x&gt;&lt;/td&gt;       &lt;td class="style44"&gt;The IP netmask for this VMkernel NIC. Setting the IP netmask requires that the -i option be given in the same command. &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-r&lt;/td&gt;       &lt;td class="style44"&gt;Restore VMkernel TCP/IP interfaces from configuration file. (Internal use only) &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td class="style42"&gt;-h&lt;/td&gt;       &lt;td class="style44"&gt;Displays command help &lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;u&gt;esxcfg-vmknic examples:&lt;/u&gt; &lt;br /&gt;Add a VMkernel NIC and set the IP and subnet mask:&lt;br /&gt;esxcfg-vmknic -a "VM Kernel" -i 172.20.20.19 -n 255.255.255.0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1503910229519734619?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1503910229519734619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/changing-vswif-ip-in-vmware-esx_869.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1503910229519734619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1503910229519734619'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/changing-vswif-ip-in-vmware-esx_869.html' title='Changing VSWIF IP in VMWare ESX'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-8964787752249416249</id><published>2009-08-26T08:22:00.002-04:00</published><updated>2009-09-17T15:10:01.475-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Serial Console on VMWare ESX</title><content type='html'>I primarily use HP ILO's on our DL360s. I never get ILO Advanced Pack..Its expensive, and I ues UNIX so, for my BSD and Linux machines I just use serial consoles... It beats buying the license...and I don't need the graphical stuff... Thats what X servers are for.&lt;br /&gt;&lt;br /&gt;Compiled this from a defunct wiki from some edu, but its pretty much common sense. Just wanted to document it for those who care ;)&lt;br /&gt;&lt;br /&gt;For an ESX Server:&lt;br /&gt;This is about enabling the console of ESX server to be a serial port. Running an IP KVM for ESX servers seems a really expensive thing to do, when it just needs a shell. &lt;br /&gt;&lt;br /&gt;This is a method I use for RHEL/CentOS. I had to modify it slightly for VMware ESX: &lt;br /&gt;Edit /boot/grub/grub.conf &lt;br /&gt;Add the following lines after "timeout=3" line &lt;br /&gt;&lt;br /&gt;serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 &lt;br /&gt;terminal --timeout=8 serial console&lt;br /&gt;&lt;br /&gt;* The first line tells GRUB to use the first serial port at a baud rate of 9600&lt;br /&gt;* The second line gives the user 8 seconds to decide where GRUB should output it's information. * Please adjust port number and speed as per your setup. &lt;br /&gt;&lt;br /&gt;Append the kernel entry in /boot/grub/grub.conf to add serial console: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;kernel /vmlinuz ro root=UUID=675026ae-e3ee-4340-8614-9173f59d5bfb mem=300M quiet console=ttyS0,9600 &lt;br /&gt;&lt;br /&gt;Edit /etc/inittab to add a new line for agetty. I placed this after the mingetty entries: &lt;br /&gt;&lt;br /&gt;s0:2345:respawn:/sbin/agetty -L -f /etc/issueserial 9600 ttyS0 vt100 &lt;br /&gt;&lt;br /&gt;Additional notes: - root logins are restricted over ttysX by default unless your ttysX is added to the securetty config. So, edit /etc/securettty and add your port to your config if you want to allow root logins. &lt;br /&gt;&lt;br /&gt;For a VM:&lt;br /&gt;To add a serial console to VMWare ESX, there's no way to do it either from the web console nor from their dinky vmware-console. There's just grayed out menu items that torment your soul leaving you with a bitter taste of unfulfilled possibilites. Yet there is hope! &lt;br /&gt;&lt;br /&gt;Here I add serial console 0. serial0.present = "TRUE" serial0.fileType = "file" serial0.fileName = "/tmp/console.debian26_dan" &lt;br /&gt;&lt;br /&gt;then add in your kernel boot options (ie, in /boot/grub/menu.lst) console=ttyS0,19200 &lt;br /&gt;like this: kernel /boot/vmlinuz root=/dev/sdc1 ro console=ttyS0,19200 console=tty0 &lt;br /&gt;&lt;br /&gt;now as you do crazy things to the kernel and crash it (ie, run zap), you can access your kernel log for debugging information in /tmp/console.debian26_dan. &lt;br /&gt;&lt;br /&gt;NOTE: this enables a serial console for a guest machine on ESX. It does not enable a serial console for the ESX system itself, for that see above. ;p&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-8964787752249416249?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/8964787752249416249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/serial-console-on-vmware-esx_277.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8964787752249416249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8964787752249416249'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/serial-console-on-vmware-esx_277.html' title='Serial Console on VMWare ESX'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5080778488334234114</id><published>2009-08-21T10:44:00.002-04:00</published><updated>2009-09-17T15:10:01.652-04:00</updated><title type='text'>it is the whole thing.</title><content type='html'>see subject. no comment. sigh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5080778488334234114?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5080778488334234114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/it-is-whole-thing_9841.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5080778488334234114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5080778488334234114'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/it-is-whole-thing_9841.html' title='it is the whole thing.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5893257070607390167</id><published>2009-08-18T10:15:00.002-04:00</published><updated>2009-09-17T15:10:01.876-04:00</updated><title type='text'>mpage!</title><content type='html'>so...i guess, i just screwed up when i was working with mpage before trying to get the fonts right. it appears now that Courier-Bold as a -F parameter is working. ;) Yay.&lt;br /&gt;&lt;br /&gt;That's how you get darker color, Bob!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5893257070607390167?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5893257070607390167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/mpage_4290.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5893257070607390167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5893257070607390167'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/mpage_4290.html' title='mpage!'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1434628310209813440</id><published>2009-08-17T19:09:00.002-04:00</published><updated>2009-09-17T15:10:01.493-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>cups-pdf, cups, RHEL, Linux, and EPEL repositories...</title><content type='html'>Soo...you want to add some other packages...&lt;br /&gt;OK!&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm'&lt;br /&gt;&lt;br /&gt;they should now be available in yum...in my case, cups-pdf.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1434628310209813440?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1434628310209813440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/cups-pdf-cups-rhel-linux-and-epel_2244.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1434628310209813440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1434628310209813440'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/cups-pdf-cups-rhel-linux-and-epel_2244.html' title='cups-pdf, cups, RHEL, Linux, and EPEL repositories...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-7522227553223628882</id><published>2009-08-16T15:27:00.002-04:00</published><updated>2009-09-17T15:10:01.419-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>using firefox 3.5.x in Linux ... Its not just that easy, apparently.</title><content type='html'>&lt;p&gt;I got tired of looking for a repo version and decided to get the bin pkg from Mozilla.&lt;/p&gt;&lt;p&gt;Here’s a really quick way to get 3.5.2 running on your Ubuntu or RHEL/CentOS system.&lt;/p&gt;  &lt;p&gt;I removed the Firefox 3.0 that shipped... In this case, with CentOS. This tutorial taken from some Ubuntu user's post/page...I forget.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Open up Terminal (Applications &gt; Accessories &gt; Terminal) and run the following commands:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;code&gt;cd /tmp&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;wget "http://download.mozilla.org/?product=firefox-3.5.2&amp;amp;os=linux&amp;amp;lang=en-US"&lt;/code&gt;&lt;br /&gt;Note: Your download link may be different depending on your country and language. I got the link by clicking the download link, canceling  the automatic download, right-clicking the “Your download should automatically begin in a few seconds, but if not, click here” link, and selecting Copy Link Location.&lt;/li&gt;&lt;li&gt;&lt;code&gt;tar xvjf firefox-*.bz2&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;sudo cp -r firefox /usr/lib/firefox-3.5.2&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;sudo mv /usr/bin/firefox /usr/bin/firefox.old&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;sudo ln -s /usr/lib/firefox-3.5.2/firefox /usr/bin/firefox-3.5.2&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;sudo ln -s /usr/bin/firefox-3.5.2 /usr/bin/firefox&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Close Firefox and then reopen. You should now be running Firefox 3.5.2.&lt;/p&gt; &lt;p&gt;If for whatever reason you’d like to switch back to your previous version of Firefox, simply run the following commands from Terminal:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;code&gt;sudo mv /usr/bin/firefox /usr/bin/firefox.bak&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;sudo mv /usr/bin/firefox.old /usr/bin/firefox&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-7522227553223628882?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/7522227553223628882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/using-firefox-35x-in-linux-its-not-just_9864.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7522227553223628882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7522227553223628882'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/using-firefox-35x-in-linux-its-not-just_9864.html' title='using firefox 3.5.x in Linux ... Its not just that easy, apparently.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1843056403729747321</id><published>2009-08-16T15:22:00.002-04:00</published><updated>2009-09-17T15:10:01.436-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>enable rpmfusion, epel for CentOS / RHEL5 to install other repos...</title><content type='html'>[root@caliban-centos ~]# su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm'&lt;br /&gt;&lt;br /&gt;[root@caliban-centos ~]# su -c 'rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm'&lt;br /&gt;&lt;br /&gt;- this should then allow software to be pulled from rpmfusion!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1843056403729747321?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1843056403729747321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/enable-rpmfusion-epel-for-centos-rhel5_801.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1843056403729747321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1843056403729747321'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/08/enable-rpmfusion-epel-for-centos-rhel5_801.html' title='enable rpmfusion, epel for CentOS / RHEL5 to install other repos...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1921015640943713127</id><published>2009-06-25T16:40:00.002-04:00</published><updated>2009-09-17T15:10:01.894-04:00</updated><title type='text'>homemade tend skin recipe.</title><content type='html'>Crush 18 tablets aspirin and dissolve in alcohol. Crush remaining 8 tablet aspirin and dissolve in witch hazel. Combine alcohol and witch hazel together. Pour into squeeze bottle. Make need to shake before each use, as aspirin may settle. Apply once daily after waxing or shaving to prevent and treat ingrown hairs.&lt;br /&gt;26 tablets uncoated aspirin, divided&lt;br /&gt;5 ½ oz. 70% rubbing alcohol&lt;br /&gt;2 ½ oz. witch hazel extract&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1921015640943713127?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1921015640943713127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/06/homemade-tend-skin-recipe_6065.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1921015640943713127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1921015640943713127'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/06/homemade-tend-skin-recipe_6065.html' title='homemade tend skin recipe.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1430237960974061307</id><published>2009-06-23T09:12:00.002-04:00</published><updated>2009-09-17T15:10:01.919-04:00</updated><title type='text'>From a "Best of Craigslist"</title><content type='html'>&lt;h2&gt;Dear Christians&lt;/h2&gt; &lt;hr /&gt;  Date: 2009-04-03,  5:02AM PDT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="userbody"&gt; In the following argument of nine premises, I will aim to convince you that Jesus of Nazareth was a fictional character, and not a real person. I do not intend to sway the beliefs of many of you, nor even budge them - I know this to be an impossibility, for if the religious mind is well-trained at anything, it is circumventing rational argument. I only intend to sew seeds of doubt, in the hopes that perhaps some of you will nurture them and let them grow. Here goes.&lt;br /&gt;&lt;br /&gt;1. Much, if not most, of the Bible is arguably fiction. Quit being so intellectually dishonest, Christians - this is the twenty-first century. That means the burden of proof is on YOU. If you make a claim about the universe, it is up to you to prove it is true, not the other way around. It is not up to us, the rest of the world, to prove your claims false - that is not scientific thinking, that is anti-scientific thinking. Because I am a man of my times, and believe in correcting ignorance, what I am doing here is out of courtesy to YOU, just as if I were to argue publicly that there is a Flying Spaghetti Monster orbiting Venus preparing to blow up Planet Earth, one of you would probably, out of simple human decency attempt to correct me and point me towards the truth. This is my way of doing that. Now, back to the Bible being fiction... that part's easy. Find me a snake with vocal chords, water that is dense enough for a human being to walk on, or a chemical process that converts complex carbohydrates to fish. Until then, you're out of luck, sucker. The evidence wins, and the evidence sides with me. These are invented stories... fictional dramas meant to impart some moral lesson. They are not real.&lt;br /&gt;&lt;br /&gt;2. Following point two: from an objective, scrutinizing view, there is no reason to believe one story in the Bible over another. We cannot honestly engage shades of truth here - either the books in the Bible are historically true or they are not. Since they almost ubiquitously contain material to make the scientific person skeptical, we can chance to say the same is true of the entire book: either it happened, or it didn't. Therefore, it is no less plausible to disbelieve the Jesus myth than the myth about Enoch the nine-hundred year old man or the creation myth wherein God pats the first humans out of clay. Here's a hint: humans, like all other complex organisms, reached their present condition by millions of years of natural selection through the self-preservation of certain greedy genes. We can observe this happening today; anti-biotic resistant bacteria are a good example. Plus, we've mapped the human genome - we know our ancestry, and it's simian. Even Pope John Paul II said evolution is a historical fact. People did not come from clay.&lt;br /&gt;&lt;br /&gt;3. By definition, intellect, or "reason" is the ability to revise one's beliefs in light of better argumentation. Taking simple, empirical data from the the world around you should make it easy to determine that the physical laws of the universe DO NOT CHANGE. It therefore stands to reason that "miracles" can only possible be one of two phenomena: A, an outside agent actually interfering with the laws of the universe; or B, hyperbolized coincidences. Considering the Bible was written in a time when allegory was the most common form of journalistic reporting and most people still believed spitting on a wound was an appropriate way to cure it, it is far more reasonable to assume the latter.&lt;br /&gt;&lt;br /&gt;*Side note: Seriously Hoss, let me clue you in on something: things that are impossible to do now - like walking on water, resuscitation after days of biological death, and wine magically turning into blood - were just as impossible 2,000 years ago. There's a much greater power in the universe than "belief." It's called "observation."&lt;br /&gt;&lt;br /&gt;4. To believe these stories, you must create strange rationalizations that do not hold up to true intellectual scrutiny. This brings us to the issue of honesty. Without deluding yourself, can you honestly answer the following questions? Such as, why doesn't God heal amputees? He heals everyone else miraculously, right? But neither you nor I have ever seen an amputee grow back a leg. Oh wait, God has a special plan for them. But isn't he supposed to be loving and just? What's with the discrimination, man? Or how about Jonah surviving in the belly of that whale? Wouldn't he be partially digested after three days? Maybe Baby Balooga had a slow metabolism?&lt;br /&gt;&lt;br /&gt;5. Following four, and this one is my favorite: if Jesus is the one true messiah, the only God, whom you shall hath no other gods before him, yada yada, how come so many gods DID come before him having nearly identical biographies? There are no less than two dozen god-men of the ancient Mediterranean whose birth was heralded by a bright star in the East (Sirius, for those who don't practice astronomy), who were also adored by wise men, walked on water, fed the hungry, resurrected the dead, were crucified and rose again, etc. Many even had the same birthday as Jesus - December 25th! Not coincidentally, this was the Roman Holiday of Saturnalia centuries before the clergy decided to call it Jesus' birthday. Surprise! Christians plagiarized earlier religions. I cannot spell it out any clearer than that. Knowing that, how can one believe anything Christian doctrine teaches? How do you even begin to separate what was invented from what was borrowed? You don't. The cold, hard truth is, it was an old story then, and it's an old story now. These messianic archetypes - the man that is god, the man who conquers death - existed long, long before Jesus came around. They were old news when soap was a cutting-edge technology, before written language was even invented. They are ancient fucking history. Jesus was not the antitype of these messianic figures, he was their distillation.&lt;br /&gt;&lt;br /&gt;7. Following point 6. If you are skeptical of this information (and you should be, as doubt is the seed of all knowing), investigate the matter for yourself. One hugely recurring problem I find when debating with Christians is that they either know very little about other religions or are ignorant of their existence entirely. This is counter-intuitive to me, and perhaps my own fault in failing to understand the religious mind. Shouldn't it be fairly crucial to make the most educated decision in choosing a religion, if practicing the "right" one is important to you? For example, you wouldn't want to choose a religion based on plagiarism, would you? Or one that literally absorbed every earlier belief system it encountered through endless politicizing or the diplomacy of the sword? Well, better crack those books then - there's a whole heap of gods who fit the Christ mold long before Christ. I suggest you begin by researching Mithra of Rome, Attis of Frigia, Dionysis of Greece, Krishna of India, and Horus of Egypt. The last should be of particular interest to you, as his mythology is almost an exact carbon copy of Jesus', right down to the twelve apostles and three-day rebound time after being murdered by jealous clergy. Though, I should point out that Horus was worshipped nearly 1000 years BEFORE Christianity began spreading through the Hebrew-populated Roman colonies. This should come as no surprise to you, as it's written right in the bible that the Hebrews came out of Egypt.&lt;br /&gt;&lt;br /&gt;8. On a more serious note. Western civilization may have been "built" on Judeo-Christian values (at least the "don't kill" and "don't steal" parts), but we have become a modern society and have adopted the scientific way of thinking. While the aforementioned values have indisputable merits, maintaining the dogma in its entirety is no longer necessary, especially when we consider the violence and segregation it has caused throughout the ages. Furthermore, philosophically speaking, Christian ethics are severely outdated. Since the Enlightenment, the Western World has seen far superior ethicists to Jesus of Nazareth. Kant and Mill, for example, created life-affirming ethical systems that can be applied to a wider range of people without destroying their culture or beliefs about where the universe came from and what kind of sex they should consider perverse. Truly, there is no reason to cling to the old way any longer. We have adopted science and reason in every other aspect of our lives... yet somehow we have retained Bronze Age ethics? It makes no sense. Why should we continue to believe it is better to be tribalists than to be humanists? This mentality is not compatible with a just, egalitarian society. Besides, Jesus may tell us to love one another, but he also says we should maintain the Old Testament in its entirety - no cherry-picking - which means we technically must condone rape, incest, slavery, and genocide (!). If we can do away with these parts (and we have), why not do away with the whole thing?&lt;br /&gt;&lt;br /&gt;9. In the grand scheme of things, it would be generally permissible for one to believe in Christian ethics if it were readily understood that Jesus was not a historical person, and the story is allegory. However, if you are a Christian, you probably do believe that Jesus was a real human being. This is a threat to both the advancement of science and the absolution of religious conflict in the world, two issues that are paramount to our survival as a species as our planet nears carrying capacity and is dangerously on the brink of overheating. It creates too slippery a slope for other theocratic nonsense to take hold; for example, tthe mindset that human beings can literally live after death (how many soldiers would we send to die if everyone believed this is the only life?); or that preserving the existence of cell clusters which bear no conceivable human traits is somehow a better aim than alleviating actual human suffering; or that sex is harmful, but killing, bigotry, and total obedience to clandestine authority are healthy practices; or that blood sacrifice is a value modern societies should endorse. But Jesus WAS a real person, you say! There's a plethora of evidence! No, not really, outside of the gospels. And those hardly count as "evidence." They are secondary sources at best. Here's why: if a historical Jesus really lived and died between 0 and 33 CE, then we know beyond a doubt that at least forty years passed before the earliest gospel - the one written by Mark - was scribed. Because the aforementioned gospel discusses the destruction of Solomon's temple, we know it was written in or sometime after 70 CE. Given the lifespan of the period, that means the author or authors were at best infants or young children when Jesus of Nazareth was supposed to have been crucified. Moreover, the gospel writers are not themselves mentioned in the gospels, and they make no claim to actually having met Jesus. None of the apostles who walked with Jesus nor anyone who even met him wrote accounts to that effect. Granted, there are certain mentions of a "Christ" in the writings of Mediterranean historians from that period (not Justin Martyr or Pontius Pilate - sorry, but those are proven forgeries). However, if are a serious Christian, these should be of little consideration to you, as you know "the Christ" is really a title that simply means "the Anointed," and was taken up by many rabbis of that time. In not ONE of these documents is a man named Jesus, or Yeshua of Nazareth mentioned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In conclusion, the gospels which discuss the life of Jesus of Nazareth are at best hearsay, almost certainly hyperbolized, and at worst complete fabrications. What we can determine beyond a doubt is that for at least four decades after his death, everyone in the world, including his sworn followers and students, simply forgot their messiah existed. If that doesn't cast on you a serious shade of doubt, then nothing will, and perhaps I'm not "the fool".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- A  &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;it's NOT ok to contact this poster with services or other commercial interests&lt;/li&gt;&lt;/ul&gt;  &lt;/div&gt; PostingID: 1104940994&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1430237960974061307?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1430237960974061307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/06/from-of-craigslist_8675.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1430237960974061307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1430237960974061307'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/06/from-of-craigslist_8675.html' title='From a &amp;quot;Best of Craigslist&amp;quot;'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-873676651101479858</id><published>2009-04-23T07:45:00.002-04:00</published><updated>2009-09-17T15:10:01.455-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Resetting OS Passwords! Just a good writeup for those interested. ;)</title><content type='html'>&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;br /&gt;Windows is still the most popular operating system, and the method used to discover the login password is the easiest. The program used is called Ophcrack, and it is free. Ophcrack is based on Slackware, and uses rainbow tables to solve passwords up to 14 characters in length. The time required to solve a password? Generally 10 seconds. The expertise needed? None. &lt;/p&gt; &lt;p&gt;Simply download the Ophcrack ISO and burn it to a CD (or load it onto a USB drive via UNetbootin). Insert the CD into a machine you would like to gain access to, then press and hold the power button until the computer shuts down. Turn the computer back on and enter BIOS at startup. Change the boot sequence to CD before HDD, then save and exit. &lt;/p&gt; &lt;p&gt;The computer will restart and Ophcrack will be loaded. Sit back and watch as it does all the work for your. Write down the password it gives you, remove the disc, restart the computer, and log in as if it were you own machine. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Mac&lt;/strong&gt;&lt;br /&gt;The second most popular operating system, OS X is no safer when it comes to password cracking then Windows. &lt;/p&gt; &lt;p&gt;The easiest method would be to use Ophcrack on this, also, as it works with Mac and Linux in addition to Windows. However, there are other methods that can be used, as demonstrated below.&lt;/p&gt; &lt;p&gt;If the Mac runs OS X 10.4, then you only need the installation CD. Insert it into the computer, reboot. When it starts up, select UTILITIES &gt; RESET PASSWORD. Choose a new password and then use that to log in. &lt;/p&gt; &lt;p&gt;If the Mac runs OS X 10.5, restart the computer and press COMMAND + S. When at the prompt, type:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;fsck -fy&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;mount -uw /&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServices.plist&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;dscl . -passwd /Users/UserName newpassword&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;That’s it. Now that the password is reset, you can login. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;br /&gt;Finally, there is Linux, an operating system quickly gaining popularity in mainstream, but not so common you’re likely to come across it. Though Mac and Linux are both based on Unix, it is easier to change the password in Linux than it is OS X. &lt;/p&gt; &lt;p&gt;To change the password, turn on the computer and press the ESC key when GRUB appears. Scroll down and highlight ‘Recovery Mode’ and press the ‘B’ key; this will cause you to enter ‘Single User Mode’. &lt;/p&gt; &lt;p&gt;You’re now at the prompt, and logged in as ‘root’ by default. Type ‘passwd’ and then choose a new password. This will change the root password to whatever you enter. If you’re interested in only gaining access to a single account on the system, however, then type ‘passwd username’ replacing ‘username’ with the login name for the account you would like to alter the password for. &lt;/p&gt; &lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;There you have it - that is how simple it is for someone to hack your password. It requires no technical skills, no laborious tasks, only simple words or programs. The moral of the story? Encrypt your data to keep it safe. Don’t use only a password, but actually encryption, such as Blowfish or AES-128. There are a number of programs that can do this - TrueCrypt for Windows, or the native encryption found on Ubuntu, creating a disk image in Mac, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-873676651101479858?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/873676651101479858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/04/resetting-os-passwords-just-good_5141.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/873676651101479858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/873676651101479858'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/04/resetting-os-passwords-just-good_5141.html' title='Resetting OS Passwords! Just a good writeup for those interested. ;)'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3977572911328720668</id><published>2009-04-18T18:06:00.002-04:00</published><updated>2009-09-17T15:10:01.947-04:00</updated><title type='text'>'08 nissan 350z - nogaro red paint code</title><content type='html'>the factory paint code for my nogaro red 350z is A41.&lt;br /&gt;&lt;br /&gt;...because i have to buy some touch up paint!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3977572911328720668?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3977572911328720668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/04/nissan-350z-nogaro-red-paint-code_9674.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3977572911328720668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3977572911328720668'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/04/nissan-350z-nogaro-red-paint-code_9674.html' title='&amp;#39;08 nissan 350z - nogaro red paint code'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-4790673201761525576</id><published>2009-04-12T20:45:00.002-04:00</published><updated>2009-09-17T15:10:01.965-04:00</updated><title type='text'>rEFIt - bootloader for the mac.</title><content type='html'>&lt;span style="font-weight: bold;"&gt;http://refit.sf.net&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The rEFIt Project  &lt;p&gt; rEFIt is a boot menu and maintenance toolkit for &lt;a href="http://www.intel.com/technology/efi/"&gt;EFI&lt;/a&gt;-based machines like the &lt;a href="http://www.apple.com/hardware/"&gt;Intel Macs&lt;/a&gt;. You can use it to boot multiple operating systems easily, including triple-boot setups with Boot Camp. It also provides an easy way to enter and explore the EFI pre-boot environment. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-4790673201761525576?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/4790673201761525576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/04/refit-bootloader-for-mac_5399.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4790673201761525576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4790673201761525576'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/04/refit-bootloader-for-mac_5399.html' title='rEFIt - bootloader for the mac.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-8574455145794997196</id><published>2009-03-27T12:20:00.002-04:00</published><updated>2009-09-17T15:10:01.985-04:00</updated><title type='text'>burn a playable dvd from video_ts in Mac OS X</title><content type='html'>&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="story-title" style="white-space: nowrap; padding-right: 5px; padding-left: 5px;" width="100%"&gt;Burn a playable DVD from a VIDEO_TS folder                &lt;br /&gt;&lt;span class="story-information"&gt;Thu, Jun 14 2007 at  7:30AM PDT • Submitted by  &lt;a class="storybyline" href="http://www.macosxhints.com/users.php?mode=profile&amp;amp;uid=1045919"&gt;                 gavynj&lt;/a&gt;                 &lt;/span&gt;                          &lt;/td&gt;                              &lt;td class="story-title" style="" width="10"&gt;                   &lt;a href="http://www.macosxhints.com/index.php?topic=unix" rel="category tag"&gt;&lt;br /&gt;&lt;/a&gt;               &lt;/td&gt;             &lt;/tr&gt;             &lt;!-- STORY TITLE  end   --&gt;                          &lt;!-- STORY        start --&gt;             &lt;tr&gt;               &lt;td class="story-box" colspan="2"&gt;                 &lt;table border="0" cellpadding="3" cellspacing="0" width="100%"&gt;                  &lt;tbody&gt;&lt;tr&gt;                     &lt;td&gt;                       &lt;div class="story"&gt;After searching the forums and trying various things, I still couldn't find a quick, reliable, free method of burning a VIDEO_TS folder to a pure UDF DVD, so that it would play in regular DVD players, as well trigger DVD Player to start up automatically. Anyway, as often is the case, Terminal had the answers. Just type in this command and change the paths to suit: &lt;pre&gt;&lt;code&gt;hdiutil makehybrid -udf -udf-volume-name DVD_NAME \&lt;br /&gt;-o MY_DVD.iso /path/to/VIDEO_TS/parent/folder&lt;/code&gt;&lt;/pre&gt;  Make sure that &lt;tt&gt;/path/to/VIDEO_TS/parent/folder&lt;/tt&gt; is the path to the folder &lt;i&gt;containing&lt;/i&gt; the VIDEO_TS folder, not the VIDEO_TS folder itself. Once the .iso file has been created, drag this to Disk Utility and hit the Burn button.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-8574455145794997196?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/8574455145794997196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/03/burn-playable-dvd-from-videots-in-mac_9287.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8574455145794997196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8574455145794997196'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/03/burn-playable-dvd-from-videots-in-mac_9287.html' title='burn a playable dvd from video_ts in Mac OS X'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1784194951276444865</id><published>2009-01-25T01:02:00.002-05:00</published><updated>2009-09-17T15:10:02.002-04:00</updated><title type='text'>some things someones father taught them...</title><content type='html'>&lt;h2&gt;Things my father taught me&lt;/h2&gt; &lt;hr /&gt;  Date: 2008-04-13,  9:33AM PDT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; The measurement of my finger from the tip to the first joint is 1 inch...depth for planting peas.&lt;br /&gt;The measurement to the second joint is 2 inches...depth for corn.&lt;br /&gt;Return borrowed things in better shape than when you borrowed them.&lt;br /&gt;There are two types of trouble...one is the trouble you knowingly walk into, the other is trouble that just happens...it's important to know the difference.&lt;br /&gt;Walk softly but carry a big stick.&lt;br /&gt;if you have to use said stick, make sure who you use it on, doesn't get up.&lt;br /&gt;Grits is good.&lt;br /&gt;Foul language is a sign of a limited vocabulary&lt;br /&gt;Orion, the Big and Little Dippers.&lt;br /&gt;Everyone is a friend until proven otherwise.&lt;br /&gt;Licorice ferns, huckleberries, nettles, sword ferns.&lt;br /&gt;Tabasco won't kill you even if you eat it by the spoonfull.&lt;br /&gt;Don't watch the clock when you're at work.&lt;br /&gt;Fish can see you if you look over the side of the boat.&lt;br /&gt;Fish can hear you if you talk to loud.&lt;br /&gt;Respect the elders.&lt;br /&gt;Never go to bed angry.&lt;br /&gt;That which does not kill you will hurt like the dickens, but it will make you stronger.&lt;br /&gt;Family is the most important thing on earth.&lt;br /&gt;How to play the guitar, spoons, mouth harp, and water filled bottles.&lt;br /&gt;The true meaning of "Self Made Man"&lt;br /&gt;If you don't know something, go to the library and learn it.&lt;br /&gt;The phrases "I don't know", "I forgot", or "I tried (and failed)" are excuses.&lt;br /&gt;There is a difference between an excuse and a reason, know the difference.&lt;br /&gt;Take care of your apperance...even if it is just a t-shirt and jeans.&lt;br /&gt;The world can change everything about you, except your point of view...unless you allow it to.&lt;br /&gt;&lt;br /&gt;David L. McDonald&lt;br /&gt;born 1936-passed 2008&lt;br /&gt;precious father&lt;br /&gt;beloved husband&lt;br /&gt;A right good fellow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1784194951276444865?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1784194951276444865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2009/01/some-things-someones-father-taught-them_4039.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1784194951276444865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1784194951276444865'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2009/01/some-things-someones-father-taught-them_4039.html' title='some things someones father taught them...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-2406479006369132367</id><published>2008-11-11T07:23:00.002-05:00</published><updated>2009-09-17T15:10:01.373-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>neopi, oracle on linux...10gr2..and my birthday.</title><content type='html'>oh, and today is my birthday.  yay.&lt;br /&gt;&lt;br /&gt;so, i finally got around to writing about this. I succesfully got ora 10gr2 installed on RHEL5. thanks to the help of gathering dependencies by this free product called NEOPI. Its pretty nice...just a kind of automatic dependency generator, and it runs some other checks too, but it helped solve the issues I was running into with the misplaced/mislinked libraries. hopefully that puts the RHEL5 Oracle10gr2 fears to rest...and I can move on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-2406479006369132367?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/2406479006369132367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/11/neopi-oracle-on-linux10gr2and-my_3844.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2406479006369132367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/2406479006369132367'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/11/neopi-oracle-on-linux10gr2and-my_3844.html' title='neopi, oracle on linux...10gr2..and my birthday.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1220448142348635731</id><published>2008-11-06T15:56:00.002-05:00</published><updated>2009-09-17T15:10:01.391-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Oracle 10gR2 on RHEL5</title><content type='html'>&lt;h2&gt;&lt;span class="mw-headline"&gt;Preamble&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;This manual is directed show how to install Oracle database 10g on RedHat Enterprise Linux 5. The article show the process from system administrator point of view ad try to simplicity most of the tasks not related to system administration will in deep explanation of tasks and impacts of them. Be aware RHEL 5 x86 is not supported platform (in this moment) for Oracle 10g so when you ask questions in metalink don't be surprised get no answer. According to the product documentation supported platforms for x96 are RHEL AS/ES 3.4 or later, RHEL 4, SUSE Linux Enterprise Server 9.0SP2 or later and Asianux 1.0 and 2.0. Additionally you can't expect reliability from this system for production environment. &lt;/p&gt; &lt;a name="Hardware_requirements"&gt;&lt;/a&gt;&lt;h2&gt;&lt;div class="editsection"&gt;[&lt;a href="http://it.toolbox.com/wiki/index.php?title=Installation_of_Oracle_database_10g_on_RHEL_5&amp;amp;action=edit&amp;amp;section=2" title="Edit section: Hardware requirements"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;span class="mw-headline"&gt;Hardware requirements&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;From documentation you read Oracle 10g need at least 1 gigabyte of memory, but the absolute minimum is 512 MB. OK, with so little memory you are on the bottom line for required shared memory, but database can start. for testing 768 MB sound's much better. Similar is the situation with swap. Everything will work fine with only 1024 MB of swap. &lt;/p&gt; &lt;a name="Software_requirements"&gt;&lt;/a&gt;&lt;h2&gt;&lt;div class="editsection"&gt;[&lt;a href="http://it.toolbox.com/wiki/index.php?title=Installation_of_Oracle_database_10g_on_RHEL_5&amp;amp;action=edit&amp;amp;section=3" title="Edit section: Software requirements"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;span class="mw-headline"&gt;Software requirements&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;List of packages you will need for install Oracle 10g on RHEL include &lt;/p&gt; &lt;pre&gt;binutils&lt;br /&gt;compat-db&lt;br /&gt;compat-libstdc++&lt;br /&gt;control-center&lt;br /&gt;gcc&lt;br /&gt;gcc-c++&lt;br /&gt;glibc&lt;br /&gt;glibc-common&lt;br /&gt;gnome-libs&lt;br /&gt;libstdc++&lt;br /&gt;libstdc++-devel&lt;br /&gt;make&lt;br /&gt;pdksh  (RHEL 5 ships with ksh instead)&lt;br /&gt;sysstat&lt;br /&gt;xscreensaver&lt;br /&gt;setarch&lt;br /&gt;libXp (to start runInstaller)&lt;br /&gt;&lt;/pre&gt; &lt;a name="Preinstalation_tasks"&gt;&lt;/a&gt;&lt;h2&gt;&lt;div class="editsection"&gt;[&lt;a href="http://it.toolbox.com/wiki/index.php?title=Installation_of_Oracle_database_10g_on_RHEL_5&amp;amp;action=edit&amp;amp;section=4" title="Edit section: Preinstalation tasks"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;span class="mw-headline"&gt;Preinstalation tasks&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;Let's create users and groups for installation &lt;/p&gt; &lt;pre&gt;# groupadd dba&lt;br /&gt;# groupadd oinstall&lt;br /&gt;# useradd -G dba -d /home/oracle -g oinstall oracle&lt;br /&gt;# passwd oracle&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Next create filesystem for oracle files and database. Do not forget to create appropriate changes in /etc/fstab to mount this filesystem on startup. In documentation of product is mentioned to use only RAID10 array(s) and for production is wise to use hardware based arrays, but here we just play and any filesystem and volume will be OK. Transfer files to the machine and extract zip's somewhere. I write files, because i recommend for installation not only Oracle database server, but 10g Release 2 (10.2.0.3) Patch Set 2 ever only for testing and playing. For more info about the the patch set read document 316900.1 and download file p5337014_10203_LINUX.zip from metalink. Now is time to login on the machine as root to set some parameters in linux kernel and operating system &lt;/p&gt; &lt;pre&gt;- check if FQHN exist in /etc/hosts&lt;br /&gt;- check the id of oracle user to ensure oinstall is primary group of user and user is member of group dba&lt;br /&gt;- check for existence of user nobody&lt;br /&gt;- check and set if need the parameters for semaphors:&lt;br /&gt;semmsl - 250&lt;br /&gt;semmns - 32000&lt;br /&gt;semopm - 100&lt;br /&gt;semmni – 128&lt;br /&gt;&lt;/pre&gt; &lt;a name="Semaphores_explanation"&gt;&lt;/a&gt;&lt;h3&gt;&lt;div class="editsection"&gt;[&lt;a href="http://it.toolbox.com/wiki/index.php?title=Installation_of_Oracle_database_10g_on_RHEL_5&amp;amp;action=edit&amp;amp;section=5" title="Edit section: Semaphores explanation"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;span class="mw-headline"&gt;Semaphores explanation&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;semmsl – maximum number of semaphores per semaphore identifier. Should be increased carefully because very big number will eat memory not used later&lt;br /&gt;semmns -  maximum number of semaphores in the system. Size it carefully because of above reason&lt;br /&gt;semopm - Define  maximum number of semaphore operations per system call&lt;br /&gt;semmni – maximum number of semaphores per semaphore identifier. Do not increase it over needed limit, because of waste of memory&lt;br /&gt;if you have attached to the server additional hardware read carefully documentation of drivers for this hardware, because for example some drivers for FC controllers need additional semaphors to be set per controller &lt;/p&gt; &lt;hr /&gt; &lt;pre&gt;- check and set if need the parameters for shared memory&lt;br /&gt;shmall 2097152&lt;br /&gt;shmmax Half the size of physical memory (in bytes) or current value if bigger&lt;br /&gt;shmmni 4096&lt;br /&gt;&lt;/pre&gt; &lt;a name="Shared_memory_explanation"&gt;&lt;/a&gt;&lt;h3&gt;&lt;div class="editsection"&gt;[&lt;a href="http://it.toolbox.com/wiki/index.php?title=Installation_of_Oracle_database_10g_on_RHEL_5&amp;amp;action=edit&amp;amp;section=6" title="Edit section: Shared memory explanation"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;span class="mw-headline"&gt;Shared memory explanation&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;shmall  - maximum number of shared memory pages. If you set it to too low value can slowdown any program usng shared memory&lt;br /&gt;shmmax – maximum size of shared memory segment that can be allocated in the memory. For servers with lots of memory can be increased to 80% of memory to avoid shared memory fragmentation&lt;br /&gt;shmmni – maximum number of segments. It's good idea to change it only by vendor recommendation &lt;/p&gt; &lt;hr /&gt; &lt;pre&gt;- check and set if need the parameters for maximum number of file handlers, supported by system&lt;br /&gt;file-max 65536&lt;br /&gt;&lt;/pre&gt; &lt;hr /&gt; &lt;pre&gt;- check and set if need the parameters for network&lt;br /&gt;ip_local_port_range Minimum:1024 Maximum:65000&lt;br /&gt;rmem_default 1048576&lt;br /&gt;rmem_max 1048576&lt;br /&gt;wmem_default 262144&lt;br /&gt;wmem_max 262144&lt;br /&gt;&lt;/pre&gt; &lt;a name="Network_setting_explanation"&gt;&lt;/a&gt;&lt;h3&gt;&lt;div class="editsection"&gt;[&lt;a href="http://it.toolbox.com/wiki/index.php?title=Installation_of_Oracle_database_10g_on_RHEL_5&amp;amp;action=edit&amp;amp;section=7" title="Edit section: Network setting explanation"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;span class="mw-headline"&gt;Network setting explanation&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;ip_local_port_range – define full range of local ports in Linux, normally upper limit is 32000&lt;br /&gt;rmem_default Default Receive Window&lt;br /&gt;rmem_max Maximum Receive Window&lt;br /&gt;wmem_default Default Send Window&lt;br /&gt;wmem_max Maximum Send Window &lt;/p&gt; &lt;hr /&gt; &lt;p&gt;&lt;br /&gt;So you can add you /etc/sysctl.conf file something like &lt;/p&gt; &lt;pre&gt;kernel.shmall = 2097152&lt;br /&gt;kernel.shmmax = 2147483648&lt;br /&gt;kernel.shmmni = 4096&lt;br /&gt;kernel.sem = 250 32000 100 128&lt;br /&gt;fs.file-max = 65536&lt;br /&gt;net.ipv4.ip_local_port_range = 1024 65000&lt;br /&gt;net.core.rmem_default = 1048576&lt;br /&gt;net.core.rmem_max = 1048576&lt;br /&gt;net.core.wmem_default = 262144&lt;br /&gt;net.core.wmem_max = 262144&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;and execute &lt;/p&gt; &lt;pre&gt;# sysctl -p&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Next is time to set some environment variables for oracle user. Do not forget to put the in shell profile for oracle user. They should look's like &lt;/p&gt; &lt;pre&gt;ORACLE_BASE=/home/oracle&lt;br /&gt;ORACLE_HOME=$ORACLE_BASE/product/10.2.0&lt;br /&gt;ORACLE_SID=test01&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;On this point it is very good idea to check the available diskspace in directory where will be installed oracle – you will need 4 GB average for software and database. To start successfully installer it's need to edit /etc/redhat-release and to change release from 5 to 4. Do not forget to return the value back later, otherwise you will be no able to update your server. Next is time to run runInstall. You will need running X server, because interactive installation need graphic display &lt;/p&gt; &lt;a name="Actual_installation"&gt;&lt;/a&gt;&lt;h2&gt;&lt;div class="editsection"&gt;[&lt;a href="http://it.toolbox.com/wiki/index.php?title=Installation_of_Oracle_database_10g_on_RHEL_5&amp;amp;action=edit&amp;amp;section=8" title="Edit section: Actual installation"&gt;edit&lt;/a&gt;]&lt;/div&gt; &lt;span class="mw-headline"&gt;Actual installation&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;On the first step we choose advanced installation to have better control over the packages and options to be installed on the server. Later if it's need we can install additional packages almost seamless. Our target is Enterprise Server as more powerful and complex. on the next step Oracle Installer check for prerequisites for installation as physical memory, swap, networking, environment variables, etc. If you get warning about the amount of memory you can skip it without any problem. Next we will install only software without create new database. There is program, named dbca – database configuration assistant which one can help to create new database. Then read the summary screen and go back to change some packages you do not need or other parameter. It's out of scope of this document to discuss the idea and purpose of packages you can find in oracle database. Next we press install and wait a lot, because of very long process of installation. On the bottom part of the screen you can see the path to log file for current installation and you can inspect it if you get some errors or just from curiosity. In on of the stages of installation (almost on the end) you should execute 2 scripts as root user. And at the end we have installed Oracle database 10g. If you have patch mentioned above installation process for patch is similar: runInstaller.... &lt;/p&gt;&lt;p&gt;Et voila, we are ready to play and test oracle on our RHEL 5 server :-) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1220448142348635731?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1220448142348635731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/11/oracle-10gr2-on-rhel5_9320.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1220448142348635731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1220448142348635731'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/11/oracle-10gr2-on-rhel5_9320.html' title='Oracle 10gR2 on RHEL5'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1029460898358101573</id><published>2008-11-04T15:55:00.002-05:00</published><updated>2009-09-17T15:10:01.314-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>tar over ssh to pipe files..</title><content type='html'>&lt;p&gt;I didn't have enough space on a vm i just built to copy all the data over as a tar and then untar it, so I went on a search...I found this and it worked VERY well:&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;From: http://www.cyberciti.biz/faq/howto-use-tar-command-through-network-over-ssh-session/&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Q.&lt;/span&gt; How do I use tar command over secure ssh session?&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;A. &lt;/span&gt;The GNU version of the tar archiving utility (and other old version of tar) can be use through network over ssh session. Do not use telnet command, it is insecure. You can use Unix/Linux pipes to create actives. Following command backups /wwwdata directory to dumpserver.nixcraft.in (IP 192.168.1.201) host over ssh session. &lt;/p&gt; &lt;p&gt;The default first SCSI tape drive under Linux is /dev/st0. You can read more about tape drives naming convention used under &lt;a href="http://www.cyberciti.biz/faqs/2006/02/tape-drives-naming-convention-under.php"&gt;Linux here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;&lt;code&gt;# tar zcvf - /wwwdata | ssh root@dumpserver.nixcraft.in "cat &gt; /backup/wwwdata.tar.gz"&lt;/code&gt;OR&lt;code&gt;# tar zcvf - /wwwdata | ssh root@192.168.1.201 "cat &gt; /backup/wwwdata.tar.gz"&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Output: &lt;/p&gt;&lt;pre&gt;tar: Removing leading `/' from member names&lt;br /&gt;/wwwdata/&lt;br /&gt;/wwwdata/n/nixcraft.in/&lt;br /&gt;/wwwdata/c/cyberciti.biz/&lt;br /&gt;....&lt;br /&gt;..&lt;br /&gt;...&lt;br /&gt;Password:&lt;/pre&gt; &lt;p&gt;You can also use dd command for clarity purpose:&lt;code&gt;# tar cvzf - /wwwdata | ssh  ssh root@192.168.1.201 "dd of=/backup/wwwdata.tar.gz"&lt;/code&gt;It is also possible to dump backup to remote tape device:&lt;code&gt;# tar cvzf - /wwwdata | ssh  ssh root@192.168.1.201 "cat &gt; /dev/nst0"&lt;/code&gt;OR you can use mt to rewind tape and then dump it using cat command:&lt;code&gt;# tar cvzf - /wwwdata | ssh  ssh root@192.168.1.201 $(mt -f /dev/nst0 rewind; cat &gt; /dev/nst0)$&lt;/code&gt;You can restore tar backup over ssh session: &lt;code&gt;# cd /&lt;br /&gt;# ssh  root@192.168.1.201 "cat /backup/wwwdata.tar.gz" | tar zxvf -  &lt;/code&gt;If you wish to use above command in cron job or scripts then consider &lt;a href="http://www.cyberciti.biz/nixcraft/vivek/blogger/2004/05/ssh-public-key-based-authentication.php"&gt;SSH keys&lt;/a&gt; to get rid of the passwords.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1029460898358101573?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1029460898358101573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/11/tar-over-ssh-to-pipe-files_9772.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1029460898358101573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1029460898358101573'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/11/tar-over-ssh-to-pipe-files_9772.html' title='tar over ssh to pipe files..'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6992577784954911771</id><published>2008-10-17T08:55:00.002-04:00</published><updated>2009-09-17T15:10:01.332-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>ubuntu intrepid ibex java needs icedtea</title><content type='html'>in order to get mozilla working with java, you need to install the icedtea plugin after installing the open java stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6992577784954911771?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/6992577784954911771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/ubuntu-intrepid-ibex-java-needs-icedtea_4848.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6992577784954911771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6992577784954911771'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/ubuntu-intrepid-ibex-java-needs-icedtea_4848.html' title='ubuntu intrepid ibex java needs icedtea'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-7235124927977888252</id><published>2008-10-16T08:12:00.002-04:00</published><updated>2009-09-17T15:10:01.356-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>unix and windows: carriage returns with tr/sed/awk</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;tt&gt;cat -v myfile.cs&lt;/tt&gt;&lt;/b&gt;v &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;...and then you will see them at the end of the line as &lt;b&gt;^M&lt;/b&gt; (Ctrl-M) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;delete them using &lt;b&gt;tr&lt;/b&gt; like this, but this will only work in the following form if "\r" is recognised as a carriage return character. Some versions of tr and sed do not. So before you try this out you should set up a test file with a few "r"s in it in obvious places to make sure the following command is not just deleting "r"s. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;tt&gt;tr -d '\r' &lt;&gt; outfile.csv&lt;/tt&gt;&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;If the above command deleted "r"s instead of carriage returns then instead of using '\r' use 'Cntl-v-m'. The Cntl-v works on a few shells to let it know that you are going to enter a special character and the "m" you follow it with indicates a carriage return. "m" as in the "^M" you see at the end of the lines when you use cat -v. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;There are other ways of removing these carriage returns. You can use sed to do it but again you have to check is it accepts "\r" as a carriage return by experimenting on a very small test file with a few obvious "r"s in it. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;tt&gt;sed 's/\r$//' infile.csv &gt; outfile.csv&lt;/tt&gt;&lt;/b&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;On a final note, you might have to convert a Unix file to a DOS/Windows file sometimes. You can do it like this: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;tt&gt;awk '{ print $0 "\r"}' unix.txt &gt; dos.txt&lt;/tt&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;---&lt;br /&gt;&lt;br /&gt;simple:&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:Times;font-size:100%;"  &gt;&lt;span style=";font-family:Times;font-size:19;"  &gt;&lt;b&gt;&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;tr&lt;/b&gt; -d '\015' &lt;&gt; new.file&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;more simple:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Times;font-size:130%;"  &gt;&lt;span style=";font-family:Times;font-size:22;"  &gt;&lt;b&gt;perl -pi -e 's/\015//g' file&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-7235124927977888252?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/7235124927977888252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/unix-and-windows-carriage-returns-with_8183.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7235124927977888252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7235124927977888252'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/unix-and-windows-carriage-returns-with_8183.html' title='unix and windows: carriage returns with tr/sed/awk'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5598098951798224940</id><published>2008-10-14T08:10:00.002-04:00</published><updated>2009-09-17T15:10:01.296-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>freebsd jails from sysinstall</title><content type='html'>sysinstall nonInteractive=yes _ftpPath=ftp://ftp2.ch.freebsd.org/pub/FreeBSD  mediaSetFTP distSetMinimum installRoot=/var/jails/192.168.0.1 releaseName=6.1-RELEASE installCommit&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5598098951798224940?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5598098951798224940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/freebsd-jails-from-sysinstall_7507.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5598098951798224940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5598098951798224940'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/freebsd-jails-from-sysinstall_7507.html' title='freebsd jails from sysinstall'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6860992106165682032</id><published>2008-10-10T11:08:00.002-04:00</published><updated>2009-09-17T15:10:01.265-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>freebsd native firefox, linux-firefox, and linux-opera with flash and java.</title><content type='html'>ok, i like firefox. dont really like opera. but...i had to succumb.&lt;br /&gt;&lt;br /&gt;running freebsd 7 with native firefox for java v6 (diablo-latte)  works great, and adds appropriate java entries to the pluginreg.dat which is actually shared with linux-firefox (for proper flash support...nspluginwrapper was causing flash to be out of synch (youtube) for me, but linux-firefox with linux-flashplugin7 worked fine.&lt;br /&gt;&lt;br /&gt;linux-opera to the rescue ; everytime i started linux-firefox it would overwrite my pluginreg.dat (which i had some specific java variables in there) - it pissed me off that i couldn't use both firefoxes... i thought about maybe using a diff profile but it pulls pluginreg.dat before the profiles...so i just decided to use linux-opera and be done w/it. thats what i decided on.&lt;br /&gt;&lt;br /&gt;btw, i hate flash and java. but both are necessary for my line of work...bullshit.&lt;br /&gt;&lt;br /&gt;i need flash to watch videos and listen to music on youtube.&lt;br /&gt;i need java to work with some screwed up oracle applications we use at work.&lt;br /&gt;&lt;br /&gt;at least i get to use unix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6860992106165682032?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/6860992106165682032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/freebsd-native-firefox-linux-firefox_4974.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6860992106165682032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6860992106165682032'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/10/freebsd-native-firefox-linux-firefox_4974.html' title='freebsd native firefox, linux-firefox, and linux-opera with flash and java.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-8752733715144809539</id><published>2008-09-27T22:31:00.002-04:00</published><updated>2009-09-17T15:10:02.033-04:00</updated><title type='text'>Renting or Owning a House...Hmm.</title><content type='html'>&lt;div class="yreArticle"&gt;       &lt;div class="title"&gt;         &lt;h3&gt;Found this really good article... on yahoo. via digg i believe.&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;Taken from : http://realestate.yahoo.com/promo/renting-makes-more-financial-sense-than-homeownership.html;_ylc=X3oDMTFta3Jqcjk3BF9TAzI3MTYxNDkEX3MDOTc2MjA0NjUEc2VjA2ZwLXRvZGF5BHNsawNyZW50aW5nLWJldHRlcg--&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;Renting Makes More Financial Sense Than Homeownership &lt;/h3&gt;         &lt;h4&gt;  &lt;/h4&gt;         &lt;p class="author"&gt; By Jack Hough &lt;/p&gt;         &lt;p class="date"&gt; Sep 26th, 2008 &lt;/p&gt;       &lt;/div&gt;     &lt;/div&gt;           &lt;div class="yreArticleTools"&gt;      &lt;span&gt; ARTICLE TOOLS: &lt;/span&gt;          &lt;/div&gt;           &lt;div class="yreArticle"&gt;       &lt;div class="text"&gt;   &lt;p&gt;I have something un-American to confess: I rent an apartment, despite having enough money to buy a house. I plan to keep renting for as long as I can. I'm not just holding out for better prices. Renting will make me richer.&lt;/p&gt;  &lt;p&gt;I normally write about stocks for SmartMoney.com, but the boss asked me to explain to readers my reason for renting. Here goes: Businesses are great investments while houses are poor ones, so I'd rather rent the latter and own the former.&lt;/p&gt;  &lt;h2&gt;Stocks vs. Houses: Returns&lt;/h2&gt;  &lt;p&gt;Shares of businesses return 7% a year over long time periods. I'm subtracting for inflation, gradual price increases for everything from a can of beer to an ear exam. (After-inflation or "real" returns are the only ones that matter. The point of increasing wealth is to increase buying power, not numbers on an account statement.) Shares have been remarkably consistent over the past two centuries in their 7% real returns. In Jeremy Siegel's book, "Stocks for the Long Term," he finds that real returns averaged 7.0% over nearly seven decades ending 1870, then 6.6% through 1925 and then 6.9% through 2004.&lt;/p&gt;  &lt;p&gt;The average real return for houses over long time periods might surprise you. It's zero.&lt;/p&gt;Shares return 7% a year after inflation because that's how fast companies tend to increase their profits. Houses have their own version of profits: rents. Tenant-occupied houses generate actual rents while owner-occupied houses generate ones that are implied but no less real: the rents their owners don't have to pay each year. House prices and rents have been closely linked throughout history, with both increasing at the rate of inflation, or about 3% a year since 1900. A house, after all, is an ordinary good. It can't think up ways to drive profits like a company's managers can. Absent artificial boosts to demand, house prices will increase at the rate of inflation over long time periods for a real return of zero.   &lt;p&gt;Robert Shiller, a Yale economist and author of "Irrational Exuberance," which predicted the stock price collapse in 2000, has recently turned his eye to house prices. Between 1890 and 2004 he finds that real house returns would've been zero if not for two brief periods: one immediately following World War II and another since about 2000. (More on them in a moment.) Even if we include these periods houses returned just 0.4% a year, he says.&lt;/p&gt;  &lt;p&gt;The average pundit, planner, lender or broker making the case for ownership doesn't look at returns since 1890. Sometimes they reduce the matter to maxims about "building equity" and "paying yourself" instead of "throwing money down the drain." If they do look at returns they focus on recent ones. Those tell a different story.&lt;/p&gt;  &lt;p&gt;Between World War II and 2000 house prices beat inflation by about two percentage points a year. (Stocks during that time beat inflation by their usual seven percentage points a year.) Since 2000 houses have outpaced inflation by six percentage points a year. (Stocks have merely matched inflation.)&lt;/p&gt;  &lt;h2&gt;Stocks vs. Houses: Valuations&lt;/h2&gt;  &lt;p&gt;But while stock returns have come from increased earnings, house returns have come from ballooning valuations, not increased rents. The ratio of share prices to company earnings (the price/earnings ratio) has remained relatively steady. It's about 16 today, close to both its 1940 value of 17 and to its 130-year average of about 15. Not so, the ratio of house prices to rents. In 1940 the median single-family house price was $2,938, according to the U.S. Census, while the median rent was $27 a month, including utilities. That means the ratio of prices to annual rents was 9. By 2000 the ratio had swelled to 17. In 2005 it hit 20. We can adjust for the size of dwellings, but it doesn't make much difference. The ratio of single-family house prices to three-bedroom apartments is 19. In SmartMoney.com's home town of &lt;a href="http://realestate.yahoo.com/New_York/Manhattan/Homes_for_sale/result.html;_ylt=An8E064uDG8dc1BCMkAxAJrxkdEF"&gt;Manhattan&lt;/a&gt;, where more detailed data is available, the ratio of condo prices per square foot to apartment rents per square foot is 22.&lt;/p&gt;  &lt;p&gt;Two main events have caused house valuations to inflate since World War II. First, the government subsidized housing by relaxing borrowing standards. Prior to the creation of the Federal Housing Authority in 1934 house buyers who borrowed typically put up 40% of the purchase price in cash for a five- to 15-year loan. By insuring mortgages, the FHA permitted terms of up to 20 years and down payments of just 20%. It later expanded the repayment periods to 30 years and reduced down payments to 5%. Today down payments for FHA loans are as low as 3%. Aggressive lenders offer loans with no down payments or even negative ones so that house buyers can borrow the full purchase price plus closing costs. Some require little documentation of income, assets or ability to pay.&lt;/p&gt;  &lt;p&gt;That means more Americans can win loans for homes, and they can win them for far more expensive (larger) homes than their incomes previously allowed. Two-thirds of American households own homes today, up from 44% in 1940, even though the percentage of Americans living alone has tripled during that time. The ratio of house values to incomes has risen 260% in just under four decades.&lt;/p&gt;  &lt;p&gt;A second event helped boost house demand in recent years. Share prices plunged in 2000. The Federal Reserve, fearing that the decline in stock wealth would cause consumers to stop spending, reduced the federal-funds rate, the core interest rate that determines the cost of everything from credit cards to mortgages, to 1% by the summer of 2003 from 6.5% at the start of 2001. Since most of the cost of financing a house over 30 years is interest, monthly house payments shrank and demand for houses soared. In some markets a string of big yearly increases in house prices led to panic buying.&lt;/p&gt;  &lt;h2&gt;Stocks vs. Houses: Conclusion&lt;/h2&gt;  &lt;p&gt;For house returns over the next 20 years to match those over the past 20, the government and private lenders would have to "up the ante" by relaxing borrowing standards further. Given the recent attention paid to swelling foreclosures, that seems unlikely. I suspect real returns will turn negative over most of the next two decades, but that house prices won't necessarily dip. Since 1963 they've done so in only two years, vs. 18 for stocks. That's because homeowners mostly just stick it out rather than sell during soft markets. But if house prices remain flat, they produce negative real returns due to the creep of inflation. According to calculations made by The Economist in the summer of 2005, house prices would have to stay flat for 12 years with annual inflation at 2.5% for the ratio of prices to rents to fall from its 2005 perch to merely its 1975 to 2000 average.&lt;/p&gt;  &lt;p&gt;So to sum up why I rent: Shares right now cost 16 times earnings and over long time periods return 7% a year after inflation. Houses right now cost 19 times their "earnings" and over long time periods return zero after inflation. And they look likely to return less than that for a while.&lt;/p&gt;  &lt;p&gt;On the following page I've tried to anticipate and address questions and objections.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;!-- page break --&gt;   &lt;/p&gt;&lt;h2&gt;Questions/Objections&lt;/h2&gt;  &lt;h3&gt;"You can't live in your stocks" or "Renters throw money down the drain."&lt;/h3&gt;  &lt;p&gt;Rent is the cost of owning shares with money you would otherwise spend on a house. Houses have ownership costs, too: taxes, insurance and maintenance. Rent costs about 5% of house prices each year if we apply the price/rent ratio of 19. House incidentals often cost around 2%. If you have $300,000 and a choice between spending it on a house or shares, you'll pay $6,000 a year in incidentals if you buy the house or about $15,000 a year ($1,250 a month) in rent if you buy the shares. But the shares will return $21,000 a year after inflation while the house will return zero. (My numbers work out even better than these. I pay a smidgen less than $1,250 a month for rent, while house prices in my neighborhood are far higher than $300,000.)&lt;/p&gt;  &lt;p&gt;Note that houses and shares have transaction costs, too. Home buyers pay around 1% in closing costs when they buy and 6% in broker commissions when they sell. Share buyers pay $10 trading commissions, which are negligible for buy-and-hold investors.&lt;/p&gt;  &lt;h3&gt;"House buyers get tax breaks."&lt;/h3&gt;  &lt;p&gt;So do share buyers, but both are a bad deal. The interest on loans for houses (mortgages) and shares (margin balances) is tax-deductible. But the rates are almost always too high. A big house loan presently costs 6.1% interest while a big stock loan costs about 9%. For the returns, we can forget about inflation because it helps debtors while hurting investors, making it a wash for those who borrow to invest. Still, nominal returns of 3% for houses and 10% for stocks aren't high enough to justify those rates. The tax breaks aren't really breaks at all. Moreover, a majority of homeowners don't claim them. Their incomes are low enough to make the standard deduction a better deal.&lt;/p&gt;   &lt;h3&gt;"What about the pride of home ownership?"&lt;/h3&gt;  &lt;p&gt;It's not for me. I define ownership as no longer having to pay for something and being able to do as I please with it. I own my coffee maker. House owners must pay taxes each year even when their mortgage payments are done. In certain markets they can't even make changes to the houses they've paid for without seeking the approval of others. Personally, I feel the pride of ownership for shares of businesses, and I'm proud to occupy a nice place while leaving the burden of poor returns and maintenance to someone else.&lt;/p&gt;  &lt;h3&gt;"You seem to knock government housing subsidies, but they've helped many Americans afford homes."&lt;/h3&gt;  &lt;p&gt;My inner socialist agrees. My other inner socialist worries that the government has effectively raised prices to the point where the middle class can't afford houses, or buries itself in debt to own them. My inner capitalist is too busy watching shares to care about house prices. My inner conspiracy theorist notes that while politicians tout the social benefits of homeownership none mentions its tax benefits to the government. I pay no taxes on the overall value of my stock portfolio, just on my cashed-in gains and collected dividends. But Americans pay taxes on the full $11 trillion worth of housing they own plus the $10 trillion worth of it they're still paying off.&lt;/p&gt;  &lt;h3&gt;"Houses are bigger than apartments."&lt;/h3&gt;  &lt;p&gt;True, and both can be rented. A third of renters live in single-family houses. I prefer an apartment for now. I like not having to fill it with stuff. I like using a fifth of the energy of the average American. I like being 20 minutes from work and (this is unique to New Yorkers) not having owned a car in 10 years. I like not stressing over whether to get the marble countertops or the imported tiles or the 52-inch flat screen. I'm not especially frugal; I spend a teacher's salary each year on restaurants and travel. But I guess I'm too busy or lazy right now to bother with a big house and its innards.&lt;/p&gt;  &lt;h3&gt;"Are you saying I should sell my big house and rent an apartment instead?"&lt;/h3&gt;  &lt;p&gt;No, unless you have more space than you need and moving wouldn't be disruptive to your family, and you want to cash in on recent housing gains, make more money over the next couple of decades, use less energy while simplifying your life, and you don't mind seeming odd to friends. In which case, yes. But really, I'm not trying to win anyone over. Strong demand for houses keeps my rent cheap.&lt;/p&gt;  &lt;h3&gt;"Renting is for poor people."&lt;/h3&gt;  &lt;p&gt;True. But it's for rich people, too. The average renter makes about $34,000 a year, but while the percentage of renters declines after incomes exceed $20,000 and rents exceed $600 a month, it jumps again once incomes top $150,000 and rents top $1,200 a month. In other words, poor people rent modest apartments for lack of choice. Middle-income people buy houses. High-income people, presumably with a dose of financial savvy, often rent nice apartments instead of buying.&lt;/p&gt;  &lt;h3&gt;"You say houses return zero. But I've made a fortune on my house in recent years."&lt;/h3&gt;  &lt;p&gt;I'm referring to inflation-adjusted returns over long time periods, absent external boosts to demand. You're referring to gross returns over a short time period that combined lax borrowing standards and ultra-low interest rates. Over the next 20 years I believe houses will return zero or slightly less after inflation and that stocks will return 7%.&lt;/p&gt;  &lt;h3&gt;"So you're never going to buy a house? What about raising a family?"&lt;/h3&gt;  &lt;p&gt;I might buy one eventually, but the longer I can put it off the more I'll get out of the shares I'll have to sell to afford it. I'm 34 now with a fiancée and a fish. I'm going to try to rent for at least 10 more years. If I have kids I'll probably move into a big apartment or a house once they reach running-around age. I'll rent, most likely.&lt;/p&gt;   &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-8752733715144809539?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/8752733715144809539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/09/renting-or-owning-househmm_9309.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8752733715144809539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8752733715144809539'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/09/renting-or-owning-househmm_9309.html' title='Renting or Owning a House...Hmm.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3248846080562788938</id><published>2008-09-26T07:06:00.003-04:00</published><updated>2009-09-17T18:56:42.052-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='degree'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='cs'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><title type='text'>10 Books that will Substitute A Computer Science Degree</title><content type='html'>Found this list of books online, copied it down because I thought it was interesting. Now I'll share it with you. I do not have a CS Degree...and I do not want one - My degree is in History. However, this might be of interest to those who don't have one and DO want one...Or those who have one they're not happy with. (Hence, why I don't have one.)&lt;br /&gt;&lt;b&gt; &lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1. Godel Escher and Bach by Douglas Hofstadter&lt;/b&gt;&lt;br /&gt;Godel, Escher and Bach, written by Douglas Hofstadter, while the title would suggest it is discussion of a mathematician, an artist, and a composer, is a complex examination of how human beings develop perception and meaning. More specifically, the book explores, through a series of dialogues and narrations, how symbols, thought and language are all intertwined and how reality is essentially a composition of overlapping meanings and perceptions. The book challenges the reader to observe the &lt;a class="kLink" href="http://www.techoozie.com/10-books-that-will-substitute-a-computer-science-degree/#" id="KonaLink0" style="position: static; text-decoration: underline ! important;" target="_new"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;system&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; of symbolic meanings around him or her objectively.&lt;br /&gt;&lt;b&gt;2. The Art of Programming by Donald Knuth&lt;/b&gt;&lt;br /&gt;The Art of Programming, by Donald Knuth, is a comprehensive, multi-volume work discussing various programming algorithms and their analysis. The work was voted by American Scientist as one of the twelve best scientific monographs of the twentieth century. The author famously offered a reward of two dollars and fifty cents for anyone who found and reported an error in the text. The work features exercises of multiple difficulty levels, from basic warm up exercises to ongoing research problems, allowing the reader to work up his skill and familiarity with the material.&lt;br /&gt;&lt;b&gt;3. The Elements of Programming Style by Brian W. Kernighan and P. J. Plauger&lt;/b&gt;&lt;br /&gt;The Elements of Programming Style, by Brian W. Kernighan and P. J. Plauger, is an influential book on the study of computer programming styles and languages. It endorses the strategy that computer programs should be written not only to satisfy the compiler, but also keep the human readers in mind. The book utilizes examples taken from actual, published programs. The book’s recommendations are made in the context of the examples which are realistic rather than an academic vacuum.&lt;br /&gt;&lt;b&gt;4. Theory of Parsing, Translation and Compiling, by Alfred V. Aho, and Jeffrey D. Ullman&lt;br /&gt;&lt;/b&gt;The book, Theory of Parsing, Translation and Compiling, by Alfred V. Aho, and Jeffrey D. Ullman, is intended for a senior or graduate course in compiling theory. It is a theoretical treatment of a practical computer science subject. Since computer science is an ever changing area of study, this book emphasizes ideas, rather than specific application details. The algorithms and concepts presented in the book should survive to new generations of computer technology, programs and systems. Numerous examples are given, with specific context, rather than on the large complicated contexts normally found in implementations, even in cases where the theoretical ideas are difficult to understand in isolation.&lt;br /&gt;&lt;b&gt;5. The Computer and the Brain, by John von Neumann&lt;/b&gt;&lt;br /&gt;The Computer and the Brain, by John von Neumann, is theoretical work which examines mathematics, logic’s, and statistics as the &lt;a class="kLink" href="http://www.techoozie.com/10-books-that-will-substitute-a-computer-science-degree/#" id="KonaLink2" style="position: static; text-decoration: underline ! important;" target="_new"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;basic &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;tools&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; of information. The book explores how these subjects make up the entirety of the planning, usage and coding of computers. The author explores how mathematics and logic are related to the functions of the organic human brain in the same way they are applied to the artificial automated &lt;a class="kLink" href="http://www.techoozie.com/10-books-that-will-substitute-a-computer-science-degree/#" id="KonaLink1" style="position: static; text-decoration: underline ! important;" target="_new"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;computer&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; processor.&lt;br /&gt;&lt;b&gt;6. A Programming Language, by Kenneth E. Iverson&lt;/b&gt;&lt;br /&gt;A Programming Language, by Kenneth E. Iverson, explores how programming language is a signifier for a whole host of mathematical algorithms and procedures. The book focuses on specific areas of application which serve as universal examples and are chosen to illustrate particular facets of the effort to design explicit and concise programming languages.&lt;br /&gt;&lt;b&gt;7. Writing Efficient Programs, by Jon Louis Bentley&lt;/b&gt;&lt;br /&gt;Writing Efficient Programs, by Jon Louis Bentley, illustrates to the reader how the&lt;br /&gt;primary task of a software designer is the development of programs that are not only useful, but easy and inexpensive to maintain. Moreover, the book explores how software must have specific application as well as versatility to me modified for unforeseen uses. Lastly, efficient programs must be efficient to write as the cost of writing will determine their competitiveness in the &lt;a class="kLink" href="http://www.techoozie.com/10-books-that-will-substitute-a-computer-science-degree/#" id="KonaLink3" style="position: static; text-decoration: underline ! important;" target="_new"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;software&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; market.&lt;br /&gt;&lt;b&gt;8. Computation: Finite and Infinite Machines, by Marvin L. Minsky&lt;/b&gt;&lt;br /&gt;Computation: Finite and Infinite Machines, by Marvin L. Minsky, explores how the&lt;br /&gt;introduction of the computer in the last half century has affected the fabric of human society. The book essays to describe the application and limitation of computer technology as it relates to human progress and potential.&lt;br /&gt;&lt;b&gt;9. Operating System Principles, by Per Brinch Hansen&lt;/b&gt;&lt;br /&gt;&lt;a class="kLink" href="http://www.techoozie.com/10-books-that-will-substitute-a-computer-science-degree/#" id="KonaLink5" style="position: static; text-decoration: underline ! important;" target="_new"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;&lt;span style="background-color: transparent; border-bottom-style: solid; border-bottom-width: 1px; font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;Operating &lt;/span&gt;&lt;span style="background-color: transparent; border-bottom-style: solid; border-bottom-width: 1px; font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;System&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; Principles, by Per Brinch Hansen, gives computer science and professional programmers a general explanation and analysis of operating systems. The book explains how an OS works to allow sharing of information easy and efficient.&lt;br /&gt;&lt;b&gt;10. Artificial Intelligence, by Elaine Rich&lt;/b&gt;&lt;br /&gt;&lt;a class="kLink" href="http://www.techoozie.com/10-books-that-will-substitute-a-computer-science-degree/#" id="KonaLink6" style="position: static; text-decoration: underline ! important;" target="_new"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;Artificial &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: 12px; font-weight: 400; position: static;"&gt;Intelligence&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, by Elaine Rich, gives programmers an introduction to the techniques and problems associated with A.I. The book features references throughout that allow the reader to pursue the topics deeper than would be possible within the defined scope and space limitations of the book.&lt;br /&gt;&lt;div class="sociable_tagline"&gt;&lt;b&gt;If You Like What You Read Please Take The Time To Share It!&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3248846080562788938?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3248846080562788938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/09/10-books-that-will-substitute-computer_4995.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3248846080562788938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3248846080562788938'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/09/10-books-that-will-substitute-computer_4995.html' title='10 Books that will Substitute A Computer Science Degree'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3745412737258383476</id><published>2008-09-09T09:48:00.002-04:00</published><updated>2009-09-17T15:10:01.279-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Samba / CIFS mounting in Xubuntu Linux with OS X Shares</title><content type='html'>﻿&lt;span style="font-size:100%;"&gt;Add this to /etc/fstab&lt;br /&gt;//saturn/sharename /home/username/mounted.smbfsdir smbfs iocharset=utf8,credentials=/home/username/.smbcredentials,uid=1000 0 0&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;cat ~username/.smbcredentials&lt;br /&gt;username=user&lt;br /&gt;password=pass&lt;br /&gt;&lt;br /&gt;perms on .smbcredentials&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#204a87;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; -rw-------  1 root group   37 2008-09-09 09:12 .smbcredentials&lt;br /&gt;&lt;br /&gt;-- On the Samba Server so you can follow symlinks properly in the share dir&lt;br /&gt;&lt;/span&gt;&lt;table border="0" cellpadding="6" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="ubuntu_quotebackground"&gt;&lt;div style="font-style: italic;"&gt;&lt;div style="margin: 5px 20px 20px;"&gt;  &lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 66px; text-align: left;"&gt;follow symlinks = yes&lt;br /&gt;wide symlinks = yes&lt;br /&gt;unix extensions = no&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt; &lt;/div&gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3745412737258383476?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3745412737258383476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/09/samba-cifs-mounting-in-xubuntu-linux_142.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3745412737258383476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3745412737258383476'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/09/samba-cifs-mounting-in-xubuntu-linux_142.html' title='Samba / CIFS mounting in Xubuntu Linux with OS X Shares'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1732372512318303700</id><published>2008-08-12T15:21:00.002-04:00</published><updated>2009-09-17T15:10:01.200-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Oh No! Vmware ESXi bug.</title><content type='html'>Interesting details on the bug affecting vmware. For me, specifically ESXi - I just killed ntpd for now.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;As of tomorrow morning, VM's running on all hosts with ESX 3.5U2 in enterprise configurations will not power on. VMotion/HA/DRS will probably also not work.   &lt;p&gt;Boom.&lt;/p&gt;  &lt;p&gt;Apparently, there is some bug in the vmware license management code. VMware is scrambling to figure out what happened and put out a patch.&lt;/p&gt;  &lt;p&gt;Running VM's will not be immediately impacted.&lt;/p&gt;  &lt;p&gt;There is a major discussion going on in the vmware communities about the issue:  &lt;a href="http://communities.vmware.com/thread/162377?tstart=0"&gt;http://communities.vmware.com/thread/162377?tstart=0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;OK, while we're all remaining calm....just imagine the implications that bugs like this can occur and get past QA testing....5 years down the road, nearly all server apps worldwide running in VM's if you believe a lot of forecasts ......some country decides to initiate cyberwarfare and manages to get a backdoor into whatever is the prevailing hypervisor of the day.....boom. All your VM's are belong to us.&lt;/p&gt;  &lt;p&gt;I honestly think a lot of the hype from those who want to build a vm security industry is crap, but god protect us if the baseline code for critical hypervisors like ESX isn't kept secure and regularly audited.&lt;/p&gt;  &lt;p&gt;I'd love to find out what happened here.  &lt;/p&gt;  &lt;p&gt;What regression testing on new releases does vmware do to check for date based bugs? I'd think they'd at least check for simple things like changing the date to 1 year or 1 month in the future.&lt;/p&gt;  &lt;p&gt;UPDATE:  Frank Wegner has posted the following suggestions:&lt;/p&gt;  &lt;blockquote&gt;You can see the latest status here: http://kb.vmware.com/kb/1006716 Please check back often, because it will notify you when this issue has been fixed. Until then the best workaround I can think of is: &lt;p&gt;* Do nothing&lt;br /&gt;* Turn DRS off&lt;br /&gt;* Avoid VMotion&lt;br /&gt;* Avoid to power off VM's&lt;/p&gt;&lt;/blockquote&gt;  &lt;p&gt;I'd council against turning DRS off as that actually deletes resource pool settings....instead, set sensitivity to 5 which should effectively disable it w/ minimal impact.&lt;/p&gt;  &lt;p&gt;UPDATE 2:  VMware Website appears to be having trouble keeping up with people requesting updates.&lt;/p&gt;  &lt;p&gt;UPDATE 3:  VMware has stated they will have fixes available in 36hrs at the earliest. &lt;/p&gt;  &lt;p&gt;UPDATE 4: Anand Mewalal comments:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;We used the following workaround to power on the VM's.&lt;br /&gt;Find the host where a VM is located&lt;br /&gt;run ' vmware-cmd -l ' to list the vms.&lt;br /&gt;issue the commands:&lt;br /&gt;service ntpd stop&lt;br /&gt;date -s 08/01/2008&lt;br /&gt;vmware-cmd /vmfs/volumes/vm path/vmname.vmx start&lt;br /&gt;service ntpd start&lt;/blockquote&gt;  &lt;p&gt;UPDATE 5: Apparently, there are no easily seen warnings in logs/etc or VC prior to hitting the bug. VC will continue to show the hosts as licensed and no errors will appear in vmkernel log file until you try to start up a new vm, reboot a vm, or reboot the host.&lt;/p&gt;  &lt;p&gt;UPDATE 6: Welcome Slashdot readers! I've temporarily disabled comments to allow the server vm to handle the load. Apparently Movable Type 4.1 executes a seperate perl cgi script to handle comments on each page load. Load times might have been slow for the last 45 minutes, but should be OK now.&lt;/p&gt;  &lt;p&gt;UPDATE 7: I made some minor corrections to this entry that others have requested.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1732372512318303700?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1732372512318303700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/oh-no-vmware-esxi-bug_6178.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1732372512318303700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1732372512318303700'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/oh-no-vmware-esxi-bug_6178.html' title='Oh No! Vmware ESXi bug.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3274063789109411088</id><published>2008-08-12T11:51:00.002-04:00</published><updated>2009-09-17T15:10:01.216-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>SSH enable in VMWARE ESXi</title><content type='html'>&lt;p class="style1"&gt;ESXi 3.5 does ship with the ability to run SSH, but this is disabled by default (and is not supported). &lt;/p&gt; 1) At the console of the ESXi host, press ALT-F1 to access the console window.&lt;br /&gt;2) Enter &lt;strong&gt;unsupported&lt;/strong&gt; in the console and then press Enter. You will not see the text you type in.&lt;br /&gt;3) If you typed in unsupported correctly, you will see the Tech Support Mode warning and a password prompt. Enter the password for the root login.&lt;br /&gt;  4) You should then see the prompt of ~ #. Edit the file inetd.conf (enter the command &lt;strong&gt;vi /etc/inetd.conf&lt;/strong&gt;).&lt;br /&gt;5) Find the line that begins with #ssh and remove the #. Then save the file. If you're new to using vi, then move the cursor down to #ssh line and then press the Insert key. Move the cursor over one space and then hit backspace to delete the #. Then press ESC and type in :wq to save the file and exit vi. If you make a mistake, you can press the ESC key and then type it :q! to quit vi without saving the file.&lt;br /&gt;  6) Once you've closed the vi editor, run the command &lt;strong&gt;/sbin/services.sh restart&lt;/strong&gt; to restart the management services. You'll now be able to connect to the ESXi host with a SSH client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3274063789109411088?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3274063789109411088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/ssh-enable-in-vmware-esxi_7732.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3274063789109411088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3274063789109411088'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/ssh-enable-in-vmware-esxi_7732.html' title='SSH enable in VMWARE ESXi'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6446807473139320417</id><published>2008-08-12T10:56:00.002-04:00</published><updated>2009-09-17T15:10:01.232-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>ESXi Adventures -</title><content type='html'>&lt;h2&gt;From: http://traviskensil.wordpress.com/2008/08/11/esxi-adventures/&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;ESXi Adventures&lt;/h2&gt;    &lt;h4&gt;August 11, 2008&lt;!-- by traviskensil --&gt; · &lt;a href="http://traviskensil.wordpress.com/2008/08/11/esxi-adventures/#comments"&gt;No Comments&lt;/a&gt;&lt;/h4&gt;    &lt;div class="entry"&gt;     &lt;div class="snap_preview"&gt;&lt;p&gt;This post will focus on some of the positives and negatives and some of my experiences thus far that I’ve had with ESXi. Part of this post will also outline some of my plans for backup/restore with the hopes of generating other’s opinions of the viability of these options, since very few exist from VMware currently.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;COMPATIBILITY:&lt;/strong&gt; Personally, I’ve always gone against the “norm” and run stuff that shouldn’t be run on things…I guess I like to tempt the odds. Same thing with ESXi. So far I’ve run ESXi on a Dell Poweredge 1900 and my Intel-motherboard based workstation with zero issues. My theory goes that most modern day servers/workstations should be compatible with it; or at least should have some way of making it work. Will soon be testing it on a Dell 2600 as well. Also tested on a Gateway workstation (E series) and confirmed IT DOESN’T work. The PERC controllers seem to be recognized and play well with ESXi. I know I’ve seen that HP and some Sun stuff also works well…we are 100% Dell for servers so thats the limit of my testing ability. I am sure as time rolls on that ESXi will mature in its compatibility ability.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;INSTALL: &lt;/strong&gt;Install is a piece of cake. Basically goto VMware’s site, give them your life history, then download the 200MB .ISO file and receive your license key and your good to go. Install should find your RAID/SATA controller right off the bat and present it as an option….if it doesn’t…..better switch hardware. I have also been investigating USB-boot…some guy on the Vmware communities’ seems to have got it figured out. &lt;/p&gt; &lt;p&gt;&lt;a href="http://communities.vmware.com/blogs/Knorrhane/2008/01/21/installing-esx-3i-on-usb-stick"&gt;http://communities.vmware.com/blogs/Knorrhane/2008/01/21/installing-esx-3i-on-usb-stick&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For my platform I just installed to the local disks; will be migrating to the USB drive soon!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;BACKUP: &lt;/strong&gt;I hate to complain about FREE but come on VMware….at least give us something to backup with. Maybe we don’t need enterprise features but a basic tool would be nice. Now, apparently according to the documentation there is the CLI-based way but there still should be some kind of GUI to it all…especially when you consider how nice the Infrastructure client is. This is one area where ESXi DOES NOT shine at all….in fact its a large disappointment! Later this year some 3rd party products are suppost to begin supporting ESXi backup but most can’t wait 3-6 months while thats figured out. If Microsoft Hypervisor has this it definitely could turn the tables for our support of VMware. I have however, devised a simple way to provide a basic level of backup. It is as follows….&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;ESX CONFIG/HOST&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p style="padding-left: 30px;"&gt;1) Create image of USB drive contents (using Winimage &lt;a href="http://www.winimage.com/winimage.htm"&gt;http://www.winimage.com/winimage.htm&lt;/a&gt;  or other similiar tools). This should in theory preserve the entire ESXi config, directory/drive structure required to get the system going. The first part is to take the image and save it somewhere.&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;2) The second part is to take the image of USB1 and copy it to USB2 which should allow for a backup USB stick should the primary fail or become corrupt.&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Virtual Machines&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p style="padding-left: 30px;"&gt;1) After successfully creating/importing the virtual machine, power it done properly. Go into the Datastore Browser and manually download the virtual machine files. Store in a safe place.&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;2) Obviously take the usual backups from within the virtual machine, use a backup proxy or however you perform “normal” backups.&lt;/p&gt; &lt;p&gt;That is my backup plan for ESXi currently. I have tested parts of it and found success…others need work. Ideally this would allow you to restore the ESXi config, restore your virtual machine then merge the most current data and be back up and running in a short period of time. I have yet to test this process. Please….let me know your thoughts as well….anyone got a better solution?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;VMware Infrastructure Client&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This is the one place ESXi shines and shines bright! The interface is clean and very easy. Tabs give access to everything one would need to know. I LOVE the networking visualization it shows; groups physical cards to virtual switches/groups…very nice. The performance and reporting per virtual machine or per server is sweet! My only gripe is that I experienced some bad delay when switching virtual machine consoles. I can’t completely rule out the workstation I was on but it still seemed pretty noticable. Also…be aware that ESXi itself doesn’t have any kind of network/IP checking in it. (Realized too late in the process that two machines had conflicting IPs…the ESXi console made no mention of that) To install the client just simply goto the IP address of the box (listed on the physical server’s console)…a splash page will load with download links to the software.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Thats pretty much it for now. Also, the VMware converter does a nice job of bringing in existing VMs into ESXi. My only complaint is the lack of efficient backup in the product. I realize VMware needs to make money, but I think a basic feature like backup, even in a simple form, should be included. Just having a simple export config and VM option would be fine. Most companies use 3rd party software for the majority of their backup needs anyway. I do feel this is one area that will limit ESXi’s deployment. Microsoft Hypervisor includes stuff like LIVE backup in its product without additional licensing (&lt;a href="http://www.microsoft.com/windowsserver2008/en/us/virtualization-consolidation.aspx"&gt;http://www.microsoft.com/windowsserver2008/en/us/virtualization-consolidation.aspx&lt;/a&gt;  or so its site claims) which has VMware at an extreme disadvantage. The Infrastructure client is nice, but without backup included it is pretty useless I think.&lt;/p&gt; &lt;p&gt;So theres my results starting out. I failed to mention…my test environment is a Dell Poweredge 1900….running Domain Controller, Exchange 2003, Ubuntu Web/DNS services, File/Print servers and a test WinXP. So far so good.&lt;/p&gt; &lt;p&gt;With that said….anyone else using ESXi in testing or production use? What are your backup thoughts? Please share!&lt;/p&gt; &lt;/div&gt;       &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6446807473139320417?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/6446807473139320417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/esxi-adventures_4551.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6446807473139320417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6446807473139320417'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/esxi-adventures_4551.html' title='ESXi Adventures -'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5415147268079858770</id><published>2008-08-11T16:40:00.002-04:00</published><updated>2009-09-17T15:10:02.069-04:00</updated><title type='text'>How does VMware ESXi Server compare to ESX Server?</title><content type='html'>&lt;h1 class="ww-important"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;From: http://www.virtualizationadmin.com/articles-tutorials/vmware-esx-articles/general/vmware-esxi-server-compare-esx-server.html?printversion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h1 class="ww-important"&gt;&lt;span&gt;How does VMware ESXi Server compare to ESX Server?&lt;/span&gt;&lt;/h1&gt;  &lt;!-- &lt;&lt;&lt; setitle  = "How does VMware ESXi Server compare to ESX Server?" sedescr  = "In this article we explain how VMware ESXi (the &amp;#8220;thin&amp;#8221; version) and ESX Server (the &amp;#8220;full version&amp;#8221;) compare to each other and why it is important to know the differences, as a VMware Virtualization Admin." sekeys  = "vmware esx vs vmware esxi, esx comparison, esxi comparison" setags  = "" seauthorname = "David Davis" seauthorurl = "http://www.VirtualizationAdmin.com/David_Davis/" seauthorrss = "" sesectionname = "General" sesectionurl = "http://www.VirtualizationAdmin.com/articles-tutorials/vmware-esx-articles/general/" sesectionrss = "" sepubdate = "08/06/2008"&gt;&gt;&gt; --&gt;     &lt;div id="art-descr"&gt;     &lt;img src="http://www.virtualizationadmin.com/img/upl/daviddavis-headshot21212074272149.jpg" alt="David Davis photo" width="75" /&gt;    &lt;ul&gt;&lt;li&gt;&lt;span&gt;Published:&lt;/span&gt;  &lt;strong&gt;Aug 06, 2008        &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Updated:&lt;/span&gt;  &lt;strong&gt;Aug 06, 2008        &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Section:&lt;/span&gt;     &lt;strong&gt;&lt;a href="http://www.virtualizationadmin.com/articles-tutorials/vmware-esx-articles/general/"&gt;General&lt;/a&gt;&lt;/strong&gt;   &lt;/li&gt;&lt;li&gt;&lt;span&gt;Author:&lt;/span&gt;            &lt;strong&gt;&lt;a href="http://www.virtualizationadmin.com/David_Davis/"&gt;David Davis&lt;/a&gt;&lt;/strong&gt;        &lt;/li&gt;&lt;li id="am-printversion"&gt;&lt;strong&gt;&lt;a rel="nofollow" href="http://www.virtualizationadmin.com/articles-tutorials/vmware-esx-articles/general/vmware-esxi-server-compare-esx-server.html?printversion"&gt;Printable Version&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;In this article we explain how VMware ESXi (the “thin” version) and ESX Server (the “full version”) compare to each other and why it is important to know the differences, as a VMware Virtualization Admin. &lt;/div&gt;  &lt;div id="art-header"&gt;   &lt;/div&gt;    &lt;!-- &gt;&gt;&gt; --&gt;  &lt;h2&gt;Introduction&lt;/h2&gt; &lt;p&gt;Most of you are familiar with VMware ESX Server as it has been around for so many years. ESX Server offers the “service console” built in and it is a rather large installation (in comparison to ESXi). The latest version of ESXi is “thinner” and lacks the service console. You should note that ESXi is NOT a replacement for the traditional ESX Server but, instead, an alternate version available. In my opinion, neither of these versions is “better” than another. Instead, these two versions are just “different” from one another. Let us learn how these two differ and help you determine which one is best for you.&lt;/p&gt; &lt;h2&gt;What are the 10 major differences between VMware ESX Server and ESXi Server?&lt;/h2&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;1.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server has no service console&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;The traditional (full) ESX Server has a special built-in virtual machine called the “service console”. This service console is really a modified version of Red Hat Enterprise Linux that is installed and running in every ESX Server by default. The service console has special access to the VMware-proprietary VMFS file system. 3rd party applications can be installed in the service console and Linux-based utilities can be run in the service console. Additionally, VMware includes a number of ESX-related tools in the service console, most of which start with “&lt;b&gt;esxcfg-“&lt;/b&gt; and they are run by accessing the service console with SSH.&lt;/p&gt; &lt;p class="ListParagraph"&gt;As VMware ESXi Server has no service console, there is no SSH access to the server and there are no 3rd party applications that can be installed on the server. However, there are also benefits to NOT having these features (discussed more below).&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;2.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server uses RCLI instead of service console utilities&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;As ESXi doesn’t have any CLI with VMware-related or Linux utilities, VMware needed to provide a CLI interface to ESXi. What VMware came up with is the Remote Command line Interface (RCLI). This is an application that you typically install as a VM and it is used to perform scheduled or ad hock scripting on the VMware Infrastructure. The ESXi RCLI is its own command line where ESX server service console scripting would be made up of mostly Linux utilities.&lt;/p&gt; &lt;p class="ListParagraph"&gt;For more information on how to manage ESXi, take a look at &lt;a href="http://www.vmware.com/files/pdf/vmware_esxi_management_wp.pdf" target="_blank"&gt;Managing VMware ESXi&lt;/a&gt;.&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;3.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server is extremely thin  = fast installation + faster boot&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;Because the service console has been removed from ESXi, the footprint in memory has been reduced to just 32MB. In my opinion, it is truly amazing that you can run a hypervisor, allowing you to run virtual machines on your server, with just 32MB of RAM overhead. In comparison, the full ESX Server on disk footprint is about 2GB.&lt;/p&gt; &lt;p class="ListParagraph"&gt;Because the hypervisor is so small, the installation happens in about 10 minutes (or so) and the server boots up in 1-2 minutes. This is quite different from the full ESX server installation and boot, both of which are longer. &lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;4.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server can be purchased as an embedded hypervisor on hardware&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;While ESXi is so small that it can be easily installed and can even be booted from a USB Flash disk, what is truly unique about ESXi is that it is being sold by hardware vendors as a built-in hypervisor. That means that, say, you buy a Dell server, ESXi can be built inside the server (embedded) on a flash chip, on the motherboard. There is no installation of ESXi on disk. &lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;5.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server’s service console (firewall) is configured differently &lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;As there is no service console to protect with the ESX Server security profile (software firewall), the security profile configuration in ESXi is very simplistic. The ESXi security profile configuration consists of a couple of services that you can either enable or not enable with inbound access. Here is a comparison between the two:&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;img alt="" src="http://www.virtualizationadmin.com/img/upl/image0021217851729920.jpg" align="baseline" border="0" hspace="0" /&gt;&lt;br /&gt;&lt;b&gt;Figure 1: &lt;/b&gt;ESXi Security Profile – only 2 services&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;img alt="" src="http://www.virtualizationadmin.com/img/upl/image0041217851729920.jpg" align="baseline" border="0" hspace="0" /&gt;&lt;br /&gt;&lt;b&gt;Figure 2:&lt;/b&gt; VMware ESX Server (full) Security Profile&lt;/p&gt; &lt;p class="ListParagraph"&gt;For more information on how to configure VMware ESX Server Security Profiles – see my VirtualizationAdmin.com article &lt;span style="color: rgb(38, 57, 122);"&gt;&lt;a href="http://www.virtualizationadmin.com/articles-tutorials/vmware-esx-articles/general/schedule-tasks-vmware-infrastructure-client-esx-server.html"&gt;How to schedule tasks with the VMware Infrastructure Client and ESX Server.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;6.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server has a “yellow firmware console”&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;Instead of the full ESX Server “service console” boot (which looks like a Linux server booting), ESXi has a tiny “Direct Console User Interface (DCUI)”. Unofficially, I like to call this the “yellow firmware console”. In this ESXi console, all that you can configure are some very basic ESXi server options such as the root user password, network settings, and a couple other items. In the graphic below, you can see why I call it “yellow”:&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;&lt;img alt="" src="http://www.virtualizationadmin.com/img/upl/image0061217851729920.jpg" align="baseline" border="0" hspace="0" /&gt;&lt;br /&gt;Figure 3: &lt;/b&gt;ESXi yellow firmware console / DCUI&lt;/p&gt; &lt;p class="ListParagraph"&gt;Because this tiny firmware console (did I mention that it’s yellow?) has so few features, the server is virtually “stateless”. A new server can be configured in seconds because there is almost nothing to configure.&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;7.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server has server health status built in&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;With ESXi some hardware monitoring features are built into the hypervisor. With ESX Server, this is not yet built in. Instead, you must install hardware monitoring software in the service console. For more information on ESXi server health status and how to install vendor-specific utilities to provide similar information on ESX Servers, please see my article: &lt;a href="http://searchvmware.techtarget.com/tip/0,289483,sid179_gci1318945,00.html" target="_blank"&gt;Obtaining server health status in VMware ESX and VMware ESXi&lt;/a&gt;.&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;&lt;img alt="" src="http://www.virtualizationadmin.com/img/upl/image0081217851743232.jpg" align="baseline" border="0" hspace="0" /&gt;&lt;br /&gt;Figure 4: &lt;/b&gt;ESXi Health Status&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;8.       &lt;/b&gt;&lt;b&gt;Some networking features are configured through the service console are not available or are experimental&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;As ESXi is relatively new and as ESX server has the option to install code for advanced ESX Server features, not all features available in the full ESX Server are also available in ESXi. In fact, I have had issues getting VMware High Availability (VMHA) to work in ESXi. VMHA was not officially supported on ESXi until some recent patches came out for ESXi. Still, even after the patches, I had difficulties with ESXi and VMHA. &lt;/p&gt; &lt;p class="ListParagraph"&gt;There are other ESX Server features that are “experimental” on ESXi. For the full list visit: &lt;a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=1003345" target="_blank"&gt;Differences in Supported Networking Features Between ESX Server 3.5 and ESX Server 3i&lt;/a&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;9.       &lt;/b&gt;&lt;b&gt;VMware ESXi Server requires fewer patches and less rebooting&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;Because the full ESX server essentially has a modified Linux system as the service console, there are many patches that have to be deployed to keep it secure. With ESXi, on the contrary, the server has very few patches that need to be applied. Because ESXi has no service console and it is considered more secure and more reliable. Security, Reliability, and Maintainability, are all major factor when considering a hypervisor.&lt;/p&gt; &lt;p class="ListParagraph"&gt;&lt;b&gt;10.   &lt;/b&gt;&lt;b&gt;You can buy VMware ESXi Server for as little as $495&lt;/b&gt;&lt;/p&gt; &lt;p class="ListParagraph"&gt;With the full version of ESX Server, the least expensive purchase option is the Foundation (Starter) kit for about $1,500, while you can purchase ESXi only (with no support) for $495. On the other hand, if you do get the Foundation kit, you not only get the full ESX Server but also ESXi and a number of VMware Infrastructure Suite options. Still, obtaining ESXi for under $500 allows a server to do so much more than it ever could before.&lt;/p&gt; &lt;h2&gt;Which version of VMware ESX Server is best for you?&lt;/h2&gt; &lt;p&gt;I am not here to sell you on VMware, on ESX Server, or ESXi Server, what I am here to do is to inform you of the drastic differences between these two versions of “ESX Server”. In my opinion, ESX Server (full) must be used if you have 3rd party apps or if you just want to have access to the “Linux-style” service console. &lt;/p&gt; &lt;p&gt;On the other hand, if you are willing to give up those two benefits, with ESXi, you will get an ESXi Server that boots faster, has fewer patches to deploy, and is more reliable. ESXi is also the least expensive option. &lt;/p&gt; &lt;p&gt;I recommend testing both VMware ESX Server and ESXi server. Both are available for a free evaluation download from VMware Inc.&lt;/p&gt; &lt;h2&gt;Conclusion&lt;/h2&gt; &lt;p&gt;In this article, you learned about VMware ESX Server the differences between ESXi and ESX Server. Additionally, you learned about how to make the right choice for you. Both of these hypervisors from VMware can be evaluated at no cost. &lt;/p&gt; &lt;p&gt;For more information on VMware ESXi and its architecture, take a look at: VMware.com Whitepaper – the &lt;a href="http://www.vmware.com/files/pdf/vmware_esxi_architecture_wp.pdf" target="_blank"&gt;Architecture of VMware ESXi&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;For information on ESXi’s features, visit: &lt;a href="http://www.vmware.com/products/esxi/features.html" target="_blank"&gt;VMware.com ESXi Features&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5415147268079858770?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5415147268079858770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/how-does-vmware-esxi-server-compare-to_5972.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5415147268079858770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5415147268079858770'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/how-does-vmware-esxi-server-compare-to_5972.html' title='How does VMware ESXi Server compare to ESX Server?'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-7473978957104434717</id><published>2008-08-11T16:38:00.002-04:00</published><updated>2009-09-17T15:10:01.171-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>iSCSI Initiator Support on FreeBSD 7</title><content type='html'>Thanks to http://www.cyberciti.biz/faq/freebsd-iscsi-initiator-howto/&lt;br /&gt;&lt;br /&gt;Q. How do I install and configure iSCSI initiator service under FreeBSD server?&lt;br /&gt;&lt;br /&gt;A. FreeBSD 7.x has full support for iSCSI. Older version such as FreeBSD 6.3 requires backport for iSCSI. Following instruction are known to work under FreeBSD 7.0 only.&lt;br /&gt;FreeBSD iscsi_initiator driver&lt;br /&gt;&lt;br /&gt;The iscsi_initiator implements the kernel side of the Internet SCSI (iSCSI) network protocol standard, the user land companion is iscontrol and permits access to remote virtual SCSI devices via cam.&lt;br /&gt;Compile driver&lt;br /&gt;&lt;br /&gt;Please note that FreeBSD 7.x has this driver compiled by default. You can skip this step if driver exists at /boot/kernel/iscsi_initiator.ko. To compile this driver into the kernel,&lt;br /&gt;# cd /usr/src/sys/i386/conf&lt;br /&gt;# cp GENERIC ISCSIKERNEL&lt;br /&gt;# vi ISCSIKERNEL&lt;br /&gt;Place the following lines in your kernel configuration file:&lt;br /&gt;device iscsi_initiator&lt;br /&gt;Save and close the file. Building a Kernel, type the following commands:&lt;br /&gt;# cd /usr/src&lt;br /&gt;# make buildkernel KERNCONF=ISCSIKERNEL&lt;br /&gt;Install the new kernel:&lt;br /&gt;# make installkernel KERNCONF=ISCSIKERNEL&lt;br /&gt;Now reboot the system:&lt;br /&gt;# reboot&lt;br /&gt;Install iSCSI Initiator driver under FreeBSD&lt;br /&gt;&lt;br /&gt;You need FreeBSD kernel driver for the iSCSI protocol. You need to use driver called /boot/kernel/iscsi_initiator.ko. You can load this driver by typing following command as root user:&lt;br /&gt;# kldload -v iscsi_initiator.ko&lt;br /&gt;Output:&lt;br /&gt;&lt;br /&gt;Loaded iscsi_initiator.ko, id=6&lt;br /&gt;&lt;br /&gt;Alternatively, to load the driver as a module at boot time, place the following line in /boot/loader.conf:&lt;br /&gt;# vi /boot/loader.conf&lt;br /&gt;# Beginning of the iSCSI block added by Vivek&lt;br /&gt;iscsi_initiator_load="YES"&lt;br /&gt;# End of the block added by Vivek&lt;br /&gt;Save and close the file.&lt;br /&gt;FreeBSD iscontrol command to login / negotiator / control for an iSCSI initiator session&lt;br /&gt;&lt;br /&gt;Now, you need to use iscontrol command. First, do a discovery session and exit:&lt;br /&gt;# iscontrol -d targetaddress=iSCSI-SERVER-IP-ADDRESS initiatorname=nxl&lt;br /&gt;# iscontrol -v -d targetaddress=192.168.1.100 initiatorname=nxl&lt;br /&gt;Please note down the list of available targetnames/targetadresses. Once you know the target name, edit /etc/iscsi.conf file:&lt;br /&gt;# vi /etc/iscsi.conf&lt;br /&gt;Append config directives as follows:&lt;br /&gt;&lt;br /&gt;officeiscsi {&lt;br /&gt;        authmethod      = CHAP&lt;br /&gt;        chapIName       = YOUR-ISCSI-USERNAME&lt;br /&gt;        chapSecret      = YOUR-ISCSI-PASSWORD&lt;br /&gt;        initiatorname   = nxl&lt;br /&gt;        TargetName      = iqn.XYZZZZZZZZZZZZZ #  whatever "iscontrol -v -d " gives you&lt;br /&gt;        TargetAddress   = 192.168.1.100:3260,1 # your iscsi server IP&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Save and close the file.&lt;br /&gt;Where,&lt;br /&gt;&lt;br /&gt;    * officeiscsi { : Start config for iSCSI.&lt;br /&gt;    * authmethod : Set authentication method to chap&lt;br /&gt;    * chapIName : Your username&lt;br /&gt;    * chapSecret : Your password&lt;br /&gt;    * initiatorname : if not specified, defaults to iqn.2005-01.il.ac.huji.cs:&lt;hostname&gt;&lt;br /&gt;    * TargetName : is the name by which the target is known, not to be confused with target address, either obtained via the target administrator, or from a discovery session.&lt;br /&gt;    * TargetAddress : is of the form domainname[:port][,portal-group-tag] to quote the RFC: The domainname can be specified as either a DNS host name, a dotted-decimal IPv4 address, or a bracketed IPv6 address as specified in [RFC2732].&lt;br /&gt;    * } : End of config&lt;br /&gt;&lt;br /&gt;Start an iSCSI session&lt;br /&gt;&lt;br /&gt;The following command will read options from /etc/iscsi.conf, use the targetaddress found in the block nicknamed myiscsi, login and negotiate whatever options are specified, and start an iscsi-session.&lt;br /&gt;# iscontrol -c /etc/iscsi.conf -n officeiscsi&lt;br /&gt;Once you run the iscontrol command it should create a new device in /dev directory. To see the device name run dmesg command:&lt;br /&gt;# dmesg&lt;br /&gt;Format iSCSI volume&lt;br /&gt;&lt;br /&gt;Now run sysinstall command to format just discovered iSCSI device name at /dev location:&lt;br /&gt;# sysinstall&lt;br /&gt;Select Custom &gt; 3 Partition &gt; Select iSCSI device name such as da1. Once formatted just mount device, enter:&lt;br /&gt;# mkdir /iscsi&lt;br /&gt;# mount /dev/da1s1 /iscsi&lt;br /&gt;You may also need to update /etc/fstab file:&lt;br /&gt;/dev/ad1s1 /iscsi ufs rw 3 3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-7473978957104434717?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/7473978957104434717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/iscsi-initiator-support-on-freebsd-7_2520.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7473978957104434717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7473978957104434717'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/iscsi-initiator-support-on-freebsd-7_2520.html' title='iSCSI Initiator Support on FreeBSD 7'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-8432323320297825036</id><published>2008-08-09T07:26:00.002-04:00</published><updated>2009-09-17T15:10:02.092-04:00</updated><title type='text'>get in shape with little or no equipment:</title><content type='html'>http://lifehacker.com/400053/get-in-shape-with-little-or-no-equipment&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-8432323320297825036?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/8432323320297825036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/get-in-shape-with-little-or-no_5465.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8432323320297825036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8432323320297825036'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/get-in-shape-with-little-or-no_5465.html' title='get in shape with little or no equipment:'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-5406581382680085608</id><published>2008-08-08T07:23:00.002-04:00</published><updated>2009-09-17T15:10:01.186-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>ESXi - [Unsupported] Console Access</title><content type='html'>ESXi - [Unsupported] Console Access&lt;br /&gt;&lt;br /&gt;To access the ESXi console in unsupported mode do the following.&lt;br /&gt;&lt;br /&gt;1. Open the console of your ESXi host, you should see a screen that look something like the following ( altered to protect the innocent ):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Use the key-combo Alt+F1, and you'll bounce to a virutal terminal (vtty1) with some log messages in it. Though you won't get a response to any characters that you type in here type 'unsupported' and then hit enter.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Once you access the unsupported mode, you'll be greeted with a friendly reminder that you shouldn't be accessing the console without the help of your friendly neighborhood VMware support engineer. Enter your root password here and you'll have unfettered access to the console. Some of your old friends are still here like esxtop and esxcfg-mpath, and so are some new ones like esxcfg-locker.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard warnings apply here. You really shouldn't be messing around in here if you don't know what you're doing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-5406581382680085608?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/5406581382680085608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/esxi-unsupported-console-access_9783.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5406581382680085608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/5406581382680085608'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/08/esxi-unsupported-console-access_9783.html' title='ESXi - [Unsupported] Console Access'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-7407384331431069714</id><published>2008-07-31T08:09:00.002-04:00</published><updated>2009-09-17T15:10:02.109-04:00</updated><title type='text'>Lol...Very interesting article on people types who will ruin your party...</title><content type='html'>http://www.holytaco.com/2008/07/29/8-people-who-will-ruin-your-party/&lt;br /&gt;&lt;br /&gt;Throwing a party is a lot of work, so it’s a real disappointment when somebody you invited ruins it. Here’s 8 types of people to watch out for before you make your next invite list.&lt;br /&gt;&lt;br /&gt;8. Person Who Insists On Cleaning Up Your Party While It’s Still Going On&lt;br /&gt;&lt;br /&gt;WHERE YOU CAN FIND THEM: Right in front of you, asking if your drink is finished. Or, methodically moving through the party with a white trash bag and a look on their face as if they’ve been hunting Osama Bin laden for the last 6 years and have narrowed down his whereabouts to somewhere in this party.&lt;br /&gt;&lt;br /&gt;WHY THEY WILL RUIN YOUR PARTY: Drinking a beer, much like sex, is far less enjoyable when someone is asking you if you’re finished every five minutes. It’s great that they want to help you clean up, but if you’ve decided to have a party, you’ve already resigned yourself to the fact that when it’s over, your house is going to probably look like the bathroom that Cary Elwes and Danny Glover woke up in, in the first Saw movie. I wonder if these people also decide to wipe their ass in the middle of taking a shit, just to “cut down on the work that has to be done when it’s all over!”&lt;br /&gt;&lt;br /&gt;7. GUY WHO GETS WASTED IN THE FIRST HOUR&lt;br /&gt;&lt;br /&gt;WHERE YOU WILL FIND HIM: Right by the fridge, bro, cause that’s where all the beer is!&lt;br /&gt;&lt;br /&gt;HOW HE WILL RUIN YOUR PARTY: From the moment this guy shows up, everything he says has an exclamation point at the end of it. “This party rules, dude!” “I am ready to party TO-night!” “Let’s shotgun these, bro!” “Tits!” Then, one hour and 13 beers later this guy is incoherent, weaving on his feet and saying stuff like “Paartyyyygjlskdvm…” So, instead of kicking back and hanging out with your friends, you have to spend the rest of the night making sure he doesn’t puke on your couch, piss in your plants or crap on your coffee table.&lt;br /&gt;&lt;br /&gt;6. Person Who Only Knows You&lt;br /&gt;&lt;br /&gt;WHERE YOU CAN FIND THEM: About two feet to the right of you, standing silently, staring at either you or the person you’re talking to.&lt;br /&gt;&lt;br /&gt;WHY THEY WILL RUIN YOUR PARTY: You invited them because during the four and a half minutes a day you talk to them at work, they seem pretty cool and/or really enjoy the impression you do of a fellow coworker. Except as soon as they get to your party, they tense up like Alex Rodriguez’s asshole during a game in October. You have two options at this point, 1) entertain them and include them in every conversation you have the entire night, like they’re your wife or husband even though you probably don’t know their last name, or 2) leave them on their own which leads to them standing in a corner by themselves, staring at you, causing your friends to ask you “I think that dude in the corner is planning on raping you.”&lt;br /&gt;&lt;br /&gt;5. GIRL WHO STARTS CRYING&lt;br /&gt;&lt;br /&gt;WHERE YOU WILL FIND HER: She’s usually holed up in the bathroom (taking up valuable toilet space) with three of her bestest girlfriends—all three of whom are overweight.&lt;br /&gt;&lt;br /&gt;HOW SHE WILL RUIN YOUR PARTY: The worst part is that this girl isn’t crying because her parents just died or she lost a limb. She’s sobbing into a fistful of tissues because she always needs to be the center of attention. If everyone’s not focused on her and all her problems, she just starts crying louder about her job or some lame guy who won’t date her or how fat her friends are. This means you either sit there and let her bring down the vibe of your party or you take her outside and listen to her whine about absolutely nothing. If possible, pair her up with the super wasted guy. She’ll think he’s listening and he’ll think he’s going to score.&lt;br /&gt;&lt;br /&gt;4. Person Who Just Got Dumped By Their Girlfriend/Boyfriend&lt;br /&gt;&lt;br /&gt;WHERE YOU CAN FIND THEM: In any corner where they were able to trap and force someone to listen to them talk about how they “don’t know what happened,” and how it “seemed like things were fine and then all of a sudden she just said that she thought that we were different people now. What does that even mean? Do you know, because I sure as fuck don’t! I just miss her so much. My name’s Brian by the way.”&lt;br /&gt;&lt;br /&gt;WHY THEY WILL RUIN YOUR PARTY: If I wanted people to get depressed as fuck at my party, I’d screen a copy of Schlindler’s list. The problem with these people is, they don’t care who they talk to, and no excuse you give will stop them from talking to you. “Hey, I gotta run to the bathroom,” “No worries, I’ll just wait for you until your done, unlike my EX girlfriend, who wouldn’t wait no matter HOW important it was to go to the bathroom and would just leave you with NOTHING while you were in there.”&lt;br /&gt;&lt;br /&gt;3. Creepy Dude Who Tries To Bang Chicks At The Very End Of The Party&lt;br /&gt;&lt;br /&gt;WHERE YOU CAN FIND THEM: Towards the end of the party, he’ll be wherever he hears the words “I can’t believe my friends left without me, they were my ride!” or “I’m so (hiccup) fucked up (hiccup) I gotta lay down or something.”&lt;br /&gt;&lt;br /&gt;WHY THEY WILL RUIN YOUR PARTY: There’s a reason why this dude waits till the end of the party to try and score; he’s way too fucking creepy to do so when someone isn’t in some sort of desperate situation. Thus, although he’s there because he’s either family, a neighbor, or someone else invited him, you now have to hope to God he doesn’t take advantage of someone at your party, otherwise your party will not be remembered as “That Fourth of July Party at Bill’s house,” and instead be remembered as “that party at Bill’s house where that creepy guy tried to fingerbang Michele while she was puking.”&lt;br /&gt;&lt;br /&gt;2. Couple Who Brings Their Baby&lt;br /&gt;&lt;br /&gt;COUPLE WHO BRING THEIR BABY: Off to the side, on their knees, pleading with a 6 month old child to stop screaming or right next to you, asking you where he can dispose of a shit filled diaper.&lt;br /&gt;&lt;br /&gt;WHY THEY WILL RUIN THEIR PARTY: Nothing says party like the sound of a screaming child and the stench of talcum powder and baby diarrhea! If there was a dude puking, shitting and crying at your party, would you be cool with that? No, you’d either be like “Who the fuck brought this guy?” But if you say that about a baby suddenly that makes you an asshole. Meanwhile, the party sucks becase everyone is being super cautious and attentive to the baby, as if the other 99% of the time that they’re not there the baby is barely eluding death due to unsupervision.&lt;br /&gt;&lt;br /&gt;1. THE POLITICS GUY&lt;br /&gt;&lt;br /&gt;WHERE YOU WILL FIND HIM: At the beginning of the night he usually stands right next to the front door where he overtly shows off his political button or T-shirt that says something like “Once You Go Barack, You Won’t Go Back” or “McCain = McStupid.” Then, after everyone shows up, he stealthily mingles from group to group while nonchalantly dropping lines like “Did you see what those fatcats tried to pull?” anytime there’s a lull in the conversation.&lt;br /&gt;&lt;br /&gt;HOW HE WILL RUIN YOUR PARTY: No one in the history of parties has ever changed their political beliefs based on some asshole screaming about health care reform in the kitchen of a two bedroom apartment. His endlessly tiresome factoids and statistics about how much oil we consume and how the death penalty doesn’t work will make your guests either leave or kill themselves where they stand.&lt;br /&gt;&lt;br /&gt;OTHER STUFF YOU MIGHT LIKE:&lt;br /&gt;&lt;br /&gt;8 Truthful Celebrity Autobiography Covers&lt;br /&gt;&lt;br /&gt;9 College Mascots That Should Be Real&lt;br /&gt;&lt;br /&gt;The 8 Places You Probably Lost Your Virginity&lt;br /&gt;&lt;br /&gt;Highlights Magazine: The Evil Version&lt;br /&gt;&lt;br /&gt;7 Best Paternity Results Reactions&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-7407384331431069714?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/7407384331431069714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/lolvery-interesting-article-on-people_1925.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7407384331431069714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7407384331431069714'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/lolvery-interesting-article-on-people_1925.html' title='Lol...Very interesting article on people types who will ruin your party...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6982784880731104347</id><published>2008-07-29T20:21:00.002-04:00</published><updated>2009-09-17T15:10:02.134-04:00</updated><title type='text'>Java...fail.</title><content type='html'>from: http://itmanagement.earthweb.com/entdev/article.php/3761921&lt;br /&gt;&lt;br /&gt;The 'Anti-Java' Professor and the Jobless Programmers&lt;br /&gt;By James Maguire&lt;br /&gt;July 29, 2008&lt;br /&gt;&lt;br /&gt;When I noticed that this list of the popular programming languages placed Java in the top position, I picked up the phone to call Robert Dewar. Several months back I interviewed Dewar, a professor emeritus of computer science at New York University, about Java’s role in the college classroom.&lt;br /&gt;What he said in that interview about Java in the classroom wasn’t pretty.&lt;br /&gt;&lt;br /&gt;In essence, he said that today’s Java-savvy college grad is tomorrow’s pizza delivery man. Their skills are so easily outsourced that they’re heading for near-term obsolescence.&lt;br /&gt;&lt;br /&gt;Dewar stresses that he’s not against Java itself. But the fact that Java is taught as the core language in so many colleges is resulting in a weak field of computer science grads, he says.&lt;br /&gt;&lt;br /&gt;The reason: students’ reliance on Java’s libraries of pre-written code means they aren’t developing the deep programming skills necessary to make them invaluable. Colleges, alarmed by falling CS enrollment, have dumbed down the course requirements. Consequently, CS majors sail through a curriculum of Math Lite, earning a smiley-face on their papers for “developing” projects using pre-built libraries.&lt;br /&gt;&lt;br /&gt;In the end, they graduate with a diploma whose value is questionable. They may be equipped for a dynamic career in fast food delivery, yet they are not fully prepared to compete against what is now a global field of rigorously educated software developers.&lt;br /&gt;&lt;br /&gt;But What About the List?&lt;br /&gt;&lt;br /&gt;But wait a second, Professor Dewar. (Actually, Dewar is both a professor and a CEO. He co-founded AdaCore, whose clients include Boeing and Lockheed Martin, so his experience includes decades in private industry.) I wanted to ask him, since this list of popular programming languges puts Java at No. 1 – ahead of biggies like C, C++ and Visual Basic – doesn’t that negate his theory?&lt;br /&gt;&lt;br /&gt;I mean, if Java is this popular, maybe universities should teach it first. It called “being in touch with the real world,” isn’t it?&lt;br /&gt;&lt;br /&gt;“This list is pretty meaningless in my opinion,” he says. “Using YouTube and Google to measure popularity just means that you pick up the buzz factor. Many serious application developers are not even present on the Web, which tends to overemphasize academic and hobbyist views. As the list itself says, this has nothing to do with quality of languages or level of usage.”&lt;br /&gt;&lt;br /&gt;“Furthermore, Java is mainly used in Web applications that are mostly fairly trivial,” Dewar says, with his characteristic candor. “If all we do is train students to be able to do simple Web programming in Java, they won't get jobs, since those are the jobs that can be easily outsourced. What we need are software engineers who understand how to build complex systems.”&lt;br /&gt;&lt;br /&gt;“By the way Java has almost no presence in such systems. At least as of a few months ago, there was not a single line of safety-critical Java flying in commercial or military aircraft. I recently talked to a customer who had a medium-sized application in Java, which was to be adapted to be part of a safety-critical avionics system. They immediately decided that this meant it would have to be recoded in a suitable language, probably either C or Ada.”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Robert Dewar (Ada, by the way, is down at No. 19 in the list of popular programming languages.)&lt;br /&gt;Dewar says he has been deluged with emails supporting his view that computer science programs must move beyond – far beyond – focusing on Java.&lt;br /&gt;&lt;br /&gt;“One was quite interesting,” he says. “It was from a software/hardware company in the Valley. The writer said that at the end of ads for software engineers, they added the sentence ‘This job will not involve any use of Java, or any Web-based application programming’, and that this single sentence was enough to essentially eliminate American applicants for their jobs – which was their idea; they felt they had wasted too much time interviewing incompetent college graduates.”&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;Questions for New CS Grads&lt;br /&gt;&lt;br /&gt;Dewar says that if he were interviewing applicants for a development job, he would quickly eliminate the under-trained by asking the following questions:&lt;br /&gt;&lt;br /&gt;1.) You begin to suspect that a problem you are having is due to the compiler generating incorrect code. How would you track this down? How would you prepare a bug report for the compiler vendor? How would you work around the problem?&lt;br /&gt;&lt;br /&gt;2.) You begin to suspect that a problem you are having is due to a hardware problem, where the processor is not conforming to its specification. How would you track this down? How would you prepare a bug report for the chip manufacturer, and how would you work around the problem?&lt;br /&gt;&lt;br /&gt;“I am afraid I would be met by blank stares from most recent CS graduates, many of whom have never seen assembly or machine language!” he says.&lt;br /&gt;&lt;br /&gt;Lest he go too far, Dewar stresses that there are indeed some graduates who are unquestionably well prepared.&lt;br /&gt;&lt;br /&gt;“There are a couple of top schools where I think the students come in knowing a heck of a lot and they leave knowing even more,” he says. “Places like Carnegie [Mellon] and MIT – those are not dummies who come out of those schools, by any means. So my comments don’t talk about everyone everywhere.”&lt;br /&gt;&lt;br /&gt;Anxiety Tremors&lt;br /&gt;&lt;br /&gt;To look back a few decades, universities once focused on programming languages that lent themselves to greater intellectual rigor, in Dewar’s view, like Fortran and Pascal.&lt;br /&gt;&lt;br /&gt;But with the tech revolution of the 1990s, a blizzard of change swept through university CS departments.&lt;br /&gt;&lt;br /&gt;“I can relate what happened at NYU and I think it’s probably pretty typical of many places,” he says. ”So we’re sitting around, and we ask, ‘What language should we teach?’ And it was “Oh, we’d like to teach Java.’ Now no one around the table actually knows Java. But they’re sure they want to teach it because it’s an upcoming language that the industry’s gonna use, and everyone will be doing everything in Java.”&lt;br /&gt;&lt;br /&gt;“And it sort of swept the field – pretty quickly. It swept away Pascal. At that time there were about 200 universities teaching ADA as a first language in the U.S. And a somewhat smaller number teaching C and C++. And it largely swept those away.”&lt;br /&gt;&lt;br /&gt;Java as a core teaching language is now universal. “A good indication is that the [college placement] AP class is exclusively Java. Used to be C and C++. So Java has a really dominant place in the university curriculum.”&lt;br /&gt;&lt;br /&gt;As the sunny 1990s gave way to the troubled 2000s, two seismic shifts hit the software industry: the dotcom bust and a steady flow of outsourcing headlines. Both factors helped turn a healthy crowd of CS students into a comparatively smaller cohort. Enrollment trended ever downward. Academic deans felt anxiety tremors.&lt;br /&gt;&lt;br /&gt;Here in 2008 the clouds are dark. “Everyone is desperately worried about the dropping enrollments – it’s dramatic,” Dewar says.&lt;br /&gt;&lt;br /&gt;“We had 650 [NYU] undergraduate students in advanced courses, it’s now less than 300. A huge change. And you’ll find that repeated across the country, it’s not isolated,” he says. “ You can imagine, if suddenly half your students disappear, then your budget gets under extreme pressure. The dean is unhappy if he sees that happening.”&lt;br /&gt;&lt;br /&gt;“These are market economies in most universities – no students, no faculty money, etc, etc.”&lt;br /&gt;&lt;br /&gt;In response, colleges have compromised – heavily – to attract students, Dewar explains. “So two things: reducing requirements and getting rid of annoying math courses and things like that. And also trying to make courses ‘fun.’ I believe that computer science should be fun, but the fun should come out of solving problems – not making pretty pictures. That’s the danger, I think.”&lt;br /&gt;&lt;br /&gt;The situation has the potential to turn into a vicious circle: Enrollment is down, so CS programs lower requirements. This in turn creates more CS grads who are replaced by outsourcing. As a result, news of this outsourcing keeps driving down CS enrollment – and the spiral continues.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;Solutions (And a Ray of Hope?)&lt;br /&gt;&lt;br /&gt;If it’s true that CS curriculums need to be improved, to be bulked up and made more in-depth, does Dewar foresee any improvements on the way?&lt;br /&gt;&lt;br /&gt;“I don’t know,” he says. “We got a fair amount of interest going. And a nice thing that’s happening is that there’s going to be an ACM [Association of Computer Machinery] point-counterpoint, with me writing the point and some guy from some other university writing the counterpoint on this whole issue.”&lt;br /&gt;&lt;br /&gt;“I just like to keep it as a topic of discussion. I know it strikes a chord among many university people, too. Part of the trouble with universities is that there are relatively few faculty members who know much about software. They know about the theory of computer science and the theory of programming languages. But there are relatively few faculty who really are programmers and software engineers and understand what’s involved in writing big applications.”&lt;br /&gt;&lt;br /&gt;“It’s just not the kind of thing that universities are into, really. Because they tend to regard computer science as a scientific field rather than an engineering field. So I’ve always felt that was a weakness.”&lt;br /&gt;&lt;br /&gt;Part of the problem is that programming is hard to teach. “Programming is a mixture of a highly technical skill and an aesthetic art. And that’s a very difficult combination.”&lt;br /&gt;&lt;br /&gt;Dewar sees at least four ways to better educate programmers:&lt;br /&gt;&lt;br /&gt;• More one-on-one mentoring “My most successful teaching of programming was when I worked one-on-one with people,” he says. Of course that’s difficult at the university level, with a teacher-student ratio of 30 to 1, or 90 to 1.&lt;br /&gt;&lt;br /&gt;• Read a whole lot of good code “One critical way of learning programming is to read a lot of code written by really good programmers. Most students don’t get that opportunity.”&lt;br /&gt;&lt;br /&gt;• Work in Groups “I would like to see much more in terms of group projects. Now they’re hard to grade, and grading stands in the way of education, often – and this is one of those ways. It’s the same problem a manager faces, really understanding how much everyone has contributed.”&lt;br /&gt;&lt;br /&gt;• Realize that “copying” code has value “It’s interesting when you think that the message that we give to students is: ‘You must do this all on your own, you mustn’t borrow anything from anyone else.’ And then we put them in a real industry situation and the message suddenly turns to, ‘Reuse code as much as you can.’ Real life programmers get good at using chunks of other people’s code.&lt;br /&gt;&lt;br /&gt;While those may all be good suggestions, Dewar’s voice alone isn’t enough to produce change. As he sees it, CS departments need to light a fresh fire.&lt;br /&gt;&lt;br /&gt;“I’ve got all these people saying ‘Yeah, Yeah, Yeah,’ but that’s not good enough to say ‘Yeah, Yeah, Yeah’ – you have to do something.”&lt;br /&gt;&lt;br /&gt;“One obvious thing is that we need to get much more industry presence in the ACM curriculum discussion, because that’s a real focus. ACM has a real influence over curriculums. Each year they produce a recommended computer science curriculum. So that’s a real entry point.”&lt;br /&gt;&lt;br /&gt;One obstacle: “The inertia is huge. So many members don’t really want to learn new stuff, particularly.”&lt;br /&gt;&lt;br /&gt;Still, amid his doubts, Dewar believes that a bright, well-trained CS grad can have a good career.&lt;br /&gt;&lt;br /&gt;“My feeling is, it’s not a field where any idiot will be able to get a high paying job. Which at the height of the dotcom thing, any idiot could get a high paying. But competent, well-educated students will be able to find jobs without problem. I think that’s a fairly widely held view.”&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;Gross.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6982784880731104347?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/6982784880731104347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/javafail_8844.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6982784880731104347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6982784880731104347'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/javafail_8844.html' title='Java...fail.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-7991067477890674120</id><published>2008-07-29T10:14:00.002-04:00</published><updated>2009-09-17T15:10:02.173-04:00</updated><title type='text'>How to Run Injury-Free By Jeff Galloway</title><content type='html'>How to Run Injury-Free&lt;br /&gt;By Jeff Galloway&lt;br /&gt;For Active.com&lt;br /&gt;June 13, 2007&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One of my proudest accomplishments is being free of overuse injuries for almost 30 years. Below you will find the risks and the ways to avoid them.&lt;br /&gt;&lt;br /&gt;My advice comes from working with over 200,000 runners in Galloway training groups, one-day running schools, Tahoe retreats, e-coaching and individual consultations. As the runners send me the results of my suggestions, I adjust the training and rest schedules. The current injury-free program is listed below, but I continue to look for better ways of avoiding problems and reducing downtime.&lt;br /&gt;&lt;br /&gt;Fewer days of training per week&lt;br /&gt;&lt;br /&gt;Those who run three days a week have the lowest rate of injury. I believe that almost all runners, except for Olympic candidates and world record aspirants, can be just as fit and perform as well running every other day. This may involve two-a-day workouts and more quality on each day.&lt;br /&gt;&lt;br /&gt;Having 48 hours between runs is like magic in repairing damage. Those who insert a short and slow jog on recovery day (junk miles) are not allowing for complete recovery. When a client complains about lingering aches and pains, I cut them back to every other day and the problems usually go away.&lt;br /&gt;&lt;br /&gt;Go slower on the long runs&lt;br /&gt;&lt;br /&gt;After 30 years of tracking injuries during marathon training programs, I've found that most are due to running the long ones too fast. You can't run the long ones too slowly -- you get the same endurance whether you go very fast or very slow. Slow running will allow your legs to recover faster. The fastest that I want our Galloway Training groups to run is two minutes per mile slower than goal pace. Many run three or four min/mi slower and experience very fast recovery. Be sure to slow down as the temperature increases: 30 sec/mi slower for each 5 degrees of temperature increase above 60 degrees Fahrenheit.&lt;br /&gt;&lt;br /&gt;More walk breaks&lt;br /&gt;&lt;br /&gt;The continuous use of any muscle used the same way, increases fatigue more rapidly. Continuing to run continuously, with fatigued muscles, will greatly increase the chance of injury. You'll see on my Web site the recommended frequency of walk breaks, based upon pace. If you have aches and pains already, it is best to walk more often, from the beginning, than is recommended. The most important walk breaks are those taken in the beginning of the run, for these can erase all of the fatigue. Walk breaks will also tend to produce a faster time in all races from 5K up. The average improvement in a marathon among those who've run several without walk breaks is 13 minutes faster by taking the strategic walks.&lt;br /&gt;&lt;br /&gt;Don't stretch if you have an ache, pain, or injury&lt;br /&gt;&lt;br /&gt;Stretching a tight or injured muscle or tendon will increase the damage dramatically. Even one stretch will produce tears in the fibers, resulting in a longer recovery. Stretching a muscle that has been tightened by running can injure it within a minute. Massage is a great way to deal with the natural tightening produced by running. The tightening is mostly a good thing, allowing you to run more efficiently.&lt;br /&gt;&lt;br /&gt;Be careful with speed training&lt;br /&gt;&lt;br /&gt;Speed workouts produce a lot of injuries. You can reduce the odds of this happening by warming up very well, doing a few light accelerations as described in my books Testing Yourself, Year-Round Plan, Half Marathon and Marathon. Other important injury-reduction factors are the following walking more between each speed repetition and staying smooth at the expense of time. Don't strain to run a certain time. This is most important at the end of a workout.&lt;br /&gt;&lt;br /&gt;Never push through pain, inflammation or loss of function&lt;br /&gt;&lt;br /&gt;If you experience one of the above, stop the run immediately. Continuing to run for another block or another lap will often produce multiples of damage requiring weeks or months off for repair -- instead of days.&lt;br /&gt;&lt;br /&gt;For more information, see Jeff's books Marathon, Half-Marathon, Running -- A Year Round Plan, Walking -- The Complete Book and Galloway's Book on Running, 2nd Ed. These are available, autographed, from www.RunInjuryFree.com. Join Jeff's blog: www.jeffgallowayblog.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-7991067477890674120?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/7991067477890674120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/how-to-run-injury-free-by-jeff-galloway_2741.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7991067477890674120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/7991067477890674120'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/how-to-run-injury-free-by-jeff-galloway_2741.html' title='How to Run Injury-Free By Jeff Galloway'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1779318666560207405</id><published>2008-07-29T07:08:00.002-04:00</published><updated>2009-09-17T15:10:02.192-04:00</updated><title type='text'>Healty diet foundations...just add meat. ;)</title><content type='html'>Snagged this from zenhabits:&lt;br /&gt;http://zenhabits.net/2008/07/the-building-blocks-of-a-super-healthy-diet-with-a-sample-meal-plan/&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;The Building Blocks of a Super Healthy Diet (with a sample meal plan)&lt;br /&gt;&lt;br /&gt;Most people know how to eat healthy, and know that they should — it’s just that when it comes down to implementing this knowledge, there’s a bridge that needs to be crossed from knowledge to action.&lt;br /&gt;&lt;br /&gt;How do you actually eat healthy, instead of just knowing that you should eat healthy?&lt;br /&gt;&lt;br /&gt;Create a meal plan, constructed with super healthy foods that you enjoy eating.&lt;br /&gt;&lt;br /&gt;Now, there are three parts of that solution, if you look closely, and all three parts are equally important:&lt;br /&gt;&lt;br /&gt;   1. Create a meal plan. Without this, you’ll just know what to eat, vaguely, but you need to actually make a plan and implement it (meaning, go shopping for the foods in the plan and actually cook the foods and eat them).&lt;br /&gt;   2. Super healthy foods. A meal plan without this doesn’t get you to where you want to go. Build your meals around stuff that’s really good for you. You can add other stuff, of course, but the super healthy stuff should be the majority of the food.&lt;br /&gt;   3. Food you really love. This is key. If you don’t enjoy the foods, you won’t stick with the plan for long. No one can eat food they don’t enjoy for more than a month or so (usually less). It’s why most diets fail — anyone can stick with a diet for a couple of weeks, but if you feel that you are suffering by eating it, you’ll fall off it after a little while. Instead, make sure you love your food. Add variety, of course, and mix up the plan every few weeks, but stick with foods you love.&lt;br /&gt;&lt;br /&gt;Given those simple components, the solution doesn’t seem so hard, does it? And with a super healthy meal plan like this — one that you love — you can pair it with some exercise and get healthier than ever.&lt;br /&gt;&lt;br /&gt;What follows are some of my building blocks. They aren’t the only possible building blocks, and you shouldn’t use them exclusively, but they’re a good starting point for anyone. Below those building blocks are some sample meals you can use, but only if you love these foods like I do. Instead of following it exactly, use it as a starting place, as a few ideas you can use to construct your own meal plan — with foods you love, not ones that I love.&lt;br /&gt;&lt;br /&gt;Super Healthy Building Blocks&lt;br /&gt;&lt;br /&gt;Spinach and other greens. Spinach is my favorite of the greens, but other good ones include kale, bok choi, collards, dark green lettuce (skip iceberg), and other similar greens. Try to build a couple of your meals around these greens, as they are high in fiber, vitamins and minerals. And best yet: super low in calories. You can eat a whole plate of greens and while they can fill you up, you couldn’t possibly get fat on them (unless you added a bunch of butter or fatty dressing or something like that).&lt;br /&gt;&lt;br /&gt;Avocadoes. I love these things. Full of good fats and good flavor, avocadoes are perfect for salads, sandwiches, wraps and more.&lt;br /&gt;&lt;br /&gt;Tomatoes. There are other good fruits and veggies, but tomatoes are one of my favorites, not only for their nutritional content but because of the flavor they add to any dish — salads, sandwiches, pastas, soups, anything.&lt;br /&gt;&lt;br /&gt;Fruits. Don’t worry about their “carb content”. Fruits are incredible snacks, because they are filled with fiber and vitamins but are low in calories. I eat lots of apples, oranges, bananas, mangoes, pears, grapes, melons. I like to get a big back of small apples and just munch on them whenever I’m hungry. I also add fruits to all kinds of uncooked meals, chopped up or as a side dish.&lt;br /&gt;&lt;br /&gt;Berries. They’re fruits, but they’re so special to me that I add them as a separate item. I absolutely adore berries. They are like a dessert to me, eaten cold and slowly and with my eyes closed. I add them to cereal, yogurt, smoothies, desserts, oatmeal and more … and of course just eat them by themselves.&lt;br /&gt;&lt;br /&gt;Nuts. Full of fiber and good fats and protein. I like to chop them up and put them in hot cereal or salads or stir frys, or just eat them raw and whole as snacks (almonds are my favorites). I also enjoy almond butter instead of peanut butter (although I eat both).&lt;br /&gt;&lt;br /&gt;Beans. Great sources of fiber and protein, low in calories, you can eat beans all day long. I like them in chili, soups, tacos and more. Get a variety — red, black, pinto, white, lentils.&lt;br /&gt;&lt;br /&gt;Whole grains. This is a broad category that includes all kinds of cereals, breads, wraps, brown rice, pizza dough, and more. Try to go for as much whole grain as possible — if you see “wheat flour” or “enriched wheat flour” it’s not as good. I especially like sprouted grains, such as Ezekiel sprouted bread or English muffins or cereals. Oatmeal is good (avoid instant) as is muesli.&lt;br /&gt;&lt;br /&gt;Olive or canola oil. You need fats, but they should be the good kind. Avoid saturated, although a little saturated fat is fine. I usually use olive oil or canola oil, although there are other good ones too. Again, nuts and avocadoes also provide good fats. I also use ground flaxseed on lots of things for fiber and good fats.&lt;br /&gt;&lt;br /&gt;Lean protein. As a vegetarian, I eat lean vegetable protein — lots of soy protein and beans and nuts. Whole grains also contain protein, as do other veggies. It’s not hard to meet your daily requirements, even with lots of exercise raising your requirements. However, if you’re not vegetarian, fish and lean poultry are best, and lean red meat can be included if you don’t eat too much of it. Note: Please, let’s not get into another debate about soy protein or meat! Let those sleeping dogs lie.&lt;br /&gt;&lt;br /&gt;Lean calcium. I try to stick to soy sources, but that’s not necessary for good health. However, try to stick with lower-fat versions, as whole dairy can have too much saturated fat. Lower-fat milk, yogurt, and cheese are good choices. Soy milk and yogurt are great because they are very low in saturated fat.&lt;br /&gt;&lt;br /&gt;A Sample Meal Plan&lt;br /&gt;&lt;br /&gt;This is not something you should just adopt wholesale, without making changes. In fact, if these are foods you don’t like, ditch the whole thing, but use it just to get an idea of what you can do. These are foods I love to eat, but you should choose your own.&lt;br /&gt;&lt;br /&gt;Also remember that I’m not a dietician. I’ve run these meals through online calculators, and most of the time you’ll get plenty of all the things you’ll need, from protein and healthy fats to the major vitamins and minerals, including calcium and iron. But don’t take my advice as the advice of an expert.&lt;br /&gt;&lt;br /&gt;Each day, you would choose one of the meals from each category (more from the snacks), or mix them up if you like. Be sure to get a variety, and change the options every few weeks or so.&lt;br /&gt;&lt;br /&gt;Breakfasts&lt;br /&gt;&lt;br /&gt;   1. Hot oatmeal (using rolled oats) with chopped fruits or dried fruits, flaxseed, and/or berries.&lt;br /&gt;   2. Kashi cereal with soymilk and berries or other fruits.&lt;br /&gt;   3. Sprouted grain toast with almond butter, chopped fruits on the side.&lt;br /&gt;   4. Scrambled tofu with tomatoes, mushrooms, spinach, onions. (Try this recipe).&lt;br /&gt;   5. Fried brown rice — fry up with olive oil, onions, mushrooms, green veggies, tofu, soy sauce or tamari sauce. You can throw in some corn or carrots or other veggies.&lt;br /&gt;&lt;br /&gt;Lunches&lt;br /&gt;&lt;br /&gt;   1. Veggie sandwich or wrap. Can have tomatoes, spinach or other greens, avocadoes, hummus, bell peppers, maybe some dijon mustard and/or Veganaise. Any combo that works for you. On thick whole grain bread or whole grain wrap.&lt;br /&gt;   2. Whole wheat pita with hummus. Add tomatoes and raw spinach and sprouts.&lt;br /&gt;   3. Veggie burger. Gardenburger is my favorite brand. On a sprouted grain bun, with dijon mustard and ketchup and maybe a touch of Veganaise, lots of veggies (greens, sprouts, tomatoes and avocadoes are my favorites). Add some homemade sweet potato fries (use olive oil and a little salt) if you’re feeling decadent. These fries also go well with the sandwich or wrap.&lt;br /&gt;   4. Amy’s Kitchen lunches. For when you’re lazy or in a hurry. Amy’s Kitchen has a whole variety of fairly healthy, vegetarian lunches made from whole foods. Very little processed stuff. The only weakness is that it’s usually high in sodium, but if the rest of your day is low in sodium (as most of these dishes are), then that’s not a worry.&lt;br /&gt;   5. Big salad. I like to use spinach or other greens, tomatoes, avocadoes, feta cheese, nuts, maybe some chopped fruit or berries, and a little bit of light vinaigrette (Newman’s Own is my favorite).&lt;br /&gt;   6. Leftovers from dinners or fried brown rice (see breakfasts)&lt;br /&gt;&lt;br /&gt;Snacks&lt;br /&gt;&lt;br /&gt;   1. Fruits.&lt;br /&gt;   2. Chopped veggies. Carrots, broccoli, edamame are some of my favs. Dip in hummus if you like.&lt;br /&gt;   3. Nuts. Almonds are my favorites.&lt;br /&gt;   4. Protein shake. Good after a strength workout. I use soy protein, although whey is also a good choice, along with soy milk, frozen berries, banana and ground flaxseed.&lt;br /&gt;   5. Clif Bar. Good for before or after a workout (or during a really long workout, for that matter). My favorites are apricot or cranberry apple cherry.&lt;br /&gt;   6. Yogurt with berries or fruits and nuts.&lt;br /&gt;&lt;br /&gt;Dinners&lt;br /&gt;&lt;br /&gt;   1. Tofu veggie stir fry. Just stir fry some onions, cubed tofu, and chopped veggies — various greens such as kale or bok choi work well, as do broccoli, bell peppers, carrots, anything really. Add some soy sauce or tamari, black pepper and anything else you’d like to add — nuts, sesame seed oil, ginger, garlic, a little honey all work well in different combinations. Serve over brown rice if you like.&lt;br /&gt;   2. Tacos. Some low-fat refried beans and/or black beans on soft corn tortillas with salsa (try Newman’s Own salsa or Amy’s), greens, tomatoes, maybe corn or even some Sour Supreme.&lt;br /&gt;   3. Chili. Here’s my veggie recipe. Great with brown rice or corn bread or on its own.&lt;br /&gt;   4. Spaghetti or other pasta. Cook any kind of pasta you like. Cook some onions with diced tomatoes and bell peppers and some tomato sauce and basil. Add some fresh Parmesan if you like. For a meatier version, cook some veggie “ground beef” (Bocca or MorningStar) with onions and then add some pre-made pasta sauce.&lt;br /&gt;   5. Homemade pizza. Get a pre-made whole-wheat pizza crust, add some pre-made spaghetti sauce, and then any chopped veggies you like, brushed with olive oil. Kale, broccoli, spinach, mushrooms, tomatoes, bell peppers all work great. Add some grated fresh cheese if you like.&lt;br /&gt;   6. Leo’s fabulous veggie soup. Simple awesome. Here’s the recipe. Will last you several days, even with a ridiculously large family like mine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1779318666560207405?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1779318666560207405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/healty-diet-foundationsjust-add-meat_3087.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1779318666560207405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1779318666560207405'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/healty-diet-foundationsjust-add-meat_3087.html' title='Healty diet foundations...just add meat. ;)'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-275389244888723888</id><published>2008-07-28T23:50:00.002-04:00</published><updated>2009-09-17T15:10:02.220-04:00</updated><title type='text'>select random thoughts...</title><content type='html'>me: hot blonde doctors rule ;(&lt;br /&gt;shane: who cares if she likes jason mraz, shes a girl shes supposed to like shitty music&lt;br /&gt;me: yeah, but she said she didn't know what techno was ;(&lt;br /&gt;shane: girls who like good music are usually ugly or whores &lt;br /&gt;me: lol!!&lt;br /&gt;me: i just told her that..and she agreed. thats a nice line of wisdom!&lt;br /&gt;&lt;br /&gt;-- later&lt;br /&gt;&lt;br /&gt;shane: if i ever get married i want to have a few best men, but at least you know you're the one that makes it ...&lt;br /&gt;me: ..i think those are called Groomsmen ;p&lt;br /&gt;me: if i ever get married, i wont have a best man, and my bitch of a wife wont have any bridesmaids either. im going to have a judge marry me in a court room with the scales of justice behind me.&lt;br /&gt;shane: lol&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-275389244888723888?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/275389244888723888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/select-random-thoughts_9869.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/275389244888723888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/275389244888723888'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/select-random-thoughts_9869.html' title='select random thoughts...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-9212449553572019885</id><published>2008-07-28T20:57:00.002-04:00</published><updated>2009-09-17T15:10:02.240-04:00</updated><title type='text'>OSX Server Woes - and I have to agree.</title><content type='html'>Here are some comments regarding the recent BIND problem and Apple's inaction in patching it thus far...and I have to say, the following two comments I must agree with, as I've had years of OS X server...Experience.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;As someone that's cursed to administer an OS X Server machine, I have nothing good to say about Apple in general and OS X Server in particular. Apple's history of patching---or, in this case, not patching---stuff has been lukewarm at best and downright abysmal at worst. The Server 10.5.3 update introduced something that causes ClamAV to crash/reboot a Server machine when mail is turned on (since ClamAV is on by default. Nice one. They've had other stellar examples of their extreme lack of QA for their Server software, such as updating their included PHP to a version that was known to break Squirrelmail (the default webmail that comes with OS X Server), even though a fix had been available for months from the PHP maintainers.&lt;br /&gt;&lt;br /&gt;I'm a huge fan of FreeBSD. I have been doing this OS X Server thing for more than two years now. I went in to it with an open mind, hoping that Apple wouldn't screw things up too badly. I was disappointed. The only things I've learned is that their Server QA is awful, they don't actually use their own Server software internally, their customer service is horrible when it comes to their Server stuff and their Server documentation is awful. I could rant about that for several pages. All of this leads me to believe that Apple really doesn't want to do well in the "server" segment of the market...Which is really too bad, cause they've finally got the hardware side of it to the point where there's not much separating them from most other low-end server vendors.&lt;br /&gt;&lt;br /&gt;Now, that I've got that all that off my chest, Apple's dropped the ball on the BIND update. This is not surprising. Anyone that's administered OS X Server for any length of time probably feels the same way. It's so bad that I will suppress my OS X experience next time I am in the job market again; I hope to never work with OS X (particularly as a server) again and will do everything in my power to avoid doing so. I'm batting a thousand on persuading people interested in using OS X Server to use anything else...Apple really has to get things together or get out of the "server" market.&lt;br /&gt;&lt;br /&gt;---&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-9212449553572019885?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/9212449553572019885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/osx-server-woes-and-i-have-to-agree_5290.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/9212449553572019885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/9212449553572019885'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/osx-server-woes-and-i-have-to-agree_5290.html' title='OSX Server Woes - and I have to agree.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-4843295618903622015</id><published>2008-07-28T09:04:00.002-04:00</published><updated>2009-09-17T15:10:02.263-04:00</updated><title type='text'>DVD/CD-Rom Drive problems ; Choppy Audio / Video</title><content type='html'>I was having problems with DVD-Audio and Video on one of our Laptops in Windows XP, it turned out to be transfer mode for the hardware controller in device manager; below is the solution that solved it for me:&lt;br /&gt;&lt;br /&gt;First off, go to:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Start -&gt; Settings -&gt; Control Panel -&gt; System&lt;br /&gt;&lt;br /&gt;This will open up a display. From here, on the top of this new window click on&lt;br /&gt;"HARDWARE"&lt;br /&gt;&lt;br /&gt;From under this tab, click on DEVICE MANAGER.&lt;br /&gt;&lt;br /&gt;Another window should open up with several listings. Look for the one called&lt;br /&gt;"IDE ATA/ATAPI controllers" or something very VERY similier to this.&lt;br /&gt;&lt;br /&gt;Click on the + next to the name, a list of other things should drop down under it.&lt;br /&gt;&lt;br /&gt;From in here, we ONLY want to look at&lt;br /&gt;SECONDARY IDE CHANNEL&lt;br /&gt;&lt;br /&gt;This is because, such things like your CD-ROM, DVD-ROM etc are connected through this.&lt;br /&gt;&lt;br /&gt;Now, this is what you need to look for in the Secondary IDE Channel&lt;br /&gt;&lt;br /&gt;Right click Secondary and select Properties&lt;br /&gt;&lt;br /&gt;Another window will open up, look for the Tab named Advanced Settings and click on it.&lt;br /&gt;&lt;br /&gt;Under this tab you should see two box's.&lt;br /&gt;&lt;br /&gt;DEVICE 0 and DEVICE 1&lt;br /&gt;&lt;br /&gt;NOTE: DEVICE 1 under CURRENT TRANSFER MODE might state it does not apply. If so, ignore it, if it does not state that it is not in use, then do the same for DEVICE 1 as you do for DEVICE 0&lt;br /&gt;&lt;br /&gt;In Device 0 it should read out as following, there should not be anything stating PIO unless your computer is fairly old (like... 1999 or older.. it varies):&lt;br /&gt;-----------------------------------------&lt;br /&gt;DEVICE TYPE: Auto Detection&lt;br /&gt;Transfer Mode: DMA if available&lt;br /&gt;Current Transfer Mode: Ultra DMA Mode 5&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;br /&gt;Now, Current Transfer Mode can say something different.&lt;br /&gt;EX: Mode 1 is a slower form, and Mode 5 is very fast as in Ultra Quick. So it may display something a bit different, as long as it states it is in DMA mode it should be alright. Also, it may say something like.. "Multi-Word DMA Mode 2"&lt;br /&gt;&lt;br /&gt;IF&lt;br /&gt;TRANSFER MODE: "PIO Only"&lt;br /&gt;switch that over to "DMA if available" and restart your computer.&lt;br /&gt;Once restarted, come back in and continue the checks from this point&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;br /&gt;IF&lt;br /&gt;-----------------------------&lt;br /&gt;TRANSFER MODE: "DMA if available"&lt;br /&gt;Current Transfer Mode: PIO Mode&lt;br /&gt;-----------------------------&lt;br /&gt;Then we have a problem, if this is TRUE, then click on the Driver Tab in this window at the top.&lt;br /&gt;&lt;br /&gt;From here, Uninstall Drivers.&lt;br /&gt;It will give you a warning, no worries, continue on. Once you restart your computer it will automatically detect the devices and reinstall everything for you.&lt;br /&gt;&lt;br /&gt;Once done, try playing your DVD and see if it works. If not, go back in and make sure everything is the way it should be.&lt;br /&gt;&lt;br /&gt;If not, sorry, you could try this again if you'd wish.&lt;br /&gt;&lt;br /&gt;Causes for this changing over to PIO mode:&lt;br /&gt;&lt;br /&gt;Disk Errors on the cd/dvd disk itself can cause this. For an example of what caused mine:&lt;br /&gt;&lt;br /&gt;I've been playing Final Fantasy IX on my laptop using an emulator. Though, alot of the copies of DISK 2 for the game were bad copies and have corrupted files on it. I kept trying to play past these corrupted parts.&lt;br /&gt;&lt;br /&gt;Sometimes, this repeated use to read the disk and it having to skip back and fourth trying to kicked it into another mode.. this usually happens after five or so of these. A dirty lense causing it to have plenty of trouble or dirty disk could also do the same thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-4843295618903622015?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/4843295618903622015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/dvdcd-rom-drive-problems-choppy-audio_3949.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4843295618903622015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/4843295618903622015'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/dvdcd-rom-drive-problems-choppy-audio_3949.html' title='DVD/CD-Rom Drive problems ; Choppy Audio / Video'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3384405173387294937</id><published>2008-07-23T06:25:00.002-04:00</published><updated>2009-09-17T15:10:02.299-04:00</updated><title type='text'>when I see things like this it upsets me:</title><content type='html'>Jan 9 2008 8:48 PM&lt;br /&gt;&lt;br /&gt;Hey man! God has blessed us both with a great job! How awesome is He! He is even allowing us to work together! God is good! Thanks for your help man!&lt;br /&gt;&lt;br /&gt;wooooo yay 4 god...hes letting us work together!!!&lt;br /&gt;I'm sure he held a gun to the hiring manager's head, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3384405173387294937?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3384405173387294937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/when-i-see-things-like-this-it-upsets_7781.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3384405173387294937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3384405173387294937'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/when-i-see-things-like-this-it-upsets_7781.html' title='when I see things like this it upsets me:'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3636885499570261865</id><published>2008-07-14T13:26:00.002-04:00</published><updated>2009-09-17T15:10:01.006-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'></title><content type='html'>http://eriwen.com/tools/grep-is-a-beautiful-tool/&lt;br /&gt;&lt;br /&gt;  grep is a beautiful tool&lt;br /&gt;July 13th, 2008 | Category: Productivity, Tools&lt;br /&gt;&lt;br /&gt;Global Regular Expression Print is a staple of every command-line user’s toolbox. As with find, it derives a lot of power from being combined with other tools and can increase your productivity significantly.&lt;br /&gt;&lt;br /&gt;Following is a simple tutorial that will help you realize the power of this simple and most useful command. If you are on Windows and haven’t already, download and install Cygwin. If you are also new to regular expressions (regex), here is a great regular expressions reference to get you started.&lt;br /&gt;Tutorial&lt;br /&gt;&lt;br /&gt;Suppose we want to search for duplicate functions in all of our JavaScript files. Let’s start basic and work up to it. This technique can be used to search for a TON of duplicate items like:&lt;br /&gt;&lt;br /&gt;    * Duplicate HTML IDs&lt;br /&gt;    * Check how many times a CSS class is used&lt;br /&gt;    * Duplicate java classes&lt;br /&gt;    * many, many more…&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;      # Search JS files in this directory for "function" &lt;br /&gt;   2.&lt;br /&gt;      grep function *.js  &lt;br /&gt;&lt;br /&gt;# Search JS files in this directory for "function"&lt;br /&gt;grep function *.js&lt;br /&gt;&lt;br /&gt;The above command will print the lines containing "function" in all JavaScript files in the current directory (NOT subdirectories). Printing out line contents would be much more helpful if we knew what files they come from and their line numbers:&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;      # Print filenames, line #s, and lines that start with "(white space)function" &lt;br /&gt;   2.&lt;br /&gt;      grep -EHn "^\s*(function \w+|\w+ \= function)" *.js  &lt;br /&gt;&lt;br /&gt;# Print filenames, line #s, and lines that start with "(white space)function"&lt;br /&gt;grep -EHn "^\s*(function \w+|\w+ \= function)" *.js&lt;br /&gt;&lt;br /&gt;Depending on how you format your JavaScript files, something like this will omit comments, anonymous functions, and also words like "functionality" giving you better results.&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;      # Print a list of: function &lt;function-name&gt; and sort it &lt;br /&gt;   2.&lt;br /&gt;      grep -Eho "^\s*function \w+" *.js | sort  &lt;br /&gt;&lt;br /&gt;# Print a list of: function &lt;function-name&gt; and sort it&lt;br /&gt;grep -Eho "^\s*function \w+" *.js | sort&lt;br /&gt;&lt;br /&gt;-o prints only the part that matches the regular expression. -E options gives me extended regex and -h suppresses printing of the file name. I am then piping to sort which just sorts the output so it a list of function &lt;function-name&gt;. If you don’t have a lot of files/functions to go through, you can just scan the list and then note the duplicate function names you see. Let’s go a step further for those that DO have a big list:&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;      # Print only duplicate function names &lt;br /&gt;   2.&lt;br /&gt;      grep -hEo "^\s*function \w+" *.js | sort | uniq -d  &lt;br /&gt;&lt;br /&gt;# Print only duplicate function names&lt;br /&gt;grep -hEo "^\s*function \w+" *.js | sort | uniq -d&lt;br /&gt;&lt;br /&gt;There we go! That will list only the duplcated functions. I know that we can expand this with awk or other stuff and get the file names and line numbers of the duplicates, but I don’t want to explaining the details of awk ;). I actually had it in this article and then removed it so leave a comment or contact me if you want the code for that.&lt;br /&gt;Other Examples&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;      # Count the number of functions in all JS files &lt;br /&gt;   2.&lt;br /&gt;      grep -c function *.js &lt;br /&gt;   3.&lt;br /&gt;       &lt;br /&gt;   4.&lt;br /&gt;      # Print lines that DO NOT have "function" &lt;br /&gt;   5.&lt;br /&gt;      grep -v function *.js &lt;br /&gt;   6.&lt;br /&gt;       &lt;br /&gt;   7.&lt;br /&gt;      # List processes that match "pidgin" (non-Windows) &lt;br /&gt;   8.&lt;br /&gt;      ps -ef | grep pidgin  &lt;br /&gt;&lt;br /&gt;# Count the number of functions in all JS files&lt;br /&gt;grep -c function *.js&lt;br /&gt;&lt;br /&gt;# Print lines that DO NOT have "function"&lt;br /&gt;grep -v function *.js&lt;br /&gt;&lt;br /&gt;# List processes that match "pidgin" (non-Windows)&lt;br /&gt;ps -ef | grep pidgin&lt;br /&gt;&lt;br /&gt;Conclusion&lt;br /&gt;&lt;br /&gt;grep is one of the most used command-line tools, often piped to for filtering output. Understanding it is essential to increasing productivity on the command-line. There is so much more to grep than what I’ve shown here, and it would be cool to see your best uses in the comments!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3636885499570261865?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3636885499570261865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/httperiwen_814.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3636885499570261865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3636885499570261865'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/httperiwen_814.html' title=''/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1417904687246975907</id><published>2008-07-12T13:04:00.002-04:00</published><updated>2009-09-17T15:10:02.325-04:00</updated><title type='text'></title><content type='html'>Originally Posted by cvbn&lt;br /&gt;    "if you shop best buy you paid 2 much"&lt;br /&gt;&lt;br /&gt;'Not only is this inaccurate but it is such a broad statement that it just sounds idiotic. Like any retailer their non sales price is usually higher than I would like but Best Buy has some very slick deals sometimes.'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;Thats a load of tripe. Best Buy is never actually the best buy...but often it is like a 'pretty good buy that I could get somewhere else most likely for a bit less.'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1417904687246975907?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1417904687246975907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/originally-posted-by-cvbn-if-you-shop_1266.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1417904687246975907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1417904687246975907'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/originally-posted-by-cvbn-if-you-shop_1266.html' title=''/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-1628111631451326210</id><published>2008-07-08T22:40:00.002-04:00</published><updated>2009-09-17T15:10:01.025-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Archive files on Linux...</title><content type='html'>http://www.ibm.com/developerworks/linux/library/l-backup/index.html?ca=drs-&lt;br /&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="10"&gt;&lt;img alt="" src="http://www.ibm.com/i/c.gif" width="10" height="1" /&gt;&lt;/td&gt;&lt;td width="100%"&gt;&lt;table style="width: 160px; height: 18px;" class="no-print" align="right" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="10"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Level: Intermediate&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ibm.com/developerworks/linux/library/l-backup/index.html?ca=drs-#author"&gt;Carlos Justiniano&lt;/a&gt;, Software Architect, Ecuity Inc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; 08 Jul  2004&lt;br /&gt;Updated 03  Jul  2008&lt;/p&gt;&lt;blockquote&gt;The loss of critical data can prove devastating. Still, millions of professionals ignore backing up their data. While individual reasons vary, one of the most common explanations is that performing routine backups can be a real chore. Because machines excel at mundane and repetitive tasks, the key to reducing the inherent drudgery and the natural human tendency for procrastination, is to automate the backup process.&lt;/blockquote&gt;&lt;!--START RESERVED FOR FUTURE USE INCLUDE FILES--&gt;&lt;script type="text/javascript" language="javascript"&gt;       capture_referrer(); &lt;/script&gt;  &lt;!--  START : HTML FOR SEARCH REFERRER --&gt;   &lt;div id="search_referrer_results" style="display: none;"&gt;    &lt;!-- START KRUGLE SEARCH HEADING PLAY      &lt;table width="580" cellspacing="0" cellpadding="0" border="0"&gt;                     &lt;tr&gt;                       &lt;td class="v14-header-5"&gt;                      &lt;strong&gt;Show more developerWorks content related to my search&lt;/strong&gt;                       &lt;/td&gt;                     &lt;/tr&gt;                   &lt;/table&gt; --&gt;  &lt;!--  START : HTML FOR ARTICLE SEARCH --&gt;    &lt;!--  END : HTML FOR ARTICLE SEARCH --&gt;  &lt;!--  START : HTML FOR CODE SEARCH --&gt;     &lt;!--  END : HTML FOR CODE SEARCH --&gt;   &lt;br /&gt;&lt;br /&gt; &lt;/div&gt; &lt;!--  END : HTML FOR SEARCH REFERRER --&gt;&lt;!--END RESERVED FOR FUTURE USE INCLUDE FILES--&gt;             &lt;p&gt; If you use Linux, you already have access to extremely powerful tools for creating custom backup solutions. The solutions in this article can help you perform simple to more advanced and secure network backups using open source tools that are part of nearly every Linux distribution. &lt;/p&gt;             &lt;p&gt;&lt;a name="N1005B"&gt;&lt;span class="atitle"&gt;Simple backups&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt;This article follows a step-by-step approach that is  quite straightforward once you follow the basic steps. &lt;/p&gt;             &lt;p&gt; Let's begin with a simple, yet powerful archive mechanism on our way to a more advanced distributed backup solution. Let's examine a handy script called arc, which will allow us to create backup snapshots from a Linux shell prompt. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10067"&gt;&lt;b&gt;Listing 1. The arc shell script&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="60%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   #!/bin/sh&lt;br /&gt;tar czvf $1.$(date +%Y%m%d-%H%M%S).tgz $1&lt;br /&gt;exit $?&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; The arc script accepts a single file or directory name as a parameter and creates a compressed archive file with the current date embedded into the resulting archive file's name. For example, if you have a directory called beoserver, you can invoke the arc script, passing it the beoserver directory name to create a compressed archive such as: beoserver.20040321-014844.tgz &lt;/p&gt;             &lt;p&gt; The use of the &lt;code&gt;date&lt;/code&gt; command to embed a date and timestamp helps to organize your archived files. The date format is Year, Month, Day, Hour, Minutes, and Seconds -- although the use of the seconds field is perhaps a bit much. View the man page for the date command (&lt;code&gt;man date&lt;/code&gt;) to learn about other options. Also, in Listing 1, we pass the &lt;code&gt;-v&lt;/code&gt; (verbose) option to &lt;code&gt;tar&lt;/code&gt;. This causes &lt;code&gt;tar&lt;/code&gt; to display all of the files it's archiving. Remove the &lt;code&gt;-v&lt;/code&gt; option if you'd like the backup to proceed silently. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10090"&gt;&lt;b&gt;Listing 2. Archiving the beoserver directory&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   $ ls&lt;br /&gt;arc  beoserver&lt;br /&gt;$ ./arc beoserver&lt;br /&gt;beoserver/&lt;br /&gt;beoserver/bookl.dat&lt;br /&gt;beoserver/beoserver_ab_off&lt;br /&gt;beoserver/beoserver_ab_on&lt;br /&gt;$ ls&lt;br /&gt;arc  beoserver  beoserver.20040321-014844.tgz&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;a name="N1009A"&gt;&lt;span class="atitle"&gt;Advanced backups&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt;This simple backup example is useful; however, it still includes a manual backup process. The industry's best practices recommend backing up often, onto multiple media, and to separate geographic locations. The central idea is to avoid relying entirely on any single storage media or single location. &lt;/p&gt;             &lt;p&gt; We'll tackle this challenge in our next example, where we'll examine a fictitious distributed network, illustrated in Figure 1, which shows a system administrator with access to two remote servers and an offsite data storage server. &lt;/p&gt;                           &lt;br /&gt;&lt;a name="N100A8"&gt;&lt;b&gt;Figure 1. Distributed network&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;              &lt;img alt="Figure 1. Distributed network" src="http://www.ibm.com/developerworks/linux/library/l-backup/backup01.gif" width="363" height="230" /&gt;          &lt;br /&gt;          &lt;p&gt; The backup files on Server #1 and #2 will be securely transmitted to the offsite storage server, and the entire distributed backup process will occur on a regular basis without human intervention. We'll use a set of standard tools that are part of the Open Secure Shell tool suite (OpenSSH), as well as the tape archiver (tar), and the cron task scheduling service. Our overall plan will be to use cron for scheduling, shell programming and the tar application during the backup process, OpenSSH secure shell (ssh) encryption for remote access, and authentication, and secure shell copy (scp) to automate file transfers. Be sure to review each tool's man page for additional information. &lt;/p&gt;            &lt;table class="no-print" align="right" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr align="right"&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;a name="N100B8"&gt;&lt;span class="atitle"&gt;Secure remote access using public/private keys&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt; In the context of digital security, a key is a piece of data which is used to encrypt or decrypt other pieces of data. The public and private key scheme is interesting because data encrypted with a public key can only be decrypted with the associated private key. You may freely distribute a public key so that others can encrypt the messages they send you. One of the reasons that public/private key schemes have revolutionized digital security is because the sender and receiver don't have to share a common password. Among other things, public/private key cryptography has made e-commerce and other secure transactions possible. In this article, we'll create and use public and private keys to create a highly secure distributed backup solution. &lt;/p&gt;             &lt;p&gt; Each machine involved in the backup process must be running the OpenSSH secure shell service (sshd) with port 22 accessible through any intermediate firewall. If you access remote servers, then there is a good chance you're already using secure shell. &lt;/p&gt;             &lt;p&gt; Our goal will be to provide machines with secure access without requiring the need to manually provide passwords. Some people think that the easiest way to do this is to set up password-less access: do not do this. It is not secure.  Instead, the approach we'll use in this article will take perhaps an hour of your time, set up a system which gives all the convenience of "passphraseless" accounts -- but is recognized as being highly secure. &lt;/p&gt;              &lt;p&gt; Let's begin by ensuring that OpenSSH is installed and proceed to check its version number. At the time this article was written, the latest OpenSSH release was version 3.8, released on February 24, 2004. You should consider using a recent and stable release, and at the very least use a release which is newer than version 2.x. Visit the OpenSSH Security page for details regarding older version-specific vulnerabilities (see the link in &lt;a href="http://www.ibm.com/developerworks/linux/library/l-backup/index.html?ca=drs-#Resources"&gt;Resources&lt;/a&gt; later  in this article). At this point in time, OpenSSH is quite stable and has proven to be immune to many of the vulnerabilities which have been reported for other SSH tools. &lt;/p&gt;             &lt;p&gt; At a shell prompt, type &lt;code&gt;ssh&lt;/code&gt; with the capital &lt;code&gt;V&lt;/code&gt; option to check the version number: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    $ ssh -V&lt;br /&gt; OpenSSH_3.5p1, SSH protocols 1.5/2.0, OpenSSL 0x0090701f &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; If ssh returns a version number greater than 2.x, the machine is in relatively good shape. However, it is recommended that you use the latest stable releases of all software, and this is especially important for security-related software. &lt;/p&gt;             &lt;p&gt; Our first step is to log in to the offsite storage server machine using the account, which will have the privilege of being able to access servers 1 and 2 (see Figure 1). &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    $ ssh accountname@somedomain.com &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; Once logged on to the offsite storage machine, use the ssh-keygen program to create a public/private key pair using the -t dsa option. The -t option is required, and is used to specify the type of encryption key we're interested in generating. We'll use the Digital Signature Algorithm (DSA), which will enable us to use the newer SSH2 protocol. See the ssh-keygen man page for more details. &lt;/p&gt;             &lt;p&gt; During the execution of ssh-keygen, you'll be prompted for the location where the ssh keys will be stored before you're asked for a passphrase. Simply press enter when asked where to save the key and the ssh-keygen program will create a hidden directory called .ssh (if one doesn't already exist) along with two files, a public and private key file. &lt;/p&gt;             &lt;p&gt; An interesting feature of ssh-keygen is that it will allow you to simply press enter when prompted for a passphrase. If you don't supply a passphrase, then ssh-keygen will generate keys which are not encrypted! As you can imagine, this isn't a good idea. When asked for a passphrase, make sure to enter a reasonably long string message which contains alphanumeric characters rather than a simple password string. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N100F8"&gt;&lt;b&gt;Listing 3. Always choose a good passphrase&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   [offsite]:$ ssh-keygen -t dsa&lt;br /&gt;Generating public/private dsa key pair.&lt;br /&gt;Enter file in which to save the key (/home/accountname/.ssh/id_dsa):&lt;br /&gt;Enter passphrase (empty for no passphrase): (enter passphrase)&lt;br /&gt;Enter same passphrase again: (enter passphrase)&lt;br /&gt;Your identification has been saved in /home/accountname/.ssh/id_dsa.&lt;br /&gt;Your public key has been saved in /home/accountname/.ssh/id_dsa.pub.&lt;br /&gt;The key fingerprint is:&lt;br /&gt;7e:5e:b2:f2:d4:54:58:6a:fa:6b:52:9c:da:a8:53:1b accountname@offsite&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; Because the .ssh directory which ssh-keygen creates is a hidden "dot" directory, pass the -a option to the ls command to view the newly created directory:  &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]$ ls -a&lt;br /&gt; . .. .bash_logout .bash_profile .bashrc .emacs .gtkrc .ssh &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; Enter the hidden .ssh directory and list the contents:  &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]$ cd .ssh&lt;br /&gt; [offsite]$ ls -lrt&lt;br /&gt; id_dsa id_dsa.pub &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; We now have a private key (id_dsa) and a public key (id_dsa.pub) in the hidden .ssh directory. You can examine the contents of each key file using a text editor such as vi or emacs, or simply by using the less or cat commands. You'll notice that the contents consist of alphanumeric characters encoded in base64. &lt;/p&gt;             &lt;p&gt; Next, we need to copy and install the public key on servers 1 and 2. Do not use ftp. Rather, use the secure copy program to transmit the public keys onto each of the remote machines: &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10122"&gt;&lt;b&gt;Listing 4. Installing the public keys on the remote servers&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   [offsite]$ scp .ssh/id_dsa.pub accountname@server1.com:offsite.pub&lt;br /&gt;accountname@server1.com's password: (enter password, not new&lt;br /&gt;passphrase!)&lt;br /&gt;id_dsa.pub 100% |*****************************| 614 00:00&lt;br /&gt;&lt;br /&gt;[offsite]$ scp .ssh/id_dsa.pub accountname@server2.com:offsite.pub&lt;br /&gt;accountname@server2.com's password: (enter password, not new&lt;br /&gt;passphrase!)&lt;br /&gt;id_dsa.pub 100% |*****************************| 614 00:00&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; After we install the new public keys, we'll be able to sign on to each machine using the passphrase we specified when creating the private and public keys. For now, log in to each machine and append the contents of the offsite.pub file to a file called authorized_keys, which is stored in each remote machine's .ssh directory. We can use a text editor or simply use the cat command to append the offsite.pub file's contents onto the authorized_keys file:  &lt;/p&gt;          &lt;br /&gt;&lt;a name="N1012F"&gt;&lt;b&gt;Listing 5. Add offsite.pub to your list of authorized keys&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   [offsite]$ ssh accountname@server1.com&lt;br /&gt;accountname@server1.com's password: (enter password, not new&lt;br /&gt;passphrase!)&lt;br /&gt;[server1]$ cat offsite.pub &gt;&gt; ./ssh/authorized_keys&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; The next step involves employing a bit of extra security. First, we change the access rights for the .ssh directory so that only the owner has read, write, and execute privileges. Next, we'll make sure that the authorized_keys file can only be accessed by the owner. And finally, we'll remove the previously uploaded offsite.pub key file, since it's no longer required. It's important to ensure that access permissions are properly set because the OpenSSH server may refuse to use keys which have non-secure access rights. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N1013C"&gt;&lt;b&gt;Listing 6. Changing permissions with chmod&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   [server1]$ chmod 700 .ssh&lt;br /&gt;[server1]$ chmod 600 ./ssh/authorized_keys&lt;br /&gt;[server1]$ rm offsite.pub&lt;br /&gt;[server1]$ exit&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; After completing the same process on server2, we are ready to return to the offsite storage machine to test the new passphrase type access. &gt;From the offsite server you could type the following: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]$ ssh -v accountname@server1.com &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; Use the &lt;code&gt;-v&lt;/code&gt;, or verbose flag option, to display debugging information while verifying that your account is now able to access the remote server using the new passphrase rather than the original password. The debug output displays important information which you might not otherwise see, in addition to offering a high level view of how the authentication process works. You won't need to specify the &lt;code&gt;-v&lt;/code&gt; flag on subsequent connections; but it is quite useful to do so while testing a connection. &lt;/p&gt;            &lt;p&gt;&lt;a name="N1015B"&gt;&lt;span class="atitle"&gt;Automating machine access using ssh-agent&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt; The ssh-agent program acts like a gatekeeper, securely providing access to security keys as needed. Once ssh-agent is started, it sits in the background and makes itself available to other OpenSSH applications such as ssh and scp programs. This allows the ssh program to request an already decrypted key, rather than asking you for the private key's secret passphrase each time it's required. &lt;/p&gt;             &lt;p&gt; Let's take a closer look at ssh-agent. When ssh-agent runs it outputs shell commands:  &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10167"&gt;&lt;b&gt;Listing 7. ssh-agent in action&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   [offsite]$ ssh-agent&lt;br /&gt;SSH_AUTH_SOCK=/tmp/ssh-XX1O24LS/agent.14179; export SSH_AUTH_SOCK;&lt;br /&gt;SSH_AGENT_PID=14180; export SSH_AGENT_PID;&lt;br /&gt;echo Agent pid 14180;&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; We can instruct the shell to execute the output commands which ssh-agent displays using the shell's eval command: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]$ eval `ssh-agent`&lt;br /&gt; Agent pid 14198 &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; The &lt;code&gt;eval&lt;/code&gt; command tells the shell to evaluate (execute) the commands generated by the ssh-agent program. Make sure that you specify the back-quote character (`) and not a single quote! Once executed, the &lt;code&gt;eval `ssh-agent`&lt;/code&gt; statement will return the agent's process identifier. Behind the scenes, the &lt;code&gt;SSH_AUTH_SOCK&lt;/code&gt; and &lt;code&gt;SSH_AGENT_PID&lt;/code&gt; shell variables have been exported and are now available. You can view their values by displaying them to the shell console: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]$ echo $SSH_AUTH_SOCK&lt;br /&gt; /tmp/ssh-XX7bhIwq/agent.14197 &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; The &lt;code&gt;$SSH_AUTH_SOCK&lt;/code&gt; (short for SSH Authentication Socket) is the location of a local socket which applications can use to speak to ssh-agent. To ensure that the &lt;code&gt;SSH_AUTH_SOCK&lt;/code&gt; and &lt;code&gt;SSH_AGENT_PID&lt;/code&gt; variables are always registered, enter the &lt;code&gt;eval `ssh-agent`&lt;/code&gt; statement into your ~/.bash_profile. &lt;/p&gt;              &lt;p&gt; ssh-agent has now become a background process which is visible using the &lt;code&gt;top&lt;/code&gt; and &lt;code&gt;ps&lt;/code&gt; commands. &lt;/p&gt;             &lt;p&gt; Now we're ready to share our passphrase with ssh-agent. To do so, we must use a program called ssh-add, which adds (sends) our passphrase to the running ssh-agent program. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N101BA"&gt;&lt;b&gt;Listing 8. ssh-add for hassle-free login&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   [offsite]$ ssh-add&lt;br /&gt;Enter passphrase for /home/accountname/.ssh/id_dsa: (enter passphrase)&lt;br /&gt;Identity added: /home/accountname/.ssh/id_dsa&lt;br /&gt;(/home/accountname/.ssh/id_dsa)&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; Now when we access server1, we're not prompted for a passphrase: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]$ ssh accountname@server1.com&lt;br /&gt; [server1]$ exit &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; If you're not convinced, try removing (&lt;code&gt;kill -9&lt;/code&gt;) the ssh-agent process and reconnecting to server1. This time, you'll notice that server1 will request the passphrase for the private key stored in the id_dsa file in the .ssh directory: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]$ kill -9 $SSH_AGENT_PID&lt;br /&gt; [offsite]$ ssh accountname@server1.com&lt;br /&gt; Enter passphrase for key '/home/accountname/.ssh/id_dsa': &lt;/code&gt;             &lt;/p&gt;&lt;p&gt;&lt;a name="N101E2"&gt;&lt;span class="atitle"&gt;Simplifying key access using keychain&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt; So far, we've learned about several OpenSSH programs (ssh, scp, ssh-agent and ssh-add), and we've created and installed private and public keys to enable a secure and automated login process. You may have realized that most of our setup work only has to be done once. For example, the process of creating the keys, installing them, and getting ssh-agent to execute via a .bash_profile only has to be done once per machine. That's the really good news. &lt;/p&gt;              &lt;p&gt; The less than ideal news is that ssh-add must be invoked each time we sign on to the offsite machine and ssh-agent isn't immediately compatible with the cron scheduling process which we'll need to automate our backups. The reason that cron processes can't communicate with ssh-agent is that cron jobs are executed as child processes by cron and thus do not inherit the &lt;code&gt;$SSH_AUTH_SOCK&lt;/code&gt; shell variable. &lt;/p&gt;              &lt;p&gt; Fortunately, there is a solution which not only eliminates limitations associated with ssh-agent and ssh-add, but also allows us to use cron to automate all sorts of processes requiring secure passwordless access to other machines. In his 2001 three-part developerWorks series, &lt;i&gt;OpenSSH key management&lt;/i&gt; (see &lt;a href="http://www.ibm.com/developerworks/linux/library/l-backup/index.html?ca=drs-#Resources"&gt;Resources&lt;/a&gt; for a link), Daniel Robbins presented a shell script called keychain, which is a front-end to ssh-add and ssh-agent and which simplifies the entire passwordless process. Over time, the keychain script has undergone a number of improvements and is now maintained by Aron Griffis, with a recent 2.3.2-1 release posted on June 17, 2004. &lt;/p&gt;              &lt;p&gt; The keychain shell script is a bit too large to list in this article because the well-written script includes lots of error checking, ample documentation, and a generous serving of cross-platform code. However, keychain can be quickly downloaded from the project's Web site (see &lt;a href="http://www.ibm.com/developerworks/linux/library/l-backup/index.html?ca=drs-#Resources"&gt;Resources&lt;/a&gt; for a link). &lt;/p&gt;             &lt;p&gt; Once you download and install keychain, using it is remarkably easy. Simply log in to each machine and add the following two lines to each .bash_profile: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    keychain id_dsa&lt;br /&gt; . ~/.keychain/$HOSTNAME-sh &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; The first time you log back in to each machine, keychain will prompt you for the passphrase. However, keychain won't ask you to reenter the passphrase on subsequent login attempts unless the machine has been restarted. Best of all, cron tasks are now able to use OpenSSH commands to securely access remote machines without requiring the interactive use of passphrases. Now we have the best of both worlds, added security and ease of use. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10212"&gt;&lt;b&gt;Listing 9. Initializing keychain on each machine&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   KeyChain 2.3.2; http://www.gentoo.org/projects/keychain&lt;br /&gt;Copyright 2002-2004 Gentoo Technologies, Inc.; Distributed under the&lt;br /&gt;GPL&lt;br /&gt;&lt;br /&gt;* Initializing /home/accountname/.keychain/localhost.localdomain-sh&lt;br /&gt;file...&lt;br /&gt;* Initializing /home/accountname/.keychain/localhost.localdomain-csh&lt;br /&gt;file...&lt;br /&gt;* Starting ssh-agent&lt;br /&gt;* Adding 1 key(s)...&lt;br /&gt;Enter passphrase for /home/accountname/.ssh/id_dsa: (enter passphrase)&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table class="no-print" align="right" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr align="right"&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;a name="N1021C"&gt;&lt;span class="atitle"&gt;Scripting a backup process&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt; Our next task is to create the shell scripts, which will perform the necessary backup operations. The goal is to perform a complete database backup of servers 1 and 2. In our example, each server is running the MySQL database server and we'll use the mysqldump command-line utility to export a few database tables to an SQL import file. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10225"&gt;&lt;b&gt;Listing 10. The dbbackup.sh shell script for server 1&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   #!/bin/sh&lt;br /&gt;&lt;br /&gt;# change into the backup_agent directory where data files are stored.&lt;br /&gt;cd /home/backup_agent&lt;br /&gt;&lt;br /&gt;# use mysqldump utility to export the sites database tables&lt;br /&gt;mysqldump -u sitedb -pG0oDP@sswrd --add-drop-table sitedb --tables&lt;br /&gt;tbl_ccode tbl_machine tbl_session tbl_stats &gt; userdb.sql&lt;br /&gt;&lt;br /&gt;# compress and archive&lt;br /&gt;tar czf userdb.tgz userdb.sql&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; On server 2, we'll place a similar script which backs up the unique tables present in the site's database. Each script is flagged as executable using: &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [server1]:$ chmod +x dbbackup.sh &lt;/code&gt;             &lt;/p&gt;             &lt;p&gt; With a dbbackup.sh file on servers 1 and 2, we return to the offsite data server, where we'll create a shell script to invoke each remote dbbackup.sh script prior to initiating a transfer of the compressed (.tgz) data files. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N1023C"&gt;&lt;b&gt;Listing 11. backup_remote_servers.sh shell script for use on the offsite data server&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   #!/bin/sh&lt;br /&gt;&lt;br /&gt;# use ssh to remotely execute the dbbackup.sh script on server 1&lt;br /&gt;/usr/bin/ssh backup_agent@server1.com "/home/backup_agent/dbbackup.sh"&lt;br /&gt;&lt;br /&gt;# use scp to securely copy the newly archived userdb.tgz file&lt;br /&gt;# from server 1.  Note the use of the date command to timestamp&lt;br /&gt;# the file on the offsite data server.&lt;br /&gt;/usr/bin/scp backup_agent@server1.com:/home/backup_agent/userdb.tgz&lt;br /&gt;/home/backups/userdb-$(date +%Y%m%d-%H%M%S).tgz&lt;br /&gt;&lt;br /&gt;# execute dbbackup.sh on server 2&lt;br /&gt;/usr/bin/ssh backup_agent@server2.com "/home/backup_agent/dbbackup.sh"&lt;br /&gt;&lt;br /&gt;# use scp to transfer transdb.tgz to offsite server.&lt;br /&gt;/usr/bin/scp backup_agent@server2.com:/home/backup_agent/transdb.tgz&lt;br /&gt;/home/backups/transdb-$(date +%Y%m%d-%H%M%S).tgz&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; The backup_remote_servers.sh shell script uses the ssh command to execute a script on the remote servers. Because we've set up passwordless access, the ssh command is able to execute commands on servers 1 and 2 remotely from the offsite server. The entire authentication process is now handled automatically, thanks to keychain. &lt;/p&gt;            &lt;p&gt;&lt;a name="N10249"&gt;&lt;span class="atitle"&gt;Scheduling&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;              &lt;p&gt; Our next and final task involves scheduling the execution of the backup_remote_servers.sh shell script on the offsite data storage server. We'll add two entries to the cron scheduling server to request execution of the backup script twice per day, at 3:34 am and again at 8:34 pm. On the offsite server invoke the crontab program with the edit (&lt;code&gt;-e&lt;/code&gt;) option. &lt;/p&gt;             &lt;p&gt;                 &lt;code&gt;    [offsite]:$ crontab -e &lt;/code&gt;             &lt;/p&gt;              &lt;p&gt; The crontab invokes the default editor, as specified using the &lt;code&gt;VISUAL&lt;/code&gt; or &lt;code&gt;EDITOR&lt;/code&gt; shell environment variables. Next, type two entries and save and close the file. &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10268"&gt;&lt;b&gt;Listing 12. Crontab entries on the offsite server&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;   34 3 * * * /home/backups/remote_db_backup.sh&lt;br /&gt;34 20 * * * /home/backups/remote_db_backup.sh&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;          &lt;p&gt; A crontab line contains two main sections, a time schedule section followed by a command section. The time schedule is divided into fields for specifying when a command should be executed: &lt;/p&gt;          &lt;br /&gt;&lt;a name="N10275"&gt;&lt;b&gt;Listing 13. Crontab format&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;          &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code-outline"&gt;&lt;pre class="displaycode"&gt;          +---- minute&lt;br /&gt;       | +----- hour&lt;br /&gt;       | | +------ day of the month&lt;br /&gt;       | | | +------ month&lt;br /&gt;       | | | | +---- day of the week&lt;br /&gt;       | | | | | +-- command to execute&lt;br /&gt;       | | | | | |&lt;br /&gt;      34 3 * * * /home/backups/remote_db_backup.sh&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table class="no-print" align="right" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr align="right"&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;a name="N1027F"&gt;&lt;span class="atitle"&gt;Verifying your backups&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt; You should routinely check your backups to ensure that the process is working correctly. Automating processes can remove unnecessary drudgery, but should never be a way of escaping due diligence. If your data is worth backing up, then it's also worth spot checking from time to time. &lt;/p&gt;             &lt;p&gt; Consider adding a cron job to remind yourself to check your backups at least once per month. In addition, it's a good idea to change security keys every once in a while, and you can schedule a cron job to remind you of that as well. &lt;/p&gt;            &lt;table class="no-print" align="right" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr align="right"&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;&lt;a name="N1028B"&gt;&lt;span class="atitle"&gt;Additional security precautions&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt; For added security, consider installing and configuring an Intrusion Detection System (IDS), such as Snort, on each machine. Presumably, an IDS will notify you when an intrusion is underway or has recently occurred. With an IDS in place, you'll be able to add other levels of security such as digitally signing and encrypting your backups. &lt;/p&gt;              &lt;p&gt; Popular open source tools such as GNU Privacy Guard (GnuPG), OpenSSL and ncrypt enable securing archive files via shell scripts, but doing so without the extra level of shielding that an IDS provides isn't recommended (see &lt;a href="http://www.ibm.com/developerworks/linux/library/l-backup/index.html?ca=drs-#Resources"&gt;Resources&lt;/a&gt; for more information on Snort). &lt;/p&gt;          &lt;br /&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" alt="" width="100%" height="1" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table class="no-print" align="right" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr align="right"&gt;&lt;td&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="middle"&gt;&lt;img src="http://www.ibm.com/i/v14/icons/u_bold.gif" alt="" width="16" border="0" height="16" /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a name="N1029B"&gt;&lt;span class="atitle"&gt;Conclusion&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;p&gt;This article has shown you how to allow your scripts to execute on remote servers and how to perform secure and automated file transfers. I hope you'll feel inspired to start thinking about protecting your own valuable data and building new solutions using open source tools like OpenSSH and Snort. &lt;/p&gt;      &lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a name="resources"&gt;&lt;span class="atitle"&gt;Resources&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;             &lt;ul&gt;&lt;li&gt; You'll find downloads, documentation, and more at the official &lt;a href="http://www.openssh.org/"&gt;OpenSSH&lt;/a&gt; home page and the &lt;a href="http://www.openssh.org/security.html"&gt;OpenSSH Security page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Read Daniel Robbins' excellent three-part IBM developerWorks article, "&lt;a href="http://www.ibm.com/developerworks/library/l-keyc.html"&gt;OpenSSH Key Management&lt;/a&gt;" (developerWorks, 2001)  and download his &lt;a href="http://www.gentoo.org/proj/en/keychain.xml"&gt;keychain&lt;/a&gt; application.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;To learn more about SSH, Carlos recommends O'Reilly's &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0596000111"&gt;                         &lt;i&gt;SSH, The Secure Shell:     The Definitive Guide&lt;/i&gt;                     &lt;/a&gt; (&lt;i&gt;O'Reilly &amp;amp; Associates&lt;/i&gt;, 2001).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.snort.org/"&gt;Snort&lt;/a&gt; Intrusion Detection System (IDS) is an open source best of breed product designed to detect and report unauthorized access or suspect behavior. Make sure to use an IDS if you're planning on automating the signing and encrypting of archive files.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can sign and encrypt your archive backup files using &lt;a href="http://www.gnupg.org/"&gt;GNU Privacy Guard&lt;/a&gt; (GnuPG), &lt;a href="http://www.openssl.org/"&gt;OpenSSL&lt;/a&gt; and &lt;a href="http://ncrypt.sourceforge.net/"&gt;ncrypt&lt;/a&gt; from your shell scripts.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; If you aren't already using them, check out these tips on &lt;a href="http://www.stanford.edu/group/itss-ccs/security/unix/tcpwrappers.html"&gt;TCP wrappers&lt;/a&gt; and &lt;a href="http://www.ibm.com/developerworks/linux/library/l-xinetd/"&gt;xinetd&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; The Perl-inclined will also be interested in "&lt;a href="http://www.ibm.com/developerworks/linux/library/l-punix.html"&gt;Automating UNIX system administration with Perl&lt;/a&gt;"  (developerWorks, 2001), "&lt;a href="http://www.ibm.com/developerworks/linux/library/l-cfe.html"&gt;Intro to cfengine for system administration&lt;/a&gt;" (developerWorks, 2002), and "&lt;a href="http://www.ibm.com/developerworks/linux/library/l-perl3/index.html"&gt;Application configuration with Perl&lt;/a&gt;" (developerWorks, 2000), all from Ted Zlatanov.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; The developerWorks article "&lt;a href="http://www.ibm.com/developerworks/linux/library/l-roadmap8/"&gt;Windows-to-Linux roadmap: Part 8. Backup and recovery&lt;/a&gt;" (developerWorks, 2003) offers tips on backup strategies.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-1628111631451326210?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/1628111631451326210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/archive-files-on-linux_1476.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1628111631451326210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/1628111631451326210'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/archive-files-on-linux_1476.html' title='Archive files on Linux...'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6565823623912808142</id><published>2008-07-07T22:03:00.002-04:00</published><updated>2009-09-17T15:10:02.371-04:00</updated><title type='text'>zenhabit: patience</title><content type='html'>a zenhabits article on patience:&lt;br /&gt;&lt;br /&gt;from http://zenhabits.net/2008/07/15-tips-for-becoming-as-patient-as-job/&lt;br /&gt;&lt;h1&gt;15 Tips for Becoming as Patient as Job&lt;/h1&gt;                                   &lt;blockquote&gt;&lt;p&gt;“Patience and fortitude conquer all things.” &lt;strong&gt;- Ralph Waldo Emerson&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;In the Old Testament, the story of Job showed a very faithful man whose faith is put to test, and shows an extreme example of perseverance through suffering … but in my mind, whenever I read Job’s story, I am struck by the man’s supreme &lt;em&gt;patience&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;While living a very faithful and righteous life, he nevertheless endured one infliction after another without ever cursing God’s name. I think most of us would have lost our patience and become frustrated and angry much earlier in the story.&lt;/p&gt; &lt;p&gt;While Job’s patience is legendary, I believe that even the most impatient of us can learn to be more patient with practice.&lt;span id="more-713"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Personally, patience is something I’ve been cultivating for a long time. And while I often fail, I believe I’ve progressed over the years, and things that used to get me hot and bothered now just float past me. I still get upset, of course, but not nearly as much as I used to.&lt;/p&gt; &lt;p&gt;Here are some tips that might help you become more patient, with practice:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;strong&gt;Tally marks&lt;/strong&gt;. This is the first strategy, if you have real problems with patience: start by simply keeping tally marks on a little sheet of paper every time you lose your patience. This is one of the most effective and important methods for controlling an impulse — by learning to become more aware of it. Once you become aware of your impulses, you can work out an alternative reaction.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Figure out your triggers&lt;/strong&gt;. As you become more aware of losing your patience, pay close attention to the things that trigger you to lose that patience. Is it when your co-worker does something particularly irritating? When your spouse leaves dirty dishes in the sink? When your child doesn’t clean up her mess? Certain triggers will recur more frequently than others — these are the things you should focus on the most.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deep breaths&lt;/strong&gt;. When you first start to lose your patience, take a deep breath, and breathe out slowly. Then take another. And another. These three breaths will often do the trick, as your frustration will slowly melt away.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Count to 10&lt;/strong&gt;. This one really works. When you feel yourself getting frustrated or angry, stop. Count slowly to 10 (you can do this in your head). When you’re done, most of the initial impulse to yell or do something out of frustation will go away. Combine this with the breathing tip for even more effectiveness.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Start small&lt;/strong&gt;. Don’t try to become as patient as Job overnight. It won’t happen. Start with something small and manageable. Look for a trigger that only induces a mild impatience within you — not something that gets your blood boiling. Then focus on this, and forget the other triggers for now. Work on controlling your temper for that one trigger. If you can get this one under control, use what you learned to focus on the next small trigger. One at a time, and with practice, you’ll get there.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Take a time out&lt;/strong&gt;. Often it’s best just to walk away for a few minutes. Take a break from the situation, just for 5-10 minutes, let yourself calm down, plan out your words and actions and solution, and then come back calm as a monk.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Remember what’s important&lt;/strong&gt;. Sometimes we tend to get upset over little things. In the long run, these things tend not to matter, but in the heat of the moment, we might forget this. Stop yourself, and try to get things in perspective.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Keep practicing&lt;/strong&gt;. Every time a situation stretches your patience to dangerous thinness, just think of it as an opportunity to practice your patience. Because that’s what it take to become patient — practice, practice, more practice, and even more practice. And then some more. And the more you practice, the better you’ll get. So cherish these wonderful opportunities to practice.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Visualize&lt;/strong&gt;. This works best if you do it before the frustrating situation comes up. When you’re alone and in a quiet place. Visualize how you want to react the next time your trigger happens. How do you handle the situation? How do you look? What do you say? How does the other person react? How does it help your relationship, your life? Think about all these things, visualize the perfect situation, and then try to actually make that happen when the situation actually comes up.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Remember that things can take time&lt;/strong&gt;. Nothing good happens right away. If you expect things to happen at the snap of your fingers, you’ll get impatient every time. Instead, realize that things will take time, and this realization can help your patience tremendously.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Teach&lt;/strong&gt;. This is something that helps me a lot. I remember that no one is perfect, and that everyone has a lot to learn. Be patient, and teach others how to do things — even if you’ve tried before, it might be the 11th time when things click. And remember, none of us learn things on the first try. Find new ways to teach something, and you’re more likely to be successful.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Find healthy ways to relieve frustration&lt;/strong&gt;. Frustration can build up like steam in a pressure cooker, and if you don’t relieve that steam, you’ll explode. So find ways to relieve that frustration in a healthy way. Punching a pillow, going outside to a place where you’re all alone and yelling, exercise, kickboxing … these are just a few examples. Once you get that frustration out of your system, you usually feel better.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Try meditation&lt;/strong&gt;. You can’t meditate in the middle of a frustrating situation, usually, but often meditation can help you to learn to find a center of calm within yourself. Once you learn how to go to this calm place, you can go there when you begin to get angry. Meditation can also help you to be in the moment, instead of always wanting to get to the future, or instead of dwelling on the past and getting angry about it.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Just laugh&lt;/strong&gt;. Sometimes we need to remind ourselves that no one is perfect, that we should be enjoying this time with our loved ones, and that life should be fun — and funny. Smile, laugh, be happy. Doesn’t always work, but it’s good to remind yourself of this now and then.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Just love&lt;/strong&gt;. Instead of reacting with anger, teach yourself to react with love. Your child spills something or has a messy room or breaks your family heirloom? Your spouse yells at you or is cranky after work? React with love. It’s the best solution.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6565823623912808142?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/6565823623912808142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/zenhabit-patience_4704.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6565823623912808142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6565823623912808142'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/zenhabit-patience_4704.html' title='zenhabit: patience'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6008182450249614815</id><published>2008-07-04T16:25:00.002-04:00</published><updated>2009-09-17T15:10:02.392-04:00</updated><title type='text'>Bad Programmer</title><content type='html'>&lt;h1&gt;&lt;a href="http://badprogrammer.infogami.com/"&gt;Bad Programmers&lt;/a&gt;&lt;/h1&gt; &lt;p class="subtitle"&gt;Solving your skillset problems&lt;/p&gt;  &lt;h2&gt;Signs that you are a bad programmer&lt;/h2&gt;    &lt;h3&gt;1. Inability to reason about code&lt;/h3&gt;  &lt;p&gt;Reasoning about code means being able to follow the execution path ("running the program in your head") while knowing what the goal of the code is.&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;The presence of "voodoo code", or code that has no effect on the goal of the program but is diligently maintained anyway (such as initializing variables that are never used, calling functions that are irrelevant to the goal, producing output that is not used, etc.)&lt;/li&gt;&lt;li&gt;Executing idempotent functions multiple times (eg: calling the save() function multiple times "just to be sure")&lt;/li&gt;&lt;li&gt;Fixing bugs by writing redundant code that overwrites the result of the faulty code&lt;/li&gt;&lt;li&gt;"YoYo code" that converts a value into a different representation, then converts it back to where it started (eg: converting a decimal into a string and then back into a decimal, or padding a string and then trimming it)&lt;/li&gt;&lt;li&gt;"Bulldozer code" that gives the appearance of refactoring by breaking out chunks into subroutines, but that are impossible to reuse in another context (very high cohesion)&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;To get over this deficiency a programmer can practice by using the IDE's own debugger as an aide if it has the ability to step through the code one line at a time. In Visual Studio, for example, this means setting a breakpoint at the beginning of the problem area and stepping through with the 'F11' key, inspecting the value of variables--before and after they change--until you understand what the code is doing. If the target environment doesn't have such a feature, then practice in one that does.&lt;/p&gt;  &lt;p&gt;The goal is to reach a point where you no longer need the debugger to be able to follow the flow of code in your head, and where you are patient enough to think about what the code is doing to the state of the program. The reward is the ability to identify redundant and unnecessary code, as well as how to find bugs in existing code without having to re-implement the whole algorithm from scratch.&lt;/p&gt;  &lt;h3&gt;2. Poor understanding of the language's programming model&lt;/h3&gt;  &lt;p&gt;Object Oriented Programming is an example of a language model, as is Functional or Declarative programming. They're each significantly different from procedural or imperative programming, just as procedural programming is significantly different from assembly or GOTO-based programming. Then there are languages which follow a major programming model (such as OOP) but introduce their own improvements such as list comprehensions, generics, duck-typing, etc.&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Using whatever syntax is necessary to break out of the model, then writing the remainder of the program in imperative/procedural style&lt;/li&gt;&lt;li&gt;(OOP) Attempting to call non-static functions or variables in uninstantiated classes, and having difficulty understanding why it won't compile&lt;/li&gt;&lt;li&gt;(OOP) Writing lots of "xxxxxManager" classes that contain all of the methods for manipulating objects that have little or no methods of their own&lt;/li&gt;&lt;li&gt;(Relational) Treating the database as an object store by giving each table an identity column (or GUID) for the primary key, and possibly going as far as serializing the state of the object to a binary column&lt;/li&gt;&lt;li&gt;(Functional) Creating multiple versions of the same algorithm to handle different types or operators, rather than passing high-level functions to a generic implementation&lt;/li&gt;&lt;li&gt;(Functional) Manually caching the results of a deterministic function&lt;/li&gt;&lt;li&gt;(Pure Functional) Using cut-n-paste code from someone else's program to deal with I/O and Monads&lt;/li&gt;&lt;li&gt;(Declarative) Setting individual values in imperative code rather than using data-binding&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;If your skills deficiency is a product of ineffective teaching or studying, then an alternative teacher is the compiler itself. There is no more effective way of learning a new programming model than starting a new project and committing yourself to use whatever the new constructs are, intelligently or not. You also need to practice explaining the model's features in crude terms of whatever you are familiar with, then recursively building on your new vocabulary until you understand the subtleties as well. For example:&lt;/p&gt;  &lt;p&gt;Phase 1: "OOP is just records with methods"&lt;br /&gt;Phase 2: "OOP methods are just functions running in a mini-program with its own global variables"&lt;br /&gt;Phase 3: "The global variables are called fields, some of which are private and invisible from outside the mini-program"&lt;br /&gt;Phase 4: "The idea of having private and public elements is to hide implementation details and expose a clean interface, and this is called Encapsulation"&lt;br /&gt;Phase 5: "Encapsulation means my business logic doesn't need to be polluted with implementation details"&lt;/p&gt;  &lt;p&gt;Phase 5 looks the same for all languages, since they are all really trying to get the programmer to the point where he can express the &lt;em&gt;intent&lt;/em&gt; of the program without burying it in the specifics of &lt;em&gt;how&lt;/em&gt;. Take functional programming as another example:&lt;/p&gt;  &lt;p&gt;Phase 1: "Functional programming is just doing everything by chaining deterministic functions together"&lt;br /&gt;Phase 2: "When the functions are deterministic, they don't need to be executed until the output is called for, and only for as much as needed. This is called Lazy Evaluation and Partial Evaluation"&lt;br /&gt;Phase 3: "In order to support Lazy and Partial Evaluation, the compiler requires that I write functions in terms of how to transform a single parameter, sometimes into another function. This is called Currying"&lt;br /&gt;Phase 4: "When all functions are curried, the compiler can choose the best execution plan by using a constraint solver"&lt;br /&gt;Phase 5: "By letting a constraint solver figure out the mundane details, I can write programs by describing &lt;em&gt;what&lt;/em&gt; I want, rather than &lt;em&gt;how&lt;/em&gt; to give it to me"&lt;/p&gt;  &lt;h3&gt;3. Deficient research skills / Chronically poor knowledge of the platform's features&lt;/h3&gt;  &lt;p&gt;Modern languages and frameworks now come with an awesome breadth and depth of built-in commands and features, with some leading frameworks (Java, .Net, Cocoa) being too large to expect any programmer, even a good one, to learn in anything less than a few years. But a good programmer will search for a built-in function that does what they need before they begin to roll their own, and excellent programmers have the skill to break-down and identify the abstract problems in their task, then search for existing frameworks, patterns, models and languages that can be adapted before they even begin to design the program.&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;p&gt;These are only indicative of the problem if they continue to appear in the programmer's work long after he should have mastered the new platform.&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;Re-inventing or laboring without basic mechanisms that are built-into the language, such as events-and-handlers or regular expressions&lt;/li&gt;&lt;li&gt;Re-inventing classes and functions that are built-into the framework (eg: timers, collections, sorting and searching algorithms)&lt;/li&gt;&lt;li&gt;"Email me teh code, plz" messages posted to help forums&lt;/li&gt;&lt;li&gt;"Roundabout code" that accomplishes in many instructions what could be done with far fewer (eg: rounding a number by converting a decimal into a formatted string, then converting the string back into a decimal)&lt;/li&gt;&lt;li&gt;Persistently using old-fashioned techniques even when new techniques are better in those situations (eg: still writes named delegate functions instead of using lambda expressions for one-offs)&lt;/li&gt;&lt;li&gt;Having a stark "comfort zone", and going to extreme lengths to solve complex problems with primitives&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;A programmer can't acquire this kind of knowledge without slowing down, and it's likely that he's been in a rush to get each function working by whatever means necessary. He needs to have the platform's technical reference handy and be able to look through it with minimal effort, which can mean either having a hard copy of it on the desk right next to the keyboard, or having a second monitor dedicated to a browser. To get into the habit initially, he should refactor his old code with the aim of reducing its instruction count by 10:1 or more.&lt;/p&gt;  &lt;h3&gt;4. Inability to comprehend pointers&lt;/h3&gt;  &lt;p&gt;If you don't understand pointers then there is a very shallow ceiling on the types of programs you can write, as the concept of pointers enables the creation of complex data structures and efficient APIs. Managed languages use references instead of pointers, which are similar but add automatic dereferencing and prohibit pointer arithmetic to eliminate entire classes of bugs. They are still similar enough, however, that a failure to grasp the concept will be reflected in poor data-structure design and bugs that trace back to the difference between pass-by-value and pass-by-reference in method calls.&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Failure to implement a linked list, or write code that inserts/deletes nodes from linked list without losing data&lt;/li&gt;&lt;li&gt;Allocating arbitrarily big arrays for variable-length collections and maintaining a separate collection-size counter, rather than using a linked list or other dynamic data structure&lt;/li&gt;&lt;li&gt;Inability to find or fix bugs caused by performing arithmetic on pointers&lt;/li&gt;&lt;li&gt;Modifying the dereferenced values from pointers passed as the parameters to a function, and not expecting it to change the values in the scope outside the function&lt;/li&gt;&lt;li&gt;Making a copy of a pointer, changing the dereferenced value via the copy, then assuming the original pointer still points to the old value&lt;/li&gt;&lt;li&gt;Serializing a pointer to the disk or network when it should have been the dereferenced value&lt;/li&gt;&lt;li&gt;Sorting an array of pointers by performing the comparison on the pointers themselves&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;A friend of mine named Joe was staying somewhere else in the hotel, but I didn't know which room number. I did, however, know which room his acquaintance, Frank, was staying in. So I went up there and knocked on his door and asked him, "Where's Joe staying?" Frank didn't know, but he did know which room Joe's co-worker, Theodore, was staying in, and gave me that room number instead. So I went to Theodore's room and asked him where Joe was staying, and Theodore told me that Joe was in Room 414. And that, in fact, is where Joe was.&lt;/p&gt;  &lt;p&gt;Pointers can be described with many different metaphors, and the data structures you can build translated into many analogies. The above is a simple analogy for a linked list, and anybody can invent their own, even if they aren't programmers. The comprehension failure doesn't occur when pointers are described, so you can't describe them any more thoroughly than they already have been. It fails when the programmer then tries to visualize what's going on in the computer's memory and it gets conflated with their understanding of regular variables, which are very similar. It may help to translate the code into a simple story to help reason about what's going on, until the distinction clicks and the programmer can visualize pointers and the data structures they enable as intuitively as scalar values and arrays.&lt;/p&gt;  &lt;h3&gt;5. Difficulty seeing through recursion&lt;/h3&gt;  &lt;p&gt;The idea of recursion is easy enough to understand, but programmers often have problems imagining the result of a recursive operation in their minds, or how a complex result can be computed with a simple function. This makes it harder to design a recursive function because you have trouble picturing "where you are" when you come to writing the test for the base condition or the parameters for the recursive call.&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Hideously complex iterative algorithms for problems that can be solved recursively (eg: traversing a filesystem tree), especially where memory and performance is not a premium&lt;/li&gt;&lt;li&gt;Recursive functions that check the same base condition both before and after the recursive call&lt;/li&gt;&lt;li&gt;Recursive functions that don't test for a base condition&lt;/li&gt;&lt;li&gt;Recursive subroutines that concatenate/sum to a global variable or a carry-along output variable, and aren't implementing tail recursion&lt;/li&gt;&lt;li&gt;Apparent confusion about what to pass as the parameter in the recursive call, or recursive calls that pass the parameter unmodified&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;Get your feet wet and be prepared for some stack overflows. Begin by writing code with only one base-condition check and one recursive call that uses the same, unmodified parameter that was passed. Stop coding even if you have the feeling that it's not enough, and run it anyway. It throws a stack-overflow exception, so now go back and pass a modified copy of the parameter in the recursive call. More stack overflows? Excessive output? Then do more code-and-run iterations, switching from tweaking your base-condition test to tweaking your recursive call until you start to intuit how the function is transforming its input. Resist the urge to use more than one base-condition test or recursive call unless you really know what you're doing.&lt;/p&gt;  &lt;p&gt;Your goal is to have the confidence to jump in, even if you don't have a complete sense of "where you are" in the imaginary recursive path. Then when you now need to write a function for a real project you'd begin by writing a unit test first, and proceeding with the same technique above.&lt;/p&gt;  &lt;h2&gt;Signs that you are a mediocre programmer&lt;/h2&gt;  &lt;h3&gt;1. Inability to think in sets&lt;/h3&gt;  &lt;p&gt;Transitioning from imperative programming to functional and declarative programming will immediately require you to think about operating on &lt;em&gt;sets&lt;/em&gt; of data as your primitive, not scalar values. The transition is required whenever you use SQL with a relational database (and not as an object store), whenever you design programs that will scale linearly with multiple processors, and whenever you write code that has to execute on a SIMD-capable chip (such as modern graphics cards and video game consoles).&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;p&gt;The following count only when they're seen on a platform with Declarative or Functional programming features that the programmer should be aware of.&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;Performing atomic operations on the elements of a collection within a &lt;em&gt;for&lt;/em&gt; or &lt;em&gt;foreach&lt;/em&gt; loop&lt;/li&gt;&lt;li&gt;Writing Map or Reduce functions that contain their own loop for iterating through the dataset&lt;/li&gt;&lt;li&gt;Fetching large datasets from the server and computing sums on the client, instead of using aggregate functions in the query&lt;/li&gt;&lt;li&gt;Functions acting on elements in a collection that begin by performing a new database query to fetch a related record&lt;/li&gt;&lt;li&gt;Writing business-logic functions with tragically compromising side-effects, such as updating a user interface or performing file I/O&lt;/li&gt;&lt;li&gt;Classes that open their own database connections or file handles and keep them open for their lifespan&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;Funny enough, visualizing a card dealer cutting a deck of cards and interleaving the two stacks together by flipping through them with his thumbs can jolt the mind into thinking about sets and how you can operate on them in bulk. Other stimulating visualizations are:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;freeway traffic passing through an array of toll booths (parallel processing)&lt;/li&gt;&lt;li&gt;springs joining to form streams joining to form creeks joining to form rivers (parallel reduce/aggregate functions)&lt;/li&gt;&lt;li&gt;a newspaper printing press (coroutines, pipelines)&lt;/li&gt;&lt;li&gt;the zipper tag on a jacket pulling the zipper teeth together (simple joins)&lt;/li&gt;&lt;li&gt;transfer RNA picking up amino acids and joining messenger RNA within a ribosome to become a protein (multi-stage function-driven joins, &lt;a href="http://www.dnai.org/text/mediashowcase/index2.html?id=586"&gt;see animation&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;the above happening simultaneously in billions of cells in an orange tree to convert soil, water and sunlight into orange juice (Map/Reduce on large distributed clusters)&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;If you are writing a program that works with collections, think about all the supplemental data and records that your functions need to work on each element and use Map functions to join them together in pairs before you have your Reduce function applied to each pair.&lt;/p&gt;  &lt;h3&gt;2. Lack of critical thinking&lt;/h3&gt;  &lt;p&gt;Unless you criticize your own ideas and look for flaws in your own thinking, you will miss problems that can be fixed before you even start coding. If you also fail to criticize your own code once written, you will only learn at the vastly slower pace of trial and error. This is the root of lazy thinking and egocentric thinking, so its symptoms seem to come from two different directions.&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;"Business Rule Engines"&lt;/li&gt;&lt;li&gt;Fat static utility classes, or multi-disciplinary libraries with only one namespace&lt;/li&gt;&lt;li&gt;Conglomerate applications, or attaching unrelated features to an existing application to avoid the overhead of starting a new project&lt;/li&gt;&lt;li&gt;Architectures that have begun to require &lt;a href="http://en.wikipedia.org/wiki/Epicycle"&gt;epicycles&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Adding columns to tables for tangential data&lt;/li&gt;&lt;li&gt;Inconsistent naming conventions&lt;/li&gt;&lt;li&gt;"Man with a hammer" mentality, or changing the definitions of problems so they can all be solved with one particular technology&lt;/li&gt;&lt;li&gt;Programs that dwarf the complexity of the problem they solve&lt;/li&gt;&lt;li&gt;Pathologically and redundantly defensive programming ("Enterprisey code")&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;Start with a book like &lt;a href="http://www.amazon.com/Critical-Thinking-Taking-Professional-Personal/dp/0130647608"&gt;Critical Thinking&lt;/a&gt; by Paul and Elder, work on controlling your ego, and practice resisting the urge to defend yourself as you submit your ideas to friends and colleagues for criticism.&lt;/p&gt;  &lt;p&gt;Once you get used to other people examining your ideas, start examining your own ideas yourself and practice imagining the consequences of them. In addition, you also need to develop a sense of proportion (to have a feel for how much design is appropriate for the size of the problem), a habit of double-checking assumptions (so you don't overestimate the size of the problem), and a healthy attitude towards failure (even Isaac Newton was wrong, but we needed him to try anyway).&lt;/p&gt;  &lt;p&gt;Finally, you must have discipline. Being aware of flaws in your plan will not make you more productive unless you can muster the willpower to correct and rebuild what you're working on.&lt;/p&gt;  &lt;h3&gt;3. Pinball Programming&lt;/h3&gt;  &lt;p&gt;When you tilt the board just right, pull back the pin to just the right distance, and hit the flipper buttons in the right sequence, then the program runs flawlessly with the flow of execution bouncing off conditionals and careening unchecked toward the next state transition.&lt;/p&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;One Try-Catch block wrapping the entire body of Main() and resetting the program in the Catch clause (the pinball gutter)&lt;/li&gt;&lt;li&gt;Using strings/integers for values that have (or could be given) more appropriate wrapper types in a strongly-typed language&lt;/li&gt;&lt;li&gt;Packing complex data into delimited strings and parsing it out in every function that uses it&lt;/li&gt;&lt;li&gt;Failing to use assertions or method contracts on functions that make assumptions about their arguments&lt;/li&gt;&lt;li&gt;The use of Sleep() to wait for another thread to finish its task&lt;/li&gt;&lt;li&gt;Switch statements, on non-enumerated values, that don't have an "Otherwise" clause&lt;/li&gt;&lt;li&gt;Using Automethods or Reflection to invoke methods that are named in unqualified user input&lt;/li&gt;&lt;li&gt;Setting global variables in functions as a way to return multiple values&lt;/li&gt;&lt;li&gt;Classes with one method and a couple of fields, where you have to set the fields as the way of passing parameters to the method&lt;/li&gt;&lt;li&gt;Multi-row database updates without a transaction&lt;/li&gt;&lt;li&gt;Hail-Mary passes (eg: trying to restore the state of a database without a transaction and ROLLBACK)&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Remedies&lt;/h4&gt;  &lt;p&gt;Imagine your program's input is water. It's going to fall through every crack and fill every pocket, so you need to think about what the consequences are when it flows somewhere other than where you've explicitly built something to catch it.&lt;/p&gt;  &lt;p&gt;You will need to make yourself familiar with the mechanisms on your platform that help make programs robust and ductile. There are three basic kinds:&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;those which stop the program before any damage is done when something unexpected happens, then helps you identify what went wrong (type systems, assertions, exceptions, etc.),&lt;/li&gt;&lt;li&gt;those which direct program flow to whatever code best handles the contingency (try-catch blocks, multiple dispatch, event driven programming, etc.),&lt;/li&gt;&lt;li&gt;those which pause the thread until all your ducks are in a row (WaitUntil commands, mutexes and semaphores, SyncLocks, etc.)&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;There is also a fourth, Unit Testing, which you use at design time.&lt;/p&gt;  &lt;p&gt;Using these ought to become second nature to you, like putting commas and periods in sentences. To get there, go through the above mechanisms (the ones in parenthesis) one at a time and refactor an old program to use them wherever you can cram them, even if it doesn't turn out to be appropriate (especially when they don't seem appropriate, so you also begin to understand why).&lt;/p&gt;  &lt;h2&gt;Signs that you shouldn't be a programmer&lt;/h2&gt;  &lt;p&gt;The following may not have any remedies if you still suffer from them after taking a programming course in school, so you will stand a better chance of advancing your career by choosing another profession.&lt;/p&gt;  &lt;h3&gt;1. Inability to determine the order of program execution&lt;/h3&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;pre&gt;&lt;code&gt;a = 5&lt;br /&gt;b = 10&lt;br /&gt;a = b&lt;br /&gt;&lt;br /&gt;print a&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;  &lt;ol&gt;&lt;li&gt;You look at the code above and aren't sure what number gets printed out at the end&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Alternative careers&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Electrician&lt;/li&gt;&lt;li&gt;Plumber&lt;/li&gt;&lt;li&gt;Architect&lt;/li&gt;&lt;li&gt;Civil engineer&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;2. Insufficient ability to think abstractly&lt;/h3&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Difficulty comprehending the difference between objects and classes&lt;/li&gt;&lt;li&gt;Difficulty implementing design patterns for your program&lt;/li&gt;&lt;li&gt;Difficulty writing functions with low cohesion&lt;/li&gt;&lt;li&gt;Incompetence with Regular Expressions&lt;/li&gt;&lt;li&gt;Lisp is opaque to you&lt;/li&gt;&lt;li&gt;Cannot fathom the Church-Turing Thesis&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Alternative careers&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Contract negotiator&lt;/li&gt;&lt;li&gt;Method actor&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;3. Collyer Brothers syndrome&lt;/h3&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Unwilling to throw away anything, including garbage&lt;/li&gt;&lt;li&gt;Unwilling to delete anything, be it code or comments&lt;/li&gt;&lt;li&gt;The urge to build booby-traps for defense against trespassers&lt;/li&gt;&lt;li&gt;Unwilling to communicate with other people&lt;/li&gt;&lt;li&gt;Poor organization skills&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Alternative careers&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Antique dealer&lt;/li&gt;&lt;li&gt;Bag lady&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;4. Dysfunctional sense of causality&lt;/h3&gt;  &lt;h4&gt;Symptoms&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;You seriously consider malice to be a reason why the compiler rejects your program&lt;/li&gt;&lt;li&gt;When called on to fix a bug in a deployed program, you try prayer&lt;/li&gt;&lt;li&gt;You take hidden variables for granted and don't think twice about blaming them for a program's misbehavior&lt;/li&gt;&lt;li&gt;You think the presence of code in a program will affect its runtime behavior, even if it is never invoked&lt;/li&gt;&lt;li&gt;Your debugging repertoire includes rituals like shining your lucky golf ball, twisting your wedding ring, and tapping the nodding-dog toy on your monitor. And when the debugging doesn't work, you think it might be because you missed one or didn't do them in the right order&lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;Alternative careers&lt;/h4&gt;  &lt;ol&gt;&lt;li&gt;Playing the slot machines in Vegas&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6008182450249614815?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/6008182450249614815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/bad-programmer_1556.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6008182450249614815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6008182450249614815'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/bad-programmer_1556.html' title='Bad Programmer'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3578424969149355445</id><published>2008-07-01T10:46:00.002-04:00</published><updated>2009-09-17T15:10:02.416-04:00</updated><title type='text'>Ambient lighting.</title><content type='html'>http://lifehacker.com/397415/set-up-cheap-ambient-lighting-with-rope-lights&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3578424969149355445?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3578424969149355445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/ambient-lighting_8533.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3578424969149355445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3578424969149355445'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/07/ambient-lighting_8533.html' title='Ambient lighting.'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-6059015733577343358</id><published>2008-06-29T10:03:00.002-04:00</published><updated>2009-09-17T15:10:01.044-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>The old UNIX Wars</title><content type='html'>From a slashdot comment:&lt;br /&gt;&lt;div class="commentBody"&gt;    &lt;div id="comment_body_23987951"&gt;&lt;p&gt;Don't you know the new required thought pattern? We aren't supposed to remember how nasty IBM were.&lt;/p&gt;&lt;p&gt;They are meant to be thought of as the poor unfortunate victims of an evil Microsoft, not the over confident and arrogant giant company who's failure to understand the market handed the world of computing to a small company whose owner lived on junk food and didn't wash much.&lt;/p&gt;&lt;p&gt;Being old I remember the time when Microsoft were this great company who liberated the computing world from the Unix wars. A company whose philosophy of getting their product out there cheaply and on everything meant I could finally afford a computer after several years of wanting, but not being able to buy, a Mac.&lt;/p&gt;&lt;p&gt;There was a time when Microsoft were the good guys, where people suddenly found that they could write a product for DOS and it would run on almost any computer. That meant it was possible to become a software house with a lot less effort and money than before.&lt;/p&gt;&lt;p&gt;I rather suspect people just don't realise what it was like before DOS.&lt;/p&gt;&lt;p&gt;Ok it didn't stay that way, or didn't unless you're a big Microsoft fan, but when I were young it was true.&lt;/p&gt;&lt;p&gt;Personally I wish they would get with the Open Source movement. I've been an open source developer for over five years, working with both Linux and Windows, and the lack of high level co-operation between the two camps is, in my opinion, is preventing a huge leap forward in computing.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-6059015733577343358?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/6059015733577343358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/old-unix-wars_3334.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6059015733577343358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/6059015733577343358'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/old-unix-wars_3334.html' title='The old UNIX Wars'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-3336533932889589779</id><published>2008-06-28T07:45:00.002-04:00</published><updated>2009-09-17T15:10:02.434-04:00</updated><title type='text'>More Gen-Y Articles..</title><content type='html'>&lt;h1&gt;5 Ways to Make Your Company Gen Y-Friendly&lt;/h1&gt;                   &lt;p&gt;Katherine Spencer Lee, Computerworld.com&lt;/p&gt;&lt;br /&gt;&lt;div class="date"&gt;Thursday, June 26, 2008 11:03 AM PDT&lt;/div&gt;    &lt;div&gt;&lt;p&gt;Facing a potential onslaught of baby boomer retirements and a smaller pool of Generation X employees to replace them, IT managers who want to create or sustain a Best Place to Work environment will need the additional help of another group of professionals: Generation Y. Also known as Millennials, this group consists of nearly 80 million individuals born roughly between 1979 and 1999. They are the workforce of the future. &lt;/p&gt;&lt;p&gt;   But what will it take to attract and keep these individuals? Are &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=320501"&gt;Generation Y's ideas&lt;/a&gt; about what makes a great employer different from those of other generations?      &lt;/p&gt;&lt;p&gt;   Yes, and no.      &lt;/p&gt;&lt;p&gt; In many ways, the Millennial generation wants exactly what professionals from previous generations expect from employers. When polled for a recent study by our company and &lt;a href="http://www.computerworld.com/action/inform.do?command=search&amp;amp;searchTerms=Yahoo%21+Inc."&gt;Yahoo&lt;/a&gt; HotJobs, the most senior members of Generation Y - those aged 21 to 28 and beginning their careers - placed salary, benefits and opportunities for professional growth at the top of their lists. &lt;/p&gt;&lt;p&gt; This isn't to say, however, that they are like their predecessors in every way. In terms of their workstyles, professional expectations and career concerns, they show some distinct preferences. Based on their responses to the survey, here are a few suggestions for making your company Gen Y-friendly. &lt;/p&gt;&lt;p&gt;    &lt;b&gt;No. 1: Offer attractive benefits.&lt;/b&gt; Salary is a key consideration for members of this group, but so are benefits. Growing up at a time when the U.S. health care system is delivering fewer services at higher costs and the future of Social Security benefits is in doubt, Gen-Yers are most attracted to companies that provide first-rate health care and retirement benefits. &lt;/p&gt;&lt;p&gt;    &lt;b&gt;No. 2: Promote &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;taxonomyId=10&amp;amp;articleId=9036898&amp;amp;intsrc=hm_topic"&gt;work/life balance&lt;/a&gt;.&lt;/b&gt; Nearly 73% of Gen-Yers surveyed said they are concerned about being able to balance a career with personal obligations. Consider implementing specialized arrangements - such as flextime, telecommuting or a compressed workweek - that give employees more control over their work schedules. &lt;/p&gt;&lt;p&gt;    &lt;b&gt;No. 3: Narrow the rungs of the corporate ladder.&lt;/b&gt; Millennials are willing to work hard, but when it comes to moving up the ranks, they want to do so quickly. According to the study, 51% of Millennials surveyed believe professionals entering the workforce should have to spend only one to two years proving themselves in entry-level positions. That means you aren't likely to attract or keep talented Gen Y employees by requiring them to spend years "paying their dues." &lt;/p&gt;&lt;p&gt;    &lt;b&gt;No. 4: Ensure managers are engaged and accessible.&lt;/b&gt; In the survey, Millennials described their "dream boss" as being understanding, caring, flexible and open-minded, as well as someone who is authoritative but respects, values and appreciates his employees. They aren't looking for a micromanager, but they do value good management skills and regular contact with their supervisors; in fact, 35% of those surveyed want to &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=315573"&gt;communicate with the boss&lt;/a&gt; several times a day.       &lt;/p&gt;&lt;p&gt;    &lt;b&gt;No. 5: Foster "face time."&lt;/b&gt; Even though Gen-Yers grew up with cell phones, e-mail and the Internet, two-thirds of survey respondents selected in-person conversations with their co-workers as their preferred communication method. You'll encourage longer tenures and greater loyalty among employees if you create opportunities for them to interact with others. Consider arranging workgroups in open seating areas, establishing project teams or developing a mentoring program. &lt;/p&gt;&lt;p&gt; Although Generation Y employees bring specific values and ideals to the business world, it would be a mistake to view all of them simply through a generational lens. Avoid stereotyping and be prepared to tailor your workplace policies and management strategies when necessary. &lt;/p&gt;&lt;p&gt;   IT professionals who are members of Generation Y &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9043339"&gt;expect a lot from their employers&lt;/a&gt;, but they also expect a lot of themselves and enter the workforce eager to make contributions and prove their value. The key to successfully recruiting and retaining Millennials is taking the time to learn what they care most about on and off the job. &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-3336533932889589779?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/3336533932889589779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/more-gen-y-articles_7387.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3336533932889589779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/3336533932889589779'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/more-gen-y-articles_7387.html' title='More Gen-Y Articles..'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-8297571329372460577</id><published>2008-06-17T21:30:00.002-04:00</published><updated>2009-09-17T15:10:00.957-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>freebsd 7.0, dell latitude d830, intel snd_hda</title><content type='html'>The latitude d830 I have uses intel's HDA - snd_hda.ko,  this driver works, but i could only get sound out of the headphone / audio out jack...not the speakers.&lt;br /&gt;&lt;br /&gt;so i enabled snd_hda_load="YES" in /boot/loader.conf&lt;br /&gt;(this also loads sound.ko (sound core))&lt;br /&gt;&lt;br /&gt;then added some device hints to /boot/device.hints for the snd_hda driver.&lt;br /&gt;i went ahead and added all 'gpio' hints, even though i don't know what they mean ;p&lt;br /&gt;hint.pcm.0.config="gpio0,gpio1,gpio2,gpio3,gpio4,gpio5,gpio6,gpio7"&lt;br /&gt;&lt;br /&gt;There are several other hints in the snd_hda man page...dunno what they do.&lt;br /&gt; Anyway, after adding the gpio flags Sound worked from the internal speakers! ;)&lt;br /&gt;Not sure which flag exactly did it...but one of them did!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-8297571329372460577?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/8297571329372460577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/freebsd-70-dell-latitude-d830-intel_9758.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8297571329372460577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/8297571329372460577'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/freebsd-70-dell-latitude-d830-intel_9758.html' title='freebsd 7.0, dell latitude d830, intel snd_hda'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-963316142900894484</id><published>2008-06-17T08:11:00.002-04:00</published><updated>2009-09-17T15:10:02.452-04:00</updated><title type='text'>man in the first place i just wanted to setup this box as the ap</title><content type='html'>[quleap] man in the first place i just wanted to setup this box as the ap&lt;br /&gt;[quleap] instead of running an openvpn to it through a linksys&lt;br /&gt;[quleap] i want some real security&lt;br /&gt;[me] quleap: unplug it!~&lt;br /&gt;[EdwardElric] haha&lt;br /&gt;[EdwardElric] fool proof&lt;br /&gt;[quleap] then there'd be nothign to secure&lt;br /&gt;[quleap] i like it&lt;br /&gt;[quleap] very zen&lt;br /&gt;[quleap] lol&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8005120615989478842-963316142900894484?l=xunlinkx.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xunlinkx.blogspot.com/feeds/963316142900894484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/man-in-first-place-i-just-wanted-to_1026.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/963316142900894484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8005120615989478842/posts/default/963316142900894484'/><link rel='alternate' type='text/html' href='http://xunlinkx.blogspot.com/2008/06/man-in-first-place-i-just-wanted-to_1026.html' title='man in the first place i just wanted to setup this box as the ap'/><author><name>William Nix</name><uri>http://www.blogger.com/profile/13662527699427402618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_mow732HgwSM/SI3Sn_hTrAI/AAAAAAAAAAM/_qe8b_F4_K0/S220/will_work3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8005120615989478842.post-2993489561669830576</id><published>2008-06-16T08:59:00.002-04:00</published><updated>2009-09-17T15:10:02.481-04:00</updated><title type='text'>How to Wash your car..properly.</title><content type='html'>Taken from: http://crackaddict.com/~flynn/howtos/washhowto.htm&lt;br /&gt;&lt;br /&gt; &lt;div class="Section1"&gt;  &lt;h1&gt;&lt;a name="_Toc80981447"&gt;Routine Z Washing HOW-TO&lt;/a&gt;&lt;/h1&gt;  &lt;p class="MsoNormal" style=""&gt;By &lt;span class="SpellE"&gt;flynnibus&lt;/span&gt; @ &lt;a href="http://www.350zmotoring.com/"&gt;www.350zmotoring.com&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;Disclaimer:&lt;/b&gt; I am not responsible for any misinformation in this document or any damage that may occur to your vehicle from following this document. Consult your service manual for specific Nissan recommended instructions.&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="font-size: 16pt;"&gt;Table of Contents&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;!--[if supportFields]&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;span style="'mso-spacerun:yes'"&gt; &lt;/span&gt;TOC \o &amp;quot;1-2&amp;quot; \h \z \u &lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981447"&gt;Routine Z Washing HOW-TO&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;.. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981447 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;1&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400340037000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981448"&gt;Introduction&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981448 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;1&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400340038000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981449"&gt;Acknowledgements&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981449 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;2&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400340039000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981450"&gt;Routine Washing&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981450 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;2&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350030000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981451"&gt;Supplies needed:&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981451 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;2&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350031000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981452"&gt;Setup&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981452 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;5&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350032000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981453"&gt;Get started&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981453 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;5&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350033000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981454"&gt;Drying&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981454 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;8&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350034000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981455"&gt;Supplies&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981455 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;8&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350035000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981456"&gt;Tire Dressing&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981456 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;11&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350036000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981457"&gt;Cleaning the Windows&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981457 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;12&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350037000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981458"&gt;Exhaust Tips&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981458 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;14&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350038000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981459"&gt;Quick-Detail Top-off&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981459 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;15&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400350039000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981460"&gt;Exterior Summary&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981460 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;16&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400360030000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981461"&gt;Interior&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981461 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;16&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400360031000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc2" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981462"&gt;Cleaning the Interior&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981462 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;18&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400360032000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981463"&gt;Interior Summary&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981463 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;19&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400360033000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoToc1" style=""&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style=""&gt;&lt;a href="http://crackaddict.com/%7Eflynn/howtos/washhowto.htm#_Toc80981464"&gt;Final Looks&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="'color:windowtext;display:none;mso-hide:screen;text-decoration:none;"&gt; PAGEREF _Toc80981464 \h &lt;/span&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-separator'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;19&lt;/span&gt;&lt;span style="color: windowtext; display: none; text-decoration: none;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:data&gt;08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000D0000005F0054006F006300380030003900380031003400360034000000&lt;/w:data&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span style="'color:windowtext;"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;!--[if supportFields]&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h1&gt;&lt;a name="_Toc80981448"&gt;Introduction&lt;/a&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;This guide is intended to step by step guide you through the proper way to wash your Z.&lt;span style=""&gt;  &lt;/span&gt;There are several trains of thought on several methods, which I’ll mention when appropriate, but for the most part this guide will instruct you in the ways I have found to be effective and safe for your Z. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I’m sure everyone has washed a car before, but there is definitely a difference between getting the dirt off your car and making your car look its best.&lt;span style=""&gt;  &lt;/span&gt;This guide will try to tell you everything you need to know from the terminology, the supplies you’ll need and the techniques to use to get the most out of your car’s looks.&lt;span style=""&gt;  &lt;/span&gt;If you never thought there was any difference in how you wash a car, this guide will be a total reference for you.&lt;span style=""&gt;  &lt;/span&gt;If you are a veteran, hopefully this guide will fill in some areas you may have had questions on or tell you some things you may not have heard before.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Enjoy and please be sure to send any comments to me for improvements!&lt;/p&gt;  &lt;h1&gt;&lt;a name="_Toc80981449"&gt;Acknowledgements&lt;/a&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There is lots of good information available on detailing, and the Internet has made that information even easier to find.&lt;span style=""&gt;  &lt;/span&gt;However, there is still a lack of consolidated end-to-end guides or information that isn’t sales biased.&lt;span style=""&gt;  &lt;/span&gt;Two good commercialized (but still pretty accurate) sources I learned a lot from are autotopia.com and properautocare.com.&lt;span style=""&gt;  &lt;/span&gt;An invaluable source has been Brad4hay from my350z.com that in the past has written very detailed write-ups to help the community and helped people with their questions.&lt;span style=""&gt;  &lt;/span&gt;Thanks to these guys so others could learn as well&lt;/p&gt;  &lt;h1&gt;&lt;a name="_Toc80981450"&gt;Routine Washing&lt;/a&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;The goal of washing is to remove the loose dirt and containments without damaging the finish of the car.&lt;span style=""&gt;  &lt;/span&gt;Cleaning the car without damaging the car’s finish is the key difference between a casual car wash and a quality wash.&lt;span style=""&gt;  &lt;/span&gt;If you are careless, at the least you will reduce the longevity of the protection you currently have on the car, scratch the finish, or worse, stain or actually irreversibly damage the car’s finish.&lt;/p&gt;  &lt;h2&gt;&lt;a name="_Toc80981451"&gt;Supplies needed:&lt;/a&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;Two buckets&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Car Wash Shampoo&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Cotton Mitt&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Water Hose w/Nozzle&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Stiff Bristle Tire/Wheel Brush&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Soft Bristle Tire/Wheel Brush&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Tire Cleaner&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Wheel Cleaner&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Cotton Rags&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Two Buckets&lt;/b&gt; – Any two buckets will do as long as they are clean and are at least 1 gallon in size.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;/b&gt;&lt;span style=""&gt;  &lt;/span&gt;Standard cleaning buckets you can find at any &lt;span class="SpellE"&gt;WalMart&lt;/span&gt;, etc in the cleaning supplies section.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Car Wash Shampoo&lt;/b&gt; – The shampoo’s purpose is to break up the dirt and lube the surface of the car so things slide off the finish.&lt;span style=""&gt;  &lt;/span&gt;A good shampoo should be gentle on the car’s finish, so you don’t strip off previously applied protection or damage the car’s finish while still being tough on dirt and crud.&lt;span style=""&gt;  &lt;/span&gt;A good shampoo will suds up well and maintain its suds.&lt;span style=""&gt;  &lt;/span&gt;Using strong detergents (like Dish Soap) will strip the wax you have on the car and can dull your finish so they should never be used routinely on your car (You’ll hear recommendations to use Dawn for stripping things off car.&lt;span style=""&gt;  &lt;/span&gt;Never use it for routine washing)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:66.75pt;"&gt;  &lt;v:imagedata src="washhowto_files/image001.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image002.jpg" shapes="_x0000_i1025" height="145" width="89" /&gt;&lt;!--[endif]--&gt;&lt;span style=""&gt;                                      &lt;/span&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" style="'width:42.75pt;height:107.25pt'"&gt;  &lt;v:imagedata src="washhowto_files/image003.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image004.jpg" shapes="_x0000_i1026" height="143" width="57" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Meguiar’s&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt; Gold Class Shampoo&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;                &lt;/span&gt;P21S Shampoo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Cotton Mitt&lt;/b&gt; – The most important piece is the tool you are applying to your car’s surface.&lt;span style=""&gt;  &lt;/span&gt;The mitt should be clean, free of any dirt or debris.&lt;span style=""&gt;  &lt;/span&gt;Cotton is soft and if kept clean will wipe dirt away without damaging your car’s finish.&lt;span style=""&gt;  &lt;/span&gt;Natural Sponges are favored by some as well, but are expensive and not as easy to maintain.&lt;span style=""&gt;  &lt;/span&gt;Artificial sponges aren’t good to use as the flat surface traps dirt between the sponge and the car’s surface.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" style="'width:126pt;height:80.25pt'"&gt;  &lt;v:imagedata src="washhowto_files/image005.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image006.jpg" shapes="_x0000_i1027" height="107" width="168" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Cotton Mitt from properautocare.com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Hose and Nozzle&lt;/b&gt; – Often overlooked, a good nozzle will save you time and can prevent accidents while cleaning your car.&lt;span style=""&gt;  &lt;/span&gt;Use a nozzle with multiple spray settings and has rubber edges in case it comes in contact with the car.&lt;span style=""&gt;  &lt;/span&gt;You will want a jet setting, a shower setting, and ideally a soaker setting.&lt;span style=""&gt;  &lt;/span&gt;Really any hose nozzle will do, but spending $5 on the proper nozzle will prevent you from accidentally scratching your car and save you time on drying.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products&lt;/b&gt;:&lt;span style=""&gt;  &lt;/span&gt;I haven’t found any nozzles online that are cheap and meet my criteria (if you have… tell me where!).&lt;span style=""&gt;  &lt;/span&gt;Look at your local Lowe’s or &lt;span class="SpellE"&gt;Walmart&lt;/span&gt; and find a cheap one that meets the above requirements.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1035" type="#_x0000_t75" style="'width:151.5pt;height:79.5pt'"&gt;  &lt;v:imagedata src="washhowto_files/image007.jpg" title="nozzle"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image008.jpg" shapes="_x0000_i1035" height="106" width="202" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Generic Nozzle from Lowe’s I use&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Brushes&lt;/b&gt; – You’ll want a stiff nylon bristle brush for your tires, usually the palm-style brushes are the easiest to use.&lt;span style=""&gt;  &lt;/span&gt;You’ll want a softer bristle nylon brush for the rims themselves.&lt;span style=""&gt;  &lt;/span&gt;Brushes with long handles and low profile heads work best for reaching inside rims.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1028" type="#_x0000_t75" style="'width:1in;height:1in'"&gt;  &lt;v:imagedata src="washhowto_files/image009.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image010.jpg" shapes="_x0000_i1028" height="96" width="96" /&gt;&lt;!--[endif]--&gt;&lt;span style=""&gt;                                                &lt;/span&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1029" type="#_x0000_t75" style="'width:126pt;height:75.75pt'"&gt;  &lt;v:imagedata src="washhowto_files/image011.jpg" title="red brush"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image012.jpg" shapes="_x0000_i1029" height="101" width="168" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Oxo&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt; Brush from &lt;span style=""&gt;                                                 &lt;/span&gt;Generic Long Handled Brush&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;properautocare.com (for tires)&lt;span style=""&gt;                         &lt;/span&gt;&lt;span style=""&gt;                &lt;/span&gt;(for rims)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Tire Cleaner/Wheel&lt;/b&gt; Cleaner – While Acid-based cleaners are the strongest, they can damage your painted or polished rims.&lt;span style=""&gt;  &lt;/span&gt;An Acid-free cleaner can do the job and will be safer on your rims.&lt;span style=""&gt;  &lt;/span&gt;Some even should be diluted and should only be used in full strength when needed.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products: &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1030" type="#_x0000_t75" style="'width:82.5pt;height:115.5pt'"&gt;  &lt;v:imagedata src="washhowto_files/image013.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image014.jpg" shapes="_x0000_i1030" height="154" width="110" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Eimann&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt; &lt;span class="SpellE"&gt;Fabrik&lt;/span&gt; Hi Intensity Cleaner &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;diluted&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt; 1:1 with water&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Cotton Rags&lt;/b&gt; – Cotton rags are your catch all cleaning material.&lt;span style=""&gt;  &lt;/span&gt;You don’t need to be very picky here, as the main thing is to be lint free and pure cotton.&lt;span style=""&gt;  &lt;/span&gt;Also, be sure to keep your ‘dirty ones’ for the dirty uses (like tires), and clean for clean uses (like interior).&lt;span style=""&gt;  &lt;/span&gt;I bought a box of rags from properautocare.com and I’ve barely made a dent in my supply.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1047" type="#_x0000_t75" style="'width:150pt;height:113.25pt'"&gt;  &lt;v:imagedata src="washhowto_files/image015.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image016.jpg" shapes="_x0000_i1047" height="151" width="200" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Pack of 24 Surgical Towels from&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Properautocare.com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;Here is a shot of my ‘collection’ of wash bits ready for action&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1032" type="#_x0000_t75" style="'width:255.75pt;height:192pt'"&gt;  &lt;v:imagedata src="washhowto_files/image017.jpg" title="collection"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image018.jpg" shapes="_x0000_i1032" height="256" width="341" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;h2&gt;&lt;a name="_Toc80981452"&gt;Setup&lt;/a&gt;&lt;/h2&gt;  &lt;h3&gt;Stay Cool&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Pick a spot out of direct sun and when the car’s surface is cool.&lt;span style=""&gt;  &lt;/span&gt;When the surface is hot, the &lt;span class="SpellE"&gt;clearcoat&lt;/span&gt; is softer, making it easier to scratch.&lt;span style=""&gt;  &lt;/span&gt;When the car is hot, water will evaporate faster and will lead to more spots.&lt;span style=""&gt;  &lt;/span&gt;So pick a spot out of direct sun if you can.&lt;/p&gt;  &lt;h3&gt;Get Naked&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Remove any metal from yourself.&lt;span style=""&gt;  &lt;/span&gt;This includes things like belt buckles, metal studs on jeans, bracelets, watches, zippers, etc.&lt;span style=""&gt;  &lt;/span&gt;You want to remove anything that accidentally may come in contact with the car.&lt;span style=""&gt;  &lt;/span&gt;Jeans and zippers especially can be overlooked and cause irreversible damage.&lt;span style=""&gt;  &lt;/span&gt;I prefer working in a t-shirt and work-out shorts, or my nylon pants if it is cold outside.&lt;/p&gt;  &lt;h3&gt;Fill up&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Fill up one bucket with clean water only.&lt;span style=""&gt;  &lt;/span&gt;This will be your rinse bucket.&lt;span style=""&gt;  &lt;/span&gt;If at any point this bucket becomes murky, dump it and refill with fresh water.&lt;span style=""&gt;  &lt;/span&gt;Fill the second bucket with water and your car shampoo based on the label’s recommendation.&lt;span style=""&gt;  &lt;/span&gt;Don’t forget to dump this bucket when necessary!&lt;/p&gt;  &lt;h2&gt;&lt;a name="_Toc80981453"&gt;Get started&lt;/a&gt;&lt;/h2&gt;  &lt;h3&gt;Rinse&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Using the shower setting on your nozzle, rinse the entire car.&lt;span style=""&gt;  &lt;/span&gt;Rinse as much dirt off as possible.&lt;span style=""&gt;  &lt;/span&gt;Don’t use a jet spray, just rinse with the shower setting.&lt;span style=""&gt;  &lt;/span&gt;Save the jet to rinse things like your rims.&lt;span style=""&gt;  &lt;/span&gt;Make sure the entire car is wet. &lt;span style=""&gt; &lt;/span&gt;If at any time the car becomes dry, simply spray it again to keep it wet.&lt;span style=""&gt;  &lt;/span&gt;You don’t want the car to dry until you are ready to dry it completely.&lt;span style=""&gt;  &lt;/span&gt;If you have any crud on the car like bird droppings, try to remove as much of the material as possible with just the nozzle spray before moving onto the next step.&lt;/p&gt;  &lt;h3&gt;Washing Panels&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;The key to washing is a clean mitt.&lt;span style=""&gt;  &lt;/span&gt;Two rules to follow:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;1)&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;ALWAYS rinse the mitt by vigorously shaking the mitt in the clean water bucket before dunking in the soap bucket for more suds.&lt;span style=""&gt;  &lt;/span&gt;Every time you go for more suds you rinse in the clean bucket first.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;2)&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;As soon as you get ANY brown on your mitt, rinse mitt in the clean bucket and reload the mitt with suds.&lt;span style=""&gt;  &lt;/span&gt;Be sure to keep checking your mitt, as it may load up VERY quickly if your car if filthy (in just a few swipes).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;At first this may seem extreme, but it’s hardly any more work, and is the difference been damaging your finish and minimizing the inevitable swirl marks on your finish.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1031" type="#_x0000_t75" style="'width:204.75pt;height:153.75pt'"&gt;  &lt;v:imagedata src="washhowto_files/image019.jpg" title="dirty mitt"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image020.jpg" shapes="_x0000_i1031" height="205" width="273" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Here’s an example of what I mean by a dirty mitt.&lt;span style=""&gt;  &lt;/span&gt;As soon as you see any grey/brown on the mitt, its time to rinse.&lt;span style=""&gt;  &lt;/span&gt;Cheating here and not rinsing is where those fine scratches come from!&lt;span style=""&gt;  &lt;/span&gt;After flushing in the bucket alone, this grey will disappear&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Start with the roof of the car.&lt;span style=""&gt;  &lt;/span&gt;Work one area at a time and rinse with your hose on the shower setting.&lt;span style=""&gt;  &lt;/span&gt;Be sure to rinse all shampoo off the car.&lt;span style=""&gt;  &lt;/span&gt;Save the dirtiest parts of the car for last.&lt;span style=""&gt;  &lt;/span&gt;Clean the exterior windows with the mitt as you go along.&lt;span style=""&gt;  &lt;/span&gt;I work in the following order&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Roof&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Rear hatch&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Hood&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Top half of the sides of the car&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Rear bumper&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Front bumper&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.75in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;-&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Lower side panels&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;When dealing with the lower half of the car, you’ll find the mitt getting dirty VERY quickly, don’t cheat and be sure to rinse the mitt when dirty AND before each dunk in the suds bucket.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;After washing all the panels, I open up the doors and wipe the inside door jams with just a wet mitt.&lt;span style=""&gt;  &lt;/span&gt;I also wipe the jams under the rear hatch, again without soap so no rinsing is required.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If you are doing a quick wash, take a clean cotton rag, wet it, and wipe your exhaust pipes.&lt;span style=""&gt;  &lt;/span&gt;Otherwise, wait on the tips till later.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Stubborn Bug Stains&lt;/b&gt; – Bugs if not cleaned off the car soon enough will leave a substance like sap on the finish which can even etch into the finish.&lt;span style=""&gt;  &lt;/span&gt;Often using the cotton mitt requires a lot of work to clean even these light stains off and you’ll be tempted to ‘scrape’ the stuff off.&lt;span style=""&gt;  &lt;/span&gt;I’ve found the ‘bug sponges’ like the ‘Safe Scrub’ to be very effective and easy to use.&lt;span style=""&gt;  &lt;/span&gt;They feel very rough, but soften once wet.&lt;span style=""&gt;  &lt;/span&gt;I still would only use them ‘as needed’ and cautiously on highly visible areas.&lt;span style=""&gt;  &lt;/span&gt;The front bumper on the other hand though isn’t very visible in terms of scratches so I scrub the entire front bumper area with the sponge soaked in the normal suds bucket to clean off all the bug stains before using my normal cotton mitt.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1033" type="#_x0000_t75" style="'width:187.5pt;height:124.5pt'"&gt;  &lt;v:imagedata src="washhowto_files/image021.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image022.jpg" shapes="_x0000_i1033" height="166" width="250" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Bug Sponge from Properautocare.com &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;Tire Washing&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Work on one wheel at a time.&lt;span style=""&gt;  &lt;/span&gt;Start by wetting the wheel with the hose again.&lt;span style=""&gt;  &lt;/span&gt;Spray liberal amount of diluted 1:1 Hi Intensity Cleaner onto the rim.&lt;span style=""&gt;  &lt;/span&gt;Scrub the rim with your long handle soft bristle brush.&lt;span style=""&gt;  &lt;/span&gt;When working on your front rims, it may take awhile and you will have LOTS of black fluid sitting on the rim.&lt;span style=""&gt;  &lt;/span&gt;If your rim is very dirty, you should rinse the excess off mid-way through working on the rim.&lt;span style=""&gt;  &lt;/span&gt;If you don’t, the excess will dry on the rim requiring you to clean it again.&lt;span style=""&gt;  &lt;/span&gt;I work on my &lt;span class="SpellE"&gt;touring’s&lt;/span&gt; rims by doing the triangular sections of the face of the rim and the center hub then rinse.&lt;span style=""&gt;  &lt;/span&gt;Spray some more cleaner on the rim near the inner side, then work the inside of the rim making sure to get the flat part of the rim behind where the spokes meat the rim and then rinse again.&lt;span style=""&gt;  &lt;/span&gt;When dealing with the lug holes, I actually just use my finger to run around in the hole.&lt;span style=""&gt;  &lt;/span&gt;Optionally you can use &lt;span class="GramE"&gt;a&lt;/span&gt; old worn toothbrush as well.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Then spray the rubber part of the tire, and the *plastic* parts of the inner wheel wells.&lt;span style=""&gt;  &lt;/span&gt;Avoid spraying on painted areas.&lt;span style=""&gt;  &lt;/span&gt;For the front wheels, I scrub the plastic guards inside the well where I can easily reach.&lt;span style=""&gt;  &lt;/span&gt;For the rears I just spray cleaner up onto the coated areas but do not scrub with the brush unless absolutely necessary.&lt;span style=""&gt;  &lt;/span&gt;Then, using your stiff bristled brush, scrub the rubber part of your tire.&lt;span style=""&gt;  &lt;/span&gt;Finish by rinsing the entire well, tire, and rim with the hose thoroughly.&lt;span style=""&gt;  &lt;/span&gt;Then move onto the next wheel.&lt;/p&gt;  &lt;h1&gt;&lt;a name="_Toc80981454"&gt;Drying&lt;/a&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;Drying the car can be very easy or take a lot of work to get a streak free finish if you don’t have the right materials, technique and upkeep on your car’s finish.&lt;/p&gt;  &lt;h2&gt;&lt;a name="_Toc80981455"&gt;Supplies&lt;/a&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;Big Blue Drying Towel&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Water Hose w/Nozzle&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Some people prefer two other methods, the California Water Blade or Absorber towel.&lt;span style=""&gt;  &lt;/span&gt;My opinion on the water blade is you will find even after a good wash, often you miss some dirt (as seen on your towel) so rubbing even a soft silicon blade across this dirty surface is not a good idea.&lt;span style=""&gt;  &lt;/span&gt;The absorber is another towel one would use instead of Big Blue.&lt;span style=""&gt;  &lt;/span&gt;It is almost like a super-chamois towel.&lt;span style=""&gt;  &lt;/span&gt;Others report good results with it, but I’ve found the Big Blue towel more then adequate and I prefer the soft Microfiber aspect of the Big Blue as well.&lt;span style=""&gt;  &lt;/span&gt;The Big Blue Towel can be purchased from &lt;a href="http://www.properautocare.com/"&gt;www.properautocare.com&lt;/a&gt; or other locations.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1034" type="#_x0000_t75" style="'width:255.75pt;height:192pt'"&gt;  &lt;v:imagedata src="washhowto_files/image023.jpg" title="big blue"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image024.jpg" shapes="_x0000_i1034" border="0" height="256" width="341" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Big Blue II Drying Towel from Properautocare.com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The key to drying the car without spots or streaks is to not let the water dry by itself where its containments would be left behind (spots) and to minimize the amount of water on the car before drying (how you get streaks).&lt;/p&gt;  &lt;h3&gt;Preparation&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;If any part of your car has dried, wet it down again with the hose.&lt;span style=""&gt;  &lt;/span&gt;If the water dried by itself, you’ll have spots left behind otherwise.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;h3&gt;Minimizing Water left behind&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Set your hose nozzle on soaker setting.&lt;span style=""&gt;  &lt;/span&gt;If your nozzle doesn’t have a soaker setting, remove your nozzle and turn your water flow down to a soft flow.&lt;span style=""&gt;  &lt;/span&gt;Start at the top of the car and move side to side “pushing” the water puddles off the car with the water flow.&lt;span style=""&gt;  &lt;/span&gt;The surface tension of the water rolling over the car will pull most of the water off as the larger flow of water you just created rolls off the car.&lt;span style=""&gt;  &lt;/span&gt;The key is SOFT water flow.&lt;span style=""&gt;  &lt;/span&gt;Just spraying with the hose will cause too much disturbance and the surface tension will be broken making this method less effective.&lt;span style=""&gt;  &lt;/span&gt;Some water will be left behind, but no puddles and much less then when you started.&lt;span style=""&gt;  &lt;/span&gt;If you do not have a semi-decent wax/polymer finish on the car, this step will not be as effective.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Example Photo&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1036" type="#_x0000_t75" style="'width:320.25pt;height:240pt'"&gt;  &lt;v:imagedata src="washhowto_files/image025.jpg" title="water"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image026.jpg" shapes="_x0000_i1036" border="0" height="320" width="427" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Here the driver’s side of the hood has been prepared using nozzle to ‘push’ the excess water off the car.&lt;span style=""&gt;  &lt;/span&gt;Notice how the center of the hood car has MANY more water puddles then the driver’s side (passenger side hard to see due to tree reflection).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;Drying with the Big Blue Towel&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Using the towel properly is the key to making it work.&lt;span style=""&gt;  &lt;/span&gt;Hold two corners of the towel, drape 1/3 to ½ of the towel on the car’s panel while holding the rest up off the panel, and drag it across the car.&lt;span style=""&gt;  &lt;/span&gt;Repeat to dry the panel.&lt;span style=""&gt;  &lt;/span&gt;Dragging the towel vs. wiping with the towel allows the towel to wick up the water better and the towel doesn’t get saturated as quickly.&lt;span style=""&gt;  &lt;/span&gt;This method leaves no streaks and very small amounts of water left on the panel to clean up.&lt;span style=""&gt;  &lt;/span&gt;To clean up these last remaining bits, just wipe using the towel in your hand.&lt;span style=""&gt;  &lt;/span&gt;If there are any spots from areas where water dried, simply wipe the area with a damp section of the towel and the spots will disappear. &lt;span style=""&gt;  &lt;/span&gt;The Big Blue Towel does not dry as well if the towel is saturated with water.&lt;span style=""&gt;  &lt;/span&gt;If it gets full, ring it out as much as possible.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Example Photo&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1037" type="#_x0000_t75" style="'width:320.25pt;height:240pt'"&gt;  &lt;v:imagedata src="washhowto_files/image027.jpg" title="drag towel"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image028.jpg" shapes="_x0000_i1037" border="0" height="320" width="427" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;This is a poor attempt to show how to drag the towel rather then wiping with the towel.&lt;span style=""&gt;  &lt;/span&gt;Normally I would hold both corners at the bottom of the photo, but I was holding the camera.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1038" type="#_x0000_t75" style="'width:320.25pt;height:240pt'"&gt;  &lt;v:imagedata src="washhowto_files/image029.jpg" title="towel after"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image030.jpg" shapes="_x0000_i1038" border="0" height="320" width="427" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Here is a shot showing the hood after a single drag of the towel across the hood.&lt;span style=""&gt;  &lt;/span&gt;Successive drags would get the remaining water on the flat surfaces.&lt;span style=""&gt;  &lt;/span&gt;Simply wipe using the towel in your hand to dry the water in the fold in the hood.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For the vertical panels where you can’t drag the towel across, hold the towel open from the top two corners, and flap it up against the panel.&lt;span style=""&gt;  &lt;/span&gt;This will dry up the most of the water, and just wipe the remaining water using the towel in your hand.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I work in the same order as I do washing the panels but skip drying the glass for now. &lt;span style=""&gt; &lt;/span&gt;Start with the roof of the car and then move to the hatch, hood, sides, and then bumpers.&lt;span style=""&gt;  &lt;/span&gt;Leave the glass till last as that holds the most water and saturates the towel.&lt;span style=""&gt;  &lt;/span&gt;I also usually don’t bother drying the side sills or front bumper unless I’m preparing to polish/wax the car.&lt;span style=""&gt;  &lt;/span&gt;These tend to be the dirtiest part of the car, even after washing, and water marks are not visible at all on these parts of the car.&lt;span style=""&gt;  &lt;/span&gt;After drying all the car panels, open the doors and hatch and dry the jams.&lt;span style=""&gt;  &lt;/span&gt;Opening these will cause more water to run down from your mirrors and near the hatch.&lt;span style=""&gt;  &lt;/span&gt;After drying the jams, close the car back up and clean up any excess water that has ran from mirrors and hatch (also often the rear brake lights and blinkers hold excess that leaks out).&lt;span style=""&gt;  &lt;/span&gt;Finish by quickly getting the excess water off the windows with your Big Blue.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Hint:&lt;/b&gt; Keep checking your towel to make sure it’s clean.&lt;span style=""&gt;  &lt;/span&gt;Sometimes you miss a spot washing, and the dirt will get picked up in your towel.&lt;span style=""&gt;  &lt;/span&gt;Don’t dry the car with a dirty towel!&lt;span style=""&gt;  &lt;/span&gt;With just a little dirt, I just avoid using that portion of the towel until done, if the towel gets too dirty, you’ll have to flush it clean.&lt;span style=""&gt;  &lt;/span&gt;If you have to flush the towel, simply wring it out as dry as possible and continue drying.&lt;span style=""&gt;  &lt;/span&gt;The Big Blue defiantly works better when not fully soaked (unlike a chamois).&lt;span style=""&gt;  &lt;/span&gt;On my Z, if the car is clean, I can dry the entire car with just the Big Blue without issue, but I do have two Big Blue Towels and it is definitely easier with two (in case one gets dirty, or you’ve done a poor job reducing the amount of water on the car).&lt;/p&gt;  &lt;h3&gt;&lt;st1:place st="on"&gt;Flushing&lt;/st1:place&gt; Microfiber Towels&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;This method works GREAT for cleaning out your Microfiber towels if you get a dirt stain on the towel or when done for the day.&lt;span style=""&gt;  &lt;/span&gt;Microfiber towels can be machine washed, but eventually start breaking down and become less effective when washed a lot, so this is the preferred method to keep them clean when possible.&lt;span style=""&gt;  &lt;/span&gt;Spread the dirty section of the towel over your hand (always keep MF towels off the ground), then with your nozzle set on shower, spray the towel with the nozzle about 1’ away from the towel.&lt;span style=""&gt;  &lt;/span&gt;The water will flush the towel and you’ll see packed dirt rinse right out of the towel.&lt;span style=""&gt;  &lt;/span&gt;All but the toughest stains will disappear almost immediately.&lt;span style=""&gt;  &lt;/span&gt;Dirt that is rubbed into the towel, you can rub lightly with your fingers.&lt;span style=""&gt;  &lt;/span&gt;Usually this light rubbing is enough to get the dirt out.&lt;span style=""&gt;  &lt;/span&gt;Dirt that will not come out with this method will have to wait for the washing machine.&lt;span style=""&gt;  &lt;/span&gt;Just avoid using that area of the towel until it is cleaned.&lt;/p&gt;  &lt;h2&gt;&lt;a name="_Toc80981456"&gt;Tire Dressing&lt;/a&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;Tire treatments serve two purposes, to look good and protect.&lt;span style=""&gt;  &lt;/span&gt;However, a product that may make the rubber look &lt;span class="GramE"&gt;great,&lt;/span&gt; may be horrible for your tires.&lt;span style=""&gt;  &lt;/span&gt;Silicon based products are the top to avoid.&lt;span style=""&gt;  &lt;/span&gt;They will cause the tires to ‘bloom’ which robs the rubber of its natural oils and eventually will lead to browning and cracking of the rubber.&lt;span style=""&gt;  &lt;/span&gt;Second to avoid are products that stay as excess on the surface as they will ‘sling’ off the tire as the car moves, and get all over your car.&lt;span style=""&gt;  &lt;/span&gt;The last factor is what type of finish you want.&lt;span style=""&gt;  &lt;/span&gt;I prefer a ‘satin’ finish, so my product of choice is 303 Aerospace &lt;span class="SpellE"&gt;Protectant&lt;/span&gt;.&lt;span style=""&gt;  &lt;/span&gt;It provides great UV protection, silicon-free, and gives a great satin finish.&lt;span style=""&gt;  &lt;/span&gt;It may not last as long as some other products, but will never be a sling problem like some tire gels are.&lt;span style=""&gt;  &lt;/span&gt;Eagle One Tire Gel is a popular choice for those looking for a ‘wetter’ look.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1048" type="#_x0000_t75" style="'width:126pt;height:126pt'"&gt;  &lt;v:imagedata src="washhowto_files/image031.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image032.jpg" shapes="_x0000_i1048" border="0" height="168" width="168" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;303 Aerospace &lt;span class="SpellE"&gt;Protectant&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Available from properautocare.com&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Application is straight forwarding.&lt;span style=""&gt;  &lt;/span&gt;Avoid spraying any onto the tread of the tire.&lt;span style=""&gt;  &lt;/span&gt;Simply spray the product liberally, but uniformly over the sides of the tire.&lt;span style=""&gt;  &lt;/span&gt;Let the tire sits after spraying the product on the tire.&lt;span style=""&gt;  &lt;/span&gt;To do this, I spray all four tires, and then let the tires sit at least 10 minutes by moving onto the next step, then coming back later to wipe/buff.&lt;span style=""&gt;  &lt;/span&gt;When ready, wipe the tires with a cotton rag to remove any excess and make sure you get a uniform look to the tire’s surface.&lt;span style=""&gt;  &lt;/span&gt;The key to avoid blotching is simply spraying the product on evenly.&lt;span style=""&gt;  &lt;/span&gt;A keep a separate set of cotton rags for wiping the tires.&lt;/p&gt;  &lt;h2&gt;&lt;a name="_Toc80981457"&gt;Cleaning the Windows&lt;/a&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;Cleaning the windows isn’t required for each wash, but I recommend at least doing the outsides each time if you have time.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;Supplies Needed:&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Glass Cleaner&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Drying Material&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Glass Cleaner&lt;/b&gt; – Glass cleaner should break through dirt while trying to be as streak free as possible.&lt;span style=""&gt;  &lt;/span&gt;Also of significance is being safe for tint or not.&lt;span style=""&gt;  &lt;/span&gt;Home Windex is not safe for tint.&lt;span style=""&gt;  &lt;/span&gt;I prefer Stoners Invisible Glass for cleaning.&lt;span style=""&gt;  &lt;/span&gt;I also like &lt;span class="SpellE"&gt;Eimann&lt;/span&gt; &lt;span class="SpellE"&gt;Fabrik&lt;/span&gt; Clear Vision.&lt;span style=""&gt;  &lt;/span&gt;&lt;span class="GramE"&gt;Stoners is&lt;/span&gt; better for strong cleaning, Clear Vision is better for less streaking.&lt;span style=""&gt;  &lt;/span&gt;Because I tend to have lots of bug stains, I prefer Stoners for my regular cleanings.&lt;span style=""&gt;  &lt;/span&gt;Stoners you can even find in local &lt;span class="SpellE"&gt;WalMarts&lt;/span&gt; or Auto stores, Clear Vision you’ll probably have to order online.&lt;span style=""&gt;  &lt;/span&gt;Clear Vision is an incredible product, just doesn’t have as much dirt-power as the Stoners product.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1039" type="#_x0000_t75" style="'width:44.25pt;height:96.75pt'"&gt;  &lt;v:imagedata src="washhowto_files/image033.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image034.jpg" shapes="_x0000_i1039" border="0" height="129" width="59" /&gt;&lt;!--[endif]--&gt;&lt;span style=""&gt;                                 &lt;/span&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1040" type="#_x0000_t75" style="'width:64.5pt;height:96.75pt'"&gt;  &lt;v:imagedata src="washhowto_files/image035.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image036.jpg" shapes="_x0000_i1040" border="0" height="129" width="86" /&gt;&lt;!--[endif]--&gt;&lt;span style=""&gt;                           &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Stoners Invisible Glass&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span class="SpellE"&gt;Eimann&lt;/span&gt; &lt;span class="SpellE"&gt;Fabrik&lt;/span&gt; Clear Vision&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Drying Material&lt;/b&gt; – The key to a good drying material is three fold, cleaning the window (abrasive, but not enough to scratch the glass), absorbency, and lint free.&lt;span style=""&gt;  &lt;/span&gt;There are special &lt;span class="SpellE"&gt;microfiber&lt;/span&gt; weaves available for glass cleaning, and while they excel at cleaning and being lint free, they tend to get saturated making it harder to leave the window completely dry and are relatively expensive.&lt;span style=""&gt;  &lt;/span&gt;I’ve used the Microfiber towels designed for glass and while they are effective, they aren’t that much better to be worth the cost or effort.&lt;span style=""&gt;  &lt;/span&gt;A towel such as the Viper Glass Cloth costs more, and must be maintained, while old newspaper is basically free (a Sunday edition will last you for years), works as good or better for tough stains, is lint-free, and is just thrown away when used up.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products&lt;/b&gt;:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1041" type="#_x0000_t75" style="'width:90.75pt;height:94.5pt'"&gt;  &lt;v:imagedata src="washhowto_files/image037.png" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image038.jpg" shapes="_x0000_i1041" border="0" height="126" width="121" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Old Newspaper&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;h3&gt;Cleaning the glass&lt;/h3&gt;  &lt;p class="MsoNormal"&gt;Stoners is an aerosol product, so spray the product lightly onto the glass, take 2 or 3 pages of newspaper, lightly crumple them into a large bundle and wipe the glass until dry.&lt;span style=""&gt;  &lt;/span&gt;I keep one side of the bundle for the ‘wet’ wiping, and the other for the drying wipes.&lt;span style=""&gt;  &lt;/span&gt;If you have some stubborn stains, apply some cleaner directly to the stain, let it soak for a minute or so, then rub vigorously with your newspaper.&lt;span style=""&gt;  &lt;/span&gt;If your newspaper becomes saturated and you find it hard to dry the glass, re-arrange your bundle and when no more dry material is available, toss it and make a new one from more newspaper.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;For the side and inside mirrors, I use a piece of the newspaper bundle which is already saturated with some cleaner and simply wipe the mirror instead of spraying the mirror directly.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I recommend at least doing the outside of your windshield each time you wash the car.&lt;span style=""&gt;  &lt;/span&gt;Doing all the other window surfaces is not required each time&lt;/p&gt;  &lt;h1&gt;&lt;a name="_Toc80981458"&gt;Exhaust Tips&lt;/a&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;The beautiful exhaust tips on our Z deserve special attention.&lt;span style=""&gt;  &lt;/span&gt;When in a rush, I’ll skip or just wipe with a wet cotton cloth, but the real way is to use a metal cleaner and polish.&lt;span style=""&gt;  &lt;/span&gt;This really doesn’t take long at all (It takes longer to walk back into my garage and get the can then to clean the tips).&lt;span style=""&gt;  &lt;/span&gt;I’ve used the &lt;span class="SpellE"&gt;Nevr&lt;/span&gt;-Dull metal polish for years on my pinball machines and it does an excellent job on our polished tips.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Recommended Products:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1042" type="#_x0000_t75" style="'width:223.5pt;height:164.25pt'"&gt;  &lt;v:imagedata src="washhowto_files/image039.jpg" title="neverdull"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image040.jpg" shapes="_x0000_i1042" border="0" height="219" width="298" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Nevr&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;-Dull Metal Polish&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Start by grabbing a small pinch of polishing material and wipe the entire outer surface of the tips.&lt;span style=""&gt;  &lt;/span&gt;Be sure to watch how coated the wadding gets.&lt;span style=""&gt;  &lt;/span&gt;It can get black, but don’t let it get caked.&lt;span style=""&gt;  &lt;/span&gt;Simply rearrange the wadding, or get a new pinch.&lt;span style=""&gt;  &lt;/span&gt;Finish off by wiping the lip around the exit end of the tip.&lt;span style=""&gt;  &lt;/span&gt;The polish will leave &lt;span class="GramE"&gt;a reside&lt;/span&gt; on the tip.&lt;span style=""&gt;  &lt;/span&gt;Simply allow to sit and dry, and after several minutes, simply wipe with a clean cotton cloth.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1043" type="#_x0000_t75" style="'width:255.75pt;height:192pt'"&gt;  &lt;v:imagedata src="washhowto_files/image041.jpg" title="pinch"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image042.jpg" shapes="_x0000_i1043" border="0" height="256" width="341" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;This is what the Never Dull wadding looks like and an example of how little material is really needed to use.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Before Photo&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1044" type="#_x0000_t75" style="'width:200.25pt;height:165pt'"&gt;  &lt;v:imagedata src="washhowto_files/image043.jpg" title="tipsbefore"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="http://crackaddict.com/%7Eflynn/howtos/washhowto_files/image044.jpg" shapes="_x0000_i1044" border="0" height="220" width="267" /&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;After Photos&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1045" type="#_x0000_t75" style="'width:3in;height:162pt'"&gt;  
