<?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/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Kevin Vance</title>
  <link>http://kvance.livejournal.com/</link>
  <description>Kevin Vance - LiveJournal.com</description>
  <lastBuildDate>Wed, 11 Nov 2009 01:05:51 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>kvance</lj:journal>
  <lj:journalid>3444</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/36636588/3444</url>
    <title>Kevin Vance</title>
    <link>http://kvance.livejournal.com/</link>
    <width>58</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1037068.html</guid>
  <pubDate>Wed, 11 Nov 2009 01:05:51 GMT</pubDate>
  <title>A personal best</title>
  <link>http://kvance.livejournal.com/1037068.html</link>
  <description>&lt;p&gt;I set a new personal record for the most ridiculous way to send text to myself today.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Entered into an HTML form&lt;/li&gt;
&lt;li&gt;Saved to a database by the webserver&lt;/li&gt;
&lt;li&gt;Read from the database by a daemon&lt;/li&gt;
&lt;li&gt;Saved to PDF by the daemon&lt;/li&gt;
&lt;li&gt;Copied over a wireless network to another daemon&lt;/li&gt;
&lt;li&gt;The PDF is rasterized by that daemon&lt;/li&gt;
&lt;li&gt;And sent as a fax to an OS serial port, which is actually a softmodem&lt;/li&gt;
&lt;li&gt;The fax line is VOIP, so the fax noise is re-digitized&lt;/li&gt;
&lt;li&gt;Once it gets to the  telephone system, it is converted back to an analog signal&lt;/li&gt;
&lt;li&gt;The signal is received by a fax-to-email gateway&lt;/li&gt;
&lt;li&gt;Who even knows what they do to it, but it ends up as a rasterized PDF&lt;/li&gt;
&lt;li&gt;I receive an email copy of my text.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://pics.livejournal.com/kvance/pic/0007s4d2&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/kvance/pic/0007s4d2/s320x320&quot; width=&quot;320&quot; height=&quot;228&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wasn&apos;t even trying to make a convoluted thing.  I just needed to test something!&lt;/p&gt;</description>
  <comments>http://kvance.livejournal.com/1037068.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1037035.html</guid>
  <pubDate>Tue, 27 Oct 2009 05:52:50 GMT</pubDate>
  <title>IR Blaster</title>
  <link>http://kvance.livejournal.com/1037035.html</link>
  <description>So when Comcast dropped a bunch of analog channels last month, my mythtv setup got a little less useful.  They did unencrypt some digital channels, but I was still down to one tuner for most cable channels.&lt;br /&gt;&lt;br /&gt;I got my converter box last week, a &lt;a href=&quot;http://www.engadgethd.com/2008/12/03/comcast-digital-transport-adapter-gets-unboxed/&quot;&gt;Pace DC50X&lt;/a&gt;.  It works well enough.  Even with the RF output, and the digital to analog back to digital conversion, it still looks better than the old analog signal.&lt;br /&gt;&lt;br /&gt;Of course, the problem with a converter box is that mythtv can no longer change the channels.  The converter comes with an external IR receiver port, a mono mini-jack.  So my first thought was to have a sound card generate the electrical signal the IR receiver would make.  But there are already established methods for communicating with IR, so I decided to just use an IR blaster.&lt;br /&gt;&lt;br /&gt;There are plans for making your own, but I&apos;m not really up for that.  My electronics experience is limited to soldering broken connections, and some basic theory from high school physics class.  I would not want to plug a circuit I built directly into my PC.&lt;br /&gt;&lt;br /&gt;So I bought the serial port one from irblaster.info.  After actually installing a serial port (heh), it works as expected.  MythTV can now change the channels, and I have a pretty good DVR again.&lt;br /&gt;&lt;br /&gt;There is one thing that kind of bugs me about it though.  When it&apos;s transmitting, LIRC masks interrupts.  So for the ~1 second it takes to change the channel, the sound skips and the system clock drifts a little.  I can probably live with that, but it might gradually drive me insane.  I&apos;m not sure which yet.&lt;br /&gt;&lt;br /&gt;I&apos;m not too familiar with multicore x86 or linux&apos;s IRQ handling, but I wonder if it would be possible to keep the LIRC driver on a different core, and only mask IRQs on that core.  Otherwise... I have been looking for an excuse to buy an arduino...</description>
  <comments>http://kvance.livejournal.com/1037035.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1036774.html</guid>
  <pubDate>Tue, 20 Oct 2009 19:15:07 GMT</pubDate>
  <title>There&apos;s a mouse living in my car!</title>
  <link>http://kvance.livejournal.com/1036774.html</link>
  <description>There were enough clues for me to figure this out earlier.  A few days ago my cat, Will, was sniffing around the front of my car.  He&apos;s not usually interested in the loud, rumbly death machines that take him to the vet.  Eventually he got bored and went to do something else.&lt;br /&gt;&lt;br /&gt;And then yesterday while I was driving my other cat, Sammy, back home from the vet, there was a loud thud and the blower motor stopped working.  Yet another piece of my car needing repairs seemed normal to me, so I just made a mental note to find out how to fix the blower unit.&lt;br /&gt;&lt;br /&gt;But while I was driving today, I saw something out of the corner of my eye.  Was that... a mouse?  A minute later I saw it again, crawling around the windshield wipers as the car was cruising at 45 mph.&lt;br /&gt;&lt;br /&gt;So I pulled over, thinking I&apos;d pick it up by the tail and toss it out.  (That&apos;s what you&apos;d do, right?  This is a new one for me!)  But as soon as I got out of the car, the mouse crawled into a crevice.  I looked around for it under the hood, but found nothing.  After a minute of waiting for it to come back, I gave up and drove home.&lt;br /&gt;&lt;br /&gt;At home I tested the blower, and it works again!  So the unlucky mouse must have fallen in yesterday, only to climb back out to wreak more havoc today.  I tried looking under the hood again, and checking behind the glove compartment (the blower stuff is behind it), but I still can&apos;t find the mouse.&lt;br /&gt;&lt;br /&gt;I considered using the cats to catch the mouse after the car had cooled down, but I&apos;m worried they&apos;ll leave half a mouse inside.  Now I&apos;m thinking about setting some kind of trap, but maybe the internet will know what to do.</description>
  <comments>http://kvance.livejournal.com/1036774.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>4</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1036367.html</guid>
  <pubDate>Sun, 18 Oct 2009 18:59:55 GMT</pubDate>
  <link>http://kvance.livejournal.com/1036367.html</link>
  <description>Heh.  I didn&apos;t do much announcing of dsmzx build 2, since it doesn&apos;t really have any exciting new features.  I guess the DS community was interested after all, since I&apos;ve been getting a ton of traffic on kvance.com, and some bug reports from EZFlash users as well.&lt;br /&gt;&lt;br /&gt;I&apos;m also impressed with the anti-spam function in django&apos;s comments module.  I noticed in the logs an attempt to post comments from a bunch of different IPs all at once, and none of them went through.</description>
  <comments>http://kvance.livejournal.com/1036367.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1035829.html</guid>
  <pubDate>Sun, 20 Sep 2009 17:51:58 GMT</pubDate>
  <link>http://kvance.livejournal.com/1035829.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/kvance/pic/0007rqxy&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/kvance/pic/0007rqxy/s320x320&quot; width=&quot;320&quot; height=&quot;250&quot; alt=&quot;screenshot&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Guybrush Threepwood reads Ron Gilbert&apos;s tweet about Guybrush Threepwood reading Ron Gilbert&apos;s tweets.  The circle is complete.</description>
  <comments>http://kvance.livejournal.com/1035829.html</comments>
  <lj:mood>excited</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1035727.html</guid>
  <pubDate>Sun, 20 Sep 2009 03:49:43 GMT</pubDate>
  <title>Making a New JavaScript Thing</title>
  <link>http://kvance.livejournal.com/1035727.html</link>
  <description>I&apos;ve been coding like crazy lately.  I just got the idea this afternoon to make &lt;a href=&quot;http://guybrush.kvance.com/&quot;&gt;Guybrush Threepwood Reads Ron Gilbert&apos;s Tweets&lt;/a&gt;.  I did it (arr matey, before Talk Like a Pirate Day was over!) but it took the rest of the day.&lt;br /&gt;&lt;br /&gt;I&apos;m familiar enough with JavaScript that the main programming challenge was looking up documentation on the internet.  I have a good enough idea of what&apos;s in the language (and the DOM) for my purposes, but I can never remember what anything is called!&lt;br /&gt;&lt;br /&gt;The real challenge was getting the graphics.  The background is two screenshots of ScummVM pasted together.  Okay, that was easy.  I managed to rip the sprites with &lt;a href=&quot;http://scumm.mixnmojo.com/?page=utils#costrip&quot;&gt;Costume Ripper&lt;/a&gt; running in DOSBOX.  Once I found the sprites, I used the utility&apos;s PCX saver, manually renaming the output each time.&lt;br /&gt;&lt;br /&gt;I had real trouble with the fonts.  Somehow I managed to miss &lt;a href=&quot;http://scumm.mixnmojo.com/?page=utils#charlie&quot;&gt;Charlie&lt;/a&gt; and decided to try and capture the font with screenshots of ScummVM.  I used &lt;a href=&quot;http://scumm.mixnmojo.com/?page=utils#scummrev&quot;&gt;SCUMM Revisited&lt;/a&gt; to find offsets of text in the game, which I edited to all the ASCII printable characters.  But ScummVM doesn&apos;t render the fonts 1:1.  They&apos;re stretched out to preserve the original aspect ratio.  And I captured some of them over a dark background.  It was getting annoying.&lt;br /&gt;&lt;br /&gt;Luckily, I found Charlie, and ran it (also in DOSBOX).  It wouldn&apos;t work on Monkey Island 1, but I managed to get it to detect Monkey Island 2.  The built-in saver did not work, so I just took a screenshot.&lt;br /&gt;&lt;br /&gt;Then, a happy coincidence occurred.  Several months ago, I wrote a utility for Corner Office to take a paletted image of a multi-color font, squish the characters together, and save the result and a character offset table!  EXACTLY THE THING I NEEDED FOR THIS AS WELL!  I just converted the resulting offset table from a binary format to a JavaScript object.&lt;br /&gt;&lt;br /&gt;Anyway I really need to relax now so no more programming today.  Probably.&lt;br /&gt;&lt;br /&gt;Other stuff I&apos;ll try to write about later: switching from PulseAudio to JACK, writing a JACK driver for mikmod, Corner Office animation editor.</description>
  <comments>http://kvance.livejournal.com/1035727.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1035376.html</guid>
  <pubDate>Sun, 06 Sep 2009 05:59:43 GMT</pubDate>
  <title>Corner Office Dialogue Test</title>
  <link>http://kvance.livejournal.com/1035376.html</link>
  <description>&lt;a href=&quot;http://www.youtube.com/watch?v=bLw8jaEb0gk&amp;amp;fmt=22&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/kvance/pic/0007k6fd&quot; width=&quot;282&quot; height=&quot;458&quot; alt=&quot;dialogue video&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That screenshot links to a video of my dialogue system in action.  The &lt;a href=&quot;http://kvance.com/lj/example.cod.html&quot;&gt;example script&lt;/a&gt; being run is available if you&apos;re curious.&lt;br /&gt;&lt;br /&gt;Yesterday (Friday), I abstracted the command screen boxes so you could make other kinds of command boxes.  Today (Saturday), I combined the new command boxes with the old text printer and the dialogue parser, added an interpreter for the compiled scripts, and ran the example dialogue file!&lt;br /&gt;&lt;br /&gt;It works on the hardware too, but it&apos;s really hard to film a DS.  Anyway, I&apos;m really happy I took the time to do more of this project, and I&apos;m pleased with how it&apos;s coming together.  I also need to display the character portraits, but I&apos;ll add that later.  Displaying images is easy, and I don&apos;t actually have any character art yet.&lt;br /&gt;&lt;br /&gt;The last prototype I need to do is the battle system, which is going to need an animation system (am I going to waste EVEN MORE TIME writing an animation editor?!) and a simple AI.</description>
  <comments>http://kvance.livejournal.com/1035376.html</comments>
  <category>corneroffice</category>
  <category>nintendo ds</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1035262.html</guid>
  <pubDate>Thu, 27 Aug 2009 06:49:14 GMT</pubDate>
  <title>Latest Games Roundup</title>
  <link>http://kvance.livejournal.com/1035262.html</link>
  <description>I&apos;ve been playing a lot of games lately.  I don&apos;t really have time to, but they help me clear my mind at least.  I haven&apos;t been writing down my thoughts though, so here&apos;s a big list of them in vaguely chronological order:&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Ghostbusters: The Videogame&lt;/i&gt; (PC) - I&apos;m so conflicted.  Besides the fact that I really like the movie, the designers did a great job of making a very rich world for this game.  But actually progressing through the game is frustrating and repetitive: deplete a ghost&apos;s health, wrangle it with the proton stream, put it in a trap.  I stopped playing this in July (I think I&apos;m about halfway through), and I haven&apos;t felt like going back to it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Super Robot Taisen OG Saga: Endless Frontier&lt;/i&gt; (DS) - I can&apos;t even remember why I got this, but I ended up playing through the whole thing.  It has a generic 2D tiled overworld map and area maps, but the combat is a weird cross between generic RPG and brawler.  You try and perform all your attacks so you can juggle the opponent in the air for 100+ hit combos.  Also, almost every female character has huge tits with detailed jiggling animation and every other line of dialogue is a boob joke.  What I&apos;m saying is that if I could send any game back in time to when I was 12 years old, it would be this.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The Secret of Monkey Island: Special Edition&lt;/i&gt; (PC) - I appreciate what they&apos;re trying to do here.  They stayed completely faithful to the original game, while adding a hint system, high resolution 16:9 graphics, and voice overs.  And best of all, you can swap between the original and the special edition at any time at the push of a button.  That said, I do not care for the new art style or many of the voices, and I never tried the hint system (the only game I&apos;ve played more than Monkey Island is Monkey Island 2).  The VFX are outstanding though: great looking water, magic FX, etc.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Crayon Physics Deluxe&lt;/i&gt; (PC) - This was a great demo, but I don&apos;t think it did the transition to full game well.  It&apos;s like &lt;i&gt;The Incredible Machine&lt;/i&gt; with only 4 parts: line, polygon, rope, and hinge.  And later, rockets that are on the map but you can&apos;t draw.  Solving puzzles always feels good, but I&apos;d often find myself getting frustrated and drawing a bunch of wedges to force my way through a level.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Mr. Robot&lt;/i&gt; (PC) - I&apos;ve already written &lt;a href=&quot;http://kvance.livejournal.com/1034405.html&quot;&gt;my first impressions&lt;/a&gt; about this, and it&apos;s only gotten better.  I&apos;m so glad I found this game.  I haven&apos;t played everything in the big Steam indie pack yet, but I think this was the hidden gem of it.  It&apos;s like playing a ZZT game with nice graphics and music.  And an RPG battle engine for some reason.  I&apos;m looking forward to playing more Moonpod games in the future.  And even more &quot;indie cred&quot; for them: some asshole wikipedians have deleted Moonpod&apos;s wikipedia article for notability, so they must be good!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Audiosurf&lt;/i&gt; (PC) - Meh.  I avoided it when it was released to much hype, and I was right.  There&apos;s no point to this.  &lt;i&gt;Frequency&lt;/i&gt; came out almost 8 years ago, and this isn&apos;t even close.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Tales of Monkey Island&lt;/i&gt; (PC) - I&apos;ve played chapters 1 and 2 so far.  In chapter 1, it was nice to see the old characters again in an adventure game setting.  And it had a vaguely Monkey Island-ish feel.  But chapter 2 really did it.  I had that big stupid grin I also had during episode 1 of Sam &amp; Max.  I&apos;m pretty sure this is a solid game if you&apos;re not already a rabid Monkey Island fan, but there&apos;s a lot of stuff in it that&apos;s solid gold if you are.  I hope they can keep it up for the rest of the series!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Trine&lt;/i&gt; (PC) - Fantastic.  I know I&apos;ll never be disappointed when I buy a Frozenbyte game.  It&apos;s like 1 player Lost Vikings, with gratuitous physics because it&apos;s the late 2000s.  Besides the gorgeous graphics and excellent voice acting, I really like the way the combat feels, particularly for the Knight.  Highly recommended.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Ben There, Dan That!&lt;/i&gt; (PC) - This was kind of neat.  I got this along with the sequel, &lt;i&gt;Time Gentlemen, Please&lt;/i&gt; for $5 on Steam.  The graphics are crummy, but they have grown on me.  It seems to have been created by the two biggest fans of the old LucasArts adventures ever, and it shows because the game is pretty good.  The standout thing to me is that there appears to be dialogue written for almost everything you try do do: use any item, on any piece of scenery, and there&apos;s more and more text.  Of course, all the modern adventure gaming I&apos;ve been doing lately has made me miss voice acting and integrated hint systems, but it&apos;s fun and I&apos;m looking forward to playing the sequel.</description>
  <comments>http://kvance.livejournal.com/1035262.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1034959.html</guid>
  <pubDate>Wed, 19 Aug 2009 05:19:18 GMT</pubDate>
  <title>4000th Post Spectacular</title>
  <link>http://kvance.livejournal.com/1034959.html</link>
  <description>&lt;p&gt;This is my 4000th LiveJournal post!  It&apos;s time once again to look back at my last 1000 posts.  They cover such a vast amount of time that I can&apos;t remember which ones were especially significant.  So let&apos;s just look at 10 of them, in increments of 100:&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Post&amp;nbsp;#&lt;/th&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/1009643.html&quot;&gt;3901&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2008-04-18&lt;/td&gt;
