<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>James Willcox</title>
 <link href="http://snorp.net/blog/atom.xml" rel="self"/>
 <link href="http://snorp.net/"/>
 <updated>2011-12-16T08:32:46-08:00</updated>
 <id>http://snorp.net</id>
 <author>
   <name>James Willcox</name>
   <email>snorp@snorp.net</email>
 </author>

 
 <entry>
   <title>Using direct textures on Android</title>
   <link href="http://snorp.net/2011/12/16/android-direct-texture.html"/>
   <updated>2011-12-16T12:30:00-08:00</updated>
   <id>http://snorp.net/2011/12/16/android-direct-texture</id>
   <content type="html">&lt;p&gt;I've been working at &lt;a href=&quot;http://mozilla.com&quot;&gt;Mozilla&lt;/a&gt; on &lt;a href=&quot;http://www.mozilla.org/en-US/mobile/&quot;&gt;Firefox Mobile&lt;/a&gt; for a few months now. One of the goals of the new &lt;a href=&quot;http://lucasr.org/2011/11/15/native-ui-for-firefox-on-android/&quot;&gt;native UI&lt;/a&gt; is
to have liquid smooth scrolling and panning at all times. Unsurprisingly, we do this by drawing into an OpenGL texture and moving it around on the screen. This is pretty fast until you run out of content
in the texture and need to update it. Gecko runs in a separate thread and can draw to a buffer there without blocking us, but uploading that data into the texture is where problems arise. Right now
we use just one very large texture (usually 2048x2048), and glTexSubImage2D can take anywhere from 25ms to 60ms. Given that our target is 60fps, we have about 16ms to draw a frame. This means we're guaranteed to miss at least one frame every time we upload, but likely more than that. What we need is a
way of uploading texture data asynchronously (and preferably quicker). This is where direct textures can help.&lt;/p&gt;

&lt;p&gt;If you haven't read Dianne Hackborn's recent posts on the Android graphics stack, you're missing out (&lt;a href=&quot;https://plus.google.com/105051985738280261832/posts/2FXDCz8x93s&quot;&gt;part 1&lt;/a&gt;, &lt;a href=&quot;https://plus.google.com/u/0/105051985738280261832/posts/XAZ4CeVP6DC&quot;&gt;part 2&lt;/a&gt;). The window compositing system she describes (called SurfaceFlinger) is particularly interesting because it is close to the problem we have in Firefox. One of the pieces Android uses to to draw windows is the gralloc module. As you may have guessed, gralloc is short for 'graphics alloc'. You can see the short and simple API for it &lt;a href=&quot;https://github.com/android/platform_hardware_libhardware/blob/master/include/hardware/gralloc.h&quot;&gt;here&lt;/a&gt;. Android has a wrapper class that encapsulates access to this called &lt;code&gt;GraphicBuffer&lt;/code&gt;. It has an even nicer API, found &lt;a href=&quot;https://github.com/android/platform_frameworks_base/blob/master/include/ui/GraphicBuffer.h&quot;&gt;here&lt;/a&gt;.  Usage is very straightforward. Simply create the &lt;code&gt;GraphicBuffer&lt;/code&gt; with whatever size and pixel format you need, lock it, write your bits, and unlock. One of the major wins here is that you can use the &lt;code&gt;GraphicBuffer&lt;/code&gt; instance from any thread. So not only does this reduce a copy of your image, but it also means you can upload it without blocking the rendering loop!&lt;/p&gt;

&lt;p&gt;To get it on the screen using OpenGL, you can create an &lt;code&gt;EGLImageKHR&lt;/code&gt; from the &lt;code&gt;GraphicBuffer&lt;/code&gt; and bind it to a texture:&lt;/p&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;c&quot;&gt;&lt;span class=&quot;cp&quot;&gt;#define EGL_NATIVE_BUFFER_ANDROID 0x3140&lt;/span&gt;
&lt;span class=&quot;cp&quot;&gt;#define EGL_IMAGE_PRESERVED_KHR   0x30D2&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;GraphicBuffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;buffer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;GraphicBuffer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;PIXEL_FORMAT_RGB_565&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                                          &lt;span class=&quot;n&quot;&gt;GraphicBuffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;USAGE_SW_WRITE_OFTEN&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
                                          &lt;span class=&quot;n&quot;&gt;GraphicBuffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;USAGE_HW_TEXTURE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;unsigned&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;bits&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;buffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GraphicBuffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;USAGE_SW_WRITE_OFTEN&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;bits&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// Write bitmap data into &amp;#39;bits&amp;#39; here&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;buffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;unlock&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// Create the EGLImageKHR from the native buffer&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;EGLint&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eglImgAttrs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EGL_IMAGE_PRESERVED_KHR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EGL_TRUE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EGL_NONE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EGL_NONE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;EGLImageKHR&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;img&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eglCreateImageKHR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;eglGetDisplay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EGL_DEFAULT_DISPLAY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;EGL_NO_CONTEXT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                                    &lt;span class=&quot;n&quot;&gt;EGL_NATIVE_BUFFER_ANDROID&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                                    &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;EGLClientBuffer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;buffer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getNativeBuffer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt;
                                    &lt;span class=&quot;n&quot;&gt;eglImgAttrs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// Create GL texture, bind to GL_TEXTURE_2D, etc.&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// Attach the EGLImage to whatever texture is bound to GL_TEXTURE_2D&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;glEGLImageTargetTexture2DOES&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GL_TEXTURE_2D&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;The resulting texture can be used as a regular one, with one caveat. Whenever you manipulate pixel data, the changes will be reflected on the screen immediately after &lt;code&gt;unlock&lt;/code&gt;. You probably want
to double buffer in order to avoid problems here.&lt;/p&gt;

&lt;p&gt;If you've ever used the Android NDK, it won't be surprising that &lt;code&gt;GraphicBuffer&lt;/code&gt; (or anything similar) doesn't exist there. In order to use any of this in your app you'll need to resort to
&lt;code&gt;dlopen&lt;/code&gt; hacks. It's a pretty depressing situation. Google uses this all over the OS, but doesn't seem to think that apps need a high performance API. But wait, it gets worse. Even after jumping
through these hoops, some gralloc drivers don't allow regular apps to play ball. So far, testing indicates that this is the case on Adreno and Mali GPUs. Thankfully, PowerVR and Tegra allow it, which covers a fair number of devices.&lt;/p&gt;

&lt;p&gt;With any luck, I'll land the patches that use this in Firefox Mobile today. The result should be a much smoother panning and zooming experience on devices where gralloc is allowed to work.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Android = Linux-on-anything-with-a-screen</title>
   <link href="http://snorp.net/2011/02/10/android-is-linux.html"/>
   <updated>2011-02-10T15:24:05-08:00</updated>
   <id>http://snorp.net/2011/02/10/android-is-linux</id>
   <content type="html">&lt;p&gt;Here we are in 2011. Obviously, the year of the Linux desktop, right? You'd hope so. It's not like there hasn't been plenty of time to make it happen. &lt;a href=&quot;http://redhat.com&quot;&gt;Red Hat&lt;/a&gt;, &lt;a href=&quot;http://canonical.com&quot;&gt;Canonical&lt;/a&gt;, &lt;a href=&quot;http://novell.com&quot;&gt;Novell&lt;/a&gt;, and many other companies and individuals have been working hard on it for quite a while. And yet, very few inroads have been made. Sure, &lt;a href=&quot;http://dell.com/ubuntu&quot;&gt;Dell&lt;/a&gt; has been selling Ubuntu on some netbooks with limited success, but that is hardly a victory.&lt;/p&gt;

&lt;p&gt;In 2007, &lt;a href=&quot;http://google.com&quot;&gt;Google&lt;/a&gt; unveiled the Linux-based Android smartphone platform. The first phone wasn't released until a year later in 2008, along with the Android source code. Now, in Q4 2010, Android is the &lt;a href=&quot;http://uk.reuters.com/article/2011/01/31/oukin-uk-google-nokia-idUKTRE70U1YT20110131&quot;&gt;best-selling smartphone operating system in the world&lt;/a&gt;, surpassing Symbian, BlackBerry, Windows Mobile, and yes even iOS. In 2 years, it went from zero to total domination, with no signs of slowing down. Not everyone agrees that Android is the best smartphone OS (&lt;em&gt;ahem&lt;/em&gt;, &lt;a href=&quot;http://daringfireball.net&quot;&gt;Gruber&lt;/a&gt;), but it's impossible to say that it isn't a success. And it uses Linux. In fact, I believe you could say that Android is the most successful and widely deployed Linux product ever. So why haven't we standardized on it for other non-smartphone uses? It would require some work, but at least there is &lt;em&gt;some&lt;/em&gt; chance it could work out.&lt;/p&gt;

&lt;p&gt;Initially I was going to try to call out all of the infuriating things about developing on desktop Linux, but I got tired. All of that has been said elsewhere by people smarter than me. The main reason I'm really behind Android is that it dramatically reduces the amount of fragmentation. It's just not possible for a hardware vendor like AMD or NVIDIA to support the multitude of distros out there. If you told those guys they only had to support a couple versions of Android, they would be able to deliver much higher quality of support.&lt;/p&gt;

&lt;p&gt;The Eclipse IDE, Dalvik VM, and Android application framework are all great assets and deliver a far superior development experience over standard Linux. You get that for free. If Java isn't your bag, though, you can always use the &lt;a href=&quot;http://developer.android.com/sdk/ndk/index.html&quot;&gt;Native Development Kit&lt;/a&gt; to write in C, C++, &lt;a href=&quot;http://monodroid.net/&quot;&gt;C#&lt;/a&gt;, or whatever you want. I would love to see Clutter on Android, for instance. And Node.js/gjs. Or any number of other great projects.&lt;/p&gt;

&lt;p&gt;It's already possible to run Android on a PC via the &lt;a href=&quot;http://www.android-x86.org/&quot;&gt;Android-x86&lt;/a&gt; project. They've added basic mouse support, as well as hardware accelerated OpenGL ES2 via Mesa (on Intel hardware). I have a Cr-48 running it here, and it works amazingly well. Even wifi works.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Yeah, I'm a Rails fanboy now</title>
   <link href="http://snorp.net/2009/04/27/yeah%2C-i%27m-a-rails-fanboy-now.html"/>
   <updated>2009-04-27T00:00:00-07:00</updated>
   <id>http://snorp.net/2009/04/27/yeah,-i'm-a-rails-fanboy-now</id>
   <content type="html">&lt;p&gt;A lot of my day job now involves working with &lt;a href=&quot;http://rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt;.  At first I wasn&amp;#8217;t sure how much I would like Rails or ruby, given that I had been doing a lot of C#/C/whatever desktop work before.  Not surprisingly, though, I&amp;#8217;ve become quite addicted.  The test-driven nature of development is a welcome change &amp;#8212; most desktop apps I worked on didn&amp;#8217;t even have tests.  The Rails community has done a great job of banging automated testing into people&amp;#8217;s heads.  Almost every tutorial, book, or random blog post I&amp;#8217;ve seen emphasizes the importance of good automated tests.  Hopefully it has helped decrease the instances of &amp;#8216;snorpage&amp;#8217;, but perhaps my co-workers would disagree&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;Anyway, I love Rails so much that I&amp;#8217;ve converted my blog from &lt;a href=&quot;http://www.wordpress.org&quot;&gt;Wordpress&lt;/a&gt; to &lt;a href=&quot;http://www.enkiblog.com&quot;&gt;Enki&lt;/a&gt;.  Enki is more of a create-your-own-blog construction kit than a turn-key solution like Wordpress.  That was one of the main reasons I chose it over &lt;a href=&quot;http://typosphere.org&quot;&gt;Typo&lt;/a&gt; or &lt;a href=&quot;http://mephistoblog.com&quot;&gt;Mephisto&lt;/a&gt; &amp;#8212; I wanted to be able to easily hack on&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;I wrote a quick and dirty script to help me import the Wordpress posts into Enki.  Any fellow Enki hackers can grab it &lt;a href=&quot;http://github.com/snorp/enki/raw/0a3a9692f6ccc849a42a1c979641bcb7b386d6ba/import-wp&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fun with Studio</title>
   <link href="http://snorp.net/2009/02/13/fun-with-studio.html"/>
   <updated>2009-02-13T00:00:00-08:00</updated>
   <id>http://snorp.net/2009/02/13/fun-with-studio</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been working on a new project now for a while called &lt;a href=&quot;http://susestudio.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SUSE&lt;/span&gt;&lt;/span&gt; Studio&lt;/a&gt;.  Essentially it is a web interface which allows you to build your own customized version of &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SUSE&lt;/span&gt;&lt;/span&gt;.  You can select packages, do some configuration, and even add your own&amp;nbsp;branding.&lt;/p&gt;
&lt;p&gt;I created a media center appliance to see how hard it would be.  The appliance is based on &lt;a href=&quot;http://www.opensuse.org&quot;&gt;openSUSE&lt;/a&gt; 11.1, and boots right into the excellent &lt;a href=&quot;http://elisa.fluendo.com/&quot;&gt;Elisa Media Center&lt;/a&gt;.  You can download the image &lt;a href=&quot;http://snorp.net.nyud.net/files/Elisa_Media_Center-0.0.1.oem.tar.gz&quot;&gt;here&lt;/a&gt;.  The tarball contains one file, which you can &amp;#8216;dd&amp;#8217; to a &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;&lt;/span&gt; storage device.  We&amp;#8217;re working on writing a small application to make this part&amp;nbsp;easier.&lt;/p&gt;
&lt;p&gt;On the first boot it will do some one-time setup like repartition and resize the disk, install &lt;a href=&quot;http://www.nvidia.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NVIDIA&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; or &lt;a href=&quot;http://ati.amd.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ATI&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; video drivers (if appropriate), and setup&amp;nbsp;X.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://snorp.net.nyud.net/files/Elisa_Media_Center-0.0.1.oem.tar.gz&quot;&gt;&lt;img src=&quot;http://susestudio.com/images/built-with-web.png&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://snorp.net.nyud.net/files/Elisa_Media_Center-0.0.1.oem.tar.gz&quot;&gt;Download Elisa Media Center&amp;nbsp;Appliance&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>New Job</title>
   <link href="http://snorp.net/2008/12/15/new-job.html"/>
   <updated>2008-12-15T00:00:00-08:00</updated>
   <id>http://snorp.net/2008/12/15/new-job</id>
   <content type="html">&lt;p&gt;For quite a while I had been working on &lt;a href=&quot;http://www.novell.com/products/thinclient/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SUSE&lt;/span&gt;&lt;/span&gt; Linux Enterprise Thin Client&lt;/a&gt;, which is Novell&amp;#8217;s diskful Thin Client solution.  It had a lot of challenging aspects, not least of which was fitting a minimal &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt; environment + apps onto 128MB of flash.  That work is mostly wrapping up, though, and I&amp;#8217;ve moved to a new&amp;nbsp;team.&lt;/p&gt;
&lt;p&gt;At the beginning of the month I started working on &lt;a href=&quot;http://susestudio.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SUSE&lt;/span&gt;&lt;/span&gt; Studio&lt;/a&gt;, which is a web-based appliance builder for &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SUSE&lt;/span&gt;&lt;/span&gt;.  I wanted to get out of my comfort zone a little, and it hasn&amp;#8217;t disappointed there.  We&amp;#8217;re using RoR, which I am really enjoying so far.  Ruby was ridiculously easy to pick up.  Rails confused me at first with the amount of magic that it does behind-the-scenes, but there is a lot of information on how that works so getting up to speed wasn&amp;#8217;t too bad.  I bought &lt;a href=&quot;http://pragprog.com/titles/rails3/agile-web-development-with-rails-third-edition&quot;&gt;&lt;em&gt;Agile Web Development with Rails&lt;/em&gt;&lt;/a&gt; which has been very helpful as&amp;nbsp;well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Slashdot looking for open proxies?</title>
   <link href="http://snorp.net/2008/08/25/slashdot-looking-for-open-proxies%3F.html"/>
   <updated>2008-08-25T00:00:00-07:00</updated>
   <id>http://snorp.net/2008/08/25/slashdot-looking-for-open-proxies?</id>
   <content type="html">&lt;p&gt;I saw the following somewhat-strange line in my web server logs&amp;nbsp;today:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
