<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Musings of a renegade developer</description><title>Peace, Love and C++</title><generator>Tumblr (3.0; @paultag)</generator><link>http://blog.pault.ag/</link><item><title>my sbuilder setup (sb)</title><description>&lt;p&gt;I&amp;#8217;ve expanded a bit on my idea (that is, the sbuilder wrapper to help aid with
managing more then one sbuild chroot), and it got out of hand very quickly.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s gone from one small shell script to a set of 8, and growing. Quickly.&lt;/p&gt;

&lt;p&gt;Until I spin these off into their own repo, they&amp;#8217;ll be in my &lt;a href="https://github.com/paultag/dot-bin" target="_blank"&gt;dot-bin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before getting too far, please relize this is only how I&amp;#8217;m using sbuild. There
are many other (more) sane configurations that you can (and should) use.&lt;/p&gt;

&lt;p&gt;This was not made to be useful for anyone other then me :)&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve added the ability to use unionfs-fuse, set up a way to login interactively
and a script to create new chroots without having them register as a global
schroot.&lt;/p&gt;

&lt;p&gt;Firstly, forgive me for my sins. This is all a huge hack, but it&amp;#8217;s use isn&amp;#8217;t
the &lt;em&gt;worst&lt;/em&gt; thing in the world.&lt;/p&gt;

&lt;p&gt;As of the time of this writing, I now have a gcc and clang chroot for each
of stable, testing and unstable.&lt;/p&gt;

&lt;p&gt;Now &amp;#8212; the big question &amp;#8212; how do you use this. Rather, this is more of a how do
I use sbuilder :)&lt;/p&gt;

&lt;p&gt;Firstly, I&amp;#8217;ve created a file for each schroot set that I&amp;#8217;m using. Here&amp;#8217;s
my &lt;code&gt;/etc/schroot/chroot.d/sid&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[sid]
type=directory
description=Debian sid/amd64 autobuilder
directory=/var/sbuild/sid
groups=root,sbuild
root-groups=root,sbuild
script-config=sbuild/config
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It&amp;#8217;s very similar to the one that sbuilder-createchroot creates.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re just looking for aufs / unionfs support, keep in mind schroot has
some great support. check &lt;code&gt;man 5 schroot.conf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Next, create a &lt;code&gt;dist.d&lt;/code&gt; directory in &lt;code&gt;/var/sbuild&lt;/code&gt; &amp;#8212; such as
&lt;code&gt;/var/sbuild/sid.d&lt;/code&gt;. In the future, this might get automagically created by the
&lt;code&gt;sb-create&lt;/code&gt; script. For now, it just expects that exists.&lt;/p&gt;

&lt;p&gt;The arguments for all the sb* commands is always in the order of variant, dist.&lt;/p&gt;

&lt;p&gt;variant defaults to &amp;#8220;generic&amp;#8221;, which I&amp;#8217;ve set as an alias to the generic chroot,
and the dist defaults to &amp;#8220;sid&amp;#8221;. At some point, I&amp;#8217;ll change the default to
be the last UNRELEASED entry in the changelog.&lt;/p&gt;

&lt;p&gt;So, to create a new chroot to become your clang chroot, you may choose to
invoke it as &lt;code&gt;sb-create clang&lt;/code&gt;, or more explicitly &lt;code&gt;sb-create clang sid&lt;/code&gt;.
To create a new chroot to become your stable / gcc chroot, you may create it
with &lt;code&gt;sb-create gcc stable&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After you have a chroot, you can start to use the &lt;code&gt;sb&lt;/code&gt; or &lt;code&gt;sbo&lt;/code&gt; scripts.
&lt;code&gt;sbo&lt;/code&gt; is just a wrapper around the &lt;code&gt;sb&lt;/code&gt; script that sets an envvar to tell
the &lt;code&gt;sb-prehook&lt;/code&gt; and &lt;code&gt;sb-posthook&lt;/code&gt; to set up the unionfs overlay.&lt;/p&gt;

&lt;p&gt;The unionfs overlay routine replaces the dist symbolic link (such as
&lt;code&gt;/var/sbuild/testing&lt;/code&gt;) with a folder, and mounts the real chroot (such as
&lt;code&gt;/var/sbuild/testing.d/testing-gcc&lt;/code&gt;) under the unionfs divert point (which is
something like &lt;code&gt;/var/sbuild/testing.overlay.d/testing-gcc&lt;/code&gt;). This lets us make
sure the chroot is never affected by a routine build, even if it&amp;#8217;s designed to
trash a chroot (unless, of course, it uses any number of ways to get outside the
chroot and trash the pristine directory &amp;#8212; this is to prevent mistakes, not
malicious scripts).&lt;/p&gt;

&lt;p&gt;By the way, for those interested, there&amp;#8217;s a small issue with what I&amp;#8217;m describing
it&amp;#8217;s very subtle. Basically, there&amp;#8217;s a few assumptions made by how schroot
operates, and handles &amp;#8220;sessions&amp;#8221;. Since it&amp;#8217;ll keep stuff mounted if the session
is still active, it makes purging all this a real &amp;#8230; pain.&lt;/p&gt;

