<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for Omnifarious</title>
    <link>http://www.advogato.org/person/Omnifarious/</link>
    <description>Advogato blog for Omnifarious</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Mon, 12 May 2008 08:13:12 GMT</pubDate>
    <item>
      <pubDate>Tue, 6 May 2008 22:16:20 GMT</pubDate>
      <title>zanfur knows how to configure a network</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=83</link>
      <guid>http://omnifarious.livejournal.com/331657.html</guid>
      <description>&lt;p&gt;I was poking about on &lt;a href="http://www.trabantcoffee.com/" &gt;Trabant&lt;/a&gt;'s internal network and noticing a few interesting things.  It is a much better configured wireless network than most I've been on.  It's somewhat impressive even.&lt;/p&gt;
&lt;p&gt;So, I go ask the staff who does it.  One doesn't know and the other tells me a name that sounds familiar.  Says he always wears a Utilikilt.  I hunt down &lt;span class='ljuser' lj:user='zanfur' style='white-space: nowrap;'&gt;&lt;a href="" 'http://zanfur.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href="" 'http://zanfur.livejournal.com/'&gt;&lt;b&gt;zanfur&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;'s LJ profile and show it to her.  "Yep, that's him!".&lt;/p&gt;
&lt;p&gt;Well...  I have a few things I think could be done better about how this wireless network is set up, but not many.  And the level of attention to detail is way, way higher than I've seen on any other coffee shop's wireless network, even at places like Tully's.&lt;/p&gt;
&lt;p&gt;It's amusing to encounter people you already know, even indirectly, in random contexts.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Sat, 26 Apr 2008 14:14:11 GMT</pubDate>
      <title>I'm off to LinuxFest Northwest</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=82</link>
      <guid>http://omnifarious.livejournal.com/330509.html</guid>
      <description>&lt;p&gt;I'm off to &lt;a href="http://www.linuxfestnorthwest.org/" &gt;LinuxFest Northwest 2008&lt;/a&gt;.  I won't be speaking today, but I will be tomorrow.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Fri, 18 Apr 2008 18:20:59 GMT</pubDate>
      <title>My main workstation has died</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=81</link>
      <guid>http://omnifarious.livejournal.com/328988.html</guid>
      <description>&lt;p&gt;It died before, when I moved, and that was the power supply.  It's died again now, and I suspect this time that it's something more serious like the video card or possibly one or both of the CPUs frying from overheating.  The fans all turn on but the BIOS screen never comes up.&lt;/p&gt;
