<?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>Introducing "Practically Me" - F/OSS about.me style homepage</title><description>&lt;p&gt;I’ve spent my caturday hacking on a simple shared homepage platform, similar (but not quite like &lt;a href="https://about.me/" target="_blank"&gt;about.me&lt;/a&gt;) - it’s not going to be as commercial or full-featured, and I doubt it’ll be as polished, but it’s slowly coming along.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://i.imgur.com/K0AEX.jpg" alt="practically me"/&gt;&lt;/p&gt;

&lt;p&gt;It should have some nice support in the end, and I’m for sure looking for collaborators. I was thinking that this could be used in f/oss communities to give their members a place to show themselves off.&lt;/p&gt;

&lt;p&gt;I’ll admit, this was an Idea taken from &lt;a href="http://castrojo.tumblr.com/post/11360873455/lets-make-it-personal" target="_blank"&gt;Jorge’s Blog&lt;/a&gt;, so props over that way.&lt;/p&gt;</description><link>http://blog.pault.ag/post/17493618339</link><guid>http://blog.pault.ag/post/17493618339</guid><pubDate>Sun, 12 Feb 2012 11:56:23 -0500</pubDate></item><item><title>mario-mbta mashup</title><description>&lt;p&gt;A few weeks back, I blogged about &lt;a href="https://github.com/paultag/python-charlie" target="_blank"&gt;python-charlie&lt;/a&gt;, a python lib to get at Boston MBTA data.&lt;/p&gt;

&lt;p&gt;I’ve since re-factored the code and mashed it up with “Super MBTA World”, by &lt;a href="http://circlecatgames.com/" target="_blank"&gt;Adam Summerville of Circle Cat Games&lt;/a&gt;, a fantastic image of Boston’s public transit.&lt;/p&gt;

&lt;p&gt;A few hours and a bit of flask later, here is “trendy” (I hate picking names) - which will move little Koopahs over the MBTA map.&lt;/p&gt;

&lt;p&gt;It’s very incomplete, but it’s just showing off how awesome some of this data is.&lt;/p&gt;

&lt;p&gt;Patches welcome!&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lz5842IJEO1qeoeck.png" alt="Here's a photo"/&gt;&lt;/p&gt;</description><link>http://blog.pault.ag/post/17330999108</link><guid>http://blog.pault.ag/post/17330999108</guid><pubDate>Thu, 09 Feb 2012 15:41:10 -0500</pubDate><category>mashup</category><category>mario</category><category>mbta</category><category>mario</category></item><item><title>Mapping the Ubuntu Community</title><description>&lt;p&gt;In playing with some tools I’ve run into at &lt;code&gt;$work&lt;/code&gt;, I’ve tried loading in some Ubuntu datasets in some fun and interesting ways.&lt;/p&gt;

&lt;p&gt;Today, I’ve chosen to map all Ubuntu Members with a public lat/lon, sized by Karma.&lt;/p&gt;

&lt;p&gt;The sizes relate to if the Karma is greater then:&lt;/p&gt;

&lt;p&gt;1: 10&lt;/p&gt;

&lt;p&gt;2: 50&lt;/p&gt;

&lt;p&gt;3: 100&lt;/p&gt;

&lt;p&gt;4: 500&lt;/p&gt;

&lt;p&gt;5: 1000&lt;/p&gt;

&lt;p&gt;6: 2000&lt;/p&gt;

&lt;p&gt;7: 7000&lt;/p&gt;

&lt;p&gt;8: 15000&lt;/p&gt;

&lt;p&gt;9: 25000&lt;/p&gt;

&lt;p&gt;10: 50000&lt;/p&gt;

&lt;p&gt;So, without further adieu, here’re some maps!&lt;/p&gt;

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

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

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

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

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

