<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title>Jeremy Knope dot com</title>
    <subtitle>Now hidden and neglected!</subtitle>
    <id>http://jeremyknope.com/feed/</id>
    <updated>2011-11-20T20:55:34-05:00</updated>
    <link href="http://jeremyknope.com/feed/" rel="self" type="application/atom+xml" />
    <link href="http://jeremyknope.com" />
    <generator uri="http://chyrp.net/" version="2.1">Chyrp</generator>
    <entry>
        <title type="html">Minecraft 1.0</title>
        <id>tag:jeremyknope.com,2011-11-20:/id/24/</id>
        <updated>2011-11-20T20:55:34-05:00</updated>
        <published>2011-11-20T20:55:34-05:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/11/20/minecraft-10/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;Minecraft 1.0 is out and the server is currently running in adventure-only mode with 1.0 and a brand new world.  Creative and possibly old adventure world will be restored when Bukkit has become stable for 1.0.  For now enjoy new 1.0 terrain, enchanting, potions (ugh so hard to get ingredients) and more.  The large base near spawn contains storage, enchanting table, and brewing stand in the basement.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://cloud.jfro.me/BytA"&gt;Slowly the enchanting table is getting more powerful!&lt;/a&gt;&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="minecraft-server" label="minecraft-server" />
        <category scheme="http://jeremyknope.com/tag/" term="minecraft" label="minecraft" />
        <category scheme="http://jeremyknope.com/tag/" term="gaming" label="gaming" />
    </entry>
    <entry>
        <title type="html">Server Updated to 1.8</title>
        <id>tag:jeremyknope.com,2011-09-14:/id/23/</id>
        <updated>2011-09-14T10:01:44-04:00</updated>
        <published>2011-09-14T10:01:44-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/09/14/server-updated-to-18/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;Quick update that the Minecraft server is now updated to 1.8.  The only world available is adventure and its nether, creative won't come back until the mods are updated to work with 1.8.&lt;/p&gt;

&lt;p&gt;If you want to go to new 1.8 based terrain, just journey a ways from our current area and you should find the border of the current world, with hot new terrain ahead.  Just check out the &lt;a href="http://mc.jfro.me/world/adventure/map#/124/64/-181/-4/mcmapDay"&gt;map&lt;/a&gt; to get an idea what direction you might want to head.&lt;/p&gt;

&lt;p&gt;Now go hug an enderman.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="minecraft-server" label="minecraft-server" />
        <category scheme="http://jeremyknope.com/tag/" term="minecraft" label="minecraft" />
        <category scheme="http://jeremyknope.com/tag/" term="gaming" label="gaming" />
    </entry>
    <entry>
        <title type="html">Minecraft Server Update</title>
        <id>tag:jeremyknope.com,2011-11-01:/id/22/</id>
        <updated>2011-11-01T14:54:40-04:00</updated>
        <published>2011-09-02T01:28:09-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/09/02/minecraft-server-update/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;I just finished a substantial update to the &lt;a href="http://mc.jfro.me"&gt;minecraft server&lt;/a&gt;. Most of the changes are under the surface, the biggest might be the fixing of nether portals.  Here's a list of all the changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New permissions system (modified official plugin to store in MongoDB, old one wasn't updated)&lt;/li&gt;
&lt;li&gt;Updated MultiVerse plugin, both creative_nether and adventure_nether portals will work&lt;/li&gt;
&lt;li&gt;New UserStats plugin I wrote, replaces jfrobot's user tracking&lt;/li&gt;
&lt;li&gt;Jfrobot is gone, jfmc is taking care of join/disc &amp;amp; chat now&lt;/li&gt;
&lt;li&gt;Minor updates to other plugins&lt;/li&gt;
&lt;li&gt;New world border placed in adventure until 1.8 is out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The new world border in adventure makes the world look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://jeremyknope.com/files/round-map.png"&gt;&lt;img src="/files/thumb-round-map.png" alt="Example trimmed world" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will just keep us where we are and give us more area that'll hopefully feature new 1.8 biomes once it's out.  I believe all existing structures should be within the border too.  Feel free to chime in with any questions or suggestions in the comments section or on the IRC channel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Forgot to mention, warps &amp;amp; home plugins are unavailable for now until I find a replacement I'm happy with. Ones I used to use are now inactive.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="minecraft-server" label="minecraft-server" />
        <category scheme="http://jeremyknope.com/tag/" term="minecraft" label="minecraft" />
        <category scheme="http://jeremyknope.com/tag/" term="gaming" label="gaming" />
    </entry>
    <entry>
        <title type="html">Map Player Locations</title>
        <id>tag:jeremyknope.com,2011-08-15:/id/20/</id>
        <updated>2011-08-15T10:51:27-04:00</updated>
        <published>2011-08-15T10:51:27-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/08/15/map-player-locations/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;Enabled new markers on the maps to mark where online players are located.  Should see a marker with skin matching the player too.&lt;/p&gt;

