<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>goozbach&apos;s Techtips</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.gurulabs.com/derek/atom.xml" />
    <id>tag:blogs.gurulabs.com,2009-02-24:/derek/6</id>
    <updated>2008-01-28T23:05:45Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.23-en</generator>

<entry>
    <title>Reverse Proxy with httpd</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2006/02/reverse-proxy-w.html" />
    <id>tag:blogs.gurulabs.com,2006:/derek//5.159</id>

    <published>2006-02-03T23:42:30Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>This image is the basis of a coming blog entry or guruguide...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>This image is the basis of a coming blog entry or guruguide</p>]]>
        <![CDATA[<p><a href="http://blogs.gurulabs.com/derek/images/snip1.png"><img alt="snip1.png" src="http://blogs.gurulabs.com/derek/images/snip1-thumb.png" width="600" height="266" /></a><br />
</p>]]>
    </content>
</entry>

<entry>
    <title>Updated VIM Goodies</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/10/updated-vim-goo.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.139</id>

    <published>2005-11-01T05:41:50Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>I took the time to update the movement table to use the new GuruLabs KeyCaps font. Check it out here...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>I took the time to update the movement table to use the new GuruLabs <a href="http://blogs.gurulabs.com/stuart/archives/2005/09/free_keycaps_fo_1.html">KeyCaps</a> font. Check it out<br />
<a target='_blank' href="http://blogs.gurulabs.com/derek/archives/vim_movement_keycaps.png">here</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>A Call to Action!</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/10/an-alternative.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.138</id>

    <published>2005-10-25T03:43:46Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>The Red Hat Network, or RHN for short, is a powerfull centralized administration system created by Red Hat for their product RHEL. It has saved me on various occasions. Managing a large number of Linux systems becomes very easy when...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Tech Tips" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>The Red Hat Network, or RHN for short, is a powerfull centralized administration system created by Red Hat for their product RHEL. It has saved me on various occasions. Managing a large number of Linux systems becomes very easy when RHN is involved. The problem is, RHN is only available for RHEL. To manage systems which are using Fedora Core or other distrubutions. I've decided to start ambitious path and create a system availble to all yum-capable distros.</p>

<p>Introducing <a href="http://www.friocorte.com/projects/yumamp">YUMAMP</a>. This project has been knocking around in my head for the past couple weeks. I finally decided to jump to it and start getting to work on it. And here's the best part... YOU can help. Check out the current project page <a href="http://www.friocorte.com/projects/yumamp/">here</a> and see if you have some of the skills that could be used to make this project a reality. If you think you'll have some time and/or skills to put towards this project please email me: derek at gurulabs dot com with the subject line yumamp.  Thank you and goodnight. </p>]]>
        
    </content>
</entry>

<entry>
    <title>Keep your pants on</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/10/keep-your-pants.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.137</id>

    <published>2005-10-25T02:38:22Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>Understanding the initialization process of your Linux distro is quite important, as the boot sequence is where the majority of problems occur. It&apos;s also very useful to know and understand how to create or modify a System-V init script for...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>Understanding the initialization process of your Linux distro is quite important, as the boot sequence is where the majority of problems occur. It's also very useful to know and understand how to create or modify a System-V init script for dealing with starting and stopping of services.</p>]]>
        <![CDATA[<p>For this reason, I've taken the <a href="http://www.vergenet.net/~conrad/scripts/pants.html">Pants</a> script originally written by one <a href="http://www.vergenet.net/~conrad/">Conrad Parker</a> and updated and improved it.</p>
<p>I've updated the script to be the 'best practice' on a Red Hat Enterprise Linux or Fedora Core system running RHEL3/4 or FC3/4 respectively.</p>
<p>Here are some of the various improvements I've made:
<ul>
<li>Comments -- I've added various comments describing the functionality of each piece. <br />The script is now over 25% comments</li>
<li>Functionalize -- The original script as written by Conrad calls itself for restart for the restart function. <br />My script uses bash subroutines for increased performance / decreased resources.</li>
<li>SYS-V includes -- This pants script makes use of the <code>/etc/sysconfig/</code> directory to store an included config file which houses the tunable parameters.</li>
<li>Real-World example -- Instead of just going through the actions of running a SYS-V script we start and stop an actual network daemon.</li>
<li>Distrofy -- Made use of the Red Hat specific sysvinit included functions file. <code>/etc/init.d/functions</code><br />This includes the daemon, action, status, and killproc functions.</li>
<li>Packagfacation -- I've created a RPM package which includes the script, config files, .spec file, and everything one would need to recreate this package elsewhere.</li>
</ul>
<p>There are various other small improvements that I may have missed, if so I'll update this page later listing them.</p>

<p><h5>NEWS!</h5>Pants script just been released. Find the rpm package <a href="http://mirror.neverblock.com/FC4/i386/pants-1.0-2.i386.rpm">here.</a><br /> Find the spec file <a href="http://www.friocorte.com/stuff/pants-1.0.spec">here.</a><br />And the script itself <a href="http://www.friocorte.com/stuff/pants">here.</a></p>]]>
    </content>