&lt;p&gt;&lt;img src="http://i.imgur.com/xkiG1.png" alt="Globe"/&gt;&lt;/p&gt;</description><link>http://blog.pault.ag/post/17036484637</link><guid>http://blog.pault.ag/post/17036484637</guid><pubDate>Sat, 04 Feb 2012 12:04:15 -0500</pubDate><category>ubuntu</category><category>cartography</category><category>incomplete-data-set</category><category>debian</category></item><item><title>python-sunlight (or: get at some awesome US Political data programmatically)</title><description>&lt;p&gt;I’ve spent a few days during work, after work and on the weekend working on &lt;a href="https://github.com/sunlightlabs/python-sunlight" target="_blank"&gt;python-sunlight&lt;/a&gt;, a unified API implementation of a few Sunlight services.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;very&lt;/strong&gt; unstable, and not released yet (so please don’t rely on it yet), but it will be shortly.&lt;/p&gt;

&lt;p&gt;Be sure to sign up for an &lt;a href="http://services.sunlightlabs.com/accounts/register/" target="_blank"&gt;API Key&lt;/a&gt;, and dump the key to &lt;code&gt;~/.sunlight.key&lt;/code&gt; — there’s a simple script to help with some of this in &lt;code&gt;bin/&lt;/code&gt;, but nothing solid yet.&lt;/p&gt;

&lt;p&gt;I do, however, encourage you to use it and play around with it, and report your bugs.&lt;/p&gt;

&lt;p&gt;Contributions (in the form of code) are also very welcome, so please do fork the project and play around with it.&lt;/p&gt;

&lt;p&gt;Just to give everyone a taste of how cool this is — this will pull up a list of twitter IDs of people who mention “free market” more then anyone else according to the congressional record:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from sunlight import capitolwords
from sunlight import congress

for person in capitolwords.phrases_by_entity(
    "legislator",
    phrase="free market",
    sort="count",
):
    n = congress.legislators( bioguide_id=person['legislator'],
        all_legislators="true" )
    if len(n) &gt;= 1:
        n = n[0]
        if n['twitter_id'] != "":
            print n['twitter_id']
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And the output:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;RepRonPaul
stevekingia
SenSherrodBrown
JacksonLeeTX18
SenatorLeahy
ChuckGrassley
SenJohnMcCain
OrrinHatch
DanaRohrabacher
JudgeTedPoe
McConnellPress
edtowns
SenatorDurbin
SenatorSessions
SenatorHarkin
SenChrisDodd
russfeingold
RosLehtinen
sencarllevin
senjonkyl
Dennis_Kucinich
senatorsanders
SenatorReid
RepDanBurton
RepMikePence
SenSamBrownback
joebiden
FrankPallone
ToddAkin
senatorboxer
RepTrentFranks
JohnCornyn
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Have fun!&lt;/p&gt;

&lt;p&gt;Show off what’cha got, and please let me know if you do something cool!&lt;/p&gt;</description><link>http://blog.pault.ag/post/16793842255</link><guid>http://blog.pault.ag/post/16793842255</guid><pubDate>Mon, 30 Jan 2012 20:45:00 -0500</pubDate><category>sunlight</category><category>python-sunlight</category><category>debian</category><category>awesome</category><category>newlib</category></item><item><title>Hey look! Openstates data!</title><description>&lt;p&gt;&lt;img src="http://i.imgur.com/fklMK.png" alt="Sweet!"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://stateimpact.npr.org/ohio/tag/hb-136/" target="_blank"&gt;npr’s site&lt;/a&gt; is using some &lt;a href="http://openstates.org/" target="_blank"&gt;OpenStates&lt;/a&gt; data, the project I’m currently working on at &lt;a href="http://sunlightlabs.com" target="_blank"&gt;sunlight labs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you feel like affecting change in US politics, and know Python, we could use some help (it’s a F/OSS project!) over on &lt;a href="https://github.com/sunlightlabs/openstates" target="_blank"&gt;github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keep being awesome!&lt;/p&gt;</description><link>http://blog.pault.ag/post/16381179200</link><guid>http://blog.pault.ag/post/16381179200</guid><pubDate>Mon, 23 Jan 2012 20:25:41 -0500</pubDate><category>openstates</category><category>sunlight</category><category>cool!</category><category>npr</category><category>ohio</category><category>cleveland</category><category>debian</category></item><item><title>Dual-screen setup with aligned bottom edges</title><description>&lt;p&gt;For the sake of anyone else who’s fighting their screens, I’ve got a script that will do this (but very very slowly)&lt;/p&gt;