&lt;p&gt;The magic behind the scripts is in the &lt;code&gt;sb-endsessions&lt;/code&gt; routine &amp;#8212; which will
properly end all the schroot sessions for that dist, and since we have our own
high-level locking system, we shouldn&amp;#8217;t have a situation where this kills off
another build.&lt;/p&gt;

&lt;p&gt;The code (which might have issues) looks like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SESSIONS=`schroot --all-sessions -l | grep "^session:$DIST-"`
for session in $SESSIONS; do
    echo "W: Ending session $session"
    schroot -e -c $session
done
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;By backing of schroot&amp;#8217;s mounts, we can do our mounting / removing without
worrying about klobbering schroot.&lt;/p&gt;

&lt;p&gt;Now, there&amp;#8217;s also the case of wanting to interactively log into a chroot.
For that, there&amp;#8217;s &lt;code&gt;sb-login&lt;/code&gt; and &lt;code&gt;sb-maint&lt;/code&gt;, both take the usual variant / dist
arguments. &lt;code&gt;sb-login&lt;/code&gt; logs in as the current user, and &lt;code&gt;sb-maint&lt;/code&gt; logs in as
the root user.&lt;/p&gt;

&lt;p&gt;Eventually, I&amp;#8217;ll be adding some scripts to upgrade all the build chroots for a
dist at once.&lt;/p&gt;</description><link>http://blog.pault.ag/post/24094551910</link><guid>http://blog.pault.ag/post/24094551910</guid><pubDate>Wed, 30 May 2012 20:00:27 -0400</pubDate><category>sbuild hax</category><category>moar</category><category>bashftw</category><category>unionfs</category></item><item><title>Goofing off with sbuild "variants"</title><description>&lt;p&gt;I&amp;#8217;ve recently found myself in need of more then one sbuild chroot, each one set up slightly differently then the next. For a while, providing different behavior with &lt;code&gt;unstable&lt;/code&gt; and &lt;code&gt;sid&lt;/code&gt; was all well and good, but I figure, like any good computer scientist, I should solve the general problem.&lt;/p&gt;

&lt;p&gt;As a result, I&amp;#8217;ve written an sbuild wrapper to help maintain sanity. It uses a series of symbolic links to hide everything out of the way, and some bash hackery.&lt;/p&gt;

&lt;p&gt;Basically, I&amp;#8217;ve set up a &lt;code&gt;/var/sbuild&lt;/code&gt; directory, full of a few different files. For each distribution, there is one folder, one symbolic link and up to two other files. There&amp;#8217;s the dist.d file (such as &lt;code&gt;/var/sbuild/sid.d&lt;/code&gt;) that contains all the &amp;#8220;variants&amp;#8221;, dist symbolic link (such as &lt;code&gt;/var/sbuild/sid&lt;/code&gt;) which points to the currently active chroot, and up to two lock files.&lt;/p&gt;