&lt;p&gt;I want to replace it.  The newer dual core AMD CPUs generate even less heat and are a lot faster.  But replacing it with technology that mirrors the level of current I sprung for when I bought what I have now would run me about $3000, and I don't have that and won't have it anytime really soon.  :-(&lt;/p&gt;
&lt;p&gt;My monitor also needs replacing.  It's a pretty nice LCD monitor from 2003, but it has problems.  The main problem is that it gets muddy when things are moving or changing quickly because the pixel change lag is fairly high.  The pixel change time is 25ms or so which means a maximum effective frame rate of 40 frames a second and anything faster is muddy.  It's not even that great for watching DVDs.  The secondary problem is that it is very slow (often a minute or more) to recognize that the video card is trying to bring it out of sleep mode.  I usually get frustrated and push the signal select button to force it, but it's irritating.&lt;/p&gt;
&lt;p&gt;Actually, scratch that, a pixel change rate of 25ms means an effective frame rate of 20 frames per second.  This is because a pixel should be at the color it's supposed to be for at least half the time in order for it not to be muddy.  20 frames per second means a possible change in pixel color every 50ms leaving a pixel that takes 25ms to change to be at the new value for 25ms before changing again.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Wed, 16 Apr 2008 21:17:13 GMT</pubDate>
      <title>I'm going to be a speaker at LinuxFest Northwest</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=80</link>
      <guid>http://omnifarious.livejournal.com/328236.html</guid>
      <description>&lt;p&gt;I'm going to be one of the people giving talks at &lt;a href="http://linuxfestnorthwest.org/" &gt;LinuxFest Northwest&lt;/a&gt; on April 27th. It's completely official now.  I'm &lt;a href="http://blug.org/fest2008/schedule.dxp" &gt;on the schedule&lt;/a&gt; and everything.&lt;/p&gt;
&lt;p&gt;Now I just have to get my material together and organized.  My talk is going to be about IPv6 and how ridiculously easy it is to set up a 6to4 tunnel under Linux.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Sun, 30 Mar 2008 21:13:11 GMT</pubDate>
      <title>I'm going to be giving a talk on IPv6!</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=79</link>
      <guid>http://omnifarious.livejournal.com/325013.html</guid>
      <description>&lt;p&gt;I'm going to be giving a talk on &lt;a href="http://www.ipv6.org/" &gt;IPv6&lt;/a&gt; and how easy it is to set up at &lt;a href="http://www.linuxfestnorthwest.org/" &gt;LinuxFest Northwest 2008&lt;/a&gt;! &lt;/p&gt;
&lt;p&gt;I've never done anything like that before, but I feel pretty confident I'll be able to pull it off well.  I've been in situations a few times in front of a whole ton of people and haven't done poorly, and this will be an exercise in high geekery and so I should be fine.&lt;/p&gt;
&lt;p&gt;I signed up for &lt;a href="http://www.pogolinux.com/news/lfnw_2008.php" &gt;the bus&lt;/a&gt; sponsored by &lt;a href="http://www.pogolinux.com/index.php" &gt;pogo linux&lt;/a&gt;, but if anybody is going and feels up for giving me a ride, that would be really good.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Thu, 13 Mar 2008 17:15:58 GMT</pubDate>
      <title>LJ got rid of basic accounts with no ads</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=78</link>
      <guid>http://omnifarious.livejournal.com/321505.html</guid>
      <description>&lt;p&gt;I've thought about the demise of LJ for awhile.  It's quite clear now from how the news wasn't mentioned in a news post, how it's being spun as 'making it easier for users to sign up' and various other things that LJ really doesn't care about it's users at all anymore.  This was really quite predictable from the moment they started accepting advertising at all.&lt;/p&gt;
&lt;p&gt;Brad Fitz, the person who started it all has &lt;a href="http://brad.livejournal.com/2368071.html" &gt;a nice post in which he makes the most excellent observation that it's the users that create the whole reason people want to visit the site in the first place&lt;/a&gt;.  This observation and a discussion of LJs legal status made me realize something.&lt;/p&gt;
&lt;p&gt;The modern corporate structure is a wholly inadequate means of expressing the values and desires of the stakeholders in an organization where most of the value of that organization is created by what a corporation would think of as "its customers".   Basically this legal framework has been shoehorned into serving a purpose it is wholly unsuited for because a corporation has only a very weak incentive to take the interests of all the people who create the stuff that enables its existence into account.  Those users have made a huge investment into the site and that investment is almost completely ignored by the modern corporate structure and repeatedly leads to disaster when the corporation makes decisions at odds with its most important investors, the users of the site that it is a caretaker of.&lt;/p&gt;
&lt;p&gt;User content sites need something other than a corporation, something where the organization is legally obligated to take the interests of those users into consideration as the most important factor in decisions made by the organization.  I'm going to have to think for awhile to see if I can think of a structure that would work.  It's tempting to think of some sort of trust or something quasi-governmental.  I prefer structures that naturally and with very little oversight or intervention align the interests of all the participants.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 10 Mar 2008 23:16:28 GMT</pubDate>
      <title>10 Mar 2008</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=77</link>
      <guid>http://www.advogato.org/person/Omnifarious/diary.html?start=77</guid>
    </item>
    <item>
      <pubDate>Mon, 10 Mar 2008 22:05:00 GMT</pubDate>
      <title>Looking for a job... again  *sigh*</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=76</link>
      <guid>http://omnifarious.livejournal.com/321025.html</guid>
      <description>&lt;p&gt;So, my job at &lt;a href="http://www.evri.com/" &gt;Evri&lt;/a&gt;&#xD;
also ended unexpectedly.  I was really enjoying that job,&#xD;
and had a lot of plans for stuff to do there to make their&#xD;
environment better.  But they weren't interested. &#xD;
&lt;em&gt;*sigh*&lt;/em&gt;&#xD;
&lt;p&gt;I did get a month's severance pay and a really nice&#xD;
letter of recommendation.  They felt kind of embarrassed&#xD;
because I was very clear about who I was and what sort of&#xD;
value I could bring to them and they decided they wanted&#xD;
something different.&#xD;
&lt;blockquote&gt;&lt;p&gt;I worked with Eric Hopper at Evri from&#xD;
November 2007 through February 2008. When Eric started, I&#xD;
was a contractor in the build/deployment area, and Eric was&#xD;
hired as Evri's build/deployment engineer. Later I came on&#xD;
as a permanent employee, organizationally as manager of a&#xD;
"Systems Engineering" group, including Eric.&#xD;
&lt;p&gt;Eric has a broad interest in and understanding of&#xD;
technology, and made&#xD;
insightful contributions to the team in many areas, both&#xD;
within and beyond his own domain. He has excellent design&#xD;
instincts, and takes the long view for the&#xD;
good of the product. He has good problem solving intuition,&#xD;
and his solutions to specific&#xD;
problems were invariably strong.&#xD;
&lt;p&gt;When tackling specific work, Eric typically takes a&#xD;
comprehensive approach:&#xD;
exhaustive analysis of existing systems and requirements,&#xD;
followed by detailed analysis of the project goals. At Evri&#xD;
his work was rock-solid, although not necessarily delivered&#xD;
within the time frame scoped for the project.&#xD;
&lt;p&gt;In my opinion, Eric can be most useful in an organization&#xD;
that can take&#xD;
advantage of his broad knowledge and interests, his&#xD;
experience in design and problem solving, and which places&#xD;
an emphasis on quality (or correctness, etc.) over&#xD;
quantity.&lt;/blockquote&gt;&#xD;
&lt;p&gt;It's a pretty nice letter and accurate.&#xD;
&lt;p&gt;Do any of you have ideas for places that would appreciate&#xD;
what I was good at and not care so much about what I wasn't?&#xD;
&lt;p&gt;So, I'm interested in several different kinds of jobs...&#xD;
&lt;p&gt;What I do really poorly is creative work that is very&#xD;
tightly constrained.  Scrum and agile methodologies that&#xD;
attempt to keep what your engineers are working on well in&#xD;
check don't fit well with how I prefer to work.  In fact,&#xD;
they are very stifling and I tend to work poorly when&#xD;
managed under them.&#xD;
&lt;p&gt;I do best with creative work where I have an extremely&#xD;
broad hand in deciding exactly what is to be done, when, how&#xD;
and how long it should take.  I can communicate well with&#xD;
others about ideas, and in some previous jobs I've written&#xD;
extensive documentation that allowed network level&#xD;
interoperability with what I created even after I was no&#xD;
longer there and available for questions.&#xD;
&lt;p&gt;I also do well in positions where I'm expected to teach&#xD;
other people how to do things.  I'm very good at&#xD;
communicating with technical people in a way that's firm but&#xD;
not combative and clearly not motivated by concerns over my&#xD;
personal position but instead by concerns over the overall&#xD;
efficiency of the process and/or organization I'm working&#xD;
for.  I would make a very good "He knows a whole ton of&#xD;
stuff, we should bring him in to help our engineers figure&#xD;
out how to solve this vexing problem." sort of consultant. &#xD;
I would make an absolutely horrible 'body shop' consultant.&#xD;
&lt;p&gt;I also do poorly with large systems that nobody&#xD;
understands but everybody still fixes without re-writing. &#xD;
But systems that receive regular refactoring and&#xD;
high-quality maintenance are generally fine.  I've had few&#xD;
problems pulling apart most Open Source projects and making&#xD;
needed changes to them.  But I did poorly when asked to do&#xD;
the same thing to the really crufty and spottily maintained&#xD;
code at Amazon.&#xD;
&lt;p&gt;My contributions to &lt;a href="http://www.selenic.com/mercurial/" &gt;Mercurial&lt;/a&gt; have&#xD;
frequently been problems that people generally didn't quite&#xD;
realize existed until I fixed them.&#xD;
&lt;p&gt;I do OK with rote procedures that require little creative&#xD;
input.  I frequently spend most of my spare time figuring&#xD;
out ways to automate such procedures so that I have less&#xD;
busywork to do.  This is a lot of what I did at Regence.  I&#xD;
have thought of getting into more systems engineering type&#xD;
roles because in larger shops much of what they do is like&#xD;
this.&#xD;
&lt;p&gt;Another thing I'd do well is coming up with novel&#xD;
solutions to hard problems and implementing them just well&#xD;
enough to prove that they could work.  Many of my personal&#xD;
projects fall into this category.  I tend to get bored with&#xD;
them after proving they could work though, but I'm happy to&#xD;
explain them in detail to others.&#xD;
</description>
    </item>
    <item>
      <pubDate>Mon, 10 Mar 2008 01:04:46 GMT</pubDate>
      <title>Time change and computers</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=75</link>
      <guid>http://omnifarious.livejournal.com/320979.html</guid>
      <description>&lt;p&gt;I woke up this morning and discovered my computer had a really different idea of what time it was from my watch and bedside clock.  I didn't know the time change was due and it took me a bit to figure out what was up.  At first I figured I just mis-remembered what I saw on the bedroom clock before I wandered in to read my email.  :-)&lt;/p&gt;
&lt;p&gt;I like running computers that keep their time internally in UTC and simply have a database of silly timezone rules that they apply before displaying the time.  That's as it should be.  It's irritating to me to realize that most people still set their BIOS clocks to local time.&lt;/p&gt;
&lt;p&gt;I think the world ought to run on UTC and we should just keep in mind that people in different parts of the world wake up at different times.  :-)  And certainly any time stored anywhere ought to be stored in UTC and simply formatted for the right timezone on display.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 26 Feb 2008 05:04:55 GMT</pubDate>
      <title>I've been a bit inspired, but also sick</title>
      <link>http://www.advogato.org/person/Omnifarious/diary.html?start=74</link>
      <guid>http://omnifarious.livejournal.com/319597.html</guid>
      <description>&lt;p&gt;I've been pretty sick, but in the few productive hours I've had today and over the weekend, I've been working on this project I've been suddenly inspired to do, mostly because of the investigation required for me to write &lt;a href="http://omnifarious.livejournal.com/318992.html" &gt;this post on Thrift, D-Bus and RPC&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've been wanting a self-describing binary data format that's simpler and less ugly than ASN.1.  I also wanted one in which an extremely fast parser could be built for fixed-length data structures known at compile time.  Either through the use of an IDML (which would be optional) to generate code, or crazier techniques like template meta-programming in C++.&lt;/p&gt;
