<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:night_watch</id>
  <title>“Nightwatch”</title>
  <subtitle>Every political and economic issue can be solved by linear correlation in Excel</subtitle>
  <author>
    <name>“Nightwatch”</name>
  </author>
  <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom"/>
  <updated>2008-06-28T01:47:46Z</updated>
  <lj:journal username="night_watch" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://night-watch.livejournal.com/data/atom" title="“Nightwatch”"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:105227</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/105227.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=105227"/>
    <title>night_watch @ 2008-06-27T20:47:00</title>
    <published>2008-06-28T01:47:46Z</published>
    <updated>2008-06-28T01:47:46Z</updated>
    <content type="html">I've started work on a mod of Lua. Seems that everyone who uses Lua does this eventually... it's interesting how its internal simplicity leads to fragmentation.&lt;br /&gt;&lt;br /&gt;Anyhow, here's what I have planned:&lt;br /&gt;- Curly brace syntax instead of paired keywords. Sorry, but "if then else end" is pretty baroque at this point. Braces are nicely Huffman coded.&lt;br /&gt;- Mandatory semicolons.&lt;br /&gt;- Arrays index from 0. Dijkstra is completely right on this one.&lt;br /&gt;- fn as an abbreviation for function. Also, fn(x) : foo should be accepted as shorthand for function(x) { return foo; }&lt;br /&gt;- No tuples. Tuples are lists instead. a, b, c is shorthand for [ a, b, c ].&lt;br /&gt;- On that note, tables are initialized as { key: value }, allowing native JSON compatibility.&lt;br /&gt;- A unit type like OCaml, written as ().&lt;br /&gt;- All functions take one argument and return one argument, just like OCaml. Zero argument functions are invoked like f(); i.e. applying f to unit. Multiple argument functions are passed a liist.&lt;br /&gt;- Method invocation with -&amp;gt;, just like Perl and C++.&lt;br /&gt;- Maybe some form of pattern matching? Not sure how to do this correctly without bloating the language.&lt;br /&gt;&lt;br /&gt;Suggestions, comments?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:105170</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/105170.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=105170"/>
    <title>night_watch @ 2008-06-18T00:33:00</title>
    <published>2008-06-18T05:34:04Z</published>
    <updated>2008-06-18T05:34:04Z</updated>
    <content type="html">I'm going to be using &lt;a href="http://twitter.com/nightwatch41"&gt;Twitter&lt;/a&gt; instead of LJ for most of my updating for a while at least. I rarely post what can't be summed up in 140 characters on this thing anyway.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:103956</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/103956.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=103956"/>
    <title>Acen? Dame yo</title>
    <published>2008-05-17T18:40:44Z</published>
    <updated>2008-05-17T18:40:44Z</updated>
    <content type="html">I went with Scott to check out Acen. Since we couldn't be there Friday, it made no sense to preregister. Due to delays on the CTA, we got there around 12:15 PM. No problem right?&lt;br /&gt;&lt;br /&gt;There were people who had arrived at 7:15 in the morning still standing in the fucking registration line.&lt;br /&gt;&lt;br /&gt;No thanks. I bailed. Acen is fun and all, but I ain't waiting 6 hours. I guess I'm getting old.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:103557</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/103557.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=103557"/>
    <title>foxnews.jpg</title>
    <published>2008-05-01T16:25:24Z</published>
    <updated>2008-05-01T16:25:24Z</updated>
    <content type="html">&lt;img src="http://i119.photobucket.com/albums/o139/johnno22/lincolndouglass.jpg" alt="foxnews" /&gt;&lt;br /&gt;&lt;br /&gt;This is just unreal.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:101916</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/101916.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=101916"/>
    <title>Sound on Linux!</title>
    <published>2008-03-15T19:58:29Z</published>
    <updated>2008-03-15T19:58:29Z</updated>
    <content type="html">If you have sound problems on Linux, do this:&lt;br /&gt;&lt;br /&gt;(1) Install &lt;a href="http://pulseaudio.org/"&gt;PulseAudio&lt;/a&gt;. Instructions for Ubuntu are &lt;a href="https://wiki.ubuntu.com/PulseAudio"&gt;here&lt;/a&gt;.&lt;br /&gt;(2) Enjoy.&lt;br /&gt;&lt;br /&gt;Seriously, PulseAudio needs to be set up as the default in Linux distributions &lt;i&gt;now&lt;/i&gt;. Because it tries to emulate every known way for Linux apps to access the sound card (with the notable exception of aRts, but you can upgrade to KDE 4 to mitigate that), apps that play sound suddenly start to Just Work. I've installed PulseAudio on both of my main Linux systems now, and it was ridiculous how all the problems just disappeared. Sound mixing and incompatible sound APIs have been terrible warts on Linux for a long time, and the sooner people just move to Pulse, the better.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:101848</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/101848.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=101848"/>
    <title>night_watch @ 2008-02-25T16:15:00</title>
    <published>2008-02-25T22:22:38Z</published>
    <updated>2008-02-25T23:02:31Z</updated>
    <content type="html">"I play a lot of TF2 anymore."&lt;br /&gt;&lt;br /&gt;This is a weird sentence, Dr. Dos. Half the class didn't know what it meant! Your dialect screws up semantic analysis of negative polarity items.&lt;br /&gt;&lt;br /&gt;The prof said it was a rural Pennsylvanian dialectical thing. Has anyone else heard this? Dos is the only one I know who uses "anymore" this way.&lt;br /&gt;&lt;br /&gt;edit: better example sentence</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:100819</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/100819.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=100819"/>
    <title>Disable the private flag in Transmission</title>
    <published>2008-02-12T06:44:55Z</published>
    <updated>2008-02-12T06:51:50Z</updated>
    <category term="drm"/>
    <content type="html">The &lt;a href="http://wiki.depthstrike.com/index.php/P2P:Protocol:Specifications:SecureTorrent"&gt;private flag&lt;/a&gt; in BitTorrent, which disables any external peer exchange for a torrent, is DRM, plain and simple. It's a malicious feature designed to force the wishes of the content producers (the private trackers) on you. The P2P community shouldn't rail against DRM and simultaneously encourage it when it's convenient. I do sympathize with private trackers, but they can't be hypocritical: DRM isn't the way to go about their issues.&lt;br /&gt;&lt;br /&gt;Thankfully, we have open source BitTorrent clients, so we don't have to put up with our computers working against us.&lt;br /&gt;&lt;br /&gt;Following is a patch to Transmission 1.05 to remove the private flag. I don't care if Transmission gets banned from trackers for this: it's easy enough to make the client masquerade as other clients.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;diff -Naur transmission-1.05/libtransmission/metainfo.c transmission-1.05-noprivate/libtransmission/metainfo.c