&lt;p&gt;The script will default to sid-default (that is to say, exactly, &lt;code&gt;/var/sbuild/sid.d/sid-default&lt;/code&gt; - which is a symbolc link to the &amp;#8220;default&amp;#8221; chroot), but may take two arguments, in the order of variant, then dist.&lt;/p&gt;

&lt;p&gt;Currently, I have two chroots, one for gcc, and one for clang (set up like Sylvestre used for &lt;a href="http://clang.debian.net/" target="_blank"&gt;cland.d.n&lt;/a&gt;) &amp;#8212; but I may add some more with different setups.&lt;/p&gt;

&lt;p&gt;Currently the behavior is to have the second wait kindly if you kick off two sbuilds at once, and fail out a third.&lt;/p&gt;

&lt;p&gt;There are a bunch of bugs, and I&amp;#8217;m not sure that this will work very well, but it&amp;#8217;s working.&lt;/p&gt;

&lt;p&gt;The next step is to combine this with unionfs overlays to help protect accidentally trashing the chroots.&lt;/p&gt;

&lt;p&gt;You can find the script on my &lt;a href="https://github.com/paultag/dot-bin/blob/master/sb" target="_blank"&gt;GitHub&lt;/a&gt;, pasted below.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/bash

DIST="sid"
VARIANT="default"
SBUILD=/var/sbuild

if [ "x$1" != "x" ]; then
    VARIANT=$1
fi
if [ "x$2" != "x" ]; then
    DIST=$2
fi

if [ -e $SBUILD/$DIST.lock ]; then
    PID=`cat $SBUILD/$DIST.lock`
    echo "W: We *must* wait for the finish of PID $PID"
    echo "W: Blocking execution until this file is removed."
    if [ -e $SBUILD/$DIST.wait ]; then
        echo "E: Someone else is waiting. Bombing out."
        exit 2
    fi
    echo $$ &amp;gt; $SBUILD/$DIST.wait
    while [ -e $SBUILD/$DIST.lock ]; do
        sleep 1
    done
    echo "I: Dropping out of lock. Purging wait."
    rm $SBUILD/$DIST.wait
fi

echo "I: Aquiring lock"
echo $$ &amp;gt; $SBUILD/$DIST.lock

CURRENT=$(basename `ls -xl $SBUILD/$DIST | awk '{print $11}'`)

# We set up the name like:
#   dist-variant
# such as "sid-clang" is cool.
#echo "I: We're currently $CURRENT."

if [ "x$CURRENT" == "x$DIST-$VARIANT" ]; then
    echo "I: This matches the desired setup. No action."
else
    if [ -e $SBUILD/$DIST.d/$DIST-$VARIANT ]; then
        echo "I: Re-setting $DIST symlink."
        rm $SBUILD/$DIST
        ln -s $SBUILD/$DIST.d/$DIST-$VARIANT $SBUILD/$DIST
    else
        echo "E: No such dist! Looking in $SBUILD/$DIST.d/$DIST-$VARIANT."
        exit 1
    fi
fi

echo "I: "
echo "I: Dist:    $DIST"
echo "I: Variant: $VARIANT"
echo "I: "
# echo "I: Before we go farther, we're updating."
# sbuild-update -d $DIST --upgrade

sbuild -d $DIST

echo "I: Releasing lock"
rm $SBUILD/$DIST.lock
&lt;/code&gt;&lt;/pre&gt;</description><link>http://blog.pault.ag/post/24040381626</link><guid>http://blog.pault.ag/post/24040381626</guid><pubDate>Tue, 29 May 2012 22:41:00 -0400</pubDate><category>sbuild hax</category><category>sb</category></item><item><title>My first foray into non-compliant Debian packages</title><description>&lt;p&gt;I&amp;#8217;ve decided to start putting together packages to rebuild the bare bones install I use for most of my systems, since rebuilding everything by hand is starting to get annoying. I call it &lt;a href="https://github.com/paultag/hairycandy" target="_blank"&gt;hairy candy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Because my setup relies on some &lt;em&gt;chem&lt;/em&gt; interesting &lt;em&gt;chem&lt;/em&gt; hacks, none of this is fit &amp;#8212; in any way &amp;#8212; for the archive.&lt;/p&gt;

&lt;p&gt;If the vim team was to catch wind of what I was doing, they&amp;#8217;d be none too happy :)&lt;/p&gt;

&lt;p&gt;While these packages work great for me, I can&amp;#8217;t stress enough how badly they can break something.&lt;/p&gt;

&lt;p&gt;Using &lt;a href="http://upsilon.cc/~zack/blog/posts/2009/04/howto:_uploading_to_people.d.o_using_dput/" target="_blank"&gt;Zack&amp;#8217;s guide&lt;/a&gt;, I was able to get an &lt;a href="http://archive.pault.ag/" target="_blank"&gt;archive&lt;/a&gt; up and running, no problem. Taking his advice, I even got signing working. Simple.&lt;/p&gt;

&lt;p&gt;mini-dinstall rocks &amp;#8212; a nice alternative to a PPA, for sure. At least, for one arch :)&lt;/p&gt;

&lt;p&gt;Now, the one spin I took on Zack&amp;#8217;s work was to add a &amp;#8220;landing&amp;#8221; page &amp;#8212; a listing of what&amp;#8217;s in the archive.&lt;/p&gt;

&lt;p&gt;I did this using a bit of Python &amp;amp; Jinja2. The script follows.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env python
# Copyright (c) Paul Tagliamonte, under the terms of the Expat license.

from jinja2 import Template
import sys

def parse_packages(fd):
    ret = []
    cur = {}
    key = None
    for line in fd.readlines():
    if line.strip() == "":
        ret.append(cur)
        cur = {}
        continue

    if line[0] == " ":
        cur[key] += "\n" + line.strip()
    else:
        key, val = line.split(":", 1)
        cur[key] = val.strip()
    return ret

pkgs = parse_packages(open(sys.argv[1], 'r'))
context = {
    "pkgs": pkgs
}

t = Template(open(sys.argv[2], 'r').read())
print t.render(**context)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Invocation looks something like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;render.py $ARCHIVE/debian/wicked/Packages $DATA/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I kick this script off in the singing script, since mini-dinstall doesn&amp;#8217;t have a exit hook.&lt;/p&gt;

&lt;p&gt;Works great, thanks everyone!&lt;/p&gt;</description><link>http://blog.pault.ag/post/24031431219</link><guid>http://blog.pault.ag/post/24031431219</guid><pubDate>Tue, 29 May 2012 20:40:00 -0400</pubDate><category>forgive me</category></item><item><title>playing with non-lintian lintian checks</title><description>&lt;p&gt;Crazy title, I know.&lt;/p&gt;

&lt;p&gt;Over the past $WHILE, I&amp;#8217;ve found myself checking for the same things. Some of these are fit for inclusion into lintian it&amp;#8217;s self &amp;#8212; others, not so much.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s a rundown on what my lintian wrapper (tragically also called &amp;#8220;lintian&amp;#8221; and just higher up on my $PATH. I know it&amp;#8217;s a hack.)&lt;/p&gt;

&lt;p&gt;Since I only use lintian on .changes files - it pre-processes for some information that is stuffed in the changes.&lt;/p&gt;

&lt;p&gt;The first step is to get all the bugs that the package closes. It then takes these bugs, and queries the BTS to see what package they&amp;#8217;re filed against. If the bug is filed against a &lt;em&gt;different&lt;/em&gt; bug then the package&amp;#8217;s source, it&amp;#8217;ll emit a warning. It has a greylist for stuff like &amp;#8220;WNPP&amp;#8221;. This will fail if something&amp;#8217;s filed against it&amp;#8217;s binary package rather then it&amp;#8217;s source :)&lt;/p&gt;

&lt;p&gt;Next, the wrapper will get &amp;#8220;other&amp;#8221; info from the changes. It checks if the suite is in the blacklist (&amp;#8220;UNRELEASED&amp;#8221;, and &amp;#8220;testing&amp;#8221;, (stable for me as well, since I don&amp;#8217;t usually deal with SRUs often)).&lt;/p&gt;

&lt;p&gt;It&amp;#8217;ll also check for the changed-by and maintainer, ensuring they&amp;#8217;re the same. This will fail for co-maint&amp;#8217;d packages.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;ve not guessed by now, this system relies on false-positives :)&lt;/p&gt;

&lt;p&gt;Nextly, if there are .debs in the Files, it&amp;#8217;ll go through and check the control of each. It&amp;#8217;ll print out a stanza with the short-description inside a template, to see if the description &amp;#8220;works&amp;#8221;.&lt;/p&gt;

&lt;p&gt;After that, it&amp;#8217;ll attempt to make HTTP requests to the Homepage (and eventually URLs in the description and VCS-Browse)&lt;/p&gt;

&lt;p&gt;If the package has &amp;#8220;python&amp;#8221; in the source name anywhere, or in any of it&amp;#8217;s binary packages, it&amp;#8217;ll trigger &lt;a href="http://jwilk.net/software/lintian4python" target="_blank"&gt;jwilk&amp;#8217;s lintian4python&lt;/a&gt; over the source as well.&lt;/p&gt;

&lt;p&gt;After this, it passes through to regular lintian.&lt;/p&gt;

&lt;p&gt;Oh, and it colorizes all the output :)&lt;/p&gt;