&lt;td&gt;I acquire an officially licensed plush Companion Cube.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/983855.html&quot;&gt;3801&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2007-06-03&lt;/td&gt;
&lt;td&gt;I arrive in Carlsbad, CA for my second trip there.  I also have a new laptop.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/957985.html&quot;&gt;3701&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2006-06-07&lt;/td&gt;
&lt;td&gt;I describe a long-since-abandoned project to scan for suspicious files on windows.  I also link to a Kari Byron photogallery.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/931646.html&quot;&gt;3601&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2005-11-24&lt;/td&gt;
&lt;td&gt;I talk about all the TV shows I&apos;m watching, but also about learning win32 programming in python.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/903724.html&quot;&gt;3501&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2005-07-14&lt;/td&gt;
&lt;td&gt;I excitedly present evidence of a windows sync client for Handhelj.  It would never materialize.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/877178.html&quot;&gt;3401&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2005-03-07&lt;/td&gt;
&lt;td&gt;I share my thoughts on the first episode of the new Doctor Who series.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/850977.html&quot;&gt;3301&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2004-10-31&lt;/td&gt;
&lt;td&gt;I complain about nobody being logged on to AIM, and observe the passage of time.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/824405.html&quot;&gt;3201&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2004-05-03&lt;/td&gt;
&lt;td&gt;I talk about homework, impending doom, and a common problem I have.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/795746.html&quot;&gt;3101&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2003-12-31&lt;/td&gt;
&lt;td&gt;I decide to post the last screenshots of 2003, then think better of it.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://kvance.livejournal.com/770181.html&quot;&gt;3001&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2003-09-15&lt;/td&gt;
&lt;td&gt;I share a tip on how to override a user&apos;s style on their LJ comment page.&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;FASCINATING STUFF.  I can&apos;t wait until I&apos;m celebrating another 1000 LJ posts in the year 2019!&lt;/p&gt;</description>
  <comments>http://kvance.livejournal.com/1034959.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>4</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1034669.html</guid>
  <pubDate>Mon, 17 Aug 2009 14:18:54 GMT</pubDate>
  <link>http://kvance.livejournal.com/1034669.html</link>
  <description>With all the stuff that&apos;s been going on, I forgot to mention that I finally finished all of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Discworld#Novels&quot;&gt;Discworld novels&lt;/a&gt;!  I started doing this over two years ago when my grandmother recommended them to me.  She&apos;s too blind to read, but she listens to the audio books.  So I started putting them into the rotation more and more frequently until I was mostly reading Discworld books.  Now I can join the rest of the internet in eagerly awaiting the next book in the series.&lt;br /&gt;&lt;br /&gt;(The last book I read was &lt;i&gt;Wintersmith&lt;/i&gt;, on the night of &lt;a href=&quot;http://kvance.livejournal.com/1033923.html&quot;&gt;August 10&lt;/a&gt;.)</description>
  <comments>http://kvance.livejournal.com/1034669.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1034405.html</guid>
  <pubDate>Sun, 16 Aug 2009 03:12:30 GMT</pubDate>
  <title>Mr. Robot</title>
  <link>http://kvance.livejournal.com/1034405.html</link>
  <description>I started playing &lt;a href=&quot;http://www.moonpod.com/English/about_mr.robot.php&quot;&gt;Mr. Robot&lt;/a&gt; today, one of the games I got in the Steam indie games bundle.  I&apos;ve played a few hours plus the long tutorial, and it&apos;s really good!  There&apos;s still a few games in the bundle I haven&apos;t tried yet, but I suspect this is going to be my favorite.&lt;br /&gt;&lt;br /&gt;The gameplay is exploration and puzzle solving (mostly sokoban-type crate pushing) in an isometric view, with an extra RPG combat thing bolted on.  It also provides me with a very nice nostalgic vibe, as it&apos;s a kind of game that&apos;s more 1990s than 2000s.&lt;br /&gt;&lt;br /&gt;I had a couple of minor technical problems.  I (and a lot of people on the forums!) could not assign controls using a gamepad.  I actually took a hex editor to the savegame file to put my controls in.  Later, when I was adding d-pad keyboard mappings using Logitech Profiler, I realized I could have just used that to map the other controls to keyboard ones too.  Oops!&lt;br /&gt;&lt;br /&gt;The game also seems to be framerate locked to 25Hz.  Gameplay looks fine that way as long as the screen isn&apos;t scrolling, but watching the mouse cursor actually hurts my brain.&lt;br /&gt;&lt;br /&gt;Those are easy to overlook, though, in exchange for releasing your inner Pusher Robot.</description>
  <comments>http://kvance.livejournal.com/1034405.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1033989.html</guid>
  <pubDate>Fri, 14 Aug 2009 16:41:08 GMT</pubDate>
  <link>http://kvance.livejournal.com/1033989.html</link>
  <description>&lt;tt&gt;% get reset --hard&lt;br /&gt;zsh: correct &apos;get&apos; to &apos;GET&apos; [nyae]? &lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;I wish zsh would be a little bit smarter about its suggestions.  (zsh: I wish kvance would be a little bit smarter about his typing.)</description>
  <comments>http://kvance.livejournal.com/1033989.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1033923.html</guid>
  <pubDate>Tue, 11 Aug 2009 20:57:49 GMT</pubDate>
  <link>http://kvance.livejournal.com/1033923.html</link>
  <description>Today has been kind of rough.  I got about four cumulative hours of sleep last night thanks to two consecutive power outages.  That finally ended around 5 am, and I managed to sleep until 7 when I was awoken by the sound of my cat having a seizure.&lt;br /&gt;&lt;br /&gt;I only know about it because she happened to be sleeping on top of a plastic bag near my bed, and the crinkling sounds woke me up.  I got onto the web and started looking up what to do, but she snapped out of it before I could finish reading.  I had enough time to confirm that happens to diabetic cats when their blood sugar is way too low, so I wrote a note to make sure nobody gave her any insulin.&lt;br /&gt;&lt;br /&gt;After a few minutes, she was walking around and purring like nothing had happened.  I couldn&apos;t really get back to sleep after that.&lt;br /&gt;&lt;br /&gt;Later at the vet, we found out that her blood sugar was still low, even though she&apos;s had no insulin today.  So I&apos;m not going to give her any more insulin tonight, and we&apos;ll check her blood sugar again tomorrow.  Feline diabetes is weird, and can sometimes go away completely for a while.  Or she might just need a different dose for whatever reason.&lt;br /&gt;&lt;br /&gt;I&apos;ve never seen a human or an animal have a seizure before, so... it&apos;s been a surreal day.</description>
  <comments>http://kvance.livejournal.com/1033923.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1033594.html</guid>
  <pubDate>Thu, 06 Aug 2009 21:29:42 GMT</pubDate>
  <link>http://kvance.livejournal.com/1033594.html</link>
  <description>There seem to be more game-related competitions than usual going on right now.  TIGSource &lt;a href=&quot;http://forums.tigsource.com/index.php?topic=6883.0&quot;&gt;Adult/Educational&lt;/a&gt;, &lt;a href=&quot;http://julian.togelius.com/mariocompetition2009/&quot;&gt;Mario AI competition&lt;/a&gt;, Zero Punctuation &lt;a href=&quot;http://www.escapistmagazine.com/contests/register/stonkinggreatgame_09&quot;&gt;flash game contest&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I would actually consider delaying corner office (AGAIN) to do the Zero Punctuation contest, but it&apos;s flash games only.  And although I know quite a bit about flash&apos;s &lt;a href=&quot;http://kvance.com/looseseal/&quot;&gt;network protocol&lt;/a&gt;, my only other experience with it is using The Goddamned Linux Flash Plugin.&lt;br /&gt;&lt;br /&gt;The best you can do for flash creation on linux now seems to be &lt;a href=&quot;http://www.swftools.org/swfc/swfc.html&quot;&gt;swfc&lt;/a&gt;, which is totally commandline based.  Not necessarily too hardcore for me, I&apos;d just rather not waste all my potential compo time learning a new environment.</description>
  <comments>http://kvance.livejournal.com/1033594.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1033378.html</guid>
  <pubDate>Wed, 05 Aug 2009 04:59:00 GMT</pubDate>
  <title>Corner Office dialogue editor</title>
  <link>http://kvance.livejournal.com/1033378.html</link>
  <description>&lt;div style=&quot;text-align: center&quot;&gt;&lt;a href=&quot;http://pics.livejournal.com/kvance/pic/0007d66f&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/kvance/pic/0007d66f/s320x320&quot; width=&quot;320&quot; height=&quot;273&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Finally had some time to do some corner office work.  The last time I was working on this, I was trying to decide if I should hardcode the dialogue.  It&apos;s a short game, but I think ultimately that ends up being really annoying, and... you know I have this thing about writing editors, right?&lt;br /&gt;&lt;br /&gt;The actual editing takes place in an embedded gvim.  That way I get syntax highlighting (and vim commands!) for free.  Since most of my old &quot;conversation trees&quot; have been written in ZZT, I based the syntax on that.&lt;br /&gt;&lt;br /&gt;The preview takes a background image and font file from the game, and uses the standard gdk drawing tools to render the text.  It&apos;s supposed to render whatever text you are currently editing, but I still have to code that part.&lt;br /&gt;&lt;br /&gt;The dialog file will get compiled down to a binary format that will be easier to interpret on the DS.  I have a parser for it using &lt;a href=&quot;http://pyparsing.wikispaces.com/&quot;&gt;pyparsing&lt;/a&gt;, which might have been a mistake since that was my first attempt with a parser generator and it&apos;s very clumsy.&lt;br /&gt;&lt;br /&gt;I haven&apos;t even started on the interpreter on the DS side.  I need to write some more test dialog, and implement a few &lt;tt&gt;#commands&lt;/tt&gt; for setting flags and such.  Once I&apos;m pretty sure I have the right thing, I&apos;ll start coding that.</description>
  <comments>http://kvance.livejournal.com/1033378.html</comments>
  <category>corneroffice</category>
  <category>nintendo ds</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1033083.html</guid>
  <pubDate>Wed, 29 Jul 2009 21:15:59 GMT</pubDate>
  <link>http://kvance.livejournal.com/1033083.html</link>
  <description>Last weekend was pretty big.  Friday was my brother Ben&apos;s wedding rehersal, Saturday was the wedding, Sunday was my other brother Jon&apos;s birthday!&lt;br /&gt;&lt;br /&gt;I was a groomsman for the wedding, a nice easy job.  Which was good for me since the last wedding I went to I think I was about 3 years old.  Lots of people were there, there was a huge reception, tons of alcohol was flowing.  And my brother is now married, with the ring and everything.  Crazy!&lt;br /&gt;&lt;br /&gt;I slept in until 3:30 on Sunday.  That night, our family took Jon out for Japanese food for his birthday.  There were some impressive thunderstorms, but we managed to avoid getting rained on.  Then on the trip back home, several trees were down on the road.  A few miles from home, nobody had electricity.  And at home, a fallen tree was blocking the driveway!&lt;br /&gt;&lt;br /&gt;That kind of deflated the general sense of happiness, as we chainsawed and moved enough debris out of the way to get the cars back in... to enjoy our house with no power or water for the rest of the night.  Luckily, PECO managed to restore power in ~6 or 7 hours.&lt;br /&gt;&lt;br /&gt;Yesterday, Jon and I finished clearing the driveway.  We were actually pretty lucky, the tree didn&apos;t cause any damage on the way down.  Also, an interesting fact: I had never used a chainsaw until yesterday.  I only wish I could have seen the maniacal grin on my own face when I first revved it! &amp;gt;:D&lt;br /&gt;&lt;br /&gt;And now there&apos;s more thunder outside.</description>
  <comments>http://kvance.livejournal.com/1033083.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1032952.html</guid>
  <pubDate>Sun, 19 Jul 2009 04:59:43 GMT</pubDate>
  <link>http://kvance.livejournal.com/1032952.html</link>
  <description>Okay, I switched web servers!  Hopefully everything in the archives made it over to the new &lt;a href=&quot;http://kvance.com/&quot;&gt;kvance.com&lt;/a&gt;.  From now on, I&apos;m going to keep website updates on &lt;a href=&quot;http://kvance.com/news/&quot;&gt;my site news&lt;/a&gt; instead of on this LJ.  But you can still follow them at &lt;span class=&apos;ljuser ljuser-name_kvdc_news&apos; lj:user=&apos;kvdc_news&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://syndicated.livejournal.com/kvdc_news/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/syndicated.gif&apos; alt=&apos;[info]&apos; width=&apos;16&apos; height=&apos;16&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://syndicated.livejournal.com/kvdc_news/&apos;&gt;&lt;b&gt;kvdc_news&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; on LJ, or my catch-all &lt;a href=&quot;http://kvance.com/blog/&quot;&gt;Multiblog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Whew.&lt;br /&gt;&lt;br /&gt;There&apos;s still so much more stuff I want to do to that website, but I&apos;m relieved that I&apos;ve finally made the switch and now I can redo my priorities again.</description>
  <comments>http://kvance.livejournal.com/1032952.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1032475.html</guid>
  <pubDate>Tue, 14 Jul 2009 19:43:48 GMT</pubDate>
  <link>http://kvance.livejournal.com/1032475.html</link>
  <description>I&apos;ve slowly been adding the old content into my new website.  I&apos;d really like to go back and add more screenshots, but it&apos;s already taking so long.  I have 34 projects in the old kvance.com archives, and I need to add a few new ones to get back up to date.&lt;br /&gt;&lt;br /&gt;I have a lot of blank &quot;license&quot; fields for old stuff, which I&apos;ve been doing my best to fill in.  I&apos;m releasing ancient stuff like AutoScroll and MegaHack into the public domain.  I found the horrible C source code for AutoScroll, and I&apos;ll post the horrible source code for MegaHack if I can find it.&lt;br /&gt;&lt;br /&gt;I had originally hoped to stick a Creative Commons license on the old MZX games in the archive, but I don&apos;t think it&apos;s possible.  Even if I rounded up the old MZXers to get their permission, I&apos;d never be able to clear the samples used in the game music.  So I&apos;m calling them &quot;implicitly gratis&quot; instead.  Sorry lawyers and/or free culture people.&lt;br /&gt;&lt;br /&gt;I can still put a CC BY-SA license on the ZZT games though... the ones that didn&apos;t have arrangements of copyrighted music anyway :P</description>
  <comments>http://kvance.livejournal.com/1032475.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1032259.html</guid>
  <pubDate>Wed, 08 Jul 2009 04:24:00 GMT</pubDate>
  <link>http://kvance.livejournal.com/1032259.html</link>
  <description>Thanks everyone for poking at my new site code!  Especially thanks to &lt;span class=&apos;ljuser ljuser-name_dariusk&apos; lj:user=&apos;dariusk&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://dariusk.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://dariusk.livejournal.com/&apos;&gt;&lt;b&gt;dariusk&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; for finding the broken icons in the RSS feed, and honorable mention to &lt;span class=&apos;ljuser ljuser-name_rspeed&apos; lj:user=&apos;rspeed&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://rspeed.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://rspeed.livejournal.com/&apos;&gt;&lt;b&gt;rspeed&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; for attempted javascript injection in the user comments.&lt;br /&gt;&lt;br /&gt;I&apos;m not sure how long it&apos;ll take me to write all the text I have to write.  Hopefully by the weekend.  This has been interesting, especially the non-CSS parts, but I&apos;m looking forward to spending my side project time on something that&apos;s more fun.  I haven&apos;t forgotten about you, &lt;a href=&quot;http://kvance.livejournal.com/tag/corneroffice&quot;&gt;Corner Office&lt;/a&gt;!</description>
  <comments>http://kvance.livejournal.com/1032259.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1031987.html</guid>
  <pubDate>Tue, 07 Jul 2009 13:53:34 GMT</pubDate>
  <title>New website test</title>
  <link>http://kvance.livejournal.com/1031987.html</link>
  <description>&lt;p&gt;Finally finished writing the code for my website.  If you have some time, please click around &lt;a href=&quot;http://devg.kvance.com/&quot;&gt;devg.kvance.com&lt;/a&gt; and let me know if anything is wrong in your browser.  I&apos;ve used at various points Firefox, Opera, Chromium, Safari, and IE8 to check it but not very thoroughly.&lt;/p&gt;

