<?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"
	>

<channel>
	<title>chrismetcalf.net &#187; software</title>
	<atom:link href="http://chrismetcalf.net/blog/tags/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrismetcalf.net/blog</link>
	<description></description>
	<pubDate>Sat, 06 Sep 2008 22:35:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Thrift</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2007%2F04%2F09%2Fthrift%2F&amp;seed_title=Thrift</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2007%2F04%2F09%2Fthrift%2F&amp;seed_title=Thrift#comments</comments>
		<pubDate>Tue, 10 Apr 2007 01:20:02 +0000</pubDate>
		<dc:creator>Chris Metcalf</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[open-source]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2007/04/09/thrift/</guid>
		<description><![CDATA[Facebook, the social networking site, has released a critical piece of their infrastructure, code-named &#8220;Thrift&#8221; as Open Source:

Thrift is a software framework for scalable cross-language services development. It combines a powerful software stack  with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, and Ruby. Thrift [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://facebook.com">Facebook</a>, the social networking site, <a href="http://blog.facebook.com/blog.php?post=2261927130">has released</a> a critical piece of their infrastructure, code-named &#8220;<a href="http://developers.facebook.com/thrift/">Thrift</a>&#8221; as Open Source:</p>

<blockquote>Thrift is a software framework for scalable cross-language services development. It combines a powerful software stack  with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, and Ruby. Thrift was developed at Facebook, and we are now releasing it as open source</blockquote>

<p>Those of you who aren&#8217;t software engineering nerds like me and haven&#8217;t spent the last year and a half elbow-deep inside one of the world&#8217;s largest service oriented architectures might not realize how <strong>huge</strong> that is.</p>

<p><a href="http://www.flickr.com/photos/chrismetcalf/453600284/"><img src="http://farm1.static.flickr.com/205/453600284_4bb6721d5e.jpg?v=0" title="Corner" alt="Corner" height="333" width="500" /></a></p>

<p>When you set out to build a large distributed system, the first question you have to answer is how you&#8217;re going to glue it all together, especially if you don&#8217;t want to have to use the same language everywhere. You could use something standard like XML-RPC or SOAP, but XML is slow and sometimes inflexible. And you don&#8217;t really care about interoperability with third-party systems - you just want to be able to connect your pieces together. And what about server frameworks? Do you really want to have to implement all those annoying little bits like configuration and logging for every language you want to use?</p>

<p>What you really need is one standard framework for everything. Thrift provides this. Define your service APIs in a common language and the framework automatically creates bindings for every language you&#8217;d want to use, along with service code in your chosen language.</p>

<p>Very cool. If I manage to find some free time I&#8217;ll be sure to play with it some more.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2007%2F04%2F09%2Fthrift%2F&amp;seed_title=Thrift/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quicksilver/Adium Away Message Hack</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F25%2Fquicksilveradium-away-message-hack%2F&amp;seed_title=Quicksilver%2FAdium+Away+Message+Hack</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F25%2Fquicksilveradium-away-message-hack%2F&amp;seed_title=Quicksilver%2FAdium+Away+Message+Hack#comments</comments>
		<pubDate>Wed, 26 Jul 2006 07:21:09 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[general]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[applescript]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[hacks]]></category>

		<category><![CDATA[macosx]]></category>

		<category><![CDATA[open-source]]></category>

		<category><![CDATA[quicksilver]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[tips-tricks]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2006/07/25/quicksilveradium-away-message-hack/</guid>
		<description><![CDATA[Update: My script no longer works with newer versions of Adium, but brnrdbrk was kind enough to update it for 1.3.



So I finally figured out how to write AppleScripts that hook directly into Quicksilver&#8217;s &#8220;text clipping&#8221; interface. For the longest time I&#8217;ve wanted to be able to set away messages from Quicksilver&#8230; and now I [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> My script no longer works with newer versions of Adium, but <a href="http://blog.ex-ile.org/">brnrdbrk</a> was kind enough to <a href="http://blog.ex-ile.org/post/48550980/quicksilver-adium-away-action">update it for 1.3</a>.</p>

<p><a href="http://www.flickr.com/photos/chrismetcalf/198655470" class="tt-flickr"><img src="http://static.flickr.com/74/198655470_1b22ea9e97.jpg" class="tt-flickr" alt="Quicksilver/Adium Hack" height="278" width="378" /></a></p>

<p>So I finally figured out how to write AppleScripts that hook directly into Quicksilver&#8217;s &#8220;text clipping&#8221; interface. For the longest time I&#8217;ve wanted to be able to set away messages from Quicksilver&#8230; and now I can:
<pre>
using terms from application "Quicksilver"
    on process text ThisClipping</pre></p>

<pre><code>    tell application "Adium"
        set my status message to ThisClipping
        set my status type to away
    end tell

end process text
</code></pre>

<p>end using terms from
It may not look like much, but I&#8217;m a happy boy. Put that into an AppleScript using Script Editor and save it to <code>~/Library/Application Support/Quicksilver/Actions</code>. Restart Quicksilver, and you&#8217;ll be able to set any text you type in Quicksilver after the &#8220;.&#8221; command as your Adium away message.</p>

<p>The <code>on process text</code> terms has lots of other uses too. I&#8217;m sure I&#8217;ll come up with more.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F25%2Fquicksilveradium-away-message-hack%2F&amp;seed_title=Quicksilver%2FAdium+Away+Message+Hack/feed/</wfw:commentRss>
		</item>
		<item>
		<title>550 &#8220;Sender verify failed&#8221; error with Monit and Exim4</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F15%2F550-sender-verify-failed-error-with-monit-and-exim4%2F&amp;seed_title=550+%26%238220%3BSender+verify+failed%26%238221%3B+error+with+Monit+and+Exim4</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F15%2F550-sender-verify-failed-error-with-monit-and-exim4%2F&amp;seed_title=550+%26%238220%3BSender+verify+failed%26%238221%3B+error+with+Monit+and+Exim4#comments</comments>
		<pubDate>Sat, 15 Jul 2006 08:14:31 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[localhost]]></category>

		<category><![CDATA[monitoring]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2006/07/15/550-sender-verify-failed-error-with-monit-and-exim4/</guid>
		<description><![CDATA[Maybe this will save somebody else some time, because I just spend about 3 hours banging my head against the wall on it.



If you&#8217;re getting a &#8220;550-Sender verify failed&#8221; error when Monit starts because its trying to send you an email via SMTP to let you know it&#8217;s started (or if you&#8217;re getting that error [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe this will save somebody else some time, because I just spend about 3 hours banging my head against the wall on it.</p>

<p><a href="http://www.flickr.com/photos/chrismetcalf/184232628" class="tt-flickr"><img src="http://static.flickr.com/76/184232628_32c3321357.jpg" class="tt-flickr" alt="PowerBook Stickers" height="375" width="500" /></a></p>

<p>If you&#8217;re getting a &#8220;550-Sender verify failed&#8221; error when Monit starts because its trying to send you an email via SMTP to let you know it&#8217;s started (or if you&#8217;re getting that error for just about any other reason), make sure that the email address that the message is being sent &#8220;from&#8221; actually exists.</p>

<p>If &#8220;monit@yourhostname.com&#8221; doesn&#8217;t exist, your SMTP server will likely reject the message and cause you all sorts of trouble.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F15%2F550-sender-verify-failed-error-with-monit-and-exim4%2F&amp;seed_title=550+%26%238220%3BSender+verify+failed%26%238221%3B+error+with+Monit+and+Exim4/feed/</wfw:commentRss>
		</item>
		<item>
		<title>lala - Whoa&#8230; this is cool</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F12%2Flala-whoa-this-is-cool%2F&amp;seed_title=lala+-+Whoa%26%238230%3B+this+is+cool</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F12%2Flala-whoa-this-is-cool%2F&amp;seed_title=lala+-+Whoa%26%238230%3B+this+is+cool#comments</comments>
		<pubDate>Thu, 13 Jul 2006 07:32:08 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[community]]></category>

		<category><![CDATA[cool-tech]]></category>

		<category><![CDATA[intarweb]]></category>

		<category><![CDATA[music]]></category>

		<category><![CDATA[opinion]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2006/07/12/lala-whoa-this-is-cool/</guid>
		<description><![CDATA[

So a week or so ago I discovered lala. It may just be the simplest and best dotcom idea I&#8217;ve seen in a long time.

I have CDs. You have CDs. In all honesty, I&#8217;m sick of most of my CDs. And you probably are too. I might not have listened to my Nirvana &#8220;In Utero&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/chrismetcalf/187903511" class="tt-flickr"><img src="http://static.flickr.com/76/187903511_ff3216d925.jpg" class="tt-flickr" alt="lala" height="375" width="500" /></a></p>

<p>So a week or so ago I discovered <a href="http://lala.com/">lala</a>. It may just be the simplest and best dotcom idea I&#8217;ve seen in a long time.</p>

<p>I have CDs. You have CDs. In all honesty, I&#8217;m sick of most of my CDs. And you probably are too. I might not have listened to my Nirvana &#8220;In Utero&#8221; CD in 8 years, but maybe you&#8217;ve recently suffered a bit of nostalgia and you want to listen to them again. So why don&#8217;t we trade?</p>

<p>Within a half hour or so of me having my beta account I loaded a bunch of the CD&#8217;s that I knew I had into my &#8220;I Have&#8221; section and I&#8217;d added a bunch of CD&#8217;s I wanted to my &#8220;I Want&#8221; section. About an hour or two later I discovered that I&#8217;d had my first match and that somebody wanted my copy of The Clash&#8217;s &#8220;London Calling&#8221; (an excellent CD by the way). And simultaneously somebody was shipping me Jurassic 5&#8217;s &#8220;Quality Control&#8221;. And I was only out $1.</p>

<p>Too cool.</p>

<p><strong>Update:</strong> If anybody wants lala invites, add a comment below and leave the email address you want it sent to. I have a bunch.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2006%2F07%2F12%2Flala-whoa-this-is-cool%2F&amp;seed_title=lala+-+Whoa%26%238230%3B+this+is+cool/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java Makes You Stupid</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F11%2F21%2Fjava-makes-you-stupid%2F&amp;seed_title=Java+Makes+You+Stupid</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F11%2F21%2Fjava-makes-you-stupid%2F&amp;seed_title=Java+Makes+You+Stupid#comments</comments>
		<pubDate>Tue, 22 Nov 2005 07:00:50 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[opinion]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/?p=250</guid>
		<description><![CDATA[Java developers! This is a call to action!

Go pick up those dusty computer science &#8220;theory&#8221; books you decided to save thinking that maybe, just maybe, they might come in handy some day. Read them! Brush up on data structures, algorithms, and object oriented programming concepts. Practice big-O program analysis. Write some recursive algorithms. Review all [...]]]></description>
			<content:encoded><![CDATA[<p>Java developers! This is a call to action!</p>

<p>Go pick up those dusty computer science &#8220;theory&#8221; books you decided to save thinking that maybe, just maybe, they might come in handy some day. Read them! Brush up on data structures, algorithms, and object oriented programming concepts. Practice big-O program analysis. Write some recursive algorithms. Review all those topics that you &#8220;forgot&#8221; because you thought you would never use them again.</p>

<p>I&#8217;m tired of screening Java developers who can&#8217;t tell me how the internals of the libraries they use are actually implemented. When computer scientists talk about &#8220;data structures,&#8221; we talk about hash tables, binary search trees, and linked lists, not java.util.Collection. We learned about program analysis in school because we were supposed to use it - if you can&#8217;t tell me about the runtime implications of the algorithms you choose, then you shouldn&#8217;t use them.</p>

<p>You got the degree, so you&#8217;re obviously not stupid. Now start using what you learned.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F11%2F21%2Fjava-makes-you-stupid%2F&amp;seed_title=Java+Makes+You+Stupid/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Easy ACPI under Linux with &#8220;Hibernate&#8221;</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F07%2F12%2Feasy-acpi-under-linux-with-hibernate%2F&amp;seed_title=Easy+ACPI+under+Linux+with+%26%238220%3BHibernate%26%238221%3B</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F07%2F12%2Feasy-acpi-under-linux-with-hibernate%2F&amp;seed_title=Easy+ACPI+under+Linux+with+%26%238220%3BHibernate%26%238221%3B#comments</comments>
		<pubDate>Wed, 13 Jul 2005 03:39:42 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2005/07/12/easy-acpi-under-linux-with-hibernate/</guid>
		<description><![CDATA[For the longest time I avoided using ACPI for power management on my Thinkpad X31 (instead I stuck with APM) because I could never get all the little hacks lined up properly. ACPI, since it is done primarily in hardware, requires a lot of tricks to get your machine to suspend and resume properly. Switching [...]]]></description>
			<content:encoded><![CDATA[<p>For the longest time I avoided using ACPI for power management on my Thinkpad X31 (instead I stuck with APM) because I could never get all the little hacks lined up properly. ACPI, since it is done primarily in hardware, requires a lot of tricks to get your machine to suspend and resume properly. Switching out of X, turning off LCD backlights, resetting graphics cards, etc etc. Its a real hassle.</p>

<p>However, if you&#8217;re fortunate enough to be running <a href="http://www.debian.org">Debian Linux</a>, you can install the &#8220;hibernate&#8221; package. Hibernate is basically sophisticated Bash script with pluggable options for all the most common ACPI hacks. I had ACPI up and running within minutes.</p>

<p>If you&#8217;ve got a Thinkpad X31 or similar machine, feel free to download <a href="http://chrismetcalf.net/files/hibernate.conf.gz">my hibernate.conf</a> and tweak it to your purposes. The only additions beyond a fairly standard hibernate configuration I had to make were adding hooks to turn the Radeon backlight on and off.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F07%2F12%2Feasy-acpi-under-linux-with-hibernate%2F&amp;seed_title=Easy+ACPI+under+Linux+with+%26%238220%3BHibernate%26%238221%3B/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Debian: Integrating applications installed in /opt using Debian &#8220;alternatives&#8221;</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F07%2F04%2Fdebian-integrating-applications-installed-in-opt-using-debian-alternatives%2F&amp;seed_title=Debian%3A+Integrating+applications+installed+in+%2Fopt+using+Debian+%26%238220%3Balternatives%26%238221%3B</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F07%2F04%2Fdebian-integrating-applications-installed-in-opt-using-debian-alternatives%2F&amp;seed_title=Debian%3A+Integrating+applications+installed+in+%2Fopt+using+Debian+%26%238220%3Balternatives%26%238221%3B#comments</comments>
		<pubDate>Mon, 04 Jul 2005 16:00:28 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[hacks]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2005/07/04/debian-integrating-applications-installed-in-opt-using-debian-alternatives/</guid>
		<description><![CDATA[Some Debian developer will probably see this and  yell at me for doing something very evil, but I find this trick quite useful and thought I&#8217;d share it with the world. You might notice I also made use of it in my Debian Java mini-howto.

The Debian &#8220;alternatives&#8221; system is basically a set of utilities [...]]]></description>
			<content:encoded><![CDATA[<p>Some <a href="http://www.debian.org">Debian</a> developer will probably see this and  yell at me for doing something very evil, but I find this trick quite useful and thought I&#8217;d share it with the world. You might notice I also made use of it in my <a href="http://chrismetcalf.net/blog/archives/2005/05/19/mini-howto-installing-java-on-debian-unstable/#more-215">Debian Java</a> mini-howto.</p>

<p>The Debian &#8220;alternatives&#8221; system is basically a set of utilities designed for manipulating what is no more than a complex collection of symlinks. However, the flexibility it affords users is wonderful. It allows the administrator to set up intelligent &#8220;default versions&#8221; for system utilities such as editors, pagers, and terminals.</p>

<p>And it also, if you abuse it slightly, gives you an easy way to manage applications installed into /opt.</p>

<p>Debian, as you might know, isn&#8217;t that great at always packaging applications that don&#8217;t agree with its &#8220;social contract&#8221;. So you&#8217;ll usually find yourself jumping through hoops to get anything that involves Java installed. I install apps like Eclipse, Azureus, and VMWare into directories in /opt (/opt/eclipse, /opt/azureus, etc). And then I use update-alternatives to add intelligent symlinks back into the main system:</p>

<p><code>update-alternatives --verbose --install [desired symlink] [name] [executable location in /opt/whatever] 500</code></p>

<p>For a specific example:
<code>update-alternatives --verbose --install /usr/bin/vmware vmware /opt/vmware/bin/vmware 500</code></p>

<p>If you also want to install a link for the manpage, you can also do that:</p>

<p><code>update-alternatives --verbose --install /usr/bin/vmware vmware /opt/vmware/bin/vmware 500 --slave /usr/share/man/man1/vmware.1 vmware.1 /opt/vmware/man/man1/vmware.1</code></p>

<p>(I know that actually points to the manpage of the vmware XF86 driver, but you get the idea&#8230;)</p>

<p>And since all the links are tracked by update-alternatives, I can easily remove them when I uninstall the application:
<code>update-alternatives --remove-all vmware</code></p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F07%2F04%2Fdebian-integrating-applications-installed-in-opt-using-debian-alternatives%2F&amp;seed_title=Debian%3A+Integrating+applications+installed+in+%2Fopt+using+Debian+%26%238220%3Balternatives%26%238221%3B/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mini-HowTo: Installing Java on Debian Unstable</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F05%2F19%2Fmini-howto-installing-java-on-debian-unstable%2F&amp;seed_title=Mini-HowTo%3A+Installing+Java+on+Debian+Unstable</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F05%2F19%2Fmini-howto-installing-java-on-debian-unstable%2F&amp;seed_title=Mini-HowTo%3A+Installing+Java+on+Debian+Unstable#comments</comments>
		<pubDate>Thu, 19 May 2005 17:22:16 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[code]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2005/05/18/mini-howto-installing-java-on-debian-unstable/</guid>
		<description><![CDATA[Every time I set up a new system I have to figure out how to do this again, so I decided to post instructions for my benefit and for the benefit of those who might also be having problems with this.

Debian&#8217;s &#8220;Social Contract&#8221; forbids it from distributing &#8220;non-free&#8221; code as official packages. Thus, Sun&#8217;s version [...]]]></description>
			<content:encoded><![CDATA[<p>Every time I set up a new system I have to figure out how to do this again, so I decided to post instructions for my benefit and for the benefit of those who might also be having problems with this.</p>

<p>Debian&#8217;s &#8220;Social Contract&#8221; forbids it from distributing &#8220;non-free&#8221; code as official packages. Thus, Sun&#8217;s version of Java is not in any of the official mirrors. You can sometimes find third-party packages from Blackdown and other groups, but they are often out of date and annoying. I prefer to get my Java directly from Sun.</p>

<p>I install my JDKs into /opt and use &#8220;dummy packages&#8221; to let Debian know that I really do have Java installed. That way I can install Debian packages requiring Java to be installed and everything will go smoothly.</p>

<p>This mini-HowTo assumes that you&#8217;re running Debian Unstable (Sid), but it should also work if you&#8217;re using Testing or even Ubuntu. It also assumes you&#8217;re doing all these steps as root.</p>

<p><span id="more-215"></span></p>

<p><strong>Installing Sun&#8217;s Java on Debian Unstable</strong></p>

<ol>
    <li>Go to <a href="http://java.sun.com/j2se/1.5.0/download.jsp">Sun&#8217;s website</a> and get yourself a copy of the J2SE Development Kit. Get the .bin package, not the RPM.</li>
    <li>Put it wherever you want to finally reside. I put all apps that don&#8217;t come from Debian packages into <code>/opt</code>, so I created a <code>/opt/java</code> directory to contain all my JDKs and dropped the .bin package into there.</li>
    <li>Unpack it. Basically that means running <code>sh [package name].bin</code> and saying yes to the licensing stuff. It&#8217;ll unpack itself into a new directory. Mine unpacked itself into <code>/opt/java/jdk1.5.0_03</code>.</li>
    <li>Create a symbolic link from the unpacked JDK directory to <code>/usr/local/lib/jdk</code>. For me, that meant running the command <code>ln -s /opt/java/jdk1.5.0_03 /usr/local/lib/jdk</code>.</li>
    <li>Install the java-common and equivs packages by calling <code>apt-get install java-common equivs</code>. These packages will be used to create the dummy packages.</li>
    <li>Into a suitable temporary directory (I was in <code>/opt/java</code>), copy the Java dummy package control files, using the command <code>cp /usr/share/doc/java-common/dummy-packages/*.control .</code>.</li>
    <li>Use equivs to create the dummy packages from the control files: <code>for fn in *.control; do equivs-build $fn; done</code>. You&#8217;ll end up with a bunch of .deb&#8217;s in your working directory.</li>
    <li>Install the dummy packages: <code>dpkg -i *.deb</code>. Now Debian knows that you&#8217;ve got Java installed.</li>
    <li>Still one more step to go&#8230; Now we&#8217;ll use <code>update-alternatives</code> to add in Debian-friendly symbolic links for all the utilities that come with Java. Change directories into the <code>bin</code> directory of your installed JDK (<code>cd /opt/java/jdk1.5.0_03/bin</code>) and run the following command: <code>for fn in *; do update-alternatives --verbose --install /usr/bin/$fn $fn /usr/local/lib/jdk/bin/$fn 500        --slave /usr/share/man/man1/$fn.1 $fn.1 /usr/local/lib/jdk/man/man1/$fn.1; done</code>. This loop will create Debian &#8220;alternatives&#8221; for all the utilities that came with your JDK package, along with links for their man pages. Neat, eh?</li>
    <li>Now you should be able to run <code>java -version</code> as any user and get back the correct version of the JDK you installed.</li>
</ol>

<p>All done! Enjoy your snazzy new Java install.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F05%2F19%2Fmini-howto-installing-java-on-debian-unstable%2F&amp;seed_title=Mini-HowTo%3A+Installing+Java+on+Debian+Unstable/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GtdWiki</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F03%2F24%2Fgtdwiki%2F&amp;seed_title=GtdWiki</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F03%2F24%2Fgtdwiki%2F&amp;seed_title=GtdWiki#comments</comments>
		<pubDate>Fri, 25 Mar 2005 02:18:03 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[gtd]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[tools]]></category>

		<category><![CDATA[web-design]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2005/03/24/gtdwiki/</guid>
		<description><![CDATA[I&#8217;m proud to announce the first &#8220;preview&#8221; release of GtdWiki.



GtdWiki is a specially tweaked version of PhpWiki I&#8217;ve been using for a few months now as the core of my personal implementation of David Allen&#8217;s &#8220;Getting Things Done&#8221;.

Download it, try it out, and let me know what you think.

Update: I&#8217;ve set up a online demo [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m proud to announce the first &#8220;preview&#8221; release of <a href="http://chrismetcalf.net/wiki/index.php/GtdWiki">GtdWiki</a>.</p>

<p><a href="http://chrismetcalf.net/wiki/index.php/GtdWiki"><img src="http://chrismetcalf.net/files/gtdwiki_small.png" alt="GtdWiki" /></a></p>

<p>GtdWiki is a specially tweaked version of PhpWiki I&#8217;ve been using for a few months now as the core of my personal implementation of David Allen&#8217;s <a href="http://www.amazon.com/exec/obidos/tg/detail/-/0142000280/qid=1111713260/sr=8-1/ref=pd_csp_1/002-7013603-8876025?v=glance&#038;s=books&#038;n=507846">&#8220;Getting Things Done&#8221;</a>.</p>

<p><a href="http://chrismetcalf.net/files/GtdWiki-pre1.tar.gz">Download it</a>, try it out, and let me know what you think.</p>

<p><strong>Update:</strong> I&#8217;ve set up a <a href="http://gtd-demo.chrismetcalf.net/wiki/">online demo</a> if you want to &#8220;try before you buy.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2005%2F03%2F24%2Fgtdwiki%2F&amp;seed_title=GtdWiki/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My 8 points of fame</title>
		<link>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2004%2F12%2F18%2Fmy-8-points-of-fame%2F&amp;seed_title=My+8+points+of+fame</link>
		<comments>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2004%2F12%2F18%2Fmy-8-points-of-fame%2F&amp;seed_title=My+8+points+of+fame#comments</comments>
		<pubDate>Sat, 18 Dec 2004 23:22:17 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[web-culture]]></category>

		<guid isPermaLink="false">http://chrismetcalf.net/blog/archives/2004/12/18/my-8-points-of-fame/</guid>
		<description><![CDATA[You may or may not have heard, but a few days ago the Mozilla Foundation ran a full page advertisement for Firefox 1.0 in the New York Times. They collected donations from thousands of users, including myself.



So I got my name in the New York Times, in glorious 8-point type. Can I say I&#8217;m famous [...]]]></description>
			<content:encoded><![CDATA[<p>You may or may not have heard, but a few days ago the <a href="http://www.mozilla.org">Mozilla Foundation</a> ran a <a href="http://www.spreadfirefox.com/?q=node/view/8772">full page advertisement</a> for Firefox 1.0 in the New York Times. They collected donations from thousands of users, including myself.</p>

<p><img src="http://chrismetcalf.net/uploads/my-name-in-firefox-ad.jpg" alt="My name in the NYT Firefox ad"/></p>

<p>So I got my name in the New York Times, in glorious 8-point type. Can I say I&#8217;m famous now?</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismetcalf.net/feeder/?FeederAction=clicked&amp;feed=Articles+%28RSS2%29&amp;seed=http%3A%2F%2Fchrismetcalf.net%2Fblog%2Farchives%2F2004%2F12%2F18%2Fmy-8-points-of-fame%2F&amp;seed_title=My+8+points+of+fame/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