&lt;p&gt;Here is a (mostly lint-free) package:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://i.imgur.com/sBMXA.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;As you can see, it&amp;#8217;s very (&lt;em&gt;very&lt;/em&gt;) verbose, but i&amp;#8217;d rather cross stuff off a checklist then worry about something being off.&lt;/p&gt;

&lt;p&gt;Anyway, it&amp;#8217;s a work in progress. Not even a serious one, at that. It&amp;#8217;s a bunch of hacks put together, so I can&amp;#8217;t really endorse anyone else using this stuff. If you feel crazy enough to do so, all the tools are found on my &lt;a href="https://github.com/paultag/dot-bin" target="_blank"&gt;dot-bin repo on GitHub&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.pault.ag/post/23702762096</link><guid>http://blog.pault.ag/post/23702762096</guid><pubDate>Thu, 24 May 2012 20:25:03 -0400</pubDate><category>lintian hax</category><category>debian</category></item><item><title>introducing... poŝto</title><description>&lt;p&gt;Firstly, please excuse the ugly formatting of this ultra-wide image on my blog, and I&amp;#8217;m sure the respective planets that I&amp;#8217;m on.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://i.imgur.com/Xbbs9.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;poŝto is my first &amp;#8220;real&amp;#8221; node project, and I&amp;#8217;m planning to get it to a point where it makes email &lt;em&gt;less&lt;/em&gt; painful then it otherwise is. The code&amp;#8217;s on my &lt;a href="https://github.com/paultag/poshto" target="_blank"&gt;github&lt;/a&gt;, and I&amp;#8217;d like to thank &lt;a href="https://twitter.com/#!/rwaldron" target="_blank"&gt;Rick Waldron&lt;/a&gt; for his work in helping me, as well as &lt;a href="https://twitter.com/#!/bitb" target="_blank"&gt;Scott Wells&lt;/a&gt; for the name.&lt;/p&gt;

&lt;p&gt;For those wondering, poŝto is an Esperanto word meaning (according to &lt;a href="http://en.wiktionary.org/wiki/po%C5%9Dto" target="_blank"&gt;wiktionary&lt;/a&gt;):&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;a public institution (usually government-run) to deliver mail, post&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;mail distribution in general&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;one&amp;#8217;s mail, collectively&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;The front-end&amp;#8217;s name is &amp;#8220;poŝtilo&amp;#8221; &amp;#8212; the suffix denotes &amp;#8220;tool&amp;#8221; such that poŝtilo means something like &amp;#8220;mail tool&amp;#8221; &amp;#8212; fitting!&lt;/p&gt;