&lt;p&gt;setup script&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;xrandr --output VGA1  --auto
xrandr --output LVDS1 --auto
xrandr --output VGA1  --rotate left
eval "`monconf`"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;monoconf script&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env python
import subprocess
output = subprocess.check_output(["/home/tag/.bin/mon.ls"])
output = [ item.split() for item in output.split("\n") ]

mons = {}

for mon in output:
    if len(mon) &gt; 0:
        if mon[1] == "connected":
            res=mon[2]
            res=res.split("x")
            for item in res[1].split("+"):
                res.append(item)
            res.pop(1)
            mons[mon[0]] = res

BOTTOM_LEFT = "LVDS1"
TOP_RIGHT="VGA1"

LEFT_WIDTH  = mons[BOTTOM_LEFT][0]
LEFT_HEIGHT = mons[BOTTOM_LEFT][1]

RIGHT_WIDTH  = mons[TOP_RIGHT][0]
RIGHT_HEIGHT = mons[TOP_RIGHT][1]

print "xrandr --output %s --pos 0x%s" % (
    BOTTOM_LEFT,
    (int(RIGHT_HEIGHT) - int(LEFT_HEIGHT)))
print "xrandr --output %s --pos %sx0" % (
    TOP_RIGHT,
    int(LEFT_WIDTH)
)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and the mon.ls command&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;xrandr -q | grep "^[^\ ].*" | grep -v Screen
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;All of this is super hacky, but it works.&lt;/p&gt;</description><link>http://blog.pault.ag/post/16187362529</link><guid>http://blog.pault.ag/post/16187362529</guid><pubDate>Fri, 20 Jan 2012 16:35:30 -0500</pubDate><category>hack</category><category>useless-script</category><category>debian</category></item><item><title>json / vim love</title><description>&lt;p&gt;Use vim? Check out some sweet vim exrc stuff for editing one-line JSON files:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;autocmd BufRead,BufNewFile *.json set filetype=json
command Js silent %!jp
command Jc silent %!jcompress
autocmd FileType json Js
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="https://github.com/paultag/dot-bin/blob/master/jcompress" target="_blank"&gt;jcompress&lt;/a&gt; and &lt;a href="https://github.com/paultag/dot-bin/blob/master/jp" target="_blank"&gt;jp&lt;/a&gt; are both on my github. Have fun!&lt;/p&gt;</description><link>http://blog.pault.ag/post/15698933492</link><guid>http://blog.pault.ag/post/15698933492</guid><pubDate>Wed, 11 Jan 2012 20:30:42 -0500</pubDate><category>json</category><category>vim</category><category>exrc</category><category>debian</category><category>hack</category></item><item><title>I'm alive!</title><description>&lt;p&gt;Having a wicked time in Cleveland, hitting up such local wonders as the &lt;a href="http://meltbarandgrilled.com/" target="_blank"&gt;melt&lt;/a&gt;, &lt;a href="http://www.clevelandbrowns.com/stadium/index.html" target="_blank"&gt;browns stadium&lt;/a&gt;, and the &lt;a href="http://winkinglizard.com/" target="_blank"&gt;winking lizard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I miss Cleveland lots, and it’s been a crazy few days. Be back in Boston soon!&lt;/p&gt;</description><link>http://blog.pault.ag/post/15402398726</link><guid>http://blog.pault.ag/post/15402398726</guid><pubDate>Fri, 06 Jan 2012 11:42:25 -0500</pubDate><category>clevecation-201[1|2]</category><category>cleveland</category></item><item><title>libolla (from the useless script department)</title><description>&lt;p&gt;Hello, World!&lt;/p&gt;

&lt;p&gt;Today’s hacks come remotely, on the first day of my long trek to Cleveland. As many debian readers know, debian URLs are usually transmitted over IRC or email with some snappy abbreviations. Usually, you’ll see something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Feel free to check out information about frob at wiki.d.o/Frob&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I have uploaded package bar onto mentors.d.n for review&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What bugs me most about this is that I have to expand URLs by hand. Which is lame. Enter &lt;code&gt;libolla&lt;/code&gt; (a fitting name as well as a graceful nod to my alma mater &lt;a href="http://jcu.edu" target="_blank"&gt;John Carroll University&lt;/a&gt;’s crest).&lt;/p&gt;