--- transmission-1.05/libtransmission/metainfo.c	2008-02-12 00:38:45.000000000 -0600
+++ transmission-1.05-noprivate/libtransmission/metainfo.c	2008-02-12 00:39:32.000000000 -0600
@@ -219,13 +219,7 @@
     }
     
     /* Private torrent */
-    val  = tr_bencDictFind( beInfo, "private" );
-    val2 = tr_bencDictFind( meta,  "private" );
-    if( ( NULL != val  &amp;&amp; ( TYPE_INT != val-&amp;gt;type  || 0 != val-&amp;gt;val.i ) ) ||
-        ( NULL != val2 &amp;&amp; ( TYPE_INT != val2-&amp;gt;type || 0 != val2-&amp;gt;val.i ) ) )
-    {
-        inf-&amp;gt;isPrivate = 1;
-    }
+    /* Disabled in -noprivate branch */
     
     /* Piece length */
     val = tr_bencDictFind( beInfo, "piece length" );&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:100601</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/100601.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=100601"/>
    <title>C# option parsing library</title>
    <published>2008-02-11T02:17:45Z</published>
    <updated>2008-02-11T02:21:34Z</updated>
    <content type="html">I wrote a command line option parsing library in C#, based on Perl/CPAN's Getopt::Long. I think it is better than all the others available for C#.&lt;br /&gt;&lt;br /&gt;Features include:&lt;br /&gt;- Scalar, array, or hash types for option arguments&lt;br /&gt;- Incrementable options (e.g. &lt;tt&gt;--verbose --verbose --verbose&lt;/tt&gt; for 3x verbose)&lt;br /&gt;- Option bundling if enabled (&lt;tt&gt;-zxvf=foo.tar.gz&lt;/tt&gt; is the same as &lt;tt&gt;--gzip --extract --verbose --file foo.tar.gz&lt;/tt&gt;)&lt;br /&gt;- Generic argument types: you can ask that arguments be returned in any numeric type, &lt;b&gt;string&lt;/b&gt; or &lt;b&gt;bool&lt;/b&gt;, and it Does What You Mean&lt;br /&gt;- Optional events to hook into in order to create custom options&lt;br /&gt;&lt;br /&gt;Here's an example (&lt;tt&gt;NXGetoptLong/t/Simple.cs&lt;/tt&gt;):&lt;br /&gt;&lt;pre&gt;using System;