</entry>

<entry>
    <title>VIM freebies</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/10/vim-freebies.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.136</id>

    <published>2005-10-07T23:08:36Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>VI or VIM... there is a name which will inspire hope or despair in the hardiest of the command line jockies. I have adopted as my goal to teach the layperson the beneifits of learning the big VIM monster, and...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>VI or VIM... there is a name which will inspire hope or despair in the hardiest of the command line jockies. I have adopted as my goal to teach the layperson the beneifits of learning the big VIM monster, and here are some of the tricks and tools I've come across</p>]]>
        <![CDATA[<p>To begin, lets first talk about the ULTIMATE of all VIM resources: <a href="http://www.vim.org">VIM.org</a>. This website is the holy grail for all things VI / VIM. You can find scripts, tips &amp; tricks, and various other tools. Quite a resource.</p>

<p>The second and third resources I want to talk about are a VIM cheat sheet created by <a href="http://tnerual.eriogerg.free.fr/">Laurent Grégoire</a>. And a VIM movement table created by <a href="http://blogs.gurlabs.com/derek/">your's truly</a>. The cheat sheat card is relased under the GPL and is avalible in a variety of formats including pdf txt and others.  Find this cheat sheet <a href="http://tnerual.eriogerg.free.fr/vim.html">here</a>. <br /> The movement table was created as a guide to use as I'm teaching the <a href="http://www.gurulabs.com/training/GL120-Linux_Fundamentals.php">GL120 Intro to Linux</a> course. I provide it here as little more than a "here ya go". Basicly it's the commands you can use to move in specific directions. Here's the movement table:<br />
<img alt="vim_movement_table.gif" src="http://blogs.gurulabs.com/derek/archives/vim_movement_keycaps.png" width="441" height="432" /></p>

<p>And finally, the ULTIMATE VIM learning tool would be to take our <a href="http://www.gurulabs.com/training/GL120-Linux_Fundamentals.php">GL120 course</a>. There isn't much better than an instructor led, lab task re-enforced learning experience.</p>

<p>Enjoy. And don't forget to defend your editor of choice to the death :)  VIVA EL VIM!!!</p>

<p>(edit) updated picture with keycaps version</p>]]>
    </content>
</entry>

