<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet Egocity</title>
  <updated>2012-02-13T04:18:03Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Mark Lee</name>
    <email>planet@lazymalevolence.com</email>
  </author>
  <id>http://planet.malept.com/atom.xml</id>
  <link href="http://planet.malept.com/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://planet.malept.com/" rel="alternate"/>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-3665687928638936662</id>
    <link href="http://blogger.malept.com/feeds/3665687928638936662/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=3665687928638936662" rel="replies" title="1 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3665687928638936662?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3665687928638936662?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/dFKOFgck2J4/year-with-mark-devhub.html" rel="alternate" title="A Year With Mark @ DevHub" type="text/html"/>
    <title>A Year With Mark @ DevHub</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><em>Note: verb tenses might be a little out of whack, because it's kind of strange
to write this the day before my last day at DevHub.</em></p>
<p><em>Other Note: Obviously, this is my personal blog and in no way is indicative of the opinion of <strong>either</strong> company.</em></p>
<div class="section" id="tl-dr">
<h3>TL;DR</h3>
<p>I've been working on the <a href="http://www.devhub.com/">DevHub</a> platform for just over a year, and I've
decided that it's time for me to move on. I'll be working for an educational
startup, <a href="http://www.dreambox.com/">Dreambox Learning</a>, which creates web-based math software.
Specifically, I'll be working on their marketing website (the one that I linked
to). I might have more time to work on other projects, but we'll see.</p>
</div>
<div class="section" id="why-now">
<h3>Why now?</h3>
<p>Honestly, I expected to be working at <a href="http://www.evomediagroup.com/">EVO Media Group</a> for at least another
year, building up my "professional experience" so that I wouldn't have to go
through the hell that was my last job-seeking "adventure". Additionally, I loved
the work that I did - I was writing challenging code in my favorite programming
language, Python, and it was being used by thousands upon thousands of people
every day, on hundreds of thousands of sites. It also helps that I enjoyed
working with my co-workers, even during extreme crunch time (I'll get to that
later).</p>
<p>But there are a few things which this new opportunity will give me, in no
particular order (sorry, I rather like bulleted lists):</p>
<ul class="simple">
<li>The chance to work at a company where one of the primary focuses is social
change. This has been one of my career goals for a while now (along with,
"working for a company that primarily creates open source software" - we'll
see when that one is checked off). I recently tweeted that "[t]he Seattle
school district averages for 10th grade math/science proficiencies (2009-10)
are &lt;50%." As a person who enjoyed both of those subjects in school, I would
love to help fix that problem. Granted, the company doesn't do high school
math curricula, but giving younger students a firmer grasp of basic math
concepts will surely help.</li>
<li>The opportunity to work in a larger company. Dreambox is several times larger
than my current place of work, and working with more (and different types of)
people is always a good learning experience, and will help me, career-wise.</li>
<li>An excuse to learn Ruby. Sadly, there aren't that many Python jobs around
(though strangely, I've been getting cold-called by recruiters on a much more
frequent basis lately), and it doesn't hurt to be more versatile. Particularly
when I refuse to work with Java servlets, and to a lesser extent, the .NET
Framework. I've also been avoiding PHP work, now that I know how wonderful
Django is.</li>
<li>I won't have to do customer technical support anymore. Not that I absolutely
hate doing it - I voluntarily did it for the <a href="https://launchpad.net/awn">Avant Window Navigator</a> project
for years. I like helping people, I just don't like being strongly encouraged
to do so, every single day. Speaking of Awn…</li>
<li>I'll (probably) have more time and energy for side projects. So much of both
of those things were taken up by work, especially during the Month of Hell™,
where we were working nonstop on creating the gamified version of the site
editor (and I slept in the office for a week). I've been told that the
likelihood that I'll be pulling an all-nighter at my new gig is low - we'll
see. But I really, really want to get back to having side projects, and
possibly resuming work on Awn and related technology. At my current job, I've
mainly been really worried about burnout, which was a strong factor in me
putting off working on other coding projects. I really love to code, and it
would be terrible if I just started hating it. (On a somewhat related note,
one of the metrics for whether I should start looking for a job is when my
life starts sounding like the first verse of Jonathan Coulton's "<a href="http://www.jonathancoulton.com/wiki/index.php/Code_Monkey">Code
Monkey</a>". Not that I currently feel like that about DevHub.)</li>
</ul>
<p>Hopefully, the reasoning above shows that I <em>have</em> put some thought into
whether I should change jobs, unlike what certain people (whom I will not name)
have insinuated.</p>
</div>
<div class="section" id="what-did-i-do-at-devhub">
<h3>What did I do at DevHub?</h3>
<p>I've been relatively quiet about what I've worked on at DevHub. You can see bits
and pieces of it via <a href="https://twitter.com/malept">Twitter</a> and <a href="http://www.linkedin.com/in/leemark">LinkedIn</a> (not to mention <a href="http://bitbucket.org/malept">BitBucket</a> and
<a href="https://github.com/malept">GitHub</a>), but I wanted to give an overall view of what I did, without
violating NDAs or anything like that.</p>
<p>My primary focus was the application layer. As the <a href="http://www.devhub.com/developers">DevHub developers page</a>
says, it's a Django-based environment. Interestingly enough, when I applied for
the job, I didn't know Django at all. I was aware that it existed, and I had
tried learning Pylons a few months prior (that ended badly). I did, however,
know WSGI fairly well, as my URL shortener uses it. So, dealing with Python and
the web wasn't a completely foreign concept to me. I would say that it's a
testament to how awesome Django is, that I was able to pick it up and port the
simple to-do web application that I was writing in PHP (using Doctrine as the
ORM) in <em>under a day</em>. Of course, as soon as I was hired, I was made aware that
certain major components of Django (the ORM and template systems) weren't being
used, but <a href="http://www.sqlalchemy.org/">SQLAlchemy</a> and <a href="http://jinja.pocoo.org/">Jinja2</a> were. Which is another good thing about
Django - it may be heavily opinionated, but it's not necessarily "my way or the
highway".</p>
<p>This particular aspect is important, mostly because about ten months later, I
was given the task to write a "macroframework" around this particular
combination of technologies, using all of the best practices that we had
accumulated since I was hired. I genuinely hope that it gets open sourced,
because it's a fairly complete framework - it ports many popular Django apps,
and as a good Django-based package would be, it has a <em>lot</em> of unit tests and
documentation. In the process of writing it, I've also contributed fixes to the
apps that I've ported, when I've seen areas which need improvement.</p>
<p>There's one other library that I wrote, which I hope will be open sourced. It's
essentially a domain name parser. It can tell you whether a given domain name is
syntactically valid, and provide relevant and proper concatenations of the
constituent parts, such as the subdomain and the domain. It also handles IDNs
just fine. It's a bit domain-specific (no pun intended), but works well, mostly
due to the amount of unit/doc/regression tests I've written for it.</p>
<p>In late January, I was assigned the task of porting the DevHub platform from
PHP to Python (as one of the reasons I was hired was because I knew both
languages fairly well). And that began a six month journey, along with my
co-workers (which included the other, more senior developer and two recently
hired designers) where we would be working incredibly long hours, to get the
new-and-improved DevHub launched in early July.</p>
<p>I had been doing some experimenting with <a href="http://pypy.org/">PyPy</a>, because of its sandboxing
capabilities. Unfortunately, due to several factors, it was deemed infeasible to
use. Since then, however, I have been keeping tabs on its development to see if
any of said factors have been eliminated. Regardless of that setback, by March I
had made a reasonable amount of progress on the port, and the unpaid overtime
began. (Yay for exempt status¡)</p>
<p>In the process of porting the platform, I had to deal with a number of
third-party APIs, because one of DevHub's features is that it supports a number
of third-party services by default (as opposed to having to add HTML embed code
given by the third-party). The quality of these APIs ranged from half-decent to
just plain terrible. Mind you, I've worked with other APIs prior to DevHub (in
fact, I won a t-shirt in an API contest), but they were at least decently
documented and the structure made some sense. It's amazing how little thought
that some of these API providers give to their users.</p>
<p>In May, a few things happened: The platform port was essentially complete, our
hosting provider took forever to move our server instances cross-country, and it
was decided that the site editor needed to be gamified. I wrote a small
prototype to see how that would work. Eventually, it was decided that most of
that would be scrapped and that we would be using the <a href="http://www.bigdoor.com/">BigDoor</a> API. We were
already partners, so it seemed like a natural fit.</p>
<p>June was the aforementioned "Month of Hell™". At one point, I was at the office
for 14 days straight. At the end, I began my week of sleeping at the office
(AKA, "The Week of Utter Hell™"). Quite possibly, the one good thing that
came out of that experience, on a personal level, was that I was given my
current phone, a Motorola Droid, as recognition of how much time I spent at
the office. (My boss had gone to Google I/O and had gotten one for "free", and
was/is an iPhone user and thus on AT&amp;T, so it wasn't much use to him.)</p>
<p>By the launch in July, I was extremely close to burned out as I ever wanted to
be. Fortunately, I had made sure that I got a week of vacation in mid-July
(where I would be going to OSCON, independent of the company, and also taking
in some of the sights of Portland). By the time I was back to work, some people
had noticed that I was a significantly different person (i.e., not ridiculously
stressed out). I don't really want to think about what would've happened if I
didn't take that trip at that time.</p>
<p>Relative to the previous couple of months, August was pretty calm. We (the
company) did play a game of dodgeball with a company that we were going to
partner with. For me, that just indicated that I was really out of shape. I
immediately began jogging when the CEO insinuated that there may be more of
these games. (To date, there hasn't been another one.)</p>
<p>September was pretty awesome, mostly because I was fortunate enough to go to
DjangoCon. (The company paid for most of it, as part of an agreement during The
Month of Hell™.) I talked to some fellow web developers, plus sat in on some
pretty interesting talks. I really wish that I could have stayed for all three
days, but alas. One interesting thing came out of the experience. One of the
technologies that people were consistently touting as a must-use package was
<a href="http://celeryq.org/">celery</a>, a distributed task queue. About a week after DjangoCon, we had a big
problem with a long-running task during the request process. I remembered
celery, and in under a week, I experimented with it on the development server,
documented the process to install the subsystem (for the benefit of our
sysadmin), helped my co-worker patch the task to use celery, tested the patch,
and deployed it to the live servers.</p>
<p>October was the month where I was both working on a client project and dealing
with the decision of whether to change jobs, so I've covered most of that
already. One thing that I think is worth mentioning is that I started to use
code from the <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a> project. I liked it so much, I'm using it in
my current side project, the recently resurrected to-do app. And I plan on using
it in the next job, too.</p>
</div>
<div class="section" id="the-end">
<h3>The End</h3>
<p>And here we are, in the "present". I know it's a bit cliché, but I'd like to
publicly thank the execs at EVO Media Group for hiring me 13 months ago. I
really, really appreciate the amount of confidence that you have with my work,
and I hope that DevHub becomes even more popular and awesome than it is now.</p>
</div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-3665687928638936662?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/dFKOFgck2J4" width="1"/></div>
    </content>
    <updated>2010-11-16T19:46:39Z</updated>
    <published>2010-11-16T01:35:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="django"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="devhub"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="python"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2010/11/year-with-mark-devhub.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.azarask.in/blog/post/how-to-prototype-and-influence-people/</id>
    <link href="http://www.azarask.in/blog/post/how-to-prototype-and-influence-people/" rel="alternate" type="text/html"/>
    <title>How To Prototype And Influence People</title>
    <updated>2010-11-07T02:43:37Z</updated>
    <category term="design prototyping video presentation development"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://lcamtuf.blogspot.com/2010/10/http-cookies-or-how-not-to-design.html</id>
    <link href="http://lcamtuf.blogspot.com/2010/10/http-cookies-or-how-not-to-design.html" rel="alternate" type="text/html"/>
    <title>lcamtuf's blog: HTTP cookies, or how not to design protocols</title>
    <updated>2010-11-06T18:29:51Z</updated>
    <category term="development http website security commentary"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html</id>
    <link href="http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html" rel="alternate" type="text/html"/>
    <title>Using MySQL as a NoSQL - A story for exceeding 750,000 qps on a commodity server</title>
    <summary>An extreme method of tweaking performance with MySQL.</summary>
    <updated>2010-11-04T17:27:59Z</updated>
    <category term="databases mysql performance scaling"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.niemanlab.org/2010/10/getting-beyond-just-pageviews-philly-coms-seven-part-equation-for-measuring-online-engagement/</id>
    <link href="http://www.niemanlab.org/2010/10/getting-beyond-just-pageviews-philly-coms-seven-part-equation-for-measuring-online-engagement/" rel="alternate" type="text/html"/>
    <title>Getting beyond just pageviews: Philly.com's seven-part equation for measuring online engagement</title>
    <updated>2010-11-04T17:25:49Z</updated>
    <category term="analytics"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.tbray.org/ongoing/When/201x/2010/10/30/No-More-Users</id>
    <link href="http://www.tbray.org/ongoing/When/201x/2010/10/30/No-More-Users" rel="alternate" type="text/html"/>
    <title>ongoing by Tim Bray · No More Users</title>
    <summary>Discussion regarding another term for "user" in documentation.</summary>
    <updated>2010-11-01T05:24:00Z</updated>
    <category term="software hci usability"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://radar.oreilly.com/2010/10/what-to-consider-before-shorte.html</id>
    <link href="http://radar.oreilly.com/2010/10/what-to-consider-before-shorte.html" rel="alternate" type="text/html"/>
    <title>What to consider before shortening links - O'Reilly Radar</title>
    <updated>2010-11-01T05:21:39Z</updated>
    <category term="web2.0 commentary"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://brandonkonkle.com/blog/2010/oct/29/uwsgi-and-django-secure-requests/</id>
    <link href="http://brandonkonkle.com/blog/2010/oct/29/uwsgi-and-django-secure-requests/" rel="alternate" type="text/html"/>
    <title>uWSGI and Django Secure Requests</title>
    <updated>2010-11-01T05:17:12Z</updated>
    <category term="nginx uwsgi django ssl howto"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/photo-content.html</id>
    <link href="http://www.useit.com/alertbox/photo-content.html" rel="alternate" type="text/html"/>
    <title>Photos as Web Content</title>
    <updated>2010-11-01T02:06:33Z</updated>
    <category term="website usability design commentary"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/mental-models.html</id>
    <link href="http://www.useit.com/alertbox/mental-models.html" rel="alternate" type="text/html"/>
    <title>Mental Models (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:52:18Z</updated>
    <category term="usability hci to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/alpha-sorting.html</id>
    <link href="http://www.useit.com/alertbox/alpha-sorting.html" rel="alternate" type="text/html"/>
    <title>Alphabetical Sorting Must (Mostly) Die (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:51:31Z</updated>
    <category term="usability commentary to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/children.html</id>
    <link href="http://www.useit.com/alertbox/children.html" rel="alternate" type="text/html"/>
    <title>Children's Websites: Usability Issues in Designing for Kids</title>
    <updated>2010-10-31T19:51:00Z</updated>
    <category term="website usability children design user_interface to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/copy-big-sites.html</id>
    <link href="http://www.useit.com/alertbox/copy-big-sites.html" rel="alternate" type="text/html"/>
    <title>Should You Copy a Famous Site's Design? (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:49:04Z</updated>
    <category term="design usability commentary to_read website user_interface"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/blog-front-pages.html</id>
    <link href="http://www.useit.com/alertbox/blog-front-pages.html" rel="alternate" type="text/html"/>
    <title>Corporate Blogs: Front Page Structure (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:48:27Z</updated>
    <category term="design usability website to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/interviews.html</id>
    <link href="http://www.useit.com/alertbox/interviews.html" rel="alternate" type="text/html"/>
    <title>Interviewing Users (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:47:39Z</updated>
    <category term="usability testing to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/ipad-kindle-reading.html</id>
    <link href="http://www.useit.com/alertbox/ipad-kindle-reading.html" rel="alternate" type="text/html"/>
    <title>iPad and Kindle Reading Speeds (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:46:39Z</updated>
    <category term="usability tablet to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2011-09-27T06:18:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/response-times.html</id>
    <link href="http://www.useit.com/alertbox/response-times.html" rel="alternate" type="text/html"/>
    <title>Website Response Times (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:46:01Z</updated>
    <category term="website usability performance development to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-07T02:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/utest-observers.html</id>
    <link href="http://www.useit.com/alertbox/utest-observers.html" rel="alternate" type="text/html"/>
    <title>Involving Stakeholders in User Testing (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:45:11Z</updated>
    <category term="testing usability to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-06T18:18:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/ipad.html</id>
    <link href="http://www.useit.com/alertbox/ipad.html" rel="alternate" type="text/html"/>
    <title>iPad Usability: First Findings From User Testing (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:44:05Z</updated>
    <category term="usability software tablet to_read user_interface"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-04T17:18:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/horizontal-attention.html</id>
    <link href="http://www.useit.com/alertbox/horizontal-attention.html" rel="alternate" type="text/html"/>
    <title>Horizontal Attention Leans Left (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:43:14Z</updated>
    <category term="website usability to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-04T17:18:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/scrolling-attention.html</id>
    <link href="http://www.useit.com/alertbox/scrolling-attention.html" rel="alternate" type="text/html"/>
    <title>Scrolling and Attention (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:42:41Z</updated>
    <category term="usability website to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-01T05:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/action-object-closeness.html</id>
    <link href="http://www.useit.com/alertbox/action-object-closeness.html" rel="alternate" type="text/html"/>
    <title>Closeness of Actions and Objects in GUI Design (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:41:13Z</updated>
    <category term="usability development hci to_read user_interface"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-01T05:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/experienced-users.html</id>
    <link href="http://www.useit.com/alertbox/experienced-users.html" rel="alternate" type="text/html"/>
    <title>Testing Expert Users (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T19:40:17Z</updated>
    <category term="usability to_read testing"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-01T04:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/short-term-memory.html</id>
    <link href="http://www.useit.com/alertbox/short-term-memory.html" rel="alternate" type="text/html"/>
    <title>Short-Term Memory and Web Usability (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T07:39:42Z</updated>
    <category term="website usability commentary to_read hci"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-11-01T01:18:03Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.useit.com/alertbox/agile-user-experience.html</id>
    <link href="http://www.useit.com/alertbox/agile-user-experience.html" rel="alternate" type="text/html"/>
    <title>Agile User Experience Projects (Jakob Nielsen's Alertbox)</title>
    <updated>2010-10-31T07:28:57Z</updated>
    <category term="commentary usability to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-10-31T19:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://blogs.gnome.org/rodrigo/2009/12/07/social-services-clients/</id>
    <link href="http://blogs.gnome.org/rodrigo/2009/12/07/social-services-clients/" rel="alternate" type="text/html"/>
    <title>Social network[ing] services clients</title>
    <updated>2010-10-31T06:59:01Z</updated>
    <category term="social software usability to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-10-31T19:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://obso1337.org/2010/using-tabs-in-the-taskbar/</id>
    <link href="http://obso1337.org/2010/using-tabs-in-the-taskbar/" rel="alternate" type="text/html"/>
    <title>Using Tabs in the Taskbar: Improving Desktop-Application Integration, Visual Hierarchy, and Usability in KDE</title>
    <updated>2010-10-31T06:56:04Z</updated>
    <category term="development usability desktop to_read software"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-10-31T19:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.obso1337.org/2009/hci-foundations-adaptive-interfaces/</id>
    <link href="http://www.obso1337.org/2009/hci-foundations-adaptive-interfaces/" rel="alternate" type="text/html"/>
    <title>HCI Foundations: Adaptive Interfaces</title>
    <updated>2010-10-31T06:54:54Z</updated>
    <category term="hci usability to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-10-31T19:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.obso1337.org/2009/hci-foundations-web-interfaces/</id>
    <link href="http://www.obso1337.org/2009/hci-foundations-web-interfaces/" rel="alternate" type="text/html"/>
    <title>HCI Foundations: Web Interfaces</title>
    <updated>2010-10-31T06:53:45Z</updated>
    <category term="hci usability website development to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-10-31T19:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.obso1337.org/2009/hci-foundations-multimedia-and-virtual-reality-interfaces/</id>
    <link href="http://www.obso1337.org/2009/hci-foundations-multimedia-and-virtual-reality-interfaces/" rel="alternate" type="text/html"/>
    <title>HCI Foundations: Multimedia and Virtual Reality Interfaces</title>
    <updated>2010-10-31T06:52:48Z</updated>
    <category term="hci usability to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-10-31T19:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.obso1337.org/2009/hci-foundations-evaluation-methodologies/</id>
    <link href="http://www.obso1337.org/2009/hci-foundations-evaluation-methodologies/" rel="alternate" type="text/html"/>
    <title>HCI Foundations: Evaluation Methodologies</title>
    <updated>2010-10-31T06:51:55Z</updated>
    <category term="hci usability to_read"/>
    <author>
      <name>lazymalevolence</name>
    </author>
    <source>
      <id>http://www.delicious.com/lazymalevolence</id>
      <link href="http://www.delicious.com/lazymalevolence" rel="alternate" type="text/html"/>
      <link href="http://del.icio.us/rss/lazymalevolence" rel="self" type="application/rdf+xml"/>
      <subtitle>bookmarks posted by lazymalevolence</subtitle>
      <title>Delicious/lazymalevolence</title>
      <updated>2010-10-31T19:18:02Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:devhub.com,2010-06-11:blog-493839</id>
    <link href="http://seattlefries.malept.com/blog/493839-quick-note/" rel="alternate" type="text/html"/>
    <title>Quick Note</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>
	The <a href="http://seattlefries.malept.com/map/">map</a>'s been up for a while. I had some issues that I fixed (it helps to have access to the code base), but it's stable now. Yeah, again, sorry for the lack of posts. I will have had my first day off since my last post this coming Saturday. Yes, that's right. Nineteen days of working on DevHub. Unfortunate, but necessary.</p>
<br/>
<div id="_firebugConsole" style="display: none;">
	 </div>
<br/></div>
    </content>
    <updated>2010-06-11T00:46:58Z</updated>
    <published>2010-06-11T00:42:48Z</published>
    <category label="General" term="general"/>
    <author>
      <name>Mark</name>
    </author>
    <source>
      <id>tag:devhub.com,2010-05-14:feed-613245</id>
      <author>
        <name>Mark</name>
      </author>
      <link href="http://seattlefries.malept.com/feed" rel="self" type="application/atom+xml"/>
      <title>French Fries in Seattle</title>
      <updated>2010-06-11T00:46:58Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:devhub.com,2010-05-22:blog-492440</id>
    <link href="http://seattlefries.malept.com/blog/492440-apology-an-observation/" rel="alternate" type="text/html"/>
    <title>Apology; An Observation</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>
	I know that I'm slacking on the more detailed reviews (though I do have spur-of-the-moment reactions on <a href="http://twitter.com/malept">Twitter</a>). I've been ridiculously busy at work (moreso this week), but I'm going to attempt to shrink the backlog this weekend. Anyway, I made a map of all of the suggested places from Questionland (which will be on the site soon). I saw some somewhat interesting groupings, in terms of neighborhood. The following list is ordered by frequency:</p>
<ol>
	<li>
		Capitol Hill (9)</li>
	<li>
		Downtown Seattle (6)</li>
	<li>
		Ballard (5)</li>
	<li>
		Fremont (4)</li>
	<li>
		Tie: West Seattle, University District, Queen Anne (3)</li>
</ol>
<p>
	All in all, this is not too surprising, given the demographics of The Stranger's readership (particularly those who choose to participate in its online properties). It just means that I'm going to be going to Capitol Hill more often.</p></div>
    </content>
    <updated>2010-05-22T21:38:33Z</updated>
    <published>2010-05-22T21:24:49Z</published>
    <category label="General" term="general"/>
    <author>
      <name>Mark</name>
    </author>
    <source>
      <id>tag:devhub.com,2010-05-14:feed-613245</id>
      <author>
        <name>Mark</name>
      </author>
      <link href="http://seattlefries.malept.com/feed" rel="self" type="application/atom+xml"/>
      <title>French Fries in Seattle</title>
      <updated>2010-06-11T00:46:58Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:devhub.com,2010-05-14:blog-489908</id>
    <link href="http://seattlefries.malept.com/blog/489908-it-all-started-with-a-question/" rel="alternate" type="text/html"/>
    <title>It all started with a question...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>
	This particular journey, and this website, began with a <a href="http://questionland.thestranger.com/questions/10012-where-are-the-best-french-fries-in-seattle">simple question</a>: where are the best french fries in Seattle? I honestly didn't think that I'd get more than five or ten answers. Instead, it was <a href="http://slog.thestranger.com/slog/archives/2010/04/19/where-are-the-best-french-fries-in-seattle">the question of the day</a> on <em>The Stranger</em>'s blog, the Slog, and at the writing of this post, it has 40 responses. Now, in Questionland, you're supposed to give a "mushroom" to the person with the "best" answer. Being a generally fair person, this is a very hard thing to do. I decided that I wouldn't do this until I found the best place to buy french fries. I started the reviewing process at the beginning of the month (with a mini-review on Twitter), with a longer review (from memory) to be posted on this blog.</p>
<p>
	Here's how I'm going to review the places: in my question, I have four criteria for the french fries themselves. I will also give a short review of the restaurant/bar/truck/etc. in general. At the end, there will be two ratings (out of 10): one for the french fries, and one for the location.</p>
<p>
	I hope that you enjoy reading this, and I certainly hope that I find some quality french fries in Seattle.</p></div>
    </content>
    <updated>2010-05-14T23:37:10Z</updated>
    <published>2010-05-14T23:36:14Z</published>
    <category label="General" term="general"/>
    <author>
      <name>Mark</name>
    </author>
    <source>
      <id>tag:devhub.com,2010-05-14:feed-613245</id>
      <author>
        <name>Mark</name>
      </author>
      <link href="http://seattlefries.malept.com/feed" rel="self" type="application/atom+xml"/>
      <title>French Fries in Seattle</title>
      <updated>2010-06-11T00:46:58Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-4172735893515123633</id>
    <link href="http://blogger.malept.com/feeds/4172735893515123633/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=4172735893515123633" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4172735893515123633?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4172735893515123633?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/pnvTwGfo_ms/open-letter-to-sherman-alexie.html" rel="alternate" title="Open Letter to Sherman Alexie" type="text/html"/>
    <title>Open Letter to Sherman Alexie</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p/><aside style="font-style: italic;">
Because I haven't yet said this before: my posts here are my own opinion. They do not represent my employer's opinion in any shape or form.
</aside><p/>
<p>While going through my backlog of TV shows from the past week, I was watching the <a href="http://www.comedycentral.com/colbertreport/full-episodes/index.jhtml?episodeId=257627">Colbert Report from Tuesday (December 1)</a>. During his interview with Sherman Alexie, I heard something that sounded rather offensive to my ears. Skip to 3:14 to hear it.</p>
<p>
  
    
    
    
    
    
    
    
      
      
      
      
      
    
  
</p>
<p>For those of you who hate Flash or don't wish to watch the video, the context here is that Colbert is asking why he doesn't allow his books to be digitized. His response, up to the point which I reference above, was the typical response about how the music industry is losing money because of the rampant piracy, and that the only way to make money is via live shows. And then he makes this statement:</p>
<blockquote>
[...]and with the open-source culture on the Internet, the idea of ownership, of artistic ownership goes away.
</blockquote>
<p>Mr. Alexie, to use a colloquialism: What have you been smoking? I know that you're <abbr title="Best Friends Forever">BFF</abbr> with <cite>The Stranger</cite>, but this is ridiculous. You're supposed to be intelligent, not ignorant. There are a couple of things that are inaccurate with your statement.</p>
<p>First, I'm pretty sure you're referring to the <a href="http://en.wikipedia.org/wiki/Free_Culture_movement">Free culture movement</a>. "Open source", while it can refer to non-technical ideas, is more closely associated with software and its licenses. But I'm being pedantic.</p>
<p>Secondly (and more importantly), where does the idea of ownership go away? Maybe if you release the work into the public domain, sure. However, the majority of "free culture licenses" (e.g., <a href="http://creativecommons.org/">Creative Commons</a> licenses) ensure that one still owns the work that they create. The significant difference between traditional copyright and those licenses is that certain rights are granted by default, instead of having to ask the author about it. For example, this blog post (and the entire blog, for that matter) is licensed under the <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License</a> (as explicitly stated in the sidebar). What this means is that I have granted noncommercial entities to reproduce (or even "remix") my work (in full or in part) in other works, so long as I am credited, and the work retains the same license. Nowhere did I relinquish my ownership of this blog post. If a commercial entity wants to use my work, or someone wants to reproduce/remix my work under a different license, traditional copyright applies and they have to ask (assuming the use doesn't fall under "fair use").</p>
<p>As one of the literate (see the interview for the reference) and also a dead-tree book lover, I suggest that you read two books, both by Professor Lawrence Lessig: <cite>Free Culture</cite> and <cite>Remix: Making Art and Commerce Thrive in the Hybrid Economy</cite>. Both should be available at your local bookstore.</p>
<p>Finally, thank you, Mr. Alexie, for reminding me that I still need to <a href="https://support.creativecommons.org/donate?utm_source=malept">donate to the Creative Commons</a> this year. I want to spread the Free culture movement as quickly as possible, making sure that the views that you expressed are corrected just as quickly.</p>
<p/><aside style="font-style: italic;">
&lt;embed/&gt;, Comedy Central? really?
</aside><p/><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-4172735893515123633?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/pnvTwGfo_ms" width="1"/></div>
    </content>
    <updated>2009-12-05T06:22:02Z</updated>
    <published>2009-12-05T05:06:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="open source"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="free culture"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="FUD"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/12/open-letter-to-sherman-alexie.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-1202280121050897137</id>
    <link href="http://blogger.malept.com/feeds/1202280121050897137/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=1202280121050897137" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1202280121050897137?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1202280121050897137?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/3WG4b8U9AfY/quick-note-about-planet-awn.html" rel="alternate" title="A Quick Note about Planet Awn" type="text/html"/>
    <title>A Quick Note about Planet Awn</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Weirdness which I can now attribute to "PHP Library Hell" (similar to <a href="http://en.wikipedia.org/wiki/DLL_hell">DLL hell</a>) had caused the full text of posts for most of the feeds to not be syndicated in the planet feed for several weeks. This is now fixed. (I had to upgrade to Wordpress 2.8 for the actual error to appear and a solution to be presented, it seems.) I apologize for the inconvenience.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-1202280121050897137?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/3WG4b8U9AfY" width="1"/></div>
    </content>
    <updated>2009-06-27T08:07:11Z</updated>
    <published>2009-06-27T07:57:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/06/quick-note-about-planet-awn.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-4177505247712025902</id>
    <link href="http://blogger.malept.com/feeds/4177505247712025902/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=4177505247712025902" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4177505247712025902?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4177505247712025902?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/KnVQL3ARLZs/avant-window-navigator-awn-04-progress.html" rel="alternate" title="Avant Window Navigator (Awn) 0.4 Progress Report: June 2009" type="text/html"/>
    <title>Avant Window Navigator (Awn) 0.4 Progress Report: June 2009</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div style="float: right;">
  
  
  
</div>
<p>I've been a bit quiet about Awn in my blog. This is partially because I've
been working on two major areas: <a href="https://launchpad.net/libdesktop-agnostic">libdesktop-agnostic</a> and Vala/GObject
Introspection (as explained in my previous post, <a href="http://blogger.malept.com/2009/05/on-bindings.html">On Bindings</a>).</p>
<p>Since my work on libdesktop-agnostic is directly related to Awn, I'll address
it here (even though it may be boring to most of you). I currently have
abstractions for configuration, <a href="http://standards.freedesktop.org/desktop-entry-spec/latest/">desktop entries</a>, and virtual file systems
(e.g., GIO). The area that needs the most work currently is the configuration
support. What will ultimately happen is that there will be a class which lets
you have per-instance configuration for a given app(let), regardless of the
backend that is being used. What this means is that Awn users won't be shackled
to using GConf if they want a stable dock. Plus, if a user wants to switch
backends for some bizarre reason, they don't have to recompile Awn to do so.
Obviously, they'd have to migrate the settings themselves, but that's the
price one pays.</p>
<p>Anyway, on to Awn. Here's a screencast I took (CC-BY-SA 3.0 licenced!) of a
development version of Awn in an Ubuntu Jaunty virtual machine (hooray for
VirtualBox!):</p>

  
  
  

<p>(<a href="http://www.youtube.com/watch?v=17lDoFXT_HM">Direct link to YouTube video</a>)</p>
<p>The bar colors are kind of ugly, mostly because I was testing some of the
color-related code on that VM.</p>
<p>Obviously, the features shown in the video (orientation, panel style, and applet
loading indicator) aren't the only new features in 0.4. I'll be showing off more
shininess in successive videos.</p>
<p><a href="http://moon-shiny.blogspot.com/">Moonbeam</a> has covered most of the <a href="http://moon-shiny.blogspot.com/2009/05/if-neil-gets-around-to-blogging-i-guess.html">current status of Awn 0.4</a>, which I will
repeat here, briefly, for those of you who are scared of clicking on links:</p>
<ul class="simple">
<li>Moonbeam is working on an API that allows applets to have text and graphics
overlay the applet icon. Think Awn plugin support for applets.</li>
<li>He is also rewriting Awn System Monitor so that one can monitor multiple
things from the dock, among other things.</li>
<li>Certain panel/task animations still need to be implemented.</li>
<li>Plugin <em>(not applet)</em> support still needs to be implemented.</li>
</ul>
<p>I'd like to take a moment to talk about the Awn plugin system, particularly to
those who actually write the plugins. The D-Bus plugin API that was in 0.2.x and
0.3.x <strong>will be deprecated in the 0.4 series, and removed in the 0.6 series</strong>.
There will be a new API in the 0.4 series.</p>
<p>With regards to what I'm working on - in addition to libdesktop-agnostic
integration, I will most likely be working on implementing the D-Bus plugin API,
once Moonbeam is done with the API mentioned above.</p>
<p>On the Awn Extras front, I have the Garbage applet waiting to be added. This
is waiting on Vala support being re-activated (which is dependant upon adding
GObject Introspection support to Awn), and porting the applet to the 0.4 API.
There is also an <a href="http://libtorrent.rakshasa.no/">rTorrent</a> frontend and a social aggregator applet that I
have on the backburner (both written in Vala), which may or may not make it
into 0.4.0.</p>
<p>And finally, a note for Ubuntu users: we are <em>not</em> making available PPA builds
of 0.4 until there are no feature regressions in the rewrite. This release is
targeted for the official Karmic Koala repositories, just as 0.3.2 was targeted
for the Jaunty Jackalope repositories. We anticipate building packages for
Hardy and above.</p>
<p>Remember, the best way to keep track of new developments in Awn/Awn Extras is
to subscribe to <a href="http://planet.awn-project.org/">Planet Awn</a>. Be with us next time for "Autohide and Seek", or
"The Incredible Shrinking Dock"!</p>
<p><a id="addthis-awn04progress200906"/>

</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-4177505247712025902?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/KnVQL3ARLZs" width="1"/></div>
    </content>
    <updated>2009-06-03T20:31:31Z</updated>
    <published>2009-06-03T19:44:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="libdesktop-agnostic"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="vala"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="screencast"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/06/avant-window-navigator-awn-04-progress.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-1499622660955620796</id>
    <link href="http://blogger.malept.com/feeds/1499622660955620796/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=1499622660955620796" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1499622660955620796?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1499622660955620796?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/uwvcrfO8XKo/rshrtnr-private-uri-shortener.html" rel="alternate" title="Rshrtnr: The private URI shortener" type="text/html"/>
    <title>Rshrtnr: The private URI shortener</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Over the past couple of days, I've implemented a private URI shortener service
for myself, which I have named "Rshrtnr". The derivation of the name is left as
an exercise for the reader.</p>
<p>My main motivation for writing it was a criticism of public URI shortening
services that I have been seeing in blogs for a long time: if the service
has some downtime or suddenly disappears, all of the links that you have
created with it are useless. With my approach, I regain some control of where my
shortened links point to, and if the service has downtime and/or disappears, I
have more options for restoring it.</p>
<p>The code itself is written in Python. <a href="http://www.dwheeler.com/sloccount/">SLOCCount</a> says that the core module
runs at around 100 SLOC. Most of my time, however, was taken up by working
around problems relating to my webhost's Python installation. The supported
Python version is 2.4.x, which is ridiculously old (for reference, Gentoo was
the last major Linux distribution to switch from Python 2.4 to 2.5, around July
2008). Additionally, for some reason, if I attempt to change the <var>sys.path</var>
variable (i.e., the "include path") to use locally installed modules (I am on a
shared host), the entire script breaks with zero logged messages anywhere. It
runs fine via the command line, but in FastCGI mode, the strangeness occurs.</p>
<p>The two third-party modules that I used were <a href="http://pythonpaste.org/">Paste</a> and <a href="http://mysql-python.sf.net/">mysql-python</a>. I
store the URIs and their associated aliases in a simple SQL table, and I use
Paste for various WSGI/HTTP-related utilities. I "manually" handle routing via
parsing the <var>PATH_INFO</var> environment variable.</p>
<p>There are two ways to specify an alias: either explicitly send a custom one as
a query parameter with the URI, or let the app make a random one for you. With
the latter behavior, it hashes the URI to generate an eight character "unique"
alias. Since there are (in theory) 64^8 possibilities, I don't think I'll run
out of aliases any time soon, especially since custom aliases can be anywhere
from 1 to 15 characters long.</p>
<p>In my opinion, the most interesting feature is that adding URIs requires one to
send an OpenPGP-encoded query string, which needs a public key recognized by
the app for the operation to succeed. To write this, I simply parsed the output
from sending the OpenPGP message to the <kbd>gpg</kbd> binary.</p>
<p>Finally, <kbd>mod_rewrite</kbd> magic is used to prettify the shortened URIs. Nothing
too exciting about that part.</p>
<p>I had thought about hosting a version of Rshrtnr on Google App Engine, but a key
component is missing - <a href="http://code.google.com/p/googleappengine/issues/detail?id=534">OpenPGP support</a>.</p>
<p>If anyone wants me to release it, please comment below. There's currently a
bunch of webhost-specific things that I would need to abstract out before I
release the code to the general public, and unless someone gives me a very good
reason, it will be licensed under the <a href="http://www.gnu.org/licenses/agpl-3.0.html">AGPL version 3</a>.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-1499622660955620796?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/uwvcrfO8XKo" width="1"/></div>
    </content>
    <updated>2009-05-15T07:38:26Z</updated>
    <published>2009-05-15T07:31:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="http"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="wsgi"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="website"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="web services"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="python"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="openpgp"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/05/rshrtnr-private-uri-shortener.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-79146856289061972</id>
    <link href="http://blogger.malept.com/feeds/79146856289061972/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=79146856289061972" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/79146856289061972?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/79146856289061972?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/DH1d_OAUmLo/on-bindings.html" rel="alternate" title="On Bindings" type="text/html"/>
    <title>On Bindings</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>One of the more interesting areas in software development, to me at least, is
language bindings. Being able to interface with a library written in one
language in another language is kind of satisfying, as it allows me to develop
without having to reinvent the wheel. There are two specific projects that I use
and work on so that I can enhance the software that I develop: <a href="http://live.gnome.org/GObjectIntrospection">GObject
Introspection</a> (G-I) and <a href="http://github.com/davisp/python-spidermonkey">python-spidermonkey</a>.</p>

<h3>GObject Introspection</h3>

<p>As a quick overview, the goal of this project is to give C libraries the tools
to provide enough metadata about their API so that bindings can be written with
minimal effort. Given the time and effort that I have put into maintaining the
Awn bindings, it is not very surprising that I would be willing to help out
getting this framework working for Awn. My ultimate goal is to eliminate the
<kbd>bindings/python</kbd> folder in the Awn source tree. It is basically a mixture of
a Scheme definition file plus a very bizarrely formatted "override" file for
custom definitions, all integrated into autotools to produce a C library that is
ready to be dynamically loaded into python via <code>import</code>. To meet this goal, I
am contributing to the <a href="http://live.gnome.org/PyBank">PyBank</a> project, which is a prototype Python module
that interfaces with the GObject Introspection library to read compiled library
metadata files (called "typelibs") on the fly so that classes, functions, etc.
can be loaded and called at runtime. In addition to myself, a Google Summer of
Code student and a Sugar Labs developer are also working on the module, with
Johan Dahlin overseeing it all. So far, I've contributed a unit test suite,
ported from the gjs project (JavaScript bindings for GLib-based libraries based
on the Spidermonkey VM) and working type bindings for various simple types
(e.g., int64 and float).</p>

<p>I have also put some coding effort toward G-I integration in <a href="http://live.gnome.org/Vala">Vala</a>. Vala
supports G-I by both reading GIR files (the XML serialization of G-I metadata)
to produce VAPI files (short for Vala API files), and writing GIR files when
producing a library written in Vala (e.g., libdesktop-agnostic). I have
contributed mostly what amounts to workarounds in the GIR reading code, with
regards to Vala/G-I behavioral inconsistencies. Didier 'Ptitjes' has done much,
much more solid work than I have on both fronts, which I greatly appreciate.</p>

<h3>python-spidermonkey</h3>

<p>This project, as the <kbd>README</kbd> states, lets you <q>[execute] arbitrary JavaScript
code from Python[, and allows] you to reference arbitrary Python objects and
functions in the JavaScript VM</q>. As I've stated in an <a href="http://blogger.malept.com/2007/07/website-finally-updated-hooray.html">earlier blog post</a>, I
use this in my custom website build system to both validate and pack my
JavaScript code, via <a href="http://www.jslint.com/">JSLint</a> and <a href="http://dean.edwards.name/packer/">Packer</a>, respectively. Since I published
that post almost two years ago, that project was revived twice - <a href="http://python-spidermonkey.googlecode.com/">once</a> by a
Mozilla employee (and co-founder of Humanized, which is quite awesome) named
Atul Varma, and the latest incarnation is on github. Since it is based on the
original implementation in C, and not the Python-based ctypes version, the Base2
recursion problem does not exist, and so I have happily written modules and
scripts which wrap the two JavaScript utilities. Recently, I have made them
available in a public project on Launchpad called <a href="https://launchpad.net/python-jsutils">python-jsutils</a>. I haven't
really announced it until now because it currently relies on a change I made to
python-spidermonkey which allows one to iterate over a JavaScript array, instead
of having to write "unpythonic" code like <code class="code-highlight"><span style="color: #080; font-weight: bold;">for</span> x <span style="color: #A2F; font-weight: bold;">in</span> <span style="color: #080;">range</span>(<span style="color: #666;">0</span>, <span style="color: #080;">len</span>(foo)): <span style="color: #488; font-style: italic;">#...</span></code>.
While it is in <a href="http://github.com/malept/python-spidermonkey">my fork</a>, it has not been merged to the "official" repository.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-79146856289061972?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/DH1d_OAUmLo" width="1"/></div>
    </content>
    <updated>2009-05-07T09:13:53Z</updated>
    <published>2009-05-07T08:56:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="javascript"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="vala"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="website"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="python"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="spidermonkey"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="old projects"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="gnome"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/05/on-bindings.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-4215845180276492145</id>
    <link href="http://blogger.malept.com/feeds/4215845180276492145/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=4215845180276492145" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4215845180276492145?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4215845180276492145?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/KklcsTQJ8ik/website-internals-javascript-tag-module.html" rel="alternate" title="Website Internals: The JavaScript Tag Module" type="text/html"/>
    <title>Website Internals: The JavaScript Tag Module</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I need something to get myself blogging again, so I figured that I should write
about how my website is written. I'm going to start with one of the parts
written in JavaScript: the Tag module. It's comprised of a simple JavaScript
object with static methods and properties, no instances. Its main purpose is to
create (X)HTML nodes for use in what used to be known as "dynamic" HTML.
Incidentally, it's also part of my "old projects" series: I originally created
it for an Intel-sponsored research project that I was working on during my time
in university. (For more details on the project, please see my <a href="http://malept.com/cv.html">curriculum
vitae</a>.)</p>
<p>In practice, calls using <code>Tag.create()</code> don't look too horrible. Consider the
example of building a minimal HTML5 document:</p>
<pre class="code-highlight"><code><span style="color: #008000; font-weight: bold;">var</span> html <span style="color: #666666;">=</span> Tag.create(<span style="color: #BA2121;">'html'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> [
    Tag.create(<span style="color: #BA2121;">'head'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> Tag.create(<span style="color: #BA2121;">'title'</span>))<span style="color: #666666;">,</span>
    Tag.create(<span style="color: #BA2121;">'body'</span>)
]});
</code></pre>
<p>Or, a data table:</p>
<pre class="code-highlight"><code><span style="color: #008000; font-weight: bold;">var</span> table <span style="color: #666666;">=</span> Tag.create(<span style="color: #BA2121;">'table'</span><span style="color: #666666;">,</span> {
    attributes<span style="color: #666666;">:</span> {summary<span style="color: #666666;">:</span> <span style="color: #BA2121;">'MLS Statistics'</span>}<span style="color: #666666;">,</span>
    classes<span style="color: #666666;">:</span> [<span style="color: #BA2121;">'sortable'</span><span style="color: #666666;">,</span> <span style="color: #BA2121;">'centered'</span>]<span style="color: #666666;">,</span> <span style="color: #408080; font-style: italic;">// uses sorttable</span> 
    styles<span style="color: #666666;">:</span> {border<span style="color: #666666;">:</span> <span style="color: #BA2121;">'1px red inset'</span>}<span style="color: #666666;">,</span> <span style="color: #408080; font-style: italic;">// use CSS style names, not JS ones</span>
    children<span style="color: #666666;">:</span> [
        Tag.create(<span style="color: #BA2121;">'thead'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> Tag.create(<span style="color: #BA2121;">'tr'</span><span style="color: #666666;">,</span> {
            <span style="color: #408080; font-style: italic;">// text is automatically converted</span>
            Tag.create(<span style="color: #BA2121;">'th'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> <span style="color: #BA2121;">'Team'</span>})<span style="color: #666666;">,</span>
            Tag.create(<span style="color: #BA2121;">'th'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> <span style="color: #BA2121;">'Goals For'</span>})<span style="color: #666666;">,</span>
            Tag.create(<span style="color: #BA2121;">'th'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> <span style="color: #BA2121;">'Goals Against'</span>}) 
        })})<span style="color: #666666;">,</span>
        Tag.create(<span style="color: #BA2121;">'tbody'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> [
            Tag.create(<span style="color: #BA2121;">'tr'</span><span style="color: #666666;">,</span> {
        Tag.create(<span style="color: #BA2121;">'tbody'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> [
            Tag.create(<span style="color: #BA2121;">'tr'</span><span style="color: #666666;">,</span> {
                classes<span style="color: #666666;">:</span> [<span style="color: #BA2121;">'west-coast'</span><span style="color: #666666;">,</span> <span style="color: #BA2121;">'usa'</span>]<span style="color: #666666;">,</span>
                children<span style="color: #666666;">:</span> [
                    Tag.create(<span style="color: #BA2121;">'td'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> <span style="color: #BA2121;">'Seattle Sounders FC'</span>})<span style="color: #666666;">,</span>
                    Tag.create(<span style="color: #BA2121;">'td'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> <span style="color: #BA2121;">'9'</span>})<span style="color: #666666;">,</span>
                    Tag.create(<span style="color: #BA2121;">'td'</span><span style="color: #666666;">,</span> {children<span style="color: #666666;">:</span> <span style="color: #BA2121;">'3'</span>})
                ]
            })<span style="color: #666666;">,</span>
            <span style="color: #408080; font-style: italic;">// add more teams here...</span>
        ])
    ]
});
</code></pre>
<p>I recently modified the function so that it deserializes an object (originally a
JSON string) into a DOM node tree. This is particularly useful when you're
sending partial HTML documents as JSON strings (which I prefer to sending HTML
strings and dealing with that mess). So, the first example would look like this:</p>
<pre class="code-highlight"><code><span style="color: #008000; font-weight: bold;">var</span> html <span style="color: #666666;">=</span> Tag.create({
    <span style="color: #BA2121;">"name"</span><span style="color: #666666;">:</span> <span style="color: #BA2121;">"html"</span><span style="color: #666666;">,</span>
    <span style="color: #BA2121;">"children"</span><span style="color: #666666;">:</span> [
        {
            <span style="color: #BA2121;">"name"</span><span style="color: #666666;">:</span> <span style="color: #BA2121;">"head"</span><span style="color: #666666;">,</span>
            <span style="color: #BA2121;">"children"</span><span style="color: #666666;">:</span> {<span style="color: #BA2121;">"name"</span><span style="color: #666666;">:</span> <span style="color: #BA2121;">"title"</span>}
        }<span style="color: #666666;">,</span>
        {<span style="color: #BA2121;">"name"</span><span style="color: #666666;">:</span> <span style="color: #BA2121;">"body"</span>}
    ]
});
</code></pre>
<p>Interestingly enough, I created this without the knowledge of the existence of
<a href="http://jsonml.org/">JSONML</a> or any of its bretheren, although I suspected that JSON-HTML
converters already existed.</p>
<p>Three of the functions in the module are basically wrapper functions.
<code>Tag.createWithText()</code> creates an HTML element with a text child node, and
<code>Tag.createHeader()</code> creates an HTML header element (e.g., <code>&lt;h1&gt;...&lt;/h1&gt;</code>)
with a text child node. <code>Tag.text()</code> is shorthand for the DOM's
<code>document.createTextNode()</code> method.</p>
<p>In the current iteration, nearly all of the event-related code is commented out,
as there are far more competent JavaScript libraries out there which deal with
cross-browser events. The only event-related function left is
<code>Tag.dispatchEvent()</code>, which sends a "synthetic" event for a given HTML
element. If I remember correctly, I coded for both the W3C and Microsoft models,
but I don't remember testing it on browsers other than IE6/7 and Firefox 2.
At some point, I'll probably reintegrate event support to <span class="docutils literal"><span class="pre">Tag.create()</span></span> at
minimum, using <a href="http://base2.googlecode.com/">Base2</a>.</p>
<p>The remaining function is a utility function. <code>Tag.inXHTML()</code> determines
whether the document in question is in XHTML mode, using a variety of
heuristics. I'm sure there's a better way of doing it, but I couldn't find one
when I was researching it.</p>
<p>This module has been tested in IE6/7, Firefox 1.5/2/3, Safari 2/3, and Opera 9.5
- although not all in the same time periods. It's licensed under the Apache
Licence (version 2.0) and is currently somewhere in my compressed JavaScript
file. If there's any interest, I'll put up the non-compressed version somewhere
and update this post.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-4215845180276492145?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/KklcsTQJ8ik" width="1"/></div>
    </content>
    <updated>2009-04-26T05:45:24Z</updated>
    <published>2009-04-26T04:46:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="javascript"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="website"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="json"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="old projects"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="html"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/04/website-internals-javascript-tag-module.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-6226825042403853310</id>
    <link href="http://blogger.malept.com/feeds/6226825042403853310/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=6226825042403853310" rel="replies" title="1 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/6226825042403853310?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/6226825042403853310?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/n0SN0uD_dnA/old-projects-pytiger.html" rel="alternate" title="Old Projects: pytiger" type="text/html"/>
    <title>Old Projects: pytiger</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I <a href="https://twitter.com/malept/status/1148662021">mentioned on Twitter</a> that I wanted to blog about some old projects. The first one is more than a year old, but it still may be useful to someone.</p>
<p>Back during college, I was implementing a file sharing client with Twisted - the GUI was first written using wxPython, and then rewritten in PyGTK (the reasons for the rewrite I can expound upon later, if anyone wants to know). It's not publicly released, mostly because it never got past being a chat client. Anyway, a part of the file sharing protocol involved tiger tree hashes to verify the data as it was downloaded. I couldn't find an implementation in Python (and attempts to write it myself failed), so I found some C source code and manually bound it to Python (via its C extension API). This was my first exposure to extending Python via C — I later used some of this knowledge to fix up the Python bindings for Awn.</p>
<p>The Python part is licensed under the Apache License v2, the tiger (tree) code is public domain-ish. (see COPYING for details)</p>
<p><del>The code can (as of the publication date) be found in a junk <a href="https://code.launchpad.net/~malept/+junk/pytiger">bzr branch on Launchpad</a>. If you wish to continue work on it, I can move it to a full-fledged project — just contact me about it via the comments.</del></p>
<p><ins>Edit (2009/03/24): Due to interest in the code, I've created a <a href="https://launchpad.net/pytiger">project for pytiger at Launchpad</a>.</ins></p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-6226825042403853310?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/n0SN0uD_dnA" width="1"/></div>
    </content>
    <updated>2009-03-25T01:34:28Z</updated>
    <published>2009-02-02T22:29:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="pytiger"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="python"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="FOSS"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="old projects"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/02/old-projects-pytiger.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-6701858987319306014</id>
    <link href="http://blogs.gnome.org/otte/2009/02/20/gnome-and-the-cloud/" rel="related" title="The GNOME Platform, Awn, and the Cloud" type="text/html"/>
    <link href="http://blogger.malept.com/feeds/6701858987319306014/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=6701858987319306014" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/6701858987319306014?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/6701858987319306014?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/4XpT4haxjVs/gnome-platform-awn-and-cloud.html" rel="alternate" title="The GNOME Platform, Awn, and the Cloud" type="text/html"/>
    <title>The GNOME Platform, Awn, and the Cloud</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Benjamin Otte recently wrote about <a href="http://blogs.gnome.org/otte/2009/02/20/gnome-and-the-cloud/">desktop-web integration in the GNOME
desktop</a>. It's kind of interesting that he calls himself "not web enabled",
given that he's the main developer of the <a href="http://swfdec.freedesktop.org/">swfdec</a> library and associated
applications. I agree with most of what he wrote, but there are a few comments I
would like to make.</p>

<p>Benjamin asks:</p>
<blockquote>
Why does dconf (or GConf) not store my settings in the cloud so it uses the
same settings on my university login?</blockquote>
<p>As I understand it, this is one of the features of <a href="http://www.conduit-project.org/">Conduit</a>. There's a <a href="https://bugs.launchpad.net/bugs/181651">bug</a>
in Awn regarding config synchronization via Conduit. I'm probably going to look
into how that works when I resume work on the config interface for
libdesktop-agnostic.</p>
<p>There is an erroneous statement in his post:</p>
<blockquote>
We don't even have a http library that knows cookies.</blockquote>

<p>libsoup has had (non-persistent) cookie support since 2.23.1, and persistent
support will be in 2.26.0.</p>
<p>And then there's the main point:</p>
<blockquote>
<p>[GNOME is] doing a very bad job at integrating the web into the desktop.
Apart from epiphany (and the weather applet), what application does GNOME
ship that speak http?</p>
<p>I believe there are two main reasons for this: One is GNOME developers are
not "web-enabled". <em>[...]</em> The other, related reason is that we don't have
the software to do this.</p>
</blockquote>
<p>In Awn-land, we have several web-enabled applets:</p>

<ul>
<li>arss</li>
<li>comics</li>
<li>digg</li>
<li>lastfm</li>
<li>meebo</li>
<li>pandora</li>
<li>rtm</li>
<li>weather</li>
<li>webapplet</li>
</ul>

<p>In particular, webapplet is a work in progress framework, which will allow what
is essentially an applet version of <a href="https://developer.mozilla.org/en/Prism">Mozilla Prism</a>. It currently uses WebKit
as the backend, although there is also a Gecko-based backend planned. The rest
of the applets listed are written in Python. In particular, the digg, meebo,
pandora, and rtm applets use the <a href="http://www.mozilla.org/unix/gtk-embedding.html">gtkmozembed</a> <a href="http://www.pygtk.org/pygtkmozembed/">Python bindings</a> to view the
respective websites. Here lies one of the problems of the web-enabling the GNOME
platform. This library is acknowledged to be <a href="https://wiki.mozilla.org/Gtkmozembed">less than ideal</a>. If you look at
the source code of the applets, you'll see that there are some ugly hacks in
order to make them work properly on Ubuntu systems. Webapplet is slated to
replace that ugliness.</p>
<p>One of my side projects is a status aggregator applet. It's supposed to
aggregate all of these social networking status feeds and also to sync all of
your personal statuses. One of said social networking websites returns complex,
site-specific HTML that obviously needs to be sanitized/canonicalized. The
easiest (but not necessarily most memory-efficient) method of performing that
task is to use the DOM. There is not currently a DOM library for the GNOME
platform. There is a <a href="http://libgdom3.googlecode.com/">libgdom3</a> project (written in Vala) which I believe <a href="http://article.gmane.org/gmane.comp.gnome.devel/4033">is
being / will be used</a> by the gnome2-globalmenu project, but it is unfinished.
There is also an old, unmaintained library called <a href="http://gdome2.cs.unibo.it/">gdome2</a> based on libxml2.
I'm not even sure if anyone actually uses that library anymore (its last release
was in 2003). I avoided using gtkmozembed and friends based on the experiences
described above. I settled on a promising feature request for WebKit: a

<a href="https://bugs.webkit.org/show_bug.cgi?id=16401">GObject/C DOM binding</a>. (As an aside, the WebKit bug linked is a fascinating
case study on several levels: conflicting coding standards, conflicting
developer personalities, and some interesting coding/reviewing.) It's very nice
- I can manipulate document fragments as if I were using JavaScript in a web
page, among other things. I eagerly await that feature being committed to
WebKit trunk.It is an important stepping stone when it comes to working with
the web.</p>
<p>Another side project that I'm currently working on is a developer dashboard
applet. It's kind of like the previous applet, except as applied to software
projects. I was originally going to write it in Vala, which meant that I would
have to write an interface to (at least) the <a href="https://help.launchpad.net/API">Launchpad API</a>, which meant
implementing at least three specifications in Vala: <a href="http://blogger.malept.com/2009/02/announcement-oauth-client-library.html">OAuth</a>, <a href="http://bitworking.org/projects/URI-Templates/">URI templates</a>,
and <a href="https://wadl.dev.java.net/">WADL</a>. I finished the first two (I haven't yet decided whether to release
my URI templates implementation as a separate library - the implementation plus
the test app is 451 source lines of code), and WADL is a very complex
specification. So, I decided to postpone working on the WADL library and instead
am currently working on a prototype applet using Python and <a href="https://help.launchpad.net/API/launchpadlib">launchpadlib</a>.
Implementations for those three specifications and many others (including
AtomPub) should be included in the GNOME platform if it wants to be
web-enabled.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-6701858987319306014?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/4XpT4haxjVs" width="1"/></div>
    </content>
    <updated>2009-02-23T06:59:10Z</updated>
    <published>2009-02-23T06:51:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="atompp"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="web services"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="oauth"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="gnome"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="atompub"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/02/gnome-platform-awn-and-cloud.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-1946091816368631378</id>
    <link href="http://mrooney.blogspot.com/2009/02/are-feeds-pre-cursor-to-webhooks.html" rel="related" title="On Webhooks, or The Push Revolution" type="text/html"/>
    <link href="http://blogger.malept.com/feeds/1946091816368631378/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=1946091816368631378" rel="replies" title="1 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1946091816368631378?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1946091816368631378?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/6fke7InFO9s/on-webhooks-or-push-revolution.html" rel="alternate" title="On Webhooks, or The Push Revolution" type="text/html"/>
    <title>On Webhooks, or The Push Revolution</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://mrooney.blogspot.com/">Mike Rooney</a> (Awn Extras developer, among other things) posted an article on
this "webhooks" idea. As I understand it, it's essentially a customizable,
web-based version of the "Subscribe to future XYZ via email" features (e.g.,
blog comments) that are currently around. The key phrase in this sort of
thinking is "push technology". Mike <a href="http://mrooney.blogspot.com/2009/02/are-feeds-pre-cursor-to-webhooks.html">asks</a>:</p>

<blockquote>So will webhooks replace the current paradigm that I'm using here, or
complement it?</blockquote>

<p>I believe that it will complement the current paradigm. We need to have a
transitional period (à la the old, rigid deadline for the US digital
television transition) between the current "polling" techniques and the "new and
shiny" (and arguably bandwidth-saving) push techniques. Take, for example,
Twitter <a class="footnote-reference" href="http://feeds.feedburner.com/malept-tech#webhooks-id2" id="webhooks-id1">[1]</a>. Let's assume that they didn't shut down their XMPP service, and
they built upon it an (XML-based) API so that a client (for the purposes of this
thought experiment, let's say my currently-in-vaporware Status Aggregator Awn
applet) could connect to a specific JID (AKA user name + domain + "resource", or
specific client) and listen for any new tweets, responses to my tweets, etc.,
replacing those messy timeout callbacks with messy async socket callbacks. The
main benefit that I see is a savings in bandwidth for both the consumer and the
producer. It avoids sending network requests every X minutes, which would add
up, given the number of services/feeds that a user subscribes to (including
mail). This actually leads me to my answer to Mike's other question:</p>

<blockquote>Are webhooks the next step of this evolution, or something else entirely?</blockquote>

<p>As evidenced by my thought experiment, I'd like to see XMPP as the next step, or
at minimum, the step after webhooks. While I love HTTP, and am a big fan of the
whole REST concept, it's hard for me to see it used as a facilitator for pushing
data, as opposed to pulling it. In fact, given the way that ETags and the like
are designed, HTTP is inherently a pull technology. The <a href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet model</a> feels
like a big kludge to me for that reason. XMPP, on the other hand, is designed to
be a push technology, and its supporters are actively marketing it as such. It's
also scalable, as servers like ejabberd and services like Google Talk can
attest. I suppose the bottleneck here is a catch-22: you need both services and
apps to buy into this particular implementation. Maybe when I finish one of the
myriad projects I have going at once, I'll take a crack at adding a push-based
web service client. Ideally, for configuration, all a user would have to do is
set their app-specific JID (e.g. <kbd>foo@example.com/bar_app</kbd>) in both the web
app and the client app, and it would "just work" (well, you would also have to
set the JID password somehow as well, but that's beside the point).</p>

<hr style="width: 50%;"/>

<p>Update (2009/02/18): It seems that I was subconsciously channelling a <a href="http://ajaxian.com/archives/beyond-rest-xmpp-pubsub">presentation on XMPP PubSub</a> that I read over six months ago.</p>

<hr style="width: 50%;"/>

<table>
<tbody style="vertical-align: top;">
<tr id="webhooks-id2"><td><a class="fn-backref" href="http://feeds.feedburner.com/malept-tech#webhooks-id1">[1]</a></td><td>I'm focusing on the one I actually use. Yes, I should be using identi.ca,
since I am a supporter of free and open services/protocols. It even has the
hallowed XMPP interface to microblogging. One of these days, I'll do what all
the cool kids™ are doing and post to both. It'll probably happen when I
(continue) work on the vaporware <a class="footnote-reference" href="http://feeds.feedburner.com/malept-tech#webhooks-id4" id="webhooks-id3">[2]</a> mentioned above.</td></tr>
<tr id="webhooks-id4"><td class="label"><a class="fn-backref" href="http://feeds.feedburner.com/malept-tech#webhooks-id3">[2]</a></td><td>It's vaporware until I push the source code onto a public server.</td></tr>
</tbody>
</table><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-1946091816368631378?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/6fke7InFO9s" width="1"/></div>
    </content>
    <updated>2009-02-18T20:47:21Z</updated>
    <published>2009-02-18T09:22:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="http"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="xmpp"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="web services"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="push"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="commentary"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/02/on-webhooks-or-push-revolution.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-7309510808979365855</id>
    <link href="http://blogger.malept.com/feeds/7309510808979365855/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=7309510808979365855" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/7309510808979365855?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/7309510808979365855?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/3l9YepzkriQ/announcement-oauth-client-library.html" rel="alternate" title="Announcement: OAuth Client Library" type="text/html"/>
    <title>Announcement: OAuth Client Library</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>For the past week or so, I've been working on various web services-related libraries, in the hopes of writing some sort of Launchpad dashboard applet for Awn. I think it would be nice to have new/recently changed bugs in Awn/Awn Extras at a glance in the dock, among other things. The first somewhat complete component is an <a href="http://oauth.net/">OAuth</a> <a href="https://launchpad.net/liboauth-client">client library</a>. I finished the initial implementation (plaintext signature only) in <a href="https://twitter.com/malept/status/1185889407">under nine hours</a>, and after the Awn 0.3.2 release (and a bit of frustration), I added HMAC-SHA1 signature support with the help of <abbr title="Request for Comments">RFC</abbr>s <a href="http://tools.ietf.org/html/rfc2104">2104</a> and <a href="http://tools.ietf.org/html/rfc2202">2202</a> (using GLib's checksum API). I've tested it with both the <a href="http://oauth.googlecode.com/">OAuth example Python server</a> and the <a href="https://help.launchpad.net/API">Launchpad API</a>.</p>
<p>Also included in the source are two small test programs: one tests the HMAC-SHA1 implementation, and the other tests the OAuth implementation in its entirety. The latter uses <kbd>.ini</kbd>-style config files to define keys/secrets/URIs/etc. for a service.</p>
<p>There are a few things that still need to be done, in order for it to be a "complete" implementation. I probably want to replace my handwritten HMAC-SHA1 implementation with a libgcrypt-based one (although I'd have to figure out how to create bindings for Vala), which would also enable me to add RSA-SHA1 signature support. Additionally, I should probably add an asynchronous equivalent to the current synchronous API. Finally, it would be nice if it integrated better with libsoup's existing authentication structure. Currently, I just generate an <code>Authorization:</code> header to be manually added.</p>
<p>The next component I'm working on is a WADL dispatcher library. I don't like the idea of a library generating code (as I presume <a href="https://wadl.dev.java.net/wadl2java.html">wadl2java</a> does). We'll see how this turns out.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-7309510808979365855?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/3l9YepzkriQ" width="1"/></div>
    </content>
    <updated>2009-02-16T07:12:30Z</updated>
    <published>2009-02-16T07:12:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="vala"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="web services"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="oauth"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="libsoup"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/02/announcement-oauth-client-library.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-307893140966992720</id>
    <link href="http://blogger.malept.com/feeds/307893140966992720/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=307893140966992720" rel="replies" title="2 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/307893140966992720?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/307893140966992720?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/s3NaLNpJ4cc/awn-032-release-postmortem.html" rel="alternate" title="Awn 0.3.2 Release Postmortem" type="text/html"/>
    <title>Awn 0.3.2 Release Postmortem</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>For those of you who don't know what a postmortem is in this context, it's
essentially a reflection of what happened in this release: what went right,
what went wrong, and what we'll try to do next time.</p>

<p>Before I begin, a lot of the history is from memory, so the facts may not be
100% correct.</p>

<h3>Background</h3>

<p>Back around July 2008 or so, we essentially had two branches:
stable/bugfix-only (0.2.7) and trunk (0.3.1). A few developers wanted to
release from the bugfix branch for the sake of the distributions, but since
work was well on its way in trunk, there were not many volunteers to lead the
effort. I volunteered to do so, and began merging bugfixes to the stable
branch, with the goal of releasing by around the end of August.</p>

<p>Unfortunately, there were three big roadblocks in my way: the infamous <kbd>make distcheck</kbd>, <a href="https://bugs.launchpad.net/bugs/194018">Bug 194018</a> (an intermittent problem with launching launchers
on docks not built with GNOME libraries, and <a href="https://bugs.launchpad.net/bugs/194431">Bug 194431</a>, "the trash bug".</p>

<p>For developers, I would guess that one of the most annoying things about
releases is the dreaded <kbd>make distcheck</kbd> command. This command makes sure
that if you run <kbd>make dist</kbd> to generate a tarball, that it compiles
correctly out-of-the-box. It took what felt like dozens of iterations to make
sure that certain files were in the tarball, ready to be installed by the
build system. But the most annoying part of the process was the part dealing
with internationalization (i18n). I18n is handled by the intltool/gettext
packages in Awn, and they expect files to be "just so", or else <kbd>make distcheck</kbd> fails with a semi-comprehensible error. With some help from
<a href="http://blog.sarine.nl/">Qball</a>, I managed to more-or-less get the trees into a releasable state.</p>
<p>The desktop-agnostic launcher bug was a pain to debug, as all it did was spit
out a cryptic error message to the console instead of launch the application,
and this only occurred with some launchers (varying between machines). Fortunately, <a href="http://moon-shiny.blogspot.com/">moonbeam</a> managed to write a fix for it in early August.</p>
<p>The trash bug was more complex in its own way. In GNOME 2.22, GNOME switched
virtual file system (VFS) libraries from GNOME VFS to the more desktop
agnostic GIO (part of GLib). Part of this conversion was that the trash
directory changed from <var>$HOME/.Trash</var> to the more complex <a href="http://www.freedesktop.org/wiki/Specifications/trash-spec">Freedesktop.org
standard</a> of <var>$XDG_DATA_HOME/Trash</var>. In comparison to the old trash
directory, which was just an intermediary directory prior to "permanent"
deletion, the new standard added a trash metadata directory (e.g. for the
"restore this file" feature). Now, the trash applet did not have a maintainer.
As I understand it, <a href="http://njpatel.blogspot.com/">Neil</a> ported it from the GNOME applets package as one of
the proof-of-concept Awn applets. By this time, Neil was (and still currently
is) very busy with his awesome (but unrelated) work at Canonical. Thinking
that this was a desktop-agnostic issue, I decided to take the bug. My first
attempt, merging in the new trash implementation from GNOME applets, failed
badly. My next move was to rewrite the entire thing in <a href="http://live.gnome.org/Vala">Vala</a>. My reasons for
doing this were twofold: I wanted to work on my skills in C#-like languages,
and I wanted the applet to be a bit more readable/maintainable for the next
person who would take up maintainership. Unfortunately, it took way to long to
write (through no fault of Vala's). The main problem was that the algorithm to
determine the number of files in the trash (an important part of the original
applet) is ridiculously complex in non-GIO libraries. This is due to the fact
that multiple volumes can have trash cans. By the time I figured out about
half of it, it was the end of August. Given the number of people subscribed to
the bug and commenting on it, plus the comments I saw on the forum, this was a
showstopper bug. I couldn't very well release without it in there, so the
deadline came and went, and there was no update to Awn in the fall Linux
distribution release.</p>

<p>I should note that there will be a happy ending to this bug - last month, I
managed to get trash support into <a href="https://launchpad.net/libdesktop-agnostic">libdesktop-agnostic</a>, and as soon as I
convert Awn to use libdesktop-agnostic, I will commit the Garbage applet.</p>

<h3>Releasing 0.3.2</h3>

<p>Fast forward to last month (January). One of the core developers (<a href="https://launchpad.net/~mhr3">mhr3</a>)
suggested that we do a snapshot release of trunk, since work on the rewrite
was well underway. Somewhat surprising to me, more developers agreed to help
with this release. This time, mhr3 was release manager (for obvious reasons).
For the rest of the month and the first week of February, bugfixes were
committed to the trunk branches of Awn and Awn Extras. There were also some
features added (I admit that I added at least one of them), but the most
notable one was the merging of the AWNLib 2.0 branch. I'll get back to that
shortly. People were testing applets and noting their functionality on a wiki
page, which helped with finding bugs.</p>

<p>By around February 6th, preparations were underway for the actual release.
mhr3 and <a href="http://gilir.wordpress.com/">gilir</a> were busy making sure that <kbd>make distcheck</kbd> worked for
both Awn and Awn Extras, and I was working on the release notes. <a href="http://jassmith.wordpress.com/">DBO</a>, a
developer for GNOME Do/Docky, suggested that we put some effort into doing a
little marketing, like they did with their recent 0.8 release. So, I started a
wiki page with a list of volunteers who would post to various news/forum
websites.</p>

<p>The day of release was interesting. Throughout, various people (including
myself) were in and out of the IRC channel doing stuff In Real Life. I managed
to finish the release notes (and get screenshots) with the help of the folks
in the channel, and gilir stayed up way past midnight local time to sign and
upload both the source tarball and the PPA packages. As soon as mhr3 gave the
go-ahead signal, the release announcements were sent to their respective news
sites.  I filed bugs in Gentoo for version bumps for both packages, to head
off any overzealous Gentoo + Awn users. I also notified the Mandriva packager
of the release, since I had his contact info handy. A few hours later, I
remembered that I had an OSNews account (for commenting on some article which
was probably tangentially related to Awn) and decided to submit an article. In
the morning, I was informed via IRC (on a non-Awn channel, no less) of its
<a href="http://osnews.com/story/20943/Awn_Awn_Extras_0_3_2_Released">publication</a>, with a surprising addition: a mini-review by one of the site's
editors, which was positive.</p>

<p>As of publication, my blog post announcing Awn/Awn Extras 0.3.2 has received
almost 5,500 pageviews (see screenshot). To put numbers on the data points in
the graph:</p>

<ul>
<li>Sunday: 312</li>
<li>Monday: 2,783</li>
<li>Tuesday: 953</li>
<li>Wednesday: 1,008</li>
<li>Thursday: 367</li>
</ul>

<a href="http://3.bp.blogspot.com/_-LcS-OEM6Fg/SZXNj4HoIcI/AAAAAAAAABw/5ZcE0_LlMmE/s1600-h/Awn-0.3.2-announcement-stats.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5302370152542118338" src="http://3.bp.blogspot.com/_-LcS-OEM6Fg/SZXNj4HoIcI/AAAAAAAAABw/5ZcE0_LlMmE/s320/Awn-0.3.2-announcement-stats.png" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 237px;"/></a>

<h3>What Went Wrong</h3>

<p>We should have reverted the AWNLib 2.0 branch merge. It caused more problems
than it solved: it was inevitable that applets would break, and that at least
one API change would be missed before release, especially given the amount of
time between the merge and the release.</p>

<p>Coordinating the news/forum releases went OK, but we ended up having two Digg
links, which probably spread out the total number of diggs, thereby lowering
the chance that it would hit the Digg front page.</p>

<p>I was naïve enough to think that Debian/Ubuntu users wouldn't immediately file
version bump bugs as some Gentoo users are prone to do. <a href="https://bugs.launchpad.net/bugs/327443">I was wrong</a>.</p>

<p>Additionally, too many Ubuntu users did not read that we already provide
binaries for Feisty through Jaunty (inclusive) - they seem to want to install
from source, which we do not recommend (unless they plan on doing development).</p>

<h3>What Went Right</h3>

<p>The release coordination in the channel went fairly smoothly, especially given
that we were all in different time zones.</p>

<p>Posting to OSNews was definitely a good thing. As you can see from the
screenshot, it was the highest referrer to the post.</p>

<p>It was nice that someone not associated with the project posted to reddit - it
was the second highest referrer. It was posted two days after the release, but
beggars can't be choosers.</p>

<h3>Next Steps</h3>

<ul>
<li>First and foremost, prepare for a 0.3.2.1 release for Awn Extras.</li>
<li>When we have a target date for 0.4.0, we should immediately branch, and said
branch should only contain merges approved by the release manager.</li>
<li>A 250-character summary of the new version (complete with reminders of what
the packages are) should be written for news sites, in addition to the
summary and the release notes.</li>
<li>Make sure to highlight that Ubuntu users do not have to install from source.</li>
<li>I need to get a Slashdot and a reddit account. I'm doing this under protest.</li>
<li>We need to make sure that there's only one "official" Digg post.</li>
<li>I should look into one of those omni-share-to-social-networks buttons, but
only for the big announcements. Those "share" buttons make me feel a bit
dirty.</li>
<li>We need to get some contact information for at least the packagers for
Fedora and OpenSUSE.</li>
<li>If I remember and have time, I need to learn how to use the OpenSUSE Build
Service.</li>
<li>Explicitly mention in the release notes that there is no need to file
version bump bugs in Debian/Ubuntu. Although, given past experience, I doubt
that the people filing these bugs would read that. On the other hand, it's
due diligence.</li>
</ul><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-307893140966992720?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/s3NaLNpJ4cc" width="1"/></div>
    </content>
    <updated>2009-02-13T19:47:34Z</updated>
    <published>2009-02-13T19:31:00Z</published><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/02/awn-032-release-postmortem.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-3044121279530110</id>
    <link href="http://blogger.malept.com/feeds/3044121279530110/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=3044121279530110" rel="replies" title="6 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3044121279530110?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3044121279530110?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/b9N39A4JmS0/awnawn-extras-032-released.html" rel="alternate" title="Awn/Awn Extras 0.3.2 Released!" type="text/html"/>
    <title>Awn/Awn Extras 0.3.2 Released!</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://2.bp.blogspot.com/_-LcS-OEM6Fg/SY9uUeNjjKI/AAAAAAAAABQ/XvJjlcCjTdo/s1600-h/Awn-0.3.2-screenshot-01.png"><img alt="[Awn image, courtesy of malept]" border="0" id="BLOGGER_PHOTO_ID_5300576584424721570" src="http://2.bp.blogspot.com/_-LcS-OEM6Fg/SY9uUeNjjKI/AAAAAAAAABQ/XvJjlcCjTdo/s400/Awn-0.3.2-screenshot-01.png" style="float: right; margin: 0 0 10px 10px; cursor: pointer; cursor: hand; width: 400px; height: 220px;" title="Licensed under CC-3.0-BY-SA-Unported"/></a>The Avant Window Navigator (Awn) and Awn Extras teams would like to announce the release of version 0.3.2. This represents a year's worth of bugfixes, performance improvements, and new applets. Note that the 0.2.8 release was cancelled, due to lack of developer interest. Our next major release, 0.4.0, will be a complete rewrite of the dock and applet API.</p>

<p>Avant Window Navigator is a dock for the Free Desktop which shows your launchers and open applications. It also contains support for extensions, via plugins for third-party applications, which communicate with the dock with DBus, and via applets, which allows for workspace switchers, system trays, clocks, etc., to be embedded in the dock. These applets can be written in C, Vala, or Python.</p>

<p>Awn currently requires compositing support in order to run. Window managers which support compositing include (but are not limited to) Metacity (part of GNOME), Xfwm4 (part of Xfce), KWin (part of KDE4.x), and Compiz. There are also standalone compositing managers, for window managers without support built-in: Cairo Compositing Manager and xcompmgr.</p>

<p>Awn Extras is a catch-all project which houses mainly third-party applets for use with Avant Window Navigator.</p>

<div><img alt="[Awn screenshot, courtesy of mhr3]" src="http://img7.imageshack.us/img7/9707/screenshot1pn1.png" style="width: 95%;" title="Licensed under the WTFPL"/></div>

<h3>Avant Window Navigator Notable Changes</h3>

<h4>User-Visible</h4>
<ul>
<li>We have made it easier to enable Awn to run when you log into your desktop - there is an "Automatically start Awn on login" option.</li>
<li>If you start Awn without a compositing manager present, a pop-up dialog will appear informing you that compositing is not currently enabled.</li>
<li>Most applet icons can now be customized by dragging and dropping an icon onto the applet in question. Note that this does not apply to tasks.</li>
<li>Better compatibility with Metacity.</li>
</ul>

<div><img alt="[Awn screenshot by h4writer]" src="http://img140.imageshack.us/img140/3125/schermafdruk1ki6.png" title="Licensed under the WTFPL"/></div>

<h4>Packager-specific</h4>
<ul>
<li>The (optional) Vala version dependency has been bumped to 0.5.4.</li>
<li>The location of the applet metadata files has changed, at the request of Debian. We have included a script (<kbd>awn-applets-migration</kbd>) which will migrate users' settings to point to the new location.</li>
</ul>

<h4>Applet Developers</h4>
<ul>
<li>You can now use cairo contexts/surfaces to paint text/images to AppletSimple-based applets.</li>
<li>There is now a standardized applet context menu API.</li>
<li>Advanced custom icon support via <a href="https://blueprints.launchpad.net/awn/+spec/awn-icons">AwnIcons</a></li>.
</ul>

<div><img alt="[Awn screenshot by onox]" src="http://img7.imageshack.us/img7/6954/sexyawn032kc8.png" style="width: 90%;" title="Licensed under the CC-3.0-BY-SA-Unported"/></div>

<h4>Known Issues</h4>
<p>These will probably be fixed in 0.4.0.</p>
<ul>
<li>Keyfile-based config is unstable. It works for the developer who wrote it well enough, but the GConf backend is currently the most stable configuration backend.</li>
<li>Autohide is still buggy.</li>
<li>Awn does not handle multiple screens very well.</li>
<li>You cannot move the dock to any other edge of the screen. It is currently fixed to the bottom.</li>
</ul>

<div><img alt="[Awn screenshot, courtesy of mrooney]" src="http://img5.imageshack.us/img5/3416/screenshotjq2.png" style="width: 90%;" title="Licensed under the WTFPL"/></div>

<h3>Awn Extras Notable Changes</h3>

<h4>New Applets</h4>
<ul>
<li>Animal Farm: Various animals tell your fortune.</li>
<li>Cairo Clock: a replacement for pyclock (due to license issues). It provides three themes, and (if python-dateutil and libgweather are installed) allows you to add additional clocks for different locations.</li>
<li>Comics!: A flexible comic strip viewer.</li>
<li>CPU Frequency Monitor: controls and monitors the CPU frequency (useful for laptops)</li>
<li>Desktop Manager: manages the desktop wallpaper for GNOME and Xfce.</li>
<li>Media Player: plays anything you drop on the applet.</li>
<li>ThinkHDAPS: monitors the accelerometer for IBM/Lenovo ThinkPad hard drives.</li>
<li>PyNot: a configurable notification area AKA system tray.</li>
<li>Remember The Milk: A simple interface to the web service.</li>
<li>To-do: A todo list.</li>
<li>Tomboy: A simple interface to the Tomboy application.</li>
</ul>

<div><img alt="[Awn screenshot by triggerhapp]" src="http://img9.imageshack.us/img9/1479/awnssjauntyvh2.png" title="Licensed under the WTFPL"/></div>

<h4>Changes to Applets</h4>
<ul>
<li>Battery Applet: rewritten, now requires HAL.</li>
<li>Cairo Menu: various fixes</li>
<li>Digital Clock: various fixes</li>
<li>Media Control: various fixes</li>
<li>Notification area: looks fancier now</li>
<li>Quit Applet: rewritten; supports the GNOME 2.24 quit behavioral changes</li>
<li>Shiny Switcher: various fixes</li>
<li>Terminal: various fixes</li>
<li>Volume Control: rewritten</li>
</ul>

<h4>Removed Applets</h4>

<ul>
<li>cairo-menu-classic (use Cairo Menu)</li>
<li>PyClock (license issues, use Cairo Clock)</li>
<li>tsclient (license issues)</li>
<li>Workspace Switcher (use Shiny Switcher)</li>
</ul>

<div><img alt="[Awn screenshot by h4writer]" src="http://img3.imageshack.us/img3/3959/schermafdruk4rn5.png" title="Licensed under the WTFPL"/></div>

<h4>Packager-specific</h4>
<ul>
<li>Animal Farm: new runtime dependency on the fortune binary.</li>
<li>Battery Applet: new runtime dependency on HAL via DBus.</li>
<li>Cairo Clock: optional runtime dependencies on libgweather (for the Locations.xml(.gz) file) and the python dateutil module.</li>
<li>CPU Frequency Monitor: optional runtime dependency on gnome-applets, for the cpufreq-selector binary.</li>
<li>PyNot: runtime dependency on python-xlib.</li>
</ul>

<h4>Applet Developers</h4>

<ul>
<li>AWNLib has been overhauled. It is now PEP8-compliant.
</li></ul>

<h4>Known Issues</h4>
<ul>
<li>Cairo Menu: Intermittent issue of submenus overlapping parents may still be present.</li>
<li>Cairo Menu and Places applets: Certain fonts/locales are broken.</li>
<li>Media Player: errors are not currently displayed.</li>
<li>Shiny Switcher: Switching window managers tends to result in inconsistent behavior.</li>
</ul>

<div><img alt="[Awn screenshot by moonbeam]" border="0" src="http://bayimg.com/image/manhnaabh.jpg" style="width: 95%;" title="Licensed under the CC-3.0-BY-SA-Unported"/></div>

<h3>Download</h3>
<p>Semi-official Ubuntu packages for various Ubuntu versions will be available at the <a href="https://launchpad.net/~awn-core/+archive/ppa">Awn Core PPA</a>. We are working with various distributions (Mandriva, Gentoo, Debian, Ubuntu) to update their packages. You can download the <a href="https://launchpad.net/awn/+download">source code at Launchpad</a> (<a href="https://edge.launchpad.net/awn-extras/+download">Awn Extras</a>) - instructions on how to <a href="http://wiki.awn-project.org/InstallingFromSource">install from source</a> are at our wiki (<a href="http://wiki.awn-project.org/Awn_Extras:Installation#Building_From_Source">Awn Extras</a>).</p>

<h3>About the Images</h3>
<ol>
<li>My dock, on an Ubuntu Hardy machine. I have running Cairo Menu, Show Desktop, Taskmanager/Launcher, Awn System Monitor, Animal Farm (with unfortunately a non-free image - this has been rectified for the release), and Digital Clock. The image is licensed under the Creative Commons 3.0-BY-SA (Unported).</li>
<li>mhr3's dock screenshot contains the Shiny Switcher, Weather, Taskmanager/Launcher, Battery, Media Player, and Notification Area applets. The image is licensed under the WTFPL.</li>
<li>h4writer's dock has Taskmanager/Launcher, Shiny Switcher, and Quit applets. The image is licensed under the WTFPL.</li>
<li>onox's dock screenshot contains the CPU Frequency Monitor, ThinkHDAPS, Taskmanager/Launcher, Cairo Clock, Volume Control, Battery, Weather, and Notification Area applets. The image is licensed under the Creative Commons 3.0-BY-SA (Unported).</li>
<li><a href="http://mrooney.blogspot.com/">mrooney</a>'s animal dock. This showcases the new, public domain images for Animal Farm, retrieved from the excellent <a href="http://openclipart.org/">Open Clip Art Library</a>. Also in the dock are the Weather and Terminal applets. The image is licensed under the WTFPL.</li>
<li>triggerhapp's dock is running on Ubuntu Jaunty. He is running the Cairo Menu, Taskmanager/Launcher, Separator, Volume Control, To-Do, Quit, and PyNot applets. Note the transparency in PyNot - this was achieved because support was finally added to GTK+ in version 2.15.0, available in Jaunty. To use it yourself, you need to run the RGBA version of PyNot and Jaunty (or equivalent distro version). The image is licensed under the WTFPL.</li>
<li>h4writer's second screenshot contains the Cairo Menu, Separator, Taskmanager/Launcher, Separator, Media Player, Media Icon (Play), Media Icon (Previous), Media Icon (Next), Separator, and Cairo Clock applets. The image is licensed under the WTFPL.</li>
<li><a href="http://moon-shiny.blogspot.com/">moonbeam</a>'s dock screenshot contains the Cairo Menu, Places, Taskmanager/Launcher, Shiny Switcher, Awn System Monitor, Comics, To-Do, CPU Frequency Monitor, Volume Control, Weather, and Calendar applets. The image is licensed under the Creative Commons 3.0-BY-SA (Unported).</li>
</ol>

<h3>More Information</h3>
<ul>
<li><a href="https://launchpad.net/awn">Awn on Launchpad</a></li>
<li><a href="https://launchpad.net/awn-extras">Awn Extras on Launchpad</a></li>
<li><a href="http://wiki.awn-project.org/">Awn Wiki</a></li>
<li><a href="http://planet.awn-project.org/">Planet Awn</a></li>
</ul><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-3044121279530110?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/b9N39A4JmS0" width="1"/></div>
    </content>
    <updated>2009-02-09T02:57:16Z</updated>
    <published>2009-02-08T22:23:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/02/awnawn-extras-032-released.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-227512813305068636</id>
    <link href="http://blogger.malept.com/feeds/227512813305068636/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=227512813305068636" rel="replies" title="4 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/227512813305068636?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/227512813305068636?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/7V7JuK7WUiE/regarding-awn-rewrite-04-status.html" rel="alternate" title="Regarding the Awn rewrite (0.4) status" type="text/html"/>
    <title>Regarding the Awn rewrite (0.4) status</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Yes, there is an Awn rewrite in progress. Here are the important parts (to me, anyway):</p>
<ul>
    <li>I hear that autohide works better than before (thanks to mhr3).</li>
    <li>If I have my way, the desktop-agnostic parts of Awn will work much better, via <a href="https://launchpad.net/libdesktop-agnostic">libdesktop-agnostic</a> (not integrated yet). Yes, code does exist!</li>
    <li>Taskmanager is now a separate applet. Launchers are still bundled with it.</li>
    <li>Drag/drop of tasks/launchers is in the works (thanks to h4writer). I still have my doubts about the usability aspect of it, though.</li>
    <li>
        For the most part, applets don't work, other than the taskmanager applet. Moonbeam informs me that the following applets work:
        <ul>
            <li>Cairo Menu (not classic)</li>
            <li>Shiny Switcher (currently has issues with side orientations)</li>
            <li>Awn System Monitor</li>
            <li>Awn Notification Daemon (which, I must point out, is <em>not</em> a notification area or system tray)</li>
        </ul>
    </li>
    <li>You can put the dock at different orientations.</li>
</ul>

<p>I am not going to list the wishlist items, because nothing is certain to make it into the rewrite unless someone actually codes it in.</p>

<p>The priority at the moment is to get the taskmanager in working shape. That's not really my line of expertise, so my priority is to get libdesktop-agnostic ready to replace my second attempt at a non-GNOME-specific dock. Of course, all of this is contingent upon the amount of time the developers have available. It seems at this point in time, we are either consumed with (paid) workloads, schoolwork/exams, or both. (I currently fall in the first category.) So, as I say over and over, there's no timeline for when this will all be done. It will probably be ready for release when Neil says it is.</p>

<p>Given that this is pretty much a complete rewrite, we (the developers) are not yet comfortable building binary packages for it. If you want to test it, you're going to have to <a href="http://wiki.awn-project.org/InstallingFromSource">build it from source</a>. Please pay attention to the entire build process (the "development" track) if you have not done this before. The <a href="https://code.launchpad.net/~awn-core/awn/trunk-rewrite-and-random-breakage">branch information</a> is on Launchpad.</p>

<p><strong>Update</strong>: mhr3 has kindly supplied a screenshot (licensed under the <a href="http://en.wikipedia.org/wiki/WTFPL">WTFPL</a>). This showcases the right-oriented dock, plus the action that happens when an applet crashes. No more white lines!</p>

<div style="margin: 0 auto;"><img alt="[Screenshot of Awn rewrite, courtesy of mhr3]" src="http://lh3.ggpht.com/_-LcS-OEM6Fg/SXE3EPJNMPI/AAAAAAAAAAM/bIam-j4BtU0/awn-rewrite-screenshot.png" style="margin: 0 auto;"/></div><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-227512813305068636?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/7V7JuK7WUiE" width="1"/></div>
    </content>
    <updated>2009-01-17T01:48:06Z</updated>
    <published>2009-01-16T21:46:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2009/01/regarding-awn-rewrite-04-status.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-3410933935026234805</id>
    <link href="http://blogger.malept.com/feeds/3410933935026234805/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=3410933935026234805" rel="replies" title="1 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3410933935026234805?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3410933935026234805?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/-FZxSbMOzXI/pear-and-debianubuntu.html" rel="alternate" title="PEAR and Debian/Ubuntu" type="text/html"/>
    <title>PEAR and Debian/Ubuntu</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>There seems to be something inherently wrong with how PEAR is packaged in Debian/Ubuntu (hence referred to as Debian, since Ubuntu doesn't modify the php5 source package with regards to PEAR). A bit of background: I'm currently trying to update the PHPUnit package to the current version (the Debian version seems to be stuck at 3.2.x — 3.3.9 was released the day this was written). I'm (re-)running <samp><a href="http://feeds.feedburner.com/packages.debian.org/src:dh-make-php">dh-make-php</a></samp> to accomplish this, mostly because there doesn't appear to be a very obvious way of upgrading PEAR packaging for Debian (given <samp>package.xml</samp>, etc.).  The problem is that PEAR is bundled with PHP on Debian, courtesy of the <samp><a href="http://packages.debian.org/php-pear">php-pear</a></samp> package. The one on Ubuntu's Hardy Heron is stuck at 1.6.1, whereas the current version (again, as of the day this was written) is 1.7.2. I can't use <kbd>dh-make-pear</kbd> to package the latest PHPUnit because the <samp>package.xml</samp> file requires PEAR 1.7.1 to parse it.</p>
<p>Now, <a href="https://help.ubuntu.com/community/PhpPear">Ubuntu's community documentation for PEAR</a> recommends upgrading PEAR via the <kbd>pear</kbd> command. That seems counterproductive to me. Given that <kbd>pear</kbd>, by default, installs to the same location as the package, I presume that PEAR and any other "pre-installed" package that was <kbd>pear</kbd>-upgraded would be reverted, in particular if there's a security release. This makes the sysadmin's job harder, obviously. I can't seem to find any rationale for this packaging behavior (admittedly, I didn't look very hard). But other distros get it right - Gentoo definitely packages the non-bundled PEAR versions, and from a cursory search, it appears that Fedora does as well.</p>
<p>So, what's my solution (for now)? Backport the latest stable PEAR into the <samp>php5</samp> source package.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-3410933935026234805?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/-FZxSbMOzXI" width="1"/></div>
    </content>
    <updated>2009-01-03T06:19:09Z</updated>
    <published>2008-12-30T05:51:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="packaging"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="debian"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="php"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="pear"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/12/pear-and-debianubuntu.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-1897287822370129595</id>
    <link href="http://blogger.malept.com/feeds/1897287822370129595/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=1897287822370129595" rel="replies" title="2 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1897287822370129595?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1897287822370129595?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/NefHnUvoZrA/howto-run-openid-authenticated-wsgi.html" rel="alternate" title="HOWTO Run an OpenID-authenticated WSGI Application (with AuthKit)" type="text/html"/>
    <title>HOWTO Run an OpenID-authenticated WSGI Application (with AuthKit)</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>According to Blogger, this is going to be post #100. I have no idea if that counts the various dead drafts in my queue or not.</p>
<p>Anyway, if you've been following my <a href="http://twitter.com/malept">Twitter stream</a>, you'll know that I've been playing with <a href="http://pylonshq.com/">Pylons</a>, and by extension, <a href="http://wsgi.org/">WSGI</a>.  One of the things that I'm interested in is OpenID-only authentication, mostly because I hate having to create new account names/passwords everywhere, and I'm too lazy/paranoid to use one of those password management extensions.  After several attempts, here is a short Python script which runs a sample web app that requires OpenID authentication for the <tt>/private</tt> path (via the <a href="http://authkit.org/">AuthKit</a> middleware).  The OpenID URL that was used to sign in is stored in the <code>environ['REMOTE_USER']</code> variable.  It was tested with AuthKit 0.4.2, Beaker 1.0.3, and Paste 1.7.2.</p>
<pre><code>
<a name="openid-1"/><span style="color: #408080; font-style: italic;">#!/usr/bin/env python</span>
<a name="openid-2"/><span style="color: #408080; font-style: italic;">#</span>
<a name="openid-3"/><span style="color: #408080; font-style: italic;"># Copyright (C) 2008  Mark Lee</span>
<a name="openid-4"/><span style="color: #408080; font-style: italic;">#</span>
<a name="openid-5"/><span style="color: #408080; font-style: italic;"># This program is free software: you can redistribute it and/or modify</span>
<a name="openid-6"/><span style="color: #408080; font-style: italic;"># it under the terms of the GNU General Public License as published by</span>
<a name="openid-7"/><span style="color: #408080; font-style: italic;"># the Free Software Foundation, either version 3 of the License, or</span>
<a name="openid-8"/><span style="color: #408080; font-style: italic;"># (at your option) any later version.</span>
<a name="openid-9"/><span style="color: #408080; font-style: italic;">#</span>
<a name="openid-10"/><span style="color: #408080; font-style: italic;"># This program is distributed in the hope that it will be useful,</span>
<a name="openid-11"/><span style="color: #408080; font-style: italic;"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="openid-12"/><span style="color: #408080; font-style: italic;"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="openid-13"/><span style="color: #408080; font-style: italic;"># GNU General Public License for more details.</span>
<a name="openid-14"/><span style="color: #408080; font-style: italic;">#</span>
<a name="openid-15"/><span style="color: #408080; font-style: italic;"># For a copy of the GNU General Public License, see</span>
<a name="openid-16"/><span style="color: #408080; font-style: italic;"># &lt;http://www.gnu.org/licenses/&gt;.</span>
<a name="openid-17"/>
<a name="openid-18"/><span style="color: #008000; font-weight: bold;">import</span> <span style="color: #0000FF; font-weight: bold;">os</span>
<a name="openid-19"/><span style="color: #008000; font-weight: bold;">from</span> <span style="color: #0000FF; font-weight: bold;">beaker.middleware</span> <span style="color: #008000; font-weight: bold;">import</span> SessionMiddleware
<a name="openid-20"/><span style="color: #008000; font-weight: bold;">from</span> <span style="color: #0000FF; font-weight: bold;">paste.auth.auth_tkt</span> <span style="color: #008000; font-weight: bold;">import</span> AuthTKTMiddleware
<a name="openid-21"/><span style="color: #008000; font-weight: bold;">from</span> <span style="color: #0000FF; font-weight: bold;">authkit.authenticate</span> <span style="color: #008000; font-weight: bold;">import</span> middleware, sample_app
<a name="openid-22"/><span style="color: #008000; font-weight: bold;">from</span> <span style="color: #0000FF; font-weight: bold;">paste.httpserver</span> <span style="color: #008000; font-weight: bold;">import</span> serve
<a name="openid-23"/>
<a name="openid-24"/>app <span style="color: #666666;">=</span> middleware(sample_app,
<a name="openid-25"/>                 enable<span style="color: #666666;">=</span><span style="color: #008000;">True</span>,
<a name="openid-26"/>                 setup_method<span style="color: #666666;">=</span><span style="color: #BA2121;">'openid'</span>,
<a name="openid-27"/>                 openid_store_type<span style="color: #666666;">=</span><span style="color: #BA2121;">'file'</span>,
<a name="openid-28"/>                 openid_store_config<span style="color: #666666;">=</span>os<span style="color: #666666;">.</span>getcwd(),
<a name="openid-29"/>                 openid_path_signedin<span style="color: #666666;">=</span><span style="color: #BA2121;">'/private'</span>)
<a name="openid-30"/>
<a name="openid-31"/>app <span style="color: #666666;">=</span> AuthTKTMiddleware(SessionMiddleware(app),
<a name="openid-32"/>                        <span style="color: #BA2121;">'some auth ticket secret'</span>);
<a name="openid-33"/>serve(app) <span style="color: #408080; font-style: italic;"># opens a socket at localhost:8080</span>
</code></pre><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-1897287822370129595?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/NefHnUvoZrA" width="1"/></div>
    </content>
    <updated>2008-11-24T07:29:12Z</updated>
    <published>2008-11-24T01:10:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="openid"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="wsgi"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="python"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/11/howto-run-openid-authenticated-wsgi.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-6286796293899494226</id>
    <link href="http://blogger.malept.com/feeds/6286796293899494226/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=6286796293899494226" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/6286796293899494226?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/6286796293899494226?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/pl3c8QU20v0/on-feeds-and-backwards-compatibility.html" rel="alternate" title="On Feeds and Backwards Compatibility" type="text/html"/>
    <title>On Feeds and Backwards Compatibility</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://blipbloop.net/2008/10/27/should-i-choose-rss-or-atom">Zach Hale notes</a>:</p>
<blockquote cite="http://blipbloop.net/2008/10/27/should-i-choose-rss-or-atom">
<p>Should I choose RSS or Atom?</p>
<p>Who cares? I don’t. I bet if I asked everyone I had contact info for, only a few would prefer one or the other (though hopefully one in particular).</p>
</blockquote>
<p>I've got a preference — <a href="http://atompub.org/">Atom</a>.  This is mostly because of the fact that's it's one <em>de jure</em> <a href="http://tools.ietf.org/html/rfc4287">standard</a>, as opposed to the at least five <em>de facto</em> RSS standards.</p>
<p>More to the point, I agree with the underlying argument:</p>
<blockquote>
And that being so, it makes no sense to put both standards (if not different versions of each) in the auto-discovery tags, especially for big sites like Flickr and consumer blogging software like WordPress. <em>[...]</em> For the rest of us, our feed readers could care less. So please stop confusing us.
</blockquote>
<p>Sadly, I also know the history behind this. Back in the "bad old days", feed readers did not follow the <a href="http://en.wikipedia.org/wiki/Robustness_Principle">robustness principle</a>. So, websites had to deploy a sort of "inverse robustness principle", to make sure that as many feed consumers as possible could read the content.  The good news is that today, any decent feed reader can read most feed formats.  The bad news is that no one (or not enough people) have bugged the feed producers (e.g., Flickr) into fixing it. The solution? File a bug and remind them of Postel's law. Of course, only file said bug if no one else has already done so — we don't need to annoy the developers.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-6286796293899494226?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/pl3c8QU20v0" width="1"/></div>
    </content>
    <updated>2008-10-28T03:45:37Z</updated>
    <published>2008-10-28T02:26:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="atom"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="feeds"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/10/on-feeds-and-backwards-compatibility.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-5427538692837454746</id>
    <link href="http://blogger.malept.com/feeds/5427538692837454746/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=5427538692837454746" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/5427538692837454746?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/5427538692837454746?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/bwy-K-b3gmM/on-version-control-best-practices.html" rel="alternate" title="On Version Control &quot;best practices&quot;" type="text/html"/>
    <title>On Version Control "best practices"</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Source code management, or version/revision control, is one of the most useful tools that a developer has, especially if this person works with others on a shared code base.  However, I've recently realized that some people don't understand what a good "commit"<sup><a href="http://feeds.feedburner.com/malept-tech#vcs-bp-commit">[1]</a></sup> entails.  (I'm not naming them, or whether they come from my professional or hobby "spheres of influence".)  It doesn't matter whether you're using Subversion, Bazaar, or even CVS.  There are a few principles that you should consider when you make a "public" commit (as opposed to a "local" commit, which is supported by distributed version control systems):</p>
<ul>
  <li>Limit your commit to <em>one</em> discrete idea.  This can be fixing a bug or adding a new feature.  Obviously, there is an exception when you happen to fix a bug by creating a new feature, but these instances tend to be rare.  The big reason for this principle is that developers are (generally speaking) not infallible.  If it turns out that the commit introduced bugs and/or regressions, it is easier to revert an entire revision (through whatever means your <abbr title="Source Code Management">SCM</abbr> provides), than to comb through the differences between the revisions in question for the "tainted" code.</li>
  <li>Good commit messages are key. Due to the way that most source code repository viewers work, it is considered good practice to summarize the commit in the first line, and then give a more detailed explanation in subsequent lines.  This is actually similar to how writing is taught (at least in the <abbr title="United States">US</abbr>): provide a topic sentence in which you summarize what you're going to write about, and then write your content.  In this case, though, you don't need a summary/closing statement at the end.</li>
  <li>
    If your project management and/or your <abbr title="Source Code Management">SCM</abbr> software supports it, annotate your commit as much as possible.  I'll give two examples as to what I mean:
    <ol>
      <li>Bazaar lets you annotate your commit with a couple of metadata flags when you invoke <kbd>bzr commit</kbd>: <kbd>--fixes=[BUG]</kbd> and <kbd>--author=[AUTHOR]</kbd>.  The flag <kbd>--fixes</kbd> lets you annotate which bug this revision is supposed to fix, and <kbd>--author</kbd> lets you specify the author of the code, e.g., if you are just committing a patch for someone else who doesn't have the proper permissions to do it themselves.</li>
      <li>There is a post-commit hook for Subversion, distributed with the Trac project management system, that allows tickets to be changed based on the existence of certain key phrases in a commit message.  For example, the message <q>Add foo.  Addresses #12345</q> adds a comment to ticket 12345 with that commit message and a link to the revision, whereas the message <q>Add bar (fixes #12345).</q> performs the same task as the "addresses" phrase, plus it sets the ticket status to "closed".  In my opinion, putting the "fixes" or "addresses" phrases at the end of the first line is preferable to putting them in the detailed explanation.</li>
    </ol>
  </li>
</ul>
<p>Hopefully, this is helpful to those who are new to using version control systems, and those people who are the "gatekeepers" of the repositories.  Comments and criticisms are welcome.</p>
<p><sup><a name="vcs-bp-commit">1</a></sup>: The difference between a "commit" and a "revision", in my view, is that a revision is a patch that has been committed to a repository, whereas a commit is the process.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-5427538692837454746?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/bwy-K-b3gmM" width="1"/></div>
    </content>
    <updated>2008-10-02T21:25:50Z</updated>
    <published>2008-10-02T19:23:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="vcs"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="commentary"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/10/on-version-control-best-practices.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-5299606610318370059</id>
    <link href="http://blogger.malept.com/feeds/5299606610318370059/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=5299606610318370059" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/5299606610318370059?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/5299606610318370059?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/UpRni0VCkBA/awn-psa.html" rel="alternate" title="Awn PSA" type="text/html"/>
    <title>Awn PSA</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><em>This is in response to something that I read on an <a href="http://brainstorm.ubuntu.com/idea/237/">Ubuntu Brainstorm page</a>.</em></p>
<p>Attention people who think that you need an <q>expensive video card</q> in order to run Avant Window Navigator, AKA Awn: I have a computer that I maintain with a <a href="http://en.wikipedia.org/wiki/Diamond_Multimedia#Monster3D">Diamond Monster Fusion video card</a> (tdfx Xorg driver) that runs Metacity + <a href="http://wiki.awn-project.org/Installation:Ubuntu#PPA">Awn 0.3.1</a> (on Ubuntu Hardy) just fine, with applets, on an everyday basis.</p>
<p><em>This has been a public service announcement by your somewhat friendly Awn/Awn Extras developer. You may now continue to go about your Interneting.</em></p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-5299606610318370059?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/UpRni0VCkBA" width="1"/></div>
    </content>
    <updated>2008-09-09T08:12:45Z</updated>
    <published>2008-09-09T08:03:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="linux"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/09/awn-psa.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-2361118750015212325</id>
    <link href="http://blogger.malept.com/feeds/2361118750015212325/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=2361118750015212325" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/2361118750015212325?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/2361118750015212325?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/NwiH6k8t2Wk/donate-to-lgm-and-other-conference.html" rel="alternate" title="Donate to LGM! (and other conference-related items)" type="text/html"/>
    <title>Donate to LGM! (and other conference-related items)</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>For the 1% of Open Source software enthusiasts who haven't yet seen this yet: <a href="http://pledgie.com/campaigns/613">Donate</a> to support the development of free/libre/open source graphics software by helping developers meet in real time, in person, (etc.) at the <a href="http://www.libregraphicsmeeting.org/2008">Libre Graphics Meeting 2008</a>!  I'm a big fan of Inkscape, because it lets me, as someone who is not very artistic (nor has very good (precise) hand-eye coordination) to create and manipulate logos and icons with ease.  My graphics programming skills are essentially non-existent, so I figured that I could be more useful by donating some cash to help a developer of one of the participating projects travel to the meeting.</p>

<p>And here's the shiny (but not flash-shiny) information-rich button that they're using to show how much more money they need to reach their goal: <a href="http://www.pledgie.com/campaigns/613"><img alt="Click here to lend your support to the Libre Graphics Meeting and make a donation at www.pledgie.com !" src="http://www.pledgie.com/campaigns/613.png?skin_name=chrome" style="border: 0; display: block;"/></a> (I should note for the American-income-tax-minded that this is a tax-deductable donation.)</p>

<p>On a somewhat related note, I'm planning on going to <a href="http://www.linuxfestnorthwest.org/">LinuxFest Northwest</a> 2008.  Fortunately for me, both the conference and the transportation is free. People who have either followed me for at least a year or have read through the archives know that <a href="http://blogger.malept.com/2007/04/report-linuxfest-northwest-saturday.html">I went last year</a>. I plan on going on Saturday again (this year, April 26), and I'm bringing my <a href="http://laptop.org/">XO laptop</a> with me.  If things work out right (i.e., my stupid printer decides to work), I'll have a nice, big <a href="https://launchpadlibrarian.net/8569458/awn-192.png">Awn icon</a> (again, thank you Inkscape!) taped to my bag.  It'll be an interesting experiment to see who recognizes it.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-2361118750015212325?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/NwiH6k8t2Wk" width="1"/></div>
    </content>
    <updated>2008-04-15T07:50:17Z</updated>
    <published>2008-04-15T07:16:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="conference"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="linuxfestnorthwest"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="graphics"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="FOSS"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/04/donate-to-lgm-and-other-conference.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-2550251372783206533</id>
    <link href="http://blogger.malept.com/feeds/2550251372783206533/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=2550251372783206533" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/2550251372783206533?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/2550251372783206533?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/CLRAE8B7CjM/awn-news-commentary-anc-20080321.html" rel="alternate" title="Awn News &amp; Commentary (ANC), 2008/03/21" type="text/html"/>
    <title>Awn News &amp; Commentary (ANC), 2008/03/21</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Obviously, I haven't done one of these in a while.  There are a few reasons for this.  For one, my workload has gotten a bit larger.  Additionally, Super Smash Bros. Brawl came out recently...it's ridiculous how much time that game eats up, and I'm only halfway through "adventure mode".</p>

<p>But seriously...both the forums and the bug tracker have been relatively quiet.  It's difficult to figure out exactly why that is.  However, there have been a few things that have happened in the past month or so.</p>

<p><a href="http://moon-shiny.blogspot.com/">Moonbeam</a> has a <a href="http://moon-shiny.blogspot.com/2008/02/simple-launcher.html">summary</a> of what happened in the week following my last post.  Additionally, he has been working on the framework for an applet that can use either the Gecko engine (used, most notably, in Firefox) or the WebKit engine (used in Safari) to render HTML.  Hopefully, this will alleviate some of the problems that people have had trying to get some of the HTML-based applets to run properly.  Unfortunately for us, moonbeam has become rather busy in real life lately, and so there may or may not be very much progress on the features/applets that he's been working on.</p>

<p><a href="https://launchpad.net/~andrewsomething/">Andrewsomething</a>, a longtime bug/answer triager for both Awn and Awn Extras, has finally taken the plunge (so to speak) and joined the <a href="https://launchpad.net/~awn-extras/">Awn Extras developer team</a>.  His first contribution is the <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1667">"Remember the Milk" applet</a>, and for his next undertaking, he is seeing if there's <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1691">any interest in a simple note applet</a>.</p>

<p>It is interesting to note that two new, experimental branches have appeared for Awn recently.  One, created by moonbeam, focuses on <a href="https://code.launchpad.net/~rcryderman/awn/awn-cairo-effects">refactoring the launcher/task/applet effects framework</a> so that it's easier to add new effects, and uses <a href="http://cairographics.org/">cairo</a>'s surfaces instead of Gtk+'s "pixel buffers" to manipulate the images.  This allows for more complex effects to be used, while keeping the overall effect smooth (and potentially hardware-accelerated).</p>

<p>The other branch was created by longtime Awn contributor <a href="https://launchpad.net/~h4writer/">haytjes</a>.  He's working on <a href="https://code.launchpad.net/~h4writer/awn/awn-customize-icons">fixing the "custom icon" feature</a>.  Currently, there are several bugs which prevent that feature from being very usable.</p>

<p>And finally, I'd like to give a quick <a href="http://planet.awn-project.org/">Planet Awn</a> roundup.  Moonbeam has a very good post on <a href="http://moon-shiny.blogspot.com/2008/03/why-things-are-way-they-are.html">the architecture of Awn</a> and why it's not possible (currently) to have features such as parabolic zoom.  Our fearless leader, Neil, has (finally) written a post about the <a href="http://njpatel.blogspot.com/2008/03/we-dont-discriminate-baby.html">recent Awn/Awn Extras release</a>, and our upcoming plans for the projects.  Hopefully, his presence on <a href="http://planet.gnome.org/">Planet Gnome</a> will continue to give Awn more publicity :).</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-2550251372783206533?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/CLRAE8B7CjM" width="1"/></div>
    </content>
    <updated>2008-03-21T18:12:14Z</updated>
    <published>2008-03-21T18:15:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/03/awn-news-commentary-anc-20080321.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-3751544669123693749</id>
    <link href="http://blogger.malept.com/feeds/3751544669123693749/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=3751544669123693749" rel="replies" title="3 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3751544669123693749?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/3751544669123693749?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/Vd9FZNY9k5w/awn-news-commentary-anc-20080215.html" rel="alternate" title="Awn News &amp; Commentary (ANC), 2008/02/15" type="text/html"/>
    <title>Awn News &amp; Commentary (ANC), 2008/02/15</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I'm taking a break from both trying to make a <code>&lt;tbody/&gt;</code> scroll vertically without a horizontal scrollbar present and playing "<a href="http://en.wikipedia.org/wiki/Link%27s_Crossbow_Training">Link's Crossbow Training</a>" to write up what's transpired in the past several days in Awn-land.</p>
<p>The <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=853">Awn Curves</a> branch was partially merged into awn-core-testing.  I say "partially merged" because meek is merging it in parts, due to the complexity.</p>
<p>The big event was when <a href="http://njpatel.blogspot.com/">Neil</a> finished reviewing the awn-core-testing and awn-extras-testing branches and merged them into their respective trunks.  Among the benefits is that users of <a href="http://wiki.awn-project.org/?title=DistributionGuides&amp;oldid=1073#Reacocard.27s_Ubuntu_Gutsy_Repository">reacocard's Ubuntu Gutsy repository</a> can now use the shiny new features that those of us on the (very) bleeding edge have been using for a while now.</p>
<p>I should also point out that Neil has added both <a href="https://launchpad.net/~rcryderman/">moonbeam</a> and myself to <a href="https://launchpad.net/~awn-core/">awn-core</a>, in recognition of our work on both the testing branches and our respective personal branches.  This means we have commit access to Awn's trunk branch and more bug/blueprint triaging privileges.</p>
<p>As a result of the big merge, we now have a new <a href="https://launchpad.net/awn/+milestones">roadmap</a>.  What used to be Neil's big rewrite for 0.3 (code-named <a href="https://code.launchpad.net/~njpatel/awn/fandabbydosy/">fandabbydosy</a>) has been spread out over several releases.  See the roadmap link for details.  One important item to mention is that we plan to release <a href="https://launchpad.net/awn/+milestone/0.2.4">version 0.2.4</a> of both Awn and Awn Extras on Monday (02/18).</p>
<p>In Awn Extras, most of the changes have been bugfixes.  A patch was added to the media-control applet for <a href="http://www.sacredchao.net/quodlibet/">Quod Libet</a> support.</p>
<p>Finally, I'm holding a contest for Awn users/enthusiasts.  In the near future, I'd like to have a post with screenshots and videos showing off all of the new features and applets in Awn/Awn Extras.  Unfortunately, I suck at doing that sort of thing myself. :)  So, I'm giving the Awn community the chance to show off their customized docks.</p>
<p>The only restriction on the screenshots and videos is that you license them under a <a href="http://creativecommons.org/">Creative Commons</a> license. I will, of course, attribute all media to their proper creators :) Ideally, the screenshots should be as hi-res as possible, but any resolution is welcome. The same goes for videos.</p>
<p>The deadline is Feb. 21, because I'd like to write the post by the end of next week. I'll choose a set of media that looks the nicest (with the help of the people in <a href="irc://irc.freenode.net/#awn">#awn</a>) and use that as the basis of my next Awn post.</p>
<p>So if you wish to participate, please post the URL to the media, the attribution information you wish to use (your name or nick), and which feature/applet you're highlighting on the <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1561">forum thread</a> or as a comment here.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-3751544669123693749?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/Vd9FZNY9k5w" width="1"/></div>
    </content>
    <updated>2008-02-15T23:11:51Z</updated>
    <published>2008-02-15T23:15:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/02/awn-news-commentary-anc-20080215.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-1802219619910203469</id>
    <link href="http://blogger.malept.com/feeds/1802219619910203469/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=1802219619910203469" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1802219619910203469?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1802219619910203469?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/7ik-aUQFImU/avant-window-navigator-news-and.html" rel="alternate" title="Avant Window Navigator News and Commentary, 2008/02/09" type="text/html"/>
    <title>Avant Window Navigator News and Commentary, 2008/02/09</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Given the lack of releases of Awn, I figure that there needs to be some record of what's happening in Awn-land ever since <a href="http://feeds.feedburner.com/2007/11/avant-window-navigator-021-released.html">we got version 0.2.1 of Awn and awn-extras out the door</a>, other than the mish-mash of posts on the <a href="http://awn.planetblur.org/">forums</a>.</p>

<h3>Awn</h3>
<p>Here's a (most likely incomplete) list of the new features in <a href="https://code.launchpad.net/~awn-testing/awn/awn-core-testing/">awn-core-testing</a>, mostly taken from the branch whiteboards:</p>
<ul>
<li><a href="https://bugs.launchpad.net/awn/+bug/134377">A simple mouse wheel task scrolling implementation</a></li>
<li><a href="https://bugs.launchpad.net/awn/+bug/158182">Sort applets in alphabetical order in awn-manager</a></li>
<li>Xfce support (build flag: <kbd>--with-desktop=xfce4</kbd>)</li>
<li>desktop-environment-agnostic support (build flag: <kbd>--with-desktop=agnostic</kbd>): this requires GLib 2.15.x and above, because it uses the new <a href="http://library.gnome.org/devel/gio/unstable/">GIO</a> library to replace the GnomeVFS code.</li>
<li><a href="http://library.gnome.org/devel/glib/stable/glib-Key-value-file-parser.html">GKeyFile</a> configuration backend support (build flag: <kbd>--without-gconf</kbd>): this adds a compile-time option to build a <kbd>.ini</kbd>-style configuration backend, instead of GConf.</li>
<li><a href="http://www.freedesktop.org/">Freedesktop.org</a> <a href="http://standards.freedesktop.org/desktop-entry-spec/latest/">Desktop Entry</a> wrapper API: Desktop entry files are used all over the place in both Awn and awn-extras, so I wrote an API that wraps both the GnomeDesktopItem and EggDesktopFile APIs, depending on your desktop preference.  Note that the Xfce backend also uses EggDesktopFile, because I found out that libxfce4util's desktop entry implementation was read-only, and read-write-support was needed.</li>
<li>File/directory monitoring wrapper API: The Gnome implementation uses GnomeVFS, the Xfce implementation uses ThunarVFS, and the agnostic implementation uses GIO.</li>
<li>Python bindings for all of the new APIs</li>
<li><a href="http://live.gnome.org/Vala">Vala</a> bindings (auto-detected at build time)
</li><li>remove the gnome-panel dependency by writing a <a href="http://www.flickr.com/photos/malept/1481298451/sizes/o/">launcher/desktop entry editor</a> in Python (including <a href="http://www.flickr.com/photos/malept/1486035168/sizes/o/">custom/stock icon chooser</a>)</li>
<li><a href="http://www.flickr.com/photos/malept/2076713863/">changed awn-manager applet interface</a></li>
</ul>

<p>Note that everything except the first two items are also in my <a href="https://code.launchpad.net/~malept/awn/desktop-agnostic/">desktop-agnostic branch</a>.</p>

<h3>awn-extras</h3>
<p>Since the 0.2.1 release, a number of new applets and other changes have occurred in the awn-extras tree.</p>
<h4>New applets</h4>
<ul>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1468">Affinity</a> (yes, <a href="http://affinity-search.googlecode.com/">that Affinity</a>)</li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1269">Arss</a> (Applet to view feeds)</li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1339">Awn Terminal</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1254">Cairo Menu</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1085">Clock/Calendar</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1086">Comic</a></li>
<li>Digg</li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1052">Digital Clock</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1467">File Browser Launcher</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=830">Last.FM</a></li>
<li>MiMenu</li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1533">Mount</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1048">Pandora</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1347">Places</a></li>
<li>PyClock</li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1402">Shiny Switcher</a></li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1495">Standalone Launcher, Taskmand, Taskmand-applet</a>: an alternative to the built-in launchers and task manager.</li>
<li><a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1224">Terminal Services</a></li>
</ul>
<h4>Other changes</h4>
<ul>
<li>Rewritten build system</li>
<li>Shared libraries for applets to use: <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1488">libawn-extras</a> (with python bindings) and <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1445">AWNLib</a> (for Python only)</li>
<li>The <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1440">GMail applet</a> has been renamed to the Mail applet and has been completely rewritten.  As a consequence, it no longer uses libgmail.</li>
<li>Stacks: experimental GUI</li>
<li>BlingSwitcher: Due to the lack of both a maintainer and a license, this applet will most likely be removed from the tree.  However, an archived copy will be linked on the forum and the wiki.</li>
</ul>

<h3>Distribution support</h3>
<p>Our resident Debian/Ubuntu packager, <a href="https://launchpad.net/~gilir/">gilir</a>, successfully got Awn (the dock) into the official Hardy repositories, specifically <tt>universe/gnome</tt>, as <kbd><a href="http://packages.ubuntu.com/hardy/source/avant-window-navigator">avant-window-navigator</a></kbd>.  Unfortunately, there are some QA problems with the awn-extras applets package, <kbd>awn-core-applets</kbd>, but gilir is working very hard to get that resolved before the package freeze.  He is also working on getting said packages into Debian sid.</p>
<p>Meanwhile, in Gentoo-land, there are official ebuilds for both Awn and awn-extras, named <kbd>gnome-extra/avant-window-navigator</kbd> and <kbd>gnome-extra/avant-window-navigator-extras</kbd>, respectively.  Since the xeffects overlay is defunct, I'm working with the team behind the <a href="http://forums.gentoo.org/viewtopic-t-652604.html">desktop-effects overlay</a> to get the awn-core-testing and awn-extras-testing branches in as working "live" ebuilds. Of course, this comes after I was alerted via an <a href="https://bugs.launchpad.net/awn-extras/+bug/187339">awn-extras bug</a> that one of the desktop-effects developers <a href="http://forums.gentoo.org/viewtopic-p-4795703.html?sid=93e5989cd802e9616a27d97cb1e79fef#4795703">described the build system</a> as <q>piss-poor</q>.  Being the author of the new build system, I was a bit offended.  Luckily, the lead developer for that overlay was more level-headed than the stereotypical Gentoo developer whose comment started it all.  I'm still waiting for an apology from said developer, but I'm not holding my breath.</p>

<h3>Wiki</h3>
<p>A community member has contributed a <a href="http://wiki.awn-project.org/">wiki</a> for our project.  We've been using it for both end-user documentation (<a href="http://wiki.awn-project.org/?title=Installation">Installation</a>, <a href="http://wiki.awn-project.org/?title=FAQ">FAQ</a>) and internal processes.  In particular, the applet developers have been collaborating on some <a href="http://wiki.awn-project.org/?title=Applets:DevelopmentGuidelines">applet development guidelines</a> which should be followed if a person would like their applet to be included in the awn-extras tree.</p>
<h3>Other</h3>
<p>In non-Awn/Awn Extras news, there have been reports that the <a href="http://www.beatniksoftware.com/gimmie">Gimmie</a> project has added <a href="http://awn.planetblur.org/?action=g_reply&amp;ID=1554">Awn applet support</a>, in addition to its current support for the gnome-panel.</p>
<hr/>
<p>The changes I've listed for Awn and AWN Extras are currently being reviewed so that they'll be merged into trunk in the near future.  In the meantime, you can grab the test packages from the <a href="https://launchpad.net/~awn-testing/+archive">Awn Testing Team's PPA</a> (for Ubuntu users), install Awn and Awn Extras from the desktop-effects overlay (for Gentoo users), or simply <a href="http://wiki.awn-project.org/?title=InstallingFromSource">install from source</a> (making sure that you uninstall any previous version of Awn/Awn Extras first!).</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-1802219619910203469?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/7ik-aUQFImU" width="1"/></div>
    </content>
    <updated>2008-02-15T05:35:52Z</updated>
    <published>2008-02-09T08:44:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="awn"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="avant-window-navigator"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/02/avant-window-navigator-news-and.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-4949994708440704265</id>
    <link href="http://blogger.malept.com/feeds/4949994708440704265/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=4949994708440704265" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4949994708440704265?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/4949994708440704265?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/olNbSFNwpIw/result-of-boredom.html" rel="alternate" title="The Result of Boredom" type="text/html"/>
    <title>The Result of Boredom</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.oreillymaker.com/link/5479/semantic-web/"><img alt="[Fake O'Reilly cover: &quot;Semantic Web: Making The Web Machine-Readable&quot;" src="http://farm3.static.flickr.com/2160/2224941561_f75d8d067e_o.jpg"/></a></p>
<p style="font-style: italic; font-size: smaller;">(<a href="http://www.flickr.com/photos/malept/2224941561/">@flickr</a>. Created at <a href="http://www.oreillymaker.com/">O'Reilly Maker</a> [Via <a href="http://ajaxian.com/archives/oreilly-maker">Ajaxian</a>].  Under a <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA license</a>.)</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-4949994708440704265?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/olNbSFNwpIw" width="1"/></div>
    </content>
    <updated>2008-01-28T08:28:43Z</updated>
    <published>2008-01-28T07:51:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="semantic web"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="humor"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/01/result-of-boredom.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-1048302431261880868</id>
    <link href="http://blogger.malept.com/feeds/1048302431261880868/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="http://www.blogger.com/comment.g?blogID=6932260&amp;postID=1048302431261880868" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1048302431261880868?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/1048302431261880868?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/zGjZzEYUBP4/openwrt-dnsmasq.html" rel="alternate" title="OpenWrt + dnsmasq" type="text/html"/>
    <title>OpenWrt + dnsmasq</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Note to self: the <a href="http://wiki.openwrt.org/">OpenWrt wiki</a>, particularly the <a href="http://wiki.openwrt.org/OpenWrtDocs/dnsmasq">dnsmasq page</a>, is a very useful resource for understanding why my XMPP server won't talk to the GMail or LiveJournal XMPP servers. (Hint: <tt>filterwin2k</tt> is a very bad configuration option for XMPP servers.  Stupid default option.)</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-1048302431261880868?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/zGjZzEYUBP4" width="1"/></div>
    </content>
    <updated>2008-01-23T09:33:10Z</updated>
    <published>2008-01-23T09:26:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="dns"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="router"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="xmpp"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="openwrt"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/01/openwrt-dnsmasq.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <category term="openid"/>
      <category term="sysadmin"/>
      <category term="html5"/>
      <category term="gentoo"/>
      <category term="old projects"/>
      <category term="open source"/>
      <category term="freedbacking"/>
      <category term="free culture"/>
      <category term="presentation"/>
      <category term="bazaar"/>
      <category term="firefox"/>
      <category term="lessig"/>
      <category term="zeroconf"/>
      <category term="windows xp"/>
      <category term="darcs"/>
      <category term="push"/>
      <category term="info440"/>
      <category term="xmingw"/>
      <category term="beryl"/>
      <category term="todo"/>
      <category term="pam"/>
      <category term="launchpad"/>
      <category term="devhub"/>
      <category term="review"/>
      <category term="X11"/>
      <category term="humor"/>
      <category term="xmpp"/>
      <category term="mysql"/>
      <category term="Xorg"/>
      <category term="bzr"/>
      <category term="security"/>
      <category term="semantic web"/>
      <category term="swig"/>
      <category term="FOSS"/>
      <category term="bloglines"/>
      <category term="graphics"/>
      <category term="freedback"/>
      <category term="reinstall"/>
      <category term="django"/>
      <category term="pytiger"/>
      <category term="trac"/>
      <category term="lecture"/>
      <category term="pygments"/>
      <category term="dns"/>
      <category term="atompub"/>
      <category term="software"/>
      <category term="html"/>
      <category term="mac"/>
      <category term="atom"/>
      <category term="openwrt"/>
      <category term="design"/>
      <category term="pear"/>
      <category term="genshi"/>
      <category term="Xming"/>
      <category term="ubuntu"/>
      <category term="pyglet"/>
      <category term="vcs"/>
      <category term="json"/>
      <category term="uw"/>
      <category term="svn"/>
      <category term="subversion"/>
      <category term="Xfce"/>
      <category term="deepestsender"/>
      <category term="screencast"/>
      <category term="feeds"/>
      <category term="atompp"/>
      <category term="cryptography"/>
      <category term="packaging"/>
      <category term="javascript"/>
      <category term="FUD"/>
      <category term="bsod"/>
      <category term="pidgin"/>
      <category term="spidermonkey"/>
      <category term="conference"/>
      <category term="libsoup"/>
      <category term="http"/>
      <category term="gnome"/>
      <category term="mingw"/>
      <category term="python"/>
      <category term="vala"/>
      <category term="wsgi"/>
      <category term="informatics"/>
      <category term="debian"/>
      <category term="windows"/>
      <category term="oauth"/>
      <category term="ape"/>
      <category term="avant-window-navigator"/>
      <category term="livecd"/>
      <category term="openpgp"/>
      <category term="awn"/>
      <category term="oink"/>
      <category term="linux"/>
      <category term="apache"/>
      <category term="powerpoint"/>
      <category term="router"/>
      <category term="php"/>
      <category term="bzr-gtk"/>
      <category term="howto"/>
      <category term="linuxfestnorthwest"/>
      <category term="ssh"/>
      <category term="venus"/>
      <category term="website"/>
      <category term="web services"/>
      <category term="commentary"/>
      <category term="s5"/>
      <category term="ad"/>
      <category term="databases"/>
      <category term="wikipedia"/>
      <category term="misconceptions"/>
      <category term="libdesktop-agnostic"/>
      <category term="cgi"/>
      <category term="fatal system error"/>
      <category term="bzr-svn"/>
      <category term="jruby"/>
      <category term="gmail"/>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2011-11-27T23:16:52Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6932260.post-5903908673780631275</id>
    <link href="http://blogger.malept.com/feeds/5903908673780631275/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
    <link href="https://www.blogger.com/comment.g?blogID=6932260&amp;postID=5903908673780631275" rel="replies" title="0 Comments" type="text/html"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/5903908673780631275?v=2" rel="edit" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6932260/posts/default/5903908673780631275?v=2" rel="self" type="application/atom+xml"/>
    <link href="http://feedproxy.google.com/~r/malept-tech/~3/MrBFfDiNtY0/thisll-be-interesting.html" rel="alternate" title="This'll be interesting..." type="text/html"/>
    <title>This'll be interesting...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I switched my DNS host from zoneedit.com to editdns.net, because ZoneEdit doesn't support <a href="http://en.wikipedia.org/wiki/SRV_record">DNS SRV records</a>.  They're needed for <a href="http://en.wikipedia.org/wiki/XMPP"><abbr title="Extensible Messaging and Presence Protocol (AKA Jabber)">XMPP</abbr></a> server-to-server federation support.  My XMPP address is &lt;<code>${my_<a href="http://en.wikipedia.org/wiki/Second-level_domain">second_level_domain</a>} at ${my_second_level_domain} dot com</code>&gt;.  Note that this is different from my email address.</p><div class="blogger-post-footer"><img alt="" height="1" src="https://blogger.googleusercontent.com/tracker/6932260-5903908673780631275?l=blogger.malept.com" width="1"/></div><img height="1" src="http://feeds.feedburner.com/~r/malept-tech/~4/MrBFfDiNtY0" width="1"/></div>
    </content>
    <updated>2008-01-17T02:11:49Z</updated>
    <published>2008-01-17T01:24:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="dns"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="website"/><feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blogger.malept.com/2008/01/thisll-be-interesting.html</feedburner:origLink>
    <author>
      <name>Mark</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/05923388824282852378</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6932260</id>
      <author>
        <name>Mark</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/05923388824282852378</uri>
      </author>
      <link href="http://blogger.malept.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://blogger.malept.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6932260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" rel="next" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/malept-tech" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
      <subtitle>Development/Computer-related Content.  Not much else to say, really.</subtitle>
      <title>Egocity: Developer's Edition</title>
      <updated>2010-11-12T00:42:27Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:17022</id>
    <link href="http://lazymalevolence.livejournal.com/17022.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=17022" rel="self" type="text/xml"/>
    <title>Quote of the Day</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><blockquote>Oh man, they must be Scientologists!</blockquote><br/><p>– Attributed to one of the three guys in front of me when I was walking past the <a href="http://en.wikipedia.org/wiki/Scientology_and_psychiatry" rel="nofollow" title="This is what Scientologists actually believe">anti-psychiatry exhibit</a>.</p></div>
    </content>
    <updated>2007-11-06T19:58:20Z</updated>
    <published>2007-11-06T19:58:20Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:16607</id>
    <link href="http://lazymalevolence.livejournal.com/16607.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=16607" rel="self" type="text/xml"/>
    <title>Cross-post</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://community.livejournal.com/seattle/4670180.html">Political Donations of Seattle Notables</a></p></div>
    </content>
    <updated>2007-08-14T10:57:55Z</updated>
    <published>2007-08-14T10:57:55Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:16314</id>
    <link href="http://lazymalevolence.livejournal.com/16314.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=16314" rel="self" type="text/xml"/>
    <title>So apparently...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.reallifecomics.com/archive/070416.html" rel="nofollow">I has a diploma</a>, or at least some sort of rolled-up paper with some signatures on it.  They're the same, right?</p></div>
    </content>
    <updated>2007-06-09T05:41:02Z</updated>
    <published>2007-06-09T05:41:02Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:15948</id>
    <link href="http://lazymalevolence.livejournal.com/15948.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=15948" rel="self" type="text/xml"/>
    <title>Thing(s) which piss me off greatly</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>(Part I of a multipart series)</p><br/><p>Printers which cannot distinguish between one and three sheets of paper going through the spooling thing at once (I am not an expert on printer jargon), thereby printing 5% of the page on one page, 5% on the second, and 90% on the third.  Which also screws up the double-sided print job you were trying to do in order to save paper.</p></div>
    </content>
    <updated>2007-04-18T12:41:47Z</updated>
    <published>2007-04-18T12:41:47Z</published>
    <category term="stupid-shit"/>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:15730</id>
    <link href="http://lazymalevolence.livejournal.com/15730.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=15730" rel="self" type="text/xml"/>
    <title>Urchins in the library</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>There are currently a bunch (~20) of urchins in the Suzzallo reading room who walked in to take a look at the desk of former Senator Warren G. Magnuson.  Why they did it, I have absolutely no idea.  These were definitely elementary school-aged ones, and even during my tenure in the public school system, I didn't learn very much about the famous senators Magnuson and Jackson in Washington State History class.</p></div>
    </content>
    <updated>2007-02-15T22:10:46Z</updated>
    <published>2007-02-15T22:10:46Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:15535</id>
    <link href="http://lazymalevolence.livejournal.com/15535.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=15535" rel="self" type="text/xml"/>
    <title>Superfluous</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I passed Brian AND Carl in number of tracks played on Last.fm. Go me!</p>
<p>...don't look at me like that, I have a right to be shallow every once in a while.</p></div>
    </content>
    <updated>2007-02-06T09:32:58Z</updated>
    <published>2007-02-06T09:32:58Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:15247</id>
    <link href="http://lazymalevolence.livejournal.com/15247.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=15247" rel="self" type="text/xml"/>
    <title>Comics Imitating Life</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.reallifecomics.com/archive/070201.html" rel="nofollow">This one</a> (particularly the last panel) describes me in general.</p>
<p><a href="http://xkcd.com/c214.html" rel="nofollow">This other one</a> also describes me (at times).  It also describes <span class="ljuser ljuser-name_sus7" style="white-space: nowrap; text-decoration: line-through;"><a href="http://sus7.livejournal.com/profile"><img alt="[info]" height="16" src="http://l-stat.livejournal.com/img/userinfo.gif?v=88.9" style="vertical-align: bottom; border: 0; padding-right: 1px;" width="16"/></a><a href="http://sus7.livejournal.com/"><b>sus7</b></a></span>.  I swear.  I've seen it happen.</p></div>
    </content>
    <updated>2007-02-02T02:56:08Z</updated>
    <published>2007-02-02T02:56:08Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:15059</id>
    <link href="http://lazymalevolence.livejournal.com/15059.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=15059" rel="self" type="text/xml"/>
    <title>Wow.</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I am continuously amazed at people's (in this case, college students about to graduate, or those that already have done so) general incapability to follow simple directions.</p></div>
    </content>
    <updated>2007-01-25T14:13:47Z</updated>
    <published>2007-01-25T14:13:47Z</published>
    <category term="human stupidity"/>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:14675</id>
    <link href="http://lazymalevolence.livejournal.com/14675.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=14675" rel="self" type="text/xml"/>
    <title>Re: Hot Job Market</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.tbray.org/ongoing/When/200x/2006/12/07/People" rel="nofollow">Hot Job Market</a>:</p>
<blockquote cite="http://www.tbray.org/ongoing/When/200x/2006/12/07/People">
It seems that everybody I’ve talked to in the last little while has found a way to work it into the conversation: “Oh, and I’m hiring; know any good developers?” Plus, the pace of calls from head-hunters has picked up. It’s about as hot as I can remember it being, ever, including the bubble.
</blockquote>
<p>...yeah, I must be looking in the wrong place.  Or maybe it's my lack of experience.  It doesn't help that I don't:</p>
<ol>
<li>Have any experience with <abbr title="Microsoft's next-generation software development environment">.NET</abbr> in particular — in glancing at the listings on <a href="http://seattle.craigslist.org/sof/" rel="nofollow">craigslist</a>, I see very little, if any, about Java, the one they teach here...not that I actually want to work with that.</li>
<li>Am unwilling to leave the Seattle area (don't get me wrong — I'm looking anywhere between Tacoma, Everett, and the Eastside, so long as I can get there by bus)</li>
</ol>
<p>...bleh.  This is just me ranting.  One of these days, I need to publicly publish my resume.</p></div>
    </content>
    <updated>2006-12-07T23:27:27Z</updated>
    <published>2006-12-07T23:27:27Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:14439</id>
    <link href="http://lazymalevolence.livejournal.com/14439.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=14439" rel="self" type="text/xml"/>
    <title>Oy</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Gah, election coverage consumed most of my night, just like it did two years ago.  DAMN YOU, TELEVISION!  At least it's less aggravating this year.</p></div>
    </content>
    <updated>2006-11-08T09:17:47Z</updated>
    <published>2006-11-08T09:17:47Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:14180</id>
    <link href="http://lazymalevolence.livejournal.com/14180.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=14180" rel="self" type="text/xml"/>
    <title>Yahoo! + Facebook?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.theregister.co.uk/2006/09/21/yahoo-facebook_acquisition_talks/" rel="nofollow">Yahoo! wants to buy Facebook - WSJ | The Register</a>:<blockquote cite="http://www.theregister.co.uk/2006/09/21/yahoo-facebook_acquisition_talks/">Yahoo! is in talks to buy Facebook, the social networking site for college- and schoolkids, the WSJ reports today.</blockquote>
<p>The <acronym title="Wall Street Journal">WSJ</acronym> <a href="http://proquest.umi.com/pqdweb?did=1131285281&amp;sid=4&amp;Fmt=3&amp;clientId=8991&amp;RQT=309&amp;VName=PQD" rel="nofollow">article</a> (via ProQuest) noted that Facebook had <q cite="http://lazymalevolence.livejournal.com/data/atom">held separate discussions with Microsoft and Viacom</q> previously.  Personally, if Facebook were to have sold out to Microsoft, I would have deleted all of my information as soon as it was announced.  I think it's just as bad to let a company like News Corp. to have a hold of that much personal information.  I'm not sure what to think of what will happen if Yahoo! ends up buying it.  Yes, it's also one of those giant companies, but they seem to have made Flickr and del.icio.us (some of their other relatively recent acquisitions) better services.</p>
<p>Discuss.</p></div>
    </content>
    <updated>2006-09-21T21:40:48Z</updated>
    <published>2006-09-21T21:40:48Z</published>
    <category term="social networking"/>
    <category term="facebook"/>
    <category term="yahoo"/>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:13892</id>
    <link href="http://lazymalevolence.livejournal.com/13892.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=13892" rel="self" type="text/xml"/>
    <title>(Primary) Election Day, mateys.</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It's a good thing I read the news (and look at the <a href="http://www.electoral-vote.com/" rel="nofollow">Electoral Vote</a> feed), otherwise I would have completely forgot about my silly absentee ballot.  I wonder what prompted them to add the "Signature Security Flap"...</p>
<p>In other news, <a href="http://www.talklikeapirate.com/piratehome.html" rel="nofollow">Yarr</a>.</p></div>
    </content>
    <updated>2006-09-19T21:53:14Z</updated>
    <published>2006-09-19T21:53:14Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:13695</id>
    <link href="http://lazymalevolence.livejournal.com/13695.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=13695" rel="self" type="text/xml"/>
    <title>Aargh.</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It's too damned early for jackhammers outside my window.</p></div>
    </content>
    <updated>2006-09-18T17:10:31Z</updated>
    <published>2006-09-18T17:10:31Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:13467</id>
    <link href="http://lazymalevolence.livejournal.com/13467.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=13467" rel="self" type="text/xml"/>
    <title>House, MD</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Season 3 of <cite>House, MD</cite> begins in an hour.  Hurrah!</p></div>
    </content>
    <updated>2006-09-06T01:58:40Z</updated>
    <published>2006-09-06T01:58:40Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:13205</id>
    <link href="http://lazymalevolence.livejournal.com/13205.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=13205" rel="self" type="text/xml"/>
    <title>I get to creep out everyone else because I am now officially creeped out</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a name="cutid1"/><p>I was talking to my dad today, and he mentioned the main feature article in this week's <cite>Seattle Weekly</cite> on rats.  Why did he bring this up, you may ask yourself.  Well, it just so happens that a few weeks ago, it seems that a rat crawled up <em>out of the sewer pipes and <strong>into the toilet bowl</strong></em>.  Needless to say, I was rather nervous the next time I had to use the facilities at home.  Damned toilet rats should <em>NOT</em> exist.</p><a name="cutid1-end"/></div>
    </content>
    <updated>2006-08-14T04:41:57Z</updated>
    <published>2006-08-14T04:41:57Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:12914</id>
    <link href="http://lazymalevolence.livejournal.com/12914.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=12914" rel="self" type="text/xml"/>
    <title>It's great living next to a bar</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Listening to the sound of someone retching outside my window for five minutes straight is just heavenly.</p></div>
    </content>
    <updated>2006-08-14T03:34:55Z</updated>
    <published>2006-08-14T03:34:55Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:12764</id>
    <link href="http://lazymalevolence.livejournal.com/12764.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=12764" rel="self" type="text/xml"/>
    <title>Too damn loud...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.thestranger.com/blog/2006/08/sky_nascar.php" rel="nofollow">Slog: The Stranger's Blog | Sky NASCAR</a>:<blockquote cite="http://www.thestranger.com/blog/2006/08/sky_nascar.php">It’s that time of year again! Every August, Seattle is treated to 4 days of being under attack by jet fighters in the form of the Blue Angels performing at Sea Fair. Aptly described by a friend as “sky NASCAR”, these giant wastes of taxpayers dollars whiz around the city at like 300 feet all weekend, scaring the bejeeezus out of everybody.</blockquote>
<p>Tip: You know it's too damn loud when you can't hear the music you're playing when they're flying over.</p>
<p>Why don't they just stick to <del>their area over I-90</del><ins>the Medina/Bellevue/Redmond area</ins>?</p></div>
    </content>
    <updated>2006-08-03T19:25:13Z</updated>
    <published>2006-08-03T19:07:40Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:12487</id>
    <link href="http://lazymalevolence.livejournal.com/12487.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=12487" rel="self" type="text/xml"/>
    <title>Grrr...</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Yarn + Rolling Computer Chairs = <em><strong>NO</strong></em></p></div>
    </content>
    <updated>2006-07-21T22:57:18Z</updated>
    <published>2006-07-21T22:53:27Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:12246</id>
    <link href="http://lazymalevolence.livejournal.com/12246.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=12246" rel="self" type="text/xml"/>
    <title>OMFG</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.youtube.com/watch?v=JSS3S3T25qw" rel="nofollow"><acronym title="Electric Light Orchestra">ELO</acronym> + Gene Kelly = awesome.</a></p></div>
    </content>
    <updated>2006-06-27T03:15:07Z</updated>
    <published>2006-06-27T03:15:07Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:11736</id>
    <link href="http://lazymalevolence.livejournal.com/11736.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=11736" rel="self" type="text/xml"/>
    <title>This week's Frazz</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.comics.com/comics/frazz/archive/frazz-20060501.html" rel="nofollow">Monday</a></li>
<li><a href="http://www.comics.com/comics/frazz/archive/frazz-20060502.html" rel="nofollow">Tuesday</a></li>
<li><a href="http://www.comics.com/comics/frazz/archive/frazz-20060503.html" rel="nofollow">Wednesday</a></li>
</ul>
<p>Am I the only one who thinks that Bedlamball seems an awful lot like <a href="http://en.wikipedia.org/wiki/Calvin_and_Hobbes#Calvinball" rel="nofollow">Calvinball</a>?</p></div>
    </content>
    <updated>2006-05-03T07:58:18Z</updated>
    <published>2006-05-03T07:58:18Z</published>
    <category term="comics"/>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:11439</id>
    <link href="http://lazymalevolence.livejournal.com/11439.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=11439" rel="self" type="text/xml"/>
    <title>Lunchtime Bliss</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Vietnamese sandwiches for lunch has got to be the best lunch food ever.</p></div>
    </content>
    <updated>2006-04-13T22:24:31Z</updated>
    <published>2006-04-13T22:24:31Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:11105</id>
    <link href="http://lazymalevolence.livejournal.com/11105.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=11105" rel="self" type="text/xml"/>
    <title>Bullet List</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><em>Note: some of this stuff is technical and should have gone <a href="http://lazymalevolence.blogspot.com/" rel="nofollow">here</a>, but it also deals with LJ <strong>and</strong> I don't really feel like making yet another post.</em></p><br/><ul><br/><li>New discovery: Drafts in LJ → set to "Private" access</li><br/><li><a href="http://www.epguides.com/JusticeLeague/" rel="nofollow">Justice League Unlimited</a> is ending.  Sad.</li><br/><li>I read about some <a href="http://community.livejournal.com/lj_dev/713549.html">interesting ways to grab data from LJ</a>.  My mind already has its gears turning on how to create an über-<acronym title="Personal Information Manager">PIM</acronym>/social network aggregator thing... unfortunately, it ideally requires one to input some other-website passwords in order to get the extra-cool stuff.  Privacy issues ensue.  Maybe I'll make it just for myself.</li><br/></ul></div>
    </content>
    <updated>2006-04-09T23:08:37Z</updated>
    <published>2006-04-09T23:08:37Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:10702</id>
    <link href="http://lazymalevolence.livejournal.com/10702.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=10702" rel="self" type="text/xml"/>
    <title>Forgotten E-Mail: "Mailing List Etiquette"</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><em>A little background - I wrote this after receiving three emails from three different people in my mailbox (within the course of about three hours) that contained exactly the same content.  I happened to forget that it was in my "Drafts" folder until now.  Edited only to look better.</em></p>
<p>To Whom it May Concern:</p>
<p>
I've just about had it with the way iSchool staff use the mailing lists that those that are in the school are "strongly encouraged" to subscribe to.  It appears that a significant number of those who post to the lists are not aware of the social norms that should be followed when performing such a task.  An example of one such occurrence was Feb. 11, when three different professors forwarded the same email to two mailing lists <sup><a href="http://students.washington.edu/marklee/images/ridiculous_email.png" rel="nofollow">[1]</a></sup>.  Utilizing Google, the iSchool's obsession, a set of useful links to mailing list etiquette pages can be found, but the first of which is sufficient <sup><a href="http://www.gweep.ca/~edmonds/usenet/ml-etiquette.html" rel="nofollow">[2]</a></sup>.  In reference to the example occurrence, this particular paragraph is relevant:
</p>
<blockquote>
<p>Should I "crosspost" to multiple lists?</p>
<p>
Almost always, the answer to this is no. Most mailing lists are topically disjoint, and there is very little that is equally appropriate for posting to a number of them. It can also be annoying, as usually subscribers will get a copy of your message for each list they're on that you post to -- more than two or three of those and you can have a lot of annoyed people knocking on your mailbox.
</p>
<p>
That said, there may be some occasional instances where it would be appropriate to post to a number of lists at once. If you think this is the case, then you should probably contact the owner of each list and make sure that they agree before proceeding.
</p>
</blockquote>
<p>
Hopefully, this will enlighten some people as to how to "work smarter, not harder" with regards to mailing lists.
</p>
<p>Thanks,</p>
<p>--</p>
<address>
Mark Lee<br/>
Informatics Major (2005-2007)<br/>
[REDACTED EMAIL ADDRESS]
</address></div>
    </content>
    <updated>2006-03-13T02:17:52Z</updated>
    <published>2006-03-13T02:17:52Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:10070</id>
    <link href="http://lazymalevolence.livejournal.com/10070.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=10070" rel="self" type="text/xml"/>
    <title>Classes I would like to take before graduating (non-major)</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>This is meant mostly for myself, as a reminder.</p>
<ul>
<li>MUSIC 331: History of Jazz</li>
<li>HIST 310: Science and Religion in Historical Perspective (if offered)</li>
<li>HIST 311: Science in Civilization: Antiquity to 1600</li>
<li>HIST 313: Science in Civilization: Physics and Astrophysics Since 1850 (if offered)</li>
<li>HIST 390: Colloquium in History and Science (if offered)</li>
<li>HSTEU 402: The Reformation (if offered)</li>
</ul></div>
    </content>
    <updated>2006-01-23T19:07:13Z</updated>
    <published>2006-01-23T19:07:13Z</published>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>urn:lj:livejournal.com:atom1:lazymalevolence:9873</id>
    <link href="http://lazymalevolence.livejournal.com/9873.html" rel="alternate" type="text/html"/>
    <link href="http://lazymalevolence.livejournal.com/data/atom/?itemid=9873" rel="self" type="text/xml"/>
    <title>INFO 300 rant - unsorted</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li>Don't tell me that I can drop a lab.  That will just make me lazier, and my grades <em>will</em> drop, guaranteed.</li>
<li><strong>Give me feedback on my midterm!</strong>  The only comment I ever saw on that stupid thing was "be more specific!"  I fully deserve the score I got, but at least <strong>justify</strong> why you're taking off points, seemingly at random.</li>
<li>I see the video of 10/25 that's in the shared course folder.  Why not make all of the videos of class that you take accessible to everyone like that? That way, I don't have to be in lecture, and you don't have to hear me eating, or drinking, or sleeping, because I only get a half-hour between my two 1.5 hour lectures to find food and/or do any sort of errand around south campus.  I don't really like commuting between the extremes of campus to begin with.</li>
<li><em>Please</em> change the titles of the webpages.  Not everything off the main pages are "Reading for Thursday".</li>
<li>Why must you be so hypocritical in that I must hand in physical copies of my assignments and labs, whereas I have to do my readings off of a popup-ridden library website full of PDFs which are either mis-rotated or illegible.  I can't stare at the computer for that long looking at one thing; I think it's a result of watching too much TV.</li>
<li>Don't put me in front of a computer for a "lab" for two hours where I have to "research" stuff about some hypothetical situation.  It's just plain stupid.  Nothing's going to get done, unless you happen to be a workaholic/<del>ass-kisser</del><ins>brown-noser</ins>/insanely bored person.</li>
</ul></div>
    </content>
    <updated>2005-11-16T10:12:59Z</updated>
    <published>2005-11-16T10:12:59Z</published>
    <category term="uw_info300_aut_2005"/>
    <source>
      <id>urn:lj:livejournal.com:atom1:lazymalevolence</id>
      <author>
        <name>lazymalevolence</name>
      </author>
      <link href="http://lazymalevolence.livejournal.com/" rel="alternate" type="text/html"/>
      <link href="http://lazymalevolence.livejournal.com/data/atom" rel="self" type="application/atom+xml"/>
      <link href="http://pubsubhubbub.appspot.com/" rel="hub" type="text/html"/>
      <subtitle>Yes, he finally sold out.</subtitle>
      <title>Craptasmagoria</title>
      <updated>2007-11-06T19:58:20Z</updated>
    </source>
  </entry>
</feed>