&lt;p&gt;Here's an example of me located near steve's island house:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://jeremyknope.com/files/map-player.png" alt="Map player markers" title="Map Player Markers" /&gt;&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="minecraft" label="minecraft" />
        <category scheme="http://jeremyknope.com/tag/" term="minecraft-server" label="minecraft-server" />
    </entry>
    <entry>
        <title type="html">Inventory Security</title>
        <id>tag:jeremyknope.com,2011-08-04:/id/18/</id>
        <updated>2011-08-04T08:48:39-04:00</updated>
        <published>2011-08-04T08:48:39-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/08/04/inventory-security/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;I just enabled a new mod that will let players lock their chests, furnaces and other similar items.  You might find this useful if you want to keep your private chest in your home area safe from nosey people.  This also lets us control who can access chests, allowing us to prevent access to public chests by new players.  The protections work on anything that holds inventory and doors too.&lt;/p&gt;

&lt;p&gt;Commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/cpublic - anybody can access it, but can't put their own protection on it&lt;/li&gt;
&lt;li&gt;/cprivate - locks it only to you, you can add others with codify&lt;/li&gt;
&lt;li&gt;/cmodify - modifies protection on an item, you can add a person: /cmodify jfro&lt;/li&gt;
&lt;li&gt;/cinfo - Tells you who owns it and if you have access&lt;/li&gt;
&lt;li&gt;/cremove - Removes a protection you own from the item&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of these commands will ask you to punch the item you want to apply them to after entering the command. Please keep private chests in private locations. Let me know what you think and if you have questions.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="minecraft-server" label="minecraft-server" />
        <category scheme="http://jeremyknope.com/tag/" term="minecraft" label="minecraft" />
    </entry>
    <entry>
        <title type="html">New Adventure World</title>
        <id>tag:jeremyknope.com,2011-07-26:/id/17/</id>
        <updated>2011-07-26T00:49:45-04:00</updated>
        <published>2011-07-26T00:49:45-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/07/26/new-adventure-world/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;I just made live a change to the &lt;a href="http://mc.jfro.me"&gt;minecraft server&lt;/a&gt; that provides ability to have multiple worlds.  There is now a new world called 'adventure' that is setup to be typical survival gameplay with no cheating type commands.&lt;/p&gt;

&lt;p&gt;We'll eventually setup some nice portals you can walk through to switch between worlds, but for now you can switch via new commands:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/mvlist - lists available worlds (includes the nethers)
/mvtp [world] - teleports to specified world's spawn
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Inventories are separate, health isn't supposed to be shared but for now seems to be.  Creative world now also heals you over time.  Let me know if there's any commands not working right or any other issues.  Hope this works out well.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="minecraft-server" label="minecraft-server" />
        <category scheme="http://jeremyknope.com/tag/" term="gaming" label="gaming" />
        <category scheme="http://jeremyknope.com/tag/" term="minecraft" label="minecraft" />
    </entry>
    <entry>
        <title type="html">Minecraft Server Status Update</title>
        <id>tag:jeremyknope.com,2011-07-20:/id/16/</id>
        <updated>2011-07-20T19:37:46-04:00</updated>
        <published>2011-07-20T19:20:00-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/07/20/minecraft-server-status-update/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;So I'm going to start posting news/updates about the Minecraft server I maintain so those that use it can have a way to keep tabs on what's happening.  This will also eventually be sourced to the server's home page, probably in a small news sidebar. To start, here's a brief summary of the status of things and possible things to come.&lt;/p&gt;

