<?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>My life is virtual... DOT COM &#187; hacking</title>
	<atom:link href="http://my.life-is-virtual.com/tag/hacking/feed/" rel="self" type="application/rss+xml" />
	<link>http://my.life-is-virtual.com</link>
	<description></description>
	<lastBuildDate>Sun, 06 Mar 2011 06:32:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Hacking Tutor, Part 2</title>
		<link>http://my.life-is-virtual.com/2009/06/11/hacking-tutor-part-2/</link>
		<comments>http://my.life-is-virtual.com/2009/06/11/hacking-tutor-part-2/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 21:03:32 +0000</pubDate>
		<dc:creator>jcooper</dc:creator>
				<category><![CDATA[Vaguely Instructional]]></category>
		<category><![CDATA[*nix]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://my.life-is-virtual.com/?p=86</guid>
		<description><![CDATA[Find part one here. Let&#8217;s continue with familiarizing ourselves with how the shell works. In the previous article, we talked about the ls command and using it to list files in a directory. One question I received about this was: &#8230;<p class="read-more"><a href="http://my.life-is-virtual.com/2009/06/11/hacking-tutor-part-2/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Find <a href="http://my.life-is-virtual.com/2009/05/26/hacking-tutor-part-1/">part one here.</a></p>
<p>Let&#8217;s continue with familiarizing ourselves with how the shell works.</p>
<p>In the previous article, we talked about the <span class="mono">ls</span> command and using it to list files in a directory. One question I received about this was: what happens to that list after it&#8217;s printed?</p>
<p>An important thing to keep in mind is that most of the commands we are dealing with at this point <span class="bold">are not interactive</span>. This means that they do their job and then quit. In the case of <span class="mono">ls</span>, the program&#8217;s job is to spit out a list of the current files in the directory, and then it&#8217;s done: we move on to other commands. I&#8217;d liken it to requesting information by mail: you send a letter with your request, and some information is sent back to you. If that information changes in the future, you won&#8217;t know that unless you receive another letter informing you of it.</p>
<p>Let&#8217;s do an experiment to test this principle. In so doing, we will also learn an important Unix concept: <span class="italic">redirection</span>.</p>
<p>Open up your terminal. We&#8217;re going to create a directory to play around in.</p>
<p>We make a directory with the <span class="mono">mkdir</span> program. This name, although abbreviated, should make sense. The <span class="mono">mkdir</span> program needs to know what we want to call our new directory, so we <span class="bold">pass it an argument</span> to give it this information. (If you don&#8217;t remember what &#8220;passing an argument&#8221; means, read the previous article again.) You can call your new directory <span class="italic">almost</span> anything: however, let&#8217;s try to stick to letters and numbers and dashes (including spaces or special characters has some special rules involved that we don&#8217;t want to get into just yet).</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">mkdir testing-ground</pre></div></div>

<p>The above example would make a directory called &#8220;testing-ground&#8221;. Where does it make it? Well remember, in the world of the shell, you are always located somewhere. As we mentioned in the last article, most shells will tell you your current location in the prompt (see <a href="http://forge.life-is-virtual.com/images/terminal.png">this picture</a> for a reminder of where your location is displayed). If we run the <span class="mono">mkdir</span> command as shown above, the &#8220;testing-ground&#8221; directory will be created <span class="italic">inside our current location</span>. If we are in the location &#8220;~/Documents&#8221;, the location (or <span class="italic">path</span>) of our new directory will be &#8220;~/Documents/testing-ground&#8221;.</p>
<p><span style="color: #000080;"><span class="italic">What location do I start in?</span> Upon opening a new terminal, most shells start you in your <span class="italic">home directory</span>. This is a special place that belongs to your user: you own it, and you can create and delete things inside it at will. Though Microsoft Windows actually does now have the concept of a home directory, many people either don&#8217;t use it, or don&#8217;t know they are using it. This is because on a standard Windows system, users and programs don&#8217;t think about <span class="italic">permissions</span>. There&#8217;s nothing stopping you from deleting something important, because you have the permission to do anything you want.</span></p>
<p>On the other hand, on a Unix system like Linux or OS X, if you try to delete a file that is important to the entire system, you will be denied with a stern message. Serves you right.</p>
<p>The &#8220;home directory&#8221; is so common in Unix systems, that shells provide a handy abbreviation for it, so that you don&#8217;t have to type out its full name: <span class="mono">~</span>. If you look at that picture again, you&#8217;ll see my location is &#8220;~/Documents&#8221;&#8211;in other words, I&#8217;m located in the Documents directory inside my home folder.</p>
<p>Alright, so we issued the <span class="mono">mkdir</span> command. Now we need to go inside of it! To do so, we will use the main method of changing our location: <span class="mono">cd</span>. This stands for &#8220;change directory,&#8221; and indeed that is exactly what it does. The <span class="mono">cd</span> program also usually needs to know where we want to go: in this case, we want to go to our newly-made directory, so we pass it an argument with the directory&#8217;s name:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">cd testing-ground</pre></div></div>

<p>We are now in the new directory. Let&#8217;s see what&#8217;s inside it, by doing our familiar <span class="mono">ls</span> command:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">ls -l</pre></div></div>

<p>It tells us that the directory is empty; this should make sense, since we only just created it!</p>
<p>Let&#8217;s put something inside of it. How are we going to do this? Well, we could <span class="bold">copy</span> a file from somewhere else, or we could <span class="bold">move</span> a file from somewhere else, or we could <span class="bold">create</span> a new file altogether.</p>
<p>Let&#8217;s make a new, empty file by doing the following:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">&gt;jordanrules</pre></div></div>

<p>Using a &gt; to make a new file might seem weird. Don&#8217;t worry, we&#8217;ll explain it in a moment.</p>
<p>Let&#8217;s ask our friendly friend <span class="mono">ls</span> to list the files in the directory again, and see if it sees our new file:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">ls -l</pre></div></div>

<p>Sure enough, jordanrules is now showing up!</p>
<p><span class="italic">The echo command.</span> Let&#8217;s take a moment to play with the <span class="mono">echo</span> program. It&#8217;s one of the most simple programs: you tell it something, and it tells you that same thing back! Indeed, it&#8217;s aptly named, since it&#8217;s like talking when there&#8217;s an echo: your echo will repeat exactly what you said. Let&#8217;s try it:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">echo hello</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">echo echo echo echo</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">echo RENEW!</pre></div></div>

<p>Useless? Not at all! <span class="bold">This is the most important part of this article. If you understand nothing else from this rambling, understand the following thing:</span></p>
<p><span class="bold">Commands can be chained together.</span></p>
<p>Let&#8217;s say that one more time, for emphasis:</p>
<p><span class="bold">Commands can be chained together.</span></p>
<p>We are going to do our first &#8220;cool thing&#8221; in the Unix shell now, by chaining the <span class="mono">echo</span> command, which we just played with.</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">echo hello &gt;jordanrules</pre></div></div>

<p>So now we come to what that &gt; sign really means: it&#8217;s one way of chaining commands! What we just did, was chained the result or <span class="italic">output</span> of the <span class="mono">echo</span> command <span class="italic">and put it into the &#8220;jordanrules&#8221; file.</span></p>
<p>Don&#8217;t believe me? Let&#8217;s open the file and check!</p>
<p>There are lots of ways to open a file. Let&#8217;s use the program <span class="mono">less</span> to do it. Type:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">less jordanrules</pre></div></div>

<p>Sure enough, we see that the file now contains the word &#8220;hello&#8221;. <span class="bold">(Press q to get out of the less program)</span></p>
<p>Let&#8217;s do this again, with another phrase:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">echo blah blah blah &gt;jordanrules</pre></div></div>

<p>Now check the file again:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">less jordanrules</pre></div></div>

<p>That&#8217;s interesting! Our old word, &#8220;hello,&#8221; is gone entirely, and the file now only contains &#8220;blah blah blah&#8221;. What if we didn&#8217;t want to <span class="italic">replace</span> the file&#8217;s contents, but just <span class="italic">add</span> to it?</p>
<p>We can use a different chaining <span class="italic">operator</span> for that. (The term &#8220;operator&#8221; comes from math, where operators are things like + and -.) Here&#8217;s an example:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">echo cheerio &gt;&gt;jordanrules</pre></div></div>

<p>Now open the file with <span class="mono">less</span> again:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">less jordanrules</pre></div></div>

<p>Sure enough, the file contains what it did before, plus our new word. Neat, eh?</p>
<p>I know what you&#8217;re thinking. &#8220;What if I wanted to put the phrase &#8216;jordan &gt; you&#8217; in the file?&#8221; Obviously, we can&#8217;t just type <span class="mono">echo jordan &gt; you &gt;jordanrules</span> because the &gt; sign is special! The shell would think we are trying to chain the <span class="mono">echo</span> command into a file called &#8220;you&#8221;. But don&#8217;t worry, the solution is easy:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">echo 'jordan &gt; you' &gt;jordanrules</pre></div></div>

<p>See what we did there? We put the phrase in single-quotes. <span class="bold">In the shell, anything you enclose in single quotes is treated &#8220;literally&#8221;&#8211;this means you can use special symbols etc. in your phrase, and they won&#8217;t be treated specially.</span></p>
<p>For this reason, it&#8217;s a good habit to always put phrases that you give to <span class="mono">echo</span> inside of single-quotes, at least for what we are using it for now.</p>
<p>Anyway, feel free to play around with creating different files, putting stuff in them, making new directories, and moving around with <span class="mono">cd</span>. We&#8217;ll talk more about other commands (and of course, more about chaining) in the next article!</p>
]]></content:encoded>
			<wfw:commentRss>http://my.life-is-virtual.com/2009/06/11/hacking-tutor-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking Tutor, Part 1</title>
		<link>http://my.life-is-virtual.com/2009/05/26/hacking-tutor-part-1/</link>
		<comments>http://my.life-is-virtual.com/2009/05/26/hacking-tutor-part-1/#comments</comments>
		<pubDate>Tue, 26 May 2009 05:50:34 +0000</pubDate>
		<dc:creator>jcooper</dc:creator>
				<category><![CDATA[Vaguely Instructional]]></category>
		<category><![CDATA[*nix]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://my.life-is-virtual.com/?p=74</guid>
		<description><![CDATA[Computers are an amazing thing. Society has pretty much accepted them these days as much as they have washing machines and microwaves. And much like those more primitive devices, to the vast majority of people, computers are magic boxes. This &#8230;<p class="read-more"><a href="http://my.life-is-virtual.com/2009/05/26/hacking-tutor-part-1/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Computers are an amazing thing. Society has pretty much accepted them these days as much as they have washing machines and microwaves. And much like those more primitive devices, to the vast majority of people, computers are magic boxes.</p>
<p>This is how it should be! And as a programmer, it is my job to keep it this way. If we had to know exactly how cars worked to drive them from Point A to Point B, it would take years before we&#8217;d make it to nice restaurants in faraway big cities.</p>
<p>Like cars and many other things in life, however, if one wants to gain more knowledge, control, power, and&#8211;dare I say&#8211;joy out of this magic, digging deeper is essential. I won&#8217;t go into all the practical reasons why this is the case; if you are reading this, I will assume that there is more you want to accomplish with computers. Maybe you want to be able to troubleshoot problems yourself when they come up. Maybe you want to make certain tasks automated, or make something easier for yourself or others. Whatever the reason, learning how to manipulate your computer on a deeper level (henceforth referred to as &#8220;hacking,&#8221; which is what this word really means, and not what Hollywood thinks it means) is a rewarding experience.</p>
<p><span class="bold">So, where to start?</span></p>
<p>That is the question. Obviously to some extent, this depends on what you want to accomplish. But as that is impossible for me to ascertain for each individual, I will endeavor to introduce some things that should be useful to anyone.</p>
<p><span class="italic">These ramblings will assume you are using a Unix-based system, preferably Linux. This is partially because such systems give you the tools to hack out of the box, and partially because their communities are not only amiable to hackers, but are made up of them. Linux is built under the principle that anyone who wants to explore software deeper (and change it if they want) can (and should!) do so. Mac OS X is a Unix under the hood, so it&#8217;s acceptable.</span></p>
<p><span class="bold">The Shell</span></p>
<p>Any aspiring hacker should become acquainted with the <span class="italic">shell</span>. What is this shell of which I speak? You may know it as &#8220;the command line.&#8221; It&#8217;s called a shell because it provides a nice way to interface with your operating system, much in the same way an eggshell provides a nice way to interface with an egg. The shell is accessed through a program called the <span class="italic">terminal</span>.</p>
<p><span class="bold">What is a terminal?</span></p>
<p>Very simply, a terminal receives input from you, and sometimes tells you something back. In the early days of computers, there would only be one real &#8220;computer&#8221; at a given establishment. Multiple people interacted with this computer simultaneously through <span class="italic">dumb terminals,</span> which were not individual computers themselves, but (essentially) monitors and keyboards&#8211;ways to tell something to the computer, and get something back. Likewise, you can open as many terminals into <span class="italic">your</span> computer as you want: they don&#8217;t affect each other, they just affect your machine.</p>
<p>Nowadays, when you open a terminal program, it automatically starts a shell for you. But let&#8217;s talk about how to use both.</p>
<p><span class="bold">Getting friendly with your terminal</span></p>
<p>Terminals are quite basic programs from the perspective of the user (you). But if you want to use one, you should know where to find it! In Ubuntu, it&#8217;s in Applications -&gt; Accessories -&gt; Terminal. On OS X, it&#8217;s called Terminal.app, in Applications -&gt; Utilities. If you can&#8217;t find it on your system, and Google isn&#8217;t helping, let me know.</p>
<p>Once you&#8217;ve got it open, you will want to spend a bit of time configuring it to your liking. Very important to me are the colors: if you&#8217;re going to be doing powerful hackery things, you should look the part! I prefer amber text on black background, but use whatever you like. Again, exactly how to do this is specific to your system, but your terminal program should have an easily-findable preferences menu somewhere. Also make sure the size and whatnot is to your liking. Note that you will want to make sure to use a monospace (fixed-width) font (which certainly will be the default for your terminal). Since you are only dealing with text and not graphics, it&#8217;s important that all the letters be the same width so everything lines up correctly.</p>
<p><span class="bold">Getting friendly with the bash shell</span></p>
<p>There are several different popular shells for a given system, with varying capabilities that you don&#8217;t need to worry about now. Just stick with bash, which is the default shell in OS X and almost all Linux distributions. That is, when you open your terminal, you are now looking at a <span class="italic">bash shell</span>.</p>
<p>In the world of the shell, the first thing that&#8217;s important to understand is that you are always working in a specific place in your system. That is, you are in your Documents directory, or the root directory, or the directory called /usr/local, or whatever. (Note that we call them &#8220;directories,&#8221; not &#8220;folders,&#8221; though they both do the same job of being a place where files are.) This is different from your normal computer-using experience, where you don&#8217;t often deal directly with files (except to save or open them), really.</p>
<p>Your current location should be displayed at the <span class="italic">prompt</span>, or the actual line that is waiting for your input.</p>
<p>The other important thing to keep in mind is not only <span class="italic">where</span> you are, but <span class="italic">who</span> you are. In unix-like systems, users have varying levels of privileges&#8211;that is to say, not everybody can do everything. This is important for security and privacy: you can&#8217;t delete another user&#8217;s files, or destroy something important to the operation of the whole system, when you are just a standard user. This is a Good Thing, and you&#8217;ll want to shun the ability to do dangerous things until you are sure what you&#8217;re doing.</p>
<p>Who you are is also displayed at the prompt, generally by means of the symbol (usually $ or #) that immediately precedes your cursor.</p>
<div class="wp-caption aligncenter" style="width: 317px"><a href="http://forge.life-is-virtual.com/images/terminal.png"><img title="Terminal prompt - Click to Enlarge" src="http://forge.life-is-virtual.com/images/terminal.resized.png" alt="Anatomy of a Prompt. Click to Enlarge" width="307" height="180" /></a><p class="wp-caption-text">Anatomy of a Prompt. Click to Enlarge</p></div>
<p>So, what do you do now? Well, it&#8217;s a command line, so you enter commands!</p>
<p><span class="bold">What are these commands?</span></p>
<p>Generally, giving a command is as simple as telling the shell which program you want to run. For example, a very common command is one to list which files are in your current directory. To do this, you just type the name of the program that lists files: <span class="mono">ls</span>. Then hit enter. The results of running the program will be displayed. Try it on your terminal!</p>
<p>Of course, often you will want to give the program some information about what you want. With the <span class="mono">ls</span> program, for example, we often would prefer the files to be arranged in a nice table, instead of just haphazardly listed like in the example above. To tell a program something, you give it <span class="italic">parameters</span>. The parameter that does what we want for <span class="mono">ls</span> is <span class="mono">-l</span>. You put parameters after the program&#8217;s name, separating each one with a space. So typing <span class="mono">ls -l</span> gives us:</p>
<div class="wp-caption aligncenter" style="width: 317px"><a href="http://forge.life-is-virtual.com/images/ls.png"><img title="ls - Click to Enlarge" src="http://forge.life-is-virtual.com/images/ls.resized.png" alt="Output of ls -l. Click to enlarge." width="307" height="180" /></a><p class="wp-caption-text">Output of ls -l. Click to enlarge.</p></div>
<p>By default, the <span class="mono">ls</span> program doesn&#8217;t list hidden files, because they are&#8230; well, hidden. But of course, sometimes you want to be able to see hidden files! So you pass the parameter <span class="mono">-a</span> (which stands for &#8220;all,&#8221; meaning we want to show ALL files). So we type <span class="mono">ls -a</span> and it Enter.</p>
<p>Ruh-roh! It showed all the files, but it&#8217;s back to that ugly output again. Looks like we need to combine this new parameter with the previous one. This turns out to be a very common thing to do. We could do this <span class="mono">ls -l -a</span> to get what we want. Try it.</p>
<p>But hackers are always looking for speedier/more efficient ways to do things, and so there are often shortcuts. When you have multiple parameters starting with a dash (<span class="mono">-</span>), you can scrunch em all together, like so: <span class="mono">ls -la</span>. The result is the same.</p>
<p>In the future, we&#8217;ll do more complex stuff with the shell, but these basic techniques of using the program name followed by optional parameters are ubiquitous.</p>
<p><span class="bold">What is scripting?</span></p>
<p>You may ask what the advantage is to typing commands and getting their results as text instead of using graphics. Obviously both have their strong points, but the command method has a major plus: you can <span class="italic">script</span> it.</p>
<p>Scripting is the process of doing the work once, and enjoying the benefits multiple times. It is making a list of commands that you can later execute just by typing the name of the script (with optional parameters&#8230; sound familiar?)</p>
<p>Scripts are commonly used to automate tasks. For example, you might write a script to backup your important documents to another location. If you&#8217;ve ever tried to consistently (daily, for example) do such backups just using your graphical file browser, you know how tedious this can be&#8211;eventually, you start backing up less frequently (or not at all) because it&#8217;s such a pain in the butt.</p>
<p>Let&#8217;s say that to you, &#8220;backing up&#8221; just means copying your Documents directory into a directory called Backups that&#8217;s on a different hard drive. That way, if your main hard drive dies, at least you have copies in another spot. That&#8217;s painless to do via the graphical interface, right?</p>
<p>1. Open file browser.<br />
2. Click through folders until you get to Documents.<br />
3. Right click on the folder, select &#8220;Copy.&#8221;<br />
4. Click through folders on your other hard drive until you get to Backups.<br />
5. Right click in the folder, hit Paste.</p>
<p>How would we do the same thing in the shell?<br />
<span class="mono">cp -R /path/to/Documents /path/to/Backup</span></p>
<p>Alright, you say. That might be faster, but it&#8217;s a lot of typing! Well, for one thing, the shell helps you out a lot: you can just start typing a little bit of the word, then hit Tab, and it will complete the word for you. So you can probably just type &#8220;D&#8221; and then hit Tab, and it will fill in the full word &#8220;Documents&#8221; automatically.Or, you can just write a script that has the above command in it, name it something like <span class="mono">backup</span>, and all you have to do is type &#8220;backup&#8221; at the command line, and you&#8217;re done!</p>
<p>But now let&#8217;s say you notice you&#8217;re having space issues. Keeping a full second copy of all your stuff means using twice the hard drive space. It&#8217;d be nice if you could compress the backups so that they took up less space.</p>
<p>In this scenario, most likely your workflow in the graphical interface has completely changed. It depends on how integrated your archiving program is with your file explorer. For the sake of hyperbole, let&#8217;s pretend it&#8217;s not integrated at all. Here are the steps for doing it graphically:</p>
<p>1. Open archive program.<br />
2. Go to File -&gt; Add to Archive.<br />
3. Click through folders until you get to Documents.<br />
4. Click OK.<br />
5. Go to File -&gt; Save As.<br />
6. Click through folders until you get to Backups.<br />
7. Think up a name, hit Save.</p>
<p>That last step is important: how are you going to name your backups? Are you going to put today&#8217;s date in the name, so that you have easy access to a given day&#8217;s backup? I&#8217;ve done exactly this before, in the above way listed (or pretty close), and it&#8217;s tedious.</p>
<p>Let&#8217;s see how we&#8217;d change our previous little one-line script (<span class="mono">backup</span>) to do the same thing, including the date in the name of the backup.</p>
<p><span class="mono">tar czf /path/to/Backup/`date +%F`.tgz /path/to/Documents</span></p>
<p>Now when you run <span class="mono">backup</span>, your documents are automatically archived and stored in your Backup directory with the name of today&#8217;s date. Neat, huh? Once you change the script <span class="italic">once</span>, you are done&#8211;you still just run <span class="mono">backup</span> like you did before. It figures out the date and everything for you.</p>
<p>But now the truly cool thing that really puts you ahead of the graphical way: you can tell your system to simply run <span class="mono">backup</span> <span class="italic">for you</span>. That&#8217;s right, now you don&#8217;t have to open the shell, don&#8217;t have to type anything&#8211;and you never worry about forgetting to do a backup. Telling the system to run your script is quite easy, but I won&#8217;t mention it here, as I&#8217;ve made my point. Obviously this doesn&#8217;t just apply to backups, but for any task that needs doing more than once&#8211;and you&#8217;d be surprised how many of those there are.</p>
<p>Anyway, hopefully that helps to give you a taste. I&#8217;ll gladly answer any emails with questions, and will give a more &#8220;hands-on&#8221; tutorial next time.</p>
]]></content:encoded>
			<wfw:commentRss>http://my.life-is-virtual.com/2009/05/26/hacking-tutor-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