216.34.181.45 - - [25/Aug/2008:10:23:51 -0500] &quot;GET http://tech.slashdot.org/ok.txt HTTP/1.0&quot; 401 523 &quot;-&quot; &quot;libwww-perl/5.812&quot;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That web server is running on the IP of my home router.  The requesting IP appears to be a Slashdot machine.  My guess is that they are trying to find out who accesses their site through an open proxy.  But why?  Is there another reason they might send a request like that?  Do they ban proxies if they find&amp;nbsp;one?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;UPDATE&lt;/span&gt;&lt;/span&gt;:&lt;/strong&gt; Apparently, they do in fact ban open proxies (according to &lt;a href=&quot;http://linux.slashdot.org/faq/com-mod.shtml&quot;&gt;this&lt;/a&gt;).  Supposedly a lot of comment spam comes from them.  I wonder if it would help blogs at all to do something&amp;nbsp;similar?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>novell-bugzilla.user.js updates</title>
   <link href="http://snorp.net/2008/08/25/novell-bugzilla.user.js-updates.html"/>
   <updated>2008-08-25T00:00:00-07:00</updated>
   <id>http://snorp.net/2008/08/25/novell-bugzilla.user.js-updates</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve updated the Novell Bugzilla Autologin greasemonkey script again.  Just click &lt;a href=&quot;http://www.snorp.net/files/novell-bugzilla.user.js&quot;&gt;here&lt;/a&gt; to upgrade your current version or install it for the first time.  You of course need greasemonkey&amp;nbsp;installed.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve removed the &amp;#8220;go to login page&amp;#8221; step.  It now just logs in directly via &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;AJAX&lt;/span&gt;&lt;/span&gt; and refreshes your current page.  It has also been rewritten to use jQuery (and jQuery.blockUI) which cleaned things up a bit and gives a nicer &amp;#8220;please wait&amp;#8221; message&amp;nbsp;:)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>More Mango</title>
   <link href="http://snorp.net/2008/07/11/more-mango.html"/>
   <updated>2008-07-11T00:00:00-07:00</updated>
   <id>http://snorp.net/2008/07/11/more-mango</id>
   <content type="html">&lt;p&gt;A while back I &lt;a href=&quot;http://www.snorp.net/log/2008/02/26/mango-lassi/&quot;&gt;posted&lt;/a&gt; about &lt;a href=&quot;http://0pointer.de/blog/projects/mango-lassi.html&quot;&gt;Mango Lassi&lt;/a&gt; and how awesome it was compared to synergy.  I still think it is awesome, but every now and then something would freak it out and cause the association between machines to drop.  I&amp;#8217;ve fixed at least one cause of that problem now and published it in a git repo here: &lt;a href=&quot;http://www.snorp.net/git/mango-lassi.git/&quot;&gt;http://www.snorp.net/git/mango-lassi.git/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BTW&lt;/span&gt;&lt;/span&gt;, thanks for all of the great comments on the &lt;a href=&quot;http://www.snorp.net/log/2008/07/04/nas-for-home/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NAS&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; situation.  I&amp;#8217;m looking at several of the options mentioned there along with a couple others.  I think I&amp;#8217;ve ruled out rolling my own, though, as I don&amp;#8217;t want yet another linux box to&amp;nbsp;maintain.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>NAS for Home</title>
   <link href="http://snorp.net/2008/07/04/nas-for-home.html"/>
   <updated>2008-07-04T00:00:00-07:00</updated>
   <id>http://snorp.net/2008/07/04/nas-for-home</id>
   <content type="html">&lt;p&gt;Dear&amp;nbsp;Lazyweb,&lt;/p&gt;
&lt;p&gt;Does anyone have suggestions on what to use for centralized storage at home?  I have a lot of music/photos here piling up and would like to put them on some energy-efficient &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NAS&lt;/span&gt;&lt;/span&gt; box.  Ideally it would have some sort of of built-in backup solution as well.  A lot of the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NAS&lt;/span&gt;&lt;/span&gt;-in-a-box solutions seem to have &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RAID&lt;/span&gt;&lt;/span&gt; 1, but that really only helps for HA.  I am more concerned with never ever losing this stuff than having it available&amp;nbsp;24/7.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>2 + 1</title>
   <link href="http://snorp.net/2008/06/12/2-%2B-1.html"/>
   <updated>2008-06-12T00:00:00-07:00</updated>
   <id>http://snorp.net/2008/06/12/2-+-1</id>
   <content type="html">&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/snorp/2545725182/&quot;&gt;&lt;img src=&quot;http://www.snorp.net/images/alex-thumb.jpg&quot; alt=&quot;Alexander, 15 minutes old&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;Alexander James, 30 minutes old&lt;/i&gt;&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Out-weaseling Firefox</title>
   <link href="http://snorp.net/2008/05/21/out-weaseling-firefox.html"/>
   <updated>2008-05-21T00:00:00-07:00</updated>
   <id>http://snorp.net/2008/05/21/out-weaseling-firefox</id>
   <content type="html">&lt;p&gt;There has been a lot of buzz lately about the Firefox 3 &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=421482&quot;&gt;fsync issue&lt;/a&gt;.  The work I&amp;#8217;m doing these days has me doing a lot of long-running disk-bound activies, so this one hurts me pretty bad.  Firefox would stop responding for 30-40s at a time while my job was running in the background, which I think is pretty unacceptable.  I have worked around it in the (hopefully) short-term with a LD_PRELOAD hack.  I&amp;#8217;ve posted it &lt;a href=&quot;http://www.snorp.net/files/ff3-sucks.tar.bz2&quot;&gt;here&lt;/a&gt; in case anyone else finds it useful.  Just unpack, cd to the directory, and &amp;#8216;make &amp;amp;&amp;amp; make install&amp;#8217; (not as root).  A word of warning, though: if it breaks you get to keep both pieces.  Kudos to &lt;a href=&quot;http://www.abock.org/&quot;&gt;Aaron&lt;/a&gt; for adding the &amp;#8216;make install&amp;#8217; bits to the Makefile&amp;nbsp;:)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Some things do change...</title>
   <link href="http://snorp.net/2008/05/16/some-things-do-change....html"/>
   <updated>2008-05-16T00:00:00-07:00</updated>
   <id>http://snorp.net/2008/05/16/some-things-do-change...</id>
   <content type="html">&lt;p&gt;Ever since zypper came along I hated it.  It was slow, buggy, and used a ton of&amp;nbsp;resources.&lt;/p&gt;
&lt;p&gt;Well, I installed &lt;a href=&quot;http://en.opensuse.org/Development_Version&quot;&gt;openSUSE 11.0b3&lt;/a&gt; yesterday and the zypper/libzypp there is &lt;strong&gt;massively&lt;/strong&gt; improved.  I don&amp;#8217;t think it&amp;#8217;s possible to overstate just how much of an improvement it really is.  Normally I just make rcd/rug work on whatever new release comes along and continue using that.  Zypper and PackageKit are so good now that I&amp;#8217;m giving that up.  So congratulations to the zypp team &amp;#8212; I know they caught a lot of flack in the past, but I think this release will finally put a lot of that to&amp;nbsp;rest.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Mango Lassi</title>
   <link href="http://snorp.net/2008/02/26/mango-lassi.html"/>
   <updated>2008-02-26T00:00:00-08:00</updated>
   <id>http://snorp.net/2008/02/26/mango-lassi</id>
   <content type="html">&lt;p&gt;The other day I looked into switching away from synergy to &lt;a href=&quot;http://0pointer.de/blog/projects/mango-lassi.html&quot;&gt;Mango Lassi&lt;/a&gt;.  I only use it between two machines, so I figured my use case was simple enough that it should work at this stage.  I was not disappointed.  I was getting some very strange behavior with synergy and vmware, and Mango Lassi has none of that.  Plus it gives an &lt;a href=&quot;http://www.snorp.net/files/screenshots/mango-lassi-osd.png&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;OSD&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; telling you which machine the mouse/keyboard are being used on, which is a nice&amp;nbsp;perk.&lt;/p&gt;
&lt;p&gt;Anyway, I was so happy with it that I made packages for openSUSE.  You can get it from my build service &lt;a href=&quot;http://download.opensuse.org/repositories/home:/snorp/openSUSE_10.3/&quot;&gt;repository&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Application Usage Monitoring</title>
   <link href="http://snorp.net/2008/01/18/application-usage-monitoring.html"/>
   <updated>2008-01-18T00:00:00-08:00</updated>
   <id>http://snorp.net/2008/01/18/application-usage-monitoring</id>
   <content type="html">&lt;p&gt;Recently I&amp;#8217;ve had a couple of ideas for a project (like I need another one of those).  The goal would be to make a library which allows applications to easily track their user&amp;#8217;s interactions and log them in a central location.  Project maintainers/contributors could then look at the collected data to help them make decisions about what they should be spending time on.  For instance, a media player might log what types of files are played or if it was synced to an iPod-like&amp;nbsp;device.&lt;/p&gt;
&lt;p&gt;As far as technical hurdles go, doing something like this is pretty easy.  The main questions I have are around the kind of policies that should exist for such a thing.  Obviously, participation should be opt-in.  But should it be on a per-app basis, or per-user?  Or both?  If it is per-app, you would likely get bombarded with a prompt on the first run of every app that uses this system.  If that is a small number it might be ok, but hopefully that wouldn&amp;#8217;t be the case :).  On the other hand, maybe you don&amp;#8217;t want certain sensitive applications (email client?) ever sending&amp;nbsp;info.&lt;/p&gt;
&lt;p&gt;Then there&amp;#8217;s the question of who should have access to the data.  My feeling is that the user should always be able to see everything that he has sent.  But should he also be able to see everyone else&amp;#8217;s individual data?  What about the aggregated data?  That leads me to the next question.  Should there be a cookie that identifies a single user throughout all applications?  Or even a cookie per-application?  I think having a cookie across all applications would definitely make the data more useful, but I&amp;#8217;m not sure if people would be opposed to such a thing.  Of course, this leads to yet another question.  How do we keep personal information out?  I don&amp;#8217;t believe there is a technical solution to keep things like this from making its way in.  Developers will need to be very careful, and that kind of bothers me.  If all of the data on the server is available to everyone then maybe public scrutiny will help keep things in check, but who&amp;nbsp;knows.&lt;/p&gt;
&lt;p&gt;These are just a few of the questions I have come up with, and I am sure others can think of plenty more.  Is it possible to come up with something that benefits the development community without infringing on user&amp;#8217;s privacy?  Even so, would users participate?  Comments are&amp;nbsp;open.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>openSUSE LiveCD Installer</title>
   <link href="http://snorp.net/2007/07/11/opensuse-livecd-installer.html"/>
   <updated>2007-07-11T00:00:00-07:00</updated>
   <id>http://snorp.net/2007/07/11/opensuse-livecd-installer</id>
   <content type="html">&lt;p&gt;I was out of town for part of hack week, so I didn&amp;#8217;t participate fully like my colleagues.  I did get a couple evenings to mess around with something, though.  I wrote an installer for &lt;a href=&quot;http://kiwi.berlios.de/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;KIWI&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;-generated&amp;nbsp;LiveCDs.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;p&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/suse-live-installer/page1.png&quot; alt=&quot;First page of live installer&quot; /&gt;&lt;br/&gt;&lt;br /&gt;
&lt;i&gt;First page of live installer&lt;/i&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s still in early development and has lots of hacks to make things work, but it does manage to install a working system onto your machine.  The installation itself is really pretty simple.  The LiveCD data is in a compressed squashfs image on the CD, and the installer just copies all of that to the disk.  Then it just writes out an fstab, installs grub,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;As usual, however, the devil is in the details.  Things like sound and video card detection are normally done by the YaST installer, so other methods must be used.  It might be possible to invoke the relevant bits of YaST from the LiveCD installer to achieve the same effect, but I haven&amp;#8217;t looked into it yet.  I have everything checked into svn (svn://snorp.net/trunk/opensuse-live), so if you want to try and build a CD everything is there.  I will also upload an &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ISO&lt;/span&gt;&lt;/span&gt;&amp;nbsp;soonish.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt;  You can download a full &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ISO&lt;/span&gt;&lt;/span&gt; based on openSUSE Alpha 5 &lt;a href=&quot;http://www.snorp.net/files/livecd/opensuse-live-system.i686-1.3.2.iso&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>RPM Transaction Enhancements</title>
   <link href="http://snorp.net/2007/05/04/rpm-transaction-enhancements.html"/>
   <updated>2007-05-04T00:00:00-07:00</updated>
   <id>http://snorp.net/2007/05/04/rpm-transaction-enhancements</id>
   <content type="html">&lt;p&gt;One of the reasons I wanted to revive rcd was so that I could use it to play with some package management ideas I&amp;#8217;ve been kicking around.  One of these ideas is a way to reliably rollback changes made during an &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RPM&lt;/span&gt;&lt;/span&gt; transaction.  That is, actually make &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RPM&lt;/span&gt;&lt;/span&gt; transactions&amp;nbsp;transactional.&lt;/p&gt;
&lt;p&gt;Recently, a colleague introduced me to &lt;a href=&quot;http://sourceware.org/dm/&quot;&gt;device-mapper&lt;/a&gt;, a kernel system used for block device redirection.  There is a really cool thing that uses it called dm-snapshot, which allows you to redirect all writes to a device into a separate device.  What I would like to do is use this to store all of the changes made during an rpm transaction.  I think it would just need a bit of patching so that it only stores the changes made by the rcd/rpm process (and children).  If anything goes wrong, you can just trash the snapshot data and things are exactly as they were in the beginning.  Of course, if it succeeds without problelms, you need to merge the snapshot changes into the original device.  This is where things get fuzzy, as dm-snapshot does not have this ability.  However, Mark McLoughlin has created a set of &lt;a href=&quot;http://fedoraproject.org/wiki/StatelessLinuxCachedClient&quot;&gt;patches&lt;/a&gt; that add this feature as part of the Stateless Linux project.  Sadly, the patches do not appear to be a high priority for the kernel guys right now, so I guess this approach will have to be put on&amp;nbsp;hold.&lt;/p&gt;
&lt;p&gt;In any case, a system for performing this rollback stuff would be ridiculously useful in general &amp;#8212; not just for package management.  It looks like it will be a little more than I can do by myself in a weekend hack, though, so hopefully someone else will carry the torch?&amp;nbsp;:)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Return of The Carpet</title>
   <link href="http://snorp.net/2007/04/26/return-of-the-carpet.html"/>
   <updated>2007-04-26T00:00:00-07:00</updated>
   <id>http://snorp.net/2007/04/26/return-of-the-carpet</id>
   <content type="html">&lt;p&gt;Red Carpet, that is.  Yes, &lt;a href=&quot;http://en.wikipedia.org/wiki/Red_Carpet&quot;&gt;that&lt;/a&gt; Red Carpet.  I&amp;#8217;ve taken some time lately to give some love to our old friends rcd and rug (the original rug, not the rewritten one).  First I got everything building on a modern distro (openSUSE 10.2).  This took more effort than I thought it would, but eventually things worked well.  After that, I set out to make rcd more usable with yum services.  Here is a list of the main changes:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;b&gt;Add native yum support&lt;/b&gt;.  I removed the &amp;#8216;helix&amp;#8217; service support and replaced it with something that understands yum metadata.  This means you can just do &amp;#8216;rug sa repo_url name&amp;#8217; for any yum service.  I used the excellent yum parser that Tambet wrote for the libredcarpet backend of zmd to accomplish&amp;nbsp;this.&lt;/li&gt;&lt;p&gt;&lt;br /&gt;