<entry>
    <title>Lock Down</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/09/lock-down.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.135</id>

    <published>2005-09-21T22:24:40Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>Host security is a very important topic. You want to keep your machine as secure as possible. One security principle that most overlook is the &quot;Principle of Least Privilege.&quot; This principle states that you should only give sufficent security access...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>Host security is a very important topic. You want to keep your machine as secure as possible. One security principle that most overlook is the "Principle of Least Privilege." This principle states that you should only give sufficent security access to a user to allow them to get their job done, but no more. There have been many different tools, ideas, and practices created to help stick to this principle. (eg su, sudo, PAM etc) I'm going to show you two very powerfull tools/ideas that will vastly improve your security by limiting certian accounts, while still maintaining sufficent access as to not restrict functionality. I'm first going to introduce you to scponly. Then I'll demonstrate a cool PAM trick to create a "su only" user.</p>]]>
        <![CDATA[<p>First SCPonly. Many protocols have been created to replace the aging protocols of yesteryear. (FTP Telnet RSH RCP etc...) SSH is one of the more popular. SecureSHell or SSH allows one to remotely connect to a shell while the traffic between hosts is encrypted. Many of the plain-text protocols have been replaced by ssh. To emulate an FTP only server, (eg an account without an interactive shell, which can still upload and download files) you can use tools such as scponly. SCPonly is a restricted shell that only allows scp traffic and denys any interactive shell traffic.</p>

<p>I've created some rpms of scponly and they are located <a href="http://mirror.bigfatchubby.com/FC4/i386/scponly-4.1-2.i386.rpm">here</a> and <a href="http://mirror.bigfatchubby.com/FC4/i386/scponly-chroot-4.1-2.i386.rpm">here</a> the scponly-chroot package enables the chrooted shell which doesn't allow a user outside of their home directory.</p>

<p>There's also a package named <a href="http://mirror.bigfatchubby.com/FC4/i386/scpjailer-0.3-1.i386.rpm">SCPjailer</a> that will assist you in creating the chroot jails for the chrooted version of SCPonly.</p>

<p>I'm currently working on some tools to make creating users with these two programs much simpler, so watch this space for news on the upcomming scponly-tools.</p>

<p>I've also recently come up with a PAM trick which will allow you to create a user which can only be accessed via the su command. Thats right, no direct login at all!  Here's how you accomplish this:</p>

<ol>
<li>Create a new user who will only be accessable via su
<pre> <b># useradd kyle</b> </pre>
</li>
<li>Restrict the new user account from all access by modifying the file <code>/etc/pam.d/system-auth</code>  by adding the pam_listfile.so line as shown:
<pre>
auth        required      /lib/security/$ISA/pam_env.so
auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
auth        required      /lib/security/$ISA/pam_deny.so

<p>account     required      /lib/security/$ISA/pam_unix.so<br />
account     required     /lib/security/$ISA/pam_listfile.so sense=deny onerr=succeed item=user file=/etc/suonlyusers<br />
account     sufficient    /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet<br />
account     required      /lib/security/$ISA/pam_permit.so</p>

<p>password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3<br />
password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow<br />
password    required      /lib/security/$ISA/pam_deny.so</p>

<p>session     required      /lib/security/$ISA/pam_limits.so<br />
session     required      /lib/security/$ISA/pam_unix.so<br />
</pre><br />
</li><br />
<li>After editing that file, create the file <code>/etc/suonlyusers</code> and add a single line with the username of whomever you are trying to restrict (in our case: kyle)<br />
</li><br />
<li>Unrestrict the same user when using the su command.<br />
edit the file <code>/etc/pam.d/su</code> and add the pam_listfile.so line as shown:<br />
<pre><br />
auth       sufficient   /lib/security/$ISA/pam_rootok.so<br />
# Uncomment the following line to implicitly trust users in the "wheel" group.<br />
#auth       sufficient   /lib/security/$ISA/pam_wheel.so trust use_uid<br />
# Uncomment the following line to require a user to be in the "wheel" group.<br />
#auth       required     /lib/security/$ISA/pam_wheel.so use_uid<br />
auth       required     /lib/security/$ISA/pam_stack.so service=system-auth<br />
account    sufficient     /lib/security/$ISA/pam_listfile.so item=user sense=allow onerr=succeed file=/etc/suonlyusers<br />
account    required     /lib/security/$ISA/pam_stack.so service=system-auth<br />
password   required     /lib/security/$ISA/pam_stack.so service=system-auth<br />
# pam_selinux.so close must be first session rule<br />
session    required     /lib/security/$ISA/pam_selinux.so close<br />
session    required     /lib/security/$ISA/pam_stack.so service=system-auth<br />
# pam_selinux.so open and pam_xauth must be last two session rules<br />
session    required     /lib/security/$ISA/pam_selinux.so open multiple<br />
session    optional     /lib/security/$ISA/pam_xauth.so<br />
</pre><br />
</li><br />
</ol></p>

<p>Try giving your user a password, loggin in directly, or accessing the user account via su.<br />
Quite a trick.<br />
(ranks a 4.3 out of 5 in my book)</p>]]>
    </content>
</entry>

<entry>
    <title>Concurrent GUI Logins</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/07/concurrent-gui-1.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.129</id>

    <published>2005-07-27T21:38:53Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>Ever wanted to do multiple concurrent GUI logins ala &quot;fast user switching&quot; in Windows XP? It&apos;s really not that hard. These instructions assume you are using GDM as your display manager. The file paths are written assuming that you are...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>Ever wanted to do multiple concurrent GUI logins ala "fast user switching" in Windows XP? It's really not that hard. </p>