&lt;p&gt;Things it does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://devg.kvance.com/about/&quot;&gt;Boring plain text&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://devg.kvance.com/projects/&quot;&gt;Detailed index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://devg.kvance.com/archive/&quot;&gt;One-liner index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://devg.kvance.com/kevedit/&quot;&gt;Project view w/ summary, comments, screenshots, download pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://devg.kvance.com/blog/&quot;&gt;Multiblog w/ RSS feed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Especially try leaving comments, downloading files, and using the multiblog RSS feed. The content is all placeholders, and the devg site will be going away whenever I get the real content added.&lt;/p&gt;</description>
  <comments>http://kvance.livejournal.com/1031987.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1031925.html</guid>
  <pubDate>Wed, 01 Jul 2009 22:31:03 GMT</pubDate>
  <link>http://kvance.livejournal.com/1031925.html</link>
  <description>I&apos;ve been playing around with firefox 3.5 recently (I got RC3 a few days ago).&lt;br /&gt;&lt;br /&gt;The changes with the most impact for me are in the session store.  I like that it lets you choose which windows to reopen after restoring from a crash, but there is still that &quot;jeopardy moment&quot; where you can press a button to destroy the old session, kind of like when pine asks you if you&apos;d like to delete your old mail at the start of the month.  The last version of firefox used a regular dialog box for this, so I&apos;m sure I&apos;ll get used to it.&lt;br /&gt;&lt;br /&gt;It also restores windows from other virtual desktops by minimizing them instead of dumping them all out to your current desktop.  That&apos;s an improvement, but still not right!&lt;br /&gt;&lt;br /&gt;The speed increase is quite noticeable to me (running Linux on an Intel Q6600) both in loading the initial session store, and watching text instantly reflow while resizing windows.  The GUI is still not very responsive while it&apos;s loading ~70 tabs, but at least it doesn&apos;t take so long now.&lt;br /&gt;&lt;br /&gt;I also crashed it once by clicking on a link from &lt;span class=&apos;ljuser ljuser-name_kartos&apos; lj:user=&apos;kartos&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://kartos.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://kartos.livejournal.com/&apos;&gt;&lt;b&gt;kartos&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; over AIM.  I&apos;m going to blame the flash plugin for that because I have no reason not to :P</description>
  <comments>http://kvance.livejournal.com/1031925.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1031465.html</guid>
  <pubDate>Wed, 24 Jun 2009 19:36:42 GMT</pubDate>
  <link>http://kvance.livejournal.com/1031465.html</link>
  <description>&lt;span class=&apos;ljuser ljuser-name_duinlas&apos; lj:user=&apos;duinlas&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://duinlas.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://l-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://duinlas.livejournal.com/&apos;&gt;&lt;b&gt;duinlas&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; just told me id software was bought out.   The only big independents left that we could think of were Valve and Epic.  And Epic doesn&apos;t even make PC games anymore!  I guess I&apos;ve been watching this era end for a long time but still :(</description>
  <comments>http://kvance.livejournal.com/1031465.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>17</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1031183.html</guid>
  <pubDate>Sun, 31 May 2009 19:05:31 GMT</pubDate>
  <link>http://kvance.livejournal.com/1031183.html</link>
  <description>I had this weird recursive dream today.  Since I only slept ~4 hours, I decided to take a nap around noon.  In the dream I would &quot;wake up&quot;, notice something wrong/inconsistent, figure out that I must still be dreaming, &quot;wake up&quot; from that, and so on.  At one point during the loop, I realized that since I was in a dream, I should be able to control it.  And I did!  I made everything disappear, and started running really fast.  It only lasted about 10 seconds, but that&apos;s the only &quot;lucid dreaming&quot; I&apos;ve ever experienced.&lt;br /&gt;&lt;br /&gt;The loop reasserted itself after that, and eventually I woke up after what felt like an entire night of recursive dreams.  The clock said I had been asleep for about 5 minutes.</description>
  <comments>http://kvance.livejournal.com/1031183.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1031050.html</guid>
  <pubDate>Mon, 18 May 2009 17:39:41 GMT</pubDate>
  <link>http://kvance.livejournal.com/1031050.html</link>
  <description>&lt;p&gt;Since I picked on Objective C earlier, it&apos;s only fair that I now call out python on a serious standard library shortcoming.&lt;/p&gt;