&lt;h3&gt;Current Status&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Server is now on 1.7.3, fixes some leaks and other bugs.&lt;/li&gt;
&lt;li&gt;Server &lt;a href="http://mc.jfro.me"&gt;home page&lt;/a&gt; now shows time played, this data started a week or two ago&lt;/li&gt;
&lt;li&gt;Anybody new can connect &amp;amp; visit, but approval required for build access&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Possible Future Plans&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MultiVerse: Creative &amp;amp; Adventure/Survival worlds (portals bridging between, possible teleport command access)&lt;/li&gt;
&lt;li&gt;Economy: There's some interesting economy plugins, can allow for selling of items and getting money to buy tools &amp;amp; other items&lt;/li&gt;
&lt;li&gt;Accounts: Pondering building simple accounts in web site to easily donate &amp;amp; automatically get some bonuses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: I went ahead and made any new users not have build permissions, let me know if there's issues or if you want access.&lt;/p&gt;

&lt;p&gt;Server Home Page: &lt;a href="http://mc.jfro.me"&gt;mc.jfro.me&lt;/a&gt;&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="minecraft-server" label="minecraft-server" />
        <category scheme="http://jeremyknope.com/tag/" term="minecraft" label="minecraft" />
        <category scheme="http://jeremyknope.com/tag/" term="gaming" label="gaming" />
    </entry>
    <entry>
        <title type="html">SSH Known Hosts Editing</title>
        <id>tag:jeremyknope.com,2011-05-30:/id/13/</id>
        <updated>2011-05-30T13:43:46-04:00</updated>
        <published>2011-05-30T13:35:00-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/05/30/ssh-tips/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;Following up on my last 2 posts about SSH key based authentication, here's some more useful SSH commands to manage the known hosts file that I didn't know about before.&lt;/p&gt;

&lt;p&gt;The known hosts file, located at ~/.ssh/known_hosts, is where server public keys end up when you say "yes" to accepting a host key upon connecting to a server you've never connected to before.  Chances are your file is full of keys by now if you connect to a lot of different machines.  If you need to remove a key for a server change or if you no longer use the server, you can easily clean it up without editing the file directly.&lt;/p&gt;

&lt;p&gt;You can first check if the host is even in the file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ssh-keygen -F jfro.me
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will display the entry from the file if found.  You can remove it with this command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ssh-keygen -R jfro.me
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Unfortunately it's not as easy if you use non-standard ports, it has to be an exact match to the host entry in the file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ssh-keygen -R "[example.com]:1234"
&lt;/code&gt;&lt;/pre&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="ssh" label="ssh" />
        <category scheme="http://jeremyknope.com/tag/" term="sysadmin" label="sysadmin" />
        <category scheme="http://jeremyknope.com/tag/" term="servers" label="servers" />
        <category scheme="http://jeremyknope.com/tag/" term="tips" label="tips" />
    </entry>
    <entry>
        <title type="html">SSH Public Key Uploading Script</title>
        <id>tag:jeremyknope.com,2011-01-15:/id/14/</id>
        <updated>2011-01-15T17:33:15-05:00</updated>
        <published>2011-01-15T17:33:15-05:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2011/01/15/ssh-public-key-uploading-script/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;After my previous post, I realized I've wanted a simple way of uploading &amp;amp; authorizing my public key on new servers.  After some searching I found a script that I tweaked a bit and put it on gist.&lt;/p&gt;

&lt;p&gt;This gist has 2 versions, one is a shell function, the other a shell script.  For some people it'll probably be easier just grabbing the script and putting it in their path like at /usr/local/bin/sshput.  Some might like putting it in their zshrc, profile, etc. as a shell function which is what I did.&lt;/p&gt;

&lt;p&gt;First file is function, second is the script:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/761845"&gt;sshput gist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After it's installed, you can easily upload &amp;amp; authorize your public key on a new server:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sshput myserver.local
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It'll ask for your password for the server, then transfer the key and append it to ~/.ssh/authorized_keys on the server.  By default the script uploads your rsa or dsa key but you can specify a specific key:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sshput ~/.ssh/github_key.pub myserver.local
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hope that helps out with making ssh key authentication easier, I definitely like having a 1 step setup for authorizing a key now.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="ssh" label="ssh" />
        <category scheme="http://jeremyknope.com/tag/" term="sysadmin" label="sysadmin" />
        <category scheme="http://jeremyknope.com/tag/" term="servers" label="servers" />
        <category scheme="http://jeremyknope.com/tag/" term="shell" label="shell" />
        <category scheme="http://jeremyknope.com/tag/" term="scripts" label="scripts" />
    </entry>
    <entry>
        <title type="html">SSH Key Based Authentication</title>
        <id>tag:jeremyknope.com,2011-01-01:/id/12/</id>
        <updated>2011-01-01T12:34:33-05:00</updated>
        <published>2010-12-29T15:23:56-05:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2010/12/29/ssh-key-based-authentication/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; Added basics section to try to give a nicer overview, feel free to &lt;a href="mailto:jerome@buttered-cat.com"&gt;email me&lt;/a&gt; any feedback on this post&lt;/p&gt;