<p>These instructions assume you are using GDM as your display manager. The file paths are written assuming that you are using a RedHat based distro.</p>]]>
        <![CDATA[<p>The first step is to make sure you are using the GDM display manager. Edit the file <em>/etc/sysconfig/desktop</em> and make sure the <em>DISPLAYMANAGER=</em> looks like this: <br />
<blockquote>DISPLAYMANAGER=GDM</blockquote><br />
The other lines can be left with their default settings.</p>

<p>Now to move on to configuring GDM to start mutiple X servers both offering a login screen, one bound to tty7 and the other bound to tty8. The remaining edits should all take place in the file <em>/etc/X11/gdm/gdm.conf</em> and can be made all at once.</p>

<p>We must change the default greeter from the pretty-looking graphical greeter to the more utilitarian standard greeter. I've found this offers better stability as the graphical greeter was prone to dying if called more than once. Locate the following lines towards the beginning of the file:<br />
<blockquote># Greeter for local (non-xdmcp) logins.  Change gdmgreeter to gdmlogin to<br />
# get the standard greeter.<br />
Greeter=/usr/bin/gdmgreeter</blockquote><br />
Change the <em>Greeter=</em> line so that it looks like this:<br />
<blockquote># Greeter for local (non-xdmcp) logins.  Change gdmgreeter to gdmlogin to<br />
# get the standard greeter.<br />
Greeter=<strong>/usr/bin/gdmlogin</strong></blockquote></p>

<p>To avoid the haphazard placement of our X servers we enforce them to start allocating terminals at tty7. Locate the lines:<br />
<blockquote># Automatic VT allocation.  Right now only works on Linux.  This way<br />
# we force X to use specific vts.  turn VTAllocation to false if this<br />
# is causing problems.<br />
#FirstVT=7<br />
#VTAllocation=true</blockquote><br />
Un-comment the two setting lines like so:<br />
<blockquote># Automatic VT allocation.  Right now only works on Linux.  This way<br />
# we force X to use specific vts.  turn VTAllocation to false if this<br />
# is causing problems.<br />
<strong>FirstVT=7<br />
VTAllocation=true</strong></blockquote></p>

<p>Configure an additional server that will always be started. The number at the first of the line is used as the display number when calling the corresponding X commmand. In the section shown here:<br />
<blockquote>[servers]<br />
# These are the standard servers.  You can add as many you want here<br />
# and they will always be started.  Each line must start with a unique<br />
# number and that will be the display number of that server.  Usually just<br />
# the 0 server is used.<br />
0=Standard</blockquote><br />
Add another server line with the server number incremented. You can add as many as you like. The entry should look like this:<br />
<blockquote>[servers]<br />
# These are the standard servers.  You can add as many you want here<br />
# and they will always be started.  Each line must start with a unique<br />
# number and that will be the display number of that server.  Usually just<br />
# the 0 server is used.<br />
0=Standard<br />
<strong>1=Standard</strong></blockquote></p>

<p>Save and exit the <em>gdm.conf</em> file you've been editing. Reboot, or switch to runlevel 3 and back to 5, or send GDM a HUP signal. This will reload GDM and make it read the newly modified file.</p>

<p>Now for the magic part... When your displays come back up you will have a graphical login avalible on tty7 and tty8. Switch between them by using the keystroke <strong>CTRL-ALT-F7</strong> and <strong>CTRL-ALT-F8</strong>.</p>

<p>There ya have it. A cheap-O way to multiple GUI logins.  Instructions on configuring KDM and XDM are in the works so watch this space for more.</p>]]>
    </content>
</entry>

<entry>
    <title>Multi-Line sed</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/07/multiline-sed.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.127</id>

    <published>2005-07-14T17:38:49Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>Lets say you want to add &quot;disable = yes&quot; after specific two lines in a file. For example, the two lines: service finger { The &quot;N&quot; command to sed tells it to read another line into the &quot;input buffer&quot; you...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>Lets say you want to add "disable = yes" after specific two lines in a file.</p>

<p>For example, the two lines:<br />
<code><br />
service finger<br />
{<br />
</code></p>

<p>The "N" command to sed tells it to read another line into the "input buffer" you can stack multiple "N"s if you need more than 2 lines.</p>

<p>So, the answer is:<br />
<code><br />
sed -i -e N -e "s/service finger\n{/service finger\n{\n\tdisable = yes/g" /path/to/file-to-be-edited<br />
</code><br />
To read 3 lines you would do something like:<br />
<code><br />
sed -i -e N -e N -e N -e "s/changethis/tothis/g" /path/to/file-to-be-edited<br />
</code></p>]]>
        
    </content>