&lt;p&gt;Today I noticed that the timestamps were wrong on the twitter posts I pulled from my twitter RSS feed.  They appeared to be in UTC instead of local time, so I figured it would be an easy one-liner to convert them.&lt;/p&gt;

&lt;p&gt;Not so.  While python does have support for time zones throughout its date/time functions, it&apos;s up to you to actually build the timezone data yourself, parsing an environment variable or the &lt;tt&gt;/etc/localtime&lt;/tt&gt; file!&lt;/p&gt;

&lt;p&gt;Luckily, there is a third party library called &lt;tt&gt;&lt;a href=&quot;http://labix.org/python-dateutil&quot;&gt;dateutil&lt;/a&gt;&lt;/tt&gt; that will create timezone objects for you.  That functionality not being in the standard library is just baffling to me.&lt;/p&gt;

&lt;p&gt;At least now, I have some semi-sane code to take a UTC time stamp from &lt;tt&gt;&lt;a href=&quot;http://www.feedparser.org/&quot;&gt;feedparser&lt;/a&gt;&lt;/tt&gt; and convert it to a local time stamp for &lt;tt&gt;mysql&lt;/tt&gt;.&lt;/p&gt;

&lt;p style=&quot;color: #d7d7d7; background: #3a3a3a; font-family: monospace; padding: .4em&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#87af87&quot;&gt;# Convert from UTC to local time.&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;utc_tzinfo = {&lt;span style=&quot;background-color: #3a3a3a&quot;&gt;&lt;font color=&quot;#d7d7d7&quot;&gt;&apos;&lt;/font&gt;&lt;/span&gt;&lt;font color=&quot;#d78787&quot;&gt;tzinfo&lt;/font&gt;&lt;span style=&quot;background-color: #3a3a3a&quot;&gt;&lt;font color=&quot;#d7d7d7&quot;&gt;&apos;&lt;/font&gt;&lt;/span&gt;: dateutil.tz.tzutc()}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local = dateutil.tz.gettz(&lt;span style=&quot;background-color: #3a3a3a&quot;&gt;&lt;font color=&quot;#d7d7d7&quot;&gt;&apos;&lt;/font&gt;&lt;/span&gt;&lt;font color=&quot;#d78787&quot;&gt;America/New York&lt;/font&gt;&lt;span style=&quot;background-color: #3a3a3a&quot;&gt;&lt;font color=&quot;#d7d7d7&quot;&gt;&apos;&lt;/font&gt;&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;published = datetime.datetime(*feed_entry.updated_parsed[:7], **utc_tzinfo)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;localdate = published.astimezone(local)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#87af87&quot;&gt;# Strip the time zone info to appease mysql.&lt;/font&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;naivedate = datetime.datetime(*localdate.timetuple()[:7])&lt;/p&gt;</description>
  <comments>http://kvance.livejournal.com/1031050.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://kvance.livejournal.com/1030804.html</guid>
  <pubDate>Sun, 17 May 2009 02:26:24 GMT</pubDate>
  <link>http://kvance.livejournal.com/1030804.html</link>
  <description>My &lt;a href=&quot;http://kvance.com/&quot;&gt;personal website&lt;/a&gt; is long overdue for some work.  While it is mostly dynamically generated, that generation comes from a handful of perl CGI scripts, rewrite rules, and (thankfully, at least) HTML templates.  The problem is that if I want to add new content, I have to use the &lt;tt&gt;mysql&lt;/tt&gt; command line to &lt;em&gt;manually&lt;/em&gt; add it!  This has dissuaded me from updating the site with little programs, etc. that should be in the archive.&lt;br /&gt;&lt;br /&gt;I&apos;m also extending the site to aggregate my various bloggy things into one page.  I&apos;ve been using &lt;a href=&quot;http://twitter.com/kvance&quot;&gt;twitter&lt;/a&gt; a lot more than LJ lately, so the LJ front-end currently on kvance.com isn&apos;t doing much good.  Once that&apos;s set, it should be pretty easy to put out a complete RSS feed, maybe filtered over service, tags, or other parameters.&lt;br /&gt;&lt;br /&gt;I&apos;m doing the work with the django framework, which just for starters automatically gives you an admin interface based on your data model.  And it&apos;s in my favorite programming language, and seems to be pretty popular, etc.  Every once in a while, I&apos;ll poke around at some python web frameworks (I&apos;ve used TurboGears in the past) but I seem to be making pretty good progress here.&lt;br /&gt;&lt;br /&gt;I have it spitting out very plain views for projects, file lists, screenshot lists, and the multiblog.  And I have a script to pull entries from twitter and LJ.  Soon we come to my least favorite part: the actual web design and horrible, horrible testing process to make it work in every incompatible web browser.  I heard somewhere that IE6 was dead, so nobody tell me otherwise okay? :P</description>
  <comments>http://kvance.livejournal.com/1030804.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>10</lj:reply-count>
</item>
</channel>
</rss>
