<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for groom</title>
    <link>http://www.advogato.org/person/groom/</link>
    <description>Advogato blog for groom</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 19 May 2013 18:26:09 GMT</pubDate>
    <item>
      <pubDate>Fri, 24 Sep 2010 05:56:43 GMT</pubDate>
      <title>24 Sep 2010</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=52</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=52</guid>
      <description>&lt;b&gt;Posting SVN commits to an IRC channel&lt;/b&gt;&#xD;
&lt;p&gt;&#xD;
Everybody may be aware of svn mailers that post commit logs&#xD;
to a mailing list or several email address. I found more&#xD;
useful to have a notification on my favourite IRC channel.&#xD;
&lt;p&gt;&#xD;
For people interested in IRC notification of SVN commits,&#xD;
here is a python script that will do the trick.&#xD;
&#xD;
&lt;p&gt; &lt;pre&gt;&#xD;
#!/usr/bin/python&#xD;
import sys&#xD;
from irclib import *&#xD;
&#xD;
&lt;p&gt; class SVNBot(SimpleIRCClient):&#xD;
    def __init__(self, server, port, target, repo, rev,&#xD;
author, log):&#xD;
        SimpleIRCClient.__init__(self)&#xD;
&#xD;
&lt;p&gt;         self.target = target&#xD;
        self.repo = repo&#xD;
        self.rev = rev&#xD;
        self.author = author&#xD;
        self.log = log&#xD;
        self.msg = 'new commit on ' + repo + ' r' + rev + '&#xD;
by ' + author + ': ' + log&#xD;
        self.connect(server, port, 'svnbot')&#xD;
&#xD;
&lt;p&gt;     def on_nicknameinuse(self, c, e):&#xD;
        c.nick(c.get_nickname() + '_')&#xD;
    &#xD;
    def on_welcome(self, c, e):&#xD;
        if (is_channel(self.target)):&#xD;
            self.connection.join(self.target)&#xD;
        else:&#xD;
            self.connection.notice(self.target, self.msg)&#xD;
            self.connection.quit()&#xD;
&#xD;
&lt;p&gt;     def on_join(self, c, e):&#xD;
        nick = nm_to_n(e.source())&#xD;
        if nick == c.get_nickname():&#xD;
            self.connection.notice(self.target, self.msg)&#xD;
        self.connection.quit()&#xD;
&#xD;
&lt;p&gt;     def on_quit(self, c, e):&#xD;
        nick = nm_to_n(e.source())&#xD;
        if nick == c.get_nickname():&#xD;
            self.connection.disconnect()&#xD;
            sys.exit(0)&#xD;
&#xD;
&lt;p&gt; def main():&#xD;
    if len(sys.argv) != 7:&#xD;
        print 'Usage: ' + sys.argv[0] + ' &amp;lt;server[:port]&amp;gt;&#xD;
&amp;lt;target&amp;gt; &amp;lt;repo&amp;gt; &amp;lt;revnum&amp;gt; &amp;lt;author&amp;gt; &amp;lt;log&amp;gt;'&#xD;
        sys.exit(1)&#xD;
&#xD;
&lt;p&gt;     s = sys.argv[1].split(':', 1)&#xD;
    server = s[0]&#xD;
    if len(s) == 2:&#xD;
        try:&#xD;
            port = int(s[1])&#xD;
        except ValueError:&#xD;
            print 'Error: Erroneous port.'&#xD;
            sys.exit(1)&#xD;
    &#xD;
    else:&#xD;
        port = 6667&#xD;
    target = sys.argv[2]&#xD;
    repo = sys.argv[3]&#xD;
    revnum = sys.argv[4]&#xD;
    author = sys.argv[5]&#xD;
    log = sys.argv[6]&#xD;
    bot = SVNBot(server, port, target, repo, revnum, author,&#xD;
log)&#xD;
    bot.start()&#xD;