&lt;p&gt;Anyway, I've finished a very preliminary first pass at a parser in &lt;a href="http://www.python.org/" &gt;Python&lt;/a&gt;.  I've called the whole concept &lt;a href="http://hg.omnifarious.org/~hopper/inbus/" &gt;InBus&lt;/a&gt; after &lt;a href="http://www.freedesktop.org/wiki/Software/dbus" &gt;D-Bus&lt;/a&gt; from which it borrows a lot of ideas.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hg.omnifarious.org/~hopper/inbus/file/tip/inbus.py" &gt;Python code for InBus parser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hg.omnifarious.org/~hopper/inbus/file/8ecb08252c8a/new-encoding.txt" &gt;Documentation of type tag meanings.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are several things I would change about this parser, and a few features I would like to add.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Selected data types are currently variable length and I would like to introduce a '&lt;code&gt;&amp;lt;&lt;em&gt;count&lt;/em&gt;&amp;gt;&lt;/code&gt;' syntax for annotating these types with a length and thereby making them fixed-length.  I would like to add this capability to the arbitrary precision integer type, the binary blob type, the string type and the array type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It needs a type for time that very explicitly states that the time is represented as a arbitrary-precision integer that encodes an offset (positive or negative) in seconds from some base time in UTC.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I would sort of like to incorporate &lt;a href="http://developers.facebook.com/thrift/" &gt;Thrift&lt;/a&gt;'s idea of field tags so data structures could be upgraded in a backwards compatible way.&lt;/p&gt;
&lt;p&gt;My current idea for this is a variant of the tuple type that would require a field tag after every type element in the tuple.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, that parser is inefficient.  Ideally it would build up the parse as one or more calls to Python's &lt;code&gt;struct.unpack&lt;/code&gt; each of which would unpack multiple values.  Right now, though &lt;code&gt;struct.unpack&lt;/code&gt; is used fairly heavily it only ever (well, my fancy arbitrary precision integer parser not-withstanding) unpacks one element in any call.&lt;/p&gt;
&lt;p&gt;Lastly, right now, it expects the type value to be immediately preceded by a type spec.  That's a design mistake.  The type spec and type value should be handled separately except for the 'variant' type.&lt;/p&gt;
&lt;p&gt;This brings me to another couple of features I think would be interesting, but very tricky.  It would be nice if 'variant' types could refer to a previously used 'variant' type.  Partly for efficiency reasons, and partly for better clarity since one use of the variant type is to record information present in various derived classes of some base class.  It would also enable encoding recursive data structures in a saner way.  Additionally it might be nice to be able to refer to previously decoded values in some way for data structures that couldn't fit into a strict tree.&lt;/p&gt;
&lt;p&gt;On interesting thing, I think you could conceivably use this type tag system to describe IP packet layouts or other binary formats that have existed previously.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