&lt;li&gt;&lt;b&gt;Remove channel subscriptions&lt;/b&gt;.  Since yum services don&amp;#8217;t provide multiple channels, subscriptions aren&amp;#8217;t really necessary.  They have been replaced with the ability to disable a&amp;nbsp;service.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;b&gt;Add sleep ability&lt;/b&gt;.  One of the main complaints against rcd was that it used too much memory.  This was mostly because over time the heap would become fragmented.  The &amp;#8216;sleep&amp;#8217; feature avoids this by running the main rcd daemon only when necessary.  After a period of inactivity (3 minutes by default), the main daemon replaces itself with a smaller daemon.  This smaller daemon simply waits until a request comes in and launches the full daemon to&amp;nbsp;respond.&lt;/li&gt;&lt;/p&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;With the above changes, rcd is once again a joy to use.  I would like to get the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt;&lt;/span&gt; working again, but there is some kind of threading problem preventing it from running.  I would also like to add ftp support, but that is not a top&amp;nbsp;priority.&lt;/p&gt;
&lt;p&gt;I know there are probably &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SUSE&lt;/span&gt;&lt;/span&gt; users reading this asking &amp;#8220;Ok, sounds fine, but is it &lt;b&gt;fast&lt;/b&gt;?&amp;#8221;.  While it may not be the fastest thing out there, I think you will be surprised at the results (I was).  Here are a few simple benchmarks from normal usage&amp;nbsp;scenarios:&lt;/p&gt;
&lt;p&gt;First, lets look at the number of services I currently have added:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;
% rug&amp;nbsp;sl&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;| Service &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt;&lt;/span&gt;                                           | Name       &lt;br /&gt;
&lt;del&gt;&amp;#8212;&lt;ins&gt;&lt;/del&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;/ins&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
1  | http://go-mono.com/download-stable/suse-102-i586?r&amp;#8230; | mono       &lt;br /&gt;
2  | http://software.opensuse.org/download/&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;FATE&lt;/span&gt;&lt;/span&gt;/openSUS&amp;#8230; | fate       &lt;br /&gt;
3  | http://ftp.suse.com/pub/suse/update/10.2/?name=upd&amp;#8230; | updates    &lt;br /&gt;
4  | http://download.opensuse.org/distribution/10.2/rep&amp;#8230; | suse-nonoss&lt;br /&gt;
5  | http://download.opensuse.org/distribution/10.2/rep&amp;#8230; | suse-oss   &lt;br /&gt;
6  | http://packman.inode.at/suse/10.2?remote_only=1;na&amp;#8230; | packman    &lt;br /&gt;
7  | http://software.opensuse.org/download/home:/cybero&amp;#8230; | cyborg     &lt;br /&gt;
8  | http://software.opensuse.org/download/X11:/&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XGL&lt;/span&gt;&lt;/span&gt;/ope&amp;#8230; | xgl        &lt;br /&gt;
9  | http://software.opensuse.org/download/Beagle/openS&amp;#8230; | beagle     &lt;br /&gt;
10 | http://software.opensuse.org/download/games:/actio&amp;#8230; | games      &lt;br /&gt;
11 | http://software.opensuse.org/download/Virtualizati&amp;#8230; | virt       &lt;br /&gt;
12 | http://software.opensuse.org/download/home:/kraxel&amp;#8230; | kvm&lt;br /&gt;
&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;
So 12 services, and the package count is almost 21000.  22500 if you also count the ones in the rpm database.  How long does it take to load all of&amp;nbsp;those?&lt;/li&gt;&lt;/p&gt;
&lt;/ol&gt;
&lt;p&gt;Cold filesystem cache, daemon is sleeping:&lt;br /&gt;
&lt;blockquote&gt;&lt;pre&gt;% time rug ping &amp;gt; /dev/null&lt;br /&gt;
rug ping  0.17s user 0.02s system 1% cpu 13.735&amp;nbsp;total&lt;/p&gt;
&lt;p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/pre&gt;&lt;br /&gt;
14 seconds to respond isn&amp;#8217;t terrible, considering the cold filesystem cache.  Now that the kernel has it cached, though, how long does it&amp;nbsp;take?&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Warm filesystem cache, daemon is sleeping:&lt;br /&gt;
&amp;lt;blockquote&lt;pre&gt;% time rug ping &amp;gt;/dev/null&lt;br /&gt;
rug ping &amp;gt; /dev/null  0.14s user 0.02s system 3% cpu 4.465 total&lt;br /&gt;
&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;
4.5, not bad.  Definitely in the tolerable range, I&amp;#8217;d say.  Of course after the daemon is awake, commands respond immediately.  That is maybe the only good thing about rcd being a daemon &amp;#8212; subsequent commands are instant, where other tools (yum, smart, etc) have to load the package metadata again.  Memory usage after rcd wakes up is about 28MB, so that is not too bad either (it is a little over 1MB when&amp;nbsp;sleeping).&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Packages for recent &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SUSE&lt;/span&gt;&lt;/span&gt; distros are available in the &lt;a href=&quot;http://software.opensuse.org/download/home:/snorp/&quot;&gt;build service&lt;/a&gt;.  It has had a hard time keeping up recently, though, so you may run into a problem or two with rug.  Sources can be found in gnome svn in the &lt;a href=&quot;http://svn.gnome.org/viewcvs/rcd/branches/yummy/&quot;&gt;yummy branch&lt;/a&gt; of the various modules (rcd, rug,&amp;nbsp;libredcarpet).&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Also, yes, I am sick sick&amp;nbsp;person.&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Banshee and AWN</title>
   <link href="http://snorp.net/2007/02/28/banshee-and-awn.html"/>
   <updated>2007-02-28T00:00:00-08:00</updated>
   <id>http://snorp.net/2007/02/28/banshee-and-awn</id>
   <content type="html">&lt;p&gt;I just tried out &lt;a href=&quot;http://code.google.com/p/avant-window-navigator/&quot;&gt;Avant Window Navigator&lt;/a&gt; for the first time, after seeing Neil&amp;#8217;s latest blog &lt;a href=&quot;http://njpatel.blogspot.com/2007/02/to-quote-destinys-child.html&quot;&gt;entry&lt;/a&gt;.  It&amp;#8217;s pretty slick, and worth trying if you have xgl/aiglx/whatever.  I also wrote a Banshee plugin which makes the current track cover appear in the dock.&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/awn-banshee.png&quot;&gt;&lt;br/&gt;&lt;i&gt;Banshee playing &amp;#8220;Stadium Arcadium&amp;#8221;&lt;/i&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;You can get the plugin &lt;a href=&quot;http://www.snorp.net/files/banshee-awn-plugin.tar.gz&quot;&gt;here&lt;/a&gt;.  Just drop the dll into&amp;nbsp;~/.gnome2/banshee/plugins.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Monster Truck Lloyd</title>
   <link href="http://snorp.net/2007/02/10/monster-truck-lloyd.html"/>
   <updated>2007-02-10T00:00:00-08:00</updated>
   <id>http://snorp.net/2007/02/10/monster-truck-lloyd</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/snorp/385705610/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/138/385705610_4d9771fef4_m.jpg&quot; alt=&quot;&quot; style=&quot;border: solid 2px #000000;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 0.9em; margin-top: 0px;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/snorp/385705610/&quot;&gt;Monster Truck Lloyd&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/snorp/&quot;&gt;snorp&lt;/a&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br clear=&quot;all&quot; /&gt;&lt;br /&gt;
&lt;p&gt;Saw this while getting some food this morning.  Only in&amp;nbsp;Kansas&amp;#8230;&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Thoughts on Sincerity</title>
   <link href="http://snorp.net/2007/02/07/thoughts-on-sincerity.html"/>
   <updated>2007-02-07T00:00:00-08:00</updated>
   <id>http://snorp.net/2007/02/07/thoughts-on-sincerity</id>
   <content type="html">&lt;p&gt;Hi &lt;a href=&quot;http://en.wikipedia.org/wiki/Steve_Jobs&quot;&gt;Steve&lt;/a&gt;,&lt;/p&gt;
&lt;p&gt;Earlier today I read your &lt;a href=&quot;http://www.apple.com/hotnews/thoughtsonmusic/&quot;&gt;&amp;#8220;Thoughts on Music&amp;#8221;&lt;/a&gt; post.  Afterwards, my initial reaction was &amp;#8220;That&amp;#8217;s great!  You get &amp;#8217;em Steve!&amp;#8221;.  It&amp;#8217;s no secret that &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DRM&lt;/span&gt;&lt;/span&gt; is broken by design, but it&amp;#8217;s nice to see one of the biggest users of it say so.  However, I was quickly reminded by a colleague that Apple hardly seems interested in the &amp;#8220;everything works with everything&amp;#8221; utopia you describe.  One specific example is the iTunes music sharing feature.  Soon after it was released, some smart people figured out how it worked and developed software to be compatible with it.  This let people access their iTunes-shared music from devices or operating systems that didn&amp;#8217;t have iTunes.  Soon after, Apple implemented a mechanism which prevented non-iTunes clients from doing this.  Why?  It wasn&amp;#8217;t because of the record companies.  The music purchased on the iTunes Music Store was still protected by FairPlay, so they had no reason to complain.  The only conceivable reason you&amp;#8217;d have for doing this is to force consumers into vendor lock in.  Well, it didn&amp;#8217;t work.  Some more smart people defeated your mechanism and once again people were playing their iTunes-shared music using whatever software they liked best (be it iTunes or otherwise).  But that didn&amp;#8217;t stop Apple from re-implementing a similar protection scheme &lt;b&gt;again&lt;/b&gt; in iTunes 7.  This time you even &lt;a href=&quot;http://www.rokulabs.com/forums/viewtopic.php?t=9026&quot;&gt;knifed&lt;/a&gt; some business partners in the process.  This kind of behavior isn&amp;#8217;t at all congruent with what you&amp;#8217;re saying in your post.  Have you changed your mind now?  Will the next iTunes release remove this restriction?  If your &amp;#8220;Thoughts on Music&amp;#8221; was sincere, I&amp;#8217;d expect&amp;nbsp;so.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>more vmx-manager stuff</title>
   <link href="http://snorp.net/2006/12/18/more-vmx-manager-stuff.html"/>
   <updated>2006-12-18T00:00:00-08:00</updated>
   <id>http://snorp.net/2006/12/18/more-vmx-manager-stuff</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m still working hard on &lt;a href=&quot;http://www.snorp.net/log/2006/12/08/im-in-ur-virtual-machines-managing-them/&quot;&gt;vmx-manager&lt;/a&gt;, and I think it&amp;#8217;s coming along pretty well.  I spent a good chunk of last week writing my own code for creating VMware Virtual Disks.  The &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;VMDK&lt;/span&gt;&lt;/span&gt; &lt;a href=&quot;http://www.vmware.com/interfaces/vmdk.html&quot;&gt;specification&lt;/a&gt; is pretty straightforward, but implementing it proved to be more tedious than I expected (&amp;#8220;the devil is in the details&amp;#8221;).  The end result seems to work pretty well, so now vmx-manager can create disks without relying on qemu or vmware-vdiskmanager.  Soon I might try to add a couple more features in this area, such as the ability to grow an existing disk (which in theory should be easy &amp;#8212; just add extents).  I&amp;#8217;ve made a &lt;a href=&quot;http://www.snorp.net/files/screencasts/vmx-manager-demo.ogg&quot;&gt;screencast&lt;/a&gt; of the app as I put it through its paces, and you can find up-to-date screenshots &lt;a href=&quot;http://www.snorp.net/files/screenshots/vmx-manager&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When I was writing the flat extent support (used for pre-allocated disks), I wanted to do something different than just writing a bunch of zeros out to a file (which is slow).  It seemed to me that it should be possible to ask the filesystem to quickly give me a file of a specific size.  I didn&amp;#8217;t care what was in it, so it should be able to just find a bunch of unused sectors (or whatever) and mark them as mine, right?  I was able to find no such feature in ext3 or Linux in general, and I guess the reason is probably due to security concerns.  You obviously don&amp;#8217;t want to give people a way to read deleted data.  It would be nice, though, if the fs could mark the data in such a way that it would be zeros until you write to it.  Maybe that&amp;#8217;s just too expensive, I don&amp;#8217;t know.  Anyway, if anyone knows how I could accomplish such a thing, please let me&amp;nbsp;know.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I'm in ur virtual machines, managing them</title>
   <link href="http://snorp.net/2006/12/09/i%27m-in-ur-virtual-machines%2C-managing-them.html"/>
   <updated>2006-12-09T00:00:00-08:00</updated>
   <id>http://snorp.net/2006/12/09/i'm-in-ur-virtual-machines,-managing-them</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been working on an application recently which lets you create, configure, and run VMware virtual machines (it just forks out to VMware Player for the running part).  It&amp;#8217;s nearing usefulness now, so I thought I&amp;#8217;d post some screenshots and&amp;nbsp;stuff.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;p&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/vmx-manager-main.png&quot;/&gt;&lt;br /&gt;
&lt;i&gt;The main&amp;nbsp;window&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/vmx-manager-config.png&quot;/&gt;&lt;br /&gt;
&lt;i&gt;The configuration&amp;nbsp;window&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;You need either qemu or vmware-vdiskmanager installed in order to create new hard disks, and it probably fails pretty badly currently if you don&amp;#8217;t.  If I get a chance, I may write my own stuff to create the hard disks (the format is a public spec, woo!).  Anyway, you can get it from the &lt;code&gt;vmx-manager&lt;/code&gt; module in gnome &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Flaming Skulls!</title>
   <link href="http://snorp.net/2006/10/20/flaming-skulls%21.html"/>
   <updated>2006-10-20T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/10/20/flaming-skulls!</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/snorp/274601957/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://static.flickr.com/63/274601957_ba31928c9e_m.jpg&quot; alt=&quot;&quot; style=&quot;border: solid 2px #000000;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;I did a jack-o-lantern this week for the first time in probably 15 years.  I am happy with the&amp;nbsp;result.&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tangerine with Cocoa</title>
   <link href="http://snorp.net/2006/10/13/tangerine-with-cocoa.html"/>
   <updated>2006-10-13T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/10/13/tangerine-with-cocoa</id>
   <content type="html">&lt;p&gt;Last weekend I spent some time porting &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt; to Mac OS X.  The actual music sharing daemon worked fine with no changes, except I had to modify the path to the xml database for the iTunes plugin.  With that out of the way, I set out to create a native configuration &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt;&lt;/span&gt; for it.  I had never used Obj-C or Cocoa or anything like that before, so I thought it would be fun to learn all of that stuff.  The Apple developer tools are pretty nice, and it wasn&amp;#8217;t long before I had a semi-working preference pane.  The last couple of nights I polished it up to the point where I think it&amp;#8217;s releasable, so here we&amp;nbsp;go.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/tangerine-preferences-mac.png&quot;/&gt;&lt;br/&gt;&lt;i&gt;Tangerine&amp;#8217;s Preference Pane on Mac OS X&lt;/i&gt;&lt;/div&gt;
