<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Brandon Invergo]]></title>
  <link href="http://brandoninvergo.com/atom.xml" rel="self"/>
  <link href="http://brandoninvergo.com/"/>
  <updated>2012-05-07T22:37:14+02:00</updated>
  <id>http://brandoninvergo.com/</id>
  <author>
    <name><![CDATA[Brandon Invergo]]></name>
    <email><![CDATA[brandon@brandoninvergo.com]]></email>
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[pyIFBabel 0.2 released]]></title>
    <link href="http://brandoninvergo.com/blog/2012/05/05/pyifbabel-0-dot-2-released/"/>
    <updated>2012-05-05T13:54:00+02:00</updated>
    <id>http://brandoninvergo.com/blog/2012/05/05/pyifbabel-0-dot-2-released</id>
    <content type="html"><![CDATA[<p>Version 0.2 of <a href="http://grotesque.invergo.net/pyifbabel">pyIFBabel</a>, a Treaty of
Babel library for Python, has just been released. This version fixes some bugs
in IFiction file handling in the previous version. However, the most
significant development has been in the <code>treatyofbabel.ifstory</code> module, which
was altogether non-functional in version 0.1. This module defines the <code>IFStory</code>
class, which makes it simple to work with story files and their metadata
information. With this, I now have what I need to integrate the new pyIFBabel
functionality back into <a href="http://grotesque.invergo.net">Grotesque</a> (though I
will return to pyIFBabel to implement some further features which will
eventually end up in Grotesque as well).</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Appointed as the new maintainer for GNU GSRC]]></title>
    <link href="http://brandoninvergo.com/blog/2012/04/08/appointed-as-the-new-maintainer-for-gnu-gsrc/"/>
    <updated>2012-04-08T21:07:00+02:00</updated>
    <id>http://brandoninvergo.com/blog/2012/04/08/appointed-as-the-new-maintainer-for-gnu-gsrc</id>
    <content type="html"><![CDATA[<p>I&#8217;m very excited to have been appointed as the maintainer of
<a href="http://www.gnu.org/software/gsrc">GNU GSRC</a>. GSRC is a system for downloading and
installing the latest GNU software from source. It&#8217;s similar to BSD Ports due to
being based on GAR and GARStow. I took on this job because the project covers a
large portion of the functionality for a GNU/Linux distribution I&#8217;ve been
thinking about which would form the underlying basis of the
<a href="http://brandon.invergo.net/software/coredesktop.html">Coredesktop</a> idea that&#8217;s
been floating around in my head. Not to mention, I felt like volunteering some
of my time to the GNU project. I think GSRC is a great system, which really
exploits the advantages of GNU Make for taking care of dependencies and such (as
opposed to other Ports-inspired systems which choose to reimplement even this
basic functionality). GSRC has been left unmaintained for a little while, but
once it gets brought up to date, I&#8217;d like to start exploring the possibility of
founding a super-hackable distro based on it.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Thing of the Month: pyIFBabel 0.1]]></title>
    <link href="http://brandoninvergo.com/blog/2012/04/05/thing-of-the-month-pyifbabel-0-dot-1/"/>
    <updated>2012-04-05T12:12:00+02:00</updated>
    <id>http://brandoninvergo.com/blog/2012/04/05/thing-of-the-month-pyifbabel-0-dot-1</id>
    <content type="html"><![CDATA[<p><em>[I&#8217;ve decided to try a new project which I&#8217;m calling &#8220;Thing of the Month&#8221;. My
goal is to release one thing every month. That thing can be small, like a minor
update of some software, or a demo of a new song, or it could be big like a
brand new software package or an album. The point is to give myself the goal of
actually completing at least one thing every month, to prove to myself and the
rest of the world that I&#8217;m alive. Yes, this is just a relaxed version of Jonathan
Coulton&#8217;s Thing-a-Week project and all the Thing-a-Day projects out there]</em></p>

<p>April&#8217;s Thing of the Month is the first beta release of
<a href="http://grotesque.invergo.net/pyifbabel">pyIFBabel</a>, which is a Python module
implementing the <a href="http://treaty.ifarchive.org">Treaty of Babel</a>. The Treaty of
Babel is an agreement between the developers of several different interactive
fiction (aka &#8220;text adventure&#8221;; IF) authoring tools in order to provide a standardized way of identifying
IF story files, as well as how to handle metadata and cover art stored in wrapper
files. The official Treaty page features a C API as well as a commandline tool
written in C. On the other hand, I inherited the
<a href="http://grotesque.invergo.net">Grotesque</a> project with a partially complete
API written in pure Python. I&#8217;ve worked hard to complete that API to support all
of the story formats covered by the Treaty and to make it on par with the
official C implementation. This first release represents that goal being mostly
reached and ready for testing and use by other developers (this really is for a
niche of a niche: developers of software utilities for interactive fiction).
There&#8217;s still more work to be done and a few more features to implement but I
think it&#8217;s at a good state to release to the world (&#8220;Release early, release
often.&#8221;)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Pop Quiz]]></title>
    <link href="http://brandoninvergo.com/blog/2012/03/14/pop-quiz/"/>
    <updated>2012-03-14T10:58:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/03/14/pop-quiz</id>
    <content type="html"><![CDATA[<p>Fill in the blanks:</p>

<blockquote><p>The justification for war that seemed most compelling was that ______ was on its way to building a nuclear bomb, but the evidence for this was very weak. Before the crisis over ______, Western intelligence sources had estimated it would take ______ three to ten years to build a nuclear weapon. Even if ______ could build a bomb in a year or two, which was the most pessimistic estimate, it had no delivery system to send it anywhere. Besides, Israel already had nuclear weapons. And the United States had perhaps 30,000 of them. The ______ administration was trying hard to develop a paranoia in the nation about an ______ bomb which did not yet exist.</p></blockquote>


<ul>
<li><strong>a)</strong> Iraq / Kuwait / Iraq / Iraq / [George H. W.] Bush / Iraqi</li>
<li><strong>b)</strong> Iraq / 9/11 / Iraq / Iraq / [George W.] Bush / Iraqi</li>
<li><strong>c)</strong> Iran / Israel / Iran / Iran / Obama / Iranian</li>
</ul>


<!-- more -->


<p>The correct answer is <strong>a</strong>, with the quote taken from Howard Zinn&#8217;s <em>A People&#8217;s
History of the United States: 1492 - Present</em>. It&#8217;s so frustrating to see
history repeat itself.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Fukushima Dawn Flyer]]></title>
    <link href="http://brandoninvergo.com/blog/2012/03/09/fukushima-dawn-flyer/"/>
    <updated>2012-03-09T15:27:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/03/09/fukushima-dawn-flyer</id>
    <content type="html"><![CDATA[<p>Lhotse has created a nice flyer for the first
<a href="http://coldmountainrecords.bandcamp.com">Cold Mountain Records</a> release.
So, if you would like to help us promote the release a bit in the real world
please print it out and put it anywhere you think people would be
interested! You can download the image (at a super-high quality ~35MB)
<a href="http://brandon.invergo.net/images/music/cmr001-flyer.tif">here</a>.</p>

<p><img src="http://brandon.invergo.net/images/music/cmr001-flyer-small.png" alt="CMR001 Flyer" /></p>

<p>Help us spread the word!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Moving my coding over to Gitorious]]></title>
    <link href="http://brandoninvergo.com/blog/2012/02/27/moving-my-coding-over-to-gitorious/"/>
    <updated>2012-02-27T11:18:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/02/27/moving-my-coding-over-to-gitorious</id>
    <content type="html"><![CDATA[<p>Recently I&#8217;ve been working hard to consolidate my web presence and to
reduce the number of websites on which I depend. One area where I&#8217;m a bit
too spread out is programming-related sites. I have repositories on Github,
Bitbucket, Sourceforge, Gitorious and Google Code. Ok, the Google Code ones
are old and not used anymore. Sourceforge is just being used for Grotesque,
since the project wasn&#8217;t started by me, and I find it to be not very user-
friendly (&#8220;hulking&#8221; would be an appropriate term). It&#8217;s not really
appropriate for little projects that may or may not go anywhere. I have a
couple of private repositories on Bitbucket, which I don&#8217;t really use. So,
I&#8217;ve decided to choose one site and move all my projects there.</p>

<!--more-->


<p>In looking at the features of all the sites I use, it was clearly down to
Github and Gitorious. Both are pretty sleek sites and both allow easy
forking and merging of repositories. From my perspective, the fundamental
difference between the two is that Github is user-centric while Gitorious is
project-centric. Github&#8217;s &#8220;killer feature&#8221; is its so-called &#8220;social
programming.&#8221; In reality, however, I don&#8217;t really use it. After being on the
site for three years, I&#8217;m still only following two people and I am, in turn,
only being followed by the same two people. The only repository that I have
forked and performed subsequent pull requests is that of Biopython, a big
project.</p>

<p>Github does have a few big features that Gitorious lacks, namely an issue
tracker and project websites. The latter is not a big concern for me; I&#8217;d
rather host project sites on this server. The former is a bit of a concern,
in that I haven&#8217;t seen a very good alternative. Fortunately, I only have
one project that has reached a level of maturity in which other people are
using it, Grotesque. Given that it caters to a particular niche and that I&#8217;m
the only active developer, I can handle bug reports by email for now. The
other features of Github, tend towards the social aspect, which again, I
don&#8217;t use.</p>

<p>The main thing that draws me towards Gitorious is that I can organize my
repositories. So, I can have a project dedicated to Grotesque, with separate
repos for the main application and for an external library developed for
it. I can have a separate project just for the repositories for the code
behind my websites. Finally, I have a project just for my half-baked
ideas that probably aren&#8217;t of interest yet to anyone but me.</p>

<p>One other thing is also worth mentioning. While I certainly don&#8217;t have any
of the complaints about Github that I did about Facebook and Twitter, I have
become increasingly aware of and concerned about <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>
as defined by the Free Software Foundation (free as in freedom, not free as
in beer). I hate externalized dogmatism, so I won&#8217;t argue my stance on this,
but the fact that Gitorious is based on free software while that of Github
is proprietary did play a small role in the decision. It wasn&#8217;t so clear-cut
as with Facebook and Twitter, though, since I don&#8217;t really have any
concern that Github&#8217;s software is up to anything nefarious. So, that was
just a &#8220;moral bonus&#8221; to switching to Gitorious. For the record, there is
still non-free software that I depend on (Skype (unfortunately), Spotify,
and basically all of the music production software I use), so I&#8217;m not really
a model free software advocate.</p>

<p>You can visit my Gitorious public profile <a href="https://www.gitorious.org/~brandoninvergo">here</a>.
I still have a few more projects to add there but my main active ones are
up. I&#8217;ll still have my Github <a href="https://github.com/brandoninvergo">account</a>
of course, so I can still participate in projects there like Biopython. As
for private repositories, I can, of course, just host them here.</p>

<p>What would be best, of course, is if someone came up with a federated Git
hosting service, so I can host my repositories on this site but people could
still easily do merge/pull requests.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Biopython 1.59 released]]></title>
    <link href="http://brandoninvergo.com/blog/2012/02/24/biopython-1-dot-59-released/"/>
    <updated>2012-02-24T17:44:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/02/24/biopython-1-dot-59-released</id>
    <content type="html"><![CDATA[<p>Biopython 1.59 was released today. I had a few small contributions to this
one. The main user-noticable one was that I implemented support for
sequential Phylip alignment files (in addition to the already-supported
interleaved format). In addition, I overhauled the tests for parsing the
output of PAML programs for the Bio.Phylo.PAML module. This helped me catch
and fix a few obscure bugs.</p>

<p>The release itself has lots of new features that are of interest. You can
read the full release notes <a href="http://news.open-bio.org/news/2012/02/biopython-1-59-released/">here</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Updated the Grotesque website]]></title>
    <link href="http://brandoninvergo.com/blog/2012/02/23/updated-the-grotesque-website/"/>
    <updated>2012-02-23T12:01:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/02/23/updated-the-grotesque-website</id>
    <content type="html"><![CDATA[<p>After not being able to work on it for the past half-year, I&#8217;m finally
getting back to working on Grotesque, a library manager for interactive
fiction (aka &#8220;text adventures&#8221;).</p>

<p>I&#8217;m not sure that there&#8217;s any overlap between people who read this page and
people who use the software. Anyway, I&#8217;ve updated the website for Grotesque
(which now looks suspiciously like this website), and I&#8217;ve included a
development blog in the new site so people can see how development is
progressing.</p>

<p>You can visit the site at <a href="http://grotesque.invergo.net">http://grotesque.invergo.net</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Rebuilding all reverse dependencies of packages in Arch Linux with Pacman]]></title>
    <link href="http://brandoninvergo.com/blog/2012/02/13/rebuilding-all-reverse-dependencies-of-packages-in-arch-linux-with-pacman/"/>
    <updated>2012-02-13T11:11:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/02/13/rebuilding-all-reverse-dependencies-of-packages-in-arch-linux-with-pacman</id>
    <content type="html"><![CDATA[<p>This post is mainly a reminder for myself in case the situation ever comes up
again but, of course, it could always prove useful for someone else.</p>

<p>Recently, updates to <code>libpng</code> and <code>libtiff</code> in Arch Linux required a rebuild of
all packages that depend on them. I knew there must be a more efficient way to do
this than to search the package listing on the Arch website to find all the
packages that depend on these two and then to manually check which ones of those I
have installed (this is what I started doing at first).</p>

<p>So, that&#8217;s when I put together this:</p>

<pre><code>    pacman -S `cat &lt;(pactree -lrud1 libpng) &lt;(pactree -lrud1 libtiff) | sort | uniq`
</code></pre>

<p><code>pactree -lrud1 $1</code> lists all of the reverse dependencies of package $1 to a depth
of one (so only the ones that directly depend on it). If you have to do this for
multiple packages, you can <code>cat</code> together their output. Then you just sort the list
and get rid of duplicates with <code>uniq</code>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Introducing Cold Mountain Records]]></title>
    <link href="http://brandoninvergo.com/blog/2012/02/08/introducing-cold-mountain-records/"/>
    <updated>2012-02-08T16:37:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/02/08/introducing-cold-mountain-records</id>
    <content type="html"><![CDATA[<p>I&#8217;m very excited to announce the creation of
<a href="http://coldmountainrecords.bandcamp.com">Cold Mountain Records</a>, in collaboration
with Greg Pappas (aka <a href="http://zxyzxy.bandcamp.com">zxyzxy</a>). We&#8217;ll be using it as a
vehicle for releasing our various forays in music.</p>

<p>Our first release is a split e.p. entitled &#8220;Fukushima Dawn&#8221;, featuring two
contemplative songs each by Greg as Lhotse and by me as Yeti Quest.
The e.p. will be available for download from our site on March 11,
commemorating the one-year anniversary of the earthquake and tsunami in
Japan, with pre-orders starting now. All proceeds from the release will go
towards the on-going relief effort in Japan.</p>

<p><img src="../../../../../images/music/yq-fukushima_dawn.png" alt="Fukushima Dawn cover" /></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[So long, social networking]]></title>
    <link href="http://brandoninvergo.com/blog/2012/01/25/so-long/"/>
    <updated>2012-01-25T13:04:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/01/25/so-long</id>
    <content type="html"><![CDATA[<p>I&#8217;ve decided that I&#8217;ve finally had enough of social networking. The privacy
issues have been written about countless times by people far more eloquent
and informed than me, so I won&#8217;t go into them. Beyond those, the biggest
problem remaining was that social networking is a huge time sink for me.
Granted, a lack of friends using Diaspora and Identi.ca guaranteed that I
never spent much time on either service. Since quitting Facebook back in
October, though, my time spent on Twitter skyrocketed. Looking at it, though,
I realize I wasn&#8217;t actually getting much out of it other than a means to kill
time. Furthermore, analyzing my own posts, I realized I wasn&#8217;t contributing
anything either. If there&#8217;s anything worth saying, it will be worth sayng
long-form here on this blog.</p>

<p>As for anyone who depended on social networking to keep up with my life and
stay in contact with me, I recommend subscribing to this site&#8217;s RSS feed for
news in my life and using good, old email to reach me.</p>

<p>If a more sane, restrained form of social networking emerges, which allows me
to be better in contact with my closest friends, then I may consider using it,
but until then, the firehose form of social networking offered by current
services just won&#8217;t cut it.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[My remix of zxyzxy in a gallery promo video]]></title>
    <link href="http://brandoninvergo.com/blog/2012/01/19/my-remix-of-zxyzxy-in-a-gallery-promo-video/"/>
    <updated>2012-01-19T18:41:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2012/01/19/my-remix-of-zxyzxy-in-a-gallery-promo-video</id>
    <content type="html"><![CDATA[<p>So this is pretty cool. My remix of zxyzxy&#8217;s song &#8220;Sullen&#8221; (as Northern
Implosion) was used in a promotional video for Setba, an art gallery and
cultural space in Barcelona&#8217;s Plaza Real! The video was made by a company
called <a href="http://www.cityblink.com">CityBlink</a>, which provides a great
city-discovery service, in which places of interest in a city are marked on
a map and accompanied by high-quality photos and video to give you a good
idea of what&#8217;s on offer. In the case of the videos, they use music from
local musicians (like myself in this case), which I think is great.</p>

<p>You can see the video with my music <a href="http://cityblink.com/#!/art-culture/4441/setba">here</a>. You can hear the full song <a href="http://soundcloud.com/yxz/06-sullen-northen-implosion">here</a>.</p>

<p>I highly recommend checking out zxyzxy&#8217;s music: <a href="http://zxyzxy.bandcamp.com">http://zxyzxy.bandcamp.com</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ditching Google Analytics]]></title>
    <link href="http://brandoninvergo.com/blog/2011/11/18/ditching-google-analytics/"/>
    <updated>2011-11-18T10:25:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2011/11/18/ditching-google-analytics</id>
    <content type="html"><![CDATA[<p>I&#8217;ve decided to stop using Google Analytics to analyze traffic on my site. I
don&#8217;t think the service really goes to the extreme as far as tracking users,
since it only allows me to see traffic sources (referring sites, search
terms, etc.) and which areas of my site people are checking out, so I wouldn&#8217;t
necessarily consider it to be evil. Nevertheless, I&#8217;ve grown tired of the trend
of analyzing and tracking users across the web for any reason. And let&#8217;s be
honest, it seems very unnecessary to me for a site like mine to leave a
cookie on your computer.</p>

<p>Do I really need to know how much time anonymous users are spending reading
a particular blog post? Do I really need to know what search terms are
leading people to my site? Perhaps if this were a bigger site or if it
actually had commercial purposes, sure, the info would be useful. As
it stands, though, it basically amounts to tracking people in order to stroke my
own ego. So, instead, if you enjoy something that I&#8217;ve written, be it a blog
post, a piece of software, or a song, I&#8217;d be much happier if you drop me an
email and tell me, or if you just pass the link along to others. I don&#8217;t need to
know that you enjoyed it for precisely 4&#8217;35&#8221; before leaving the site, never to
return.</p>

<p>edit: I added a Flattr button on the side over there, in case you <em>really</em> want
to show me your appreciation :)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Accessing the Gnome clipboard in Uzbl]]></title>
    <link href="http://brandoninvergo.com/blog/2011/10/31/accessing-the-gnome-clipboard-in-uzbl/"/>
    <updated>2011-10-31T17:36:00+01:00</updated>
    <id>http://brandoninvergo.com/blog/2011/10/31/accessing-the-gnome-clipboard-in-uzbl</id>
    <content type="html"><![CDATA[<p>In my <a href="http://brandon.invergo.net/blog/2011/10/27/my-gnome-shell-workflow-after-6-months/">post about my Gnome-Shell workflow</a>, I stated that a trouble I had with browsing with Uzbl in
Gnome was it usage of the primary selection clipboard via xclip. I had a
hunch that it would be easy to get around this and, indeed, it was. It
turns out, when you actually read the man pages for software, you end up
learning a lot! xclip allows you to specify which selection to use, so it
was as simple as adding the <code>-selection clipboard</code> flag in the appropriate
places in my Uzbl config file. The copying &amp; pasting keybinds section of my
config now looks like this:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
</pre></td><td class='code'><pre><code class=''><span class='line'># Yanking & pasting binds
</span><span class='line'>@cbind  Yu  = sh 'echo -n "$UZBL_URI" | xclip'
</span><span class='line'>@cbind  yu  = sh 'echo -n "$UZBL_URI" | xclip -selection clipboard'
</span><span class='line'>@cbind  yU  = sh 'echo -n "$1" | xclip' '\@SELECTED_URI -selection clipboard'
</span><span class='line'>@cbind  yy  = sh 'echo -n "$UZBL_TITLE" | xclip -selection clipboard'
</span><span class='line'>
</span><span class='line'># Go the page from primary selection
</span><span class='line'>@cbind  P   = sh 'echo "uri $(xclip -o | sed s/\\\@/%40/g)" &gt; "$UZBL_FIFO"'
</span><span class='line'># Go to the page in clipboard
</span><span class='line'>@cbind  p   = sh 'echo "uri $(xclip -selection clipboard -o | sed s/\\\@/%40/g)" &gt; "$UZBL_FIFO"'</span></code></pre></td></tr></table></div></figure>


<p>Since I use Gnome&#8217;s clipboard more often than the primary selection, I set
the lowercase bindings to copy/paste there, while the uppercase bindings use the
primary selection. And there you have it: better clipboard integration with
Gnome in Uzbl.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[My Gnome-Shell Workflow After 6 Months]]></title>
    <link href="http://brandoninvergo.com/blog/2011/10/27/my-gnome-shell-workflow-after-6-months/"/>
    <updated>2011-10-27T21:22:00+02:00</updated>
    <id>http://brandoninvergo.com/blog/2011/10/27/my-gnome-shell-workflow-after-6-months</id>
    <content type="html"><![CDATA[<p>I&#8217;ve been a happy user of Gnome 3 since it was first released, first via the
(at the time) very unstable Ubuntu PPA and after a short while, on an Arch Linux
install built from the ground up to run it. The internet is awash with
ridiculous arguments about whether or not Gnome 3 and, in particular, Gnome-
Shell are good. Personally I couldn&#8217;t care less about these arguments and I
don&#8217;t wish to recapitulate them here. My Gnome 2 usage was already approaching
this new workflow well before Gnome 3 was released. I had only a top panel that
I barely used (auto-hidden, actually), an empty desktop, and I launched
everything via Gnome Do. So adjusting to Gnome-Shell was pretty easy for me.
Nonetheless, I&#8217;ve made some tweaks over time and I figured I&#8217;d share them,
especially now that most of the major distros come with it installed or
available in the repositories, many new users are likely to give it a try. For
those who are open to giving it a chance, hopefully some of these tweaks and
tips will make the experience even smoother for them. Some tips are old hat,
while I haven&#8217;t seen some other ones mentioned anywhere.</p>

<!--more-->


<p><strong>INSTALL GNOME-TWEAK-TOOL</strong></p>

<p>This is a must-do, of course, and it should be available in your distro&#8217;s
repositories. It makes handling some advanced or &#8220;hidden&#8221; settings of Gnome-
Shell a bit easier. You can use it to set default system fonts, change themes,
manage extensions, etc. I would also recommend familiarizing yourself with the
dconf-editor, which provides access to even more settings (though in a less
user-friendly manner). You can launch it by hitting Alt-F2 and typing in
&#8220;dconf-editor&#8221;.</p>

<p>As for me, I actually don&#8217;t change much. For my fonts, I use Cantarell as my
default, Sans for documents, Monospace for, well, monospace, and Sans for
window titles, all at size 9 (1024x768 resolution&#8230;I&#8217;d have them a bit bigger
on a bigger screen). Hinting is at medium and I use Rgba antialiasing. I set it
to show the date in the clock, for its obvious usefulness. Everything else is
set to the default. Most notably, I chose to stick with the default of windows
only having a close button (sans minimize and maximize buttons). For maximizing,
I just use the keyboard (Alt-F10) or the snap feature (drag the titlebar to the
top of the screen). I don&#8217;t minimize. In my mind, if a window needs to be
minimized, than it&#8217;s on the wrong workspace.</p>

<p><strong>USE EXTENSIONS</strong></p>

<p>Everyone seems to complain that Gnome-Shell lacks customizability, which I find
to be an utterly ridiculous claim, considering that basically the whole of it is
open to extensions for modifying it to your liking. It baffles me how the
community could complain about this, but then turn around and be ecstatic over
window managers like Awesome or dwm, which have only the barest functionality
until you start extending or patching them. Anyway, at this point there are many
extensions available and they are more or less easy to manage with gnome-tweak-
tool, though to be honest extension management is an area that Gnome could
improve. If you want an always-visible dock or a traditional Gnome menu, they&#8217;re
just an extension away. As for me and my workflow, though, I only use a few
extensions:</p>

<ul>
<li><p><em>no-a11y</em>: Gnome&#8217;s efforts to make their desktop accessible are admirable, but
I think the majority of people don&#8217;t need the accessibility options, so that
icon in the panel is just taking up space. I use this extension to hide it.</p></li>
<li><p><em>system-monitor-applet</em>: I generally buy into the idea that the panel
notification area of Gnome 2 or any other Windows 95 clone quickly becomes an
obnoxious, distracting mess, so I&#8217;m glad that Gnome 3 has reduced it to just the
necessities. That said, I&#8217;m running a 5 year old laptop and I often do
computationally intensive tasks, so for me, having a CPU meter visible at all
times is necessary. Using the plugin&#8217;s customizability, I&#8217;ve made sure that it&#8217;s
grayscale like the rest of the panel, setting the &#8220;User&#8221; process color to
<code>#CCCCCC</code>, the &#8220;System&#8221; process color to <code>#474747</code> and the &#8220;Other&#8221; process color
to <code>#262626</code>, with a transparent background. I turned the text off and the graph
width is 25. I only use the CPU meter, though of course the RAM meter is handy
too. A quick left-click on the graph brings up a lot more useful information.</p></li>
<li><p><em>alternative-status-menu</em>: One of the contentious changes in Gnome-Shell is,
of course, the option to power off being hidden unless you hold the Alt key,
with only the option to suspend being otherwise shown. I use a laptop, so to
suspend the system, I simply close the lid. I use this extension to make &#8220;Power
Off&#8221; a permanent option.</p></li>
<li><p><em>window-navigator</em>: I like to use the keyboard and avoid the mouse as much as
possible (as discussed next). The Activities overlay is only partially keyboard
navigable, only in the &#8220;Applications&#8221; area. This extension allows you to use the
keyboard to navigate the &#8220;Windows&#8221; area: hold Alt to see a number over each of
your open windows and press a number to bring that window into focus. Similarly,
hold Ctrl and hit a number to select a workspace.</p></li>
</ul>


<p><strong>USE YOUR KEYBOARD</strong></p>

<p>A big complaint for some is that Gnome-Shell makes your mouse travel too far to
get anything done. That may be the case, but the better solution is to just use
your keyboard for as much as possible. It, without a doubt, requires less
movement than any mouse-based interaction, even in Gnome 2, allowing you to do
things the moment they come to mind. So, break the habit of typing and then
reaching for your mouse and just keep your hands on that home row. In
particular:</p>

<ul>
<li><p><em>Launching applications</em>: as you probably know by now, hitting the Mod/Windows
key opens the Activities overlay, where you can immediately start typing to find
the application you want. A little-talked about feature of the latest Gnome-
Shell release (3.2.1) is that it now sorts the search results by frequency of
use, which is great. To launch Firefox, I simply hit Mod, then &#8220;F&#8221;, and then
Enter. This is also a nice way to easily find contacts or settings, of course.</p></li>
<li><p><em>Switching windows</em>: Alt-Tab is, of course, an old, familiar key combination.
It changed a bit in Gnome 3 to only switch between applications, so if you have
five windows of one application open, they will appear as one item in the
application switcher. It takes a bit to get used to it, but you can press Alt-`
(or whatever key is above Tab on your keyboard) to switch between open windows
of an application. Also, from the Alt-Tab application switcher, you can navigate
with the arrow keys: left and right to switch between applications and down and
up to move into and out of an application&#8217;s window list. Once you get used to
this difference (I admit I still trip up on it sometimes), it&#8217;s actually really
nice; it just takes a bit of muscle memory training. This one will come into
play later in the article.</p></li>
<li><p><em>Launching applications by shortcut</em>: By default, if you try to launch an
application in Gnome-Shell when an instance is already running, the view will
switch to that instance, rather than launching a new one. I find that, in most
cases, this isn&#8217;t a problem as I almost always only have one instance of a
program running. There are, of course, a couple notable exceptions for me: the
terminal and the file manager. For these, I set up keyboard shortcuts to launch
them. You can do this in System Settings -> Keyboard -> Shortcuts. You can set
many shortcuts here. In the launchers section, I set &#8220;Home folder&#8221; to have a
shortcut of Ctrl-Alt-N (&#8220;N&#8221; for &#8220;Nautilus&#8221;) and &#8220;Launch terminal&#8221; to have a
shortcut of Ctrl-Alt-T. Now when I hit these key combos, a new instance of the
terminal or the file manager are launched no matter how many other instances are
running. If you need a special launcher (i.e. I could imagine wanting one for a
text editor), you can do so under &#8220;Custom Shortcuts&#8221;. Note: I have had some
problems doing these settings before, so I&#8217;ve had to set them the hard way in
dconf-editor (in org.gnome.settings-daemon.plugins.media-keys)</p></li>
<li><p><em>Vim-like bindings for switching workspaces</em>: This is a personal preference: I
like the Vim keybindings since they allow me to keep my fingers on the home row.
So, in the aforementioned keyboard shortcut settings, under &#8220;Navigation&#8221;, I
changed &#8220;Move to workspace above&#8221; to be Ctrl-Alt-B and &#8220;Move to workspace below&#8221;
to Ctrl-Alt-F to be like Vim&#8217;s page up and page down shortcuts. Similarly, I set
&#8220;Move window one workspace up&#8221; to Shift-Ctrl-Alt-B and &#8220;Move window one
workspace down&#8221; to Shift-Ctrl-Alt-F. I use these shortcuts very frequently, so
that I essentially never use the workspace picker in the Activities overview.</p></li>
<li><p><em>Vim-like bindings for the browser</em>: Continuing from the last one, I tried to
make my keybindings consistent throughout my usual tasks. So, for browsing, I
use Uzbl (more on that below), which I set to use basic Vim movement keys (jkhl,
Ctrl-F / Ctrl-B, etc.). You can also use Pentadactyl for Firefox, though I
haven&#8217;t tried this yet.</p></li>
<li><p><em>Make Caps Lock an extra Ctrl key</em>: Ok, this isn&#8217;t Gnome-specific but it&#8217;s a
huge help. I use keyboard shortcuts all the time and I never type in all caps,
so it makes no sense that the key conveniently next to my finger is useless,
while one of the most useful keys is out of the way in the corner. So, under
Settings -> Region and Language -> Layouts -> Options&#8230;, I make Caps Lock an
extra Ctrl key (under &#8220;Ctrl Key Position&#8221;). If you do use Caps Lock from time to
time, you can also just swap the two keys. This is another thing that takes a
bit of time to get used to but once you do, you can never go back.</p></li>
</ul>


<p><strong>INSTALL ALACARTE</strong></p>

<p>This is a small tip but it&#8217;s something that tripped me up at first.
Unfortunately, not all software is built to install nicely under Gnome, so you
have to add them yourself to the Activities &#8220;Applications&#8221; area. Gnome doesn&#8217;t
have a built-in way to do this, but the application Alacarte makes editing the
available applications simple.</p>

<p><strong>USE THE DARK ADWAITA THEME</strong></p>

<p>I prefer dark themes and the dark Adwaita theme that became available with 3.2
is really nice, though I can&#8217;t understand why it would only be used for some
applications (picture viewer, movie player). I set it to instead be the default
theme for all applications that support it, which means for all GTK 3
applications. To do this, I have the file <code>~/.config/gtk-3.0/settings.ini</code>
containing:</p>

<pre><code>[Settings]
gtk-theme-name = Adwaita
gtk-fallback-icon-theme = gnome
# next option is applicable only if selected theme supports it
gtk-application-prefer-dark-theme = true
# set font name and dimension
gtk-font-name = Sans 10
</code></pre>

<p>&#8220;gtk-application-prefer-dark-theme&#8221; is of course the setting of interest. Now,
applications which are not yet using GTK 3 will stand out if you&#8217;re using the
default, light GTK 2 theme, which is annoying, but I like the dark theme too
much in general to go back (and I&#8217;ve been too lazy to do anything about that GTK
2 theme problem).</p>

<p><strong>CHANGE YOUR BROWSING HABITS</strong></p>

<p>This one won&#8217;t be for everyone and bears some explanation. A problem with the
old taskbar-oriented method of window management was that, as more windows were
opened, the taskbar became a cluttered mess. This was especially a problem
before tabbed web browsers came out, so that every webpage that you opened led
to another item in the task bar. This problem was cleared up by the
aforementioned tabbed browsers, as well as window grouping in the task bar. In
the former case, though, the problem was just shifted. Instead of a cluttered
taskbar, we ended up with cluttered tab bars. With enough tabs open in Firefox,
you have nothing left to go by but the favicon and a one or two characters to
figure out which tab contains what. In other browsers like Gnome&#8217;s Epiphany, the
tabs don&#8217;t shrink but instead enter out view and you must scroll the tab bar to
find what you want.</p>

<p>So now we&#8217;re using Gnome-Shell, which completely does away with the task bar,
but then we spend most of our time in a browser, which shoves something
equivalent back into our lives. I realized that if I just stop using tabs and
open everything in a new browser window, I can then use some of the niceties of
Gnome-Shell to better manage my browsing sessions. Heresy, I know! But think
about it. If you use one workspace for browsing, and you open all new pages in a
new browser, you can get a much better overview from Gnome-Shell of what pages
you have open than what&#8217;s offered by a tab bar. For a quick glance, you can hit
the Mod/Windows key to see a small representation as well as the full title of
every site you have open. With the <em>window-navigator</em> extension, you can quickly
select one by number or you can just click by mouse. If you&#8217;re not sure, you can
use the mouse wheel to zoom in on one of the windows. And for quick scrolling
through your open sites, start pracitcing with Alt-` to switch between all the
open browser windows. Once again, you get a small preview and you can see the
full page title.</p>

<p><img src="http://brandon.invergo.net/images/posts/gnome_shell_web_overview.png" width="800" height="600"></p>

<p>Now, without using tabs, you can get rid of the tab bar entirely, which takes up
valuable vertical screen real estate. While the latest versions of Firefox
remedy that problem a bit, the tabbed browsing concept is so deeply integrated
into Firefox that I found it to be distracting. Epiphany is a good possibility,
because you can easily hide not only the tabs, but you can also go all out and
hide the toolbar and the menubar (only in version 3.2 for the menubar), leaving
nothing between you and your web content but the Shell panel and the window
title bar (hit Ctrl-L to temporarily open up the toolbar to type in an address).
Unfortunately, Epiphany isn&#8217;t very keyboard-friendly, in my opinion.</p>

<p>In the end, I went with <a href="http://uzbl.org">Uzbl</a>, which is incredibly
customizable and keyboard-friendly, albeit a bit less friendly to get set up. It
lacks any widgets (buttons, menus, etc.)  with the exception of a tiny, Vim-like
status bar at the bottom. I can open a new browser window just by tapping the
&#8216;w&#8217; key, or I can open links in new windows by middle-clicking or by bringing up
visual link tips by hitting &#8216;Fl&#8217; and then typing the number of the link I want
to follow. Best of all, it doesn&#8217;t even support tabs! The view of the developer,
and correctly so, in my opinion, is that it should be up to the window manager
to manage your open sites. Recapitulating window management in a browser is just
wasteful and frustrating.</p>

<p>Unfortunately, out-of-the-box, Uzbl didn&#8217;t play nicely on my system with Gnome-
Shell&#8217;s window management. I couldn&#8217;t do the Alt-` window switching since Gnome-
Shell counted each Uzbl window as a separate application. In order to get it
working properly, I had to create its &#8220;Applications&#8221; entry manually (not with
Alacarte) by creating the file <code>/usr/share/applications/uzbl-core.desktop</code>,
which contains:</p>

<pre><code>[Desktop Entry]
Exec=uzbl-browser -g 'maximized'
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/usr/share/uzbl/examples/data/uzbl.png
Name[en_US]=Uzbl-core
Name=Uzbl-core
Icon=/usr/share/uzbl/examples/data/uzbl.png
Categories=Network;GTK;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
</code></pre>

<p>You can see that I start the browser maximized, since that&#8217;s how I like to
browse. Also important is that the Name field is the same as the name of the
.desktop file (Uzbl-core), which is the the name of the Uzbl process as
recognized by Gnome-Shell. You&#8217;ll notice that it&#8217;s not named &#8220;Uzbl-browser&#8221; like
the executable command implies. This is because &#8220;uzbl-browser&#8221; is actually a
long shell script that sets up and runs a configured &#8220;uzbl-core&#8221; instance. The
MimeType section is important for letting Gnome know that this is a browser,
allowing me to set it as my default for opening web pages, for example. Finally,
the StartupNotify field is what Gnome-Shell uses to treat all open windows as
one application.</p>

<p>Unfortunately, I still have to use Firefox sometimes for two reasons. One is
that I&#8217;ve compiled Uzbl to use GTK 3, while Adobe Flash still depends on GTK 2.
I find Gnash and Lightspark&#8217;s performance to be a bit underwhelming and I
haven&#8217;t had success using nspluginwrapper to be able to use the GTK 2 plugin in
GTK 3. The other reason is that not all Gnome programs play nicely with Uzbl.
For example, if I set Uzbl as my default browser, I cannot open links from
Evolution or Gwibber. In Liferea, on the other hand, I can manually specify the
command to open links: uzbl-browser %s -g &#8216;maximized&#8217;. Also, Uzbl only uses the
X clipboard (ie like when you highlight text with the mouse and then middle-
click to paste), which can be a bit annoying to work with, but I&#8217;m 99% sure I
can write a quick Python/GTK script to get around that and use the Gnome
clipboard. I&#8217;ve just been lazy. Anyway, all that aside, I still use Uzbl for my
heavy browisng sessions because it&#8217;s just so nice browsing this tabless way.
Firfox only comes out when it absolutely has to.</p>

<p><strong>CONCLUSIONS</strong></p>

<p>Hopefully you&#8217;ve found this to be helpful and you&#8217;ve  been able to find one or
two things in my workflow that you can integrate into your own. For most tasks
I&#8217;ve found myself to be quite pleased with how I work in Gnome-Shell and I tend
to be very efficient. Nonetheless, nothing&#8217;s perfect. For my part, I think
Gnome-Shell could still use some more keyboard configurability, particularly
with window management. I do like that you can snap windows to the sides of the
screen, but I wish there were a way to do it with the keyboard and not just with
the mouse (you can use a shortcut to maximize vertically or horizontally, but
the window doesn&#8217;t move). And actually, I think being able to snap to a 4x4 grid
would be even greater, allowing, for example, two terminals stacked vertically.
For most of my typical day-to-day stuff, this doesn&#8217;t get in the way. However,
when I&#8217;m programming I tend to have more windows open on a single workspace, so
having some keyboard window management would be great. Luckily, Gnome-Shell
keeps improving with each release, so hopefully we can look forward to such
features in the near future.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Shiny new site]]></title>
    <link href="http://brandoninvergo.com/blog/2011/10/26/shiny-new-site/"/>
    <updated>2011-10-26T23:04:00+02:00</updated>
    <id>http://brandoninvergo.com/blog/2011/10/26/shiny-new-site</id>
    <content type="html"><![CDATA[<p>Hey look, I made a new site. A couple things prompted the change. The old site
was built using <a href="http://www.joomla.org">Joomla</a>, which I guess I like in general
but it was complete overkill for my needs. Another problem is that I decided
that, while no server is completely secure, the fewer entrances there are, the
fewer chances for exploitation exist. Joomla is, in the end, pretty complicated,
with log-ins, forms, etc. Furthermore, from a laziness perspective, updating the
is far too involved for just a little blog site that I rarely change. So I think
my outdated Joomla set-up was just not worth maintaining anymore.</p>

<p>Of course, I hate designing anything in HTML, so that was out of the question.
Enter <a href="http://www.octopress.org">Octopress</a>, which lets me write posts in the
editor of my choice (no more unreliable web-based WYSIWYG&#8230;only vim from now
on) using Markdown and then converts them to HTML for me. Those are just one
rsync away from being live online. It feels so much cleaner and simpler than
Joomla or Drupal and is really exactly what I was looking for. Security-wise
(not that I&#8217;m really a juicy target or anything), there are just whatever
typical security holes might exist on my server itself via SSH, FTP, etc, which
are out of my control.</p>

<p>Oh, I decided not to carry over any of my old blog posts. Fresh start!</p>
]]></content>
  </entry>
  
</feed>