&lt;p&gt;A friend asked about remembering an ssh password in OS X keychain which led me to mentioning ssh keys, I believe OS X only stores those passwords.  Decided to try writing a post about them that hopefully is helpful in getting started with using ssh key authentication.&lt;/p&gt;

&lt;h3&gt;Basics&lt;/h3&gt;

&lt;p&gt;First, a little about key based authentication.  SSH has a few ways of handling authentication, a lot of people I think use just the password based authentication, this is what will probably be used when you first setup SSH too.  There's a few other options, including ability to tell the server only to accept certain ones.  One of the choices is public key authentication which can be more secure and allow for some conveniences on the client side.&lt;/p&gt;

&lt;p&gt;With public key authentication, you have both a private and public key on your client machine, and the server has to be told if your public key is authorized.  When connecting, your public key will be sent to the server and it will check if it's authorized and if your ssh client can prove it has the private key. (Not sure if it's used in the actual encryption)&lt;/p&gt;

&lt;p&gt;Setting public key authentication up takes a bit but can be much nicer than just using password authentication.  We have a few steps to follow, you'll have to repeat per client machine you use, at least that'd be more secure than copying a key to each:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new key pair on your client machine (ssh-keygen command)&lt;/li&gt;
&lt;li&gt;Copy the public key to the server (~/.ssh/id_rsa.pub)&lt;/li&gt;
&lt;li&gt;Add the public key contents to your user's ~/.ssh/authorized_keys file, creating it if it doesn't exist&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'm hoping to write some useful shell scripts to streamline the last 2 steps into a simple command, I'll share that if I finish it or find a similar existing method.&lt;/p&gt;

&lt;p&gt;Below I go into more detail about setting it all up.&lt;/p&gt;

&lt;h3&gt;Creating a key pair&lt;/h3&gt;

&lt;p&gt;First you need to make a key pair if you haven't already, you can just type the simple keygen command wi th no gas, default will be to do rsa keys, changeable via -t flag.  I believe rsa is the better choice anyway.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ssh-keygen
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You'll be asked where to store the files but just hit enter to accept default.  You'll then be asked for a passphrase which you can leave blank.  You might want to have one, it'll be safer if someone did manage to get your private key.  You can always store the passphrase in things like OS X keychain to have passwordless ssh login.  OS X 10.6 has support for this and there's probably some similar utilities for other OSes.  This involves an ssh-agent which I'll probably go into later.&lt;/p&gt;

&lt;p&gt;Now you'll have 2 files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~/.ssh/id_rsa&lt;/li&gt;
&lt;li&gt;~/.ssh/id_rsa.pub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The .pub file is your public key which you use to identify and allow your machine access to servers or services like github.  The other file is your private key which you want to keep safe. When connecting to an ssh server, your private key will be used to encrypt communication if the server has your public key in an authorized keys file.&lt;/p&gt;

&lt;h3&gt;Making a key authorized&lt;/h3&gt;

&lt;p&gt;Every server you want to access using this key you have to copy the id_rsa.pub file to and put the contents in a specific file for your user.  This is the users authorized keys file: ~/.ssh/authorized_keys&lt;/p&gt;

&lt;p&gt;This file can contain one public key per line, typically you might have a key per computer you use.&lt;/p&gt;

&lt;p&gt;Easiest way to get this to a server is to scp it, then we have to append it to our authorized keys file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;scp ~/.ssh/id_rsa.pub server:mykey
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then ssh to server and append it to authorized keys, creating ~/.ssh directory of it doesn't exist:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ssh server
mkdir -p ~/.ssh
cat mykey &amp;gt;&amp;gt; ~/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now if you logout and back in, it should either ask you for your key's password or no password at all if you left it blank.  On OS X 10.6 this will be via a GUI panel, or similar on other OSes with a GUI ssh-agent setup.&lt;/p&gt;

&lt;h3&gt;SSH Agent&lt;/h3&gt;