&lt;p&gt;I&amp;#8217;m not an expert on Apple interfaces, so I&amp;#8217;d welcome input from someone who has experience with this.  It looks ok to me, though.  The &amp;#8220;automatic&amp;#8221; selection uses Spotlight to find all of your music and share it.  This is the same thing it does on Linux and Windows with Beagle and Google Desktop,&amp;nbsp;respectively.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.snorp.net/files/tangerine/tangerine-0.3.0.dmg&quot;&gt;Download&amp;nbsp;Now!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My next post will be about my experience porting this app to Windows and Mac OS X, what they have that&amp;#8217;s better/worse than Linux,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; To use Tangerine you&amp;#8217;ll need the Mono framework installed.  Get it &lt;a href=&quot;http://www.mono-project.com/Downloads&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Maybe they're not as bad as I thought</title>
   <link href="http://snorp.net/2006/09/18/maybe-they%27re-not-as-bad-as-i-thought.html"/>
   <updated>2006-09-18T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/09/18/maybe-they're-not-as-bad-as-i-thought</id>
   <content type="html">&lt;p&gt;The &lt;a href=&quot;http://www.snorp.net/log/2006/09/14/why-i-hate-apple-still/&quot;&gt;iPod situation&lt;/a&gt; is now mostly fixed.  I was able to figure out how iTunes gets the iPod serial number (and other info) with the help of a &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;&lt;/span&gt; monitoring tool and Matt Dharm (the usb-storage guy).  After that, &lt;a href=&quot;http://www.abock.org&quot;&gt;Aaron&lt;/a&gt; used the metric ton of SysInfo samples you guys sent in to get a serial number &amp;#8594; model number&amp;nbsp;mapping.&lt;/p&gt;
&lt;p&gt;To get info about (recent) device, iTunes requests an xml &lt;a href=&quot;http://www.snorp.net/ipod.xml&quot;&gt;document&lt;/a&gt; from it over &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;&lt;/span&gt;.  I saw this in the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;&lt;/span&gt; trace I had, but the data was nowhere on the disk exposed by &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;&lt;/span&gt; Mass Storage.  Puzzling.  Not really knowing much about &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;&lt;/span&gt; MC, I enlisted the help of Matt, who obviously knows a lot more.  He informed me that it was requesting the data using a special &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SCSI&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;INQUIRY&lt;/span&gt;&lt;/span&gt; command, and I could probably use &lt;a href=&quot;http://sg.torque.net/sg/sg_io.html&quot;&gt;SG_IO&lt;/a&gt; to get it out.  I ran &lt;code&gt;sg_inq&lt;/code&gt; on my iPod with the right parameters, and out came the xml.  Success!  After that I wrote a hal method for libipoddevice to pull the info out (since you need to be root), and the rest was just parsing the xml and doing the serial &amp;#8594; model&amp;nbsp;mapping.&lt;/p&gt;
&lt;p&gt;Even though it was a fairly painful couple of days trying to fix this, I&amp;#8217;m pretty happy with the result.  The xml from the device includes some really tasty stuff, including information on the image formats for cover art and photos.  We are using this data now in ipod-sharp instead of the static table we had before, which will be really great for maintenance.  New iPods with previously unknown image formats will Just Work!  There is also data on the video formats, which I will soon use to add video support to &lt;a href=&quot;http://www.snorp.net/log/dopi&quot;&gt;Dopi&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Why I hate Apple (still)</title>
   <link href="http://snorp.net/2006/09/14/why-i-hate-apple-still.html"/>
   <updated>2006-09-14T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/09/14/why-i-hate-apple-still</id>
   <content type="html">&lt;p&gt;For a while now I&amp;#8217;ve been getting reports of people having a strange problem using their iPod with &lt;a href=&quot;http://www.banshee-project.org&quot;&gt;Banshee&lt;/a&gt; or &lt;a href=&quot;http://www.snorp.net/log/dopi&quot;&gt;Dopi&lt;/a&gt;.  There is a file on the device that we use to get things like the model number, which tells us what sort of iPod we&amp;#8217;re dealing with.  That file has been removed or set to 0 length on newer firmwares, and I was just yesterday able to reproduce it after upgrading and restoring my iPod Video.  Since it wasn&amp;#8217;t stored on the filesystem anymore, I started poking around the firmware parition, and found several copies of it there.  Unfortunately it seems to appear in different places depending on the device, so I haven&amp;#8217;t yet found a reliable way of getting that stuff out.  We&amp;#8217;ll eventually figure it out, though, and at that point things should start working again.  I have a totally gross solution which runs &lt;code&gt;strings(1)&lt;/code&gt; on the partition, but I don&amp;#8217;t think it will come to that&amp;nbsp;:)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Up to 10 times more sharing or more!</title>
   <link href="http://snorp.net/2006/09/12/up-to-10-times-more-sharing-or-more%21.html"/>
   <updated>2006-09-12T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/09/12/up-to-10-times-more-sharing-or-more!</id>
   <content type="html">&lt;p&gt;I released a new version of &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt; tonight.  The biggest change is that you can now share the songs stored in your music player&amp;#8217;s collection.  So if you add some songs to your library in &lt;a href=&quot;http://www.banshee-project.org&quot;&gt;Banshee&lt;/a&gt;, they will automatically be shared by Tangerine.  Rhythmbox and Amarok are also supported.&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/tangerine-providers.png&quot;/&gt;&lt;br/&gt;&lt;br /&gt;
&lt;i&gt;The config dialog allows you to select a music player&lt;/i&gt;&lt;/div&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tangerine + Muine</title>
   <link href="http://snorp.net/2006/09/12/tangerine-%2B-muine.html"/>
   <updated>2006-09-12T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/09/12/tangerine-+-muine</id>
   <content type="html">&lt;p&gt;Hot on the heels of the last release comes &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt; 0.2.8, with the only major change being a new plugin for &lt;a href=&quot;http://muine-player.org/wiki/Main_Page&quot;&gt;Muine&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>iTunes 7</title>
   <link href="http://snorp.net/2006/09/12/itunes-7.html"/>
   <updated>2006-09-12T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/09/12/itunes-7</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.apple.com/itunes/&quot;&gt;iTunes 7&lt;/a&gt; was announced today, which means more &lt;a href=&quot;http://www.snorp.net/log/ipod-sharp&quot;&gt;ipod-sharp&lt;/a&gt; breakage.  It doesn&amp;#8217;t look like anything really changed except the database version, so I&amp;#8217;ve bumped that and released 0.6.1.  The music sharing stuff in iTunes hasn&amp;#8217;t changed for ages, so &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt; still works&amp;nbsp;fine.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>YUMier Than Bacardi</title>
   <link href="http://snorp.net/2006/09/06/yumier-than-bacardi.html"/>
   <updated>2006-09-06T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/09/06/yumier-than-bacardi</id>
   <content type="html">&lt;p&gt;When I was in Boston last week, my cohorts and I whipped up something wonderful: a rug interface for yum.  We call it &amp;#8216;rum&amp;#8217;, and it has nearly all the features of the original (used with rcd) rug.  &amp;#8220;zOMG!!! &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;WHY&lt;/span&gt;&lt;/span&gt;?!!11&amp;#8221;, you ask?  Well, after using and working on rug/rcd/zmd for the past 3 or 4 years, we simply can&amp;#8217;t use anything else.  It&amp;#8217;s a sickness.  So what&amp;#8217;s in it for you, the average yum user?&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;The world-renowned, award-winning, &amp;#8216;search&amp;#8217;&amp;nbsp;command&lt;/li&gt;&lt;p&gt;&lt;br /&gt;
&lt;li&gt;&lt;span class=&quot;dquo&quot;&gt;&amp;#8220;&lt;/span&gt;tilde&amp;#8221; support (rum in foo bar ~baz), which allows you to add and remove packages at the same&amp;nbsp;time&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Easily add/remove/enable/disable repositories.  Never edit a config file&amp;nbsp;again!&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Persistent package locks (known as &amp;#8216;excludes&amp;#8217; in the yum&amp;nbsp;world)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;New commands are easily added.  Just drop a python file in the appropriate place, and it is automatically added to the rum&amp;nbsp;interface.&lt;/li&gt;&lt;/p&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;You can download RPMs for &lt;a href=&quot;http://www.snorp.net/files/rum/fc5-i386&quot;&gt;FC5-i386&lt;/a&gt;, &lt;a href=&quot;http://www.snorp.net/files/rum/fc6-i386&quot;&gt;FC6-i386&lt;/a&gt;, and &lt;a href=&quot;http://www.snorp.net/files/rum/suse-i586&quot;&gt;SuSE 10.x-i586&lt;/a&gt;.  For you adventurous build-from-source types, a tarball is &lt;a href=&quot;http://www.snorp.net/files/rum/rum-1.0.0.tar.gz&quot;&gt;here&lt;/a&gt;.&amp;nbsp;Enjoy!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>blowing up Pluto</title>
   <link href="http://snorp.net/2006/08/25/blowing-up-pluto.html"/>
   <updated>2006-08-25T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/08/25/blowing-up-pluto</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://hpj.blognaco.com/2006/08/24/blow-up-pluto/&quot;&gt;hpj&lt;/a&gt;:  I am in favor of this idea.  We could even use a few of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Nuclear_weapons_and_the_United_States&quot;&gt;~10k nuclear weapons&lt;/a&gt;!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>muthafuckin' tangerines on a muthafuckin' plane^Wwindows</title>
   <link href="http://snorp.net/2006/08/20/muthafuckin%27-tangerines-on-a-muthafuckin%27-plane%5Ewwindows.html"/>
   <updated>2006-08-20T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/08/20/muthafuckin'-tangerines-on-a-muthafuckin'-plane^wwindows</id>
   <content type="html">&lt;p&gt;This weekend I spent some more time making &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt; work on Windows.  I built Bonjour from scratch so I could distribute the binaries, and polished up the Tangerine installer as well.  I gave it a good deal of testing, but there might be something I missed still.  The Windows version includes a plugin for finding songs automatically through &lt;a href=&quot;http://desktop.google.com/index.html&quot;&gt;Google Desktop&lt;/a&gt;.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;p&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/tangerine-prefs-win32-new.png&quot;/&gt;&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;The preferences window for Tangerine (under Windows)&lt;/i&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.snorp.net/files/tangerine/TangerineSetup-0.2.6.3.exe&quot;&gt;Download&amp;nbsp;Now!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I just put up a new version which fixes a bunch of issues I found.  It also adds the missing features to the config window and hopefully makes it look a little nicer.  Updated screenshot&amp;nbsp;above.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; Another updated version up with more bug fixes.  I don&amp;#8217;t have a bug tracker set up, but if you guys hit any problems just email me (&lt;a href=&quot;mailto:snorp@snorp.net&quot;&gt;snorp@snorp.net&lt;/a&gt;).&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fruity</title>
   <link href="http://snorp.net/2006/07/21/fruity.html"/>
   <updated>2006-07-21T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/07/21/fruity</id>
   <content type="html">&lt;p&gt;I released &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt; 0.2.6, which includes some minor bug fixes.  Also now that &lt;a href=&quot;http://www.novell.com/products/desktop/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SLED&lt;/span&gt;&lt;/span&gt; 10&lt;/a&gt; is out, I can do a screencast showing Tangerine running under it.  So I did, and you can see it &lt;a href=&quot;http://www.snorp.net/files/screencasts/tangerine.ogg&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; It was suggested to me that a screenshot might be needed too, so here you go :)&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;&lt;br /&gt;
&lt;img src=&quot;http://www.snorp.net/files/screenshots/tangerine-properties.png&quot;/&gt;&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;The control panel for Tangerine&lt;/i&gt;&lt;/div&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>photos and cover art in ipod-sharp</title>
   <link href="http://snorp.net/2006/06/29/photos-and-cover-art-in-ipod-sharp.html"/>
   <updated>2006-06-29T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/06/29/photos-and-cover-art-in-ipod-sharp</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been working on &lt;a href=&quot;http://www.snorp.net/log/ipod-sharp&quot;&gt;ipod-sharp&lt;/a&gt; recently to add cover art and photo support.  It&amp;#8217;s nearly complete now, and I can add and remove art and photos on my video iPod.  Another person has tried it successfully on his Nano, so all that&amp;#8217;s left to test is a regular iPod Photo.  There might be some issues to work out yet with the camera adaptor too.  A big thanks to &lt;a href=&quot;http://primates.ximian.com/~lewing/blog/&quot;&gt;Larry&lt;/a&gt; who did the initial work and provided the scary image conversion code&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve added cover art support to &lt;a href=&quot;http://www.snorp.net/log/dopi&quot;&gt;Dopi&lt;/a&gt; in svn.  It uses Cover.jpg (or cover.jpg or folder.png, etc) if one is present next to the files when you add them.  I suppose one of these days I should add a crappy &amp;#8220;track properties&amp;#8221; window so you can view/change the cover art&amp;nbsp;there.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve also created a &lt;a href=&quot;http://www.snorp.net/files/banshee_ipod_cover_art_v2.diff&quot;&gt;patch&lt;/a&gt; for &lt;a href=&quot;http://www.banshee-project.org&quot;&gt;Banshee&lt;/a&gt; to make it use the new ipod-sharp and sync cover art.  To try it you&amp;#8217;ll need ipod-sharp and libipoddevice from&amp;nbsp;svn/cvs.&lt;/p&gt;
&lt;p&gt;Oh I also converted ipod-sharp to use gmcs.  Hooray for&amp;nbsp;generics.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Apple Sucks</title>
   <link href="http://snorp.net/2006/06/18/apple-sucks.html"/>
   <updated>2006-06-18T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/06/18/apple-sucks</id>
   <content type="html">&lt;p&gt;A couple weeks ago, I spent some time making &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt; work on Windows.  After I got it working, I started looking into creating an installer and all that stuff.  &lt;a href=&quot;http://www.abock.org&quot;&gt;Aaron&lt;/a&gt; recommended &lt;a href=&quot;http://www.jrsoftware.org/isinfo.php&quot;&gt;Inno Setup&lt;/a&gt;, so I got that and went to work.  I pretty quickly had a basic package working, but it needed to handle installing the various dependencies&amp;nbsp;still.&lt;/p&gt;
&lt;p&gt;Microsoft has a neat little bootstrapping utility which you can include in your installer to make sure various components (such as .&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NET&lt;/span&gt;&lt;/span&gt; 2.0) are installed, so that bit was&amp;nbsp;easy.&lt;/p&gt;
&lt;p&gt;The other dependency it needed to install was Apple&amp;#8217;s &lt;a href=&quot;http://www.apple.com/macosx/features/bonjour/&quot;&gt;Bonjour&lt;/a&gt;, so I start poking around on Apple&amp;#8217;s site to see if they have some kind of cute installer for it.  I discover that they do, but they require you to get some kind of &lt;a href=&quot;http://developer.apple.com/softwarelicensing/agreements/pdf/bonjour4wincore.pdf&quot;&gt;license&lt;/a&gt; from Apple.  Ok, how bad could it be?  I start to look through it.  There is the normal legal crap, blah blah blah, then I hit the real requirements.  I am not a lawyer, but my understanding is that I would need to do the following things in order to distribute my Bonjour-using application (not just their&amp;nbsp;installer):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide Apple with 2 samples of the application, on physical media, delivered to them 4 weeks before each&amp;nbsp;release.&lt;/li&gt;
&lt;li&gt;Provide quarterly reports on the number of Bonjour copies distributed in the previous&amp;nbsp;quarter.&lt;/li&gt;
&lt;li&gt;Use the Bonjour logo on any manuals included with the&amp;nbsp;application&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am sure a more astute reader could probably find more nastiness.  No wonder there aren&amp;#8217;t any Windows apps out there using Bonjour.  If Apple really doesn&amp;#8217;t want people to use it, why don&amp;#8217;t they just come out and say it?  We need to port &lt;a href=&quot;http://www.avahi.org&quot;&gt;Avahi&lt;/a&gt; to Windows and crush them into&amp;nbsp;obsolescence.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; &lt;a href=&quot;http://www.tieguy.org&quot;&gt;Luis&lt;/a&gt; has added that they can also change the software or license at any point without warning and force me to use that.&amp;nbsp;Nasty.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>allegedly very tasty</title>
   <link href="http://snorp.net/2006/05/05/allegedly-very-tasty.html"/>
   <updated>2006-05-05T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/05/05/allegedly-very-tasty</id>
   <content type="html">&lt;p&gt;Last night I did a lot of work on &lt;a href=&quot;http://www.snorp.net/log/tangerine&quot;&gt;Tangerine&lt;/a&gt;, a standalone &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DAAP&lt;/span&gt;&lt;/span&gt; server of mine.  I think it&amp;#8217;s probably good enough for general use now, as I added a little control panel for enabling/configuring&amp;nbsp;it.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/tangerine-properties.png&quot;/&gt;&lt;/div&gt;