using System.Collections.Generic;

using NX.Getopt.Long;

using C = System.Console;

namespace NX.Getopt.Long.Tests {
    public class Simple {
        public static void Main(string[] args)
        {
            var p = new Parser();
            var gzip = new VoidOption("gzip") { Aliases = new string[] { "z" }
                };
            var extract = new VoidOption("extract") { Aliases = new string[]
                { "x" } };
            var verbose = new IncrementableOption("verbose");
            var file = new ScalarOption&amp;lt;string&amp;gt;("file");

            p.Bundling = Parser.BundlingOptions.Enabled;
            p.GetOptions(args, new Option[] { gzip, extract, verbose, file });

            C.WriteLine(gzip.Value);
            C.WriteLine(extract.Value);
            C.WriteLine(verbose.Value);
            C.WriteLine(file.Value);
        }
    }
}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Get the code &lt;a href="http://home.uchicago.edu/~pcwalton/NXGetoptLong-0.1.tar.gz"&gt;here&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:99856</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/99856.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=99856"/>
    <title>C# gripe</title>
    <published>2008-02-08T03:39:59Z</published>
    <updated>2008-02-08T03:39:59Z</updated>
    <content type="html">Hey C# programmers! FACTORY CLASSES ARE EVIL.&lt;br /&gt;&lt;br /&gt;Do not use factory classes. Every single use of factory classes can be done much more cleanly using private classes. Just replace the &lt;i&gt;is-a&lt;/i&gt; relationship with a &lt;i&gt;has-a&lt;/i&gt; relationship.&lt;br /&gt;&lt;br /&gt;Here's an example of the &lt;i&gt;wrong&lt;/i&gt; way to do it, which I see all the time:&lt;br /&gt;&lt;pre&gt;public abstract class Pokemon { 
    public void Attack();
}

public class Growlithe {
    public void Attack() { ... }
}

public class Pikachu {
    public void Attack() { ... }
}