&lt;p&gt;When LD_PRELOAD’d, it’ll intercept and expand calls to &lt;code&gt;getaddrinfo&lt;/code&gt; transparently. It seems to work fine on SSH, and chrome (but I can’t test well, since I’m not on a real line).&lt;/p&gt;

&lt;p&gt;This was all hacked up in a few hours I had to spare, and without any sort of internet love, so I’m willing to bet there are some bits that can be cleaned up (after all, the name of the blog is “Peace, Love and C++”, not “Peace, Love and C” - I don’t clam to be a c expert ;) )&lt;/p&gt;

&lt;p&gt;So, feel free to fork the project on &lt;a href="http://github.com/paultag/libolla" target="_blank"&gt;github&lt;/a&gt; (or as I can now do - &lt;a href="http://g.c/paultag/libolla" target="_blank"&gt;http://g.c/paultag/libolla&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Now, I just need to find a way to globally pre-load this for apps that I start in my DE. Should be easy enough fiddling with some env-var files.&lt;/p&gt;</description><link>http://blog.pault.ag/post/14926850948</link><guid>http://blog.pault.ag/post/14926850948</guid><pubDate>Wed, 28 Dec 2011 13:32:51 -0500</pubDate><category>clevecation-201[1|2]</category><category>debian</category><category>hack</category><category>useless-script</category></item><item><title>Two for one: Two smallish hacks this week!</title><description>&lt;p&gt;I’ve whipped up two libs this week, and both have some pretty radical uses. The fist is &lt;code&gt;python-charlie&lt;/code&gt;, which can be found on &lt;a href="https://github.com/paultag/python-charlie" target="_blank"&gt;github&lt;/a&gt;, which is named in honor of &lt;a href="http://www.youtube.com/watch?v=3VMSGrY-IlU" target="_blank"&gt;Charlie on the MTA&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This lib will fetch data on the Boston MBTA T (rather, just the Red, Orange and Blue lines), which can actually be super useful in a lot of ways.&lt;/p&gt;

&lt;p&gt;I’d love to see some hacks with this data!&lt;/p&gt;

&lt;p&gt;The second is &lt;code&gt;php-openstates&lt;/code&gt;, a PHP binding into the &lt;a href="http://openstates.org/" target="_blank"&gt;openstates&lt;/a&gt; API. It comes with a nifty little util to get some bill listings, but hopefully, this will mature as teh project grows.&lt;/p&gt;

&lt;p&gt;Fork the project on &lt;a href="https://github.com/paultag/php-openstates" target="_blank"&gt;github&lt;/a&gt;. Rock on.&lt;/p&gt;</description><link>http://blog.pault.ag/post/14586910435</link><guid>http://blog.pault.ag/post/14586910435</guid><pubDate>Wed, 21 Dec 2011 18:49:01 -0500</pubDate><category>hack</category><category>libs</category><category>sunlight</category><category>openstates</category><category>php</category><category>python</category><category>charlie</category><category>mbta</category><category>boston</category></item><item><title>SOPA</title><description>&lt;p&gt;SOPA is ridiculousness. That is all.&lt;/p&gt;</description><link>http://blog.pault.ag/post/14316724382</link><guid>http://blog.pault.ag/post/14316724382</guid><pubDate>Fri, 16 Dec 2011 14:04:30 -0500</pubDate><category>sopa</category></item><item><title>End of an Era</title><description>&lt;p&gt;As of today, I’ve left my current job at Boston College for a new spot at &lt;a href="http://sunlightfoundation.com/" target="_blank"&gt;The Sunlight Foundation&lt;/a&gt;, a government transparency nonprofit.&lt;/p&gt;

&lt;p&gt;Needless to say, all opinions from here on out are my own, and in no way represent anyone other them myself. Sometimes, not even myself.&lt;/p&gt;

&lt;p&gt;Anywyo, I’m very exited, and going to be working on &lt;a href="http://openstates.org/" target="_blank"&gt;Open States&lt;/a&gt;, a F/OSS backed API into state government data.&lt;/p&gt;

&lt;p&gt;Can’t wait!&lt;/p&gt;</description><link>http://blog.pault.ag/post/13982172218</link><guid>http://blog.pault.ag/post/13982172218</guid><pubDate>Fri, 09 Dec 2011 16:41:39 -0500</pubDate><category>sunlight</category><category>boston-college</category></item><item><title>Stupid Hacks: Colorizing files</title><description>&lt;p&gt;Presenting another script from the useless script department — &lt;code&gt;dog&lt;/code&gt;!&lt;/p&gt;

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

&lt;p&gt;It has an in-built (and rather quirky) state-machine style parser, which will emit the color defined on entering the new state.&lt;/p&gt;

&lt;p&gt;The syntax is stupid easy - and hopefully easy enough to write.&lt;/p&gt;

&lt;p&gt;Perhaps (given some time) I’ll turn this into something, well, useful.&lt;/p&gt;

&lt;p&gt;Code’s on &lt;a href="https://github.com/paultag/dog" target="_blank"&gt;github&lt;/a&gt;, but very buggy and stuff. Also hard-coded.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;</description><link>http://blog.pault.ag/post/13849771539</link><guid>http://blog.pault.ag/post/13849771539</guid><pubDate>Tue, 06 Dec 2011 19:55:53 -0500</pubDate><category>useless-script</category><category>dog</category><category>hack</category></item><item><title>Stupid Hacks: GIF -&gt; ANSI</title><description>&lt;p&gt;In honor of the recent nyan-cat ANSI fad, I hacked up some goodies that is able to do this with a &lt;em&gt;small&lt;/em&gt; subset of all gifs - namely those which are well-formed.&lt;/p&gt;

&lt;p&gt;The code is thrown up as a &lt;a href="https://gist.github.com/1430501" target="_blank"&gt;gist&lt;/a&gt; — it uses some code from Micah Elliott’s &lt;a href="https://gist.github.com/719710" target="_blank"&gt;colortrans.py&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.pault.ag/post/13729950842</link><guid>http://blog.pault.ag/post/13729950842</guid><pubDate>Sun, 04 Dec 2011 10:51:29 -0500</pubDate><category>nyan</category><category>useless-script</category></item><item><title>Another post from the "Useless Script" department</title><description>&lt;p&gt;A while back I wrote some nodejs that mish-moshed email and web 2.0 long-poll action into a very ugly, but fairly up-to-date showing of debian changes. That is over on my server &lt;a href="http://pault.ag:8080/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The code’s fairly simple, so I also wrote a python consumer &lt;a href="https://gist.github.com/1400681" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since it’s so simple, I’ve pasted it below, too.&lt;/p&gt;

&lt;p&gt;Feel free to use (but please not abuse) my server :)&lt;/p&gt;

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