&lt;p&gt;More to come&amp;#8230;&lt;/p&gt;</description><link>http://blog.pault.ag/post/23327731725</link><guid>http://blog.pault.ag/post/23327731725</guid><pubDate>Fri, 18 May 2012 22:50:00 -0400</pubDate><category>poŝtilo</category><category>poŝto</category><category>rwaldron</category><category>bitb</category><category>poshto</category><category>poshtilo</category><category>email sucks</category><category>imap</category><category>javascript</category><category>node.js</category></item><item><title>gcc 4.7 patchathon part V</title><description>&lt;p&gt;Another day, s&amp;#8217;more patches.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://bugs.debian.org/667343" target="_blank"&gt;667343&lt;/a&gt; (qterm)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/672007" target="_blank"&gt;672007&lt;/a&gt; (pokerth)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/672010" target="_blank"&gt;672010&lt;/a&gt; (cryptkeeper)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/672052" target="_blank"&gt;672052&lt;/a&gt; (qastools)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/672071" target="_blank"&gt;672071&lt;/a&gt; (pxe-kexec)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/672005" target="_blank"&gt;672005&lt;/a&gt; (l2tp-ipsec-vpn)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/672003" target="_blank"&gt;672003&lt;/a&gt; (dibbler)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-gcc-4.7;users=debian-gcc@lists.debian.org" target="_blank"&gt;Consider helping out!&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.pault.ag/post/22810143424</link><guid>http://blog.pault.ag/post/22810143424</guid><pubDate>Thu, 10 May 2012 20:16:00 -0400</pubDate><category>gcc-4.7</category><category>patchathon</category><category>quickie post</category></item><item><title>gcc 4.7 patchathon part IV</title><description>&lt;p&gt;S&amp;#8217;more patches today to the grooven&amp;#8217; vibes of &lt;a href="http://en.wikipedia.org/wiki/Home_Movies_(TV_series)" target="_blank"&gt;Home Movies&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://bugs.debian.org/667221" target="_blank"&gt;667221&lt;/a&gt; (kdesvn)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/667200" target="_blank"&gt;667200&lt;/a&gt; (hexxagon)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/667190" target="_blank"&gt;667190&lt;/a&gt; (gpsim) - not really a patch, updated existing patch&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/667230" target="_blank"&gt;667230&lt;/a&gt; (kredentials)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/667233" target="_blank"&gt;667233&lt;/a&gt; (kvpnc)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Consider helping out :)&lt;/p&gt;</description><link>http://blog.pault.ag/post/22389909767</link><guid>http://blog.pault.ag/post/22389909767</guid><pubDate>Fri, 04 May 2012 13:41:30 -0400</pubDate><category>gcc-4.7</category><category>patchathon</category><category>home movies</category><category>not frasier</category></item><item><title>Transparency Camp (Day 1)</title><description>&lt;p&gt;I&amp;#8217;m at &lt;a href="http://transparencycamp.org/" target="_blank"&gt;Transparency Camp&lt;/a&gt;, so if you&amp;#8217;re around, feel free to find me and say hi!&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve been pretty much off the radar completely, so this is just to say I&amp;#8217;m alive and doing well :)&lt;/p&gt;

&lt;p&gt;For those who don&amp;#8217;t know, Transparency Camp is an unconference on open government, government transparency and all that good stuff.&lt;/p&gt;</description><link>http://blog.pault.ag/post/22001108086</link><guid>http://blog.pault.ag/post/22001108086</guid><pubDate>Sat, 28 Apr 2012 16:54:04 -0400</pubDate><category>tcamp12</category><category>tcamp</category><category>sunlight</category><category>washington dc</category><category>it's lots of fun no really</category></item><item><title>gcc 4.7 patchathon part III</title><description>&lt;p&gt;S&amp;#8217;more days, s&amp;#8217;more patches:&lt;/p&gt;

&lt;p&gt;Hacked out a few over the last few days, this time, to some good eats. I&amp;#8217;m making a habit of this tv-hack-time thing.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;patch for &lt;a href="http://bugs.debian.org/667194" target="_blank"&gt;667194&lt;/a&gt; (gsmartcontrol)&lt;/li&gt;
&lt;li&gt;patch for &lt;a href="http://bugs.debian.org/667177" target="_blank"&gt;667177&lt;/a&gt; (gdisk)&lt;/li&gt;
&lt;li&gt;patch for &lt;a href="http://bugs.debian.org/667178" target="_blank"&gt;667178&lt;/a&gt; (gkrellkam)&lt;/li&gt;
&lt;li&gt;patch for &lt;a href="http://bugs.debian.org/667180" target="_blank"&gt;667180&lt;/a&gt; (gkrellmitime)&lt;/li&gt;
&lt;li&gt;patch for &lt;a href="http://bugs.debian.org/667216" target="_blank"&gt;667216&lt;/a&gt; (jigzo)&lt;/li&gt;
&lt;li&gt;patch for &lt;a href="http://bugs.debian.org/667217" target="_blank"&gt;667217&lt;/a&gt; (jstest-gtk)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Consider helping out with the gcc-4.7 ftbfss, there&amp;#8217;s a bunch!&lt;/p&gt;</description><link>http://blog.pault.ag/post/21473084974</link><guid>http://blog.pault.ag/post/21473084974</guid><pubDate>Fri, 20 Apr 2012 22:53:25 -0400</pubDate><category>good eats</category><category>patchathon</category><category>gcc-4.7</category></item><item><title>gcc 4.7 patchathon part II</title><description>&lt;p&gt;Another day, more patches. This time, it was to the rockn&amp;#8217; vibes of Chopped.&lt;/p&gt;