</entry>

<entry>
    <title>Catching up</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/05/catching-up-1.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.104</id>

    <published>2005-05-13T19:13:13Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>These Guru Labs blogs where created to allow us instructors to share information that was historically shared via internal mailing lists. There has been a large number of very interesting and powerful tips/tricks, as well as funny/usefull websites. I have...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>These Guru Labs blogs where created to allow us instructors to share information that was historically shared via internal mailing lists. There has been a large number of very interesting and powerful tips/tricks, as well as funny/usefull websites. I have personally combed the archives of these mailing lists and have compiled quite a list of URLS.</p>]]>
        <![CDATA[<p>These URLS are classified into 5 categories which include: HowTo's, Articles, Misc Info, Cool Stuff, and General Geek</p>

<h3>HowTo's</h3>

<p><a href="http://www.redhat.com/support/resources/howto/RH-postfix-HOWTO/x441.html">Red Hat anti UCE HowTo</a> -- This page walks through the steps to help secure postfix against Unsolicited Commercial Email or SPAM.</p>

<p><a href="http://home.schleef.org/blog/20040726.1">Real-Life ps memory output</a> -- This howto deals with getting the "real" world memory usage, as the output from the ps command shows shared memory.</p>

<p>As a Linux instructor I have found useful many different pages that help with giving talks and doing presentations.<br />
<a href="http://www.perl.com/pub/a/2004/07/30/lightningtalk.html">Giving Lightning Talks</a> and <a href="http://perl.plover.com/yak/presentation/">Conference Judo</a></p>

<p><a href="http://servers.linux.com/article.pl?sid=04/07/22/1718242&tid=30">Creating Your Own YUM Repo</a> -- YUM is an extremely exciting package management tool. Now you can create your own repo of packages you have.</p>

<p><a href="http://www.reactivated.net/writing_udev_rules.html">Udev Rules</a> -- Udev can be confusing, having your /dev directory re-aranging itself on you can cause headaches. This howto helps in the creation of udev rules.</p>

<p><a href="http://www.madboa.com/geek/sort-addr/">IP addresses + sort</a> -- Ever had a flat file with ip addresses in it? Wanted to sort those ip addresses?  forget perl/python/awk or some other programming language. GNU sort can handle this just fine.</p>

<h3>Articles</h3>

<p><a href="http://www.slweekly.com/editorial/2004/feat_2004-01-22.cfm">Linux Code Red</a> -- In an interesting article in the Salt Lake City Weekly, Guru Labs' own Dax Kelson was quoted while talking about the ongoing SCO lawsuit.</p>

<p><a href="http://lwn.net/Articles/119500/">Fedora Core 4 Plans</a> -- It's almost too late to post this, but seeing as how FC4 has yet to be released I thought I'd go ahead. LWN shows us what is upcomming in the new release of Fedora Core.</p>

<p><a href="http://news.com.com/Intel+lets+Linux+into+Centrino+camp/2100-7344_3-5542514.html?part=rss&tag=5542514&subj=news.7344.5">Intel & Centrino</a> -- Some long awaited news that would allow Linux to become a Centrino certified OS.  Really good news for those laptop vendors that have Linux as an option for the OEM OS. *hint hint*</p>

<p><a href="http://lwn.net/Articles/121843/">Fedora Extras</a> -- Other great news! Fedora Extras, packages that aren't shipped with the default distribution yet are still quite popular, have been made available for download via YUM enabled repositories.</p>

<h3>Misc Info</h3>

<p><a href="http://www.redhat.com/training/rhce/examprep.html">RHCT & RHCE Exam Prep</a> -- Straight from the horse's mouth you have an exam prep guide to help prepare you for the RHCT and RHCE exams. These guides are about the best you can come by.</p>

<p><a href="http://www.redhat.com/training/rhce/rhce_faq.html">RHCE FAQ</a> -- Because the RHCT and RHCE exams can be pretty stressfull there are many questions you may have. Because of the confendical nature of the exams many of the specifics cannot be shared. This url is a FAQ for the RHCE exam which tries to answer as many questions as possible.</p>

<p><a href="http://www.pcguide.com/ref/hdd/perf/raid/levels/">Raid Levels</a> -- Ever wondered what the difference between RAID-7 and RAID-5 is? This url does a pretty decent job of explaining RAID in simple to understand terms.</p>

<h3>Cool Stuff</h3>

<p><a href="http://www.google.com/sms/index.html">Google SMS</a> -- Google is only as far away as your SMS enabled phone. How cool is that?</p>

<p><a href="http://www.musicplasma.com">Music Plasma</a> -- Locate music based on style, just plug in one of your favorite band's names and a graphical representaion of the relationships of diffent groups shows up on your screen. This service has recently been updated to work with movies as well.</p>

<p><a href="http://tovid.sourceforge.net/index.html">Tovid</a> -- DVD authoring available to a linux user.</p>

<p><a href="http://homepage.ntlworld.com/geoff.johnson2/IR/">Infrared Webcam</a> -- How to make your webcam see in the dark. (well somewhat)</p>

<p><a href="http://193.151.73.87/games/lemmings/">DHTML Lemmings</a> -- A lemmings clone done in javascript and DHTML. Impressive indeed!</p>

<h3>Generic Geek</h3>

<p><a href="http://josephhall.com/?view=25">Caffiene High Help</a> -- I'm the first to admit that I have a caffiene addiction. Any of you who know me can vouch for that. When I found this article which talks about ways of extending your caffiene high, I was in heaven. Now I am almost never seen without a bottle of bawls and a grapefruit on deadline days.</p>

<p><a href="http://www.newsforge.com/article.pl?sid=04/10/30/1322227">Choice of Distro</a> -- What your choice of distro tells about you.  I'm a Fedora Core user, make your own assumptions as to the truth of this article.</p>

<p><a href="http://www.sleepinginairports.net/">Sleeping in Airports</a> -- Ok, so <br />
this one isn't really a "geek" link. It is however something that I've gotten used to.  The budget traveler's guide to sleeping in airports. Why not?</p>

<p><br />
This concludes the catching up entry to Goozbach's techtips, have a safe trip home and don't forget to tip your waiter/waitress. Goodnight!</p>]]>
    </content>