&lt;p&gt;The &amp;#8216;automatic&amp;#8217; mode uses &lt;a href=&quot;http://www.beagle-project.org&quot;&gt;Beagle&lt;/a&gt;, which was really fun to do.  Aside from some kind of metadata extraction issue, it works really&amp;nbsp;well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>sleep at last</title>
   <link href="http://snorp.net/2006/05/02/sleep-at-last.html"/>
   <updated>2006-05-02T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/05/02/sleep-at-last</id>
   <content type="html">&lt;p&gt;For the first time ever, I was able to successfully suspend my laptop (&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt;&lt;/span&gt; T40p) to &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt;&lt;/span&gt;.  For the longest time I was having a problem where the disk would go completely insane upon resuming.  Very&amp;nbsp;annoying.&lt;/p&gt;
&lt;p&gt;I found out recently that it was probably due to the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BIOS&lt;/span&gt;&lt;/span&gt; re-enabling &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;HPA&lt;/span&gt;&lt;/span&gt; (Host Protected Area) when coming out of sleep.  Unfortunately, there didn&amp;#8217;t appear to be any kind of workaround for it, but tonight I discovered that you can use the &lt;a href=&quot;http://www.hitachigst.com/hdd/support/download.htm#FeatureTool&quot;&gt;Hitachi Feature Tool&lt;/a&gt; to disable it for good.  It totally fixed my problem.&amp;nbsp;Woo.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>daap-sharp on Windows</title>
   <link href="http://snorp.net/2006/04/08/daap-sharp-on-windows.html"/>
   <updated>2006-04-08T00:00:00-07:00</updated>
   <id>http://snorp.net/2006/04/08/daap-sharp-on-windows</id>
   <content type="html">&lt;p&gt;I rolled a new release of &lt;a href=&quot;http://www.snorp.net/log/?page_id=61&quot;&gt;daap-sharp&lt;/a&gt; tonight, with the main new benefit being that it now runs on Windows.  After &lt;a href=&quot;http://www.abock.org/&quot;&gt;Aaron&lt;/a&gt; added Bonjour bindings, there wasn&amp;#8217;t much stopping this from happening, so I fixed up the last couple of bugs.  I also made an ultra-cheesy test &lt;a href=&quot;http://www.snorp.net/files/DAAPBrowser.exe&quot;&gt;application&lt;/a&gt; using Windows Forms:&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/daap-browser.jpg&quot;/&gt;&lt;/div&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>GNOME: 1, Slashdot: 0</title>
   <link href="http://snorp.net/2006/03/28/gnome%3A-1%2C-slashdot%3A-0.html"/>
   <updated>2006-03-28T00:00:00-08:00</updated>
   <id>http://snorp.net/2006/03/28/gnome:-1,-slashdot:-0</id>
   <content type="html">&lt;p&gt;Recently, &lt;a href=&quot;http://www.perkypants.org/blog&quot;&gt;Jeff&lt;/a&gt; asked the &lt;a href=&quot;http://www.slashdot.org&quot;&gt;Slashdot&lt;/a&gt; guys to stop using &lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&amp;#8217;s 700 year old &lt;a href=&quot;http://images.slashdot.org/topics/topicgnome.gif&quot;&gt;logo&lt;/a&gt; in favor of the &lt;a href=&quot;http://live.gnome.org/LogoGuidelines&quot;&gt;new one&lt;/a&gt;.  They have not changed it.  I have a &lt;a href=&quot;http://www.snorp.net/slashdot-gnome.user.js&quot;&gt;solution&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Firefox Rules</title>
   <link href="http://snorp.net/2005/12/01/firefox-rules.html"/>
   <updated>2005-12-01T00:00:00-08:00</updated>
   <id>http://snorp.net/2005/12/01/firefox-rules</id>
   <content type="html">&lt;p&gt;So Firefox 1.5 is out, sporting a new canvas tag.  Hopefully we will see all kinds of sweet innovative stuff using it.  Here is my&amp;nbsp;contribution:&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;http://www.snorp.net/canvas-test.html&quot; frameborder=&quot;0&quot; width=&quot;300&quot; height=&quot;50&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: I also changed my little bugzilla greasemonkey script to work with Firefox 1.5.  You can get that at the usual place, &lt;a href=&quot;http://www.snorp.net/files/novell-bugzilla.user.js&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>vengeance is mine</title>
   <link href="http://snorp.net/2005/10/14/vengeance-is-mine.html"/>
   <updated>2005-10-14T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/10/14/vengeance-is-mine</id>
   <content type="html">&lt;p&gt;If you have ever used the Novell &lt;a href=&quot;http://bugzilla.novell.com&quot;&gt;Bugzilla&lt;/a&gt; you no doubt noticed that it likes to log you out after a short while.  Usually for me it&amp;#8217;s at least two additional clicks after clicking on a bug link before I can actually see the bug.  It annoyed me enough tonight that I wrote a greasemonkey script to ease the pain.  You can get it &lt;a href=&quot;http://www.snorp.net/files/novell-bugzilla.user.js&quot;&gt;here&lt;/a&gt;.  Just log in once manually after loading the script so it can store your user/pass, and it should do it for you after&amp;nbsp;that.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; I just put a newer version of the script up.  It will log you in even if the page you&amp;#8217;re trying to view is not locked out to anonymous users.  Also added some lame feedback so you know what it&amp;#8217;s&amp;nbsp;doing.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>avahi-sharp</title>
   <link href="http://snorp.net/2005/09/08/avahi-sharp.html"/>
   <updated>2005-09-08T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/09/08/avahi-sharp</id>
   <content type="html">&lt;p&gt;I spent some time last night hacking up some Avahi bindings for C#, using the DBus &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/span&gt;.  The wrapper is &lt;a href=&quot;http://www.snorp.net/Server.cs&quot;&gt;here&lt;/a&gt;, and a little test app is &lt;a href=&quot;http://www.snorp.net/AvahiTest.cs&quot;&gt;here&lt;/a&gt;.  The test app registers a &amp;#8216;foobar&amp;#8217; service, and then lists all services in the default (I think?) domain.  Obligatory &amp;#8216;screenshot&amp;#8217; below.  Unfortunately, I ran into some dbus-sharp bugs while doing this.  You&amp;#8217;ll need &lt;a href=&quot;http://www.snorp.net/dbus_sharp_avahi_fixes_v1.diff&quot;&gt;this&lt;/a&gt; patch to dbus-sharp in order to use it.  You can also grab a dll &lt;a href=&quot;http://www.snorp.net/dbus-sharp.dll&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
snorp@sackbut misc/avahi/avahi-sharp % mono test.exe
Service 'Living Room' at DVR-8477.local:80
Txt: TSN=54000000000000
Resolved DVR-8477.local to 192.168.1.105
Reverse resolved 192.168.1.105 to DVR-8477.local
Service 'Now Playing on Living Room' at DVR-8477.local:443
Txt: TSN=54000000000000
Resolved DVR-8477.local to 192.168.1.105
Reverse resolved 192.168.1.105 to DVR-8477.local
Service 'Now Playing on Living Room' at DVR-8477.local:443
Txt: TSN=54000000000000
Resolved DVR-8477.local to 192.168.1.105
Reverse resolved 192.168.1.105 to DVR-8477.local
Service 'iTunes_Ctrl_60AA03D0FEE58A7F' at homer.local:3689
Txt: DbId=10000
Resolved homer.local to 192.168.1.103
Reverse resolved 192.168.1.103 to homer.local
Service 'snorp’s Music' at homer.local:3689
Txt: Password=false
Resolved homer.local to 192.168.1.103
Reverse resolved 192.168.1.103 to homer.local
Service 'Remote Terminal on sackbut' at sackbut.local:22
Resolved sackbut.local to 192.168.1.101
Reverse resolved 192.168.1.101 to sackbut.local
Service 'sackbut [00:0d:60:36:95:4d]' at sackbut.local:9
Resolved sackbut.local to 192.168.1.101
Reverse resolved 192.168.1.101 to sackbut.local
Service 'foobar' at sackbut.local:8080
Txt:
Resolved sackbut.local to 192.168.1.101
Reverse resolved 192.168.1.101 to sackbut.local
&lt;/code&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Grumpy, Sneezy, Sleepy, ...</title>
   <link href="http://snorp.net/2005/06/21/grumpy%2C-sneezy%2C-sleepy%2C-....html"/>
   <updated>2005-06-21T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/06/21/grumpy,-sneezy,-sleepy,-...</id>
   <content type="html">&lt;p&gt;Several people have asked for a little standalone app that uses ipod-sharp, since not everyone uses Muine and keeps all of their music on their PC.  So this weekend I wrote Dopi.&lt;br /&gt;
&lt;div align=&quot;middle&quot;&gt;&lt;br /&gt;
&lt;img src=&quot;http://www.snorp.net/files/screenshots/dopi.png&quot;/&gt;&lt;br /&gt;&lt;br /&gt;
&lt;i&gt;Dopi, after adding the album&amp;nbsp;&amp;#8216;Mezmerize&amp;#8217;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;You simply DnD folders/files onto the song list there to add stuff.  The delete key deletes (surprise!).  To try it, you&amp;#8217;ll need the latest ipod-sharp.  It has been moved into Mono&amp;#8217;s &lt;a href=&quot;http://svn.myrealbox.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, so if you have the stuff from baz, that is out-of-date.  Also, ipod-sharp depends on libipoddevice in &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;, so you&amp;#8217;ll need that too.  And lastly, Dopi itself is in my baz archive, &lt;a href=&quot;http://www.snorp.net/bazaar/dopi--dev--0.0&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>More muine burning</title>
   <link href="http://snorp.net/2005/06/10/more-muine-burning.html"/>
   <updated>2005-06-10T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/06/10/more-muine-burning</id>
   <content type="html">&lt;p&gt;I worked some more on the muine-burn plugin.  It should be far more stable now.  So if you tried the last one and had problems, give this a shot.  Tarballs are &lt;a href=&quot;http://www.snorp.net/files/packages/libnautilus-burn-sharp-0.1.tar.gz&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.snorp.net/files/packages/muine-burn-0.0.4.tar.gz&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>CD burning for Muine</title>
   <link href="http://snorp.net/2005/06/08/cd-burning-for-muine.html"/>
   <updated>2005-06-08T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/06/08/cd-burning-for-muine</id>
   <content type="html">&lt;p&gt;I fixed up &lt;a href=&quot;http://www.gnome.org/~fherrera/blog&quot;&gt;fer&lt;/a&gt;&amp;#8216;s muine-burn plugin recently.  It now works with the latest muine, and recent libnautilus-burn.  Surprisingly little was needed to get it into working condition again.  &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;AFAIK&lt;/span&gt;&lt;/span&gt;, the plugin wasn&amp;#8217;t checked into version control anywhere, so I committed the changes into my baz &lt;a href=&quot;http://www.snorp.net/bazaar&quot;&gt;archive&lt;/a&gt;.  I also put up a tarball &lt;a href=&quot;http://www.snorp.net/files/packages/muine-burn-0.0.2.tar.gz&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Utah</title>
   <link href="http://snorp.net/2005/06/03/utah.html"/>
   <updated>2005-06-03T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/06/03/utah</id>
   <content type="html">&lt;p&gt;I was in Utah last week for work.  It was good to see people, put some faces with names, etc.  Working from home has benefits, but it&amp;#8217;s nice to do things in person sometimes.  I was in the &lt;a href=&quot;http://developer.novell.com/devres/slab/&quot;&gt;SuperLab&lt;/a&gt;, testing &lt;a href=&quot;http://www.novell.com/products/zenworks&quot;&gt;ZENworks&lt;/a&gt; (of course).  It was pretty cool, and I&amp;#8217;m quite sure I&amp;#8217;ve never seen more computers in a single place before.&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://www.snorp.net/files/photos/superlab.jpg&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/photos/superlab-thumb.jpg&quot; style=&quot;border:none&quot;/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br&gt;&lt;i&gt;Novell SuperLab: one of a bajillion rows&lt;/i&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;
Haven&amp;#8217;t done any hacking on Muine lately.  Partially, because it won&amp;#8217;t even run for me currently (some kind of lame gtk-sharp exception).  One thing I was thinking of doing, is resurrecting fer&amp;#8217;s CD burning plugin.  I don&amp;#8217;t usually take the iPod with me in the car on short trips, and I&amp;#8217;ve wanted an easy way to burn stuff on a CD to use&amp;nbsp;there.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Enjoyed reading &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GUADEC&lt;/span&gt;&lt;/span&gt;-goers blogs.  Maybe one of these days I&amp;#8217;ll be able to go.  If there&amp;#8217;s another Boston summit, I should definitely try to make it to&amp;nbsp;that.&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Nokia/Maemo</title>
   <link href="http://snorp.net/2005/05/25/nokiamaemo.html"/>
   <updated>2005-05-25T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/05/25/nokiamaemo</id>
   <content type="html">&lt;p&gt;Like &lt;a href=&quot;http://planet.gnome.org&quot;&gt;everyone&lt;/a&gt; else, I am &lt;i&gt;totally&lt;/i&gt; stoked about the new &lt;a href=&quot;http://www.nokia.com/nokia/0,,75023,00.html&quot;&gt;Nokia 770&lt;/a&gt;.  The hardware looks sweet, but the fact that it is coupled with a sane open development platform just makes it ridiculously attractive.  Especially considering it&amp;#8217;s based on a platform we all know relatively well&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;The screenshots look really great.  One thing I wonder about, though, is how well the included apps deal with an unreliable network.  I mean, if I stroll out of range from my wifi, will all kinds of errors and stuff show up, or will it deal gracefully?  The &lt;a href=&quot;http://www.maemo.org&quot;&gt;development site&lt;/a&gt; mentions some things about getting events like &amp;#8220;low battery&amp;#8221; over dbus.  Hopefully &amp;#8220;network is down&amp;#8221; is the same kind of thing, and apps can just go into offline mode or&amp;nbsp;whatever.&lt;/p&gt;
&lt;p&gt;It would be really fabulous to get mono running on this thing.  I wonder if something like a &amp;#8220;compact edition&amp;#8221; of it would be&amp;nbsp;needed.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>more muine/iPod</title>
   <link href="http://snorp.net/2005/05/20/more-muineipod.html"/>
   <updated>2005-05-20T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/05/20/more-muineipod</id>
   <content type="html">&lt;p&gt;Martin Palma has gone to the work of packaging muine-ipod and ipod-sharp for Ubuntu hoary.  You can get them &lt;a href=&quot;http://www.antichaos.net/files/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Work progresses.  I&amp;#8217;ve still been getting used to &lt;a href=&quot;http://bazaar.canonical.com&quot;&gt;bazaar&lt;/a&gt;, which I&amp;#8217;m using for version control.  Overall I really like it.  I want to start learning some of the more advanced features,&amp;nbsp;though.&lt;/p&gt;