public static class PokemonFactory {
     public static Pokemon Create(string kind)
     {
         if (kind == "Growlithe")
             return new Growlithe();
         else
             return new Pikachu();
     }
}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is Java-ish syntactic noise, and it leaks implementation details. Why should the caller have to care whether the object is internally a Growlithe or a Pikachu, when you meant to present the opaque type Pokemon to them?&lt;br /&gt;&lt;br /&gt;Here's a better way to do it:&lt;br /&gt;&lt;pre&gt;public class Pokemon {
    private abstract class InternalPokemon {
        public abstract void Attack();
    }

    private class Growlithe : InternalPokemon {
        public void Attack();
    }
    private class Pikachu : InternalPokemon {
        public void Attack();
    }

    private InternalPokemon ip;

    public Pokemon(string kind)
    {
         if (kind == "Growlithe")
             ip = new Growlithe();
         else
             ip = new Pikachu();
    }

    public void Attack()
    {
        ip.Attack();
    }
}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is less code, and it hides implementation details. It's also more flexible, because it allows you to use any object you want as the "internal" object.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:98821</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/98821.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=98821"/>
    <title>night_watch @ 2008-01-08T01:01:00</title>
    <published>2008-01-08T07:09:55Z</published>
    <updated>2008-01-08T07:09:55Z</updated>
    <category term="technobabble"/>
    <content type="html">MPD and &lt;a href="http://sonata.berlios.de/"&gt;Sonata&lt;/a&gt; beat the shit out of iTunes and Apple TV as a way to deal with the problem of playing music through speakers that don't suck when your main computer is a laptop you take everywhere.&lt;br /&gt;&lt;br /&gt;I have a hacked Apple TV running Ubuntu hooked up to my speakers (with a custom modified Linux kernel that allows the analog audio to work on the Apple TV - if anyone is reading this and needs a patch let me know). I gave it a bigger hard disk, so it'll have plenty of room for any music. It'll be my music master server of sorts, and I'm keeping it up to date with rsync. It's connected to my wifi AP via ethernet and advertises itself with Avahi, so anything behind my router can talk to the MPD.&lt;br /&gt;&lt;br /&gt;Sonata is the slickest music player I've seen. I can control the music through my main speakers with Sonata from anywhere in the apartment, with no setup required as long as I'm on my wifi network.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:97865</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/97865.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=97865"/>
    <title>night_watch @ 2007-12-13T16:36:00</title>
    <published>2007-12-13T22:38:54Z</published>
    <updated>2007-12-13T22:38:54Z</updated>
    <content type="html">I bought The Orange Box for Team Fortress 2.&lt;br /&gt;&lt;br /&gt;It doesn't work.&lt;br /&gt;&lt;br /&gt;(Wine + Ubuntu + Intel GMA X3100, for the small chance that someone is googling this and doesn't want to repeat my mistake.)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:97328</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/97328.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=97328"/>
    <title>Audio APIs for Linux</title>
    <published>2007-12-06T05:30:25Z</published>
    <updated>2007-12-06T05:30:25Z</updated>
    <category term="programming"/>
    <content type="html">Some observations on Linux desktop audio APIs.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;ALSA is a nice &lt;i&gt;driver&lt;/i&gt; framework. ALSA sucks as a high-level audio API. Stop coding your general desktop use app in it. It is hard to configure and finicky, and most apps that claim to support it (e.g. ZSNES) don't actually support it very well.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;OSS is great if you are living in the days when a Sound Blaster 16 was a high-level audio card. Unfortunately, these days &lt;i&gt;we need more than one program to be able to play sound at one time&lt;/i&gt;. More often than not, ESounD or aRts will be hogging /dev/dsp, resulting in incredibly confusing error messages to the end user. If your app (I'm looking at you, Praat and VMware) still uses OSS, please do us all a favor and upgrade.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ESounD is GNOME only and basically works, but for real time apps it is slooooooow.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;aRts is KDE only, and since Ubuntu is the way things are increasingly going, it's more likely than not not installed on your users' machines.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;What does that leave? It's an option that is all too often forgotten:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SDL&lt;/b&gt;. SDL is simple and it has a remarkable tendency to &lt;i&gt;just work&lt;/i&gt;. There are bindings to every language in existence, it's a mature codebase, and it embodies the Unix design philosophy well. Plus, if you write in SDL, you're portable to Windows and Mac OS X too!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I write this after fiddling with audio setting after audio setting in various programs, trying to get them to all work properly together, but to no avail. Then I set all the programs' audio output to SDL, and &lt;i&gt;every single program worked&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;If you're writing a Linux audio program, do your users a favor and use SDL by default.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:96975</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/96975.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=96975"/>
    <title>night_watch @ 2007-11-30T16:17:00</title>
    <published>2007-11-30T22:31:17Z</published>
    <updated>2007-11-30T22:31:17Z</updated>
    <content type="html">Once I'm done with all this work, I want to code something.&lt;br /&gt;&lt;br /&gt;I've always wanted to write an &lt;b&gt;SNES emulator&lt;/b&gt;. I have some ideas for how to improve accuracy and performance. For instance, I'd like to try out the idea of a "lazy dot clock": one of the big stumbling blocks so far in SNES emulation has been emulating the PPU's process of continuously drawing the screen, pixel by pixel. It's too slow to do this actively (i.e. actually drawing a pixel at a time at the right speed), but the thing is that the SNES CPU is too slow for games to truly take advantage of pixel-by-pixel changes anyhow. It should theoretically be possible to calculate the position the dot clock should be at &lt;i&gt;at the moment the SNES CPU performs an operation that is affected by it&lt;/i&gt;, and at that point draw the scanline up to that position. It would also be best to take advantage of multithreading for the audio stuff: the SNES audio chip is especially suited to this because the amount of interplay between the core system and the audio chip is minimal (4 1-byte registers mirrored on both sides, to be exact). I'd like to try writing the emulator in C#, with the tight CPU intensive stuff (like the core 65816 CPU emulation, probably) in assembler.&lt;br /&gt;&lt;br /&gt;Or I could write an &lt;b&gt;iPhone driver for Linux&lt;/b&gt;. This would involve reversing the USBMux stuff, then the Lockdown stuff, then implementing the AFC protocol. Again, I'd probably do this in C#/Mono. It'd be tricky, and Apple can change the protocol at any time, but it's a big gaping hole in Linux driver support at the moment.&lt;br /&gt;&lt;br /&gt;Any thoughts? Other project ideas? Nothing too ambitious, mind you :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:96540</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/96540.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=96540"/>
    <title>CHRISTMAS CARDS TIEM</title>
    <published>2007-11-29T03:16:42Z</published>
    <updated>2007-11-29T20:11:06Z</updated>
    <category term="holidays"/>
    <content type="html">Because I need some holiday cheer while I'm swamped in work and swamped with this awful cold... WHO WANTS A CHRISTMAS CARD?!&lt;br /&gt;&lt;br /&gt;Since it was a success last year, I'm going to do the Christmas card exchange again! Just drop me an e-mail at &lt;a href="mailto:pcwalton at uchicago dot edu"&gt;pcwalton at uchicago dot edu&lt;/a&gt; with your address and I'll send you something. It's not necessary, but if you want to send me one back just ask for my address.&lt;br /&gt;&lt;br /&gt;I guarantee I won't stalk you!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;s&gt;HURAY!&lt;/s&gt;&lt;/i&gt;&lt;/b&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:95270</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/95270.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=95270"/>
    <title>New laptop soon</title>
    <published>2007-11-08T17:50:35Z</published>
    <updated>2007-11-08T17:53:06Z</updated>
    <content type="html">Apple declared my laptop DOA and said it would cost over $1400 and who-knows-how-long to repair. Screw that. I'll probably go down to pick it up, so I can grab the undamaged 160 GB hard disk out of it. I have a HDD enclosure, so that'll still be useful.&lt;br /&gt;&lt;br /&gt;I dove into my Google SoC money and bought an $800 Fujitsu LifeBook that was on sale at newegg. Yes, a non-Apple laptop. My friend Shu loves his Fujitsu, so I figured I'd give it a shot. I'm not bitter, since nobody repairs water damage, and I'm okay with that. Rather, I'm annoyed with how consumer-unfriendly Apple has been lately. The successes of the iTunes Music Store and the iPhone have made the company think that petty things like kernel-level DRM and closed platforms and bricking phones are acceptable. And they're not. I'm totally okay with closed source - it's closed source and asshole tactics that I don't like. DVD Jon is totally right about all this (well, I still think he's crazy for liking the Zune but hey).&lt;br /&gt;&lt;br /&gt;So I'm going to be an Ubuntu + Xfce user before long. I discovered Xfce at the lab, and I love it. It's a pretty desktop that doesn't get in your way. Add Compiz Fusion and Murrina and it'll be as pretty as OS X.&lt;br /&gt;&lt;br /&gt;I'm going to miss Adium though.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:94046</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/94046.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=94046"/>
    <title>loooool</title>
    <published>2007-10-12T19:38:29Z</published>
    <updated>2007-10-12T19:38:29Z</updated>
    <content type="html">&lt;a href="http://www.mises.org/article.aspx?record=277&amp;amp;month=11"&gt;The Mises Institute (libertarian crazies) review The Phantom Menace.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:93666</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/93666.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=93666"/>
    <title>My entertainment system</title>
    <published>2007-10-02T20:17:23Z</published>
    <updated>2007-10-02T20:17:23Z</updated>
    <content type="html">A Samsung HDTV (no, not a big one), connected to an Apple TV hacked to run a modified Ubuntu with the hard drive upgraded to 120 GB, with a DVD-DL reader/burner, a tiny keyboard I got in Japan, a Bluetooth dongle, and Logitech speakers attached, controlled by a Wiimote.&lt;br /&gt;&lt;br /&gt;It is the most hacked-up thing ever and I love it.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:91984</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/91984.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=91984"/>
    <title>I GOT A KITTY</title>
    <published>2007-09-19T20:42:55Z</published>
    <updated>2007-09-19T20:42:55Z</updated>
    <content type="html">HIS NAME IS MIMI (耳)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/13597455@N07/"&gt;http://www.flickr.com/photos/13597455@N07/&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:90053</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/90053.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=90053"/>
    <title>iPhone hello world</title>
    <published>2007-07-20T22:04:22Z</published>
    <updated>2007-07-20T22:04:22Z</updated>
    <content type="html">I did it last night. So I've made it onto &lt;a href="http://www.engadget.com/2007/07/19/iphone-says-hello-world-here-come-the-3rd-party-apps/"&gt;Engadget&lt;/a&gt;, &lt;a href="http://digg.com/apple/iPhone_says_Hello_World_here_come_the_3rd_party_apps"&gt;Digg&lt;/a&gt;, and who knows what else.&lt;br /&gt;&lt;br /&gt;HURAY!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:89799</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/89799.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=89799"/>
    <title>night_watch @ 2007-07-11T02:59:00</title>
    <published>2007-07-11T08:01:52Z</published>
    <updated>2007-07-11T08:01:52Z</updated>
    <content type="html">I've been hacking my iPhone, hanging out in TOP SECRET IRC channels devoted to figuring the thing out. I figured out how to get third party programs on the device. Right now I'm working on writing &lt;a href="http://developer.berlios.de/projects/iphone-binutils/"&gt;an ARM assembler&lt;/a&gt; so that we can write programs like emulators and stuff.&lt;br /&gt;&lt;br /&gt;And now I find out that we may be getting a book deal from the publishers of &lt;i&gt;Hacking the Xbox&lt;/i&gt;. They may want some of us to write a book about our experiences.&lt;br /&gt;&lt;br /&gt;So like I'm famous now, or something. Wtf.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:89274</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/89274.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=89274"/>
    <title>iPhone</title>
    <published>2007-06-30T09:13:31Z</published>
    <updated>2007-06-30T09:13:31Z</updated>
    <category term="apple"/>
    <content type="html">Posting this from my new iPhone. It's pretty slick, though it isn't nearly as cool now as it'll be when the hackers get to it and enable full homebrew support.&lt;br /&gt;&lt;br /&gt;Damn you Jobs for making me a slave to your products sometimes. D:</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:88708</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/88708.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=88708"/>
    <title>night_watch @ 2007-06-28T14:50:00</title>
    <published>2007-06-28T19:51:37Z</published>
    <updated>2007-06-28T19:51:37Z</updated>
    <content type="html">If there's any cure for compulsively watching kitten videos on YouTube, I'd love to hear about it.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:87292</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/87292.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=87292"/>
    <title>RON PAUL</title>
    <published>2007-06-15T08:29:13Z</published>
    <updated>2007-06-15T08:29:13Z</updated>
    <content type="html">&lt;a href="http://209.237.250.100/news/politics/21528/"&gt;This is one of the best things I've seen in a  long time.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:86248</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/86248.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=86248"/>
    <title>hothothothot</title>
    <published>2007-05-24T14:48:18Z</published>
    <updated>2007-05-24T14:48:18Z</updated>
    <content type="html">It's 85 degrees in this non-air-conditioned room and has been for the past few days.&lt;br /&gt;&lt;br /&gt;It's the exhaustion that does you in in this kind of situation. I could get my sleep-deprived, exhausted, sweltering self to ling right now, or I could sleep. Guess which option I'm taking.&lt;br /&gt;&lt;br /&gt;I want to move into my apartment already. Argh.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:night_watch:86002</id>
    <link rel="alternate" type="text/html" href="http://night-watch.livejournal.com/86002.html"/>
    <link rel="self" type="text/xml" href="http://night-watch.livejournal.com/data/atom/?itemid=86002"/>
    <title>Desktop screenshot of the whenever</title>
    <published>2007-05-21T09:26:34Z</published>
    <updated>2007-05-21T09:52:57Z</updated>
    <content type="html">Haven't done one of these in a while.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img512.imageshack.us/my.php?image=desktopscreenshotcm3.png"&gt;&lt;img src="http://img512.imageshack.us/img512/4309/desktopscreenshotcm3.th.png" border="0" alt="Desktop" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;lol animu wallpaper&lt;br /&gt;&lt;br /&gt;Also screw IDE's (and autotools/make, for that matter).</content>
  </entry>
</feed>