</entry>

<entry>
    <title>You TWIT!</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/05/you-twit.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.109</id>

    <published>2005-05-13T01:49:08Z</published>
    <updated>2008-01-28T23:05:45Z</updated>

    <summary>Don&apos;t get alarmed, I&apos;m not being demeaning. TWIT is just an acronym. An acronym that has made me all sorts of (howdy Brent) excited!!! Why am I excited? Well let me tell you. TWIT stands for This Week In Tech....</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>Don't get alarmed, I'm not being demeaning. TWIT is just an acronym. An acronym that has made me all sorts of (howdy Brent) excited!!! Why am I excited? Well let me tell you. TWIT stands for This Week In Tech. A <a href="http://en.wikipedia.org/wiki/Podcasting">podcast</a> which talks about many different aspects of technology today. This podcast features guests that share their views, a site of the week, and have a generally geeky good time. You may be wondering, "Why then is this such a good podcast?" or thinking, "I've heard of a miriad of podcasts like this." Let me explain my overjoyment.</p>]]>
        <![CDATA[<p>This is no ordinary podcast. This podcast features four of the guys that are Gods in the technology world. <a href="http://www.leoville.com/">Leo Laporte</a>, <a href="http://patricknorton.typepad.com/">Patrick Norton</a>, <a href="http://www.kevinrose.com/">Kevin Rose</a>, Robert Heron, and others. YES! that is the old screensavers crew!!! Now you can see why I'm so excited.</p>

<p>For those of you who aren't really superbigjumbo geeks like myself. The ScreenSavers was an awesome tech related show that was on the old TechTV network. Since G4's buyout of TechTV the show has somewhat changed formats and gotten rid of much of the beloved talent. The great programming that was once TechTV has now become a sad shadow of what it once was.</p>

<p>So I was extremely excited when I stumbled across an entry on Leo's blog that stated that he was working on this podcast. I have since listened to all four episodes of the weekly podcast and I am enjoying them immensly. Hopefully, with the listeners support, they'll keep it up.</p>

<p>goozbach out!</p>]]>
    </content>
</entry>