&lt;p&gt;The latest muine-ipod &lt;a href=&quot;http://www.snorp.net/files/bazaar-snaps/muine-ipod-snapshot.tar.gz&quot;&gt;snapshot&lt;/a&gt; has support for optionally syncing only the current playlist to the iPod.  I&amp;#8217;ve been told this works pretty well for shuffle users.  I still think we need some way to individually mark songs in the library for syncing (similar to what iTunes does I think?).  iPod Mini users would especially benefit from this, since they probably can&amp;#8217;t sync their entire library &amp;#8212; and composing a playlist would just be a bit ridiculous (6gb of music in a&amp;nbsp;playlist!).&lt;/p&gt;
&lt;p&gt;Also, I sent a patch to muine-list this week that added a plugin for inotify support.  It simply monitors the directories you&amp;#8217;ve added to muine, and if something gets added/removed/changed it takes the appropriate action on the song library.  I&amp;#8217;ve wanted this kind of behavior in a music player for &lt;b&gt;years&lt;/b&gt;, and now that inotify has come along it&amp;#8217;s finally possible.  I&amp;#8217;ve been using rml&amp;#8217;s inotify &lt;a href=&quot;http://primates.ximian.com/~rml/kernel-rml/suse-93-i586/&quot;&gt;kernel&lt;/a&gt; for SuSE 9.3, and it&amp;#8217;s working quite well.  You can get the patch + plugin &lt;a href=&quot;http://www.snorp.net/files/muine-inotify.tar.gz&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>iPod syncing for Muine</title>
   <link href="http://snorp.net/2005/05/11/ipod-syncing-for-muine.html"/>
   <updated>2005-05-11T00:00:00-07:00</updated>
   <id>http://snorp.net/2005/05/11/ipod-syncing-for-muine</id>
   <content type="html">&lt;p&gt;A while ago I started working on a plugin for Muine that syncs your library with an iPod.  I worked on it a bit more lately and it seems to be coming along, so I&amp;#8217;m trying to get people to test it.  You need &lt;a href=&quot;http://www.snorp.net/files/packages/ipod-sharp-0.0.3.tar.gz&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;http://www.snorp.net/files/packages/muine-ipod-0.0.3.tar.gz&quot;&gt;this&lt;/a&gt;, to&amp;nbsp;start.&lt;/p&gt;
&lt;p&gt;Right now there is no &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;HAL&lt;/span&gt;&lt;/span&gt; integration, as I&amp;#8217;m having an incredibly difficult time figuring out the correct way to integrate with that stuff.  What it will do, however, is mount/umount your iPod assuming it is setup correctly in fstab (correct device, &amp;#8216;user&amp;#8217; option, etc).  It defaults to /media/ipod for the mount point, but that is configurable through a gconf key&amp;nbsp;(/apps/muine/ipod/mount_path).&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been using it for the last few days with no serious problems.  I do suggest you backup your iTunesDB file before giving it a shot, though, as corrupting that is the worst thing that can happen.  You can find it at /media/ipod/iPod_Control/iTunes/iTunesDB.  If you encounter problems, feel free to &lt;a href=&quot;mailto:snorp@snorp.net&quot;&gt;email me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; You will need muine 0.8.3 or greater to use this plugin, as previous versions lack the necessary&amp;nbsp;interface.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Another Update:&lt;/b&gt; I&amp;#8217;ve checked ipod-sharp and muine-ipod into arch at &lt;a href=&quot;http://www.snorp.net/bazaar&quot;&gt;http://www.snorp.net/bazaar&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>rcd for fedora core 3</title>
   <link href="http://snorp.net/2005/03/30/rcd-for-fedora-core-3.html"/>
   <updated>2005-03-30T00:00:00-08:00</updated>
   <id>http://snorp.net/2005/03/30/rcd-for-fedora-core-3</id>
   <content type="html">&lt;p&gt;A volunteer has packaged rcd/rug for fc3, and I have put the rpms &lt;a href=&quot;http://www.snorp.net/files/packages/rcd-fc3/&quot;&gt;here&lt;/a&gt;.&amp;nbsp;Enjoy.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hula Hula Hula</title>
   <link href="http://snorp.net/2005/02/15/hula-hula-hula.html"/>
   <updated>2005-02-15T00:00:00-08:00</updated>
   <id>http://snorp.net/2005/02/15/hula-hula-hula</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.hula-project.org&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://linuxart.com/log/files/hula-logo-littlewaves.png&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I didn&amp;#8217;t want to be left&amp;nbsp;out.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>ipod-sharp</title>
   <link href="http://snorp.net/2005/01/25/ipod-sharp.html"/>
   <updated>2005-01-25T00:00:00-08:00</updated>
   <id>http://snorp.net/2005/01/25/ipod-sharp</id>
   <content type="html">&lt;p&gt;I just committed ipod-sharp to &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;, a library for manipulating iTunesDBs.  It&amp;#8217;s written entirely in C#.  Currently you can use it to add/remove songs, and manipulate any existing playlists.  There is also a cheesy little tool that lists the songs/playlists in a given&amp;nbsp;iTunesDB.&lt;/p&gt;
&lt;p&gt;I mostly wrote it to add iPod syncing to Muine.  I have a patch which does this, but it needs a lot of work still.  I haven&amp;#8217;t yet totally worked out how the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;HAL&lt;/span&gt;&lt;/span&gt; integration will happen, for instance.  For starters, I patched gnome-volume-manager to mount the appropriate partition when it sees an iPod and invoke &amp;#8216;muine &amp;#8212;ipod-sync &lt;mount_point&gt;&amp;#8217;.  But that doesn&amp;#8217;t cover unmounting.  Also apparently you need to &amp;#8216;eject&amp;#8217; the device for the iPod to put up the happy &amp;#8220;ok to disconnect&amp;#8221;&amp;nbsp;screen.&lt;/p&gt;
&lt;p&gt;You can get the code from the &amp;#8216;ipod-sharp&amp;#8217; module in gnome &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;, or &lt;a href=&quot;http://www.snorp.net/files/packages/ipod-sharp-0.0.1.tar.gz&quot;&gt;here&lt;/a&gt;.  Hopefully I&amp;#8217;ll get the Muine patch in a useable state soon.&lt;/mount_point&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>zmd</title>
   <link href="http://snorp.net/2004/09/02/zmd.html"/>
   <updated>2004-09-02T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/09/02/zmd</id>
   <content type="html">&lt;p&gt;In the last few months, Tambet and I have been working on the successor to rcd called zmd (ZENworks Management Daemon).  It is written in C#.  I did not choose the&amp;nbsp;name.&lt;/p&gt;
&lt;p&gt;Things are going pretty well, and a lot of stuff is starting to work.  We have an xmlrpc compatability layer for implementing the old rcd methods (just enough to make the old &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt;&lt;/span&gt; work), and a remoting layer for the new clients.  The xmlrpc stuff is pretty much complete, and you can use the old rug/red-carpet apps with it to install packages, etc.  Also we&amp;#8217;re writing a new &amp;#8216;rug&amp;#8217; in C#.  You can see it in action &lt;a href=&quot;http://www.snorp.net/files/screenshots/rug-transacting.png&quot;&gt;here&lt;/a&gt;.  In that shot, it&amp;#8217;s installing some stuff from the &amp;#8216;funktronics&amp;#8217; aptrpm&amp;nbsp;repository.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t have any code to share yet, but hopefully that will happen&amp;nbsp;soon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>hmmm</title>
   <link href="http://snorp.net/2004/08/31/hmmm.html"/>
   <updated>2004-08-31T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/08/31/hmmm</id>
   <content type="html">&lt;p&gt;A month or two ago I was watching a (bogus) documentary about M. Night Shyamalan.  This was the first time I&amp;#8217;d ever seen what he looked like, and immediately, I realized something.  I think maybe my boss is making blockbuster movies on the side.  Here is my&amp;nbsp;proof:&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;p&gt;&lt;img src=&quot;http://www.snorp.net/files/photos/shyamalan-small.png&quot; alt=&quot;shymalan&quot;/&gt;&amp;nbsp;&lt;img src=&quot;http://www.snorp.net/files/photos/naresh-small.jpg&quot; alt=&quot;not shyamalan&quot;/&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Tell me those are different people.&amp;nbsp;Seriously.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>wedding photos</title>
   <link href="http://snorp.net/2004/08/27/wedding-photos.html"/>
   <updated>2004-08-27T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/08/27/wedding-photos</id>
   <content type="html">&lt;p&gt;So, we finally got some wedding photos back.  I think this one is nice&amp;nbsp;:)&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://www.snorp.net/files/photos/bridal10.jpg&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/photos/bridal10-small.jpg&quot;  alt=&quot;amy in wedding gown&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>whoa, deja vu</title>
   <link href="http://snorp.net/2004/08/22/whoa%2C-deja-vu.html"/>
   <updated>2004-08-22T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/08/22/whoa,-deja-vu</id>
   <content type="html">&lt;p&gt;I really wish they would stop &lt;a href=&quot;http://insight.zdnet.co.uk/software/linuxunix/0,39020472,39164119-2,00.htm&quot;&gt;saying &lt;/a&gt; things like&amp;nbsp;this:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Red Hat&amp;#8217;s software technology is 100 percent open source. If you want to put us in a box, then the most obvious box is that Red Hat only, exclusively sells and supports open source &amp;#8212; &lt;span class=&quot;caps&quot;&gt;GPL&lt;/span&gt;&amp;#8217;d&amp;nbsp;software.&lt;/p&gt;
&lt;p&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Quite frankly, if tomorrow we decided to release a closed piece of software, literally half the engineers would quit on principal that&amp;nbsp;day.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s Paul Salazar, European Marketing Director for Red Hat.  Can someone please mail me an &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;&lt;/span&gt; to the source code for&amp;nbsp;Satellite?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>THIS JUST IN</title>
   <link href="http://snorp.net/2004/08/10/this-just-in.html"/>
   <updated>2004-08-10T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/08/10/this-just-in</id>
   <content type="html">&lt;p&gt;I hate&amp;nbsp;Todd.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>whirl2il</title>
   <link href="http://snorp.net/2004/07/20/whirl2il.html"/>
   <updated>2004-07-20T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/07/20/whirl2il</id>
   <content type="html">&lt;p&gt;Kris &amp;#8220;released&amp;#8221; his whir2il code today.  I haven&amp;#8217;t tried it yet, but the results he has had with it so far are very promising.  PInvoke is great and all, but being able to actually compile existing C/C++ code to bytecode is just so freaking&amp;nbsp;sweet.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>new place</title>
   <link href="http://snorp.net/2004/07/16/new-place.html"/>
   <updated>2004-07-16T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/07/16/new-place</id>
   <content type="html">&lt;p&gt;I moved today.  It went pretty well.  Amy and her parents helped out a lot so that was good.  Rupert is back online so that made people&amp;nbsp;happy.&lt;/p&gt;
&lt;p&gt;A guy (Darren Brierton) has been mailing me lately about rcd on fc2, and eventually he told me he wanted to get &lt;a href=&quot;http://www.redhat.com/archives/fedora-list/2004-July/msg03182.html&quot;&gt;rcd into fedora&lt;/a&gt;.  He totally&amp;nbsp;rules.&lt;/p&gt;
&lt;p&gt;9 days till wedding&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt;  I committed mono bindings for libredcarpet to &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt; this week.&amp;nbsp;Ph33r.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>GUADEC</title>
   <link href="http://snorp.net/2004/06/29/guadec.html"/>
   <updated>2004-06-29T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/06/29/guadec</id>
   <content type="html">&lt;p&gt;I totally wanted to go to &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GUADEC&lt;/span&gt;&lt;/span&gt;, but couldn&amp;#8217;t for various reasons (time and money, mostly).  It was almost like being there, though, when I was able to make fun of &lt;a href=&quot;http://primates.ximian.com/~dave/log&quot;&gt;Dave&lt;/a&gt; during his talk by proxy.  Seriously.  I think next year each room should have a projector showing a moderated &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IRC&lt;/span&gt;&lt;/span&gt; channel where people can ask&amp;nbsp;questions.&lt;/p&gt;
&lt;p&gt;Work has been going well lately, finally getting back into the groove after being pulled in different directions for a&amp;nbsp;while.&lt;/p&gt;
&lt;p&gt;Wedding plans are progressing, invitations went out last week.  Really starting to hit home now&amp;nbsp;:)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>You want me to give you what?!</title>
   <link href="http://snorp.net/2004/06/18/you-want-me-to-give-you-what%3F%21.html"/>
   <updated>2004-06-18T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/06/18/you-want-me-to-give-you-what?!</id>
   <content type="html">&lt;p&gt;There is this intersection near my apartment where quite frequently there will be someone begging for money or something.  Usually they have a cardboard sign with stuff like &amp;#8220;hungry need food&amp;#8221; on it.  Now, I&amp;#8217;m all in favor of helping people if they really need it, but today there was a guy &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LISTENING&lt;/span&gt;&lt;/span&gt; TO A &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GOD&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DAMN&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IPOD&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;WHILE&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BEGGING&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;FOR&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CASH&lt;/span&gt;&lt;/span&gt;.&amp;nbsp;Sigh.&lt;/p&gt;
&lt;p&gt;So, I committed my yum support to rcd today.  It rules.  Snapshot builds will have them soon (tomorrow morning I guess).  You can simply subscribe to the &amp;#8216;rcd-snaps&amp;#8217; channel and do a &amp;#8216;rug up&amp;#8217; to get it.  The yum support works a lot like the apt support, so you need to use something like open-carpet.org to get access to yum repos.  If people have some they would like to see in open-carpet.org, mail me and I&amp;#8217;ll add&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;I also committed some performance improvements that will help a lot if you&amp;#8217;re using a large package repository like open-carpet.org.&amp;nbsp;Yay.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Lightning sucks.</title>
   <link href="http://snorp.net/2004/06/16/lightning-sucks..html"/>
   <updated>2004-06-16T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/06/16/lightning-sucks.</id>
   <content type="html">&lt;p&gt;Yesterday a thunderstorm passed through.  There was lightning.  Apparently some of it got close enough to fry some of my electrical things.  Specifically, the stereo, gamecube, and wifi AP.  Also, the laptop&amp;#8217;s AC adapter was destroyed (but I have a new one thanks to &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt;&lt;/span&gt; and all is&amp;nbsp;well).&lt;/p&gt;
