<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Racker Hacker &#187; rackspace</title>
	<atom:link href="http://rackerhacker.com/tag/rackspace/feed/" rel="self" type="application/rss+xml" />
	<link>http://rackerhacker.com</link>
	<description>Words of wisdom from a server administrator</description>
	<lastBuildDate>Wed, 16 May 2012 12:55:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Getting a Technical Job at Rackspace</title>
		<link>http://rackerhacker.com/2012/04/09/getting-a-technical-job-at-rackspace/</link>
		<comments>http://rackerhacker.com/2012/04/09/getting-a-technical-job-at-rackspace/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 14:00:56 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[general advice]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=3286</guid>
		<description><![CDATA[You've probably noticed that the blog has slowed down a bit recently. Part of the slowdown is due to an uptick in work required to get OpenStack Nova and its related software up and running at Rackspace for Cloud Servers and another part of it is a severe case of writer's block. I threw out [...]<p><a href="http://rackerhacker.com/2012/04/09/getting-a-technical-job-at-rackspace/">Getting a Technical Job at Rackspace</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>You've probably noticed that the blog has slowed down a bit recently.  Part of the slowdown is due to an uptick in work required to get <a href="http://www.openstack.org/">OpenStack</a> <a href="http://nova.openstack.org/">Nova</a> and its related software up and running at <a href="http://rackspace.com/">Rackspace</a> for <a href="http://www.rackspace.com/cloud/cloud_hosting_products/servers/">Cloud Servers</a> and another part of it is a severe case of writer's block.  I threw out some questions on Twitter about the topics people would like to see covered in some new posts and a commonly requested topic was employment at Rackspace.</p>
<p><a href="http://rackerhacker.com/wp-content/uploads/2012/04/boromir_rackspace_job.jpg"><img src="http://rackerhacker.com/wp-content/uploads/2012/04/boromir_rackspace_job-300x176.jpg" alt="Boromir - One Does Not Simply Get a Job at Rackspace" title="Boromir - One Does Not Simply Get a Job at Rackspace" width="300" height="176" class="alignright size-medium wp-image-3287" /></a><em>First things first, getting a job at Rackspace isn't easy.</em>  We don't <em>intentionally</em> make the process difficult.  It's just that the work we do is unique and demanding.</p>
<p>We work in a fast-paced, extremely dynamic team-centric environment.  While some people in the company work in extremely small teams or sometimes all by themselves, that's pretty few and far between.  We look for people who can survive and flourish in this atmosphere and we look for people who can do it all while working as a team.  Even with all of this hustle and bustle, we still remember why we're doing it: <strong>the pursuit of Fanatical Support for our customers</strong>.</p>
<p>Another thing to keep in mind is that there's no true secret for making it through the application process.  There's no magic combination of skills or "silver bullet" that will scoot you through.  Every candidate is reviewed individually for each position.  There have been several times at the end of an interview where we've gotten together and said: "Wow, this candidate is solid, but they're just not right for this position.  Let's find the right spot and see if there's a spot open."  We look for the right candidate for the right position at the right time.</p>
<p>One of the best ways to get ahead in the screening or interview process is to do a little homework about Rackspace and the products we offer.  Much of this is covered in a <a href="/2011/05/02/do-your-homework-before-a-technical-interview/">post I wrote in 2011</a>.  You'll go into the interviews with more confidence and it will be much more obvious that you're really interested in the position.</p>
<p>Don't be discouraged if the process takes a little longer than you expected.  When I was hired in 2006, I went through two phone pre-screens and then three back-to-back interviews in person.  Things have changed a little since then and I've heard of some candidates receiving two to three pre-screens via telephone and then one or two interviews in person.  The additional screening and interviews may be due to Rackers trying to find the right fit for a particular applicant.  As I said previously, we look for the right fit for each applicant.  We may consider you for a different position than you applied for if we feel like your skill set or personality fits that role better.</p>
<p>A very common question is what to wear to a Rackspace interview.  It's confusing to know exactly what's expected since we have Rackers in the building wearing everything from suits to flip-flops.  This is where you really have to go with your gut.  Interviewing for a customer-facing sales position while wearing a hoodie and shorts is probably going to bring a suboptimal result.  Keep in mind that there's really nothing negative about overdressing (but keep your tuxedo in the closet, seriously).  I wore a shirt and tie for my interviews in 2006 but my tie got caught in the car door and was shredded.  After a lot of cursing, I took off the tie and decided to wing it with my dress shirt.  Nobody ever said a word about it.</p>
<p>Remember to be flexible during the interviews.  You might be asked to draw a solution on a whiteboard or think through a really complicated situation.  Roll with it and keep your confidence up.  When you don't know something, admit it, but then talk about how you'd research an answer.</p>
<p>There's one last thing to keep in mind and it's really critical.  If you're ever asked about how you would solve a problem or how you solved a problem in the past, <strong>don't divulge any information which is confidential or proprietary to your current company</strong>.  Just tell the interviewers that you've solved the solution in the past but you'll need to keep things vague to maintain confidentiality.  We will definitely understand and we will encourage you to maintain that confidentiality.</p>
<p>Leave your comments if you have any!  I'll be glad to answer any questions you have.</p>
<p><a href="http://rackerhacker.com/2012/04/09/getting-a-technical-job-at-rackspace/">Getting a Technical Job at Rackspace</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/04/09/getting-a-technical-job-at-rackspace/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>mysql-json-bridge: a simple JSON API for MySQL</title>
		<link>http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/</link>
		<comments>http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 02:34:53 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=3248</guid>
		<description><![CDATA[My quest to get better at Python led me to create a new project on GitHub. It's called mysql-json-bridge and it's ready for you to use. Why do we need a JSON API for MySQL? The real need sprang from a situation I was facing daily at Rackspace. We have a lot of production and [...]<p><a href="http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/">mysql-json-bridge: a simple JSON API for MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>My quest to get better at <a href="http://python.org">Python</a> led me to create a new project on GitHub.  It's called <a href="https://github.com/rackerhacker/mysql-json-bridge">mysql-json-bridge</a> and it's ready for you to use.</p>
<p><b>Why do we need a JSON API for MySQL?</b><br />
The real need sprang from a situation I was facing daily at <a href="http://rackspace.com/">Rackspace</a>.  We have a lot of production and pre-production environments which are in flux but we need a way to query data from various MySQL servers for multiple purposes.  Some folks need data in ruby or python scripts while others need to drag in data with .NET and Java.  Wrestling with the various adapters and all of the user privileges on disparate database servers behind different firewalls on different networks was less than enjoyable.</p>
<p>That's where this bridge comes in.</p>
<p>The bridge essentially gives anyone the ability to talk to multiple database servers across different environments by talking to a single endpoint with easily configurable security and encryption.  As long as the remote user can make an HTTP POST and parse some JSON, they can query data from multiple MySQL endpoints.</p>
<p><b>How does it work?</b><br />
It all starts with a simple HTTP POST.  I've become a big fan of the Python <a href="http://python-requests.org">requests</a> module.  If you're using it, this is all you need to submit a query:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> requests
payload = <span style="color: black;">&#123;</span><span style="color: #483d8b;">'sql'</span>: <span style="color: #483d8b;">'SELECT * FROM some_tables WHERE some_column=some_value'</span><span style="color: black;">&#125;</span>
url = <span style="color: #483d8b;">&quot;http://localhost:5000/my_environment/my_database&quot;</span>
r = requests.<span style="color: black;">post</span><span style="color: black;">&#40;</span>url, data=payload<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> r.<span style="color: black;">text</span></pre></div></div>

<p>The bridge takes your query and feeds it into the corresponding MySQL server.  When the results come back, they're converted to JSON and returned via the same HTTP connection.</p>
<p><b>What technology does it use?</b><br />
<a href="http://flask.pocoo.org/">Flask</a> does the heavy lifting for the HTTP requests and <a href="https://github.com/facebook/tornado/blob/master/tornado/database.py">Facebook's Tornado database class</a> wraps the <a href="http://mysql-python.sourceforge.net/">MySQLdb</a> module in something a little more user friendly.  Other than those modules, <a href="http://pyyaml.org/">PyYAML</a> and <a href="http://python-requests.org">requests</a> are the only other modules not provided by the standard Python libraries.</p>
<p><b>Is it fast?</b><br />
Yes.  I haven't done any detailed benchmarks on it yet, but the overhead is quite low even with a lot of concurrency.  The biggest slowdowns come from network latency between you and the bridge or between the bridge and the database server.  Keep in mind that gigantic result sets will take a longer time to transfer across the network and get transformed into JSON.</p>
<p><b>I found a bug.  I have an idea for an improvement.  You're terrible at Python.</b><br />
All feedback (and every pull request) is welcome.  I'm still getting the hang of Python (hey, I've only been writing in it seriously for a few weeks!) and I'm always eager to learn a new or better way to accomplish something.  Feel free to create an issue in GitHub or submit a pull request with a patch.</p>
<p><a href="http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/">mysql-json-bridge: a simple JSON API for MySQL</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/03/28/mysql-json-bridge-a-simple-json-api-for-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five years of rackerhacker.com</title>
		<link>http://rackerhacker.com/2012/02/14/five-years-of-rackerhacker-com/</link>
		<comments>http://rackerhacker.com/2012/02/14/five-years-of-rackerhacker-com/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 14:45:43 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=3085</guid>
		<description><![CDATA[Today marks the fifth year that this blog has existed on the internet. I bought the domain on February 14th, 2007 and tossed together a quick WordPress installation (I can't even remember the version now!) to hold my notes that I was gathering at work. At the time, I had recently parted ways with a [...]<p><a href="http://rackerhacker.com/2012/02/14/five-years-of-rackerhacker-com/">Five years of rackerhacker.com</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Today marks the fifth year that this blog has existed on the internet.  I bought the domain on February 14th, 2007 and tossed together a quick WordPress installation (I can't even remember the version now!) to hold my notes that I was gathering at work.<br />
<div id="attachment_3092" class="wp-caption alignright" style="width: 310px"><a href="http://rackerhacker.com/wp-content/uploads/2012/02/birthday_cake.jpg"><img src="http://rackerhacker.com/wp-content/uploads/2012/02/birthday_cake-300x199.jpg" alt="Birthday Cake" title="Birthday Cake" width="300" height="199" class="size-medium wp-image-3092" /></a><p class="wp-caption-text">Photo credit: <a href='http://www.flickr.com/photos/spool32/5045502202/'>Will Clayton</a></p></div>At the time, I had recently parted ways with a very small internet startup and joined the ranks at <a href="http://rackspace.com/">Rackspace</a> as an entry-level Linux system administrator.  The abrupt change from "top dog at the startup" to "wow, I don't know anything about Linux" caught me by surprise and I was trying to stuff as much knowledge into my brain as quickly as I could.  My teammates at Rackspace were eager to show me the ropes of wrangling servers and supporting customers.</p>
<p>As I mentioned already, the blog started out just as a place to stuff my notes from the things I learned at work.  I figured that it would be nice to store it in a searchable format but it would also be great if I could link other people to certain posts if they needed more information to fix a problem.  It was a way to retain knowledge but yet give it back to the people around me who needed it.</p>
<p>The blog has hit 456 posts (this one is #457) and it's gone from a few page views per day to just over 20,000 per day.  Here are the top five most accessed posts (since I've been keeping stats):</p>
<ol>
<li><a href="/2008/11/02/syncing-an-iphone-with-a-new-mac-without-hassles/">Syncing an iPhone with a new Mac without hassles</a></li>
<li><a href="/2008/01/24/ip_conntrack-table-full-dropping-packet/">ip_conntrack: table full, dropping packet</a></li>
<li><a href="/2007/02/09/delete-single-iptables-rules/">Delete a single iptables rule</a></li>
<li><a href="/2007/01/24/increase-mysql-connection-limit/">Increase MySQL connection limit</a></li>
<li><a href="/2008/06/24/mysql-error-1040-too-many-connections/">MySQL Error 1040: too many connections</a></li>
</ol>
<p>I'd like to send out a big thanks to the people who read this blog, add comments (or complaints!), and suggest new topics.  You are the reason why I take the time to keep this blog going.</p>
<p><a href="http://rackerhacker.com/2012/02/14/five-years-of-rackerhacker-com/">Five years of rackerhacker.com</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/02/14/five-years-of-rackerhacker-com/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Looking back at the long road to becoming a Red Hat Certified Architect</title>
		<link>http://rackerhacker.com/2012/02/13/looking-back-at-the-long-road-to-becoming-a-red-hat-certified-architect/</link>
		<comments>http://rackerhacker.com/2012/02/13/looking-back-at-the-long-road-to-becoming-a-red-hat-certified-architect/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 15:00:41 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[certifications]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[general advice]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=3058</guid>
		<description><![CDATA[The grades came back last Friday and I've passed the last exam in the requirements to become a Red Hat Certified Architect (RHCA). I was fortunate enough to be part of Rackspace's RHCA pilot program and we took our first exam back at the end of 2010. It's definitely a good feeling to be finished [...]<p><a href="http://rackerhacker.com/2012/02/13/looking-back-at-the-long-road-to-becoming-a-red-hat-certified-architect/">Looking back at the long road to becoming a Red Hat Certified Architect</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>The grades came back last Friday and I've passed the last exam in the requirements to become a <a href="http://www.redhat.com/training/certifications/rhca/">Red Hat Certified Architect (RHCA)</a>.  I was fortunate enough to be part of Rackspace's RHCA pilot program and we took our first exam back at the end of 2010.  It's definitely a good feeling to be finished and I'm definitely ready to give back some knowledge to the readers of this blog.</p>
<p><strong>First things first:</strong> there are going to be many part of this post which probably aren't as specific as you'd like.  A lot of that is due to the NDA that all Red Hat examinees agree to when they take an exam.  We aren't allowed to talk about what was on the exam or our experiences during the exam.  If we do, penalties range from smaller things like losing certifications all the way up to serious stuff like legal action.  It goes without saying that I want to protect the security of the exams, I don't want to lose my certifications, and I don't want to hire a lawyer.  Please try to keep this in mind if you yearn for more specifics than I'm able to give.</p>
<p><strong>Red Hat Certified Engineer</strong><br />
The <a href="http://www.redhat.com/training/courses/ex200/examobjective">RHCSA</a> and <a href="http://www.redhat.com/training/courses/ex300/examobjective">RHCE</a> exams are the first step on the path to the RHCA.  You can't take any of the RHCA prerequisite exams without it.  These exams cover a really broad spectrum of material including apache configuration, NFS, iptables and mail services.  The two links above will take you to the exam objectives for each exam.</p>
<p>I've always recommended the RHCE exam for Linux administrators who are trying to sharpen their skills and get to the next level whether they use Red Hat or not.  The exam covers a lot of good material that makes a solid foundation for any Linux user without throwing in too many Red Hat-specific knowledge.</p>
<p>The exam (like all Red Hat exams) is fully practical.  There are no multiple choice questions or essays.  You'll have to meet all of the objectives by logging into a local Red Hat system and making the system do what it needs to do.</p>
<p>Quick tips for the RHCSA/RHCE exams:</p>
<ul>
<li>Keep your eye on the clock. Time can really get away from you if you get stuck in the weeds on a problem that should be relatively straightforward.</li>
<li>Leave time at the end to check your work.  When you set up a lot of services, it's inevitable that you might configure a service for one problem that breaks the functionality required by a problem you completed already.</li>
<li>Always reboot before you leave.  We all forget to use <code>chkconfig</code> when we're in a hurry.</li>
<li>Practice, practice, practice.  There's not one objective on this exam that you can't test in a VM on your own.</li>
</ul>
<p><strong>Red Hat Enterprise System Monitoring and Performance Tuning</strong><br />
Our group at Rackspace started off with <a href="http://www.redhat.com/training/courses/ex442/examobjective">EX442</a> and it was a very difficult way to start off the RHCA track.  Take a look at the objectives and you'll see that much of the exam is related to tweaking system performance and then monitoring that performance with graphs and raw data.  You'll have to turn a lot of knobs on the kernel and you'll need to know where to store these configurations so they'll be persistent.</p>
<p>In addition, the objective regarding TCP buffers and related settings is a real challenge.  You'll have to wrestle with some math that appears to be relatively simple, but can get confusing quickly.  Some of the settings can't really be checked to know if your setting is correct.  The objectives mention tuning disk scheduling -- you don't really have the time or tools to know if your setting is ideal.</p>
<p>Quick tips for EX442:</p>
<ul>
<li>Use the documentation available to you. Install the <code>kernel-doc</code> package while you practice and during the exam.</li>
<li>Be careful with your math.  You have a Linux machine in front of you!  Don't forget about <code>bc</code>.</li>
<li>Watch your units.  Know the difference between a kilobyte (KB) and a kibibyte (KiB).</li>
<li>Make comments in files where you adjust kernel configurations.  It will help you keep track of which question the kernel adjustment is meant to satisfy.</li>
</ul>
<p><strong>Red Hat Enterprise Storage Management</strong><br />
I'm surprised to say this now, but I actually enjoyed <a href="http://www.redhat.com/training/courses/ex436/examobjective">EX436</a>.  I've always used other clustering tools like heartbeat and pacemaker, but I've never had the need to use the Red Hat Cluster Suite.  Although RHCS definitely has a lot of quirks and rough edges, it's pretty solid once you get familiar with the GUI and command line tools.</p>
<p>You get the opportunity to mess around with some pretty useful technology like iSCSI, GFS, and clustered LVM.  These are things that you're probably already using or will be using soon in a large server environment.  The web interface for RHCS is quite peculiar and you may find yourself wanting to put your fist through the screen when you're staring down the endless animated GIFs when the cluster is syncing its configuration.  Do your best to be patient because you certainly don't want to short circuit the cluster sync.</p>
<p>Quick tips for EX436:</p>
<ul>
<li>Be patient.  You'll feel like the RHCS web interface is mocking you when you're pressed for time.</li>
<li>Watch the clock.  It's extremely easy to burn a lot of time on this exam if you get stuck on a particular problem.</li>
<li>Double check your entries in the web interface.  Make sure you're doing things in the right order and that you've set up the prerequisites before adding services to the cluster.  If you get it wrong, you could put your cluster into a weird state.</li>
<li>Use man pages.  If you don't mess with GFS a lot, the man pages will save you in a pinch.</li>
</ul>
<p><strong>Red Hat Enterprise Deployment and Systems Management</strong><br />
If there's one exam where time management is critical, it's <a href="http://www.redhat.com/training/courses/ex401/examobjective">EX401</a>.  Importing data into the Satellite Server takes quite a bit of time and there's almost nothing you can do to speed it up.  It probably goes without saying, but as with most long-running tasks, you'll want to run it in screen.  The last thing you'd ever want is to abort the import due to an errant click or CTRL-C (I did it while practicing -- it's aggravating).</p>
<p>There are other test objectives which you can either complete or partially complete while you wait for the import to finish.</p>
<p>Also, take the time to really dig into the Satellite Server web interface while your practicing for the exam.  Knowing where to find the most common configuration items will really save some time when you're in the exam.  You can sometimes get pretty bogged down in the interface so don't forget to use multiple tabs to keep your work organized.</p>
<p>I felt like this exam was the easiest out of the bunch since you could go back and test every single question with good time management.  <em>Did I mention how important time management was on this exam already?</em>  If I forgot to mention it earlier, be sure to focus on time management for this test.</p>
<p>Quick tips for EX401:</p>
<ul>
<li>Time management will make or break you on this test.  Keep an eye on the clock and make sure you've done absolutely every piece of the exam that you can while you wait for the server to do its work.</li>
<li>Scour the web interface.  Keep a mental map in your mind where the big chunks of configuration items are.</li>
<li>Go back and test everything.  If you manage your time well, you should have enough time to verify each and every objective on this exam.</li>
</ul>
<p><strong>Red Hat Enterprise Directory Services and Authentication</strong><br />
At first, <a href="http://www.redhat.com/training/courses/ex423/examobjective">EX423</a> looks pretty straightforward.  Red Hat's authentication configuration tools make LDAP authentication setup pretty easy.  However, this exam comes with a lot of curveballs.</p>
<p>The GUI interface for the Directory Services component is a little frustrating to use.  I found that the GUI stopped responding to keyboard input occasionally unless I clicked on another window and came back.  If you misconfigure the SSL certificates in the interface, your LDAP server is down for the count.  If you don't input the correct data into the setup scripts at the beginning, you might not notice it until much later when it's either too difficult to dig yourself out of the hole or it's too late to start over with a clean configuration.</p>
<p>I didn't feel pressed for time on this exam too much and that was pretty refreshing after taking the EX401 test.  It's extremely critical to watch what you type and click on this exam.  Some mistakes can be quickly corrected while others may require you to blow away the LDAP server configuration and re-provision the whole thing.</p>
<p>Quick tips for EX423:</p>
<ul>
<li>Always watch what you're typing.  A simple mistake can lead to confusion or bigger issues down the road.</li>
<li>Don't ignore the LDIF objectives.  As you practice, you'll find that manipulating LDIF files is a little more involved than you expected.</li>
<li>Practice starting over.  Throw out your Directory Services configuration and get the experience of what it's like to start over and get back in the game.</li>
</ul>
<p><strong>Red Hat Enterprise Security: Network Services</strong><br />
There's no sugar coating it -- <a href="http://www.redhat.com/training/courses/ex333/examobjective">EX333</a> is a beast.  It's a six hour exam broken into two three-hour chunks.  It covers a ton of material and I refer to it as "the RHCE on steroids."  You might argue that I thought it was hard since it was the last test and I was ready to be finished, but I really think this exam is a tough one.</p>
<p>Practicing for the Kerberos and DNS objectives was the hardest for me.  I just couldn't understand Kerberos, no matter how hard I tried.  The realization that I would really have to learn it soon set in.  I dug into the Kerberos design documentation on MIT's site, read the summaries on Wikipedia, and scoured the documentation available in the Kerberos RPM packages.  Once I understood <em>why</em> Kerberos is set up the way it is and <em>why</em> the security measures are present, everything began to come together.  I was able to remember the steps not because I was memorizing them, but because I understood how Kerberos worked.</p>
<p>When you're working through the DNS objectives, keep an eye out for punctuation.  I blew through a good 20 minutes in what seemed like the blink of an eye when I forgot a period in my TSIG key configuration while studying.  Make sure you use the resources available to you, like <code>system-config-bind</code> and sample configs in <code>/usr/share/doc/bind*/examples/</code>.  Get to know commands like <code>dig</code> really well.</p>
<p>If you're overwhelmed by OpenSSL's command line syntax, check out the <code>/etc/pki/tls/misc/CA</code> script.  There are some handy comments at the top of the script that explain how to use it.  You can also pluck OpenSSL commands right out of the script if you need to run them yourself.</p>
<ul>
<li>Don't just memorize.  Do some research to understand how everything fits together.</li>
<li>Manage your time.  DNS and Kerberos have lots of small nuances that can become time sinks when done incorrectly.</li>
<li>Use the available documentation and tools.  Try practicing without study materials so that you're forced to use the docs and tools available within the server.</li>
</ul>
<p><b>Ranking the exams</b><br />
A couple of folks on Twitter asked me to rank the exams from most difficult to least difficult.  Keep in mind that these are a little subjective since I was more familiar with some objectives than others for certain tests.</p>
<ul>
<li><b>EX333 - Enterprise Security: Network Services:</b> a tubload of material and a very long exam</li>
<li><b>EX442 - System Monitoring and Performance Tuning:</b> very difficult to check your work, lots of calculations</li>
<li><b>EX423 - Directory Services and Authentication:</b> not a lot of material to cover, but tons of curveballs</li>
<li><b>EX436 - Storage Management:</b> the web interface made things much easier, lots of documentation available</li>
<li><b>EX401 - Deployment and Systems Management:</b> every objective can be tested, I build RPM's already</li>
</ul>
<p><a href="http://rackerhacker.com/2012/02/13/looking-back-at-the-long-road-to-becoming-a-red-hat-certified-architect/">Looking back at the long road to becoming a Red Hat Certified Architect</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/02/13/looking-back-at-the-long-road-to-becoming-a-red-hat-certified-architect/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>The Kerberos-hater&#039;s guide to installing Kerberos</title>
		<link>http://rackerhacker.com/2012/02/05/the-kerberos-haters-guide-to-installing-kerberos/</link>
		<comments>http://rackerhacker.com/2012/02/05/the-kerberos-haters-guide-to-installing-kerberos/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 21:03:52 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[nis]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[rhca]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=2949</guid>
		<description><![CDATA[As promised in my earlier post entitled Kerberos for haters, I've assembled the simplest possible guide to get Kerberos up an running on two CentOS 5 servers. Also, I don't really hate Kerberos. It's a bit of an inside joke with my coworkers who are studying for some of the RHCA exams at Rackspace. The [...]<p><a href="http://rackerhacker.com/2012/02/05/the-kerberos-haters-guide-to-installing-kerberos/">The Kerberos-hater's guide to installing Kerberos</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://rackerhacker.com/wp-content/uploads/2012/02/haters_gonna_hate_elephhant.jpg"><img src="http://rackerhacker.com/wp-content/uploads/2012/02/haters_gonna_hate_elephhant-238x300.jpg" alt="Haters gonna hate - elephant" title="Haters gonna hate - elephant" width="171" height="216" class="alignright size-medium wp-image-2953" /></a>As promised in my earlier post entitled <a href="/2012/02/02/kerberos-for-haters/">Kerberos for haters</a>, I've assembled the simplest possible guide to get Kerberos up an running on two CentOS 5 servers.</p>
<p>Also, I don't really <em>hate</em> Kerberos.  It's a bit of an inside joke with my coworkers who are studying for some of the <a href="http://www.redhat.com/training/certifications/rhca/">RHCA</a> exams at Rackspace.  The additional security provided by Kerberos is quite good but the setup involves a lot of small steps.  If you miss one of the steps or if you get something done out of order, you may have to scrap the whole setup and start over unless you can make sense of the errors in the log files.  A lot of my dislikes for Kerberos comes from the number of steps required in the setup process and the difficulty in tracking down issues when they crop up.</p>
<p>To complete this guide, you'll need the following:</p>
<ul>
<li>two CentOS, Red Hat Enterprise Linux or Scientific Linux 5 servers or VM's</li>
<li>some patience</li>
</ul>
<p>Here's how I plan to name my servers:</p>
<ul>
<li><strong>kdc.example.com</strong> - the Kerberos KDC server at 192.168.250.2</li>
<li><strong>client.example.com</strong> - the Kerberos client at 192.168.250.3</li>
</ul>
<p><strong>CRITICAL STEP:</strong> Before getting started, ensure that both systems have their hostnames properly set and both systems have the hostnames and IP addresses of both systems in <code>/etc/hosts</code>.  Your server and client must be able to know the IP and hostname of the other system as well as themselves.</p>
<p>First off, we will need <a href="http://en.wikipedia.org/wiki/Network_Information_Service">NIS</a> working to serve up the user information for our client.  Install the NIS server components on the KDC server:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# yum install ypserv</pre></div></div>

<p>Set the NIS domain and set a static port for <code>ypserv</code> to make it easier to firewall off.  Edit <code>/etc/sysconfig/network</code> on the KDC server:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">NISDOMAINNAME=EXAMPLE.COM
YPSERV_ARGS=&quot;-p 808&quot;</pre></div></div>

<p>Manually set the NIS domain on the KDC server and add it to <code>/etc/yp.conf</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# nisdomain EXAMPLE.COM
[root@kdc ~]# echo &quot;domain EXAMPLE.COM server kdc.example.com&quot; &gt;&gt; /etc/yp.conf</pre></div></div>

<p>Adjust <code>/var/yp/securenets</code> on the KDC server for additional security:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# echo &quot;255.0.0.0 127.0.0.0&quot; &gt;&gt; /var/yp/securenets
[root@kdc ~]# echo &quot;255.255.255.0 192.168.250.0&quot; &gt;&gt; /var/yp/securenets</pre></div></div>

<p>Start the NIS server and generate the NIS maps:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# /etc/init.d/ypserv start; chkconfig ypserv on
[root@kdc ~]# make -C /var/yp</pre></div></div>

<p>I usually like to prepare my iptables rules ahead of time so I ensure that it doesn't derail me later on.  Paste this into the KDC's terminal:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">iptables -N SERVICES
iptables -I INPUT -j SERVICES
iptables -A SERVICES -p tcp --dport 111 -j ACCEPT -m comment --comment &quot;rpc&quot;
iptables -A SERVICES -p udp --dport 111 -j ACCEPT -m comment --comment &quot;rpc&quot;
iptables -A SERVICES -p tcp --dport 808 -j ACCEPT -m comment --comment &quot;nis&quot;
iptables -A SERVICES -p udp --dport 808 -j ACCEPT -m comment --comment &quot;nis&quot;
iptables -A SERVICES -p tcp --dport 88 -j ACCEPT -m comment --comment &quot;kerberos&quot;
iptables -A SERVICES -p udp --dport 88 -j ACCEPT -m comment --comment &quot;kerberos&quot;
iptables -A SERVICES -p udp --dport 464 -j ACCEPT -m comment --comment &quot;kerberos&quot;
iptables -A SERVICES -p tcp --dport 749 -j ACCEPT -m comment --comment &quot;kerberos&quot;
/etc/init.d/iptables save</pre></div></div>

<p>We need our time in sync for Kerberos to work properly.  Install NTP on both nodes, start it, and ensure it comes up at boot time:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# yum -y install ntp &amp;&amp; chkconfig ntpd on &amp;&amp; /etc/init.d/ntpd start
[root@client ~]# yum -y install ntp &amp;&amp; chkconfig ntpd on &amp;&amp; /etc/init.d/ntpd start</pre></div></div>

<p>Now we're ready to set up Kerberos.  Start by installing some packages on the KDC:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# yum install krb5-server krb5-workstation</pre></div></div>

<p>We will need to make some edits to <code>/etc/krb5.conf</code> on the KDC to set up our KDC realm.  Ensure that the <code>default_realm</code> is set:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">default_realm = EXAMPLE.COM</pre></div></div>

<p>The <code>[realms]</code> section should look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[realms]
EXAMPLE.COM = {
	kdc = 192.168.250.2:88
	admin_server = 192.168.250.2:749
}</pre></div></div>

<p>The <code>[domain_realm]</code> section should look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[domain_realm]
kdc.example.com = EXAMPLE.COM
client.example.com = EXAMPLE.COM</pre></div></div>

<p>Add <code>validate = true</code> within the <code>pam { }</code> block of the <code>[appdefaults]</code> section:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[appdefaults]
 pam = {
   validate = true</pre></div></div>

<p>Adjust <code>/var/kerberos/krb5kdc/kdc.conf</code> on the KDC:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[realms]
EXAMPLE.COM = {
	master_key_type = des-hmac-sha1
	default_principal_flags = +preauth
}</pre></div></div>

<p>There's one last configuration file to edit on the KDC!  Ensure that <code>/var/kerberos/krb5kdc/kadm5.acl</code> looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">*/admin@EXAMPLE.COM	    *</pre></div></div>

<p>We're now ready to make a KDC database to hold our sensitive Kerberos data.  Create the database and set a good password which you can remember.  This command also stashes your password on the KDC so you don't have to enter it each time you start the KDC:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">kdb5_util create -r EXAMPLE.COM -s</pre></div></div>

<p>On the KDC, create a principal for the admin user as well as user1 (which we'll create shortly).  Also, export the admin details to the kadmind key tab.  You'll get some extra output after each one of these commands but I've snipped it to reduce the length of the post.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# kadmin.local
kadmin.local:  addprinc root/admin
kadmin.local:  addprinc user1
kadmin.local:  ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/admin
kadmin.local:  ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/changepw
kadmin.local:  exit</pre></div></div>

<p>Let's start the Kerberos KDC and kadmin daemons:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# /etc/init.d/krb5kdc start; /etc/init.d/kadmin start
[root@kdc ~]# chkconfig krb5kdc on; chkconfig kadmin on</pre></div></div>

<p>Now that the administration work is done, let's create a principal for our KDC server and stick it in it's keytab:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# kadmin.local
kadmin.local:  addprinc -randkey host/kdc.example.com
kadmin.local:  ktadd host/kdc.example.com</pre></div></div>

<p>Transfer your <code>/etc/krb5.conf</code> from the KDC server to the client.  Hop onto the client server, install the Kerberos client package and add some host principals:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@client ~]# yum install krb5-workstation
[root@client ~]# kadmin.local
kadmin.local:  addpinc --randkey host/client.example.com
kadmin.local:  ktadd host/kdc.example.com</pre></div></div>

<p>There aren't any daemons on the client side, so the configuration is pretty much wrapped up there for Kerberos.  However, we now need to tell both servers to use Kerberos for auth and your client servers needs to use NIS to get user data.</p>
<ul>
<li>On the KDC:
<ul>
<li>run <code>authconfig-tui</code></li>
<li>choose <b>Use Kerberos</b> from the second column</li>
<li>press <b>Next</b></li>
<li>don't edit the configuration (authconfig got the data from <code>/etc/krb.conf</code>)</li>
<li>press <b>OK</b></li>
</ul>
</li>
<li>On the client:
<ul>
<li>run <code>authconfig-tui</code></li>
<li>choose <b>Use NIS</b> and <b>Use Kerberos</b></li>
<li>press <b>Next</b></li>
<li>enter your NIS domain (EXAMPLE.COM) and NIS server (kdc.example.com or 192.168.250.2)</li>
<li>press <b>Next</b></li>
<li>don't edit the Kerberos configuration (authconfig got the data from <code>/etc/krb.conf</code>)</li>
<li>press <b>OK</b></li>
</ul>
</li>
</ul>
<p><b>Got NIS problems?</b>  If the NIS connection stalls on the client, ensure that you have the iptables rules present on the KDC that we added near the beginning of this guide.  Also, if you forgot to add <b>both</b> hosts to <b>both</b> servers' <code>/etc/hosts</code>, go do that now.</p>
<p>Let's make our test user on the KDC.  <b>Don't add this user to the client</b> -- we'll get the user information via NIS and authenticate via Kerberos shortly.  We'll also rebuild our NIS maps after adding the user:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@kdc ~]# useradd user1
[root@kdc ~]# passwd user1
[root@kdc ~]# make -C /var/yp/</pre></div></div>

<p>On the client, see if you can get the password hash for the user1 account via NIS:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@client ~]# ypcat -d EXAMPLE.COM -h kdc.example.com passwd | grep user1
user1:$1$sUlSTlCv$riK5El3z8N4y.mi5Fe3Q60:500:500::/home/user1:/bin/bash</pre></div></div>

<p>You can see why NIS isn't a good way to authenticate users.  Someone could easily pull the hash for any account and brute force the hash on their own server.  Go back to the KDC and lock out the user account:</p>
<pre>
[root@kdc ~]# usermod -p '!!' user1
</pre>
<p>Go back to the client and try to pull the password hash now:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@client ~]# ypcat -d EXAMPLE.COM -h kdc.example.com passwd | grep user1
user1:!!:500:500::/home/user1:/bin/bash</pre></div></div>

<p>On the plus side, the user's password hash is now gone.  On the negative side, you've just prevented this user from logging in locally or via NIS. Don't worry, the user can log in via Kerberos now.  Let's prepare a home directory on the client for the user:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@client ~]# mkdir /home/user1
[root@client ~]# cp -av /etc/skel/.bash* /home/user1/
[root@client ~]# chown -R user1:user1 /home/user1/</pre></div></div>

<p>Note: In a real-world scenario, you'd probably want to export this user's home directory via NFS so they didn't get a different home directory on every server.</p>
<p>While you're still on the client, try to log into the client via the user.  Use the password that you used when you created the user1 principal on the KDC.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@client ~]# ssh user1@localhost
user1@localhost's password:
[user1@client ~]$ whoami
user1</pre></div></div>

<p>List your Kerberos tickets and you should see one for your user principal:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[user1@client ~]$ klist
Ticket cache: FILE:/tmp/krb5cc_500_fCKPnZ
Default principal: user1@EXAMPLE.COM
&nbsp;
Valid starting     Expires            Service principal
02/05/12 14:18:53  02/06/12 00:18:53  krbtgt/EXAMPLE.COM@EXAMPLE.COM
	renew until 02/05/12 14:18:53</pre></div></div>

<p>Your KDC should have a couple of lines in its <code>/var/log/krb5kdc.log</code> showing the authentication:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">Feb 05 14:18:53 kdc.example.com krb5kdc[4694](info): AS_REQ (12 etypes {18 17 16 23 1 3 2 11 10 15 12 13}) 192.168.250.3: ISSUE: authtime 1328473133, etypes {rep=16 tkt=16 ses=16}, user1@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM
Feb 05 14:18:53 kdc.example.com krb5kdc[4694](info): TGS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.250.3: ISSUE: authtime 1328473133, etypes {rep=16 tkt=18 ses=18}, user1@EXAMPLE.COM for host/client.example.com@EXAMPLE.COM</pre></div></div>

<p>The first line shows that the client asked for a Authentication Server Request (AS_REQ) and the second line shows that the client then asked for a Ticket Granting Server Request (TGS_REQ).  In layman's terms, the client first asked for a ticket-granting ticket (TGT) so it could authenticate to other services.  When it actually tried to log in via <code>ssh</code> it asked for a ticket (and received it).</p>
<p><b>YOU JUST CONFIGURED KERBEROS!</b></p>
<p>From here, the sky's the limit.  Another popular implementation of Kerberos is encrypted NFSv4.  You can even go crazy and use <a href="http://wiki.centos.org/HowTos/HttpKerberosAuth">Kerberos with apache</a>.</p>
<p>Let me know if you have any questions about this post or if you spot any errors.  With this many steps, there's bound to be a typo or two in this guide.  Keep in mind that there are some obvious spots for network-level and service-level security improvements.  This guide was intended to give you the basics and it doesn't cover all of the security implications involved with a Kerberos implementation.</p>
<p><a href="http://rackerhacker.com/2012/02/05/the-kerberos-haters-guide-to-installing-kerberos/">The Kerberos-hater's guide to installing Kerberos</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2012/02/05/the-kerberos-haters-guide-to-installing-kerberos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>You might see me on CNN Money soon</title>
		<link>http://rackerhacker.com/2011/09/02/you-might-see-me-on-cnn-money-soon/</link>
		<comments>http://rackerhacker.com/2011/09/02/you-might-see-me-on-cnn-money-soon/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 15:40:42 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=2503</guid>
		<description><![CDATA[A videographer from CNN Money stopped by the office today to ask about what makes Rackspace a unique place to work. As soon as we got started, everyone started to make as many distractions as they could to crack me up. Very few succeeded. Thanks to @pinojo for snapping the photo. You might see me [...]<p><a href="http://rackerhacker.com/2011/09/02/you-might-see-me-on-cnn-money-soon/">You might see me on CNN Money soon</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://rackerhacker.com/wp-content/uploads/2011/09/cnnmoneyinterview.jpg"><img src="http://rackerhacker.com/wp-content/uploads/2011/09/cnnmoneyinterview-300x224.jpg" alt="" title="cnnmoneyinterview" width="300" height="224" class="alignleft size-medium wp-image-2504" /></a>A videographer from CNN Money stopped by the office today to ask about what makes Rackspace a unique place to work.  As soon as we got started, everyone started to make as many distractions as they could to crack me up.  Very few succeeded. <img src='http://rackerhacker.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Thanks to <a href="http://twitter.com/pinojo">@pinojo</a> for snapping the photo.<br />
<br style="clear:both;" /></p>
<p><a href="http://rackerhacker.com/2011/09/02/you-might-see-me-on-cnn-money-soon/">You might see me on CNN Money soon</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2011/09/02/you-might-see-me-on-cnn-money-soon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xen Summit 2011: My Takeways</title>
		<link>http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/</link>
		<comments>http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 12:58:54 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[glusterfs]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=2391</guid>
		<description><![CDATA[Quite a few people who couldn't make it to Xen Summit 2011 this year asked me to write a post summarizing my takeaways from the event. I'm not generally one to back down from peer pressure, so read on if you're interested about the discussions at this year's Summit. The feeling I had at last [...]<p><a href="http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/">Xen Summit 2011: My Takeways</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://rackerhacker.com/wp-content/uploads/2011/08/xensummit_na11_small.png"><img src="http://rackerhacker.com/wp-content/uploads/2011/08/xensummit_na11_small-300x81.png" alt="Xen Summit 2011 Logo" title="Xen Summit 2011 Logo" width="300" height="81" class="alignright size-medium wp-image-2396" /></a>Quite a few people who couldn't make it to <a href="http://xen.org/community/xensummit.html">Xen Summit 2011</a> this year asked me to write a post summarizing my takeaways from the event.  I'm not generally one to back down from peer pressure, so read on if you're interested about the discussions at this year's Summit.</p>
<p>The feeling I had at last year's summit is that Xen was on the verge of losing traction in the market.  Very few distributions still had Xen support going forward and much of the discussion was around the lack of dom0 support in upstream Linux kernels.  Distribution vendors were hesitant to drag patches forward into modern kernels and this made it much more difficult to get Xen working for many people.</p>
<p><a href="http://rackerhacker.com/wp-content/uploads/2011/08/Photo-Aug-01-5-54-05-PM.jpeg"><img src="http://rackerhacker.com/wp-content/uploads/2011/08/Photo-Aug-01-5-54-05-PM-224x300.jpg" alt="Major at the Golden Gate Bridge" title="Major at the Golden Gate Bridge" width="224" height="300" class="alignleft size-medium wp-image-2404" /></a>This year was quite different.  The number of attendees was up, the <a href="http://www.citrix.com/tv/#videos/4386">venue was much better</a>, and there was an obvious buzz of energy in the room.  As many of the presenters noted, this excitement stemmed from the <a href="http://blog.xen.org/index.php/2011/06/14/linux-3-0-how-did-we-get-initial-domain-dom0-support-there/">upstream dom0 support in Linux 3.0</a>.  This inclusion is a huge win and it helps to drive Xen forward since the developers don't have to worry about dragging patches forward.  They can focus on improving performance, adding features, and tightening security.</p>
<p>Many of the discussions this year focused on security and performance.  Ian Pratt discussed Xen's ability to view memory pages of virtual machines via an API to detect malware running inside the instance.  Memory pages could be identified and marked as not executable or applications could be triggered when a VM attempts to touch a particular memory page.  Also, the whole VM could be frozen if needed.</p>
<p>There's also a big push to bring code out of the dom0 and push it into utility VM's.  Driver domains could manage the network or I/O infrastructure and this would further reduce the amount of privileged code actively running in dom0.  There is already very little code required for the Xen hypervisor itself (much much less than the Linux kernel -- I'm looking at you, <a href="http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine">KVM</a>) and this reduces the attack surface for potential compromises of the hypervisor.  Some projects even aim to restart driver domains multiple times per minute to ensure that any malicious code injected into those virtual machines can't exist for long periods.</p>
<p>Pradeep Vincent from <a href="http://aws.amazon.com/">Amazon</a> talked about how Amazon uses Xen and the pain points they have with its current architecture.  Much of his discussion was around scaling problems (and we see many of the same issues at <a href="http://www.rackspace.com">Rackspace</a>).  Higher performance could easily be gained by multi-threaded operations in dom0 when attaching block devices and creating virtual network interfaces.  He also saw some areas for performance gains in the pvops I/O code.</p>
<p>Quite a few of the talks centered on the ARM architecture and what Xen is able to do on those systems after <a href="http://www.xen.org/products/xen_arm.html">Samsung published their port in 2008</a>.  HVM is on the way for ARM and it might even show up in Xen 4.2.  Some demos of Xen on mobile phones from Samsung were amazing.  They showed how an attacker could compromise the web browser on the phone with a keylogger, but that application was running in a VM.  Once the user switched back to the phone's main menu, the keylogger couldn't access the keystrokes any longer.  After that, a simple close of the browser killed the VM and destroyed the malicious code.</p>
<p>Xen 4.2 should be available in early 2012 and the feature list is staggering.  Improvements to libxenlight, pvops performance (even in HVM), and guest memory sharing should be available with the new release.  Nested virtualization (run a hypervisor inside a hypervisor) is also coming in Xen 4.2 and I'm sure Xzibit will be a huge fan.  This should streamline hypervisor testing, allow for embedded hypervisor options and extend the capabilities of client hypervisors.  Remus should be available in 4.2 as well, but it might be marked as experimental.  OVMF will be added as a BIOS option for UEFI (along with the standard SeaBIOS) and this should allow for Mac OS X guests.  UEFI allows Windows to boot faster since it switches to PV mode sooner and it allows for simpler platform certification for software vendors.</p>
<p><a href="http://rackerhacker.com/wp-content/uploads/2011/08/OpenStackLogo_270x279.jpg"><img src="http://rackerhacker.com/wp-content/uploads/2011/08/OpenStackLogo_270x279.jpg" alt="" title="OpenStackLogo_270x279" width="180" height="195" class="alignright size-full wp-image-2399" /></a>Mike McClurg's presentation on <a href="http://www.xen.org/products/cloudxen.html">XCP</a> was pretty important to me since Rackspace is a big consumer of <a href="http://www.citrix.com/English/ps2/products/product.asp?contentID=683148">XenServer</a>.  If you're not familiar with XCP, it's basically open-source XenServer which runs on bleeding edge (and sometimes unstable) components.  XCP 1.5 and XenServer 6 should be available in November with Xen 4.1 and Linux 2.6.32.  GPU passthrough, up to 1TB RAM, and disaster recovery will be available.  Another goal for the XCP team is to work closely with OpenStack via Project Olympus.  Mike's vision is to have XCP become the configuration of choice for open source clouds.  <a href="http://blog.xen.org/index.php/2011/07/22/project-kronos/">Project Kronos</a> was also extremely interesting.  It's essentially XCP's XenAPI stack running on Debian and Ubuntu.  You'd be able to install either OS on a physical server and run XCP's services on it for a fully OSS hypervisor.</p>
<p>Konrad Wilk gave an update on Linux pvops and it appears there is a shift to get Xen working well on a desktop.  This includes 3D graphics support, S3/hibernate capabilities and various bug fixes.  There's also a push to get PV functionality into HVM and get HVM functionality into PV.  Driver/device domains were discussed again in Patrick Kolp's talk and he had plenty of graphs showing performance changes when regularly restarting device domains.  The performance dips were almost negligible with 10 second restarts and the security gains were significant.</p>
<p>There were several other great presentations on other topics like <a href="http://www.gluster.org/">GlusterFS</a>, <a href="http://nova.openstack.org/">OpenStack Nova</a>, and <a href="http://cgit.freedesktop.org/~ewalsh/linpicker/">Linpicker</a> (from the NSA!).  If these types of things interests you, keep your eyes peeled for Xen Summit 2012 next year.  The <a href="http://weatherspark.com/#!dashboard;q=santa+clara,+ca">weather in the bay area</a> is well worth the trip. <img src='http://rackerhacker.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/">Xen Summit 2011: My Takeways</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2011/08/08/xen-summit-2011-my-takeways/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Do your homework before a technical interview</title>
		<link>http://rackerhacker.com/2011/05/02/do-your-homework-before-a-technical-interview/</link>
		<comments>http://rackerhacker.com/2011/05/02/do-your-homework-before-a-technical-interview/#comments</comments>
		<pubDate>Tue, 03 May 2011 02:05:05 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[general advice]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=2284</guid>
		<description><![CDATA[If you work for a growing company like I do, it's inevitable that you'll have to do your fair share of interviewing. I love it when I leave an interview with a good feeling about the candidate. That "wow, they really nailed it" feeling is always great to have when you need to fill a [...]<p><a href="http://rackerhacker.com/2011/05/02/do-your-homework-before-a-technical-interview/">Do your homework before a technical interview</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>If you work for a growing company like I do, it's inevitable that you'll have to do your fair share of interviewing.  I love it when I leave an interview with a good feeling about the candidate.  That "wow, they really nailed it" feeling is always great to have when you need to fill a critical role.  Most often, the successful candidates are the ones who do their homework before they ever walk in our office doors.</p>
<p>What do I mean by "do your homework?"  Here are some bullet points to get you on your way:</p>
<p><strong>Know what the company does.</strong><br />
This one is critical and it should be easy.  However, make sure to do thorough research first.  For example, if you interviewed at a company like Apple, becoming familiar with their hardware lineup should be a no-brainer.  That's their bread and butter.  On the other hand, remember that Apple isn't solely a hardware company; they write lots of software, provide online productivity services, and they distribute music, movies, and other entertainment media.</p>
<p>While you're doing this research, try to discover what makes the company unique.  Sure, <a href="http://www.apple.com/">Apple</a> sells laptops and desktops (just like a lot of other companies), but what makes their particular products unique?  Is there something unique about the way they provide their services?  Have they cornered a certain market segment by providing a combination of products and services to that group of consumers?  Answering these simple questions may help you tip the scales in the interview process.</p>
<p><strong>Try one or more of the company's products.</strong><br />
The feasibility of trying a company's product before an interview could be debatable.  For example, if you wanted to interview at <a href="http://cray.com/">Cray</a>, you probably don't need to drop $2M USD on your own <a href="http://www.cray.com/Products/XE/Systems.aspx">XE6</a> before walking in the door.  For companies where the barrier to entry for purchasing a product is much lower, such as cloud computing companies, there's no excuse to not try things out first.  Amazon has a <a href="http://aws.amazon.com/free/">free tier</a> and a Rackspace Cloud Server could cost you <a href="http://www.rackspace.com/cloud/cloud_hosting_products/servers/pricing/">as little as $2.50 per week</a>.</p>
<p>It's concerning when I talk to an applicant about a job working with Rackspace's Cloud Servers and they haven't tried out any cloud products from any provider.  How can I take a candidate's interest seriously when they haven't shown interest in any portion of my group's market segment?</p>
<p><strong>Know what the company's competitors do.</strong><br />
It's often more impressive to an interviewer to know what a company's competitors are doing and how it compares to what that company is doing in the market.  For example, if you can walk into an interview and say "I like the way your company makes these widgets, but Company X is able to make them more lightweight, and I value that more than the added customer service your company offers."  This shows the interviewer that you're familiar with various products in the segment and you've used them enough to understand what makes them different.</p>
<p>Some of you might be thinking: "Why would I say something like that to the interviewer? They'll think I'm being too negative about their product."  That's always possible, but you can guard against it by wording everything carefully.  Make sure you have a solid reason for the way you feel that is based on something substantial (usability, price, features, etc).  I've had candidates talk for five to ten minutes about why one of our product is inferior to one of our competitors' products and I was very impressed.</p>
<p>One quick gotcha: your interviewer might turn your comments back on you and ask you how you would improve one of the inferior products (I do this regularly).  Make sure that you're prepared for that question and consider offering up a suggestion before the question is presented to you.</p>
<p><strong>Can't get the information you need? Ask!</strong><br />
When you reach the end of the interview and the interviewer asks if you have questions, be sure to ask any questions about topics you had trouble researching.  Going back to the Cray example, compare what you know about an XE6 to servers you've used before.  You could mention a problem you had with the density of your previous configurations and ask how they overcame that hurdle at Cray.  If it's a proprietary trade secret, you might not get an answer, but they'll know that you did some serious research ahead of time.  If they can share the answer, they might still be impressed, and you might end up learning something you didn't know prior to the interview.</p>
<p><strong>Conclusion</strong><br />
In summary, doing your homework and learning about the company shows the interviewers that you not only have what it takes to do the work, but that the work interests you as well.  I've interviewed folks in the past who lacked on technical ability but had plenty of desire and drive.  More often than not, those people are now Rackers.</p>
<p><a href="http://rackerhacker.com/2011/05/02/do-your-homework-before-a-technical-interview/">Do your homework before a technical interview</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2011/05/02/do-your-homework-before-a-technical-interview/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How to survive as a technical manager</title>
		<link>http://rackerhacker.com/2011/03/29/how-to-survive-as-a-technical-manager/</link>
		<comments>http://rackerhacker.com/2011/03/29/how-to-survive-as-a-technical-manager/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 14:25:59 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[general advice]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=2234</guid>
		<description><![CDATA[Anyone who says management is easy obviously hasn't done it for very long or they're not doing their job very well. Coordinating the activities and personal development of each person on the team is always a challenge and it introduces an unbelievable number of variables into an already difficult job. However, watching members of the [...]<p><a href="http://rackerhacker.com/2011/03/29/how-to-survive-as-a-technical-manager/">How to survive as a technical manager</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Anyone who says management is easy obviously hasn't done it for very long or they're not doing their job very well.  Coordinating the activities and personal development of each person on the team is always a challenge and it introduces an unbelievable number of variables into an already difficult job.  However, watching members of the team grow and succeed in their work is tremendously rewarding.</p>
<p>Taking on the job of a technical manager presents its own unique challenges.  It's easy for a technical manager to lose focus and get down in the weeds of daily work.  It's also very difficult to let go of the reins and resign to the fact that the direct involvement in technical work will have to be reduced.</p>
<p>These problems resonate with me as I've recently taken on another technical management role at Rackspace.  My previous experience involved managing a team of technicians at various skill levels who were working on customer environments made up of dedicated servers and network equipment.  The current position has quite a few differences.  I'm now managing a small group of highly technical and extremely dedicated Linux engineers and we're responsible for maintaining the systems and networks which run the Cloud Servers product.</p>
<p>One of my goals of this blog is to help others learn things much more easily than I have.  Here are some things I've had to learn the hard way while working as a technical manager:</p>
<p><strong>Get out of the mindset of an individual contributor</strong><br />
When you're a system administrator on a team (or by yourself), you're often judged on your personal job performance.  Team interaction is important for some companies (especially at Rackspace), but not for others.  Breaking the mindset of being an individual contributor was extremely difficult for me to do.</p>
<p>Managers are judged on the success of the team as a whole.  Encouraging your team members to succeed and playing an active role in their personal and professional development is key.  Each time you find yourself buried in the weeds of a problem rather than facilitating your team's work on the problem is when your performance as a manager will drop.  If you do it more often, you may find that your team members aren't getting the support they need.</p>
<p><strong>Don't be afraid of your team becoming smarter than you</strong><br />
One of the biggest things I've heard from my team is: "Aren't you worried about losing your technical skills when you're a manager?"  My answer: "Of course."  Anyone who has technical abilities will always be afraid of watching those abilities wane over time.  However, as your team becomes stronger, you should be able to continue learning not through your own work, but through theirs.  When your team members see that you're still interested in learning and you're now able to learn from them, they'll become more energized about their own work.</p>
<p>If you find yourself thinking negatively about a potential job candidate because they're smarter than you, step back and think for a moment.  Put your own ego aside and consider what's best for you, your team, and your company.  Your goal is to build a strong and successful team, not to pad your own ego.  If your managers are judging you (as a technical manager) on your technical ability, then you need to solve that problem first.</p>
<p><strong>Inspire instead of direct</strong><br />
Every manager faces the challenge of working with team members who disagree with a particular company policy or with the direction of their particular infrastructure.  Keep in mind that your team members are probably not intending to be insubordinate and they might have something useful to contribute.</p>
<p>When you find yourself locking horns with your team members, inspire a discussion about the problem.  Break out the disagreement onto a whiteboard and let the team make suggestions for improvements.  Even if the entire discussion leads back to the fact that the original problem is inevitable, fostering that feedback loop is critical.  You'll learn more about your team while they find ways to express their opinions and feel empowered.</p>
<p>The really tough part is when your team comes up with an alternative plan and you find yourself presenting to your leadership team.  Always remember to take it seriously and know that you may need to refine the plan many times over before you find something acceptable for your team and the business.</p>
<p><strong>De-stress by staying on task</strong><br />
If you're anything like me, you need some way to keep tabs on action items coming from meetings, e-mails, phone calls, and walk-ups.  I've heard great things about applications like <a href="http://www.omnigroup.com/products/omnifocus/">OmniFocus</a> and <a href="http://culturedcode.com/things/">Things</a>, but I settled on <a href="http://2doapp.com/">2Do</a>.  I really enjoy a strong to-do list which allows me to set priorities, due dates, and write extended notes about a particular task.</p>
<p>The best way to tackle a wall of tasks is to keep them organized into a concise list.  Even if it's a small task, get it into your list so it's on your radar and you won't forget it.  Work through the simple tasks and the high priority ones first but watch out for tasks with due dates.</p>
<p><strong>Conclusion</strong><br />
All of these processes get easier over time and although your job will surely have challenges and pitfalls, the enjoyment will greatly increase.  I feel privileged to lead a team of talented people who work on a complex and ever-expanding product.</p>
<p>Also, I'd like to mention that I'm not an expert on management!  There are probably much better ways to do much of this than I've outlined in this post.  Be sure to share your ideas in the comments section below.</p>
<p><a href="http://rackerhacker.com/2011/03/29/how-to-survive-as-a-technical-manager/">How to survive as a technical manager</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2011/03/29/how-to-survive-as-a-technical-manager/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>FUDCon 2011: Day One</title>
		<link>http://rackerhacker.com/2011/01/30/fudcon-2011-day-one/</link>
		<comments>http://rackerhacker.com/2011/01/30/fudcon-2011-day-one/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 07:33:38 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[boxgrinder]]></category>
		<category><![CDATA[cloudfs]]></category>
		<category><![CDATA[deltacloud]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[fudcon]]></category>
		<category><![CDATA[glusterfs]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=2181</guid>
		<description><![CDATA[The first day of FUDCon 2011 in Tempe is coming to a close tonight and I'm completely exhausted. As promised, I'll try to summarize the day and cover the talks which I attended. The day started out with Jared Smith's "State of Fedora" address. The audio has already been posted on the wiki, but the [...]<p><a href="http://rackerhacker.com/2011/01/30/fudcon-2011-day-one/">FUDCon 2011: Day One</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>The first day of FUDCon 2011 in Tempe is coming to a close tonight and I'm completely exhausted.  <a href="/2011/01/29/gearing-up-for-fudcon-2011/">As promised</a>, I'll try to summarize the day and cover the talks which I attended.</p>
<p>The day started out with <a href="http://fedoraproject.org/wiki/User:Jsmith">Jared Smith's</a> "State of Fedora" address.  The audio has already been <a href="http://fedoraproject.org/w/uploads/4/44/State_of_fedora_tempe_2011.ogg">posted on the wiki</a>, but the speech was very positive overall.  He talked about some of the struggles that have happened in the past and how they'll probably happen again in some form or another.  It was pretty inspirational and you could obviously tell that people in the room were energized by it.</p>
<p>After the address, all of the talks were pitched in <a href="http://en.wikipedia.org/wiki/BarCamp">BarCamp format</a>.  It was a very efficient and entertaining way to create a schedule for the conference.  Everyone had 15-20 seconds to present their talk and then they had to rush outside to post their topic on the wall.  We all had the opportunity to go outside and vote for the talks that sounded interesting.  Once the votes were tallied, the schedule was set and the conference was fully underway.</p>
<p>The first talk for me was about <a href="http://twitter.com/marekgoldmann">Marek Goldmann's</a> <a href="http://www.jboss.org/boxgrinder.html">BoxGrinder</a>. <em>(Note: If you Google for BoxGrinder, make sure that you enter it as a single word. You'll get some wild unrelated results if you use two words.)</em>  In short, BoxGrinder gives you the ability to have a <a href="http://fedoraproject.org/wiki/Anaconda/Kickstart">kickstart</a>-ish method for automatically building images for virtual machine environments.  It's completely <a href="http://community.jboss.org/wiki/BoxGrinderBuildPlugins">plugin-based</a>, so you can have different platform and delivery plugins depending on where your VM needs to be deployed.  For example, you could deploy a VM with BoxGrinder that is in a format for VMWare (platform) and is delivered to the target server via SFTP (delivery).  The public cloud plugins are only compatible with Amazon's products, but I'm eager to change that during one of the upcoming hackfests.</p>
<p>The <a href="http://www.osrg.net/sheepdog/">Sheepdog</a> talk started up right after lunch and although it was interesting, I think it left most people with quite a few questions when it was over.  However, I think people are generally apprehensive when anyone tries to do anything innovative with storage.  Losing data due to a bug is a big concern and many of the questions went deeper into data safety than performance and functionality.</p>
<p>Next up was <a href="http://fedoraproject.org/wiki/Python_in_Fedora_13">Dave Malcolm's</a> talk about the different implementations of python.  This was definitely an eye-opening talk for my coworker and I.  Dave covered CPython, Jython, PyPy and various other implementations and compared their advantages and disadvantages.  I'm still pretty new to Python (I'm clutching on to ruby, PHP and perl still), but this talk really had me thinking about which implementations are best for a particular environment or task.  It was quite a bit of fun to learn about some of the deep underpinnings of Python and how they differ depending on the specific implementation.</p>
<p><a href="http://pl.atyp.us/">Jeff Darcy's</a> talk about <a href="http://fedoraproject.org/wiki/Features/CloudFS">CloudFS</a> was very intriguing.  I've been a fan of <a href="http://www.gluster.org/">GlusterFS</a> recently, but I eventually moved away due to a lack of enterprise features and degrading performance.  Jeff is working to add in encryption and authentication without rewriting the filesystem itself.  There are quite a few tricky problems involved in the encryption portion due to partial writes and general security during the handshake process.  CloudFS could potentially be a network filesystem which could be shared by multiple tenants with their own individual namespaces and segregated UID's.  This could be a big win for providers as they could offer up large amounts of storage in an organized fashion without too many management headaches.</p>
<p>We wrapped up the day of talks with <a href="http://clalance.blogspot.com/">Chris Lalancette's</a> presentation about <a href="http://incubator.apache.org/deltacloud/">Deltacloud</a>.  In short, it's a bag of daemons that allow you to manage multiple public or private clouds.  Everything from image management to provisioning are included in the project.  Questions were raised about whether another application was needed since vendor-specific libraries are abundant and libcloud offers many of the same features in a simpler package.</p>
<p>Tonight's social event was FUDPub at ASU's Memoral Union building.  The food and drinks were excellent (thanks to <a href="http://rackspace.com/">Rackspace</a>!) and it was a great opportunity to relax and talk with other Fedora users and developers.  We had the opportunity to meet people from around the world while playing round after round of bowling and billiards.  The discussions were extremely valuable, but as I said before, it was quite tiring.</p>
<p>I've compiled the FUDCon photos I've taken into a <a href="http://www.flickr.com/photos/texas1emt/sets/72157625935659726/">Flickr photo set</a>.</p>
<p>That's the end of today's summary.  I'll try to keep this going tomorrow as well.  Thanks for reading!</p>
<p><a href="http://rackerhacker.com/2011/01/30/fudcon-2011-day-one/">FUDCon 2011: Day One</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2011/01/30/fudcon-2011-day-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://fedoraproject.org/w/uploads/4/44/State_of_fedora_tempe_2011.ogg" length="8032960" type="audio/ogg" />
		</item>
		<item>
		<title>Accessing Rackspace Cloud Servers and Slicehost slices privately via OpenVPN</title>
		<link>http://rackerhacker.com/2010/11/16/accessing-rackspace-cloud-servers-and-slicehost-slices-privately-via-openvpn/</link>
		<comments>http://rackerhacker.com/2010/11/16/accessing-rackspace-cloud-servers-and-slicehost-slices-privately-via-openvpn/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 13:52:53 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[networkmanager]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[slicehost]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1889</guid>
		<description><![CDATA[A recent blog post from Mixpanel inspired me to write a quick how-to for Fedora users on using OpenVPN to talk to instances privately in the Rackspace Cloud. The diagram at the right gives an idea of what this guide will allow you to accomplish. Consider a situation where you want to talk to the [...]<p><a href="http://rackerhacker.com/2010/11/16/accessing-rackspace-cloud-servers-and-slicehost-slices-privately-via-openvpn/">Accessing Rackspace Cloud Servers and Slicehost slices privately via OpenVPN</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_1897" class="wp-caption alignright" style="width: 298px"><a href="http://rackerhacker.com/wp-content/uploads/2010/11/openvpn-to-rackspace-cloud-diagram.png"><img src="http://rackerhacker.com/wp-content/uploads/2010/11/openvpn-to-rackspace-cloud-diagram.png" alt="Diagram: OpenVPN to Rackspace Cloud Servers and Slicehost" title="Diagram: OpenVPN to Rackspace Cloud Servers and Slicehost" width="288" height="248" class="size-full wp-image-1897" /></a><p class="wp-caption-text">Diagram: OpenVPN to Rackspace Cloud Servers and Slicehost</p></div><br />
A recent <a href="http://code.mixpanel.com/openvpn-in-the-rackspace-cloud/">blog post from Mixpanel</a> inspired me to write a quick how-to for Fedora users on using OpenVPN to talk to instances privately in the Rackspace Cloud.</p>
<p>The diagram at the right gives an idea of what this guide will allow you to accomplish.  Consider a situation where you want to talk to the MySQL installation on db1 directly without requiring extra ssh tunnels or MySQL over SSL via the public network.  If you tunnel into one of your instances, you can utilize the private network to talk between your instances very easily.</p>
<p>There's one important thing to keep in mind here: even though you'll be utilizing the private network between your tunnel endpoint and your other instances, your traffic will still traverse the public network.  That means that the instance with your tunnel endpoint will still get billed for the traffic flowing through your tunnel.</p>
<p>You'll only need the openvpn package on the server side:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">yum -y install openvpn</pre></div></div>

<p>Throw down this simple configuration file into /etc/openvpn/server.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">port 1194
proto tcp
dev tun
persist-key
persist-tun
&nbsp;
server 10.66.66.0 255.255.255.0
ifconfig-pool-persist ipp.txt
&nbsp;
#push &quot;route 10.0.0.0 255.0.0.0&quot;
push &quot;route 10.176.0.0 255.248.0.0&quot;
keepalive 10 120
&nbsp;
ca      /etc/openvpn/my_certificate_authority.pem
cert    /home/major/vpn_server_cert.pem
key     /home/major/vpn_server_key.pem
dh      /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
&nbsp;
status log/openvpn-status.log
verb 3</pre></div></div>

<p>Here's a bit of explanation for some things you may want to configure:</p>
<ul>
<li><code>push</code> - These are the routes that will be sent over the VPN that are pushed to the clients.  If you don't use any IP addresses in the 10.0.0.0/8 network block in your office, you can probably use the commented out line above.  However, you may want to be more specific with the routes if you happen to use any 10.0.0.0/8 space in your office.</li>
<li><code>server</code> - These are the IP addresses that the VPN server will assign and NAT out through the private interface.  I've used a /24 above, but you may want to adjust the netmask if you have a lot of users making tunnels to your VPN endpoint.</li>
<li><code>ca, cert, key</code> - You will need to create a certificate authority as well as a certificate/key pair for your VPN endpoint.  I already use <a href="http://simpleauthority.com/">SimpleAuthority</a> on my Mac to manage some other CA's and certificates, but you can use <a href="http://openvpn.net/index.php/open-source/documentation/miscellaneous/77-rsa-key-management.html">openvpn's easy-rsa</a> scripts if you wish.  They are already included with the openvpn installation.</li>
</ul>
<p>Build your Diffie-Hellman parameters file:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">cd /etc/openvpn/easy-rsa/2.0/ &amp;&amp; ./build-dh</pre></div></div>

<p>Tell iptables that you want to NAT your VPN endpoint traffic out to all 10.x.x.x IP addresses on the private network:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j MASQUERADE</pre></div></div>

<p>The last step on the server side is to ensure that the kernel will forward packets from the VPN endpoint out through the private interface.  Ensure that your /etc/sysctl.conf looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;"># Controls IP packet forwarding
net.ipv4.ip_forward = 1</pre></div></div>

<p>Adjusting your sysctl.conf ensures that forwarding is enabled at boot time, but you'll need to enable it on your VPN endpoint right now:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">echo 1 &gt; /proc/sys/net/ipv4/ip_forward</pre></div></div>

<p>Start the openvpn server:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">/etc/init.d/openvpn start</pre></div></div>

<p>If all is well, you should see openvpn listening on port 1194:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@lb2 ~]# netstat -ntlp | grep openvpn
tcp        0      0 0.0.0.0:1194      0.0.0.0:*         LISTEN      2020/openvpn</pre></div></div>

<p>You'll need to configure a client to talk to your VPN now.  This involves three steps: creating a new certificate/key pair for the client (same procedure as making your server certificates), signing the client's certificate with your CA certificate (same one that you used above to sign your server certificates), and then configuring your client application to access the VPN.</p>
<p>There are <strong>many</strong> openvpn clients out there to choose from.</p>
<p>If you're using a Linux desktop, you may want to consider using the <a href="http://geraner.typepad.com/blog/2009/10/how-to-create-an-openvpn-connect-in-linux-version-2.html">built-in VPN functionality in NetworkManager</a>.  For Mac users, I'd highly recommend using <a href="http://www.thesparklabs.com/viscosity/">Viscosity</a> ($9), but there's also <a href="http://code.google.com/p/tunnelblick/">tunnelblick</a> (free).</p>
<p><a href="http://rackerhacker.com/2010/11/16/accessing-rackspace-cloud-servers-and-slicehost-slices-privately-via-openvpn/">Accessing Rackspace Cloud Servers and Slicehost slices privately via OpenVPN</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/11/16/accessing-rackspace-cloud-servers-and-slicehost-slices-privately-via-openvpn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>400th post: Looking back at where this blog started</title>
		<link>http://rackerhacker.com/2010/11/13/400th-post-looking-back-at-where-this-blog-started/</link>
		<comments>http://rackerhacker.com/2010/11/13/400th-post-looking-back-at-where-this-blog-started/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 02:06:00 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[general advice]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1871</guid>
		<description><![CDATA[Last night's post about my charity drive for the Movember Foundation was the 400th post on my blog! I started posting on rackerhacker.com way back in the spring of 2007 shortly after I was hired by Rackspace in December of 2006. My main purpose for the blog at the beginning was to create a place [...]<p><a href="http://rackerhacker.com/2010/11/13/400th-post-looking-back-at-where-this-blog-started/">400th post: Looking back at where this blog started</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Last night's <a href="/2010/11/12/raising-money-for-prostate-cancer-research-and-survivor-support/">post</a> about my charity drive for the <a href="http://us.movember.com/">Movember Foundation</a> was the 400th post on my blog!  I started posting on rackerhacker.com way back in the spring of 2007 shortly after I was hired by <a href="http://rackspace.com/">Rackspace</a> in December of 2006.</p>
<p>My main purpose for the blog at the beginning was to create a place where I could write quick articles about problems I found and how to fix them.  Most of the people around me were using their own handy systems to store notes (Stickies on the Mac, Tomboy notes on Linux, or just simple text files), but they weren't able to share them easily.  I wanted a way to write up a solution and instantly share it with someone.  I also wanted that person to be able to pass along the fix to someone else if they wanted.</p>
<p>Needless to say, it took off from there.</p>
<p>It's important to note that I couldn't have done this by myself.  I've learned some efficient strategies for managing large systems and troubleshooting complex issues from my peers, my managers, and colleagues outside of Rackspace.  There have been many triumphs and there have been quite a few failures.  </p>
<p>The <em>failures</em> have taught me the most.  I've made some pretty large mistakes and here are a few:</p>
<ul>
<li>inserted data into a MySQL slave in an active replication pair</li>
<li>run a fsck on an online ext3 partition</li>
<li>marked a failed drive online in a hardware RAID array</li>
<li>mangled Plesk installations in ways that you can't comprehend</li>
<li>typed 'reboot' into a terminal and pressed enter, only to realize I was in the wrong terminal</li>
<li>ran UPDATE statements without a WHERE clause in MySQL (well, I only did this one twice)</li>
</ul>
<p>Even after all that, people occasionally tell me that I'm very good at what I do.  I don't know if that's true or not, but I'm glad some people think so!  Many of those folks end up asking me this question:</p>
<blockquote><p>How do I learn how to be a successful Linux systems administrator?</p></blockquote>
<p>My answer is this: Be humble. Always be thirsty for knowledge. Don't be afraid to make mistakes. Love what you do and the people you serve.</p>
<p><a href="http://rackerhacker.com/2010/11/13/400th-post-looking-back-at-where-this-blog-started/">400th post: Looking back at where this blog started</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/11/13/400th-post-looking-back-at-where-this-blog-started/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Upgrading Fedora 13 to Fedora 14 on Slicehost and Rackspace Cloud Servers</title>
		<link>http://rackerhacker.com/2010/11/03/upgrading-fedora-13-to-fedora-14-on-slicehost-and-rackspace-cloud-servers/</link>
		<comments>http://rackerhacker.com/2010/11/03/upgrading-fedora-13-to-fedora-14-on-slicehost-and-rackspace-cloud-servers/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 20:02:45 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[cloud servers]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[slicehost]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[xen]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1840</guid>
		<description><![CDATA[On most systems, using Fedora's preupgrade package is the most reliable way to update to the next Fedora release. However, this isn't the case with Slicehost and Rackspace Cloud Servers. Here are the steps for an upgrade from Fedora 13 to Fedora 14 via yum: yum -y upgrade wget http://mirror.rackspace.com/fedora/releases/14/Fedora/x86_64/os/Packages/fedora-release-14-1.noarch.rpm rpm -Uvh fedora-release-14-1.noarch.rpm yum -y [...]<p><a href="http://rackerhacker.com/2010/11/03/upgrading-fedora-13-to-fedora-14-on-slicehost-and-rackspace-cloud-servers/">Upgrading Fedora 13 to Fedora 14 on Slicehost and Rackspace Cloud Servers</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>On most systems, using Fedora's <a href="http://fedoraproject.org/wiki/PreUpgrade">preupgrade</a> package is the most reliable way to update to the next Fedora release.  However, this isn't the case with Slicehost and Rackspace Cloud Servers.</p>
<p>Here are the steps for an upgrade from Fedora 13 to Fedora 14 via yum:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">yum -y upgrade
wget http://mirror.rackspace.com/fedora/releases/14/Fedora/x86_64/os/Packages/fedora-release-14-1.noarch.rpm
rpm -Uvh fedora-release-14-1.noarch.rpm
yum -y install yum
yum -y upgrade</pre></div></div>

<p>If you happen to be upgrading a 32-bit instance on Slicehost, simply replace <code>x86_64</code> with <code>i386</code> in the url shown above.</p>
<p><a href="http://rackerhacker.com/2010/11/03/upgrading-fedora-13-to-fedora-14-on-slicehost-and-rackspace-cloud-servers/">Upgrading Fedora 13 to Fedora 14 on Slicehost and Rackspace Cloud Servers</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/11/03/upgrading-fedora-13-to-fedora-14-on-slicehost-and-rackspace-cloud-servers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A simple guide to redundant cloud hosting</title>
		<link>http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/</link>
		<comments>http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 00:41:16 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cloud servers]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[slicehost]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1771</guid>
		<description><![CDATA[Today, on my 28th birthday, I'm finally delivering on a promise to my readers which I made about two months ago. I've written a guide on how to host a web application redundantly in a cloud environment. While it's still a bit of a rough draft, it should be a good starting point for those [...]<p><a href="http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/">A simple guide to redundant cloud hosting</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Today, on my 28th birthday, I'm finally delivering on a promise to my readers which I made about two months ago.  I've <a href="/redundant-cloud-hosting-configuration-guide/">written a guide</a> on how to host a web application redundantly in a cloud environment.  While it's still a bit of a rough draft, it should be a good starting point for those who haven't worked in virtualized environments before.  Also, it may show some of the more experienced systems administrators a new way to do things.</p>
<p>The guide: <a href="/redundant-cloud-hosting-configuration-guide/">Redundant Cloud Hosting Guide</a></p>
<p>As always, if you find anything in the guide that needs improvement, I'm all ears. <img src='http://rackerhacker.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/">A simple guide to redundant cloud hosting</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/08/17/a-simple-guide-to-redundant-cloud-hosting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GlusterFS on the cheap with Rackspace&#039;s Cloud Servers or Slicehost</title>
		<link>http://rackerhacker.com/2010/05/27/glusterfs-on-the-cheap-with-rackspaces-cloud-servers-or-slicehost/</link>
		<comments>http://rackerhacker.com/2010/05/27/glusterfs-on-the-cheap-with-rackspaces-cloud-servers-or-slicehost/#comments</comments>
		<pubDate>Fri, 28 May 2010 00:34:10 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[glusterfs]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1464</guid>
		<description><![CDATA[NOTE: This post is out of date and is relevant only for GlusterFS 2.x. High availability is certainly not a new concept, but if there's one thing that frustrates me with high availability VM setups, it's storage. If you don't mind going active-passive, you can set up DRBD, toss your favorite filesystem on it, and [...]<p><a href="http://rackerhacker.com/2010/05/27/glusterfs-on-the-cheap-with-rackspaces-cloud-servers-or-slicehost/">GlusterFS on the cheap with Rackspace's Cloud Servers or Slicehost</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><em><b style="color: red">NOTE:</b> This post is out of date and is relevant only for GlusterFS 2.x.</em></p>
<hr />
High availability is certainly not a new concept, but if there's one thing that frustrates me with high availability VM setups, it's storage.  If you don't mind going active-passive, you can set up <a href="http://en.wikipedia.org/wiki/Drbd">DRBD</a>, toss your favorite filesystem on it, and you're all set.</p>
<p>If you want to go active-active, or if you want multiple nodes active at the same time, you need to use a clustered filesystem like <a href="http://en.wikipedia.org/wiki/Global_File_System">GFS2</a>, <a href="http://en.wikipedia.org/wiki/OCFS">OCFS2</a> or <a href="http://en.wikipedia.org/wiki/Lustre_(file_system)">Lustre</a>.  These are certainly good options to consider but they're not trivial to implement.  They usually rely on additional systems and scripts to provide reliable <a href="http://en.wikipedia.org/wiki/Fencing_(computing)">fencing</a> and <a href="http://en.wikipedia.org/wiki/STONITH">STONITH</a> capabilities.</p>
<p>What about the rest of us who want multiple active VM's with simple replicated storage that doesn't require any additional elaborate systems?  This is where <a href="http://en.wikipedia.org/wiki/GlusterFS">GlusterFS</a> really shines.  GlusterFS can ride on top of whichever filesystem you prefer, and that's a huge win for those who want a simple solution.  However, that means that it has to use <a href="http://en.wikipedia.org/wiki/Filesystem_in_Userspace">fuse</a>, and that will limit your performance.</p>
<p><strong>Let's get this thing started!</strong></p>
<p>Consider a situation where you want to run a WordPress blog on two VM's with load balancers out front.  You'll probably want to use GlusterFS's replicated volume mode (RAID 1-ish) so that the same files are on both nodes all of the time.  To get started, build two small Slicehost slices or Rackspace Cloud Servers.  I'll be using Fedora 13 in this example, but the instructions for other distributions should be very similar.</p>
<p>First things first -- be sure to set a new root password and update all of the packages on the system.  This should go without saying, but it's important to remember.  We can clear out the default iptables ruleset since we will make a customized set later:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;"># iptables -F
# /etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:        [  OK  ]</pre></div></div>

<p>GlusterFS communicates over the network, so we will want to ensure that traffic only moves over the private network between the instances.  We will need to add the private IP's and a special hostname for each instance to <code>/etc/hosts</code> on both instances.  I'll call mine <code>gluster1</code> and <code>gluster2</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">10.xx.xx.xx gluster1
10.xx.xx.xx gluster2</pre></div></div>

<p>You're now ready to install the required packages on both instances:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">yum install glusterfs-client glusterfs-server glusterfs-common glusterfs-devel</pre></div></div>

<p>Make the directories for the GlusterFS volumes on each instance:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">mkdir -p /export/store1</pre></div></div>

<p>We're ready to make the configuration files for our storage volumes.  Since we want the same files on each instance, we will use the <code>--raid 1</code> option.  <strong>This only needs to be run on the first node:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;"># glusterfs-volgen --name store1 --raid 1 gluster1:/export/store1 gluster2:/export/store1
Generating server volfiles.. for server 'gluster2'
Generating server volfiles.. for server 'gluster1'
Generating client volfiles.. for transport 'tcp'</pre></div></div>

<p>Once that's done, you'll have four new files:</p>
<ul>
<li><code>booster.fstab</code> - you won't need this file</li>
<li><code>gluster1-store1-export.vol</code> - server-side configuration file for the first instance</li>
<li><code>gluster2-store1-export.vol</code> - server-side configuration file for the second instance</li>
<li><code>store1-tcp.vol</code> - client side configuration file for GlusterFS clients</li>
</ul>
<p>Copy the <code>gluster1-store1-export.vol</code> file to <code>/etc/glusterfs/glusterfsd.vol</code> on your first instance.  Then, copy <code>gluster2-store1-export.vol</code> to <code>/etc/glusterfs/glusterfsd.vol</code> on your second instance.  The <code>store1-tcp.vol</code> should be copied to <code>/etc/glusterfs/glusterfs.vol</code> on both instances.</p>
<p>At this point, you're ready to start the GlusterFS servers on each instance:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">/etc/init.d/glusterfsd start</pre></div></div>

<p>You can now mount the GlusterFS volume on both instances:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">mkdir -p /mnt/glusterfs
glusterfs /mnt/glusterfs/</pre></div></div>

<p>You should now be able to see the new GlusterFS volume in both instances:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;"># df -h /mnt/glusterfs
Filesystem            Size  Used Avail Use% Mounted on
/etc/glusterfs/glusterfs.vol
                      9.4G  831M  8.1G  10% /mnt/glusterfs</pre></div></div>

<p>As a test, you can create a file on your first instance and verify that your second instance can read the data:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">[root@gluster1 ~]# echo &quot;We're testing GlusterFS&quot; &gt; /mnt/glusterfs/test.txt
.....
[root@gluster2 ~]# cat /mnt/glusterfs/test.txt
We're testing GlusterFS</pre></div></div>

<p>If you remove that file on your second instance, it should disappear from your first instance as well.</p>
<p>Obviously, this is a very simple and basic implementation of GlusterFS.  You can increase performance by making dedicated VM's just for serving data and you can adjust the default performance options when you mount a GlusterFS volume.  Limiting access to the GlusterFS servers is also a good idea.</p>
<p>If you want to read more, I'd recommend reading the <a href="http://www.gluster.com/community/documentation/index.php/GlusterFS_Technical_FAQ">GlusterFS Technical FAQ</a> and the <a href="http://www.gluster.com/community/documentation/index.php/GlusterFS_User_Guide">GlusterFS User Guide</a>.</p>
<hr />
<strong>Thank you for your e-mails!</strong> I'll be expanding on this post later with some sample benchmarks and additional tips/tricks, so please stay tuned.</p>
<p><a href="http://rackerhacker.com/2010/05/27/glusterfs-on-the-cheap-with-rackspaces-cloud-servers-or-slicehost/">GlusterFS on the cheap with Rackspace's Cloud Servers or Slicehost</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/05/27/glusterfs-on-the-cheap-with-rackspaces-cloud-servers-or-slicehost/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to sell: a guide for technical people</title>
		<link>http://rackerhacker.com/2010/05/26/how-to-sell-a-guide-for-technical-people/</link>
		<comments>http://rackerhacker.com/2010/05/26/how-to-sell-a-guide-for-technical-people/#comments</comments>
		<pubDate>Thu, 27 May 2010 02:12:39 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[guidance]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[sales]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1445</guid>
		<description><![CDATA[I'll admit it right now: I love engaging customers and learning more about how what we do at Rackspace can help their business or ideas take flight. Talking with customers can be a little nerve-wracking at first since you're not always sure what their experience level is and which products they really need. However, you [...]<p><a href="http://rackerhacker.com/2010/05/26/how-to-sell-a-guide-for-technical-people/">How to sell: a guide for technical people</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I'll admit it right now: I love engaging customers and learning more about how what we do at Rackspace can help their business or ideas take flight.  Talking with customers can be a little nerve-wracking at first since you're not always sure what their experience level is and which products they really need.  However, you can get past that initial nervousness very quickly by getting an idea of what the customer needs and what they've tried already (that didn't work).</p>
<p>You may not have realized it, but I covered the most important part of selling a technical product in the first paragraph without even mentioning the word "sell".  <strong>That was intentional.</strong>  As a technical person, you have an innate ability to interact with customers without needing to actively <em>sell</em> them the product.</p>
<p>Whenever I meet a customer at a conference, trade show, or some other relatively informal event, I try to keep a few things in mind.  I'll share them with you:</p>
<p><strong>Learn why your customers are seeking out your product and what they really need</strong><br />
It's pretty obvious that this step requires more listening than talking.  While the customer is explaining what they need but haven't found, try to keep a running tally in your brain of what technologies are important to them so that you can rank your suggestions for them.  Don't think about which product will work best for them yet -- just keep keep their general requirements in mind.</p>
<p>This is also a good opportunity to relate to what they've told you.  If there's a certain solution that ended up working really well or one that failed miserably, and you're familiar with one of those solutions, tell them briefly about your experiences.  This will re-affirm how the customer feels about that solution and it also shows them that you've been in their shoes before.  They'll also appreciate that you've been listening to their concerns and looking for ways to relate to their unique situation.</p>
<p><strong>Make thoughtful production suggestions and discuss implementation</strong><br />
Some folks might say this is where the selling starts, but if you're doing it correctly, you've been selling your product and your company the whole time.  This is where things can get tricky.  Most technical people I've met will try to avoid being pushy when suggesting a product for a customer to use, and that's a good idea.</p>
<p>You need to do three things: pick the right product (or group of products), explain what needs it meets, and briefly cover some example implementations.  <strong>As a technical person, this is where you really shine.</strong>  Interpreting the customer's needs and turning it into a mini technical sales pitch is a piece of cake when you know the product well and you've implemented it before.</p>
<p>It's great to give a customer multiple options, but it's a bad idea to overwhelm them.  If you find that you're talking a bit too much, there's no harm in offering to talk about details later during a formal meeting.  You can say things like these:</p>
<ul>
<li>"this product will meet all your needs, but if you want to save a little money, you can use this other product like this."</li>
<li>"if you combine these two products, you can meet these needs and save some time, but you can just use one and set it up like this..."</li>
<li>"then later on, if you need to expand, you can start using this product by..."</li>
</ul>
<p><strong>Think about the customer's future growth</strong><br />
Even if you have products that meet your customer's needs, they're going to be concerned about what's going to happen down the road.  What happens when they scale to a level that they can't even comprehend right now?  I don't think any customer would expect you to cover all the bases, but try to think of some basic future-proofing for the customer.  Even if it might involve a product that your company doesn't sell, just mention it.</p>
<p>Of course, there are some things that you shouldn't do:</p>
<ul>
<li>Don't overpromise or push hard about a future product.</li>
<li>Don't feel obligated to know the answer to every question.</li>
<li>Don't use words like "infinite", "forever", or "perfect".</li>
<li>Don't talk about cost constantly.</li>
<li>Don't force a customer to choose a product, take product literature, or take your contact information.</li>
<li>Don't make assumptions about the customer's technical level, needs, or purchasing power.</li>
<li>Don't let it bother you if the customer isn't interested in your product -- it's not personal.</li>
</ul>
<p>And that's about it.  If you follow those three tips and avoid the things you shouldn't do, you'll get the confidence you need to engage the customer and create the beginnings of a relationship with them.</p>
<p><a href="http://rackerhacker.com/2010/05/26/how-to-sell-a-guide-for-technical-people/">How to sell: a guide for technical people</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/05/26/how-to-sell-a-guide-for-technical-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I&#039;m a Racker</title>
		<link>http://rackerhacker.com/2010/03/26/why-im-a-racker/</link>
		<comments>http://rackerhacker.com/2010/03/26/why-im-a-racker/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 13:38:07 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1342</guid>
		<description><![CDATA[I normally try to keep my work-related items separate from this blog, but I felt that I needed to break tradition for a moment.  The new Rackspace Talent site was released a few weeks ago and Michael Long asked me to write a blog post about what it means to be a Racker (that's the [...]<p><a href="http://rackerhacker.com/2010/03/26/why-im-a-racker/">Why I'm a Racker</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://rackblogs.com/talent/rackers/why-im-a-racker/"><img class="alignright size-medium wp-image-1346" title="Why I'm A Racker - Rackspace Talent blog" src="http://rackerhacker.com/wp-content/uploads/2010/03/whyimaracker-rackspacetalent-300x213.jpg" alt="Why I'm A Racker - Rackspace Talent blog" width="300" height="213" /></a>I normally try to keep my work-related items separate from this blog, but I felt that I needed to break tradition for a moment.  The new <a title="Rackspace Talent site" href="http://www.rackertalent.com/">Rackspace Talent</a> site was released a few weeks ago and <a title="Twitter: theredrecruiter" href="http://twitter.com/theredrecruiter">Michael Long</a> asked me to write a blog post about what it means to be a Racker (that's the term we use for employees of Rackspace).</p>
<p>After the post went up, I received as much feedback from people outside of Rackspace as I received from Rackers.  The negative feedback I received was centered around the assertion that the post's content was "fluffed" to make the Rackspace experience seem better than it actually is.  That couldn't be further from the truth.</p>
<p>If you want to make comments on the post, or if you want to know more about working at Rackspace, let me know.  Although I'm not in sales and I'm not in recruiting, I always enjoy talking to people about using Rackspace's services or working for Rackspace.</p>
<p>Here's a link to the post: <a title="Why I'm A Racker - Major Hayden" href="http://www.rackertalent.com/rackers/why-im-a-racker/">Rackspace Talent - Why I'm a Racker</a></p>
<p><a href="http://rackerhacker.com/2010/03/26/why-im-a-racker/">Why I'm a Racker</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/03/26/why-im-a-racker/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Congratulations to RAX</title>
		<link>http://rackerhacker.com/2008/08/12/congratulations-to-rax/</link>
		<comments>http://rackerhacker.com/2008/08/12/congratulations-to-rax/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 15:00:32 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=372</guid>
		<description><![CDATA[It's moments like these that make me proud to be a Racker! In just a year and a half that I've been there, I've seen a lot of great changes and this one is the best. Congratulations to RAX! Congratulations to RAX is a post from: Major Hayden's Racker Hacker blog. Thanks for following the [...]<p><a href="http://rackerhacker.com/2008/08/12/congratulations-to-rax/">Congratulations to RAX</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/texas1emt/2754581569/"><img alt="RAX" src="http://farm4.static.flickr.com/3269/2754581569_b57694b1fa_m.jpg" title="RAX" /></a></p>
<p>It's moments like these that make me proud to be a Racker!  In just a year and a half that I've been there, I've seen a lot of great changes and this one is the best.  Congratulations to <a href="http://finance.google.com/finance?q=NYSE%3ARAX&#038;hl=en">RAX</a>!</p>
<p><a href="http://rackerhacker.com/2008/08/12/congratulations-to-rax/">Congratulations to RAX</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/08/12/congratulations-to-rax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I interviewed at Google and stayed at Rackspace</title>
		<link>http://rackerhacker.com/2008/06/19/my-interview-experience-at-google/</link>
		<comments>http://rackerhacker.com/2008/06/19/my-interview-experience-at-google/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 17:00:10 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=311</guid>
		<description><![CDATA[As some of you might know, I interviewed for a position at Google in April of this year. It wasn't a position that I sought out, but it all came about after I received an e-mail and phone call from a recruiter. Obviously, there's some things I can't talk about with regards to the interview [...]<p><a href="http://rackerhacker.com/2008/06/19/my-interview-experience-at-google/">Why I interviewed at Google and stayed at Rackspace</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>As some of you might know, I interviewed for a position at Google in April of this year.  It wasn't a position that I sought out, but it all came about after I received an e-mail and phone call from a recruiter.  Obviously, there's some things I can't talk about with regards to the interview process, but there's quite a few things that can be said.</p>
<p><strong>How it started</strong><br />
The initial recruiter that I spoke with was a very friendly fellow that didn't seem too technical.  He didn't get into the job description much, but he was interested mostly in whether I wanted to relocate and what type of job I enjoy most.  We ran through a few cursory technical questions and he tried to find out what my skill level was in certain areas.  When it was all said and done, he said I'd be contacted from someone else at Google within a few weeks.</p>
<p>Two weeks later, I received some e-mails, went through [redacted] phone screens (with some pretty intelligent people), and learned more about the position.  The folks from Google that I spoke with ranged from friendly and chatty to very direct and somewhat terse.  Overall, I got the idea that they weren't interested in running a quiz, but they wanted to know how deep my knowledge and understanding was with regards to critical topics relating to the position.  I know this sounds vague, but it's about as much as I can tell you.</p>
<p><strong>The middle</strong><br />
I received a few more e-mails after the phone screens and my recruiter wanted to bring me out to California.  Travel arrangements were made, I flew out to San Jose, and then drove the short drive to Mountain View.  The city and the surrounding areas were a little different than I was used to.  Most of the buildings and structures look as if they were built between 1960 and 1980 and they had a peculiar architecture.  I stayed in the Hotel Avante (which was quite comfortable) and made the short drive to the Googleplex in the morning.</p>
<p>This was about the point where I slapped myself and said <strong>"Holy crap, I'm interviewing at GOOGLE!"</strong></p>
<p>When I arrived, I went into the wrong buildings twice until I found the right one, but some Google employees finally pointed me in the right direction.  I met with my recruiter, who was actually pretty entertaining, and he gave me a run down of how the day would go.  I spent the morning interviewing, and then I joined a Google employee for lunch.  He answered many of my questions about the cost of living, job benefits, and how he liked Google.  When that was over, I went back to interviewing and was escorted out of the building at the end of the day.</p>
<p><strong>Towards the end</strong><br />
I spoke with my recruiter a few more times after the interview for some basic paperwork-related issues, and he worked hard to keep me in the loop on my application status.  There wasn't much of a concern job-wise as I work for one of the <a href="http://www.rackspace.com/">best companies</a> in my industry already.  However, I was getting ready to move to a new home, so I let my recruiter know that I was in a bit of a time crunch.</p>
<p>You'll probably want to know what happened next, but there's not really anything that I'm allowed to say about it!  What I can tell you is that I'm still with the <a href="http://www.rackspace.com/">best company</a> in my industry, and I'm still enjoying it each day.</p>
<p>So I know what you're probably thinking...</p>
<p><strong>Why did you stay at Rackspace?</strong><br />
It's easy to answer this question: I learn something new every day at Rackspace.  Sometimes it's something technical, and sometimes it's something related to managing people or designing technology.  The people that I share this learning opportunity with make it all worthwhile.  I've never worked for a company where my managers cared so much about my personal and technical development.  Also, I've never worked at a company where, as a manager, I'm encouraged to care for my own technicians' personal and technical development.</p>
<p>If you have any more questions about why I love working at Rackspace, please let me know.  I'll be happy to fill you in.</p>
<p><a href="http://rackerhacker.com/2008/06/19/my-interview-experience-at-google/">Why I interviewed at Google and stayed at Rackspace</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/06/19/my-interview-experience-at-google/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