&lt;p&gt;Patch for:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667365" target="_blank"&gt;667365&lt;/a&gt; (s51dude)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667331" target="_blank"&gt;667331&lt;/a&gt; (prerex)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667328" target="_blank"&gt;667328&lt;/a&gt; (posterazor)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667313" target="_blank"&gt;667313&lt;/a&gt; (openmsx-debugger)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667308" target="_blank"&gt;667308&lt;/a&gt; (oggvideotools)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In the mean-time, I put together a &lt;a href="http://people.ubuntu.com/~paultag/debian/qa-gcc-ftbfs-help-needed" target="_blank"&gt;script&lt;/a&gt; for GCC 4.7 transition bugs that are owned by the QA team with patches in the BTS.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s easy as cake to throw together a QA upload, so I encourage anyone out there to do some easy hacking :)&lt;/p&gt;</description><link>http://blog.pault.ag/post/21308549424</link><guid>http://blog.pault.ag/post/21308549424</guid><pubDate>Tue, 17 Apr 2012 23:31:12 -0400</pubDate><category>chopped</category><category>gcc-4.7</category><category>patchathon</category><category>ftbfs</category></item><item><title>pyutf (or, as it's known on my machine - ☃�.py)</title><description>&lt;p&gt;&lt;a href="https://github.com/paultag/pyutf" target="_blank"&gt;code can be found on my github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Forewarning, I can&amp;#8217;t actually tell if that second UTF (PILE-OF-POO) actually renders, since my typeface is lame.&lt;/p&gt;

&lt;p&gt;Anyway, introducing an idea that fermented a few days ago with some of the &lt;a href="http://bocoup.com/" target="_blank"&gt;bopeeps&lt;/a&gt; ( &lt;a href="https://github.com/iros" target="_blank"&gt;iros&lt;/a&gt;, &lt;a href="https://github.com/jugglinmike" target="_blank"&gt;jugglinmike&lt;/a&gt;, &lt;a href="https://github.com/tbranyen" target="_blank"&gt;tbranyen&lt;/a&gt;, &lt;a href="https://github.com/incompl" target="_blank"&gt;greg&lt;/a&gt;) - known initially as ☃�.py (pronounced snowman-pile-of-poo-dot-py)&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s a code sample:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env pyutf

lis = [ 1, 2, 3, 4, 5, 4, 3, 2, 1 ]
g = λ x: x * π
∀ a ∈ lis:
    print g(a)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Which outputs:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;3.14159265359
6.28318530718
9.42477796077
12.5663706144
15.7079632679
12.5663706144
9.42477796077
6.28318530718
3.14159265359
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Patches welcome, and bonus points for a py2snowmanpoo / snowmanpoo2py pull request. We&amp;#8217;ll call it a code compressor.&lt;/p&gt;

&lt;p&gt;Also, if someone could fix the loading the whole script at startup thing too.&lt;/p&gt;

&lt;p&gt;Yes, this is a joke. But also, yes, it works.&lt;/p&gt;</description><link>http://blog.pault.ag/post/21099631303</link><guid>http://blog.pault.ag/post/21099631303</guid><pubDate>Sat, 14 Apr 2012 15:45:00 -0400</pubDate><category>☃☃☃☃☃☃☃☃☃☃</category><category>�����������</category><category>hax</category><category>lol</category><category>compressor</category><category>pretty-cool</category></item><item><title>gcc 4.7 patchathon</title><description>&lt;p&gt;For no reason other then I had some time, I went on a patchathon against gcc-4.7 ftbfss while watching frasier&lt;/p&gt;