<entry>
    <title>Archatecting a Plot</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/03/archatecting-a.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.69</id>

    <published>2005-03-08T23:54:47Z</published>
    <updated>2008-01-28T23:05:47Z</updated>

    <summary>For some time now I&apos;ve been writing code, doing web development, creating documents, etc... I&apos;ve learned that the more of this you do the more important a good RCS (revision control system for you laypersons out there) can be. The...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>For some time now I've been writing code, doing web development, creating documents, etc... I've learned that the more of this you do the more important a good RCS (revision control system for you laypersons out there) can be. The bigger  a project gets the more important source code control becomes. </p>

<p>In the past, CVS has been the de-facto standard of the RCS's out there, I don't think there's been a programmer who hasn't at least heard of it. CVS makes it very easy to keep track of the sourcecode and who's doing what with it.  </p>

<p>There are a few downsides to CVS however, and it's starting to show it's age. One of the biggest problems to CVS and it's way of doing things is the open source paradigm (I'm gonna take what you've done, and make it better). Commonly known as a distributed repository. It's difficult to say the least to accomplish this with CVS.</p>

<p>Enter <a href="http://wiki.gnuarch.org/">arch</a>, or more correctly tla arch. It gives you the ablilty to break off of the main repository and work on a branch yourself, commiting changes and the whole nine yards. You can also merge these changes back into the main branch at any time in a smart fashion.</p>

<p>Now, I am, by no stretch of the imagination, an arch master/guru/demi-god, I just do realitively simple source code control. I therefore refer to a mailing list post that very well defines an arch <a href="http://plug.org/pipermail/plug/2005-March/013879.html">"sucess story."</a></p>

<p>There are quite a few resources out there for learning about arch, not least of which is the arch wiki (link posted above). However there are <b>many</b> command-line options and commands that go into making arch a robust program, so it can be kind of disarming to get into arch with no previous knowlege of a RCS or transitioning from CVS. Brett Rasmussen (author of the above mailing list post) was kind enough to make up a little cheat sheet for those of us who don't really like digging through the wiki or the online help. And I thank him for letting me post it <a href="/derek/archives/arch_quick_ref.txt">here.</a></p>

<p>Hopefully this info is of use to you, I know that I've benefited from it quite a  bit.</p>

<p>derek</p>]]>
        
    </content>
</entry>

<entry>
    <title>New Guru Guide::Router on a stick</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/03/new-guru-guider-1.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.60</id>

    <published>2005-03-02T00:20:35Z</published>
    <updated>2008-01-28T23:05:47Z</updated>

    <summary>I just created my first guruguide: Router on a Stick Check it out. neato tricko derek...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>I just created my first guruguide: <br />
<a href="http://www.gurulabs.com/goodies/routeronastick.php">Router on a Stick</a></p>

<p>Check it out.<br />
neato tricko</p>

<p>derek</p>]]>
        
    </content>
</entry>

<entry>
    <title>Ohh a snake!!!</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/02/ohh-a-snake-1.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.53</id>

    <published>2005-03-01T00:18:20Z</published>
    <updated>2008-01-28T23:05:47Z</updated>

    <summary>The most common creation, a snake:...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Putty" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>The most common creation, a snake:<br />
<img src="/derek/Photo_011105_001.jpg"><br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Enlightenment putty</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/02/ohh-a-snake.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.52</id>

    <published>2005-03-01T00:11:05Z</published>
    <updated>2008-01-28T23:05:47Z</updated>

    <summary>4oz of pure undulated enlightenment...</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Putty" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>4oz of pure undulated enlightenment<br />
<img src="/derek/Photo_022805_001.jpg"><br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Mo:blog to your heart&apos;s content</title>
    <link rel="alternate" type="text/html" href="http://blogs.gurulabs.com/derek/2005/02/moblog-your-sho.html" />
    <id>tag:blogs.gurulabs.com,2005:/derek//5.51</id>

    <published>2005-02-28T23:49:14Z</published>
    <updated>2008-01-28T23:05:47Z</updated>

    <summary>This post sent from my treo650 using Mo:blog I love technology. Watch for more awesome posts in the near future....</summary>
    <author>
        <name>Stuart Jansen</name>
        <uri>http://blogs.gurulabs.com/stuart</uri>
    </author>
    
        <category term="Guru Labs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.gurulabs.com/derek/">
        <![CDATA[<p>This post sent from my treo650 using Mo:blog<br />
I love technology.<br />
Watch for more awesome posts in the near future.</p>]]>
        
    </content>
</entry>

</feed>