&lt;p&gt;So today at lunch I went and bought a new wifi switch.  I picked up a Linksys WRT54G, the one that has open firmware.  So far it rules.  No, I mean it totally rules.  You should run, not walk, to the nearest Best Buy (or whatever).  The open firmware lets you do local dns stuff.  So you can have actual dns names for the machines on your &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LAN&lt;/span&gt;&lt;/span&gt;.  This is the feature I have wanted most in these sort of boxes, and none of them appear to have it (except for this alternative firmware, from &lt;a href=&quot;http://www.sveasoft.com&quot;&gt;sveasoft&lt;/a&gt;).  Also supposedly the sveasoft firmware has other neat stuff like a &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;VPN&lt;/span&gt;&lt;/span&gt;&amp;nbsp;server.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Red&amp;nbsp;Carpet&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Also I&amp;#8217;ve worked the rest of the bugs out of the yum &lt;a href=&quot;http://www.snorp.net/files/patches/rcd_jwillcox_yum_and_speedup_v2.diff&quot;&gt;support&lt;/a&gt; for rcd.  I think it&amp;#8217;s pretty solid now.  It even avoids downloading the headers you already have (much like yum itself does).  I should commit it soon.  I know Shaver and Vlad have been using rcd on FC2, so it might be nice to get some of the yum repos that don&amp;#8217;t also have apt&amp;nbsp;ones.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been thinking about writing a tool that creates an open carpet repo out of a yum or apt one.  That way apt/yum repo maintainers can just run this magical script without having to do the (relatively painless) process of setting up an open-carpet repo &amp;#8216;from scratch&amp;#8217;.  I wonder if something like this would help open-carpet&amp;nbsp;adoption?&lt;/p&gt;
&lt;p&gt;Oh, I forgot to blog about this earlier, but anyone that has seen the &amp;#8220;rcd eats 99% of my cpu&amp;#8221; bug will be happy to know that the latest release fixes it.  If you use rcd and see this bug in the latest release &lt;b&gt;please &lt;a href=&quot;http://bugzilla.ximian.com&quot;&gt;report&lt;/a&gt; it&lt;/b&gt;.  I promise I will hunt it down and kill it dead.  Either that or I will get smart people like Tambet or &lt;a href=&quot;http://primates.ximian.com/~danw/&quot;&gt;Dan Winship&lt;/a&gt; to do it for me (who fixed it in the first&amp;nbsp;place).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A long time ago (like a year or more) I worked on some code that allowed you to migrate windows from one display/screen to another.  Basically it was just some X message passing stuff that ended up calling gtk_window_set_screen().  I wrote a spec for it and posted it to wm-spec-list, but nobody really seemed that interested.  I&amp;#8217;ve started working on it again, and I think I&amp;#8217;ll give the spec/patch another go.  There is lots of badness in gtk+ with closing displays, and that sucks.  Also there doesn&amp;#8217;t seem to be an async way of opening a display, so if you try to migrate a window to someplace that&amp;#8217;s not listening on the right port or whatever, it blocks the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>FUD</title>
   <link href="http://snorp.net/2004/05/21/fud.html"/>
   <updated>2004-05-21T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/05/21/fud</id>
   <content type="html">&lt;p&gt;Apparently Red Hat&amp;#8217;s &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;FUD&lt;/span&gt;&lt;/span&gt; campaign extends to more than just mono.  From a &lt;a href=&quot;http://www.computing.co.uk/Analysis/1155278&quot;&gt;computing.co.uk&lt;/a&gt; interview with Matthew Szulik:&lt;br /&gt;
&lt;i -quote&gt;&lt;br /&gt;
&lt;b&gt;Why Red Hat versus Novell-SuSE or Sun &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;JDS&lt;/span&gt;&lt;/span&gt; on the&amp;nbsp;desktop?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;They&amp;#8217;re all proprietary except us. They all have proprietary technology inside, not 100 per cent open source software. They continue to lock customers in to limit&amp;nbsp;choice.&lt;/p&gt;
&lt;p&gt;If you buy the Sun desktop, you&amp;#8217;re going to buy into the proprietary Sun architecture. With SuSE there&amp;#8217;s Red Carpet, integrated with other Novell technologies, still proprietary.&lt;br /&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m sorry, did I miss something?  Was &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RHN&lt;/span&gt;&lt;/span&gt; recently freed unto the world?&amp;nbsp;Sigh.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Updated Wireless Stuff</title>
   <link href="http://snorp.net/2004/05/17/updated-wireless-stuff.html"/>
   <updated>2004-05-17T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/05/17/updated-wireless-stuff</id>
   <content type="html">&lt;p&gt;I took some time today to update my wireless patches to latest &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;, and the latest development release of wireless-tools.  If you would like to try it, here are&amp;nbsp;instructions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get the latest &lt;a href=&quot;http://www.snorp.net/files/patches/gnome_applets_jwillcox_wireless_switching_v2.tar.gz&quot;&gt;wireless-applet&lt;/a&gt; and &lt;a href=&quot;http://www.snorp.net/files/patches/iwlib_jwillcox_scanning_27pre22.diff&quot;&gt;wireless-tools&lt;/a&gt;&amp;nbsp;patches&lt;/li&gt;
&lt;li&gt;Get the latest &lt;a href=&quot;http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.27.pre22.tar.gz&quot;&gt;wireless-tools&lt;/a&gt; (version 27pre22) and apply iwlib_jwillcox_scanning_27pre22.diff to it, install it,&amp;nbsp;etc.&lt;/li&gt;
&lt;li&gt;Unpack the wireless-applets patch tarball thingy in the root of the gnome-applets tree.  Apply the gnome_applets_jwillcox_wireless_v4.diff patch.  Run autogen, make,&amp;nbsp;etc.&lt;/li&gt;
&lt;li&gt;Enjoy.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;This still only works on Red Hat systems due to the usage of consolehelper.  You can fix that by putting appropriate root-getting-and-essid-setting-and-renew-dhcp-lease bits for your distro in the wireless-applet-helper&amp;nbsp;script.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.snorp.net/files/screenshots/wireless-applet.png&quot;&gt;Screenshot&lt;/a&gt; for those of you who haven&amp;#8217;t seen&amp;nbsp;it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Down with The Man</title>
   <link href="http://snorp.net/2004/05/17/down-with-the-man.html"/>
   <updated>2004-05-17T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/05/17/down-with-the-man</id>
   <content type="html">&lt;p&gt;So, I&amp;#8217;ve ditched &lt;a href=&quot;http://www.movabletype.org&quot;&gt;MovableType&lt;/a&gt; in favor of &lt;a href=&quot;http://www.wordpress.org&quot;&gt;WordPress&lt;/a&gt;.  I have to say I&amp;#8217;m fairly impressed with it.  The installation (including the MT import process) was incredibly simple and painless, save one problem with the dates for the imported entries which was hosing the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RSS&lt;/span&gt;&lt;/span&gt;&amp;nbsp;feed.&lt;/p&gt;
&lt;p&gt;Hooray for Free&amp;nbsp;Software.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hacking</title>
   <link href="http://snorp.net/2004/05/15/hacking.html"/>
   <updated>2004-05-15T00:00:00-07:00</updated>
   <id>http://snorp.net/2004/05/15/hacking</id>
   <content type="html">&lt;p&gt;&lt;b&gt;Nautilus&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I actually did some nautilus hacking recently.  It had been a while, and it was pretty fun.  I added desktop item editing to the property&amp;nbsp;window.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/ditem-launcher-edit.png&quot;/&gt;&lt;/div&gt;
&lt;p&gt;It&amp;#8217;s pretty simple.  Way better than the UI in gnome-desktop-item-edit, &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IMO&lt;/span&gt;&lt;/span&gt;.  Anyway, Dave branched nautilus the other day and that&amp;#8217;s now in &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;.  Now someone needs to fix the UI for adding new launchers/links&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Work&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I also added yum support to the Red Carpet daemon this week.  This should be particularly interesting to Fedora users, since there seem to be a lot of apt and yum repositories for that (and rcd supports both now).  I haven&amp;#8217;t committed the patch yet due to some other stuff going on, but if anyone wants to try it just mail&amp;nbsp;me.&lt;/p&gt;
&lt;p&gt;Also, Petreley sucks.  That is&amp;nbsp;all.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Lots of Stuff</title>
   <link href="http://snorp.net/2004/03/26/lots-of-stuff.html"/>
   <updated>2004-03-26T00:00:00-08:00</updated>
   <id>http://snorp.net/2004/03/26/lots-of-stuff</id>
   <content type="html">&lt;p&gt;So, haven&amp;#8217;t blogged in a pretty long time.  Lots has happened.  Most notably, I got engaged to my long-time girlfriend, Amy!  We set the date for July.  I&amp;#8217;m really happy!&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;Just got back from BrainShare.  It was pretty cool.  I took some pics, but I don&amp;#8217;t have them pulled off the camera yet.  I think we were all kind of in awe about the number of Large Monkey Buttons plastered all over&amp;nbsp;:)&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://www.snorp.net/files/photos/floor-button.png&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/photos/floor-button-thumb.png&quot;/&gt;&lt;/a&gt;&lt;br&gt;&lt;i&gt;the floor near the mono booth&lt;/i&gt;&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Yet More Wireless Applet Stuff</title>
   <link href="http://snorp.net/2004/02/16/yet-more-wireless-applet-stuff.html"/>
   <updated>2004-02-16T00:00:00-08:00</updated>
   <id>http://snorp.net/2004/02/16/yet-more-wireless-applet-stuff</id>
   <content type="html">&lt;p&gt;So, more wireless applet hacking today.  This time I fixed the build so it installs all the nifty pam magic.  Patches for all.  Apply &lt;a href=&quot;http://www.snorp.net/files/patches/iwlib_jwillcox_scanning_v2.diff&quot;&gt;this&lt;/a&gt; patch to the latest wireless-tools development &lt;a href=&quot;http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.27.pre9.tar.gz&quot;&gt;version&lt;/a&gt;, and unpack/apply &lt;a href=&quot;http://www.snorp.net/files/patches/gnome_applets_jwillcox_wireless_switching_v1.tar.gz&quot;&gt;this&lt;/a&gt; one to gnome-applets &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;.  You&amp;#8217;ll want to pass something like &amp;#8212;sysconfdir=/etc to configure to get the pam stuff&amp;nbsp;working.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;[Disclaimer]&lt;/b&gt; I have only tested this on my own machine, which is running Fedora Core 1.  Other RedHat systems will probably work.  Basically, &amp;#8220;&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ESSID&lt;/span&gt;&lt;/span&gt;=&amp;lt;essid&amp;gt; /sbin/ifup &amp;lt;interface&amp;gt;&amp;#8221; needs to work, and you need&amp;nbsp;consolehelper.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>more wireless stuff</title>
   <link href="http://snorp.net/2004/01/24/more-wireless-stuff.html"/>
   <updated>2004-01-24T00:00:00-08:00</updated>
   <id>http://snorp.net/2004/01/24/more-wireless-stuff</id>
   <content type="html">&lt;p&gt;Spent some time today and yesterday hacking on the wireless applet some more.  Now you can double-click a network to switch to it (sets the essid and gets a dhcp lease).  I was thinking of what the applet should do while its in the process of switching.  Getting a IP can take some time.  For now, at least, I just made it insensitive with a &amp;#8220;switching&amp;#8230;&amp;#8221;&amp;nbsp;message.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/wireless-switching.png&quot;/&gt;&lt;/div&gt;
&lt;p&gt;Anyway, I finally sent a patch to Jean today (the wireless-tools maintainer) for the scanning stuff.  Hopefully it&amp;#8217;ll make it into the next wireless-tools release.  It&amp;#8217;s a shame I didn&amp;#8217;t get this stuff done before the feature&amp;nbsp;freeze&amp;#8230;.&lt;/p&gt;
&lt;p&gt;I also spent a few minutes on recent-files stuff this week.  I reverted the (unstable and unfinished) changes I made last year, and applied a patch from bugzilla that fixed some &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;NFS&lt;/span&gt;&lt;/span&gt; file locking issues.  I think by gnome 2.8, dbus will have matured and maybe we&amp;#8217;ll be able to rewrite recent-files as a dbus service instead of the file spec we have&amp;nbsp;now&amp;#8230;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Untitled 1</title>
   <link href="http://snorp.net/2003/12/16/untitled-1.html"/>
   <updated>2003-12-16T00:00:00-08:00</updated>
   <id>http://snorp.net/2003/12/16/untitled-1</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been hacking on the wireless applet a bit the last couple days.  This is the result:&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://www.snorp.net/files/screenshots/wireless-applet.png&quot;/&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Right now it just lists the access points and the quality.  It would be sweet if you could switch to another essid from there,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;Paolo has been working on recent-files stuff.  I feel guilty for not helping him yet, so maybe I&amp;#8217;ll work on that&amp;nbsp;tonight.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>car and stuff</title>
   <link href="http://snorp.net/2003/12/04/car-and-stuff.html"/>
   <updated>2003-12-04T00:00:00-08:00</updated>
   <id>http://snorp.net/2003/12/04/car-and-stuff</id>
   <content type="html">&lt;p&gt;My Dad&amp;#8217;s old car (which I have been driving) was getting in pretty bad shape, so I bought a new (used) car on Saturday.  It&amp;#8217;s a green VW Passat.  It&amp;#8217;s totally sexy.  I took pictures but don&amp;#8217;t have them up&amp;nbsp;anywhere.&lt;/p&gt;
&lt;p&gt;Work isn&amp;#8217;t taking as much of my time now, which is good I guess.  Unfortunately, after hacking all day at work I have little desire to hack on &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt;, which is bad.  The &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/span&gt;/&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt;&lt;/span&gt; freeze is on Monday and recent-files &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;STILL&lt;/span&gt;&lt;/span&gt; isn&amp;#8217;t ready to go in.  Paolo has been working hard on a new document model and other good stuff, though, so maybe we&amp;#8217;ll make it.  OO.o has its own implementation, though, so we need to coordinate with those guys on what is&amp;nbsp;happening&amp;#8230;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Chema</title>
   <link href="http://snorp.net/2003/11/10/chema.html"/>
   <updated>2003-11-10T00:00:00-08:00</updated>
   <id>http://snorp.net/2003/11/10/chema</id>
   <content type="html">&lt;p&gt;Wow, talk about some shocking news.  Chema Celorio died last night after a skydiving&amp;nbsp;accident.&lt;/p&gt;
&lt;p&gt;Chema was the person who got me involved with &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt;.  I saw his &lt;a href=&quot;http://mail.gnome.org/archives/gnome-love/2001-October/msg00008.html&quot;&gt;post&lt;/a&gt; to the gnome-love mailing list, and decided I wanted to help out.  He was more than willing to guide me along, often sinking quite a bit of time into answering my questions, etc.  I met him for the first time in real life this summer on my first trip to Boston after being hired.  He was staying at the company apartment in between sales trips.  One night we were bored and watched a bunch of video he had recorded from his jumps.  Chema lived life to the max, and he will certainly be&amp;nbsp;missed.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>what's that on your face?</title>
   <link href="http://snorp.net/2003/09/19/what%27s-that-on-your-face%3F.html"/>
   <updated>2003-09-19T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/09/19/what's-that-on-your-face?</id>
   <content type="html">&lt;p&gt;See, I knew I wouldn&amp;#8217;t keep this thing&amp;nbsp;updated.&lt;/p&gt;&lt;p&gt;
&lt;p&gt;Going to Boston again on Sunday.  Mucho trabajo to do.  Things have been going pretty well,&amp;nbsp;though.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
A week or so ago I was messing around with creating panel applets in C#.  Originally, I tried to wrap PanelApplet, but that didn&amp;#8217;t go so well.  I ended up writing some super hacky C glue to do the job.  It worked pretty well.  I think if I get a chance I might look at trying to wrap PanelApplet again.  It really shouldn&amp;#8217;t be that hard.  After all, PanelApplet is pretty much a standard&amp;nbsp;GObject.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
I started on a tutorial on writing nautilus context menus and property pages in python.  I&amp;#8217;ve wanted to do this for a while now.  These components are super easy to write in python.  Plus you can do hella cool stuff with them, so I think it may be attractive to&amp;nbsp;newbies.&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>take my word for it</title>
   <link href="http://snorp.net/2003/09/19/take-my-word-for-it.html"/>
   <updated>2003-09-19T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/09/19/take-my-word-for-it</id>
   <content type="html">&lt;p&gt;Do not, under any circumstances, see the movie &amp;#8220;Cabin Fever&amp;#8221;.  Worst.  Movie.&amp;nbsp;Ever.&lt;/p&gt;&lt;p&gt;
&lt;p&gt;If you&amp;#8217;re feeling brave, you should totally check out the latest red carpet client.  It supports apt rpm repositories and multiple servers now.  It&amp;#8217;s very sweet.  There is a fairly recent one in the &amp;#8216;rcd-snaps&amp;#8217; channel if you want to try&amp;nbsp;it.&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>titles suck</title>
   <link href="http://snorp.net/2003/09/05/titles-suck.html"/>
   <updated>2003-09-05T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/09/05/titles-suck</id>
   <content type="html">&lt;p&gt;Yeah, so, it took me a while to get the metaWeblog support working with Seth&amp;#8217;s blogger applet (as some of the planet gnome readers may have noticed).  Seems to be working well now&amp;nbsp;though.&lt;/p&gt;&lt;p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt; 2.4 is coming out soon.  Best &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt; Ever.  I don&amp;#8217;t think I did anything, though, except fix a couple bugs.  School really had me busy during the&amp;nbsp;end&amp;#8230;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
PyGTK 2.0 was released!  This is great news!  I have some libwnck bindings laying around that I&amp;#8217;m going to try to get in now.  I originally made them so I could easily test the window migration extensions to gtk/wnck I was working on.  That kind of flopped though (I am lazy, plus the community did not seem very interested in&amp;nbsp;it).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
Someone filed this totally sweet bug &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=121455&quot;&gt;report&lt;/a&gt; against the recent-files stuff the other&amp;nbsp;day.&lt;/p&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I'm trying out Seth's blogger</title>
   <link href="http://snorp.net/2003/09/02/i%27m-trying-out-seth%27s-blogger.html"/>
   <updated>2003-09-02T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/09/02/i'm-trying-out-seth's-blogger</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m trying out Seth&amp;#8217;s blogger applet.  Testing&amp;nbsp;1..2..3&amp;#8230;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>give credit where credit is due</title>
   <link href="http://snorp.net/2003/08/17/give-credit-where-credit-is-due.html"/>
   <updated>2003-08-17T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/08/17/give-credit-where-credit-is-due</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been listening to music for like 12 hours straight now using the latest Rhythmbox from &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt;&lt;/span&gt;.  I&amp;#8217;m happy to say that it hasn&amp;#8217;t crashed even &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ONCE&lt;/span&gt;&lt;/span&gt; during this time.  The UI feels snappy, and everything Just Works (with the exception of it not playing a couple of my mp3s, but whatever).  &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;MAD&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PROPS&lt;/span&gt;&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;WALTERS&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;AND&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt;&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RHYTHMBOX&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TEAM&lt;/span&gt;&lt;/span&gt;!&lt;/p&gt;
&lt;p&gt;So, what I&amp;#8217;m trying to say is, if you gave up on Rhythmbox back in the day, give it another chance.  Oh, here&amp;#8217;s a &lt;a href=&quot;http://www.snorp.net/files/screenshots/rhythmbox.png&quot;&gt;screenshot&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Wow, I'm lame</title>
   <link href="http://snorp.net/2003/08/16/wow%2C-i%27m-lame.html"/>
   <updated>2003-08-16T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/08/16/wow,-i'm-lame</id>
   <content type="html">&lt;p&gt;A heckuvalot has happened since my last post, I suppose.  Notably, Novell acquired Ximian.  As &lt;a href=&quot;http://primates.ximian.com/~dave/log&quot;&gt;Dave&lt;/a&gt; said, some people were able to access the intranet today (I was not one of them).  However, the org chart on the site shows me as reporting directly to the Vice Chairman of Novell.  I don&amp;#8217;t think Dave will be calling me a dorkwad anymore (I demoted him once already&amp;nbsp;today).&lt;/p&gt;
&lt;p&gt;I haven&amp;#8217;t done any gnome hacking lately, and unfortunately I don&amp;#8217;t see any happening in the near future.  Work is keeping me pretty busy.  Hopefully I&amp;#8217;ll have some time after this development cycle&amp;nbsp;ends.&lt;/p&gt;
&lt;p&gt;Had a great time in Boston while I was there.  In the conference call(s) today, I realized that I was able to put a face to nearly every voice I heard, which was a nice&amp;nbsp;change.&lt;/p&gt;
&lt;p&gt;The Rio portable ogg &lt;a href=&quot;http://www.digitalnetworksna.com/shop/_templates/item_main_Rio.asp?model=220&amp;cat=53&quot;&gt;player&lt;/a&gt; which I&amp;#8217;ve been salivating over for a while was finally anounced.  I ordered one immediately.  It&amp;#8217;s going to kick &lt;b&gt;so much ass&lt;/b&gt;.  I&amp;#8217;m a little worried about linux integration, though.  Supposedly, the little bugger runs a webserver and has a java applet which you can use to transfer files to it.  While this would probably work, what I would really like is a way to mount the drive or use a gnome-vfs module.  The developers of the Karma are the same ones who made the empeg linux-based car mp3 player, so maybe they&amp;#8217;ll be nice and release some code and/or&amp;nbsp;specs.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Update</title>
   <link href="http://snorp.net/2003/08/01/update.html"/>
   <updated>2003-08-01T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/08/01/update</id>
   <content type="html">&lt;p&gt;I would like to retract the &amp;#8220;except Ian&amp;#8221; remark made on July 20th.  That is&amp;nbsp;all.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I'm sorry, but it was funny.</title>
   <link href="http://snorp.net/2003/08/01/i%27m-sorry%2C-but-it-was-funny..html"/>
   <updated>2003-08-01T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/08/01/i'm-sorry,-but-it-was-funny.</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m in Boston again.  Been here since Sunday.  Things have been going fairly well I suppose.  It seems I am starting to get my arms around red carpet now, as I was able to fix a few things&amp;nbsp;today.&lt;/p&gt;
&lt;p&gt;A lot of other remote guys are in town too, so that&amp;#8217;s cool.  I finally got to meet Tambet and&amp;nbsp;Aidan.&lt;/p&gt;
&lt;p&gt;I fixed a small bug in nautilus yesterday.  I miss hacking on it.  I guess there are big plans for 2.6, though, so maybe I can get in on that if I have time.  It&amp;#8217;s really great to see medusa getting some love.  I haven&amp;#8217;t tried it out yet, but I hear Curtis Hovey has been doing great&amp;nbsp;things.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve totally neglected dashboard this week.  I have a little patch sitting on my machine at home that fixes up the epiphany frontend and turns it into a plugin.  Hopefully it won&amp;#8217;t be too out of date when I get back next&amp;nbsp;week&amp;#8230;..&lt;/p&gt;
&lt;p&gt;I bought &amp;#8220;Cat&amp;#8217;s Cradle&amp;#8221; by Kurt Vonnegut and read it on the trip to Boston.  I was only expecting to get maybe half-way done with it, but it turns out I was able to read the whole thing due to my flight(s) taking so long.  In Indianapolis, we sat on the tarmac for like 45 minutes waiting for a new flight plan (apparently there was some bad weather in the original route), so I was like an hour late to &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;JFK&lt;/span&gt;&lt;/span&gt;.  At &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;JFK&lt;/span&gt;&lt;/span&gt;, we had to wait for a flight plan again.  Then, they found out they lost the captain&amp;#8217;s luggage so we had to wait on that.  When we finally got out of the terminal, we were like 46th in line for takeoff, so we slowly taxiied around for a while.  During the taxi, the cabin filled with smoke due to some trivial air-conditioning snafu.  Everyone freaked out and we went back to the tarmac.  Two hours later, or so, we were finally in the&amp;nbsp;air.&lt;/p&gt;
&lt;p&gt;Anyway, &amp;#8220;Cat&amp;#8217;s Cradle&amp;#8221; was really good.  I think I&amp;#8217;m going to get another Vonnegut to read on the way back.  Anyone have a&amp;nbsp;suggestion?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I am a moron</title>
   <link href="http://snorp.net/2003/07/20/i-am-a-moron.html"/>
   <updated>2003-07-20T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/07/20/i-am-a-moron</id>
   <content type="html">&lt;p&gt;I had a pretty nice week in Boston, generally.  All the Ximian guys/gals were cool (except Ian :) ).  I even managed to get some actual work done.  So, things were going well up until Friday.  That&amp;#8217;s when I missed my plane, because I thought it was leaving on Saturday.  Ugh.  I called the travel agency, and managed to get another flight out at 6:00 AM.  I ended up getting to Indy around 11 or so.  Then, I discover that my car&amp;#8217;s battery is dead.  Nice.  Eventually, I get a jump from the parking lot dudes, and I&amp;#8217;m on my way.  Pretty tired by the time I get home, having not slept for about 30 hours.  Slept the rest of the day.  Have to deal with the car today, and find out what ran the battery down.  I pulled a fuse to what I thought was the culprit yesterday (there is a penny in the cigarette lighter &amp;#8212; seems a likely cause), so we&amp;#8217;ll see how it&amp;nbsp;goes.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>let's get this party started</title>
   <link href="http://snorp.net/2003/07/12/let%27s-get-this-party-started.html"/>
   <updated>2003-07-12T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/07/12/let's-get-this-party-started</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m leaving tomorrow for my first trip to Boston.  I&amp;#8217;m pretty psyched about&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;Worked a bit on epiphany/dashboard today.  Updated the frontend patch to work with the new &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/span&gt;, and also built an &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RPM&lt;/span&gt;&lt;/span&gt; (&lt;a href=&quot;http://www.snorp.net/files/packages/epiphany-0.7.3-2.i386.rpm&quot;&gt;http://www.snorp.net/files/packages/epiphany-0.7.3-2.i386.rpm&lt;/a&gt;).  It requires mozilla from xd2 (sorry, it&amp;#8217;s what I&amp;nbsp;have).&lt;/p&gt;