import time
import urllib
import json

service = "http://pault.ag:8080/tail"
lastts  = 0

def loop():
        global lastts
        while True:
                f = urllib.urlopen("%s?since=%s" % (service, str(lastts)))
                msgs = json.loads(f.read())
                for x in msgs['messages']:
                        print x['text']
                        if lastts &lt; x['timestamp']:
                                lastts = x['timestamp']

loop()
&lt;/code&gt;&lt;/pre&gt;</description><link>http://blog.pault.ag/post/13454348090</link><guid>http://blog.pault.ag/post/13454348090</guid><pubDate>Mon, 28 Nov 2011 10:03:59 -0500</pubDate><category>debian</category><category>debwatch</category><category>useless-script</category><category>cli-porn</category></item><item><title>Although it looks like a step back, I’ve got color and...</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_lv73fgZ7hB1qf0jqco1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Although it looks like a step back, I’ve got color and most ANSI sequences parsing right. I’ve broken it out, and I’m starting to implement for real!&lt;/p&gt;

&lt;p&gt;Game on :)&lt;/p&gt;</description><link>http://blog.pault.ag/post/13281799282</link><guid>http://blog.pault.ag/post/13281799282</guid><pubDate>Thu, 24 Nov 2011 21:40:28 -0500</pubDate><category>rokkaku</category><category>shibuya</category><category>libansiescape</category></item><item><title>Presenting — Shibuya!

This is only a hard-coded test of...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lus87rhZu21qf0jqco1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Presenting — Shibuya!&lt;/p&gt;

