<?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>copyandwaste &#187; Fun</title>
	<atom:link href="http://www.copyandwaste.com/category/fun/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.copyandwaste.com</link>
	<description></description>
	<lastBuildDate>Fri, 06 Jan 2012 21:09:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Multiprocessing SNMP with Python</title>
		<link>http://www.copyandwaste.com/2011/10/13/multiprocessing-snmp-with-python/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=multiprocessing-snmp-with-python</link>
		<comments>http://www.copyandwaste.com/2011/10/13/multiprocessing-snmp-with-python/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 15:14:29 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=406</guid>
		<description><![CDATA[I&#8217;ve written a ton of snmp monitoring scripts and they all suck because they are blocking and take &#8220;too long&#8221; to return results for a large amount of hosts. So how would we make this process faster and make us happier? multiprocessing is a package that supports spawning processes using an API similar to the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written a ton of snmp monitoring scripts and they all suck because they are blocking and take &#8220;too long&#8221; to return results for a large amount of hosts. So how would we make this process faster and make us happier?</p>
<blockquote><p><a href="http://docs.python.org/library/multiprocessing.html"><strong>multiprocessing</strong></a> is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessing module allows the programmer to fully leverage multiple processors on a given machine. It runs on both Unix and Windows.</p></blockquote>
<p>IBM has published a wonderful article on <a href="http://www.ibm.com/developerworks/aix/library/au-multiprocessing/">Multiprocessing with Python</a> in which I have modified their snippets for my purposes below.</p>
<p>To leverage <a href="http://www.net-snmp.org/">NetSNMP</a> in python you need to compile it with python modules, I wrote a post about this yesterday in <a href="http://www.copyandwaste.com/2011/10/12/compiling-netsnmp-for-ubuntu-with-python-bindings/">Compiling Netsnmp for Ubuntu.</a> After battling through the compiling bit you should be able to get the example in the IBM post to work. I modified this example *slightly* to accommodate instance identifier (iid).  Hopefully this will be suitable for a new project I&#8217;m working on which polls thousands of snmp oids to measure latency between routers using the concept I posted on hatch &#8211; <strong><strong><a href="http://hatch.use.io/generate/configure-rtrsla-ping-in-ios/">Configure RTR/SLA Ping in IOS template.</a></strong></strong></p>
<p>&nbsp;</p>
<pre class="brush:python">!/usr/bin/env python
"""
This is a multiprocessing wrapper for Net-SNMP.
This makes a synchronous API asynchronous by combining
it with Python2.6
"""

import netsnmp
from multiprocessing import Process, Queue, current_process

class HostRecord():
    """This creates a host record"""
    def __init__(self,
                 hostname = None,
                 query = None):
        self.hostname = hostname
        self.query = query

class SnmpSession():
    """A SNMP Session"""
    def __init__(self,
                oid = "sysDescr",
                iid="0",
                Version = 2,
                DestHost = "localhost",
                Community = "public",
                Verbose = True,
                ):
        self.oid = oid
        self.Version = Version
        self.DestHost = DestHost
        self.Community = Community
        self.Verbose = Verbose
        self.var = netsnmp.Varbind(oid, iid)
        self.hostrec = HostRecord()
        self.hostrec.hostname = self.DestHost

    def query(self):
        """Creates SNMP query

        Fills out a Host Object and returns result
        """
        try:
            result = netsnmp.snmpget(self.var,
                                Version = self.Version,
                                DestHost = self.DestHost,
                                Community = self.Community)
            self.hostrec.query = result
        except Exception, err:
            if self.Verbose:
                print err
            self.hostrec.query = None
        finally:
            return self.hostrec

def make_query(host):
    """This does the actual snmp query

    This is a bit fancy as it accepts both instances
    of SnmpSession and host/ip addresses.  This
    allows a user to customize mass queries with
    subsets of different hostnames and community strings
    """
    if isinstance(host,SnmpSession):
        return host.query()
    else:
        s = SnmpSession(DestHost=host)
        return s.query()

# Function run by worker processes
def worker(input, output):
    for func in iter(input.get, 'STOP'):
        result = make_query(func)
        output.put(result)

def main():
    """Runs everything"""

    #clients
    hosts = [
    SnmpSession(DestHost="10.71.1.1", Community="my-pub-community", oid="1.3.6.1.4.1.9.9.42.1.2.10.1.1", iid="1"),
    SnmpSession(DestHost="10.81.1.1", Community="my-pub-community", oid="1.3.6.1.4.1.9.9.42.1.2.10.1.1", iid="123")
    ]
    NUMBER_OF_PROCESSES = len(hosts)

    # Create queues
    task_queue = Queue()
    done_queue = Queue()

    #submit tasks
    for host in hosts:
        task_queue.put(host)

    #Start worker processes
    for i in range(NUMBER_OF_PROCESSES):
        Process(target=worker, args=(task_queue, done_queue)).start()

     # Get and print results
    print 'Unordered results:'
    for i in range(len(hosts)):
        print '\t', done_queue.get().query

    # Tell child processes to stop
    for i in range(NUMBER_OF_PROCESSES):
        task_queue.put('STOP')
        #print "Stopping Process #%s" % i

if __name__ == "__main__":
    main()</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/10/13/multiprocessing-snmp-with-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweeting from a Django Application</title>
		<link>http://www.copyandwaste.com/2011/08/17/tweeting-from-a-django-application/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tweeting-from-a-django-application</link>
		<comments>http://www.copyandwaste.com/2011/08/17/tweeting-from-a-django-application/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 15:53:29 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Nothing]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=383</guid>
		<description><![CDATA[It&#8217;s easy to get your application to start setting twitter status updates in django. Create a twitter account twitter.com Create a twitter &#8220;application&#8217; and get your keys dev.twitter.com/apps Click on &#8220;settings&#8221; and set the access to read and write easy_install python-twitter Use this template Whenever you save a &#8220;Post&#8221; object, the def send_tweet method will [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s easy to get your application to start setting twitter status updates  in django.</p>
<ol>
<li>Create a twitter account <a href="http://www.twitter.com">twitter.com</a></li>
<li>Create a twitter &#8220;application&#8217; and get your keys <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a></li>
<li>Click on &#8220;settings&#8221; and set the access to read and write</li>
<li>easy_install python-twitter
<li>Use this <a href="http://hatch.use.io/generate/tweeting-from-a-django-application/">template</a></li>
</ol>
<p>Whenever you save a &#8220;Post&#8221; object, the def send_tweet method will attempt to tweet a message containing the name of the object as well as the absolute url.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/08/17/tweeting-from-a-django-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Indexing Multi-value fields from django-tagging in Haystack</title>
		<link>http://www.copyandwaste.com/2011/07/22/indexing-multi-value-fields-from-django-tagging-in-haystack/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=indexing-multi-value-fields-from-django-tagging-in-haystack</link>
		<comments>http://www.copyandwaste.com/2011/07/22/indexing-multi-value-fields-from-django-tagging-in-haystack/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 16:27:12 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=326</guid>
		<description><![CDATA[Enabling tagging on models is easy when you use django-tagging. However, I also have a search feature which is powered by Haystack and Whoosh. I wanted to be able to search for objects by the tags that are associated with them. You need to use the following in your haystack SearchIndex model: tags = indexes.MultiValueField(indexed=True, [...]]]></description>
			<content:encoded><![CDATA[<p>Enabling tagging on models is easy when you use django-tagging.  However, I also have a search feature which is powered by Haystack and Whoosh.  I wanted to be able to search for objects by the tags that are associated with them.  You need to use the following in your haystack SearchIndex model:</p>
<pre>
tags = indexes.MultiValueField(indexed=True, stored=True)
</pre>
<h2>Full Example</h2>
<p><b>myproject/myapp/models.py</b></p>
<pre class="brush:python">
from django.db import models,
from tagging.fields import TagField
class Template(models.Model):
        name = models.CharField(max_length=100)
        pub_date = models.DateTimeField(editable=False, blank=True)
        description = models.TextField(blank=True)
        slug = models.SlugField(unique=True,editable=False,blank=True,null=True)
        tags = TagField()
</pre>
<p><b>myproject/myapp/search_indexes.py</b></p>
<pre class="brush:python">
import datetime
from haystack import indexes
from generator.models import Template

class TemplateIndex(indexes.RealTimeSearchIndex):
    text = indexes.CharField(document=True, use_template=True)
    name = indexes.CharField(model_attr='name')
    description = indexes.CharField(model_attr='description')
    pub_date = indexes.DateTimeField(model_attr='pub_date')
    tags = indexes.MultiValueField(indexed=True, stored=True)

    def get_model(self):
        return Template

    def index_queryset(self):
        """Used when the entire index for model is updated."""
        return self.get_model().objects.filter(pub_date__lte=datetime.datetime.now())
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/07/22/indexing-multi-value-fields-from-django-tagging-in-haystack/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>django-registration Require a unique email address for registration</title>
		<link>http://www.copyandwaste.com/2011/07/20/django-registration-require-a-unique-email-address-for-registration/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=django-registration-require-a-unique-email-address-for-registration</link>
		<comments>http://www.copyandwaste.com/2011/07/20/django-registration-require-a-unique-email-address-for-registration/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 19:06:57 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=321</guid>
		<description><![CDATA[Everyone uses django-registration for&#8230; registration&#8230; however.. you may get this error: TypeError at /accounts/register/ register() takes at least 2 non-keyword arguments (1 given) Here&#8217;s what your urls.py should look like for the /accounts/register/ url: urls.py from django.conf.urls.defaults import * from registration.forms import RegistrationFormUniqueEmail urlpatterns = patterns('', (r'^accounts/register/', 'registration.views.register', {'form_class':RegistrationFormUniqueEmail,'backend':'registration.backends.default.DefaultBackend' }), )]]></description>
			<content:encoded><![CDATA[<p>Everyone uses django-registration for&#8230; registration&#8230; however.. you may get this error:</p>
<blockquote><p>
TypeError at /accounts/register/</p>
<p>register() takes at least 2 non-keyword arguments (1 given)
</p></blockquote>
<p>Here&#8217;s what your urls.py should look like for the /accounts/register/ url:</p>
<p><b>urls.py</b></p>
<pre class="brush:python">
from django.conf.urls.defaults import *
from registration.forms import RegistrationFormUniqueEmail

urlpatterns = patterns('',
     (r'^accounts/register/', 'registration.views.register', {'form_class':RegistrationFormUniqueEmail,'backend':'registration.backends.default.DefaultBackend' }),
)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/07/20/django-registration-require-a-unique-email-address-for-registration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unique Slugs for Django Objects</title>
		<link>http://www.copyandwaste.com/2011/07/20/unique-slugs-for-django-objects/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unique-slugs-for-django-objects</link>
		<comments>http://www.copyandwaste.com/2011/07/20/unique-slugs-for-django-objects/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 18:30:50 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=312</guid>
		<description><![CDATA[I&#8217;m working on a new project and decided to use slugs to access object information.  The built-in in &#8220;slugify&#8221; does not generate unique slugs for objects, but I found a solution. Overriding the save method allows us to check to see if there are any other objects which have the same slug such as &#8220;how-to-make-a-table&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a new project and decided to use slugs to access object information.  The built-in in &#8220;slugify&#8221; does not generate unique slugs for objects, but I found a <a href="http://djangosnippets.org/snippets/761/">solution</a>.  Overriding the save method allows us to check to see if there are any other objects which have the same slug such as &#8220;how-to-make-a-table&#8221; and if there are we append a number to it such as &#8220;how-to-make-a-table-2.&#8221; Below is a real-world example of a model &#8220;Project&#8221; which has pretty typical fields in it and the code to generate a unique slug.</p>
<p><b>file: /myproject/myapp/models.py</p>
<pre class="brush:python">
from django.contrib.auth.models import User
from sorl.thumbnail import ImageField
import datetime
import re

class Project(models.Model):
        title = models.CharField(max_length=255,blank=True)
        description = models.TextField(blank=True)
        photo = ImageField(upload_to=get_project_upload_path, blank=True, null=True)
        author = models.ForeignKey(User, editable=False,blank=True, null=True)
        pub_date = models.DateTimeField(editable=False, blank=True)
        slug = models.SlugField(unique=True,blank=True)

        def save(self, *args, **kwargs):
		#set pub_date as right now
                self.pub_date=datetime.datetime.now()

		#As long as this object does NOT have a slug
                if not self.slug:
                   from django.template.defaultfilters import slugify

		   #Take the title and replace spaces with hypens, make lowercase
                   potential_slug = slugify(self.title)
                   self.slug = potential_slug

                   while True:
                      try:
			 #try to save the object
                         super(Project, self).save(*args, **kwargs)

		      #if this slug already exists we get an error
                      except IntegrityError:
			 #match the slug or look for a trailing number
                         match_obj = re.match(r'^(.*)-(\d+)$', self.slug)

			 #if we find a match
                         if match_obj:
			    #take the found number and increment it by 1
                            next_int = int(match_obj.group(2)) + 1
                            self.slug = match_obj.group(1) + "-" + str(next_int)
                         else:
			    #There are no matches for <slug>-# so create one with -2
                            self.slug += '-2'
		      #different error than IntegrityError
                      else:
                         break

        def __unicode__(self):
                return self.title
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/07/20/unique-slugs-for-django-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Empty Words Bingo</title>
		<link>http://www.copyandwaste.com/2011/07/19/empty-words-bingo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=empty-words-bingo</link>
		<comments>http://www.copyandwaste.com/2011/07/19/empty-words-bingo/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 14:37:29 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Nothing]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=309</guid>
		<description><![CDATA[A few months ago I created Empty Words so people can track the absurd things they hear in their everyday life.  I&#8217;ve decided to add a new feature inspired by buzzword bingo: &#160; Bingo cards are generated off the phrases entered into the Empty Words website, play with your co-workers!, play with your boss! (well, [...]]]></description>
			<content:encoded><![CDATA[<p>A few <a href="http://www.copyandwaste.com/2011/03/07/empty-words-can-make-you-appear-like-you-are-saying-a-lot-but-im-on-to-you/">months ago</a> I created <a href="http://www.empty-words.com">Empty Words</a> so people can track the absurd things they hear in their everyday life.  I&#8217;ve decided to add a new feature inspired by <a href="http://en.wikipedia.org/wiki/Buzzword_bingo">buzzword bingo</a>:</p>
<p><a href="http://www.empty-words.com/bingo"><img class="alignnone size-medium wp-image-310" title="empty-words-bingo" src="http://www.copyandwaste.com/wp-content/uploads/2011/07/empty-words-bingo-300x283.png" alt="" width="300" height="283" /></a></p>
<p>&nbsp;</p>
<p>Bingo cards are generated off the phrases entered into the <a href="http://www.empty-words.com">Empty Words</a> website, play with your co-workers!, play with your boss! (well, that might not be a good idea).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/07/19/empty-words-bingo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hatch &#8211; Create and Share Configuration Templates</title>
		<link>http://www.copyandwaste.com/2011/07/18/hatch-create-and-share-configuration-templates/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hatch-create-and-share-configuration-templates</link>
		<comments>http://www.copyandwaste.com/2011/07/18/hatch-create-and-share-configuration-templates/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 18:13:31 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=303</guid>
		<description><![CDATA[About a month ago I wrote what I call hatch, which helps you create templates and generate configurations on the fly. Originally the idea was to allow people to store configuration files, but I nixed that idea and it reduced my amount of code by about 50%. Instead I added a few convenient features such [...]]]></description>
			<content:encoded><![CDATA[<p>About a <a href="http://www.copyandwaste.com/2011/06/02/hatch-configuration-file-generator/">month ago</a> I wrote what I call <a href="http://hatch.use.io">hatch</a>, which helps you create templates and generate configurations on the fly.  Originally the idea was to allow people to store configuration files, but I nixed that idea and it reduced my amount of code by about 50%.  Instead I added a few convenient features such as a <a href="http://hatch.use.io/generate/7/">copy-to-clipboard button</a>, <a href="https://docs.djangoproject.com/en/dev/ref/contrib/comments/">comments</a>, <a href="http://www.freewisdom.org/projects/python-markdown/Django">markdown syntax</a>, <a href="http://code.google.com/p/django-tagging/">tagging</a>, and user <a href="https://bitbucket.org/ubernostrum/django-profiles">profiles</a> with <a href="http://thumbnail.sorl.net/">avatar</a> support.</p>
<p>On top of all the new features, <a href="http://hatch.use.io">hatch</a> went through a re-design:<br />
<a href="http://hatch.use.io"><img class="alignnone size-full wp-image-304" title="hatch-redsign" src="http://www.copyandwaste.com/wp-content/uploads/2011/07/hatch-redsign.png" alt="" width="598" height="129" /></a></p>
<p>To make hatch better, I&#8217;ve started eating my own <a href="http://hatch.use.io/templates/author/akonkol">dog food</a> and so far so good.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/07/18/hatch-create-and-share-configuration-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>django-tagging and template tags</title>
		<link>http://www.copyandwaste.com/2011/07/11/django-tagging-and-template-tags/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=django-tagging-and-template-tags</link>
		<comments>http://www.copyandwaste.com/2011/07/11/django-tagging-and-template-tags/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 18:30:06 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=297</guid>
		<description><![CDATA[I recently used django-tagging for a project and ran into the following error when trying to use this package&#8217;s template tags: &#8220;Invalid block tag: &#8216;tag_cloud_for_model&#8217; &#8221; To use this package&#8217;s template tags (such as tag_cloud_for_model) you must load the template tag code as such: {% load tagging_tags %} It&#8217;s not in the documentation&#8230;]]></description>
			<content:encoded><![CDATA[<p>I recently used <a href="http://api.rst2a.com/1.0/rst2/html?uri=http://django-tagging.googlecode.com/svn/trunk/docs/overview.txt">django-tagging</a> for a project and ran into the following error when trying to use this package&#8217;s template tags:<br />
&#8220;Invalid block tag: &#8216;tag_cloud_for_model&#8217; &#8221;</p>
<p>To use this package&#8217;s template tags (such as tag_cloud_for_model) you must load the template tag code as such:</p>
<p>{% load tagging_tags %}</p>
<p>It&#8217;s not in the documentation&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/07/11/django-tagging-and-template-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Banners.</title>
		<link>http://www.copyandwaste.com/2011/04/18/banners/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=banners</link>
		<comments>http://www.copyandwaste.com/2011/04/18/banners/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 15:24:22 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Nothing]]></category>
		<category><![CDATA[SysAdmin]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=262</guid>
		<description><![CDATA[I&#8217;ve always put ascii art in the motd of my servers, and I think im going to keep track of them now. ,dPYb, IP'`Yb I8 8I I8 8' ,ggg, ,gggg, I8 dPgg, ,ggggg, i8" "8i dP" "Yb I8dP" "8I dP" "Y8ggg I8, ,8I i8' I8P I8 i8' ,8I `YbadP' ,d8,_ _,d8 I8,,d8, ,d8' 888P"Y888P""Y8888PP88P `Y8P"Y8888P" [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always put ascii art in the motd of my servers, and I think im going to keep track of them now.</p>
<pre>

                    ,dPYb,
                    IP'`Yb
                    I8  8I
                    I8  8'
  ,ggg,     ,gggg,  I8 dPgg,     ,ggggg,
 i8" "8i   dP"  "Yb I8dP" "8I   dP"  "Y8ggg
 I8, ,8I  i8'       I8P    I8  i8'    ,8I
 `YbadP' ,d8,_    _,d8     I8,,d8,   ,d8'
888P"Y888P""Y8888PP88P     `Y8P"Y8888P"

                                  $$\
                                  \__|
$$\   $$\  $$$$$$$\  $$$$$$\      $$\  $$$$$$\
$$ |  $$ |$$  _____|$$  __$$\     $$ |$$  __$$\
$$ |  $$ |\$$$$$$\  $$$$$$$$ |    $$ |$$ /  $$ |
$$ |  $$ | \____$$\ $$   ____|    $$ |$$ |  $$ |
\$$$$$$  |$$$$$$$  |\$$$$$$$\ $$\ $$ |\$$$$$$  |
 \______/ \_______/  \_______|\__|\__| \______/

 .d888                  888                    888
d88P"                   888                    888
888                     888                    888
888888 .d88b.  888  888 888888 888d888 .d88b.  888888
888   d88""88b `Y8bd8P' 888    888P"  d88""88b 888
888   888  888   X88K   888    888    888  888 888
888   Y88..88P .d8""8b. Y88b.  888    Y88..88P Y88b.
888    "Y88P"  888  888  "Y888 888     "Y88P"   "Y888 
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/04/18/banners/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing Avon MT-CC-86-ANO Hand Grips on a Triumph Speedmaster</title>
		<link>http://www.copyandwaste.com/2011/04/07/installing-avon-mt-cc-86-ano-hand-grips-on-a-triumph-speedmaster/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-avon-mt-cc-86-ano-hand-grips-on-a-triumph-speedmaster</link>
		<comments>http://www.copyandwaste.com/2011/04/07/installing-avon-mt-cc-86-ano-hand-grips-on-a-triumph-speedmaster/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 17:48:52 +0000</pubDate>
		<dc:creator>Andrew Konkol</dc:creator>
				<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://www.copyandwaste.com/?p=242</guid>
		<description><![CDATA[Avon Grips Triumph Speedmaster Steps 1. Un-screw hex screws from handlebar endcaps 2. Un-screw hex screws from switchgear assembly 3. Twist throttle grip down and remove throttle cables 4. Un-screw hex screws from master cylinder mounting clamp, be careful to hold onto the assembly 5. Find the &#8220;B&#8221; throttle gear included with the Avon kit [...]]]></description>
			<content:encoded><![CDATA[<h2>Avon Grips</h2>
<p><a title="avon_metric_grips" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/avon_metric_grips.jpg"><img class="attachment wp-att-257 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/avon_metric_grips.jpg" alt="avon_metric_grips" width="281" height="309" /></a></p>
<h2>Triumph Speedmaster</h2>
<p><a title="triumph_speedmaster" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/triumph_speedmaster.jpg"><img class="attachment wp-att-258 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/triumph_speedmaster.jpg" alt="triumph_speedmaster" width="281" height="514" /></a></p>
<h1>Steps</h1>
<h2>1. Un-screw hex screws from handlebar endcaps</h2>
<p><a title="1_remove_hand_grip_screws" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/1_remove_hand_grip_screws.jpg"><img class="attachment wp-att-245 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/1_remove_hand_grip_screws.jpg" alt="1_remove_hand_grip_screws" width="578" height="602" /></a></p>
<h2>2. Un-screw hex screws from switchgear assembly</h2>
<p><a title="2_Remove_switch_gear_cover" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/2_Remove_switch_gear_cover.jpg"><img class="attachment wp-att-247 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/2_Remove_switch_gear_cover.jpg" alt="2_Remove_switch_gear_cover" width="416" height="285" /></a></p>
<h2>3. Twist throttle grip down and remove throttle cables</h2>
<p><a title="3_Remove_throttle_cable" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/3_Remove_throttle_cable.jpg"><img class="attachment wp-att-249 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/3_Remove_throttle_cable.jpg" alt="3_Remove_throttle_cable" width="416" height="288" /></a></p>
<h2>4. Un-screw hex screws from master cylinder mounting clamp, be careful to hold onto the assembly</h2>
<p><a title="4_Remove_master_cylinder_mounting_bracket" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/4_Remove_master_cylinder_mounting_bracket.jpg"><img class="attachment wp-att-251 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/4_Remove_master_cylinder_mounting_bracket.jpg" alt="4_Remove_master_cylinder_mounting_bracket" width="416" height="285" /></a></p>
<h2>5. Find the &#8220;B&#8221; throttle gear included with the Avon kit and super glue it to the throttle body according to Avon&#8217;s recommendations</h2>
<p><a title="5_Glue_B" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/5_Glue_B.jpg"><img class="attachment wp-att-256 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/5_Glue_B.jpg" alt="5_Glue_B" width="342" height="121" /></a></p>
<h2>6. Slide the new throttle side grip over the handlebar, position the right hand assembly where you want it and re-mount the master cylinder mounting clamp by screwing in the two hex screws</h2>
<h2>7. Twist the throttle grip down and insert the ball ends of the throttle cables into the new throttle cap (the thing you glued onto the new grip)</h2>
<h2>8. Screw on the switchgear plate</h2>
<h2>9. Use a razor blade and cut through the clutch side grip and remove the grip</h2>
<h2>10. Clean off the clutch side handlebar and apply the tape supplied with the Avon kit making sure that there is a 1/4&#8243; hanging over the end of the bar, and remove the backing of the tape so that there is tape adhesive exposed</h2>
<h2>11. Apply adhesive solution provided in kit evenly over the tape area and inside the clutch grip</h2>
<h2>12. Slide clutch grip over tape and solution, making sure the &#8216;Avon&#8217; logo position matches the same &#8216;Avon&#8217; logo on the throttle side</h2>
<h2>13. Check to make sure the clutch is securely glued on after 2 hours, once dry screw in the 4 surrounding screws on the grip</h2>
<h2>14. Adjust the opening cable and closing cable so that the throttle grip returns to idle after accelerating and letting go</h2>
<p><a title="14_Remove_throttle_cable" rel="lightbox[pics242]" href="http://www.copyandwaste.com/wp-content/uploads/2011/04/14_Remove_throttle_cable.jpg"><img class="attachment wp-att-254 " src="http://www.copyandwaste.com/wp-content/uploads/2011/04/14_Remove_throttle_cable.jpg" alt="14_Remove_throttle_cable" width="416" height="288" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.copyandwaste.com/2011/04/07/installing-avon-mt-cc-86-ano-hand-grips-on-a-triumph-speedmaster/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