&#xD;
&lt;p&gt; if __name__ == '__main__':&#xD;
    main()&#xD;
&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt; This script should be callable from the hooks/post-commit&#xD;
file as follow:&#xD;
&lt;pre&gt;&#xD;
REPOS="$1"&#xD;
REV="$2"&#xD;
AUTHOR=`/usr/bin/svnlook author "$REPOS"`&#xD;
LOG=`/usr/bin/svnlook log "$REPOS"`&#xD;
/usr/local/bin/svnbot.py "irc.server" "#irc.chan" "$REPOS"&#xD;
"$REV" "$AUTHOR" "$LOG"&#xD;
&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt; &lt;p&gt;&#xD;
Now, happy commits!</description>
    </item>
    <item>
      <pubDate>Thu, 12 Feb 2009 22:20:21 GMT</pubDate>
      <title>12 Feb 2009</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=51</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=51</guid>
      <description>&lt;b&gt;nall! notify almost everything on the system tray&lt;/b&gt;&#xD;
&lt;p&gt;&#xD;
I finally released a decent tarball of&#xD;
&lt;a href="http://www.advogato.org/proj/nall/" &gt;nall&lt;/a&gt;, a tool i use for several months,&#xD;
and i noticed that some people really waited for such a tool&#xD;
to monitor various networked resources a simple way. However,&#xD;
nall's current spawn'n'reap model is not very smart,so i may&#xD;
improve it in the future.&#xD;
</description>
    </item>
    <item>
      <pubDate>Fri, 7 Mar 2008 17:35:49 GMT</pubDate>
      <title>7 Mar 2008</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=50</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=50</guid>
      <description>&lt;b&gt;python is cool: chapter 0&lt;/b&gt;&#xD;
&lt;p&gt;I finally rewrote a program (previously wrote in C) in&#xD;
the python language. I like it, mainly for it's well&#xD;
documented API and the way we can have both the functionnal&#xD;
and object language style. I took to me less than 12 hours to&#xD;
complete the program i made in 3 days of C, having not any&#xD;
knowledge of Python but a book. I'ts really cool.&#xD;
&#xD;
&#xD;
</description>
    </item>
    <item>
      <pubDate>Fri, 15 Feb 2008 00:48:45 GMT</pubDate>
      <title>15 Feb 2008</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=49</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=49</guid>
      <description>&lt;b&gt;vala tutorial: chapter 0&lt;/b&gt;&#xD;