&lt;p&gt;This isn't necessary to know about but might be helpful for some.  An ssh-agent is actually what's running on OS X to allow the password panel that pops up and keychain support.  It also doesn't ask you for the key's password repeatedly for a duration if you do multiple connections.  It's job is to hold onto private keys for a time period so you don't have to continually enter your password.&lt;/p&gt;

&lt;p&gt;There may be cases where you might want to use the &lt;em&gt;ssh-agent&lt;/em&gt; command.  I use this on a remote server so I only have to enter my key password once.  I'll be doing a follow up post more on this I think as I need to review some pieces.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="shell" label="shell" />
        <category scheme="http://jeremyknope.com/tag/" term="ssh" label="ssh" />
        <category scheme="http://jeremyknope.com/tag/" term="sysadmin" label="sysadmin" />
        <category scheme="http://jeremyknope.com/tag/" term="servers" label="servers" />
    </entry>
    <entry>
        <title type="html">Shell Fun - The switch to ZSH</title>
        <id>tag:jeremyknope.com,2009-12-03:/id/8/</id>
        <updated>2009-12-03T19:38:25-05:00</updated>
        <published>2009-12-03T19:33:26-05:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2009/12/03/shell-fun-the-switch-to-zsh/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;So I recently switched to zsh after encouragement from a friend and wanted to share some of the possible benefits.  With some help I was able to bring over some &lt;a href="http://blog.macromates.com/2008/working-with-history-in-bash/"&gt;history improvements&lt;/a&gt; I had in bash to zsh too.&lt;/p&gt;

&lt;p&gt;I was pointed to this &lt;a href="http://friedcpu.wordpress.com/2007/07/24/zsh-the-last-shell-youll-ever-need/"&gt;blog entry&lt;/a&gt; that pretty much sums up some of the pros of using zsh over bash.  I'm a big fan of the tab completion options available along with the auto-correction.  I can do "cd public" in my home folder and it'll fix it to "cd Public".&lt;/p&gt;

&lt;h2&gt;Tab completion&lt;/h2&gt;

&lt;p&gt;The tab-completion is able to do a fancy menu selection too which I kind of like:
&lt;img src="http://jeremyknope.com/uploads/terminal-zsh-tab1.png" alt="terminal-zsh-tab1.png" border="0" width="243" height="63" /&gt;&lt;/p&gt;

&lt;p&gt;You can move the selection around the arrows or control-C to cancel out.  In this case I didn't type any characters yet, "GarageBand/" is the possible selection.  Hitting enter will confirm.  It behaves a bit different but I'm liking it.&lt;/p&gt;

&lt;h2&gt;History&lt;/h2&gt;

&lt;p&gt;One thing I did like which I didn't have setup at first was the prefix history search.  The idea is you type in something like "ssh" and then can cycle through your history for anything starting with that.  This makes it easy to find a previous ssh connection in this example.  You can bind this behavior to a key, which I would bind to the typical history cycling of up &amp;amp; down.  The bash history blog I linked to above mentioned this in the comments and required putting it in .inputrc.  With zshrc it turns out I just needed to use it's format within zshrc itself:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
 bindkey "\e[B" history-beginning-search-forward&lt;br /&gt;
 bindkey "\e[A" history-beginning-search-backward
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This differed from bash's commands by the -beginning- piece being added here, otherwise it uses the previous word you typed only I believe.&lt;/p&gt;

&lt;h2&gt;My zshrc&lt;/h2&gt;

&lt;p&gt;There's a ton of stuff to learn about zsh of course, and I don't understand half of what's in my zshrc either.  But I like the benefits and hopefully will slowly learn more.  What I did to start is just tweak an existing one so I'll provide mine here:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://gist.github.com/248714"&gt;My zshrc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Things it has:
* A list of your servers
* shortcuts to push it to the listed servers
* some shortcuts to setup git for a project, including the remote copy
* shortcut for cloning from my GITSERVER
* tons of other useful shell functions
* Sets up ls to colorize listings on linux &amp;amp; OS X&lt;/p&gt;

&lt;p&gt;The zshrc is based on what &lt;a href="http://penree.com/"&gt;Nicholas Penree&lt;/a&gt; gave me and thanks to him for helping improve my terminal using experience!  Be sure to check the top of the file for the areas to customize.&lt;/p&gt;

&lt;h2&gt;Todo&lt;/h2&gt;