&lt;p&gt;It sounds like the dashboard demo at the o&amp;#8217;reilly conference went pretty well.  I suppose it will be getting even &lt;b&gt;more&lt;/b&gt; attention now.  Good&amp;nbsp;stuff.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>back to work</title>
   <link href="http://snorp.net/2003/07/07/back-to-work.html"/>
   <updated>2003-07-07T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/07/07/back-to-work</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m back home now.  Had a great weekend at the lake, as usual.  Went sailing on the catamaran, watched fireworks, ate,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;Some friends of the people I was visiting are moving, and they had an old desk they were trying to get rid of.  Amazingly, I found a way to transport it back down to Bloomington, so now I have a desk.&amp;nbsp;Sweet.&lt;/p&gt;
&lt;p&gt;Looks like Nat (and his trusty sidekicks) made a bunch of progress on Dashboard over the weekend.  I wonder if that guy sleeps.  It appears my ephy patch to make it send cluepackets is outdated now, and needs some more work.  I should find time to fix&amp;nbsp;it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>ok, ok, stop hounding me</title>
   <link href="http://snorp.net/2003/07/03/ok%2C-ok%2C-stop-hounding-me.html"/>
   <updated>2003-07-03T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/07/03/ok,-ok,-stop-hounding-me</id>
   <content type="html">&lt;p&gt;Tomorrow will end my first week as a Ximian employee.  So far, I&amp;#8217;m feeling pretty useless, having done exactly one productive thing the whole week.  I&amp;#8217;m sure I&amp;#8217;ll get the hang of things eventually, but, you know, I&amp;#8217;m&amp;nbsp;impatient.&lt;/p&gt;
&lt;p&gt;4th of July is on Friday.  My family sort of has standing plans with some friends of ours who live on a lake.  So, the girlfriend and I are heading up there tomorrow night.  It&amp;#8217;s always a great time, and I&amp;#8217;m looking forward to it again this&amp;nbsp;year.&lt;/p&gt;
&lt;p&gt;Talked with a guy over email about the recent-files spec (he wondered why I was using &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt;&lt;/span&gt;), and then today with Federico on &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IRC&lt;/span&gt;&lt;/span&gt; (OO.o stuff).  It has been a long time since I touched that code.  I need to get it in shape so I don&amp;#8217;t miss yet &lt;b&gt;another&lt;/b&gt; opportunity to get it in the platform (2.6).  Actually, by then maybe I&amp;#8217;ll be able to redo it as a set of D-Bus messages instead of specifying the storage mechanism.  Seems like it would be far&amp;nbsp;better.&lt;/p&gt;
&lt;p&gt;Everyone and their dog is hacking on &lt;a href=&quot;http://www.nat.org/dashboard&quot;&gt;dashboard&lt;/a&gt;.  It sounds pretty freaking&amp;nbsp;cool.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>life.start()</title>
   <link href="http://snorp.net/2003/06/26/life.start.html"/>
   <updated>2003-06-26T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/06/26/life.start</id>
   <content type="html">&lt;p&gt;I moved into my new apartment yesterday.  It was a fairly painless experience all in all.  I don&amp;#8217;t have any furniture yet (it&amp;#8217;s coming this weekend), so that kind of sucks.  Sleeping on the floor last night especially&amp;nbsp;sucked.&lt;/p&gt;
&lt;p&gt;Today was officially my first day working for Ximian.  It went pretty well I think.  Hopefully, I&amp;#8217;ll be able to get up to speed quickly and start making useful contributions soon.  I was able to get a mostly working development version of &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RCE&lt;/span&gt;&lt;/span&gt; on my machine today, which was about the only semi-productive thing I did.  It&amp;#8217;s clear I have a lot to learn, but I&amp;#8217;m looking forward to it.  Also, my first trip to Boston was arranged today.  I&amp;#8217;m really looking forward to that too.  It&amp;#8217;ll be totally cool meeting all the [ex-]gnomies and hopefully getting a good handle on my&amp;nbsp;job.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>New Site</title>
   <link href="http://snorp.net/2003/06/16/new-site.html"/>
   <updated>2003-06-16T00:00:00-07:00</updated>
   <id>http://snorp.net/2003/06/16/new-site</id>
   <content type="html">&lt;p&gt;I have snorp.net now.  Hooray.  Other than having &lt;a href=&quot;mailto:snorp@snorp.net&quot;&gt;snorp@snorp.net&lt;/a&gt; and this blog, I&amp;#8217;m not sure why I really want my own domain.  I guess I&amp;#8217;ll use the webspace for posting screenshots and stuff, like I did with the IU webspace.  Of course, I haven&amp;#8217;t updated my blog on &lt;a href=&quot;http://www.advogato.org/person/snorp&quot;&gt;Advogato&lt;/a&gt; forever so I&amp;#8217;ll probably end up ignoring this one&amp;nbsp;too.&lt;/p&gt;
&lt;p&gt;So, what&amp;#8217;s been happening?  I graduated in May.  I&amp;#8217;m pretty happy about that.  I even found a job (!).  I was able to land a 10 week contract job the week after I graduated.  After I accepted it, though, another job fell in my lap.  And not just any job, one at &lt;a href=&quot;http://www.ximian.com&quot;&gt;Ximian&lt;/a&gt;!  I accepted it just when I was planning on leaving for California (the location of the contract job).  Luckily, the guy who hired me for the contract was really cool about it (he had told me before that if I found a permanent job, he would have no problem with me bailing).  I start at Ximian in a week or so, working on &lt;a href=&quot;http://www.ximian.com/products/redcarpet&quot;&gt;Red Carpet&lt;/a&gt;.  Red Carpet is very cool, and I&amp;#8217;m sure I&amp;#8217;ll love working on it.  &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;WOO&lt;/span&gt;&lt;/span&gt;!!&lt;/p&gt;
&lt;p&gt;In other news, I have been working on some code which lets users migrate windows to other screens or displays.  So, for instance, if you have an app running on another machine you could simply pull it to your current display.  A simpler usage might be to move a window between two screens on a non-xinerama multihead machine.  I think it&amp;#8217;s pretty cool.  Nobody has said anything on xdg-list or wm-spec-list when I&amp;#8217;ve posted about it, though, so maybe it&amp;#8217;s not that cool?  Anyway.  I need to talk to Owen about it.  Maybe he&amp;#8217;ll let me put it in&amp;nbsp;gtk+.&lt;/p&gt;
&lt;p&gt;I finished the file monitoring system for the school project.  It works ok for polling, but the dnotify backend is pretty buggy.  If I can find some time to work on it, I think it may be ready in the &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt; 2.6 time&amp;nbsp;frame.&lt;/p&gt;
&lt;p&gt;Haven&amp;#8217;t done much &lt;span class=&quot;caps&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNOME&lt;/span&gt;&lt;/span&gt; hacking generally, which pretty much sucks.  I have been totally useless in the 2.4 cycle.  I did fix a couple nautilus bugs (Yes Dave, &lt;b&gt;2&lt;/b&gt; bugs!), so that&amp;#8217;s good I guess.  Still plenty of bug-fixing time to go, so maybe I&amp;#8217;ll get my ass in gear one of these&amp;nbsp;days.&lt;/p&gt;
</content>
 </entry>
 
 
</feed>