&lt;p&gt;This log is really for my own use :)&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;Blocked &lt;a href="http://bugs.debian.org/667409" target="_blank"&gt;667409&lt;/a&gt;, &lt;a href="http://bugs.debian.org/667394" target="_blank"&gt;667394&lt;/a&gt; and &lt;a href="http://bugs.debian.org/667393" target="_blank"&gt;667393&lt;/a&gt; with newly filed bug &lt;a href="http://bugs.debian.org/668700" target="_blank"&gt;668700&lt;/a&gt; in libcrypto++ (regarding providing gcc-4.7 invalid headers)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Patch sent in for &lt;a href="http://bugs.debian.org/667418" target="_blank"&gt;667418&lt;/a&gt; (wvstreams)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Patch sent in for &lt;a href="http://bugs.debian.org/667415" target="_blank"&gt;667415&lt;/a&gt; (wmhdplop)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Patch sent in for &lt;a href="http://bugs.debian.org/667334" target="_blank"&gt;667334&lt;/a&gt; (pwlib)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Patch sent in for &lt;a href="http://bugs.debian.org/667333" target="_blank"&gt;667333&lt;/a&gt; (ptlib-wolf)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Patch sent in for &lt;a href="http://bugs.debian.org/667327" target="_blank"&gt;667327&lt;/a&gt; (populations)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Filed serious bug &lt;a href="http://bugs.debian.org/668698" target="_blank"&gt;668698&lt;/a&gt; against cxxtools for providing a broken header&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Filed serious bug &lt;a href="http://bugs.debian.org/668700" target="_blank"&gt;668700&lt;/a&gt; against libcrypto++ for providing a broken header&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.pault.ag/post/21083720029</link><guid>http://blog.pault.ag/post/21083720029</guid><pubDate>Sat, 14 Apr 2012 10:44:01 -0400</pubDate><category>patchathon</category><category>frasier</category><category>debian</category><category>bugs</category></item><item><title>GeoParse update</title><description>&lt;p&gt;I&amp;#8217;ve thrown a bit of work at the wall, and some of it stuck. I&amp;#8217;ve been working (slowly) on &lt;a href="https://github.com/paultag/geoparse" target="_blank"&gt;GeoParse&lt;/a&gt;, which is a (hopefully pythonic) library to clean, pamper, separate and really dig into fairly low-quality GPS data (like, say, from Google Latitude)&lt;/p&gt;

&lt;p&gt;Just the basics are in place now, but work&amp;#8217;s slowly progressing. Hopefully, I should have something workable in the short-term future.&lt;/p&gt;</description><link>http://blog.pault.ag/post/20933202665</link><guid>http://blog.pault.ag/post/20933202665</guid><pubDate>Wed, 11 Apr 2012 20:14:03 -0400</pubDate><category>geoparse</category><category>update</category><category>google</category><category>latitude</category></item><item><title>Processing Geo-location data</title><description>&lt;p&gt;I&amp;#8217;m in the middle of plotting and designing a library to handle loading, processing and interpreting Geo-location data.&lt;/p&gt;

&lt;p&gt;I have a fairly substantial corpus of data (latitude data since 2010-ish, on and off), and a bit of motivation to hack something up.&lt;/p&gt;