&lt;p&gt;There's some things I have yet to figure out too.  Some things I'd like to figure out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detect OS X GUI access to set $EDITOR properly (mate -w only if we can open a GUI app)&lt;/li&gt;
&lt;li&gt;Track changes to zshrc through git instead of just get/pushing it randomly&lt;/li&gt;
&lt;li&gt;On my MBP control-A and E don't do beginning/end line like they normally do, weird!&lt;/li&gt;
&lt;li&gt;Actually organize things a lot better, bindkeys are everywhere, so are various functions&lt;/li&gt;
&lt;/ul&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="shell" label="shell" />
        <category scheme="http://jeremyknope.com/tag/" term="tips" label="tips" />
    </entry>
    <entry>
        <title type="html">PHP Script Logger</title>
        <id>tag:jeremyknope.com,2009-11-01:/id/7/</id>
        <updated>2009-11-01T11:55:11-05:00</updated>
        <published>2009-11-01T11:55:11-05:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2009/11/01/php-script-logger/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;I forgot about my old script logger and I didn't bring the page over from my old blog, it's a nice little web app.  I made it to log various errors and problems to an sqlite database.  You can see common errors, where they happened, etc.  It's a bit old, but maybe someday I'll update it, though I think it'd be best if a php extension was made for it for the actual error capturing.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://jeremyknope.com/scriptlogger/"&gt;PHP Script Logger Page&lt;/a&gt;&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="php" label="php" />
    </entry>
    <entry>
        <title type="html">Tweetie 2.0 Custom URL Shortening</title>
        <id>tag:jeremyknope.com,2009-10-12:/id/6/</id>
        <updated>2009-10-12T19:24:40-04:00</updated>
        <published>2009-10-12T19:23:55-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2009/10/12/tweetie-20-custom-url-shortening/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;Tweetie 2.0 for iPhone came out recently and has a nice feature for specifying your own URL shortening service, like one that uses &lt;a href="http://github.com/jfro/butteredurls"&gt;ButteredURLs&lt;/a&gt;.  It's easy enough, might want to email yourself the API key from your install of ButteredURLs or visit it on the device.  Then you can copy &amp;amp; paste it into the "Custom" option for URL shortening services in Tweetie's settings.  You can view the API key when you're at the admin area.&lt;/p&gt;

&lt;p&gt;The URL should look a little like this, replacing APIKEY with your own key:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://example.com/-/?api=APIKEY&amp;amp;url=%@&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Tweetie will replace %@ with the URL it's shortening.  For more details on the custom shortening feature of Tweetie 2.0, see the &lt;a href="http://developer.atebits.com/tweetie-iphone/custom-shortening/"&gt;developer page&lt;/a&gt; about it.&lt;/p&gt;

&lt;p&gt;Also check out &lt;a href="http://www.atebits.com/tweetie-iphone/"&gt;Tweetie 2&lt;/a&gt; itself.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="tips" label="tips" />
        <category scheme="http://jeremyknope.com/tag/" term="php" label="php" />
    </entry>
    <entry>
        <title type="html">ButteredURLs Updated</title>
        <id>tag:jeremyknope.com,2009-10-12:/id/5/</id>
        <updated>2009-10-12T19:10:16-04:00</updated>
        <published>2009-09-14T23:43:28-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2009/09/14/butteredurls-updated/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;I just recently did some small updates to &lt;a href="http://github.com/jfro/butteredurls"&gt;ButterdURLs&lt;/a&gt; which adds some features from the recently updated Lessn software from Shaun Inman.&lt;/p&gt;

&lt;p&gt;1.1.1 Changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fix for issues #1 (shortening your own short URLs by accident)&lt;/li&gt;
&lt;li&gt;Support for api and redirect URL arguments thanks to &lt;a href="http://www.shauninman.com/archive/2009/09/14/less_n_go"&gt;Lessn 1.0.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added new configuration option HOMEPAGE_URL for redirecting somewhere if no short url is given, i.e. my site I'll set to http://jeremyknope.com/&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also available recently is a OS X service for either Lessn or ButteredURLs thanks to &lt;a href="http://stevestreza.com"&gt;Steve Streza&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://github.com/amazingsyco/lessn-service"&gt;Lessn/ButteredURLs Service&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://buttered-cat.com/downloads/get/36/butteredurls-1.1.1.tgz"&gt;Download ButteredURLs 1.1.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Source&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://github.com/jfro/butteredurls"&gt;Github Page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="php" label="php" />
    </entry>
    <entry>
        <title type="html">OS X Screenshots location</title>
        <id>tag:jeremyknope.com,2009-09-10:/id/4/</id>
        <updated>2009-09-10T18:15:20-04:00</updated>
        <published>2009-09-10T18:12:56-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2009/09/10/os-x-screenshots-location/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;This isn't really anything new but I finally changed my system's default location for screenshot storage.  The desktop is a gross place for them to go, so much clutter!  Someone pointed me at &lt;a href="http://secrets.blacktree.com/"&gt;Blacktree's secrets&lt;/a&gt; which got me the preference I was looking for.  They have a prefpane but it's not 64-bit for 10.6 yet, relaunching System Preferences is gross.&lt;/p&gt;