&lt;p&gt;This is only a hard-coded test of the ncurses stuff, but it’s a nice show-off of what it can do (at least so far)&lt;/p&gt;

&lt;p&gt;More to come! :)&lt;/p&gt;</description><link>http://blog.pault.ag/post/12907209245</link><guid>http://blog.pault.ag/post/12907209245</guid><pubDate>Wed, 16 Nov 2011 20:59:51 -0500</pubDate><category>shibuya</category><category>libncurses</category><category>vte</category></item><item><title>Silly little project activity for this week</title><description>&lt;p&gt;I’ve been slowly working on a Virtual Terminal Emulator (or VTE, as most folks call ‘em) that uses ncurses as the rendering engine.&lt;/p&gt;

&lt;p&gt;Sounds silly, I know.&lt;/p&gt;

&lt;p&gt;However, it’s super crazy useful to people who want to put a terminal in their ncurses app (throw a nested session of vim up over another app, anyone? Switching back and forth? There’s a reason window managers are so popular ;) )&lt;/p&gt;

&lt;p&gt;I’m going to libize as much as I can, so others can use this in a sane and normal way. The project (so far) has two big blocks I’m working on:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;code&gt;libansiescape&lt;/code&gt; is an ANSI Escape parser. It eats up the stream and offloads a lot of complexity from the VTE.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;libshibuya&lt;/code&gt; (named after Shibuya terminal (JSRF anyone?)) will handle the Terminal’s state and cell state&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Eventually (after I get all this working enough to be sane-ish), I’ll implement it out.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;libansiescape&lt;/code&gt; is mostly sane, but it doesn’t handle much by way of private mode or the more exotic sequences. I’ll fix it up for 2.0. Right now it’s enough to work with. Code’s on &lt;a href="https://github.com/paultag/libansi" target="_blank"&gt;github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;libshibuya&lt;/code&gt; is totally incomplete and has just the basics I took from a scratch project that did most of the same stuff. It’s code is also on &lt;a href="https://github.com/paultag/shibuya" target="_blank"&gt;github&lt;/a&gt;. It’s not libized yet, and I’ve not even put much work into it.&lt;/p&gt;

&lt;p&gt;One love!&lt;/p&gt;</description><link>http://blog.pault.ag/post/12642018666</link><guid>http://blog.pault.ag/post/12642018666</guid><pubDate>Fri, 11 Nov 2011 10:08:00 -0500</pubDate><category>libansiescape</category><category>libshibuya</category><category>vte</category></item><item><title>Github Pull Request to Format Patch</title><description>&lt;p&gt;This is something I’ve wanted for a while, but was never bothered to write it.&lt;/p&gt;

&lt;p&gt;I spent a few minutes hacking a set of shell scripts glued with a bit of Python to translate a pull request (for our Fluxbox mirror) on Github to a format-patch series emailed at someone (to test, mailing list will be the target in the end)&lt;/p&gt;

&lt;p&gt;I’m going to rewrite it to be a bit more graceful (and handle stuff like doing a PR against something other then our main, or non-rebased requests, or even some basic lint-checking)&lt;/p&gt;

&lt;p&gt;For now, the code is on &lt;a href="https://github.com/paultag/patchr" target="_blank"&gt;github&lt;/a&gt;, and hopefully someone will find it interesting enough to toy with :)&lt;/p&gt;</description><link>http://blog.pault.ag/post/12294801503</link><guid>http://blog.pault.ag/post/12294801503</guid><pubDate>Thu, 03 Nov 2011 16:39:43 -0400</pubDate><category>github</category><category>git</category><category>badass</category></item><item><title>Fluxbox 1.3.2 Released!</title><description>&lt;p&gt;Package uploaded to Debian, and a few oneiric builds into my PPA&lt;/p&gt;

&lt;p&gt;Get it while it’s hot - report your bugs!&lt;/p&gt;</description><link>http://blog.pault.ag/post/12076954178</link><guid>http://blog.pault.ag/post/12076954178</guid><pubDate>Sat, 29 Oct 2011 12:28:00 -0400</pubDate><category>fluxbox</category><category>debian</category><category>ubuntu</category><category>release</category><category>fluxrocks</category></item></channel></rss>