&lt;p&gt;So far, I would like to see a lib to do most (or all) of the following:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;Discard static-ey reports (e.g., within a second, I&amp;#8217;m four miles apart and back)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Translate from two lat-lon pairs to feet&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#8220;Time-Space points&amp;#8221; &amp;amp; PointDeltas&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Point &amp;#8220;math&amp;#8221;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Process &amp;#8220;stop&amp;#8221; data out of the corpus&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Process &amp;#8220;trip&amp;#8221; data out of the corpus&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search against a list of &amp;#8220;trips&amp;#8221; to determine which &amp;#8220;trip&amp;#8221; it most likely matches, given a new set against the corpus&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Not everything is settled, but this is on my list for 1.0, I think.&lt;/p&gt;</description><link>http://blog.pault.ag/post/20499187109</link><guid>http://blog.pault.ag/post/20499187109</guid><pubDate>Wed, 04 Apr 2012 21:02:23 -0400</pubDate><category>geo-location</category><category>geoparse</category><category>glat</category></item><item><title>Django + Git = ?</title><description>&lt;p&gt;I&amp;#8217;d be interested in getting an instance set up of a Django powered Git project viewer (or rather, something between GitHub and viewgit)&lt;/p&gt;

&lt;p&gt;The ideal implementation would use something like &lt;a href="https://launchpad.net/dulwich" target="_blank"&gt;dulwich&lt;/a&gt;, and be super snappy.&lt;/p&gt;

&lt;p&gt;If anyone feels like writing this, let me know. If something like this exists, please let me know even faster.&lt;/p&gt;</description><link>http://blog.pault.ag/post/20224079687</link><guid>http://blog.pault.ag/post/20224079687</guid><pubDate>Sat, 31 Mar 2012 10:07:59 -0400</pubDate><category>git</category><category>django</category><category>help!</category><category>dulwich</category></item><item><title>Software that doesn't suck volume 1</title><description>&lt;p&gt;As many of you know, I&amp;#8217;m highly critical of most software. Anyone that&amp;#8217;s met me in person has most likely heard my all-too-common tirades on why software makes my life worse.&lt;/p&gt;

&lt;p&gt;I figured, since I&amp;#8217;m so hard, and I&amp;#8217;ve recently found some software I feel good about using, I&amp;#8217;d start another one of my ongoing series on software I don&amp;#8217;t hate, or rather, software I might actually say I &lt;em&gt;like&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Out of nothing but pure luck (the author followed me on twitter, so I ended up checking out his profile, finding some stuff I liked, and checked out his github), I came across &lt;a href="https://github.com/sindresorhus/GitHub-Notifier" target="_blank"&gt;Github Notifier&lt;/a&gt;, which works on Chrome, Firefox and Opera.&lt;/p&gt;

&lt;p&gt;This plugin shows the octocat on the toolbar, with a count of the unread GitHub notifications.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://i.imgur.com/Op06s.png" alt="Octocat 1"/&gt;&lt;/p&gt;

&lt;p&gt;The GitHub API (both V2 and V3) don&amp;#8217;t have support for getting notification counts, so this plugin / extension works by scraping the notification page. I feel OK about this because the code is pretty minimal and clean.&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s it in use (on my machine)&lt;/p&gt;

&lt;p&gt;&lt;img src="http://i.imgur.com/FPk7x.png" alt="Octocat 2"/&gt;&lt;/p&gt;

&lt;p&gt;Thanks, @&lt;a href="http://twitter.com/sindresorhus" target="_blank"&gt;sindresorhus&lt;/a&gt;!&lt;/p&gt;</description><link>http://blog.pault.ag/post/19836046997</link><guid>http://blog.pault.ag/post/19836046997</guid><pubDate>Sat, 24 Mar 2012 11:21:32 -0400</pubDate><category>stds</category><category>GitHub-Notifier</category></item><item><title>Setting up uWSGI + nginx</title><description>&lt;p&gt;I&amp;#8217;ve spent some time recently converting from using PHP to using Django for my web applications. As a result, I&amp;#8217;m migrating from apache2 (to be totally fair, it does have wsgi support, but I&amp;#8217;d rather re-design using the latest fad) to nginx and uWSGI.&lt;/p&gt;

&lt;p&gt;So, here&amp;#8217;s some notes to myself on setting it up again.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;uwsgi has an &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=664890" target="_blank"&gt;issue&lt;/a&gt; with &amp;#8212;plugins python, use &amp;#8220;python27&amp;#8221; instead. It&amp;#8217;s my hunch it&amp;#8217;s because of a symlink.&lt;/li&gt;
&lt;li&gt;Set up a static alias to link django static resources into&lt;/li&gt;
&lt;li&gt;Invocation of uwsgi is below&lt;/li&gt;
&lt;li&gt;Run uwsgi as &amp;#8220;www&amp;#8221; user, who&amp;#8217;s home is in /srv/www&lt;/li&gt;
&lt;li&gt;The tools I used in place of daemontools is on my &lt;a href="https://github.com/paultag/www-bin" target="_blank"&gt;github&lt;/a&gt;. Revisit this.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Given&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SRV="/srv/www/uwsgi"
DATA="$SRV/app/$APP"
SOCK="$SRV/sock/$APP.sock"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Invocation&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;exec uwsgi \
    --plugins python27 \
    --chdir   $DATA/.. \
    --socket  $SOCK \
    --chmod-socket \
    -wsgi ./$APP/django_wsgi.py
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I wrote some tools to daemonize this, but I have a hunch daemontools might be better.&lt;/p&gt;</description><link>http://blog.pault.ag/post/19710458828</link><guid>http://blog.pault.ag/post/19710458828</guid><pubDate>Wed, 21 Mar 2012 21:35:00 -0400</pubDate><category>nginx</category><category>uwsgi</category><category>howto</category><category>notesforlater</category><category>gahd</category></item><item><title>OpenStates Hackathon</title><description>&lt;p&gt;The OpenStates / GASP hackathon here at PyCon is going killer. We&amp;#8217;ve got a bunch of brandy-new contributors hacking away, and sending in pull requests. We&amp;#8217;re squashing bugs like crazy, and it&amp;#8217;s going super well.&lt;/p&gt;

&lt;p&gt;Shout-out to all the new contributors!&lt;/p&gt;</description><link>http://blog.pault.ag/post/19250755069</link><guid>http://blog.pault.ag/post/19250755069</guid><pubDate>Tue, 13 Mar 2012 17:02:09 -0400</pubDate><category>PyCon</category><category>sunlight</category><category>openstates</category></item><item><title>I'm going to PyCon!</title><description>&lt;p&gt;I&amp;#8217;ll be at PyCon with some of the &lt;a href="http://sunlightfoundation.com/" target="_blank"&gt;Sunlight&lt;/a&gt; crew, and we&amp;#8217;ll be hosting a Hackathon after the talks. I hope anyone in the area will consider hacking with us this year.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re going to PyCon, send me an email, tweet or other digital message - the talks this year look awesome!&lt;/p&gt;</description><link>http://blog.pault.ag/post/18916857676</link><guid>http://blog.pault.ag/post/18916857676</guid><pubDate>Wed, 07 Mar 2012 16:39:33 -0500</pubDate><category>pycon</category><category>blatant-filler</category><category>sunlight</category></item><item><title>Syn rewrite</title><description>&lt;p&gt;I&amp;#8217;m thinking of rewriting Syn, but this time, with the lessons learned from Syn1, 2, and 3. While I don&amp;#8217;t want to rewrite it (again), it&amp;#8217;ll be a nice time to simplify the project, and give it a chance to actually function (well) as a LFS-esque package manager.&lt;/p&gt;

&lt;p&gt;Hopefully, this can be the final rewrite.&lt;/p&gt;</description><link>http://blog.pault.ag/post/18579909013</link><guid>http://blog.pault.ag/post/18579909013</guid><pubDate>Thu, 01 Mar 2012 20:00:41 -0500</pubDate><category>syn</category></item></channel></rss>