&lt;p&gt;Manually setting it in terminal:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;defaults write com.apple.screencapture location "~/Pictures/Screenshots"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once that's set you have to logout to have it take affect as I was impatient first time and thought it didn't work.&lt;/p&gt;

&lt;p&gt;This was also an excuse to write a quick blog post since I want to try to get myself to blog a bit more. Woohoo.&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="osx" label="osx" />
        <category scheme="http://jeremyknope.com/tag/" term="tips" label="tips" />
    </entry>
    <entry>
        <title type="html">Buttered URLs</title>
        <id>tag:jeremyknope.com,2009-08-30:/id/2/</id>
        <updated>2009-08-30T14:38:50-04:00</updated>
        <published>2009-08-30T14:32:00-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2009/08/30/buttered_urls/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;So I recently took Shaun's &lt;a href="http://www.shauninman.com/archive/2009/08/17/less_n"&gt;Lessn&lt;/a&gt; and extended it a bit. I was not using MySQL for one, and also I wanted stats (and so did others).  It's a pretty quick and dirty hack to lessn but so far seems to be working good.  I added an install.php that will just run the needed SQL queries to set it up too, you can do install.php?start=1 if you already have regular lessn installed.  This should execute the stats table creation queries along with adding a custom url field to the existing urls table.&lt;/p&gt;

&lt;h2&gt;Requirements&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PHP 5.1+ with &lt;a href="http://www.php.net/pdo"&gt;PDO&lt;/a&gt; (typical on most hosts, but probably missing drivers on say your local OS X machine)&lt;/li&gt;
&lt;li&gt;MySQL or PostgreSQL (SQLite is probably easily doable)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Installation&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Upload it, make sure .htaccess is included if you use apache&lt;/li&gt;
&lt;li&gt;Edit -/config.php to reflect your database settings &amp;amp; admin user/pass prefrences&lt;/li&gt;
&lt;li&gt;Run install by visiting http://example.com/install.php&lt;/li&gt;
&lt;li&gt;If upgrading from regular lessn, http://example.com/install.php?start=1&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://buttered-cat.com/downloads/get/35/butteredurls.tgz"&gt;Download ButteredURLs 1.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Source&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://github.com/jfro/butteredurls/tree/master"&gt;Github Page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="php" label="php" />
    </entry>
    <entry>
        <title type="html">Starting Over</title>
        <id>tag:jeremyknope.com,2009-08-25:/id/3/</id>
        <updated>2009-08-25T22:34:18-04:00</updated>
        <published>2009-08-25T22:32:54-04:00</published>
        <link rel="alternate" type="text/html" href="http://jeremyknope.com/2009/08/25/starting-over/" />
        <author>
            <name>jerome</name>
            <uri>http://jeremyknope.com</uri>
        </author>
        <content type="html">&lt;p&gt;I'm starting over with my blog, mostly because I looked it over and all the old posts were pretty badly broken.  I might bring back any specific posts that aren't outdated and actually useful, but probably only by request.  I've started trying home brewing beer so I'll definitely be trying to blog a little about that as I've already brewed 2 different beers.&lt;/p&gt;

&lt;p&gt;I'm also now on &lt;a href="http://www.slicehost.com/"&gt;slicehost&lt;/a&gt; which seems to be pretty slick, hopefully the limits are reasonable for my needs.  I primarily got it for hosting buttered-cat though, which will move over once the web site software I'm working on is finished.&lt;/p&gt;

&lt;p&gt;Back to finishing another post for later :)&lt;/p&gt;
</content>
        <category scheme="http://jeremyknope.com/tag/" term="general" label="general" />
    </entry>
</feed>