&lt;p&gt;after about 8 years of C and bourne, i finally decided to&#xD;
learn a descent language. and by learn, i mean learn from&#xD;
the beginning, as a baby. making things clean, trying to&#xD;
forget crappy things i made in the past. So, i decided to&#xD;
choose vala for testing my fresh baby brain. This first post&#xD;
on vala is be the beginning of a step by step introduction&#xD;
to this language for people who know C or C++.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt;&#xD;
first, read &lt;a href="http://live.gnome.org/Vala/Tutorial#head-05858cc9f630e02abfd36259a56b1a7a0f28a5e8" &gt;This&#xD;
Hello World in Vala&lt;/a&gt;&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt;&#xD;
Here is a variant, which goal is to demonstrate how to&#xD;
&lt;em&gt;use program's arguments&lt;/em&gt;, and how to get an&#xD;
&lt;em&gt;array's length&lt;/em&gt;:&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt;&#xD;
&lt;code&gt;&#xD;
using GLib;&lt;br&gt;&#xD;
public class Tutorial.CommandLineArgs : GLib.Object {&lt;br&gt;&#xD;
&amp;nbsp;public static void main(&lt;em&gt;string[] args&lt;/em&gt;) {&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;for (&lt;em&gt;uint&lt;/em&gt; i=1; i&amp;lt;&#xD;
args.&lt;em&gt;length&lt;/em&gt;; i++)&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;stdout.printf("Hello, %s.&#xD;
",&lt;em&gt;args[i]&lt;/em&gt;);&lt;br&gt;&#xD;
&amp;nbsp;&amp;nbsp;stdout.printf("My name is %s\n",&#xD;
&lt;em&gt;args[0]&lt;/em&gt;);&lt;br&gt;&#xD;
&amp;nbsp;}&lt;br&gt;&#xD;
}&lt;br&gt;&#xD;
&lt;/code&gt;&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt;&#xD;
Here you see the declaration of an &lt;em&gt;array of strings&lt;/em&gt;&#xD;
which i called &lt;em&gt;args&lt;/em&gt;, another declaration: an&#xD;
&lt;em&gt;unsigned integer variable&lt;/em&gt; named &lt;em&gt;i&lt;/em&gt;. Then&#xD;
you see the &lt;em&gt;length&lt;/em&gt; member of the array type.&#xD;
Finally you see how to acces to an &lt;em&gt;array's cell&lt;/em&gt;.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt; &lt;p&gt;&#xD;
&lt;em&gt;Question from the baby&lt;/em&gt;: how to get the real&#xD;
basename of args[0], having knowledge of basename() from&#xD;
&amp;lt;libgen.h&amp;gt; or g_path_get_basename() from GLib ?&#xD;
&lt;em&gt;Reply&lt;/em&gt;: to acces &lt;em&gt;g_path_get_basename()&lt;/em&gt; from&#xD;
GLib, Vala has this naming convetion:&#xD;
&lt;em&gt;GLib.Path.get_basename()&lt;/em&gt;. Now it's up to you to&#xD;
make a better hello people program.</description>
    </item>
    <item>
      <pubDate>Wed, 3 Oct 2007 04:17:26 GMT</pubDate>
      <title>3 Oct 2007</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=48</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=48</guid>
      <description>&lt;b&gt;vps experience&lt;/b&gt;&#xD;
&lt;p&gt;&#xD;
After the succcessful vserver experience for virtualizing&#xD;
asterisks and freepbx, i am now switching to the VPS&#xD;
technology provided by Positive software. The advantage is&#xD;
mainly that they provide a web interface to generete guest&#xD;
OSes. The cons is that it is not free for commercial purposes.&#xD;
see you later for more infos.</description>
    </item>
    <item>
      <pubDate>Sat, 29 Sep 2007 17:08:35 GMT</pubDate>
      <title>29 Sep 2007</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=47</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=47</guid>
      <description>&lt;b&gt;why just not extending HTML ?&lt;/b&gt;&#xD;
&lt;p&gt;&#xD;
After playing whith GLADE for Gtk+ apps i still think xhtml&#xD;
is the easyest way to set up a quick form based graphial&#xD;
interface. So i am looking for a HTML to Glade converter or&#xD;
somthing like that. years ago I heard the XFroms would&#xD;
appear in several years since it is an W3C proposal. But&#xD;
anyway... we&#xD;
are still waiting. So, why just not simply extend xhtml for&#xD;
form based apps ? you know, many new widgets would be&#xD;
useful, like:&#xD;
&lt;pre&gt;&#xD;
&amp;lt;date&amp;gt;01/01/1970&amp;lt;/date&amp;gt;&#xD;
&amp;lt;knob start="0" end="100"&amp;gt;&amp;lt;/&amp;gt;&#xD;
&amp;lt;slider pos="vertical" start="0", end="100"&amp;gt;&amp;lt;/&amp;gt;&#xD;
&amp;lt;menu class="main"&amp;gt;&#xD;
&amp;lt;item action="edit.php" target="new" &amp;gt;Edit&amp;lt;/entry&amp;gt;&#xD;
&amp;lt;item action="prefs.php"&#xD;
target="new"&amp;gt;Preferences&amp;lt;/entry&amp;gt;&#xD;
&amp;lt;/menu&amp;gt;&#xD;
&lt;/pre&gt;</description>
    </item>
    <item>
      <pubDate>Sun, 9 Sep 2007 07:44:11 GMT</pubDate>
      <title>9 Sep 2007</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=46</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=46</guid>
      <description>&lt;b&gt;virtualizing asterisk&lt;/b&gt;&#xD;
&lt;p&gt;&#xD;
i'm on making asterisk boxes inside linux virtual servers.&#xD;
Frank told about the linux vserver patch and.. wow this is&#xD;
really nice and simple to use. I installed a fresh etch into&#xD;
my old p500 and installed the vserver kernel from etch..&#xD;
simple. now here are the commands to create a full-featured&#xD;
vserver guest having a debian etch:&#xD;
&lt;pre&gt;&#xD;
# uname -a&#xD;
linux-image-vserver-686 blah...&#xD;
# apt-get install util-vserver&#xD;
[...]&#xD;
# vserver server1 build -m debootstrap -- -d etch&#xD;
[coffe men...]&#xD;
# vserver server1 start&#xD;
[see init process]&#xD;
# vserver server1 enter&#xD;
#_&#xD;
&lt;/pre&gt;&#xD;
and voil&amp;agrave;!&#xD;
</description>
    </item>
    <item>
      <pubDate>Wed, 1 Feb 2006 18:23:58 GMT</pubDate>
      <title>1 Feb 2006</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=45</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=45</guid>
      <description>&lt;b&gt;Sourceforge is really bad to me&lt;/b&gt;
&lt;p&gt;
Well, i decided to abandon releases on sourceforge.net since their release manager is really a crap. Also, i can't login anymore to sourceforge.net since they don't have correct no-cache meta tags on their login pages.
So i switched to nongnu.org and yes, it is far better!
You can see &lt;a href="http://www.advogato.org/proj/libspopc/" &gt;libspopc&lt;/a&gt; on &lt;a href="http://savannah.nongnu.org/projects/libspopc/" &gt;nongnu.org&lt;/a&gt;'s savannah.</description>
    </item>
    <item>
      <pubDate>Tue, 17 Jan 2006 17:33:23 GMT</pubDate>
      <title>17 Jan 2006</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=44</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=44</guid>
      <description>&lt;b&gt;awffull color patch&lt;/b&gt;
&lt;p&gt;
i patched &lt;a href="http://www.advogato.org/proj/awffull/" &gt;awffull&lt;/a&gt; to give it ability to read user's personal colors in awffull.conf and draw personalized charts. The patch has been made on &lt;tt&gt;awffull-3.02-beta2&lt;/tt&gt; but Steve McInerney have just released the 3.02 version today (not beta).&lt;br&gt;
He told me he will include the patch for the next release (3.03). If you can't wait, you can &lt;a href="http://brouits.free.fr/share/patches/awffull-3.02-beta2-user-color.diff" &gt;
get my patch here&lt;/a&gt; (applies on 3.02-beta2).

&lt;p&gt; Update: this early patch gave not full color customization, the next official awffull will handle it better.</description>
    </item>
    <item>
      <pubDate>Sat, 14 Jan 2006 04:01:01 GMT</pubDate>
      <title>14 Jan 2006</title>
      <link>http://www.advogato.org/person/groom/diary.html?start=43</link>
      <guid>http://www.advogato.org/person/groom/diary.html?start=43</guid>
      <description>&lt;b&gt;webalizer : the contribs&lt;/b&gt;
&lt;p&gt;several years ago, i patched the well known 
&lt;a href="http://www.advogato.org/proj/webalizer/" &gt;webalizer&lt;/a&gt; (2.01-10) in order to give it user defined colors capabilities.
I recently found it on Brad Barrett's ftp site and discovered there are many unknown &lt;b&gt;other useful contribs&lt;/b&gt; that extends the webalizer: check the &lt;a href="ftp://ftp.mrunix.net/pub/webalizer/contrib/" &gt;webalizer contrib subdir on Brad Barrett's ftp site&lt;/a&gt;.</description>
    </item>
  </channel>
</rss>
