<?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>PaperCut Blog / News &#187; Tom</title>
	<atom:link href="http://www.papercut.com/blog/author/tom/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.papercut.com/blog</link>
	<description>Keep an eye on what the PaperCut developers are up to ...</description>
	<lastBuildDate>Thu, 19 Jan 2012 03:01:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Switching between your desktop audio devices</title>
		<link>http://www.papercut.com/blog/tom/2010/10/26/switching-desktop-audio/</link>
		<comments>http://www.papercut.com/blog/tom/2010/10/26/switching-desktop-audio/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 03:18:53 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.papercut.com/blog/?p=1017</guid>
		<description><![CDATA[Hands up if any of this sounds familiar: You&#8217;re at your desk. Your headset is plugged into your cell phone to play music. The desktop phone rings. You take off your headset to pick up the handset. Then someone calls &#8230; <a href="http://www.papercut.com/blog/tom/2010/10/26/switching-desktop-audio/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_1026" class="wp-caption alignright" style="width: 510px"><a href="http://www.papercut.com/blog/wp-content/uploads/2010/10/spaghetti-cables.jpg"><img src="http://www.papercut.com/blog/wp-content/uploads/2010/10/spaghetti-cables.jpg" alt="Spaghetti Cables" title="Spaghetti Cables" width="500" height="333" class="size-full wp-image-1026" /></a><p class="wp-caption-text">Spaghetti Cables</p></div><br />
Hands up if any of this sounds familiar: You&#8217;re at your desk.  Your headset is plugged into your cell phone to play music.  The desktop phone rings.  You take off your headset to pick up the handset.  Then someone calls on Skype.  You unplug the headset from the cell phone and plug in into the computer.  Now the cell phone rings.  You pick up the cell phone, unplugging its charger in the process.  The call finishes, cell phone goes back on the table, charger and headset plugged back in&#8230;</p>
<p>That&#8217;s what my desktop is like here at <a href="/">PaperCut</a>, and it&#8217;s a real pain in the donkey.  One day after enough plugging and unplugging to wear out the connections I decided it was time to look for a better way&#8230;<br />
<span id="more-1017"></span><br />
<div id="attachment_1036" class="wp-caption alignleft" style="width: 310px"><a href="http://www.papercut.com/blog/wp-content/uploads/2010/10/printer_switch.jpg"><img src="http://www.papercut.com/blog/wp-content/uploads/2010/10/printer_switch.jpg" alt="Parallel Printer Switch to share printers" title="printer_switch" width="300" height="237" class="size-full wp-image-1036" /></a><p class="wp-caption-text">Ye Olde Printer Share - the LPT switch!</p></div> The first step was to see what was already out there.  I remembered back to the old days of sharing parallel port printers between computers with hardware switches like the one on the left, and KVM switches for using the same keyboard and monitor for multiple computers.  Perhaps there was already an equivalent for desktop audio?  I searched for &#8220;audio switch&#8221;, &#8220;headset switch&#8221; and so on.  None of it was particularly interesting, although there were a few pages describing how to <a target="_blank" href="http://www.instructables.com/id/DIY-Audio-Switch/">build your own</a> (which were very nice, but I wasn&#8217;t quite ready for DIY).</p>
<p>What I did find was plenty of audio/video switches for <a target="_blank" href="http://en.wikipedia.org/wiki/RCA_connector">RCA</a> plugs &#8211; the kind you would use under an old TV to switch between TV, VCR and DVD.  This formed the basis of a crazy plan: could I use an AV switch for desktop audio?  RCA has three plugs &#8211; two for audio, one for video.  Surely I could just use the video plug for the microphone and I&#8217;d be set?!</p>
<p>I went to work finding all the parts.  These arrived in bits and pieces over the next few weeks, at prices I don&#8217;t attempt to comprehend (one connector was shipped from Hong Kong in an envelope with a hand-written address, and the total price was less than a dollar!).  All going to plan, this setup would allow me to:</p>
<ul>
<li>Listen to music/audio from my cell phone, and answer calls.</li>
<li>Listen to music/audio from my computer, and answer calls (on VoIP / Skype).</li>
<li>Answer calls from my desktop phone.</li>
</ul>
<p>And if I wanted any of that on my desktop speakers, I&#8217;d just need to turn them on.</p>
<p>Here&#8217;s how it fit together:<br />
<div id="attachment_1019" class="wp-caption aligncenter" style="width: 443px"><a href="http://www.papercut.com/blog/wp-content/uploads/2010/10/audio-switch.jpg"><img src="http://www.papercut.com/blog/wp-content/uploads/2010/10/audio-switch.jpg" alt="Audio Switch Diagram" title="Audio Switch Diagram" width="433" height="944" class="size-full wp-image-1019" /></a><p class="wp-caption-text">I have no idea what some of these connectors are really used for</p></div></p>
<p>And&#8230; it worked!  Kind of.</p>
<p>When switched to the desktop phone there was a loud static hissing.  When switched to the computer, Skype wouldn&#8217;t recognize the microphone (although other applications worked fine).  Perhaps both of these were due to the poor quality switch?  In any case, the setup didn&#8217;t cut it.</p>
<p>What&#8217;s the next step?  These days many modern headsets plug into computers via USB.  This means they don&#8217;t use the computer&#8217;s sound card, but rather emulate their own.  This allows the headset to produce/emulate surround sound, have a microphone, add mute buttons and other buttons all sharing the one USB plug.  Obviously the audio switch setup above can&#8217;t be used with a USB plug, but if everything was in the computer and managed by software then the problem goes away &#8211; you could just switch between inputs and outputs in your OS&#8217;s sound properties.</p>
<p>This shift from hardware to software is the inevitable evolution of many technologies.  This includes printing, as Peter pointed out in <a href="/blog/peter/2010/08/10/25-years-of-digital-printing/">his post on the history of digital printing</a> and of course demonstrated clearly by the fact that we don&#8217;t use hardware printer switches today!  Putting these functions in software allows for ultimate flexibility in switching, control and automation.  When someone is calling, the audio can die down and pause, and afterwards the audio resumes, just like happens on cell phones today.</p>
<p>All of this seems like it should be technically possible, but the devil is in the details.  Does anyone have a desktop audio success story to share?  How do you manage your audio devices in the office or at home?</p>
<p><span style="font-size: 0.8em;"><a href="http://www.flickr.com/photos/comedynose/4103140420/">Image &#8220;Project 365 #318: 141109 Spaghetti Junction!&#8221; by comedy_nose</a> / <a href="http://creativecommons.org/licenses/by/2.0/">CC BY</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2010/10/26/switching-desktop-audio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trailing Slashes On Your URLs: To Be, or Not to Be, is it a Question?</title>
		<link>http://www.papercut.com/blog/tom/2010/07/08/trailing-slashes-on-your-urls-to-be-or-not-to-be-is-it-a-question/</link>
		<comments>http://www.papercut.com/blog/tom/2010/07/08/trailing-slashes-on-your-urls-to-be-or-not-to-be-is-it-a-question/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 03:37:36 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.papercut.com/blog/?p=474</guid>
		<description><![CDATA[A few weeks ago we launched our new website design. Working on the website took up the majority of my time in the few weeks prior. As part of the redesign we added a number of new pages, removed some &#8230; <a href="http://www.papercut.com/blog/tom/2010/07/08/trailing-slashes-on-your-urls-to-be-or-not-to-be-is-it-a-question/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago we launched <a href="/blog/chris/2010/06/22/welcome-to-our-new-website/">our new website design</a>.  Working on the website took up the majority of my time in the few weeks prior.  As part of the redesign we added a number of new pages, removed some and moved others from one place to another.  During this process a question was raised, &#8220;Should our URLs have trailing slashes?&#8221;.  What we were talking about is this: <code>http://example.org/page/</code> versus this: <code>http://example.org/page</code> .  The former has a slash on the end, the latter doesn&#8217;t.  Does it matter?  Which one is better?</p>
<h3>Does it matter?</h3>
<p><img src="http://www.papercut.com/blog/wp-content/uploads/2010/07/slash.png" alt="slash" title="slash" width="375" height="344" class="alignright size-full wp-image-493" /></p>
<p>It certainly matters if you are allowing <em>both</em> URLs to access the same content.  <a href="http://googlewebmastercentral.blogspot.com/2008/11/googles-seo-starter-guide.html">Google&#8217;s SEO Starter Guide</a> says</p>
<blockquote><p>
&#8220;Provide one version of a URL to reach a document&#8221;
</p></blockquote>
<p>or risk splitting the reputation of the page between all the URLs used to access it.  This means that at best it won&#8217;t matter for you.  At worst you&#8217;ll have your page&#8217;s reputation diminished, and you might also be penalised for duplicate content.</p>
<p>The best option is to pick one scheme, use that scheme in all your links, and redirect users who access your pages using the other scheme.</p>
<h3>So it probably matters.  Now do we slash or not?</h3>
<p>I lean heavily towards slashless URLs, but at first I couldn&#8217;t put a finger on why.  &#8220;They just look right&#8221;.  So I thought about it for a while, made a list of the factors I could think of, and wrote it up as a blog post.</p>
<h3>Semantics</h3>
<p>What does it mean for a URL to contain a trailing slash?  For me, it traditionally means &#8220;this is a directory listing&#8221;.  When performing a request on a URL that maps to an actual directory in the file system in absence of an index document most web servers serve up a listing of the files in that directory.  This is similar to doing an <code>ls</code> or <code>dir</code> from a terminal.  Does the same apply when accessing <code>http://www.papercut.com/blog/</code>?  That page is serving up the <em>X most recent</em> blog <em>posts</em>, and the view might depend on whether or not you&#8217;re logged in.  In my opinion it is not a canonical list of sub-items items being served up, so the directory analogy doesn&#8217;t fully hold.</p>
<p>The more interesting part of how slashes affect semantics is the format of the response.  What&#8217;s actually happening when a web browser requests <code>/blog</code> is the web server recognising that no specific format was requested in the URL (i.e. there was no <code>.html</code> extension), but because it&#8217;s a web browser making the request it makes an assumption that it wants the response in HTML.  On the modern web that&#8217;s no longer a given.  We have <code>.json</code>, <code>.atom</code>, <code>.rss</code>, <code>.xml</code> and others.  If a browser wants a view of something in a format other than HTML, it makes sense to allow that simply by adding the requested extension.  E.g. <code>http://example.org/blog.atom</code> .  If the URL had a trailing slash that would become <code>http://example.org/blog/.atom</code>, which looks horrible.</p>
<p>Reddit provides at least one example of where both a trailing slash and format extension <a href="http://www.reddit.com/r/all/new/.json">are used together</a>!</p>
<h3>Role Models</h3>
<p>What are the big boys doing?  Google <a href="http://www.google.com/analytics/">sometimes add slashes</a> and <a href="http://www.google.com/contacts">sometimes don&#8217;t</a>, but they pick one and use redirects to enforce it.  Stack Overflow <a href="http://stackoverflow.com/questions/3060174/trailing-slashes-yes-or-no">allows</a> <a href="http://stackoverflow.com/questions/3060174/trailing-slashes-yes-or-no/">both</a> (!), but their own links omit them.  Wikipedia <a href="http://en.wikipedia.org/wiki/URL">omits slashes</a> and <a href="http://en.wikipedia.org/wiki/URL">doesn&#8217;t know what you mean if you add one</a>.</p>
<p><a href="http://rubyonrails.org/">Ruby on Rails</a> put <a href="http://en.wikibooks.org/wiki/Ruby_on_Rails/Routing">a lot of thought</a> into their <a href="http://api.rubyonrails.org/classes/ActionController/Routing.html">URL routing functionality</a>.  The result is, in my opinion, the most intuitive and complete definition for URL schemes anywhere.  It should serve as a model to other frameworks and to those creating URL schemes by hand.  Oh, and trailing slashes aren&#8217;t used (unless you go through some extra work to add them back in).</p>
<h3>Legacy</h3>
<p>For us the main factor was legacy.  Most of our website URLs would remain the same (we were just introducing some new ones), and they already had trailing slashes.  Would it hurt to redirect all the slashful URLs across to slashless ones?  The best we could come up with is &#8220;maybe&#8221;, but that was enough to can the idea.  Redirecting one URL to another via a <a href="http://en.wikipedia.org/wiki/301_redirect#HTTP_status_codes_3xx">301 redirect</a> (&#8220;moved permanently&#8221;) is rumoured to result in the page&#8217;s reputation flowing to the new URL.  In practise, <a href="http://www.stonetemple.com/articles/interview-matt-cutts-012510.shtml">and confirmed at least once by Google</a>, some of that reputation will be lost.</p>
<p>We&#8217;ve done a similar thing once in the past when we switched our main domain from <code>papercut.biz</code> to <code>papercut.com</code>.  We used 301 redirects for all our URLs but several pages lost some reputation (e.g. from <a href="http://en.wikipedia.org/wiki/Pagerank">PageRank</a> 6 to 5).  Any pages that lost reputation gained it back after a month or two, however.</p>
<h3>Implementation</h3>
<p>Ask four web devs how to implement pretty URLs or remove/add your slashes and you&#8217;ll get seventeen answers.  We use Apache with PHP, and implement the redirection in our root <a href="http://wiki.apache.org/httpd/Htaccess">.htaccess</a> file via Apache&#8217;s <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a>.</p>
<p>Firstly we provide access to .php pages using &#8220;directory naming&#8221;:<br />
<code><br />
RewriteCond %{PATH_INFO} ^/$<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteCond %{REQUEST_FILENAME}.php -f<br />
RewriteRule . %{REQUEST_FILENAME}.php [L]<br />
</code><br />
<em>(the above reads &#8220;if the requested filename doesn&#8217;t exist as a real file or directory, but adding .php on the end results in a real file, serve up that .php file (but don&#8217;t change the URL&#8221;).</em></p>
<p>Then we add a trailing slash if none was present in the request:<br />
<code><br />
RewriteCond %{PATH_INFO} ^/?$<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteCond %{REQUEST_FILENAME}.html -f [OR]<br />
RewriteCond %{REQUEST_FILENAME}.php -f<br />
RewriteRule (.*[^\/])$ $1/ [R=301,NS]<br />
</code><br />
<em>(the above reads &#8220;if the requested filename doesn&#8217;t exist as a real file or directory, but adding .php or .html on the end results in a real file, if they didn&#8217;t add a trailing slash then send the browser a permanent redirect to add the slash&#8221;).</em></p>
<p>Search on this topic and you&#8217;ll find hundreds of ways to do similar things, many of which have subtle problems in certain situations.  Ours probably isn&#8217;t perfect, but it&#8217;s been working for us so far.</p>
<h3>Summary</h3>
<ul>
<li>Picking slashful versus slashless URLs probably matters.  Pick one or the other, don&#8217;t allow both to return the same content.</li>
<li>Accessing a URL with a slash on the end is not fully analogous with performing a directory listing.</li>
<li>Slashless URLs look much better when you want to support multiple formats (<code>/page.json</code> not <code>/page/.json</code>).</li>
<li>In the wild, people do it both ways.</li>
<li>Ruby on Rails has a very nice and complete system for dealing with URLs, and they don&#8217;t use trailing slashes.</li>
<li>If you already do it one one, your pages will probably lose some reputation if you redirect them to the other way.</li>
<li>Implementation is a black art.  Allow yourself time to understand the details.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2010/07/08/trailing-slashes-on-your-urls-to-be-or-not-to-be-is-it-a-question/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>teamSize++</title>
		<link>http://www.papercut.com/blog/tom/2009/10/09/teamsize/</link>
		<comments>http://www.papercut.com/blog/tom/2009/10/09/teamsize/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 05:55:51 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.papercut.com/blog/tom/2009/10/09/teamsize/</guid>
		<description><![CDATA[As time goes on we increase both the number of features in our software and the number of customers using it. Because the developers of PaperCut also provide customer support, there is a balance between the two that continues to &#8230; <a href="http://www.papercut.com/blog/tom/2009/10/09/teamsize/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As time goes on we increase both the number of features in our software and the number of customers using it.  Because the developers of PaperCut also provide customer support, there is a balance between the two that continues to tip towards support as the number of customers increases.  When the team starts to feel like our rate of development is slowing it&#8217;s time to increase the size of the team (someone suggested reducing the size of our customer base but were promptly shut down).</p>
<p>Traditionally we&#8217;ve hired only software developers.  This is good for keeping up development pace, and our customers are happy to speak directly with the developers for support.  There is a gap, however: when developing PaperCut we work with programming languages, web technologies and APIs.  When supporting PaperCut we deal with print queues, user directories and databases.  While we know a lot about the technologies our customers use, our expertise is in developing software for our customers.  It became clear that we want someone who knows all about the technologies our customers use to help our customers use our software with those technologies.  It became clear that we want&#8230; one of our customers.</p>
<p>The full position description is included after the break.  If you&#8217;re applying mention that you read our blog for bonus points!</p>
<p><span id="more-157"></span></p>
<h3>Software Support Specialist</h3>
<ul>
<li>Smart customers, smart colleagues.</li>
<li>International customer base – work with sysadmins from around the world.</li>
<li>Influence the direction of our actively developed software.</li>
</ul>
<h4>The Company:</h4>
<p>PaperCut Software is an Australian software development house based in Mount Waverley, Melbourne.  We develop print, copier and internet control software that is used worldwide in over 60 countries and 20,000 organisations.  We are a small team of IT adepts who love to talk tech.  The work environment is casual and the organisational structure is flat.</p>
<p>Our customers include many high profile education and business organisations, such as Harvard University, the University of Cambridge and Allianz.</p>
<h4>The Job:</h4>
<p>Our software is installed and configured by our customers&#8217; own system administrators, such as the IT department at a university.  These sysadmins inevitably have questions about our software or how it integrates with their environment.</p>
<p>Your job will be to assist our customers with any questions they may have.  This will require a thirst for knowledge and ability to easily learn technologies, as questions and customer environments are diverse.  The majority of our support is conducted via email, but we also use phone calls / VoIP, live web chat, remote access software and on rare occasions on-site support or training.</p>
<p>Many customers operate multi-platform environments including combinations of Windows, Mac, Linux and Novell servers and workstations.  As you might imagine these are not your typical end-users; they are some of the world&#8217;s top system administrators – less RTFM, more challenges.  Topics can range from print queues, directory servers, login scripts, databases, resource management, virtual machines, clustering and of course bugs in our software to name a few.</p>
<p>This is not a typical support role and is certainly not a call centre.  You&#8217;ll be working in a small, tight-knit team and will be responsible for converting customer ideas into implementations by working directly with the developers.</p>
<p>As we are a small company opportunities will arise to work in other areas that interest you, such as managing internal systems, testing our software with new operating systems and applications or working on the software itself.</p>
<h4>Required:</h4>
<ul>
<li>Minimum 3 years commercial experience in system administration, product/system support or a related field.</li>
<li>Excellent communication skills.</li>
<li>Proven aptitude for troubleshooting.</li>
</ul>
<h4>Preferable:</h4>
<ul>
<li>Diverse system administration skills (multiple platforms a plus).</li>
<li>Scripting or programming experience.</li>
<li>Experience using sysadmin tools to diagnose issues, such as Sysinternals utilities.</li>
</ul>
<h4>To Apply:</h4>
<p>Express your interest to Tom Clift by sending your CV and cover letter to jobs@papercut.com.  Applications close November 6.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2009/10/09/teamsize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brewing Beer: Why I Started With Grain</title>
		<link>http://www.papercut.com/blog/tom/2009/04/07/brewing-beer-why-i-started-with-grain/</link>
		<comments>http://www.papercut.com/blog/tom/2009/04/07/brewing-beer-why-i-started-with-grain/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 07:54:20 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.papercut.com/blog/tom/2009/04/07/brewing-beer-why-i-started-with-grain/</guid>
		<description><![CDATA[editor&#8217;s note: The development team has given Tom 10/10 for his beer and has asked him to bring some more in for us all to enjoy! The programmers here at PaperCut all write print management software for a day job, &#8230; <a href="http://www.papercut.com/blog/tom/2009/04/07/brewing-beer-why-i-started-with-grain/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>editor&#8217;s note:</strong>  <em>The development team has given Tom 10/10 for his beer and has asked him to bring some more in for us all to enjoy!</em></p>
<p>The programmers here at PaperCut all write <a href="/" class="nostyle">print management software</a> for a day job, but have varied and often somewhat eccentric hobbies out of hours.  I&#8217;d like to share with you one of my recent discoveries: all-grain brewing.  I&#8217;d hazard a guess that home brewers are disproportionately represented amongst all you techies and readers of this blog, so hopefully you&#8217;ll find this interesting.</p>
<p>As an engineer and lover of beer it was inevitable that one day I would pose myself the question, &#8220;how does this beer stuff work and how can I make it?&#8221;.  I&#8217;d been put off for many years because the only home-brew I&#8217;d heard about was to brew from extract.  In summary, extract brewing means:</p>
<ul>
<li>Buy a kit from the supermarket.  A kit usually has malt extract, hops and dry yeast.</li>
<li>Boil the malt extract with water and the hops.</li>
<li>Put the result into a fermentor with the yeast.</li>
<li>Put the result into bottles with some sugar.</li>
</ul>
<p>Well that&#8217;s easy enough, but it&#8217;s not exactly an art form.  How can you change the flavour of the beer?  By choosing a different kit, and maybe by varying the boil or amount of hops used.  That&#8217;s why extract brewing was completely disinteresting to me.  The value proposition seems to be that you can make beer cheaper than you can buy it, which is really only because you don&#8217;t have to pay alcohol tax to drink your own home-brew.  To me it was like trying to be a handyman by building Ikea flatpacks.</p>
<p>Then I discovered all-grain brewing.  Not only is all-grain brewing possible to do at home, it&#8217;s actually quite easy and doesn&#8217;t require much additional equipment.  Rather than using malt extract all-grain brewing involves starting with malted grains (a sack of grain, available at brew shops) and extracting the sugars yourself.  This is &#8220;real brewing&#8221;, and allows you to take on any style of beer you can think of by varying the malts, water, hops, yeast, sugars and other additions.</p>
<p>One site that was a fantastic guide for me while learning about brewing was the aptly named <a href="http://howtobrew.com/">howtobrew.com</a>.  This covers a lot of the theory behind brewing, as well as guides for building some of the specialised equipment.</p>
<div style="text-align: center;">
  <img src="http://www.howtobrew.com/images/f162.jpg" alt="mash/lauter tun and manifold" style="width: 200px;" /></p>
<div><em>from <a href="http://howtobrew.com/">howtobrew.com</a>&#8216;s instructions for building a piece of brewing equipment: a <a href="http://howtobrew.com/appendices/appendixD.html">mash/lauter tun and manifold</a></em></div>
</div>
<p>For the first batch my brewing partner and I decided to start with a beer that would require as little &#8220;modification&#8221; as possible.  When extracting sugars from malt the water quality is a big factor.  Basically: the harder the water, the darker the beer.  This is why Dublin, with its very hard water, is known for its dark stouts, and Pilsen, with its very pure/soft water, is known for light coloured beers (and the Pilsner style).  Melbourne&#8217;s water is about as pure as it is in Pilsen, so we settled on a Pilsner.</p>
<p>The one thing we didn&#8217;t count on was fermentation temperature.  A Pilsner beer calls for a lager yeast, which ferments best at around 9°C (48°F).  This might not be a problem in Pilsen, but in Melbourne that&#8217;s almost impossible without refrigeration (unless you want to leave it outside in the winter, in which case you&#8217;d risk freezing it).  Ale yeasts on the other hand call for a temperature of around 20°C (68°F), which is much more achievable.  So the result was a &#8220;Pilsner ale&#8221;.  Not exactly a recognised style, but that&#8217;s part of the fun.</p>
<p>We couldn&#8217;t have been happier with our first all-grain batch.  It&#8217;s encouraged us to learn more about the details (and there is a <em>lot</em> to learn) and to try other styles of beer.  Fermenting now: a strong Scottish ale.</p>
<p>If you&#8217;ve got some brewing experiences to share I&#8217;d love to hear about them in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2009/04/07/brewing-beer-why-i-started-with-grain/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Most Common Misspelling</title>
		<link>http://www.papercut.com/blog/tom/2008/09/02/the-most-common-misspelling/</link>
		<comments>http://www.papercut.com/blog/tom/2008/09/02/the-most-common-misspelling/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 02:04:50 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.papercut.com/blog/tom/2008/09/02/the-most-common-misspelling/</guid>
		<description><![CDATA[The internet is a great place to laugh and poke fun at the grammatical abilities of its denizens. Not that I claim to be such an expert; I just enjoy the occasional entertainment at someone else&#8217;s expense. While some, like &#8230; <a href="http://www.papercut.com/blog/tom/2008/09/02/the-most-common-misspelling/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The internet is a great place to laugh and poke fun at the grammatical abilities of its denizens.  Not that I claim to be such an expert; I just enjoy the occasional entertainment at someone else&#8217;s expense.  While some, like &#8220;<em>you loose</em>&#8221; and &#8220;<em>your a &#8230;</em>&#8221; are just plain annoying, there is the odd gem like <a href="http://failblog.org/2008/08/25/burn-of-the-week-5/">cereal killer</a> (that link is from FAIL Blog&#8217;s <a href="http://failblog.org/tag/burn/">Burn of the Week</a>, which has been a bit of a regular for classic grammar blunders).</p>
<p>Fortunately for the grammatically challenged, there are a few factors that save from too much embarrassment:</p>
<ol>
<li>A spell checker</li>
<li>Anonymity</li>
<li>Obscurity (the fact that very few people are actually going to read what you wrote)</li>
</ol>
<p>I&#8217;d like to highlight an example that failed all three, is possibly the most common misspelling of all time, yet is one I&#8217;d never seen or heard of until the other day.</p>
<p>I was recently working on integrating PaperCut&#8217;s <a href="http://www.papercut.com/tour/balance-recharge/online-payment-gateways/">Payment Gateway Module</a> with the <a href="http://www.barclaycardbusiness.co.uk/accepting_cards/phone_mail_internet/end_to_end/">Barclaycard ePDQ CPI</a> service, allowing students (or others) to transfer value from their bank or credit account into their PaperCut account, which they can then use in addition to any <a href="http://www.papercut.com/" class="nostyle">print quotas</a> they receive.</p>
<p>One of the security features of the Barclaycard service is to only accept connections from users who have been redirected from a particular URI.  This is a feature of HTTP called the <strong>referrer URI</strong> &#8211; our web browsers tell the web page we are visiting where we just came from.  This information is valuable for web masters to understand where their viewers are coming from.  In this case, only accepting users who have come from a particular URI prevents a malicious site trying to make use of the service.</p>
<p>During development, this turned out to be more of an annoyance than anything.  Luckily, there is an easy way to set/fake the HTTP referrer URI in Java:<br />
<code>urlConn.setRequestProperty("Referrer", "http://my.allowed.url/");</code></p>
<p>Something was wrong though&#8230; the above line didn&#8217;t seem to be working, or at least Barclaycard was still refusing my connection.  Perhaps I spelt it wrong?  A quick search in an online dictionary confirmed I&#8217;d spelt it correctly.  But wait, what was the next entry?</p>
<dl>
<dt>referer</dt>
<dd>A misspelling of &#8220;referrer&#8221; which somehow made it into the HTTP standard. A given web page&#8217;s referer (sic) is the URL of whatever web page contains the link that the user followed to the current page. Most browsers pass this information as part of a request.</dd>
</dl>
<p><small>(from the <a href="http://foldoc.org/?referer">Free On-Line Dictionary of Computing</a>)</small></p>
<p>Well that was a surprise.  Not only did someone misspell the word when formulating the standards document and possibly fail to run a spell checker, but supposedly there was no-one amongst the committee or technical consults that successfully recommended a correction.  What a colossal screw up.  Even the <a href="http://tools.ietf.org/html/rfc2616">official HTTP/1.1 specification</a> has this to say:</p>
<blockquote><p>The Referer[sic] request-header field allows the client to for the server&#8217;s benefit, the address (URI) of the resource which the Request-URI was obtained (the &#8220;referrer&#8221;, although header field is misspelled.)</p></blockquote>
<p>So, given that HTTP refer<strike>r</strike>er URI is used every time any person clicks a link on the internet, I&#8217;ll vote it the most common misspelling of all time.</p>
<p>On the flip side, as Chris pointed out, this misspelling has saved the world a whole heap of bandwidth: 1 byte for every link ever clicked!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2008/09/02/the-most-common-misspelling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java Magic Trick: The Ball Is Everywhere</title>
		<link>http://www.papercut.com/blog/tom/2008/08/01/java-magic-trick-the-ball-is-everywhere/</link>
		<comments>http://www.papercut.com/blog/tom/2008/08/01/java-magic-trick-the-ball-is-everywhere/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 09:04:01 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.papercut.com/blog/tom/2008/08/01/java-magic-trick-the-ball-is-everywhere/</guid>
		<description><![CDATA[As keen Java programmers we&#8217;re always on the lookout for interesting tidbits about the language, how it is being used and where it is heading. Just the other day Matt brought in a copy of Java Puzzlers to test our &#8230; <a href="http://www.papercut.com/blog/tom/2008/08/01/java-magic-trick-the-ball-is-everywhere/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As keen Java programmers we&#8217;re always on the lookout for interesting tidbits about the language, how it is being used and where it is heading.  Just the other day <a href="http://www.papercut.com/about/#matt">Matt</a> brought in a copy of <a href="http://www.javapuzzlers.com/">Java Puzzlers</a> to test our knowledge.  So it was something of a coincidence that the guys over at <a href="http://www.atlassian.com/">Atlassian</a> came out with <a href="http://blogs.atlassian.com/developer/2008/07/magic_trick_in_java.html">their own Java puzzler</a>.</p>
<p>The puzzle is a Java version of the <a href="http://en.wikipedia.org/wiki/Shell_game">shell game</a> (AKA &#8216;thimblerig&#8217;), where the onlooker must choose which shell the ball is under (after the con artist has shuffled them around).</p>
<p>The puzzle and the included solutions are interesting, and well worth a read if you&#8217;re a programmer.  <a href="http://www.papercut.com/about/#chris">Chris</a> came up with the &#8216;static block&#8217; method almost immediately, but I must admit that my thinking was just along the lines of &#8220;err, with reflection somehow?&#8221; before we looked up the answers.</p>
<p>Four solutions were presented on Atlassian&#8217;s blog post, but I have a fifth:  The terms of engagement were &#8220;you can only modify the class representing the ball&#8221;.  But what about a solution that doesn&#8217;t involve modifying the ball either?  What if you could alter the onlookers&#8217; perception so that when the cup is raised they see a ball, despite there not being a ball at all?</p>
<p>Using the Force and with a wave of the hand, we get:</p>
<pre>
aspect YouWillBeEqual {
    boolean around(): call(boolean String.equals(Object)) {
        return true;
    }
}
</pre>
<p>Now there is a ball under every cup, always.  At least, it appears that way.  Actually, everything around here appears to have a ball under it&#8230;</p>
<p>Made possible with a little <a href="http://www.eclipse.org/aspectj/">AOP</a> <img src='http://www.papercut.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2008/08/01/java-magic-trick-the-ball-is-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Knowledge Base gets OpenSearch</title>
		<link>http://www.papercut.com/blog/tom/2006/12/06/knowledge-base-gets-opensearch/</link>
		<comments>http://www.papercut.com/blog/tom/2006/12/06/knowledge-base-gets-opensearch/#comments</comments>
		<pubDate>Wed, 06 Dec 2006 01:25:12 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://papercut.biz/blog/tom/2006/12/06/knowledge-base-gets-opensearch/</guid>
		<description><![CDATA[If you were looking really hard while browsing our knowledge base recently, you might have noticed your Firefox search window glowing. You are using Firefox aren&#8217;t you? (get it here) Ok ok, if you&#8217;re stuck with IE7 you might have &#8230; <a href="http://www.papercut.com/blog/tom/2006/12/06/knowledge-base-gets-opensearch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you were looking really hard while browsing our <a href="http://www.papercut.com/kb/">knowledge base</a> recently, you might have noticed your Firefox search window glowing.  You <strong>are</strong> using Firefox aren&#8217;t you?  (<a href="http://www.spreadfirefox.com/?q=affiliates&#038;id=76013&#038;t=1">get it here</a>)  Ok ok, if you&#8217;re stuck with IE7 you might have seen it as well.  Anyway, the glowing search box is letting you know that there&#8217;s a new search engine available on this page to add to your browser&#8217;s drop-down list.  This means you can search the PaperCut knowledge base quickly from your browser&#8217;s toolbar (without having to browse to the search page first).</p>
<p>It&#8217;s done using <a href="http://www.opensearch.org/">OpenSearch</a> (<a href="http://en.wikipedia.org/wiki/OpenSearch">WP</a>).  Basically it allows adding new engines the browser&#8217;s list in a standard way (i.e. you don&#8217;t have to write one for every browser out there).</p>
<p>The syntax is really quite simple, the bulk of it being contained in an XML file &#8211; an &#8220;OpenSearch description document&#8221;.  You can view the OSDD (I just made that up because I didn&#8217;t want to type it again) for our knowledge base <a href="http://www.papercut.com/papercut.osd.xml">here</a>.</p>
<p>Most of it is just fluff that may or may not be ever needed/used.  The important bit is the &lt;Url /&gt; tag.  You&#8217;ll notice ours is quite long &#8211; this is mainly to do with customising the search results (excluding pages that aren&#8217;t relevant to people looking for answers in the knowledge base).  A much simpler form of this tag might look like so:</p>
<blockquote>
<pre>http://somesite.net/search?q={searchTerms}</pre>
</blockquote>
<p>Then the following line in the &lt;head&gt; section of a page will make it available for consumption:</p>
<blockquote>
<pre>&lt;link rel="search" type="application/opensearchdescription+xml"
      href="/papercut.osd.xml" title="PaperCut" /&gt;</pre>
</blockquote>
<p>That&#8217;s it.  The glowing effect in the browser and everything needed to add it to the list of engines is all done for you.  Search plugins to the masses!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2006/12/06/knowledge-base-gets-opensearch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Full Steam Ahead</title>
		<link>http://www.papercut.com/blog/tom/2006/09/15/full-steam-ahead/</link>
		<comments>http://www.papercut.com/blog/tom/2006/09/15/full-steam-ahead/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 00:23:21 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://papercut.biz/blog/tom/2006/09/15/full-steam-ahead/</guid>
		<description><![CDATA[Hello, world! I’m Tom, the latest addition to the PaperCut development team. Over the last month or so I’ve undergone a lightning induction into the world of programming at PaperCut and the many technologies used &#8211; Java, Tapestry, Hibernate, Spring, &#8230; <a href="http://www.papercut.com/blog/tom/2006/09/15/full-steam-ahead/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hello, world!   I’m <a href="/about/#tom">Tom</a>, the latest addition to the PaperCut development team.  Over the last month or so I’ve undergone a lightning induction into the world of programming at PaperCut and the many technologies used &#8211; <a href="http://java.sun.com/">Java</a>, <a href="http://tapestry.apache.org/">Tapestry</a>, <a href="http://www.hibernate.org/">Hibernate</a>, <a href="http://www.springframework.org/">Spring</a>, <a href="http://jetty.mortbay.org/">Jetty</a>, <a href="http://jasperreports.sourceforge.net/">JasperReports</a>, <a href="http://db.apache.org/derby/">Derby</a>, <a href="http://www.postgresql.org/">PostgreSQL</a>, <a href="http://www.squid-cache.org/">Squid</a> and many others, not to mention developing for Linux, Mac and Windows &#8211; an exciting prospect for any graduate!</p>
<p>You may have already noticed some of my additions to <a href="/products/ng/">PaperCut NG</a> &#8211; some new reports including the ‘detailed summary’ reports that show a breakdown by page size, the ‘report based on above data’ component, regex document name filters, and some new <a href="/products/ng/manual/apdx-tools-web-services.html">web service</a> and <a href="/products/ng/manual/apdx-tools.html#apdx-tools-server-command">server-command</a> calls.  I hope to be adding even more features in future, as well as improving our web site.  Is there something that you would like to see added or improved?  Send an email to <a href="mailto:support@papercut.biz">the development team</a> and let us know!</p>
<p>Even with the recent <a href="/products/ng/netcontrol/">first public testing release of Internet Control for PaperCut NG</a>, the fantastic feedback we’ve been getting with the <a href="/products/ng/mac/">PaperCut NG for Mac testing programme</a>, and recent improvements for running PaperCut in unauthenticated environments, we’ve still got big things on the way.  Here’s a quick look at what you can expect in the coming months:</p>
<ul>
<li>PaperCut NG 7 &#8211; just around the corner!</li>
<li>Features from PaperCut ChargeBack coming to NG.</li>
<li>All those <a href="/products/ng/release_history/">little updates</a> that make the software that little bit easier or nicer to use.</li>
</ul>
<p>We’ve also aggregated the developer blogs to <a href="/blog/">one location</a>, so please update your links if have been following along.</p>
<p>Happy to be on board with PaperCut and looking forward to hearing from you all in the future.</p>
<p>Cheers,</p>
<p>- Tom</p>
]]></content:encoded>
			<wfw:commentRss>http://www.papercut.com/blog/tom/2006/09/15/full-steam-ahead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

