<?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>The Free Geek &#187; Programming</title>
	<atom:link href="http://freegeek.in/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://freegeek.in/blog</link>
	<description>The Chronicles of Nerd-nia</description>
	<lastBuildDate>Wed, 02 Jun 2010 03:22:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Setting up Emacs &amp; Clojure with Emacs Starter Kit</title>
		<link>http://freegeek.in/blog/2009/08/setting-up-emacs-clojure-with-emacs-starter-kit/</link>
		<comments>http://freegeek.in/blog/2009/08/setting-up-emacs-clojure-with-emacs-starter-kit/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:21:55 +0000</pubDate>
		<dc:creator>Baishampayan</dc:creator>
				<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://freegeek.in/blog/?p=63</guid>
		<description><![CDATA[Note: This blog post is no longer accurate as a lot of things have changed since I wrote this post. Please check this document for working instructions. Clojure is a very modern functional programming language which runs on the JVM. It&#8217;s a very cleanly designed Lisp dialect and has all the features that any useful [...]]]></description>
			<content:encoded><![CDATA[<p><ins><strong>Note:</strong> This blog post is no longer accurate as a lot of things have changed since I wrote this post. Please check <a title="Clojure Project on Assembla" href="http://www.assembla.com/wiki/show/clojure/Getting_Started_with_Emacs">this document</a> for working instructions.</ins></p>
<p><a href="http://clojure.org">Clojure</a> is a very modern functional programming language which runs on the <a href="http://en.wikipedia.org/wiki/JVM">JVM</a>. It&#8217;s a very cleanly designed <a href="http://en.wikipedia.org/wiki/Lisp_(programming_language)">Lisp</a> dialect and has all the features that any useful programming language would require. You can learn more about Clojure on the official website, <a href="http://en.wikibooks.org/wiki/Clojure_Programming">the wikibook</a>, <a href="http://java.ociweb.com/mark/clojure/article.html">a comprehensive article by R. Mark Volkmann</a> or by buying <a href="http://www.amazon.com/Programming-Clojure-Pragmatic-Programmers-Halloway/dp/1934356336/ref=sr_1_1?ie=UTF8&amp;qid=1249074313&amp;sr=8-1">the awesome book by Stuart Halloway</a>.</p>
<p>Now to setup <a href="http://en.wikipedia.org/wiki/Emacs">Emacs</a> as a Clojure IDE. If you are new to Emacs then don&#8217;t worry as we will take the easiest way to set it all up. If you are a Emacs veteran, then keep your own dotemacs and the bunch of customisations that you have done in all these years aside and follow along.</p>
<p>Installing Emacs is easy. On an <a href="http://ubuntu.com">Ubuntu</a> system, do this -</p>
<p><code>$ sudo apt-get install emacs-snapshot-gtk</code></p>
<p>That will install Emacs 23 for you. You will also need a few other things -</p>
<p><code>$ sudo apt-get install sun-java6-jdk ant git-core</code></p>
<p>You will need the JDK and <a href="http://ant.apache.org/">Ant</a> to build and run Clojure (it runs on the JVM, remember?) and <a href="http://git-scm.com/">Git</a> to fetch the Clojure an other related libraries.</p>
<p>Now to setup Emacs, we will use a brilliant set of Emacs Lisp libraries aptly named <a href="http://github.com/technomancy/emacs-starter-kit/">Emacs Starter Kit</a> (ESK). To get it, do this -</p>
<p><code>$ git clone git://github.com/technomancy/emacs-starter-kit.git ~/.emacs.d</code></p>
<p>That will get the ESK and will put it in your <code>~/.emacs.d</code> (existing Emacs users, please move your <code>~/.emacs</code> and <code>~/.emacs.d</code> to some other location before doing this. You can get back your old settings later).</p>
<p>What ESK does is that it provides a bunch of sane defaults for pretty much everything in Emacs. You can safely use it and get a very usable Emacs setup almost immediately.</p>
<p>You can now launch Emacs by going to <code>Applications &gt; Accessories</code> and selecting Emacs Snapshot Gtk. Once Emacs has started up, install the Emacs Clojure libraries by typing <code>M-x package-list-packages</code>. That will start up a buffer with a bunch of Emacs packages. Go to the line that says <code>clojure-mode</code> in it and press <code>i</code>. Then press <code>x</code> to install the package. Once that&#8217;s done you are ready to install Clojure. Now type <code>M-x clojure-install</code> and it will prompt you for a directory to install Clojure. Just press Enter for now and let it proceed. You can always change these things later.</p>
<p>That will fetch the Clojure runtime and also a few other useful libraries like <code>clojure-contrib</code> and will install them inside <code>~/src</code>.</p>
<p>Once that is done, you can type <code>M-x slime</code> to start Clojure inside your Emacs. Play around with it and learn the various key-bindings for <a href="http://common-lisp.net/project/slime/">Slime</a> and <a href="http://www.emacswiki.org/emacs/ParEdit">Paredit</a> which is a fantastic system for doing Lisp development. Paredit is so good that it makes all those parentheses just vanish in thin air. But yes, it takes a bit getting used to which you can achieve with some practice. One tip is to type <code>C-h m</code> in Emacs to see the documentation of all the modes that are currently active. This gives a good overview of all the key-bindings and the functions bound to those keys.</p>
<p>To develop slightly more complex Clojure applications, you need to use different dependencies with your own code. Since Java has its own <a href="http://en.wikipedia.org/wiki/Classpath">classpath</a> related quirkiness it can become a slightly complicated task. But then, there is cool function in Emacs Starter Kit called <code>clojure-project</code> which will make your life easy.</p>
<p>To use it all you need to do is to follow this simple directory structure and the rest will be taken care of automagically. The directory structure should be like this -<br />
<code><br />
myproject<br />
|-- lib<br />
|-- src<br />
|-- target<br />
|   |-- classes<br />
|   `-- dependency<br />
`-- test<br />
</code></p>
<p>Copy the Clojure &amp; Clojure Contrib (or any other dependency) JAR files into <code>lib</code> (you also alternately use a build system like <a href="http://maven.apache.org/">Maven</a> to manage dependencies for you in which case you should consider configuring the build system to copy the dependencies into <code>target/dependency</code>). Keep all your code inside <code>src</code> and tests inside <code>test</code>. The <code>src</code> and <code>test</code> directories should contain namespaces like <code>foo.bar</code> &amp; <code>foo.bar.test</code> respectively (you can later use <code>clojure-test-mode</code> to automatically pick up the tests and run them quickly). So when you run <code>M-x clojure-project</code>, it will ask you for a directory name. Give it the name of the project directory and boom! Emacs will launch Slime with the right classpath settings.</p>
<p>If you want to customise any Emacs setting, just create a file with your current system login id called <code>&lt;username.el&gt;</code> inside <code>~/.emacs.d</code> and it will be automatically loaded when you restart Emacs. If you use additional libraries, create a directory with your username inside the same directory and everything inside will be in the Emacs load-path. Nifty, right?</p>
<p>So that&#8217;s all required to setup Emacs for Clojure. Join the Clojure <a href="http://groups.google.com/group/clojure">mailing list</a> to communicate with the Clojure community. Do check the Emacs <a href="http://emacswiki.org">Wiki</a> in case you have any queries about Emacs.</p>
<p>Above all, have fun. That&#8217;s what we are here for.</p>
<p>By the way, I am <a href="http://twitter.com/ghoseb">@ghoseb</a> on Twitter and I think <a href="http://twitter.com/ghoseb">you should follow me</a> <img src='http://freegeek.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>UPDATE: Fixed a factual inconsistency regarding the paths used for <code>clojure-project</code>. Thanks to <a href="http://technomancy.us/">Phil</a> (the creator of ESK &amp; <code>clojure-project</code>) for pointing this out!</p>
]]></content:encoded>
			<wfw:commentRss>http://freegeek.in/blog/2009/08/setting-up-emacs-clojure-with-emacs-starter-kit/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>GNU Emacs with XFT goodness</title>
		<link>http://freegeek.in/blog/2006/11/gnu-emacs-with-xft-goodness/</link>
		<comments>http://freegeek.in/blog/2006/11/gnu-emacs-with-xft-goodness/#comments</comments>
		<pubDate>Mon, 06 Nov 2006 12:26:48 +0000</pubDate>
		<dc:creator>Baishampayan</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://g33k.wordpress.com/2006/11/06/gnu-emacs-with-xft-goodness/</guid>
		<description><![CDATA[Personally I have been using the emacs-unicode-2 CVS branch of GNU Emacs for a long time now. This branch will become Emacs 23 in the future and it contains better Unicode handling code in addition to some cool features like antialiased fonts (courtesy XFT and FreeType), copy to clipboard, etc. I usually build a custom [...]]]></description>
			<content:encoded><![CDATA[<p>Personally I have been using the <em>emacs-unicode-2</em> CVS branch of <a href="http://www.gnu.org/software/emacs/" title="GNU Emacs">GNU Emacs</a> for a long time now. This branch will become Emacs 23 in the future and it contains better Unicode handling code in addition to some cool features like antialiased fonts (courtesy XFT and FreeType), copy to clipboard, etc.</p>
<p><a href="http://g33k.files.wordpress.com/2006/11/emacs-snapshot.png" title="GNU Emacs with XFT"><img src="http://g33k.files.wordpress.com/2006/11/emacs-snapshot.png" alt="GNU Emacs with XFT" /></a></p>
<p>I usually build a custom version of the <a href="http://packages.debian.org/unstable/editors/emacs-snapshot" title="Emacs Snapshot">emacs-snapshot</a> package with source from the <em>emacs-unicode-2</em> branch and some simple customisation to enable the antialiased fonts. Some of my friends are using those packages and I thought it&#8217;d be good if share those packages with a larger audience.</p>
<p>So I have set up an APT repository with those packages which you can install on your Ubuntu Dapper machine. To do that, first add the following line to your <code>/etc/apt/sources.list</code> &#8211;</p>
<p><code>deb http://people.ubuntu-in.org/~ghoseb/apt/ dapper main</code><br />
<code>deb-src http://people.ubuntu-in.org/~ghoseb/apt/ dapper main # for source</code></p>
<p>Then do <code>sudo apt-get update</code> to fetch the package list and then <code>sudo apt-get install emacs-snapshot-gtk</code> to install the customised GNU Emacs package.</p>
<p>If you already have the vanilla emacs-snapshot installed then only <code>sudo apt-get upgrade</code> will upgrade your current installation to the new one. And yes, this package can co-exist peacefully with your emacs21 package.</p>
<p>Now to enable antialiased fonts, add the following line to your <code>~/.emacs</code> &#8211;</p>
<p><code>(set-default-font "Bitstream Vera Sans Mono-8")</code></p>
<p>Now launch GNU Emacs as <code>emacs-snapshot-gtk --enable-font-backend</code> and enjoy the awesomeness <img src='http://freegeek.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Leave a comment if any of you need Ubuntu Edgy packages, I will build them and add to the repository.</p>
<p>Update: I have added Edgy packages too ! Just add the following lines to your <em>/etc/apt/sources.list</em> and the rest is identical to the instructions for Dapper.</p>
<p><code>deb http://people.ubuntu-in.org/~ghoseb/apt-edgy/ edgy main</code><br />
<code>deb-src http://people.ubuntu-in.org/~ghoseb/apt-edgy/ edgy main # for source</code></p>
]]></content:encoded>
			<wfw:commentRss>http://freegeek.in/blog/2006/11/gnu-emacs-with-xft-goodness/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
		</item>
		<item>
		<title>Check GMail the Python way</title>
		<link>http://freegeek.in/blog/2006/07/check-gmail-the-python-way/</link>
		<comments>http://freegeek.in/blog/2006/07/check-gmail-the-python-way/#comments</comments>
		<pubDate>Mon, 31 Jul 2006 15:35:21 +0000</pubDate>
		<dc:creator>Baishampayan</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">https://g33k.wordpress.com/2006/07/31/check-gmail-the-python-way/</guid>
		<description><![CDATA[Swaroop posted a nifty Perl script to check GMail. The script basically parses an Atom feed of the latest 20 mails provided by Google. Since a Python hacker like Swaroop is dabbling in Perl, I thought it was my duty as a Python evangelist (or is it Pythangelist?) to show the people that the same [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.swaroopch.info/" title="Swaroop CH">Swaroop</a> <a href="http://www.swaroopch.info/archives/2006/07/31/check_gmail/" title="check_gmail">posted a nifty Perl script</a> to check GMail. The script basically parses an Atom feed of the latest 20 mails provided by <a href="http://google.com/" title="Google">Google</a>. Since a <a href="http://python.org/" title="Python">Python</a> hacker like Swaroop is dabbling in Perl, I thought it was my duty as a Python evangelist (or is it Pythangelist?) to show the people that the same thing can be achieved using Python with equal ease <img src='http://freegeek.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  The main code is around 50% of the total code. A large portion of the code is used for the pretty printing. Here it is &#8212;</p>
<pre>## check-gmail.py -- A command line util to check GMail -*- Python -*-

# ======================================================================
# Copyright (C) 2006 Baishampayan Ghose &lt;b.ghose@ubuntu.com&gt;
# Time-stamp: Mon Jul 31, 2006 20:45+0530
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
# ======================================================================

import urllib             # For BasicHTTPAuthentication
import feedparser         # For parsing the feed
from textwrap import wrap # For pretty printing assistance

_URL = "https://mail.google.com/gmail/feed/atom"

def auth():
    '''The method to do HTTPBasicAuthentication'''
    opener = urllib.FancyURLopener()
    f = opener.open(_URL)
    feed = f.read()
    return feed

def fill(text, width):
    '''A custom method to assist in pretty printing'''
    if len(text) &lt; width:
        return text + ' '*(width-len(text))
    else:
        return text

def readmail(feed):
    '''Parse the Atom feed and print a summary'''
    atom = feedparser.parse(feed)
    print ""
    print atom.feed.title
    print "You have %s new mails" % len(atom.entries)
    # Mostly pretty printing magic
    print "+"+("-"*84)+"+"
    print "| Sl.|"+" Subject"+' '*48+"|"+" Author"+' '*15+"|"
    print "+"+("-"*84)+"+"
    for i in xrange(len(atom.entries)):
        print "| %s| %s| %s|" % (
            fill(str(i), 3),
            fill(wrap(atom.entries[i].title, 50)[0]+"[...]", 55),
            fill(wrap(atom.entries[i].author, 15)[0]+"[...]", 21))
    print "+"+("-"*84)+"+"

if __name__ == "__main__":
    f = auth()  # Do auth and then get the feed
    readmail(f) # Let the feed be chewed by feedparser</pre>
<p>And here is a sample output &#8212;</p>
<pre>ghoseb@trinka:~$ python check-gmail.py
Enter username for New mail feed at mail.google.com: foo.bar
Enter password for foo.bar in New mail feed at mail.google.com:

Gmail - Inbox for foo.bar@gmail.com
You have 20 new mails
+------------------------------------------------------------------------------------+
| Sl.| Subject                                                | Author               |
+------------------------------------------------------------------------------------+
| 0  | Strip Whitespace Middleware[...]                       | Will McCutchen ([...]|
| 1  | [FOSS Nepal] list of free alternatives to windows[...] | Manish Regmi (r[...] |
| 2  | json serialization[...]                                | Gábor Farkas (g[...] |
| 3  | editable=False and "Could not find Formfield or[...]   | Corey (coordt@e[...] |
| 4  | IronPython 1.0 release candidate[...]                  | Jeremy Dunck (j[...] |
| 5  | django server tree organization[...]                   | Kenneth[...]         |
| 6  | Project when using multiple sites[...]                 | Jay Parlar (par[...] |
| 7  | [FOSS Nepal] Neprog (nepali version pogrammer for[...] | ujwal (ujwal2@g[...] |
| 8  | Bug#379789: wrong keymap on Intel MacBook Pro[...]     | Frans Pop (elen[...] |
| 9  | debconf is Level 1?[...]                               | Clytie Siddall ([...]|
| 10 | Weird slowdown with dev server behind nat[...]         | Akatemik (tpiev[...] |
| 11 | Database API question: I am not able to return a[...]  | DavidA (david.a[...] |
| 12 | Bug#379120: lspci present on i386, verify on[...]      | Eddy Petrişor ([...] |
| 13 | New levels of D-I[...]                                 | Eddy Petrişor ([...] |
| 14 | Installed Apps in settings.py[...]                     | limodou (limodo[...] |
| 15 | where u at man ... where can i call you ??????[...]    | Sanjeev[...]         |
| 16 | unable to runser ?[...]                                | Geert[...]           |
| 17 | Bug#380585: debian 3.1 install FD[...]                 | as_hojoe (as_ho[...] |
| 18 | Re: Translated packages descriptions progress[...]     | Michael Bramer ([...]|
| 19 | Loading an url takes 60 sec.[...]                      | and_ltsk (andre[...] |
+------------------------------------------------------------------------------------+
ghoseb@trinka:~$</pre>
<p>Well, the code is obviously pretty rough. It&#8217;s just for showing newbies how to use <a href="http://feedparser.org/" title="FeedParser">feedparser</a> and <a href="///usr/share/doc/python2.4-doc/html/lib/module-urllib.html" title="Urllib">urllib</a>, two very powerful Python libraries. Improvements, patches are welcome <img src='http://freegeek.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The <a href="http://people.ubuntu-in.org/~ghoseb/check-gmail.py" title="Check GMail">text source</a> can also be downloaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://freegeek.in/blog/2006/07/check-gmail-the-python-way/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Started working on the Design</title>
		<link>http://freegeek.in/blog/2006/06/started-working-on-the-design/</link>
		<comments>http://freegeek.in/blog/2006/06/started-working-on-the-design/#comments</comments>
		<pubDate>Mon, 05 Jun 2006 21:28:15 +0000</pubDate>
		<dc:creator>Baishampayan</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[SoC]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">https://g33k.wordpress.com/2006/06/06/started-working-on-the-design/</guid>
		<description><![CDATA[After a prolonged sickness, I am back to work again. Started working on the design specs of the offline update tool today. It&#39;s still incomplete, but I am just putting up my ideas of implementation on the doc. Talked to Mario Danic about the design doc. He also approved my specification in the Launchpad Blueprint [...]]]></description>
			<content:encoded><![CDATA[<p>After a <a href="http://g33k.wordpress.com/2006/06/02/down-with-tooth-infection-and-fever/" title="I was sick for a week or two">prolonged sickness</a>, I am <a href="http://g33k.wordpress.com/2006/06/03/relief-at-last/" title="I am fine now">back to work</a> again. Started working on the <a href="https://wiki.ubuntu.com/OfflineUpdateSpec/DesignDiscussion" title="Design Specs">design specs</a> of the <a href="https://wiki.ubuntu.com/OfflineUpdateSpec/" title="Offline Update Tool">offline update tool </a>today. It&#39;s still incomplete, but I am just putting up my ideas of implementation on the doc. Talked to <a href="https://wiki.ubuntu.com/MarioDanic" title="Mario Danic">Mario Danic</a> about the design doc. He also approved my specification in the Launchpad Blueprint system.</p>
<p>I was quite relieved to know that <a href="http://sourceforge.net/projects/python-apt" title="Python-APT">python-apt</a> is quite usable and it works fine (though not being very pythonic in nature). I read somewhere that it&#39;s not very actively maintained now-a-days and lacks a lot of features. That info relieved me quite a lot, otherwise my whole app would have become jeopardised <img src='http://freegeek.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>There are people who are also requesting me to port the tool to Windows. Well, <a href="http://www.python.org/" title="Python.Org">Python</a> code is easily portable but hey, Windows has no APT library <img src='http://freegeek.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Thankfully Mario is writing a tool for Windows which does a similar job, so may be I will be able to borrow some ideas from him.</p>
<p>I also need to check if my bank accepts cheques in Indian Rupees but drawn in the USA. As I have heard, they may claim that such cheques are impossible &#8230; heh, they have no idea about <a href="http://www.google.com" title="Google">Google</a>!</p>
<p>Anyway, I need to sleep off now. I must finish the design doc by tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://freegeek.in/blog/2006/06/started-working-on-the-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A first look at ayttm</title>
		<link>http://freegeek.in/blog/2005/11/a-first-look-at-ayttm/</link>
		<comments>http://freegeek.in/blog/2005/11/a-first-look-at-ayttm/#comments</comments>
		<pubDate>Fri, 25 Nov 2005 14:05:08 +0000</pubDate>
		<dc:creator>Baishampayan</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://g33k.wordpress.com/2005/11/25/a-first-look-at-ayttm/</guid>
		<description><![CDATA[I have never used ayttm myself, but I know Philip S. Tellis, its primary author quite well. It appears that the project is in a great need of active developers as Philip is quite busy with his work and others are I guess absconding. For those who don&#39;t know what ayttm is, it&#39;s a multi-protocol [...]]]></description>
			<content:encoded><![CDATA[<p>I have never used <a href="http://ayttm.sourceforge.net/" title="ayttm">ayttm</a> myself, but I know <a href="http://www.livejournal.com/users/bluesmoon/" title="Philip S. Tellis">Philip S. Tellis</a>, its primary author quite well. It appears that the project is in a great need of active developers as Philip is quite busy with his work and others are I guess absconding. For those who don&#39;t know what ayttm is, it&#39;s a multi-protocol and cross platform messaging client, a bit like <a href="http://gaim.sourceforge.net" title="GAIM">GAIM</a>. ayttm is quite novel in its own right as it seems to support Yahoo! Messenger webcams, though I haven&#39;t tested it myself. There are a few nagging issues wrt ayttm at the moment like the GUI is still using GTk+ 1.x while the whole world has moved to GTk+ 2.6.x upwards. So I thought it was worthwhile to check it out and see if I could help in some way. I checked out the source from the CVS repo and tried building it. And I hit a bug straightaway. There was this small bug which would cause an error when compiled with gcc 4.x. So I whipped up a small patch to fix it and submitted it to the list. And no, it was not a one-liner (it was a two-liner <img src='http://freegeek.in/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). I just checked that the patch was <a href="http://cvs.sourceforge.net/viewcvs.py/*checkout*/ayttm/ayttm/ChangeLog?rev=1.691" title="ChangeLog">committed</a> by Philip. Cool! I guess I have to devote some time hacking ayttm after my freakin&#39; exams are over. And yes, if you are a C programmer, and want to contribute to <a href="http://www.gnu.org/philosophy/free-sw.html" title="Free Software">Free Software</a>, ayytm needs you. Join <a href="http://ayttm.sourceforge.net/mls.shtml" title="ayttm Mailing Lists">the lists</a> today!</p>
]]></content:encoded>
			<wfw:commentRss>http://freegeek.in/blog/2005/11/a-first-look-at-ayttm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
