<?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-5337568718539148738</id><updated>2012-02-01T04:49:03.394-07:00</updated><title type='text'>Geek Speak 101</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-8912749183520755730</id><published>2009-09-17T22:07:00.003-06:00</published><updated>2009-09-17T22:11:39.077-06:00</updated><title type='text'>Zabbix Alerts &amp; Rights</title><content type='html'>I've run into this problem with Zabbix before, but I just hit it again today and had to spend time figuring it out.  Have you ever added a user to a group that is supposed to receive alerts when triggers go off on a host, but the user doesn't receive any e-mails?  During troubleshooting, you'll probably notice that Zabbix doesn't even attempt to send e-mails.  &lt;br /&gt;&lt;br /&gt;In my case, this was because that particular user didn't have any rights to the host that had the triggers occur.  So I simply added rights for the host to the user's group and things started working.&lt;br /&gt;&lt;br /&gt;In short, your users must have at least read-only rights to any host that they should receive trigger e-mails from.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-8912749183520755730?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/8912749183520755730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=8912749183520755730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/8912749183520755730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/8912749183520755730'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2009/09/zabbix-alerts-rights.html' title='Zabbix Alerts &amp; Rights'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-3373431748148811292</id><published>2009-09-13T17:25:00.007-06:00</published><updated>2009-09-24T10:17:42.197-06:00</updated><title type='text'>Conky</title><content type='html'>I recently discovered the coolness of a program called Conky.  If you haven't heard of it, go to &lt;a href="http://conky.sourceforge.net/"&gt;Conky's Sourceforge page.&lt;/a&gt;  Essentially it is a system monitor that you can configure to show pretty much anything.  The only thing I wish it could do at this point is cook me some eggs in the morning, but I digress.&lt;br /&gt;&lt;br /&gt;If you just start up Conky after an install on Gentoo, it isn't much to look at.  In fact, I had discounted this program before.  This time around, it occurred to me that "Parted Magic", a Live CD distro for partition work, uses Conky and made it look pretty nice.  I took the Conky configuration from Parted Magic and made my own changes.  In the end, I have a nice monitor that let's me know pretty much everything I care to know about my machine at any given time.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_F2gBaS_JijE/Sq2BEc9_I0I/AAAAAAAAABI/a9A4b7TU7sE/s1600-h/Conky.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 302px; height: 320px;" src="http://4.bp.blogspot.com/_F2gBaS_JijE/Sq2BEc9_I0I/AAAAAAAAABI/a9A4b7TU7sE/s320/Conky.png" alt="" id="BLOGGER_PHOTO_ID_5381099043273253698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can find all of the available configuration options and variables &lt;a href="http://conky.sourceforge.net/documentation.html"&gt;in the documentation for Conky.&lt;/a&gt;&lt;br /&gt;To make your life easier, here is my configuration.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;# set to yes if you want Conky to be forked in the background&lt;br /&gt;background yes&lt;br /&gt;&lt;br /&gt;# X font when Xft is disabled, you can pick one with program xfontsel&lt;br /&gt;#font 5x7&lt;br /&gt;#font 6x10&lt;br /&gt;font 7x13&lt;br /&gt;#font 8x13&lt;br /&gt;#font 9x15&lt;br /&gt;#font *mintsmild.se*&lt;br /&gt;#font -*-*-*-*-*-*-34-*-*-*-*-*-*-*&lt;br /&gt;&lt;br /&gt;# Use Xft?&lt;br /&gt;use_xft yes&lt;br /&gt;&lt;br /&gt;# Xft font when Xft is enabled&lt;br /&gt;xftfont Bitstream Vera Sans Mono:size=9&lt;br /&gt;&lt;br /&gt;# Text alpha when using Xft&lt;br /&gt;xftalpha 0.8&lt;br /&gt;&lt;br /&gt;# Print everything to stdout?&lt;br /&gt;# out_to_console no&lt;br /&gt;&lt;br /&gt;# Print everything to console?&lt;br /&gt;# out_to_console no&lt;br /&gt;&lt;br /&gt;# Update interval in seconds&lt;br /&gt;update_interval 2.5&lt;br /&gt;&lt;br /&gt;# This is the number of times Conky will update before quitting.&lt;br /&gt;# Set to zero to run forever.&lt;br /&gt;total_run_times 0&lt;br /&gt;&lt;br /&gt;#own_window_title Parted Magic - conky&lt;br /&gt;&lt;br /&gt;# Create own window instead of using desktop (required in nautilus)&lt;br /&gt;own_window yes&lt;br /&gt;&lt;br /&gt;# If own_window is yes, you may use type normal, desktop or override&lt;br /&gt;own_window_type normal&lt;br /&gt;&lt;br /&gt;# Use pseudo transparency with own_window?&lt;br /&gt;own_window_transparent yes&lt;br /&gt;&lt;br /&gt;# If own_window_transparent is set to no, you can set the background colour here&lt;br /&gt;own_window_colour black&lt;br /&gt;&lt;br /&gt;# If own_window is yes, these window manager hints may be used&lt;br /&gt;own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager&lt;br /&gt;#own_window_hints below,skip_taskbar,skip_pager&lt;br /&gt;&lt;br /&gt;# Use double buffering (reduces flicker, may not work for everyone)&lt;br /&gt;double_buffer yes&lt;br /&gt;&lt;br /&gt;# Minimum size of text area&lt;br /&gt;minimum_size 280 5&lt;br /&gt;&lt;br /&gt;# Draw shades?&lt;br /&gt;draw_shades yes&lt;br /&gt;&lt;br /&gt;# Draw outlines?&lt;br /&gt;draw_outline no&lt;br /&gt;&lt;br /&gt;# Draw borders around text&lt;br /&gt;draw_borders no&lt;br /&gt;&lt;br /&gt;# Draw borders around graphs&lt;br /&gt;draw_graph_borders yes&lt;br /&gt;&lt;br /&gt;# Stippled borders?&lt;br /&gt;stippled_borders 4&lt;br /&gt;&lt;br /&gt;# border margins&lt;br /&gt;border_margin 4&lt;br /&gt;&lt;br /&gt;# border width&lt;br /&gt;border_width 1&lt;br /&gt;&lt;br /&gt;# Default colors and also border colors&lt;br /&gt;default_color white&lt;br /&gt;default_shade_color black&lt;br /&gt;default_outline_color black&lt;br /&gt;&lt;br /&gt;# Text alignment, other possible values are commented&lt;br /&gt;#alignment top_left&lt;br /&gt;alignment top_right&lt;br /&gt;#alignment bottom_left&lt;br /&gt;#alignment bottom_right&lt;br /&gt;#alignment none&lt;br /&gt;&lt;br /&gt;# Gap between borders of screen and text&lt;br /&gt;# same thing as passing -x at command line&lt;br /&gt;gap_x 15&lt;br /&gt;gap_y 15&lt;br /&gt;&lt;br /&gt;# Subtract file system buffers from used memory?&lt;br /&gt;no_buffers yes&lt;br /&gt;&lt;br /&gt;# set to yes if you want all text to be in uppercase&lt;br /&gt;uppercase no&lt;br /&gt;&lt;br /&gt;# number of cpu samples to average&lt;br /&gt;# set to 1 to disable averaging&lt;br /&gt;cpu_avg_samples 2&lt;br /&gt;&lt;br /&gt;# number of net samples to average&lt;br /&gt;# set to 1 to disable averaging&lt;br /&gt;net_avg_samples 2&lt;br /&gt;&lt;br /&gt;# Force UTF8? note that UTF8 support required XFT&lt;br /&gt;override_utf8_locale no&lt;br /&gt;&lt;br /&gt;# Add spaces to keep things from moving about?  This only affects certain objects.&lt;br /&gt;use_spacer none&lt;br /&gt;&lt;br /&gt;TEXT&lt;br /&gt;${color goldenrod}Hostname: $nodename&lt;br /&gt;${color goldenrod}Linux Kernel: $kernel&lt;br /&gt;${color goldenrod}CPU Details:  $machine, $freq(MHz)&lt;br /&gt;${color}CPU History:  ${color darkgreen}${cpugraph 30,0 0000ff 00ff00}&lt;br /&gt;${color}CPU Usage:${color magenta2} $cpu% ${cpubar 11,0}&lt;br /&gt;&lt;br /&gt;${color}RAM Usage:${color DeepSkyBlue1} $mem ($memperc%) ${membar 11,0}&lt;br /&gt;${color}Available RAM:${color DeepSkyBlue1} $memmax&lt;br /&gt;&lt;br /&gt;${color}Battery Status:${color DeepSkyBlue1} $battery&lt;br /&gt;${color}Battery Time:${color DeepSkyBlue1} $battery_time&lt;br /&gt;&lt;br /&gt;${color}Free Space on /:${color DeepSkyBlue1} ${fs_free /} (${fs_free_perc /}%)&lt;br /&gt;&lt;br /&gt;${color}System Load Avg:${color DeepSkyBlue1} ${loadavg}&lt;br /&gt;${color}Disk I/O:${color DeepSkyBlue1} ${diskio /dev/sda}&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/5337568718539148738-3373431748148811292?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/3373431748148811292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=3373431748148811292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/3373431748148811292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/3373431748148811292'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2009/09/conky.html' title='Conky'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_F2gBaS_JijE/Sq2BEc9_I0I/AAAAAAAAABI/a9A4b7TU7sE/s72-c/Conky.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-5094368485621393093</id><published>2009-09-13T17:10:00.006-06:00</published><updated>2009-09-13T17:18:09.570-06:00</updated><title type='text'>Touchpad, Hal, &amp; X</title><content type='html'>When I first started setting up Gentoo on my laptop, my keyboard and mouse would freeze up whenever I started X (using Gnome or GDM).  Unbeknownst to me, HAL actually does something for detecting hardware when X is started, and since HAL wasn't running my computer threw a fit.  The simple fix was to make sure to start the HAL daemon on computer bootup.&lt;br /&gt;&lt;br /&gt;The next issue I had was that my touchpad vertical and horizontal scrolling didn't work.  I had already tried various things that I found online, but none of them made any difference.  Using some other sites as reference, I put together my touchpad file for HAL that allows the scrolling to work.  The file resides in "/etc/hal/fdi/policy".  I called it "11-x11-synaptics.fdi".  Here it is:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="ISO-8859-1"?&amp;gt;&lt;br /&gt;&amp;lt;deviceinfo version="0.2"&amp;gt;&lt;br /&gt;  &amp;lt;device&amp;gt;&lt;br /&gt;    &amp;lt;match key="info.capabilities" contains="input.touchpad"&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_driver" type="string"&amp;gt;synaptics&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.SendCoreEvents" type="string"&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.VertEdgeScroll" type="string"&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.HorizEdgeScroll" type="string"&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.protocol" type="string"&amp;gt;auto-dev&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.shmconfig" type="string"&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.VertScrollDelta" type="string"&amp;gt;20&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.HorizScrollDelta" type="string"&amp;gt;20&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.LeftEdge" type="string"&amp;gt;120&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.RightEdge" type="string"&amp;gt;830&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.TopEdge" type="string"&amp;gt;120&amp;lt;/merge&amp;gt;&lt;br /&gt;     &amp;lt;merge key="input.x11_options.BottomEdge" type="string"&amp;gt;650&amp;lt;/merge&amp;gt;&lt;br /&gt;    &amp;lt;/match&amp;gt;&lt;br /&gt;  &amp;lt;/device&amp;gt;&lt;br /&gt;&amp;lt;/deviceinfo&amp;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/5337568718539148738-5094368485621393093?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/5094368485621393093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=5094368485621393093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/5094368485621393093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/5094368485621393093'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2009/09/touchpad-hal-x.html' title='Touchpad, Hal, &amp; X'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-8930980853776750889</id><published>2009-09-13T16:56:00.002-06:00</published><updated>2009-09-13T17:01:25.326-06:00</updated><title type='text'>Nvidia &amp; Compiz (Redraw problems)</title><content type='html'>I just recently went through setting up Compiz on my laptop again.  I had completely forgotten about the one issue that I had before and I had to search for it again.  It seems that Compiz and Nvidia cards have a problem where windows will fail to redraw their contents.  Needless to say, it get's frustrating when you can't be sure what text your cursor is really on.&lt;br /&gt;&lt;br /&gt;In any case, it was a pretty simple fix.  Load up the Compiz Settings Manager and go to the Utility-&gt;Workarounds.  Simply enable the "Force ynchronization between X and GLX" checkbox and the problem will go away.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-8930980853776750889?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/8930980853776750889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=8930980853776750889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/8930980853776750889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/8930980853776750889'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2009/09/nvidia-compiz-redraw-problems.html' title='Nvidia &amp; Compiz (Redraw problems)'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-5238934000596328735</id><published>2009-09-06T14:46:00.029-06:00</published><updated>2009-09-07T18:30:22.315-06:00</updated><title type='text'>Openswan and Sonicwall</title><content type='html'>Versions:&lt;ul&gt;&lt;li&gt;Openswan 2.4.15&lt;/li&gt;&lt;li&gt;Sonicwall Firmware 5.2.0.1-21o &lt;/li&gt;&lt;/ul&gt;Config Files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/etc/ipsec/ipsec.conf&lt;/li&gt;&lt;li&gt;/etc/ipsec/ipsec.secrets&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I like Linux.  My wife is probably annoyed with me because I joke (or so she thinks) that I'll make our children use various distros of Linux while they grow up.  My personal favorite is Gentoo.  Call me a glutton for punishment, but you can make Gentoo do pretty much anything you want.  Lately, I have tried yet again to set up a desktop system on my work laptop.  Every time I've tried this, I've run into something that prevents me from sticking with it.  Usually it's the fact that I can't get my Verizon V740 EVDO card working or wireless is a pain, or I can't use my work VPN or something else.  Thankfully, things have improved since my last attempt, so I thought I should impart the knowledge that I've gained in getting Openswan and a Sonicwall VPN to speak the same language.&lt;br /&gt;&lt;br /&gt;I found a few tutorials on how to do this on google, but none seemed to work without changing things found in another tutorial.  Here are a few for reference:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.openswan.org/index.php/Openswan/SonicWall"&gt;Openswan Wiki&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=527423"&gt;Ubuntu Forum Thread&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sonicwall.com/us/support/2134_8122.html"&gt;Sonicwall Docs (out of date)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Needless to say, I had a lot of trial and error, but I got things working (in a way I think is better than the tutorials I found).  I was able to rid my configuration files of hardcoded IP addresses for my laptop so that I can use this from anywhere.  First off, let's start with the configuration needed on the Sonicwall Firewall itself.&lt;br /&gt;&lt;br /&gt;Login to your Sonciwall and go to the "VPN" section.  You'll see a screen similar to this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_F2gBaS_JijE/SqQtU9W1WWI/AAAAAAAAAA4/12RmfXdFt3I/s1600-h/VPN_Settings.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 152px;" src="http://3.bp.blogspot.com/_F2gBaS_JijE/SqQtU9W1WWI/AAAAAAAAAA4/12RmfXdFt3I/s320/VPN_Settings.png" alt="" id="BLOGGER_PHOTO_ID_5378473693078182242" border="0" /&gt;&lt;/a&gt;Take note of the "Unique Firewall Identifier" text box.  You will need to know that value for later.  Go ahead and click on the pencil icon next to "WAN GroupVPN" to edit it's settings.  You'll end up with a window that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_F2gBaS_JijE/SqQtqRCopkI/AAAAAAAAABA/mPMXC0vePnA/s1600-h/General_Settings.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 316px; height: 320px;" src="http://4.bp.blogspot.com/_F2gBaS_JijE/SqQtqRCopkI/AAAAAAAAABA/mPMXC0vePnA/s320/General_Settings.png" alt="" id="BLOGGER_PHOTO_ID_5378474059139425858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You need to be sure that "Authentication Method" is set to "IKE using Preshared Secret".  Take note of the value that is in the "Shared Secret" text box.  You'll need it later.  Now click the "Proposals" tab to get a new window:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_F2gBaS_JijE/SqQox8D0h1I/AAAAAAAAAAo/06U-tTNexBo/s1600-h/Proposal_Settings.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 316px; height: 320px;" src="http://2.bp.blogspot.com/_F2gBaS_JijE/SqQox8D0h1I/AAAAAAAAAAo/06U-tTNexBo/s320/Proposal_Settings.png" alt="" id="BLOGGER_PHOTO_ID_5378468693388068690" border="0" /&gt;&lt;/a&gt;All your settings should reflect the screenshot, however, I'm pretty sure that "Life Time" can be whatever you want.  Now click the "Advanced" tab to go to a new screen:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_F2gBaS_JijE/SqQpNRCF0eI/AAAAAAAAAAw/MhS1ZaOWQVw/s1600-h/Advanced_Settings.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 316px; height: 320px;" src="http://1.bp.blogspot.com/_F2gBaS_JijE/SqQpNRCF0eI/AAAAAAAAAAw/MhS1ZaOWQVw/s320/Advanced_Settings.png" alt="" id="BLOGGER_PHOTO_ID_5378469162874425826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Check to be sure that the "Require Authentication of VPN Clients via XAUTH" box is checked.  Also be sure that you have a valid user that belongs to whatever group you specify for "User Group for XAUTH users".&lt;br /&gt;&lt;br /&gt;That takes care of the Sonicwall configuration, so now let's go back to your desktop/laptop machine.&lt;br /&gt;&lt;br /&gt;Install a copy of Openswan to get the ball rolling.  I use Gentoo, so the command for me is&lt;br /&gt;&lt;pre class="code"&gt;emerge openswan&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The fun part really comes in setting up your configuration files, so be prepared to use your favorite text editor.  Go ahead and edit "/etc/ipsec/ipsec.conf".  The contents of the file should be like what I have below (using the comments as a guide).  &lt;span style="font-weight: bold;"&gt;REMOVE THE COMMENTS IN YOUR OWN FILE!!!!&lt;/span&gt;  If you leave them there, you WILL have problems.&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;#/etc/ipsec/ipsec.conf&lt;br /&gt;&lt;br /&gt;config setup&lt;br /&gt;     plutodebug="none"&lt;br /&gt;     klipsdebug="none"&lt;br /&gt;     nat_traversal=yes&lt;br /&gt;     nhelpers=0&lt;br /&gt;     interfaces = %defaultroute&lt;br /&gt;&lt;br /&gt;conn MyVPN                           # Arbitrary connection name.&lt;br /&gt;     type=tunnel&lt;br /&gt;     left=%defaultroute              # The interface to use from the client.  %defaultroute&lt;br /&gt;                                     # automatically selects an interface for you.&lt;br /&gt;&lt;br /&gt;     leftid=@GroupVPN                # An arbitrary name to call your ID.  The "@" is required.&lt;br /&gt;&lt;br /&gt;     leftxauthclient=yes             # Use XAUTH for connecting&lt;br /&gt;&lt;br /&gt;     right=firewall.domain.com       # The FQDN/IP of the VPN server (Sonicwall)&lt;br /&gt;&lt;br /&gt;     rightsubnet=192.168.168.0/24    # The subnet of the internal VPN interface on the Sonicwall&lt;br /&gt;                              # (ie. The subnet you should be on after connecting)&lt;br /&gt;&lt;br /&gt;     rightxauthserver=yes            # Use XAUTH for authentication&lt;br /&gt;&lt;br /&gt;     rightid=@0078F89ABF             # The "Unique Firewall Identifier" from the Sonciwall&lt;br /&gt;                              # (usually the serial number of the Sonicwall).  "@" is required.&lt;br /&gt;&lt;br /&gt;     keyingtries=1&lt;br /&gt;     auto=add&lt;br /&gt;     auth=esp&lt;br /&gt;     esp=3des-sha1&lt;br /&gt;     ike=3des-sha1-modp1536&lt;br /&gt;     xauth=yes&lt;br /&gt;     pfs=no&lt;br /&gt;     authby=secret&lt;br /&gt;     aggrmode=yes&lt;br /&gt;&lt;br /&gt;include /etc/ipsec/ipsec.d/examples/no_oe.conf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now that the main configuration file is finished, we need to create "/etc/ipsec/ipsec.secrets".  That file is what stores the PSK (Pre Shared Key) that you saw earlier in the Sonicwall configuration.  There will be line like:&lt;br /&gt;@&amp;lt;leftid_from_ipsec.conf&amp;gt; @&amp;lt;rightid_from_ipsec.conf&amp;gt; : PSK "&amp;lt;my_psk&amp;gt;"&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;#/etc/ipsec/ipsec.secrets&lt;br /&gt;&lt;br /&gt;@GroupVPN @0078F89ABF : PSK "MySharedSecret"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With those two files out of the way, you should be ready to connect now!  First, be sure that the ipsec service is started by running "/etc/init.d/ipsec start".&lt;br /&gt;&lt;br /&gt;Now you can start your VPN connection by running "ipsec auto --up MyVPN" where "MyVPN is the name of your connection in "/etc/ipsec/ipsec.conf".&lt;br /&gt;&lt;br /&gt;Assuming that everything worked, you will be asked for your username and password after which the Sonicwall will connect you.  To bring the connection down run "ipsec auto --down MyVPN".&lt;br /&gt;&lt;br /&gt;If you ever want to change the connection configuration after the ipsec server is started, just run "ipsec auto --add MyVPN".  That will reread the configuration file for changes to the "MyVPN" connection.&lt;br /&gt;&lt;br /&gt;I hope that this saves you from hours of trial and error!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-5238934000596328735?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/5238934000596328735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=5238934000596328735' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/5238934000596328735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/5238934000596328735'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2009/09/openswan-and-sonicwall.html' title='Openswan and Sonicwall'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_F2gBaS_JijE/SqQtU9W1WWI/AAAAAAAAAA4/12RmfXdFt3I/s72-c/VPN_Settings.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-4697343848145645673</id><published>2008-11-08T20:10:00.037-07:00</published><updated>2009-04-27T21:55:56.777-06:00</updated><title type='text'>Proftpd &amp; MySQL</title><content type='html'>Recently I re-worked the way that our FTP servers run at work.  We use Proftpd in conjunction with MySQL for authentication.  The setup required some reading from the &lt;a href="http://www.proftpd.org/docs/"&gt;Proftpd documentation&lt;/a&gt;, so I figured I could help someone out by showing our configuration found in the "proftpd.conf" file and what our database looks like.&lt;br /&gt;&lt;br /&gt;First, the MySQL database has three tables:  hosts, login_log, and users.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;CREATE TABLE `users` (&lt;br /&gt;     `id` int(11) NOT NULL auto_increment,&lt;br /&gt;     `host_id` varchar(50) NOT NULL default '0',&lt;br /&gt;     `username` varchar(100) NOT NULL default '',&lt;br /&gt;     `passwd` varchar(100) NOT NULL COMMENT 'use PASSWORD() to encrypt',&lt;br /&gt;     `uid` int(5) NOT NULL default '5000',&lt;br /&gt;     `gid` int(5) NOT NULL default '5000',&lt;br /&gt;     `ftpdir` varchar(255) NOT NULL default '',&lt;br /&gt;     `ts_created` timestamp NOT NULL default '0000-00-00 00:00:00',&lt;br /&gt;     `ts_modified` timestamp NOT NULL default CURRENT_TIMESTAMP,&lt;br /&gt;     `deleted` smallint(1) NOT NULL default '0',&lt;br /&gt;     PRIMARY KEY  (`id`),&lt;br /&gt;     UNIQUE KEY `username` (`username`)&lt;br /&gt;) DEFAULT CHARSET=utf8;&lt;br /&gt;&lt;br /&gt;CREATE TABLE `hosts` (&lt;br /&gt;     `id` int(11) NOT NULL auto_increment,&lt;br /&gt;     `name` varchar(50) NOT NULL default '',&lt;br /&gt;     PRIMARY KEY  (`id`),&lt;br /&gt;     UNIQUE KEY `name` (`name`)&lt;br /&gt;) DEFAULT CHARSET=utf8;&lt;br /&gt;&lt;br /&gt;CREATE TABLE `login_log` (&lt;br /&gt;     `ip_address` varchar(15) NOT NULL default '',&lt;br /&gt;     `dns_name` varchar(150) default NULL,&lt;br /&gt;     `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,&lt;br /&gt;     `username` varchar(100) NOT NULL default ''&lt;br /&gt;) DEFAULT CHARSET=utf8;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The "hosts" table is created with the intent that multiple hosts use this database for FTP authentication.  Insert the FQDN of all hosts into the "name" field.&lt;br /&gt;&lt;br /&gt;The "users" table holds all the pertinent user information.  The "password" field is encrypted using the MySQL "PASSWORD" function.  "ftpdir" holds the directory to chroot the user into.  "uid" and "gid" are the respective user and group id to assign to files that are created on/uploaded to the server.  "host_id" is used to specify which server this user can log in to.  It ties back to the "hosts" table.&lt;br /&gt;&lt;br /&gt;The "login_log" table is used for logging whenever a user logs into the server.  "ip_address" stores the IP address of the person who logged in.  "dns_name" is the contents of a reverse DNS lookup on the IP address.  "username" is the name of the user that logged in.&lt;br /&gt;&lt;br /&gt;Now for the actual "proftpd.conf" configuration.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;ServerName                    "FTP Server"&lt;br /&gt;ServerType                     standalone&lt;br /&gt;DefaultServer                  on&lt;br /&gt;Port                           21&lt;br /&gt;Umask                          007&lt;br /&gt;MaxInstances                   30&lt;br /&gt;User                           nobody&lt;br /&gt;Group                          nogroup&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This group of directives sets up some of the basics for the FTP server.  Proftp suports Virtual Hosts in manner like Apache.&lt;br /&gt;"DefaultServer" tells proftpd to use all the settings here as the default server when a connection comes in.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;"ServerType" tells the Proftp daemon to listen for connections instead of using inetd.&lt;br /&gt;"Port" sets the port to use.&lt;br /&gt;"Umask" sets the default permissions.&lt;br /&gt;"MaxInstances" sets the maximum simultaneous connections.&lt;br /&gt;"User" and "Group" set the user and group to run the server as.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;SQLEngine                        on&lt;br /&gt;SQLBackend                       mysql&lt;br /&gt;SQLAuthTypes                     Backend&lt;br /&gt;SQLConnectInfo                   mysql_user@mysql_host db_name mypassword&lt;/span&gt;&lt;br /&gt;SQLAuthenticate                  users&lt;br /&gt;SQLUserInfo                      custom:/select_user&lt;br /&gt;SQLNamedQuery                    select_user SELECT "username, passwd, uid, gid, ftpdir, '/bin/bash' FROM users WHERE deleted=0 AND username='%U' AND host_id=host_id_for_this_host"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;"SQLEngine" tells the server to turn on the abililty to use a SQL backend.&lt;br /&gt;"SQLBackend" should be set to "mysql" to use MySQL as the authentication backend.&lt;br /&gt;"SQLAuthTypes" tells the server what encryption is used for the password in the backend.  The value "Backend" tells it to use the "PASSWORD" function for encryption.&lt;br /&gt;"SQLConnectInfo" gives the connection info for the MySQL database.&lt;br /&gt;"SQLAuthenticate" specifies the table to use for authentication.&lt;br /&gt;"SQLNamedQuery" is used to specify a query to be used in some other location.  For instance, this one is called "select_user".  Looking at the "SQLUserInfo" line it can be seen that we use a custom query to authenticate users.  The "select_user" query is used whenever a user attempts to log in.  The columns MUST be returned in a very specific order.  See the &lt;a href="http://www.proftpd.org/docs/directives/linked/config_ref_SQLUserInfo.html"&gt;"SQLUserInfo" directive&lt;/a&gt; in the Proftp documentation for more information.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;SQLDefaultUID                   65534&lt;br /&gt;SQLDefaultGID                   65534&lt;br /&gt;SQLMinUserUID                   20&lt;br /&gt;SQLMinUserGID                   20&lt;br /&gt;SQLLog                          PASS insert_login&lt;br /&gt;SQLNamedQuery                   insert_login INSERT "'%a', '%h', NOW(), '%U'" login_log&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;"SQLDefaultUID" and "SQLDefaultGID" are the user id and group id to use if none are specified.  These values will probably never be used.&lt;br /&gt;"SQLMinUserUID" and "SQLMinUserGID" are the minimum values allowed in the authentication table for a user.  If these minimums aren't met the user will not be able to log in.&lt;br /&gt;"SQLLog" tells Proftp a query to run when the given FTP command is given.  In this case, it logs anything that successfully authenticates to the FTP server.&lt;br /&gt;"SQLNamedQuery" again specifies a query to run when called.  See &lt;a href="http://www.proftpd.org/docs/directives/linked/config_ref_SQLNamedQuery.html"&gt;"SQLNamedQuery"&lt;/a&gt; in the Proftp documentation for more details.  To know what the different variables mean in the query, see &lt;a href="http://www.proftpd.org/docs/directives/linked/config_ref_LogFormat.html"&gt;"LogFormat"&lt;/a&gt; in the Proftp documentation.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;SystemLog                         /var/log/proftpd/proftpd.log&lt;br /&gt;DefaultRoot                       ~&lt;br /&gt;AllowOverwrite                   on&lt;br /&gt;AllowRetrieveRestart             on&lt;br /&gt;AllowStoreRestart                on&lt;br /&gt;UseReverseDNS                    on&lt;br /&gt;IdentLookups                     off&lt;br /&gt;ListOptions                      "-a"&lt;br /&gt;TimeoutIdle                      3600&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;"SystemLog" tells where to log all of the Proftpd messages.&lt;br /&gt;"DefaultRoot" jails the user into their ftp directory when set to "~".&lt;br /&gt;"AllowOverwrite" allows files to be overwritten.&lt;br /&gt;"AllowRetrieveRestart" allows a file to restart a download from where it last finished.&lt;br /&gt;"AllowStoreRestart" allows a file to restart an upload from where it last finished.&lt;br /&gt;"UseReverseDNS" tells Proftp to do reverse DNS lookups.&lt;br /&gt;"IdentLookups" tells Proftp whether or not to do Ident lookups.&lt;br /&gt;"ListOptions" tells Proftp what options to pass to an "ls" command by default.&lt;br /&gt;"TimeoutIdle" is the timeout before automatically disconnecting an idle user.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quite a write-up, but I hope it helps someone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-4697343848145645673?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/4697343848145645673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=4697343848145645673' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/4697343848145645673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/4697343848145645673'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/11/proftpd-mysql.html' title='Proftpd &amp; MySQL'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-4145072847922208216</id><published>2008-10-26T20:11:00.040-06:00</published><updated>2009-04-29T20:30:14.717-06:00</updated><title type='text'>SVN &amp; MySQL</title><content type='html'>Just a week ago, my company migrated to SVN from CVS.  I won't go into a discussion of why or what the differences are, but I thought it would be worth writing about our configuration of SVN.  Before getting started, I should point you to the free, excellent SVN book found at &lt;a href="http://svnbook.red-bean.com/"&gt;http://svnbook.red-bean.com/&lt;/a&gt;.  If you wanted to know about any of the features or configuration options available in Subversion, that's a great place to look.&lt;br /&gt;&lt;br /&gt;There were three things that I wanted to accomplish with SVN:&lt;br /&gt;&lt;br /&gt;1.  Authentication using a MySQL database&lt;br /&gt;2.  The ability to manipulate access control at any level in the repository using the MySQL authentication (ie.  Only allow access for a user to /client/trunk/project, not to the whole trunk)&lt;br /&gt;3.  The connection had to be HTTPS.  I don't want our source code going over the internet in plain text.&lt;br /&gt;&lt;br /&gt;First, let's cover the basics.  Since I'm coming at this from the point of view of a Gentoo installation, I'll cover what's needed for that.  The "dev-libs/apr-util" package must be compiled with the "mysql" USE flag enabled. As for apache, I just compile it with all modules enabled.  This is easy to accomplish by setting APACHE2_MODULES="*" in /etc/make.conf.  As for the MPM to use for Apache, we've been using the "prefork" one.  I can't really give an argument for any given MPM since I don't know enough about performance of them to argue a point.&lt;br /&gt;&lt;br /&gt;The second step is fairly obvious.  You have to compile Apache.  It should drag in the apr-util package as a dependency, but if it doesn't for some reason, make sure you compile that package as well.  A simple "emerge apache" will do the trick.&lt;br /&gt;&lt;br /&gt;The third and final step is to set up the configuration.  I'll step through the configuration for our server to give a flavor of what it could look like.  You can throw this stuff into a Virtual Host if that is what you want.  It's what I did.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;#I realize that the document root points to somewhere other than the SVN repositories.  This is intentional.  It's the only way I could get Subversion to work the way I wanted it to.&lt;br /&gt;DocumentRoot /var/www/localhost/htdocs/&lt;br /&gt;&lt;br /&gt;#Enable SSL.  It's as simple as turning the engine on and providing the paths to the cert and the key&lt;br /&gt;SSLEngine On&lt;br /&gt;SSLCertificateFile /etc/apache2/ssl/domain.crt&lt;br /&gt;SSLCertificateKeyFile /etc/apache2/ssl/domain.key&lt;br /&gt;&lt;br /&gt;#This is the real meat and potatoes of the whole thing.&lt;br /&gt;&lt;br /&gt;#This enables the mod_dbd MySQL driver&lt;br /&gt;DBDriver mysql&lt;br /&gt;&lt;br /&gt;#This causes mod_dbd to maintain the MySQL connection after every query instead of reconnecting for every MySQL call.&lt;br /&gt;DBDPersist On&lt;br /&gt;&lt;br /&gt;#These are the basics for a MySQL connection.  Notice that the whole line is surrounded in quotes.   See &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_dbd.html"&gt;http://httpd.apache.org/docs/2.2/mod/mod_dbd.html&lt;/a&gt; for other parameters that can go on this line.&lt;br /&gt;DBDParams "host=mydatabase.server.com user=myuser pass=mypassword dbname=mydatabasename"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# The location "/" causes SVN to interpret anything that follows the "/" as a repository path&lt;br /&gt;&amp;lt;location /&amp;gt;  &lt;br /&gt;     DAV svn  #Treat the location as a subversion repository&lt;br /&gt;     SVNParentPath /var/svn/  #This treats any directory under "/var/svn/" as the root of  a repository&lt;br /&gt;     Allow from all  #Allow access from anywhere&lt;br /&gt;     AuthName "Login"  #The title of the authentication window&lt;br /&gt;     AuthType Basic  #Not quite sure what this does, but it's necessary&lt;br /&gt;     AuthBasicAuthoritative Off  #Tells Apache to try other authentication methods if this one doesn't work&lt;br /&gt;     AuthBasicProvider dbd #Tells Apache to try mod_dbd authentication first&lt;br /&gt;&amp;lt;/location&amp;gt;&lt;br /&gt;&lt;br /&gt;#A regex that is used to determine the query to use for my current location&lt;br /&gt;&amp;lt;locationmatch ^/client/trunk|tags|branches/project&amp;gt;  &lt;br /&gt;     # This location requires an authenticated user.  AuthDBDUserPWQuery determines how apache decides if the user is valid.  The password in MySQL must be stored using the ENCRYPT() function.  The supplied password must mach the stored ENCRYPT() password.&lt;br /&gt;&lt;br /&gt;     Require valid-user  &lt;br /&gt;     AuthDBDUserPWQuery "SELECT password FROM users WHERE user=%s"&lt;br /&gt;&amp;lt;/locationmatch&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That's about it!  Not the neatest write-up, but I hope this helps someone.  I know I had a heck of a time trying to get it all working correctly.  You can add as many locations as you want for different clients and/or subdirectories.&lt;br /&gt;&lt;br /&gt;Edit:  Something I found out later is that apr-util v1.3.x compiled with MySQL support and PHP compiled with MySQL support don't mix.  It will cause Apache to segfault and puke all over the place.  Use apr-util v1.2.x to avoid this problem (see https://bugs.gentoo.org/show_bug.cgi?id=240264 for details on the issue).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-4145072847922208216?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/4145072847922208216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=4145072847922208216' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/4145072847922208216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/4145072847922208216'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/10/svn-mysql.html' title='SVN &amp; MySQL'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-6946515576157573457</id><published>2008-10-09T16:03:00.003-06:00</published><updated>2008-10-26T20:11:07.204-06:00</updated><title type='text'>Fun With Apache Fix</title><content type='html'>About a month ago I wrote about a weird problem that I was having with Apache in regards to mod_dbd and the MySQL driver.  I never did write about what was causing the problem.  After much troubleshooting, I discovered that Apache did not like the mod_dbd driver to be used with PHP if PHP had been compiled with MySQL support.  I never could figure out why it was a problem, only that it was the cause of the segmentation fault.&lt;br /&gt;&lt;br /&gt;Luckily, my company just recently started using VMware ESX server for virtualization, so I simply made another virtual machine to use for Apache with mod_dbd.  SVN uses mod_dbd as a backend for authentication and it works beautifully.  Come to think of it, I probably should write up an entry on how to configure SVN to work the way I did.  It took me long enough to figure it out, that's for sure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-6946515576157573457?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/6946515576157573457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=6946515576157573457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/6946515576157573457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/6946515576157573457'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/10/fun-with-apache-fix.html' title='Fun With Apache Fix'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-7035152942027256937</id><published>2008-09-28T21:55:00.017-06:00</published><updated>2008-10-27T15:01:42.528-06:00</updated><title type='text'>101 Things in 1001 Days</title><content type='html'>My brother-in-law came up with the idea of make a list of 101 things to do in 1001 days.  I didn't realize this was so popular, but a quick search on Google comes up with tons of lists.  In any case, Aubrie, Matt, and I are all going to be doing this starting October 3, 2008.  Prior to popular opinion, Aubrie did not give any of the ideas on here.  Here's my list (or at least what I've thought up so far):&lt;br /&gt;&lt;br /&gt;1.  Get Lasik done on my eyes&lt;br /&gt;2.  Play through any video games purchased within the last two years that I haven't finished yet&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pirates&lt;/li&gt;&lt;li&gt;Portal&lt;/li&gt;&lt;li&gt;Far Cry&lt;/li&gt;&lt;li&gt;Zelda: Twilight Princess&lt;/li&gt;&lt;li&gt;Rayman Ravin' Rabbids 2&lt;/li&gt;&lt;li&gt;Unreal Tournament 3&lt;/li&gt;&lt;li&gt;Lost Planet: Extreme Conditions&lt;/li&gt;&lt;/ul&gt;3.  Use Linux as my primary OS for 3 months. (&lt;span style="font-style: italic;"&gt;in progress&lt;/span&gt; &lt;span style="font-style: italic;"&gt;10/20/2008)&lt;/span&gt;&lt;br /&gt;4.  Build a MythTV box for home.&lt;br /&gt;5.  Tear the tree out of our backyard (&lt;span style="font-style: italic;"&gt;in progress)&lt;/span&gt;&lt;br /&gt;6.  Dig out the garden in the backyard&lt;br /&gt;7.  Fix the leaking valve in the sprinkler system&lt;br /&gt;8.  Clean the BBQ Grill&lt;br /&gt;9.  Dig out the flower beds in the front and back yard&lt;br /&gt;10.  Build shelves in our garage&lt;br /&gt;11.  Repaint the master bedroom&lt;br /&gt;12.  Repaint the computer room&lt;br /&gt;13.  Put cabinets in the laundry room&lt;br /&gt;14.  Put more cabinets in the kitchen&lt;br /&gt;15.  Put our TV on a wall mount&lt;br /&gt;16.  Get a surround sound system for the Family Room&lt;br /&gt;17.  Put new carpet in the bedrooms&lt;br /&gt;18.  Buy a new lawn mower&lt;br /&gt;19.  Cook dinner for Aubrie 5 nights in one week&lt;br /&gt;20.  Be in bed ready to sleep by 10pm every night for 2 weeks&lt;br /&gt;21. Fix the tree in the front yard (&lt;span style="font-style: italic;"&gt;done - 10/24/2008)&lt;/span&gt;&lt;br /&gt;22. Put shelves up in the Family Room&lt;br /&gt;23. Build shelves in the game closet&lt;br /&gt;24. Figure out some way to finish the crawl space and do it&lt;br /&gt;25. Hang stuff up in the computer room&lt;br /&gt;26. Get Aubrie a new laptop&lt;br /&gt;27. Build a web server for home&lt;br /&gt;28. Vote&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More forthcoming.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-7035152942027256937?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/7035152942027256937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=7035152942027256937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/7035152942027256937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/7035152942027256937'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/09/101-things-in-1001-days.html' title='101 Things in 1001 Days'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-7381458459992955568</id><published>2008-09-26T08:28:00.001-06:00</published><updated>2008-09-28T12:45:08.923-06:00</updated><title type='text'>Fun with Apache</title><content type='html'>Over the last week I've been busy getting a new MySQL server and Apache server built on our new VMware ESX server at work.  Everything has gone smoothly with the exception of one thing.  For the life of me, I cannot get Apache to cooperate.  For our new SVN repository, I'm using the mod_dbd module for MySQL authentication, but every time I enable it using "DBDriver mysql" in httpd.conf I randomly start getting errors like the following on start and stop of Apache:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;/etc/init.d/apache2: line 43: 16808 Segmentation fault      ${APACHE2} ${APACHE2_OPTS} -t &gt; /dev/null 2&gt;&amp;amp;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The weird thing about it is that it occurs randomly.  Sometimes I can stop and restart without any problems at all.  The second I remove the DBDriver line, everything works great.  What makes it even stranger is that I have a 32 Bit virtual machine on my laptop that uses the module without any problems at all.  Our server is running 64 Bit Gentoo, but I have gone to the point of making everything identical (with that one exception).  Does anyone have any ideas what could cause this problem?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-7381458459992955568?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/7381458459992955568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=7381458459992955568' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/7381458459992955568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/7381458459992955568'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/09/fun-with-apache.html' title='Fun with Apache'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-9101044317718719709</id><published>2008-09-13T14:44:00.000-06:00</published><updated>2008-09-13T19:44:08.913-06:00</updated><title type='text'>Previously on Geek Speak</title><content type='html'>&lt;span style="font-family:arial;"&gt;About 4 months ago I wrote an entry saying I would write up some decent Gentoo packages for a desktop system.  While this won't be for a desktop system, I will bring up some good packages for a Gentoo server system.  Some of them are obvious, but there are a few that took me a while to find.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.linuxcommand.org/man_pages/logrotate8.html"&gt;logrotate&lt;/a&gt; - Rotates log files on the server.  Comes with some pre-scripted files to rotate, but can also be customized for any log file.&lt;/li&gt;&lt;li&gt;&lt;a href="http://metalog.sourceforge.net/"&gt;metalog&lt;/a&gt; - System logger.  Can be extended to dump different system events into separate log files.&lt;/li&gt;&lt;li style="text-align: left;"&gt;&lt;a href="http://gentoo-wiki.com/TIP_Using_screen"&gt;screen&lt;/a&gt; - Emulates a terminal.  Essentially, it can be used to start programs that need to maintain a session open.  I use it all the time for compiling things in the background when I don't want to maintain an SSH connection to a server&lt;/li&gt;&lt;li&gt;&lt;a href="http://linuxreviews.org/man/genlop/"&gt;genlop  &lt;/a&gt;- Used to find information about currently emerging and already emerged packages.  It can give an estimated time to finish an emerge and tell how long an emerge has been going.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gentoo.org/doc/en/gentoolkit.xml"&gt;gentoolkit&lt;/a&gt; - This is a must have for Gentoo.  It provides various scripts for maintaining a Gentoo install.  For instance, there is a program called "revdep-rebuild" which will verify that all emerged binaries link against the correct libraries on the system.&lt;/li&gt;&lt;li&gt;&lt;a href="http://iptraf.seul.org/"&gt;iptraf&lt;/a&gt; - This is a handy app that can be used for network monitoring.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Tcpdump"&gt;tcpdump&lt;/a&gt; - This program can be used to monitor packets coming into a specified network interface.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.logwatch.org/"&gt;logwatch&lt;/a&gt; - Can be used to email a summary of the logs on the system.&lt;/li&gt;&lt;li&gt;&lt;a href="http://linux.about.com/library/cmd/blcmdl1_slocate.htm"&gt;slocate&lt;/a&gt; - Indexes files on the filesystem to allow for quick searching&lt;/li&gt;&lt;/ul&gt;This is by no means an exhaustive list of helpful packages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-9101044317718719709?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/9101044317718719709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=9101044317718719709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/9101044317718719709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/9101044317718719709'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/09/previously-on-geek-speak.html' title='Previously on Geek Speak'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-5301503120502671656</id><published>2008-09-08T21:17:00.001-06:00</published><updated>2008-09-08T21:25:14.039-06:00</updated><title type='text'>When CVS just won't cooperate...</title><content type='html'>Last week was pretty hectic for me.  It all started Tuesday when our CVS server would freeze on a CVS add.  The whole machine would lock up and the only thing that could be done was a hard reboot.  Needless to say, this was a less than desirable method of development.  It was really weird too.  CVS commits and updates of files that already existed worked great, but the CVS add function would freeze the server almost every time.  Seeing as how I couldn't find ANYTHING (I literally mean that) on my specific problem on google, I thought I would post my solution.&lt;br /&gt;&lt;br /&gt;First I tried simply building a new Gentoo Linux server since that is my preferred Linux distro.  I migrated all of the CVS data over to the new server along with all the permissions and ACLs that were assigned to the repositories so that it would be a simple migration process.  Unfortunately, this didn't work.  The new server exhibited the same behavior as the old one.  This pointed me in the direction of three things possibly being wrong&lt;br /&gt;      1.  The CVS repository was corrupt (I really hoped it wasn't that one)&lt;br /&gt;      2.  The ACLs were somehow all screwed up&lt;br /&gt;      3.  Some library or binary in Gentoo had a bug that was causing the problem&lt;br /&gt;&lt;br /&gt;Since I was mostly interested in just getting things working again, I decided to go the route of 2 &amp;amp; 3.  I spent part of a day building a Fedora Core 9 server and again copied the CVS repository to the new server, but this time I left out all the ACLs.  It was somewhat of a pain, but I went through and recreated the ACL structure on the whole repository.  The end result was a working stable CVS that I haven't had problems with since I migrated it to Fedora.  I still don't know exactly what the problem was, but at least this worked for me.  I hope it does for someone else as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-5301503120502671656?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/5301503120502671656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=5301503120502671656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/5301503120502671656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/5301503120502671656'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/09/when-cvs-just-wont-cooperate.html' title='When CVS just won&apos;t cooperate...'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-400163817560638061</id><published>2008-09-08T20:59:00.001-06:00</published><updated>2008-10-11T01:00:00.979-06:00</updated><title type='text'>An oldy, but definitely a goody</title><content type='html'>As someone that is a fan of first-person shooter games,  I'm always on the look out for a good game of that genre.  Anyone that's a fan of this genre has more than likely heard of Crysis.  Now, the purpose of this post isn't a review of the game, but I want to point out three things about this game.&lt;br /&gt;&lt;br /&gt;First of all, the visuals are amazing.  If you don't believe me, look up some screenshots of the game in it's full detail glory.  I never knew computer graphics could generate a sunrise that looked so amazing.  It does require quite a beefy video card, but since it came out the prices on video cards have kept dropping.  I use an Nvidia 8800 GTS 512MB card and it runs the game quite well at pretty high detail levels.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_F2gBaS_JijE/SMXot1jYbxI/AAAAAAAAAAY/aM-7RuQv02g/s1600-h/Untitled.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_F2gBaS_JijE/SMXot1jYbxI/AAAAAAAAAAY/aM-7RuQv02g/s400/Untitled.jpg" alt="" id="BLOGGER_PHOTO_ID_5243853215310049042" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;I found this picture on-line in a forum.  It isn't mine.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Second, the story is very well done.  I don't know of many first-person shooters that are known for great stories.  About the only one that comes to mind is the Half-Life series (another excellent series).  The story kept me wanting to play and find out what was going to happen next.&lt;br /&gt;&lt;br /&gt;Now, the third and final thing about this game is why I wrote this post.  Be warned that the language in this game is absolutely awful.  I purchased the game, played through it, then returned it because the language was so bad.  Luckily, I happened to know a person at school that discovered a way to edit the language content.  So I ended up purchasing the game again and editing the audio.   I have no idea if posting my edited language pack (I call it my clean language pack) would be a violation of copyright law, so I won't post it here.  I spent a few hours going through all the mp2 files in the game and editing out the bad language in the single player campaign.  If you want a copy, just post a comment and I'll see what I can do about getting it to you.  I think everyone should have a chance to play this amazing game without listening to the constant barrage of F-words.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-400163817560638061?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/400163817560638061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=400163817560638061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/400163817560638061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/400163817560638061'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/09/oldy-but-definitely-goody.html' title='An oldy, but definitely a goody'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_F2gBaS_JijE/SMXot1jYbxI/AAAAAAAAAAY/aM-7RuQv02g/s72-c/Untitled.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-2639119153514298872</id><published>2008-09-07T16:50:00.000-06:00</published><updated>2008-09-07T17:00:14.593-06:00</updated><title type='text'>3 nifty Vista features</title><content type='html'>Aubrie decided this week that we should go get some library cards.  We got them yesterday and I must admit that I've got a lot of reading ahead of me.  Along with some other books, I got a book called "Windows Vista: Beyond the Manual."  At first, I thought it would be a pretty in depth book about the internals of Vista, but for the most part, I was wrong.  Let's just say there were approximately 454 pages out of 459 that I just didn't care about.  I knew most of the stuff already (I did a LOT of skimming and skipping), but there were three things that I thought were kind of cool.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Have you ever tried selecting 10+ files from a folder that are all over the place?  You have to hold CTRL while selecting each file and if you accidently let go of that button you have to start all over.  Apparently, Vista has an option in the "Folder Options" box called "Use Check Boxes to Select Items."  This lets you simply select check boxes instead of holding CTRL and screwing it up.  Not earth shattering by any means, but somewhat useful.&lt;/li&gt;&lt;li&gt;Second, one short coming of Windows in general has been the lack of symbolic links.  Well, I guess Microsoft finally wised up and added the functionality.  It can only be done from the command line for now, but I guess it has to start somewhere.  Using the "mklink" command, links can be made to folders and directories.&lt;/li&gt;&lt;li&gt;Lastly, I'd never heard of this before, but it seems Vista has an automatic error recovery program that can be run on boot-up if the system is in an unbootable state.  It's called WinRE.  I haven't tried it out yet, but it looks like it could be fairly useful for those that aren't too knowledgeable about computers.&lt;/li&gt;&lt;/ul&gt;I hope this benefits somebody, because I hope I never have to read/skim/skip through that many pages of text just to find three useful things, but I guess learning isn't always easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-2639119153514298872?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/2639119153514298872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=2639119153514298872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/2639119153514298872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/2639119153514298872'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/09/3-nifty-vista-features.html' title='3 nifty Vista features'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-6038661059303234940</id><published>2008-09-07T16:37:00.000-06:00</published><updated>2008-09-07T16:50:13.087-06:00</updated><title type='text'>Who wants some eye candy?</title><content type='html'>Lately I've been taking yet another dive into using Windows Vista.  I've used it on and off since the release candidates were available in both the 32 and 64 bit versions.  One of my biggest complaints has always been that it seemed like most of the software that I use all the time has incompatibilities with Vista.  Also, Microsoft did something that many people have complained about with the 64 bit version.  They enforce driver signing.  In other words, any driver that has not been approved by Microsoft cannot be used.  Also, Vista is a resource hog.  Honestly, why should an operating system need 768MB to 1 GB of my memory just to load?  With those things in mind, I decided to give Vista a try yet again and I must admit that it hasn't been as bad as the last few times.&lt;br /&gt;&lt;br /&gt;First of all, most of my programs seem to work now.  Either there are patches for them that give them Vista compatibility or the open-source equivalents give me the same functionality.  I guess after an OS ages for a year and a half, things actually start to work (shouldn't that be the case earlier?).&lt;br /&gt;&lt;br /&gt;Second,  this time around I decided to give 64 bit a try again and was pleasantly surprised.  Somebody decided to stick it to Microsoft (however minor it may be) and got around the stupid driver signing enforcement.  &lt;a href="http://citadel.x10hosting.com/readydriverplus/"&gt;ReadyDrive Plus&lt;/a&gt; installs itself into the MBR and automagically selects the Windows boot option to disable to the signing enforcement.  Once I put that on there, all my drivers work well.&lt;br /&gt;&lt;br /&gt;Third, I don't see Windows as quite as much of a resource hog now that my Laptop has three GB of RAM and my desktop has four.  Besides, everyone has to admit that the GUI does look good even if the looks don't provide extra functionality.&lt;br /&gt;&lt;br /&gt;Anyone who knows me knows that I've never been a proponent of Vista.  I've preferred Windows XP for a long time now, but it seems like that might be changing.  Scary, huh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-6038661059303234940?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/6038661059303234940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=6038661059303234940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/6038661059303234940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/6038661059303234940'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/09/who-wants-some-eye-candy.html' title='Who wants some eye candy?'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-7513422413685013919</id><published>2008-05-22T17:54:00.000-06:00</published><updated>2008-05-22T18:07:13.117-06:00</updated><title type='text'>Gentoo Setup</title><content type='html'>I was doing some searching the other day on packages for Gnome and other things in Gentoo for a decent desktop system.  I couldn't really find anything so I think that I'll impart my limited knowledge on the matter with the hopes that it will be useful to someone.  This will happen over the next several blog entries&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-7513422413685013919?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/7513422413685013919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=7513422413685013919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/7513422413685013919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/7513422413685013919'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/05/gentoo-setup.html' title='Gentoo Setup'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-3004977932804674745</id><published>2008-04-20T15:53:00.001-06:00</published><updated>2008-04-20T15:57:07.766-06:00</updated><title type='text'>What's One More Pound?</title><content type='html'>If there's one thing that I've learned from my wife, it's that food was meant to be enjoyed.  She loves to think of any excuse to have tons of good food.  Just yesterday we had a "Freaks and Geeks" party in honor of the TV show by the same name.  She came up with all kinds of food that might fit in for 1980.  To name a few things there were chicken nuggets, cheese fondue, 2 kinds of chocolate fondue, pizza sauce fondue, veggies, pizza bites, potato wedges, tortellini, fruit, and more stuff that I can't think of.  Needless to say, I feel like I gained a pound or two just from last night.  Just think what I'll look like after 10 more years of this!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-3004977932804674745?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/3004977932804674745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=3004977932804674745' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/3004977932804674745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/3004977932804674745'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/04/whats-one-more-pound.html' title='What&apos;s One More Pound?'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337568718539148738.post-1671582602547399161</id><published>2008-03-23T16:25:00.000-06:00</published><updated>2008-03-23T16:33:12.440-06:00</updated><title type='text'>Another One Bites the Dust....</title><content type='html'>I always thought it was weird that people would post their thoughts for the whole world to see, but here I am doing it (hence the title).  This will more than likely end up as a dumping grounds for all the random stuff that I learn about random things (for instance, invisibility cloaks &lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast101DrMichioKakuOnThePhysicsOfTheImpossible.aspx"&gt;http://www.hanselman.com/blog/HanselminutesPodcast101DrMichioKakuOnThePhysicsOfTheImpossible.aspx&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;Until I have time to put up a proper post (about computer things of course), you'll have to content yourself with this fun bit of geek speak.&lt;br /&gt;&lt;a href="http://www.flixxy.com/rockwell-automation-systems.htm"&gt;http://www.flixxy.com/rockwell-automation-systems.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5337568718539148738-1671582602547399161?l=speakgeek101.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://speakgeek101.blogspot.com/feeds/1671582602547399161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5337568718539148738&amp;postID=1671582602547399161' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/1671582602547399161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337568718539148738/posts/default/1671582602547399161'/><link rel='alternate' type='text/html' href='http://speakgeek101.blogspot.com/2008/03/another-one-bites-dust.html' title='Another One Bites the Dust....'/><author><name>Heaje</name><uri>http://www.blogger.com/profile/11076073382498233935</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
