<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Umbra Angeli: Recent Wiki Changes</title>
  <link href="http://www.umbraangeli.org/wiki/recent/atom" rel="self"/>
  <link href="http://www.umbraangeli.org/wiki/recent" rel="alternate"/>
  <id>http://www.umbraangeli.org/wiki/recent</id>
  <updated>2010-08-15T10:42:06Z</updated>
  <author>
    <name>Umbra Angeli</name>
  </author>
  <icon>http://www.umbraangeli.org/favicon.png</icon>
  <entry>
    <title>Contact_Me, Version 4</title>
    <link href="http://www.umbraangeli.org/wiki/show/Contact_Me" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Contact_Me</id>
    <updated>2010-08-15T10:42:06Z</updated>
    <author>treed</author>
    <summary>Contact_Me, Version 4</summary>
    <content>&lt;p&gt;You can contact me in any of the following ways:&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;E-Mail/Jabber/GTalk: ted.reed@gmail.com&lt;/li&gt;
	&lt;li&gt;AIM/Yahoo: xrizen&lt;/li&gt;
	&lt;li&gt;MSN: passport@surreality.us&lt;/li&gt;
	&lt;li&gt;ICQ: 28883026&lt;/li&gt;
	&lt;li&gt;IRC: treed on freenode&lt;/li&gt;
	&lt;li&gt;Skype: TedReed (You'll probably need to contact me by one of the other methods first, as I don't leave it on.)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 4, last changed by treed at 10:42 on 2010-08-15.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Movies_and_TV, Version 3</title>
    <link href="http://www.umbraangeli.org/wiki/show/Movies_and_TV" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Movies_and_TV</id>
    <updated>2010-08-15T10:41:06Z</updated>
    <author>treed</author>
    <summary>Movies_and_TV, Version 3</summary>
    <content>&lt;p&gt;Right now, this is just a list of BD/DVDs I have:&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;300 (BD)&lt;/li&gt;
	&lt;li&gt;American Beauty (DVD)&lt;/li&gt;
	&lt;li&gt;American Pie (DVD)&lt;/li&gt;
	&lt;li&gt;Animal House (DVD)&lt;/li&gt;
	&lt;li&gt;Back To The Future Trilogy (DVD)&lt;/li&gt;
	&lt;li&gt;Band of Brothers (BD)&lt;/li&gt;
	&lt;li&gt;Be Kind, Rewind (DVD)&lt;/li&gt;
	&lt;li&gt;The Big Lebowski (DVD)&lt;/li&gt;
	&lt;li&gt;Blazing Saddles (BD)&lt;/li&gt;
	&lt;li&gt;Boondock Saints (DVD)&lt;/li&gt;
	&lt;li&gt;Braveheart (DVD)&lt;/li&gt;
	&lt;li&gt;Brokeback Mountain (DVD)&lt;/li&gt;
	&lt;li&gt;Caligula (DVD)&lt;/li&gt;
	&lt;li&gt;Carnivale, Seasons One and Two (DVD)&lt;/li&gt;
	&lt;li&gt;Chasing Amy (DVD)&lt;/li&gt;
	&lt;li&gt;A Clockwork Orange (BD)&lt;/li&gt;
	&lt;li&gt;The Dark Crystal (BD)&lt;/li&gt;
	&lt;li&gt;Deadwood, Seasons 1-3 (DVD)&lt;/li&gt;
	&lt;li&gt;The Departed (BD)&lt;/li&gt;
	&lt;li&gt;Desperado (DVD)&lt;/li&gt;
	&lt;li&gt;The Dresden Dolls: Live at the Roundhouse, London (DVD)&lt;/li&gt;
	&lt;li&gt;Dune (Director's Cut; SciFi Channel Version) (DVD)&lt;/li&gt;
	&lt;li&gt;Eddie Izzard, Dressed to Kill (DVD)&lt;/li&gt;
	&lt;li&gt;The Fifth Element (BD)&lt;/li&gt;
	&lt;li&gt;Fight Club (BD)&lt;/li&gt;
	&lt;li&gt;Firefly, Disks 1 and 3 (No idea where 2 and 4 are) (DVD)&lt;/li&gt;
	&lt;li&gt;Futurama, Seasons 1-4 (DVD)&lt;/li&gt;
	&lt;li&gt;Futurama, The Beast With a Billion Backs (DVD)&lt;/li&gt;
	&lt;li&gt;The Golden Compass (BD)&lt;/li&gt;
	&lt;li&gt;Hackers (DVD)&lt;/li&gt;
	&lt;li&gt;House of 1000 Corpses (DVD)&lt;/li&gt;
	&lt;li&gt;The Hunt For Red October (BD)&lt;/li&gt;
	&lt;li&gt;Harry Potter and the Sorcerer's Stone (BD)&lt;/li&gt;
	&lt;li&gt;Harry Potter and the Chamber of Secrets (BD)&lt;/li&gt;
	&lt;li&gt;Harry Potter and the Prisoner of Azkaban (BD)&lt;/li&gt;
	&lt;li&gt;Harry Potter and the Gobled of Fire (BD)&lt;/li&gt;
	&lt;li&gt;Harry Potter and the Order of the Phoenix (BD)&lt;/li&gt;
	&lt;li&gt;Harry Potter and the Half-Blood Prince (BD)&lt;/li&gt;
	&lt;li&gt;Incubus (DVD)&lt;/li&gt;
	&lt;li&gt;Indiana Jones Trilogy (DVD)&lt;/li&gt;
	&lt;li&gt;Jersey Girl (DVD)&lt;/li&gt;
	&lt;li&gt;King Arthur (DVD)&lt;/li&gt;
	&lt;li&gt;Labyrinth (BD)&lt;/li&gt;
	&lt;li&gt;Marilyn Manson: Guns, God and Government World Tour (DVD)&lt;/li&gt;
	&lt;li&gt;Monty Python and the Holy Grail (DVD)&lt;/li&gt;
	&lt;li&gt;The Muppets Christmas Carol (DVD)&lt;/li&gt;
	&lt;li&gt;Natural Born Killers (DVD)&lt;/li&gt;
	&lt;li&gt;Nine Inch Nails Live: Beside You In Time (BD)&lt;/li&gt;
	&lt;li&gt;Pirates of the Caribbean: The Curse of the Black Pearl (BD)&lt;/li&gt;
	&lt;li&gt;Placebo: Soulmates Never Die, Live in Paris (DVD)&lt;/li&gt;
	&lt;li&gt;The Princess Bride (DVD)&lt;/li&gt;
	&lt;li&gt;Rammstein: Lichtspielhaus (DVD)&lt;/li&gt;
	&lt;li&gt;Rammstein: Live Aus Berlin (DVD)&lt;/li&gt;
	&lt;li&gt;Reservoir Dogs (DVD)&lt;/li&gt;
	&lt;li&gt;Resident Evil (DVD)&lt;/li&gt;
	&lt;li&gt;Resident Evil: Apocalypse (DVD)&lt;/li&gt;
	&lt;li&gt;Riddick Trilogy (DVD)&lt;/li&gt;
	&lt;li&gt;Robin Hood: Men In Tights (DVD)&lt;/li&gt;
	&lt;li&gt;Robin Hood: Prince of Thieves (DVD)&lt;/li&gt;
	&lt;li&gt;Romeo &amp;#38; Juliet (DVD)&lt;/li&gt;
	&lt;li&gt;Serenity (DVD)&lt;/li&gt;
	&lt;li&gt;The Simpsons, Seasons 4&amp;#38;5 (DVD)&lt;/li&gt;
	&lt;li&gt;Shaun of the Dead (DVD)&lt;/li&gt;
	&lt;li&gt;SLC Punk (DVD)&lt;/li&gt;
	&lt;li&gt;So I Married An Axe Murderer (BD)&lt;/li&gt;
	&lt;li&gt;Spaceballs (DVD)&lt;/li&gt;
	&lt;li&gt;Star Trek: The Original Series (Season 1) (BD)&lt;/li&gt;
	&lt;li&gt;Star Trek IV: The Voyage Home (BD)&lt;/li&gt;
	&lt;li&gt;Star Trek VI: The Undiscovered Country (BD)&lt;/li&gt;
	&lt;li&gt;Suicide Girls: The First Tour (DVD)&lt;/li&gt;
	&lt;li&gt;Suicide Kings (DVD)&lt;/li&gt;
	&lt;li&gt;Superbad (BD)&lt;/li&gt;
	&lt;li&gt;The Cell (DVD)&lt;/li&gt;
	&lt;li&gt;The Doors (DVD)&lt;/li&gt;
	&lt;li&gt;Three Kings (DVD)&lt;/li&gt;
	&lt;li&gt;Time Bandits (DVD)&lt;/li&gt;
	&lt;li&gt;Titan AE (DVD)&lt;/li&gt;
	&lt;li&gt;V For Vendetta (BD and DVD)&lt;/li&gt;
	&lt;li&gt;Zombieland (BD)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 3, last changed by treed at 10:41 on 2010-08-15.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Read, Version 3</title>
    <link href="http://www.umbraangeli.org/wiki/show/Read" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Read</id>
    <updated>2010-08-15T10:39:40Z</updated>
    <author>treed</author>
    <summary>Read, Version 3</summary>
    <content>&lt;p&gt;I like books.&lt;/p&gt;


	&lt;p&gt;Some of my favorites:&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Anything by Robert A. Heinlein. Particular favorites are A Stranger In A Strange Land, Time Enough For Love, and To Sail Beyond The Sunset.&lt;/li&gt;
	&lt;li&gt;George R.R. Martin's Song Of Fire and Ice series.&lt;/li&gt;
	&lt;li&gt;Pretty much anything by Neal Stephenson, in particular the Baroque Cycle and Cryptonomicon.&lt;/li&gt;
	&lt;li&gt;The original Dragonlance (Chronicles, Legends) series, by Margaret Weis and Tracy Hickman.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 3, last changed by treed at 10:39 on 2010-08-15.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>My_Hardware, Version 2</title>
    <link href="http://www.umbraangeli.org/wiki/show/My_Hardware" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/My_Hardware</id>
    <updated>2010-08-15T10:37:41Z</updated>
    <author>treed</author>
    <summary>My_Hardware, Version 2</summary>
    <content>&lt;p&gt;Most of these are named after Heinlein characters. (This being my geek naming theme.)&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Ben [Caxton]: Athlon XP 2600+ desktop, running Ubuntu&lt;/li&gt;
	&lt;li&gt;Wyoming [Knott]: Dell Studio XPS 15.6", Quad Core i7, dual-booting W7 and Ubuntu&lt;/li&gt;
	&lt;li&gt;Inara [Serra]: Macbook Pro 17", 2.06Ghz Core Duo, running OS X 10.5&lt;/li&gt;
	&lt;li&gt;Gwen [Novak]: iPhone 3GS&lt;/li&gt;
	&lt;li&gt;[D.D.] Harriman: Linksys WRT54GL&lt;/li&gt;
	&lt;li&gt;Jubal [Harshaw]: Cisco 3620 w/ NM-4A/S card&lt;/li&gt;
	&lt;li&gt;Jill [Boardman]: Cisco 2514&lt;/li&gt;
	&lt;li&gt;Anne/Miriam/Dorcas: Cisco 2501&lt;/li&gt;
	&lt;li&gt;Mike [Smith]: Kindle 2&lt;/li&gt;
	&lt;li&gt;Mycroft: Sony Playstation 3&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 2, last changed by treed at 10:37 on 2010-08-15.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>List_of_Completed_Games, Version 11</title>
    <link href="http://www.umbraangeli.org/wiki/show/List_of_Completed_Games" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/List_of_Completed_Games</id>
    <updated>2010-07-25T12:38:51Z</updated>
    <author>treed</author>
    <summary>List_of_Completed_Games, Version 11</summary>
    <content>&lt;p&gt;This is a list of video games that I have enjoyed enough (and been able) to play to completion. They represent the best of the best for me. It's probably also useful if you're thinking about recommending a game to me.&lt;/p&gt;


	&lt;p&gt;Completion of this list is dependent entirely on my memory. Expect the gaps to be filled in slowly.&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;NES
	&lt;ul&gt;
		&lt;li&gt;Super Mario Bros.&lt;/li&gt;
		&lt;li&gt;Super Mario Bros. 2&lt;/li&gt;
		&lt;li&gt;Super Mario Bros. 3 gets an honorable mention even though I could never actually beat it&lt;/li&gt;
		&lt;li&gt;The Legend of Zelda&lt;/li&gt;
		&lt;li&gt;Dragon Warrior IV&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Sega Genesis
	&lt;ul&gt;
		&lt;li&gt;Sonic the Hedgehog&lt;/li&gt;
		&lt;li&gt;Sonic the Hedgehog 2&lt;/li&gt;
		&lt;li&gt;Sonic the Hedgehog 3&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;SNES
	&lt;ul&gt;
		&lt;li&gt;Super Mario World&lt;/li&gt;
		&lt;li&gt;The Legend of Zelda: A Link to the Past&lt;/li&gt;
		&lt;li&gt;Secret of Evermore&lt;/li&gt;
		&lt;li&gt;F-Zero&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Playstation 1
	&lt;ul&gt;
		&lt;li&gt;Castlevania: Symphony of the Night&lt;/li&gt;
		&lt;li&gt;Final Fantasy VII&lt;/li&gt;
		&lt;li&gt;Final Fantasy VIII (I got to disc four, and then didn't bother beating it because I watched someone else beat it)&lt;/li&gt;
		&lt;li&gt;Suikoden&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Nintendo 64
	&lt;ul&gt;
		&lt;li&gt;Super Mario 64&lt;/li&gt;
		&lt;li&gt;The Legend of Zelda: Ocarina of Time&lt;/li&gt;
		&lt;li&gt;Star Wars: Shadows of the Empire&lt;/li&gt;
		&lt;li&gt;Doom 64&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Playstation 2
	&lt;ul&gt;
		&lt;li&gt;God of War&lt;/li&gt;
		&lt;li&gt;God of War II&lt;/li&gt;
		&lt;li&gt;Katamari Damacy&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Nintendo DS
	&lt;ul&gt;
		&lt;li&gt;Mario Kart DS&lt;/li&gt;
		&lt;li&gt;New Super Mario Bros.&lt;/li&gt;
		&lt;li&gt;Castlevania: Aria of Sorrow&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Playstation 3
	&lt;ul&gt;
		&lt;li&gt;Assassin's Creed&lt;/li&gt;
		&lt;li&gt;Bioshock&lt;/li&gt;
		&lt;li&gt;Call of Duty 4: Modern Warfare&lt;/li&gt;
		&lt;li&gt;Call of Duty 5: World at War&lt;/li&gt;
		&lt;li&gt;Modern Warfare 2&lt;/li&gt;
		&lt;li&gt;LittleBigPlanet&lt;/li&gt;
		&lt;li&gt;Rock Band&lt;/li&gt;
		&lt;li&gt;Uncharted: Drake's Fortune&lt;/li&gt;
		&lt;li&gt;Uncharted 2: Among Thieves&lt;/li&gt;
		&lt;li&gt;Battlefield: Bad Company&lt;/li&gt;
		&lt;li&gt;Heavenly Sword&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;PC
	&lt;ul&gt;
		&lt;li&gt;Half-Life 2&lt;/li&gt;
		&lt;li&gt;Starcraft&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 11, last changed by treed at 12:38 on 2010-07-25.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Home, Version 13</title>
    <link href="http://www.umbraangeli.org/wiki/show/Home" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Home</id>
    <updated>2010-05-15T15:44:45Z</updated>
    <author>treed</author>
    <summary>Home, Version 13</summary>
    <content>&lt;p&gt;Hi! I'm Ted Reed. Welcome to my (horribly plain-looking) website, a repository for my egotistical material. There isn't much here yet, but it's slowly growing.&lt;/p&gt;


	&lt;p&gt;Anyway, I'm a 26-year-old geek from Southern California, currently residing in the San Francisco Bay Area. Like many geeks, I &lt;a href="/wiki/show/Read"&gt;Read&lt;/a&gt;, &lt;a href="/wiki/show/Code"&gt;Code&lt;/a&gt;, enjoy &lt;a href="/wiki/show/Music"&gt;Music&lt;/a&gt; and &lt;a href="/wiki/show/Movies_and_TV"&gt;Movies and TV&lt;/a&gt;, play &lt;a href="/wiki/show/Video_Games"&gt;Video Games&lt;/a&gt;, name &lt;a href="/wiki/show/My_Hardware"&gt;My Hardware&lt;/a&gt; according to a theme, and enjoy the use of the &lt;a href="http://en.wikipedia.org/wiki/Serial_comma"&gt;Oxford Comma&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;I am no longer looking for work, but feel free to take a look at my &lt;a href="/wiki/show/Resume"&gt;Resume&lt;/a&gt;. You may also be interested in my &lt;a href="/wiki/show/Adventures_In_Geekdom"&gt;Adventures In Geekdom&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is version 13, last changed by treed at 15:44 on 2010-05-15.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>VNV_Nation, Version 3</title>
    <link href="http://www.umbraangeli.org/wiki/show/VNV_Nation" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/VNV_Nation</id>
    <updated>2010-03-22T21:14:50Z</updated>
    <author>treed</author>
    <summary>VNV_Nation, Version 3</summary>
    <content>&lt;p&gt;Here's my personal "Best Of" list. Particular favorites are in bold.&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Advance and Follow (1995)
	&lt;ul&gt;
		&lt;li&gt;5: Serial Killer&lt;/li&gt;
		&lt;li&gt;6: Cold&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Praise The Fallen (1998)
	&lt;ul&gt;
		&lt;li&gt;2: Joy&lt;/li&gt;
		&lt;li&gt;7: Honour&lt;/li&gt;
		&lt;li&gt;9: Solitary&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Empires (1999)
	&lt;ul&gt;
		&lt;li&gt;3: Rubicon&lt;/li&gt;
		&lt;li&gt;7: Standing&lt;/li&gt;
		&lt;li&gt;9: Darkangel&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Futureperfect (2002)
	&lt;ul&gt;
		&lt;li&gt;2: &lt;strong&gt;Epicentre&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;3: Electronaut&lt;/li&gt;
		&lt;li&gt;7: Genesis&lt;/li&gt;
		&lt;li&gt;8: &lt;strong&gt;Structure&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;9: &lt;strong&gt;Fearless&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;11: &lt;strong&gt;Beloved&lt;/strong&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Matter+Form (2005)
	&lt;ul&gt;
		&lt;li&gt;2: Chrome&lt;/li&gt;
		&lt;li&gt;5: &lt;strong&gt;Strata&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;6: &lt;strong&gt;Interceptor&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;7: Entropy&lt;/li&gt;
		&lt;li&gt;11: Perpetual&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Judgement (2007)
	&lt;ul&gt;
		&lt;li&gt;3: Testament&lt;/li&gt;
		&lt;li&gt;6: Nemesis&lt;/li&gt;
		&lt;li&gt;8: Illusion&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;Of Faith, Power, and Glory (2009)
	&lt;ul&gt;
		&lt;li&gt;3: Tomorrow Never Comes&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 3, last changed by treed at 21:14 on 2010-03-22.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Music, Version 1</title>
    <link href="http://www.umbraangeli.org/wiki/show/Music" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Music</id>
    <updated>2010-03-21T13:28:25Z</updated>
    <author>treed</author>
    <summary>Music, Version 1</summary>
    <content>&lt;p&gt;I'm a big, big fan of music. My favorite bands/artists include:&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Tool&lt;/li&gt;
	&lt;li&gt;Nine Inch Nails&lt;/li&gt;
	&lt;li&gt;Fiona Apple&lt;/li&gt;
	&lt;li&gt;&lt;a href="/wiki/show/VNV_Nation"&gt;VNV Nation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;(I'll fill in more as I find time.)&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is version 1, last changed by treed at 13:28 on 2010-03-21.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Code, Version 8</title>
    <link href="http://www.umbraangeli.org/wiki/show/Code" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Code</id>
    <updated>2010-03-21T13:26:38Z</updated>
    <author>treed</author>
    <summary>Code, Version 8</summary>
    <content>&lt;p&gt;There's a lot more code I've written, and I'll get to back-filling this, but here's a list of things I've been working on lately.&lt;/p&gt;


&lt;h3&gt;Recent-ish Stuff&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;jvs, a command-line ruby script to query the XML exported from &lt;a href="http://jbovlaste.lojban.org/"&gt;jbovlaste&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;I'm the maintainer of &lt;a href="http://github.com/cardinal/cardinal/tree/master"&gt;Cardinal&lt;/a&gt;, the Ruby implementation for Parrot.&lt;/li&gt;
	&lt;li&gt;mekso, another language implemented with the Parrot tools. It's based on a subset of &lt;a href="http://lojban.org/"&gt;Lojban&lt;/a&gt;, specifically the math portions.&lt;/li&gt;
	&lt;li&gt;check_snmp_traffic, a nagios plugin written in perl. It queries an SNMP device for traffic data, and presents it as an average.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Older Stuff&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href="/wiki/show/mumym"&gt;mumym&lt;/a&gt;, an IRC bot that plays a Lojban word game&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;All of these are available on my &lt;a href="http://github.com/treed/"&gt;github&lt;/a&gt; page.&lt;/p&gt;


	&lt;p&gt;Although most of what I write these days is in Perl, I have, over the years, used or at least learned to read a number of languages. These include (in no particular order):&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;ASM (6502, IA-32, Z-80)&lt;/li&gt;
	&lt;li&gt;C&lt;/li&gt;
	&lt;li&gt;C++&lt;/li&gt;
	&lt;li&gt;C#&lt;/li&gt;
	&lt;li&gt;Java&lt;/li&gt;
	&lt;li&gt;BASIC&lt;/li&gt;
	&lt;li&gt;Visual Basic&lt;/li&gt;
	&lt;li&gt;VBA&lt;/li&gt;
	&lt;li&gt;Python&lt;/li&gt;
	&lt;li&gt;Perl (5)&lt;/li&gt;
	&lt;li&gt;Ruby&lt;/li&gt;
	&lt;li&gt;Euphoria&lt;/li&gt;
	&lt;li&gt;OCaml&lt;/li&gt;
	&lt;li&gt;Lisp&lt;/li&gt;
	&lt;li&gt;Scheme&lt;/li&gt;
	&lt;li&gt;Bourne Shell&lt;/li&gt;
	&lt;li&gt;NQP&lt;/li&gt;
	&lt;li&gt;PIR&lt;/li&gt;
	&lt;li&gt;D&lt;/li&gt;
	&lt;li&gt;Javascript&lt;/li&gt;
	&lt;li&gt;PHP&lt;/li&gt;
	&lt;li&gt;SQL&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 8, last changed by treed at 13:26 on 2010-03-21.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Video_Games, Version 2</title>
    <link href="http://www.umbraangeli.org/wiki/show/Video_Games" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Video_Games</id>
    <updated>2010-01-31T14:26:22Z</updated>
    <author>treed</author>
    <summary>Video_Games, Version 2</summary>
    <content>&lt;p&gt;I've been a gamer since the days of the NES. I've had pretty much every Nintendo system ever made (including the Virtual Boy; picked it up from Toys R Us for $30). These days I mostly play games on DS or PS3 (PSN: TedReed).&lt;/p&gt;


	&lt;p&gt;Check out my &lt;a href="/wiki/show/List_of_Completed_Games"&gt;List of Completed Games&lt;/a&gt;. They're all pretty spectacular, in one way or another.&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is version 2, last changed by treed at 14:26 on 2010-01-31.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Resume, Version 18</title>
    <link href="http://www.umbraangeli.org/wiki/show/Resume" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Resume</id>
    <updated>2009-09-20T22:10:17Z</updated>
    <author>treed</author>
    <summary>Resume, Version 18</summary>
    <content>&lt;div style="text-align: center;"&gt;&lt;strong&gt;Ted Reed&lt;/strong&gt;&lt;br/&gt; &lt;a href="mailto:ted.reed@gmail.com"&gt;ted.reed@gmail.com&lt;/a&gt; - (626) 817-3032&lt;/div&gt;
	&lt;p&gt;This is my "traditional" resume. If you're interested in more detail about my knowledge and abilities, you may wish to check out my &lt;a href="/wiki/show/Adventures_In_Geekdom"&gt;Adventures In Geekdom&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Feel free to &lt;a href="/wiki/show/Contact_Me"&gt;Contact Me&lt;/a&gt; with relevant job offers, or just to chat about things.&lt;/p&gt;


&lt;h3&gt;Objectives&lt;/h3&gt;

	&lt;p&gt;To show off? I'm quite happy with my current employment, but feel free to peruse anyway.&lt;/p&gt;


&lt;h3&gt;Skills &amp;#38; Certifications&lt;/h3&gt;

	&lt;p&gt;I am a very fast learner, and have a variety of experience with technology at all levels. As a short list, I've built and repaired systems, coded in everything from Assembly to Java, debugged and fixed hardware issues, and installed and maintained various network server software.&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Networking: Cisco IOS, TCP/IP (including IPv6), DNS, DHCP, POP/SMTP/IMAP, Nagios.&lt;/li&gt;
	&lt;li&gt;Software: Exim, Postfix, Dovecot, SpamAssassin, Apache, Asterisk, Samba, MySQL, SQLite, BIND9.&lt;/li&gt;
	&lt;li&gt;Operating Systems: Windows (2000/XP/Vista/7) (8 years), Mac OS X (2 years), Linux (Debian/Red Hat/Gentoo) (8 years).&lt;/li&gt;
	&lt;li&gt;Programming Languages: Assembly, C, C++, C#, Java, JavaScript/ECMAScript, Ruby, Python.&lt;/li&gt;
	&lt;li&gt;Ability to perform well under pressure.&lt;/li&gt;
	&lt;li&gt;Excellent written and oral communication skills.&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;I hold a CCNA cert, and have been studying for other Cisco exams (BSCI, ONT, ISCW, CCNA Voice, CCNA Wireless). There's too much good stuff in there to decide which to concentrate on at the moment. In the closer term, I'm also preparing to take the RHCE exam, for which I don't anticipate needing much study.&lt;/p&gt;


	&lt;p&gt;References available upon request.&lt;/p&gt;


&lt;h3&gt;Work Experience&lt;/h3&gt;

&lt;h4&gt;Systems Administrator - &lt;a href="http://imvu.com/"&gt;IMVU&lt;/a&gt; Inc.&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;September 2009-Present&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Various Personal Projects and Contributions to Open Source Projects&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;2002-Present&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;(See also: &lt;a href="/wiki/show/Code"&gt;Code&lt;/a&gt;)&lt;/p&gt;


	&lt;p&gt;Experience&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;I maintain &lt;a href="http://github.com/cardinal/cardinal/tree/master"&gt;Cardinal&lt;/a&gt;, the Ruby implementation for the Parrot VM.&lt;/li&gt;
	&lt;li&gt;Made a simple programming language with the Parrot utilities, based on the mathematics portion of &lt;a href="http://lojban.org/"&gt;Lojban&lt;/a&gt;.    &lt;/li&gt;
	&lt;li&gt;Maintained Linux port of &lt;a href="http://sphere.sf.net"&gt;Sphere&lt;/a&gt; and &lt;a href="http://audiere.sf.net/"&gt;Audiere&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;Contributed bugfixes to Rhythmbox.&lt;/li&gt;
	&lt;li&gt;Wrote a number of custom IRC bots in Python, the earliest of which use irclib (now defunct), and some of which have been converted to Twisted, wrote Debian packages for the bots (and irclib).&lt;/li&gt;
	&lt;li&gt;Wrote a mostly-complete implementation of the Funge-98 spec in Python called EBG.&lt;/li&gt;
	&lt;li&gt;Various personal/non-profit websites in HTML, PHP/MySQL, and Ruby on Rails.&lt;/li&gt;
	&lt;li&gt;Created a Debian package for camxes, a Java parser for the Lojban language and successor to jbofihe, mentioned below.&lt;/li&gt;
	&lt;li&gt;I also maintain the apt repo at http://lojban.org/debian/ which hosts the camxes package and testing versions of jbofihe.&lt;/li&gt;
	&lt;li&gt;Other small projects including various video game engines and a music player.&lt;/li&gt;
	&lt;li&gt;Joined in the beta tests for Windows Vista and 7.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Package Maintainer - The Debian Project&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;April 2005-Present&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Duties And Responsibilities:&lt;/h5&gt;

	&lt;p&gt;I am a package maintainer for the jbofihe package, a parser for the Lojban language. My responsibilities include responding to bug reports and keeping the package up to date.&lt;/p&gt;


&lt;h4&gt;Systems/Network Administrator - Pulsar Aviation Services, Inc.&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;August 2005-June 2009&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Job Description&lt;/h5&gt;

	&lt;p&gt;Pulsar is a small but growing aviation maintenance company, of which I was the second employee. In the time since, I built their IT infrastructure from the ground up. By the end, I was responsible for all systems/network support/administration functions in the company, and occasionally filled in for operations positions as well.&lt;/p&gt;


&lt;h5&gt;Duties And Responsibilities&lt;/h5&gt;

&lt;ul&gt;
	&lt;li&gt;Built and maintained servers and workstations.&lt;/li&gt;
	&lt;li&gt;Installation, configuration, and maintenance of just about everything on our network, including: Cisco router, website(s), e-mail system, file server (SMB/AFP/NFS), DNS server, DHCP server, PBX system.&lt;/li&gt;
	&lt;li&gt;Installed/maintained Operating systems (Win XP/Vista, OS X) and most software on workstations.&lt;/li&gt;
	&lt;li&gt;Provided technical support for company personnel, and occasionally customers or partners.&lt;/li&gt;
	&lt;li&gt;Began an IPv6 transition. At this stage, all server systems and workstations are on the public IPv6 network, and all public-facing server software is configured to use IPv6.&lt;/li&gt;
	&lt;li&gt;Functioned as Shipping/Receiving, Sales, Purchasing and other duties as necessities arose.&lt;/li&gt;
	&lt;li&gt;Wrote policy manuals, typesetting them in Adobe FrameMaker.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Crew Manager - WIS International&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;January 2003-August 2005&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Job Description&lt;/h5&gt;

	&lt;p&gt;I was a Crew Manager for a company specializing in inventory management and audits. Most of my job revolved around ensuring the accuracy and timeliness of inventory audits.&lt;/p&gt;


&lt;h5&gt;Duties And Responsibilities&lt;/h5&gt;

&lt;ul&gt;
	&lt;li&gt;Supervised up to fifty inventory auditors at a time.&lt;/li&gt;
	&lt;li&gt;Counted inventory in warehouses and retail locations, using proprietary software and equipment.&lt;/li&gt;
	&lt;li&gt;Operated company PC equipment and proprietary software, occasional maintenance of same.&lt;/li&gt;
	&lt;li&gt;Trained other employees.&lt;/li&gt;
	&lt;li&gt;Responsible for inventories as a whole, as primary contact with customer during inventory.&lt;/li&gt;
	&lt;li&gt;Improvement of productivity in various accounts. As an example, I once single-handedly reduced a recurring job from an average of 32 man-hours (four-man crew, eight hours), to an average of 11 man-hours (two-man crew, five and a half hours), bringing profitability where the company had once been losing money, and saving the account.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 18, last changed by treed at 22:10 on 2009-09-20.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Adventures_In_Geekdom, Version 30</title>
    <link href="http://www.umbraangeli.org/wiki/show/Adventures_In_Geekdom" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Adventures_In_Geekdom</id>
    <updated>2009-08-14T10:26:09Z</updated>
    <author>treed</author>
    <summary>Adventures_In_Geekdom, Version 30</summary>
    <content>&lt;p&gt;I am a sysadmin and programmer (in fact, this website is a wiki I wrote in Ruby/Rails) looking for a challenging, rewarding position, ideally in large-scale systems administration. This page records some of my more significant exploits and learning experiences in those areas, and gives a good idea of my skills and attitude towards technology and learning.  You may also be interested in my traditional &lt;a href="/wiki/show/Resume"&gt;Resume&lt;/a&gt;.  Please feel free to &lt;a href="/wiki/show/Contact_Me"&gt;Contact Me&lt;/a&gt; about any job openings you might have, or about anything else on this page.&lt;/p&gt;


	&lt;p&gt;As a general note, a lot of these stories took place while I was working at Pulsar Aviation, a tiny company (around 3 full-time people) with very limited resources that does maintenance support for commercial aircraft, and has offices on the decommissioned Norton Air Force Base on the edge of, well, not nowhere, but not much either (specifically, in San Bernardino, California; an hour or so east of Los Angeles County).&lt;/p&gt;


&lt;h3&gt;Figuring Out Verizon's DSL Protocol&lt;/h3&gt;

	&lt;p&gt;Smart geeks know that we should read the documentation, but sometimes even having done so won't keep you out of trouble. There are times when, even after you've carefully prepared by reading as much documentation as you can find, it doesn't help, and you find yourself reading raw ATM cells in hex, trying to figure out why your modem/router can establish a link, but won't talk IP over it.&lt;/p&gt;


	&lt;p&gt;&lt;a href="Figuring_Out_Verizon's_DSL_Protocol"&gt;Read More&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;Learning BIND9 In A Hurry&lt;/h3&gt;

	&lt;p&gt;I love working with technology and learning new things, but there's "Hey, I'll play around with X until I've learned it" and there's "My choices are learn X right now, or tell everyone tomorrow morning why they can't get to the mail server".  The latter is a lot less fun, but it sure is motivating.  In this case, X was BIND9, and it had been a 12 hour day by the time I realized I was going to have to make it work, and I'd never edited a raw zone file before.&lt;/p&gt;


	&lt;p&gt;&lt;a href="Learning_BIND9_In_A_Hurry"&gt;Read More&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;"Helping" My Dad Install His HD&lt;/h3&gt;

	&lt;p&gt;So, when I was 10 years old (1994), my dad got a shiny new hard drive for his 486DX computer. He, as a geeky sort of guy, was really excited about having so much more space and wanted to install it as soon as he got home.  But when he brought it home and tried to install it, his computer refused to interact with the new drive. He swore up and down and rebooted over and over again trying different options to get it to work.&lt;/p&gt;


	&lt;p&gt;Finally, he got pissed off enough that he walked out of the room to calm down. I, as an even geekier version of my father, walk over to his computer and start trying to figure it out. When he comes back a few minutes later, I calmly inform him that "I fixed it for you, Dad." He blinks, then looks at the screen where I point to the window displaying his new HD.&lt;/p&gt;


	&lt;p&gt;"How'd you fix it?"&lt;/p&gt;


	&lt;p&gt;"Well," I say, moving back to the open tower case next to the desk and pulling the IDE ribbon a little higher up. "You had this cable plugged in backwards. The red line needs to be on &lt;em&gt;this&lt;/em&gt; side."&lt;/p&gt;


&lt;h3&gt;Learning POP3&lt;/h3&gt;

	&lt;p&gt;When I was 16ish, I was using BeOS R5 as my daily operating system. One day, I began having trouble with my e-mail client (BeMail). It'd get about 20 messages into a download, and then crash, leaving all those messages still on there, and unable to get past the one making it crash. I looked up the RFC and learned enough of the protocol to use telnet to log into my POP3 server and delete the message causing the issue.&lt;/p&gt;


&lt;h3&gt;Fun With Beta Kernel Releases&lt;/h3&gt;

	&lt;p&gt;Around 2003 (I was 19 or so) I'd long since gotten computers of my own and begun to mess around with various alternative operating systems. At this point, I'm running Debian Woody as my day-to-day OS and I'd finally gotten around to setting up an older HD as a backup drive, so I felt more safe playing around with the betas of Linux 2.6 that had recently been released. I grabbed the tarball for 2.6.0test2 and compiled it. Next I tried to compile the nvidia module, expecting it to fail completely, which it did. After hunting down and applying a user-supplied patch, I got things back on track and went for my first reboot into 2.6, where I saw "Booting kernel..." followed by... nothing. Crap.&lt;/p&gt;


	&lt;p&gt;In the kern.log, I discover that the system was actually active well past the point where it had printed the "Booting kernel..." message. It found and activated my hardware, and later on I can even see evidence that init had started and mounted the filesystems and launched at least some of my daemons.&lt;/p&gt;


	&lt;p&gt;I compare the log with the successful boot on 2.4 and fail to find any important differences. So I figure that I'll see if it's a problem with the framebuffer driver.&lt;/p&gt;


	&lt;p&gt;Looking for corroboration for this theory (or for something to suggest another problem) before I start digging into that, I grep all of the logs starting from the point where I saw the messages from init. Here I found that X repeatedly tries to start, but fails, /dev/tty[1-6] can't be opened and module 'serial' can't be found. A-ha!&lt;/p&gt;


	&lt;p&gt;Looking through make menuconfig, I hunt down the serial module and also discover a bunch of new "drivers" that had apparently been separated out from the core kernel during the shift to 2.6. These modules are also required for the use of consoles. After playing around some more, I also find out that it's the &lt;em&gt;inclusion&lt;/em&gt; of the framebuffer driver that's preventing X from starting. Now I can get the system up to the point where I have a GDM login screen, but it's not responding to the mouse or keyboard. Going back into make menuconfig, I find that these functions have also been separated out from the core kernel. I enable them, recompile/reboot and then bask in the glory of my shiny new kernel.&lt;/p&gt;


&lt;h3&gt;The Case Of The Apparently Firewalled Connections&lt;/h3&gt;

	&lt;p&gt;Sometimes it's difficult to tell when a connection issue is caused by our ISP or when it's something within our network. (Or something else entirely, like the time a work crew decided that they were going to rewire all of the phone lines going to their part of the building and took a pair of shears to the bundle that connected much, much more than just their portion.)  On top of that, even when you know where the problem is, that doesn't necessarily make it any easier to solve, which is what led me to poring over tcpdump output in which both sides of the connection were sure they were sending all the right things, but weren't seeing what the other side said it was sending ... but only on IPv4, IPv6 worked fine.&lt;/p&gt;


	&lt;p&gt;&lt;a href="The_Case_Of_The_Apparently_Firewalled_Connections"&gt;Read More&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;Playing With IPv6&lt;/h3&gt;

	&lt;p&gt;As the earlier story about trying the Linux 2.6 beta releases demonstrates, I'm the sort of geek who will bust open and play with the latest toys just for the sake of trying it, especially if I think it's the sort of thing I'll need to know about in the future. To that end, I'd played around with IPv6 tunnels here and there and given a few spare moments last year, I began the process of putting our office on the IPv6-ternet, starting with just a tunnel to our web/e-mail server, and eventually getting a /48 and putting up a radvd.&lt;/p&gt;


	&lt;p&gt;To date the only systems on our network that are not on IPv6 are the networked scanner and our iPhones. (I've no idea why Apple has decided against supporting IPv6 on the iPhone thus far. They have pretty good support for it everywhere else.) All of our server software (well, the ones for which IPv6 is relevant) is configured to respond to IPv6 requests. I also have our DNS server set up to route requests for google.com and its subdomains through the DNS server of our IPv6 provider, who is set up with the Google over IPv6 program.&lt;/p&gt;


	&lt;p&gt;A few things I learned during this project:&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;Most modern Operating Systems support IPv6. Mac and Linux support it out of the box, as do Windows Vista and 7. Windows XP (SP2+) supports by adding it as a protocol to a network interface. &lt;/li&gt;
	&lt;li&gt;DHCPv6 exists, although support for it is touchy. Mac OS X doesn't support it at all, relying solely on either static configuration or the standard IPv6 autoconfiguration via the Neighbor Discovery Protocol. Specification of a DNS server is possible in a router advertisement (NDP), but it's a recent addition to the protocol and none of the clients seem to understand it. (Meaning that I can't
&lt;em&gt;quite&lt;/em&gt;  turn off IPv4 and have things work automagically.)&lt;/li&gt;
	&lt;li&gt;Windows, by default, ignores the usual autoconfigured address mechanism and generates a random host ID periodically for "privacy". Disabling this is two lines on the command prompt.&lt;/li&gt;
	&lt;li&gt;Reverse DNS isn't much different than IPv4 rDNS, although it's more granular, offering the ability to delegate after each 4 bits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Complex NAT Over IRC&lt;/h3&gt;

	&lt;p&gt;Like many geeks, I have a tendency to immediately start trying to solve any problem someone happens to mention in my presence.&lt;/p&gt;


	&lt;p&gt;In mid-May 2009, a friend of mine (who is, for the record, a Senior Sysadmin, and at the time had been one for more than half a decade) was on IRC, talking about trying to properly set up his home router (which had a Linux-based firmware mod on it) to handle his complex (for a home user) addressing scheme. He has four static addresses, three of which are for specific systems; the last is used for everything else.&lt;/p&gt;


	&lt;p&gt;He'd copied a configuration for "One-to-One NAT", and had some success with it, but experienced breakage attempting to modify it. After I started trying to fix that, he said "If you're going to spend a bunch of time looking at this, there's a much more important problem."&lt;/p&gt;


	&lt;p&gt;The much more important problem was the same problem I'd had with my Verizon-branded router the year before: Packets from inside the NAT addressed to a system behind the same NAT via its external address were being dropped.&lt;/p&gt;


	&lt;p&gt;I had him dump his iptables configuration to a pastebin and looked it over, discovering that the rule handling NAT destination address munging was restricted to &lt;strong&gt;only&lt;/strong&gt; packets coming in from the outside address. I had him adjust the configuration to remove that restriction, after which the problem was fixed for all the static NAT entries, but not for communication between those machines and the dynamic NAT machines.&lt;/p&gt;


	&lt;p&gt;A little more playing around, and we discovered that it was because there wasn't any Source-NAT in place for packets originating from and destined for the local network. I gave him the correct iptables line for that, and the happy dances commenced.&lt;/p&gt;


	&lt;p&gt;Incidentally, the original problem that got me involved fixed itself during all this; he credits me for that, which is fine by me.&lt;/p&gt;


&lt;h3&gt;Other Things I've Learned&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Linux 802.11 devs &lt;em&gt;love&lt;/em&gt; to change the location of firmware between versions, much to my annoyance.&lt;/li&gt;
	&lt;li&gt;Sometimes, the wrong driver grabs your device at boot, requiring manual intervention. (Again, the 802.11 devs must have it out for me, as this seems to happen much more often with their drivers.)&lt;/li&gt;
	&lt;li&gt;A file is not the same thing as an inode; remembering this will sometimes be a life-saver.&lt;/li&gt;
	&lt;li&gt;On that note, deleting a file does not necessarily delete the inode behind it. lsof is awesome.&lt;/li&gt;
	&lt;li&gt;Also awesome: strace (and ltrace!), netcat, tcpdump, find, xargs, fail2ban (beyond its stock confguration; you can do really neat things with it)&lt;/li&gt;
	&lt;li&gt;Knowing that you can pass "init=/bin/sh" to the kernel boot line can also be a life-saver.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;This is version 30, last changed by treed at 10:26 on 2009-08-14.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>mumym, Version 5</title>
    <link href="http://www.umbraangeli.org/wiki/show/mumym" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/mumym</id>
    <updated>2009-07-10T18:22:44Z</updated>
    <author>treed</author>
    <summary>mumym, Version 5</summary>
    <content>&lt;p&gt;Mumym is a lojbanic wordgame similar to 5x5 or Mastermind. It selects a random gismu, and people take turns guessing which one. With every guess, you get a score, telling you how many letters in your guess are in the winning gismu. It also has a framework for AI, although there is only one simple AI right now.&lt;/p&gt;


	&lt;p&gt;The current version of Mumym is 0.9.1, released on 14 Jan 2004.&lt;/p&gt;


	&lt;p&gt;The source is available at &lt;a href="http://github.com/treed/mumym/tree/master"&gt;github&lt;/a&gt;.&lt;/p&gt;


&lt;h3&gt;How to play Mumym&lt;/h3&gt;

	&lt;p&gt;When Mumym is just sitting there, having just joined, or not playing a game, you can tell it to start the game process by saying:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;doi mumym ko cfari&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;Mumym then enters the starting phase. Here, players can specify their desire to play with the following:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;doi mumym mi kelci djica&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;You can also tell it that you want an AI to play with a command like the following:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;doi mumym la .alis kelci&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;When all the players are ready, you can tell Mumym to start the actual game with:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;doi mumym ko cfagau&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;Mumym will then ask the players in order to guess. You can respond with a guess by saying:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;zo gismu&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;Where gismu is your guess.&lt;/p&gt;


	&lt;p&gt;At any time during play, you can tell Mumym to end the current game by saying:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;doi mumym ko sisti&lt;/cite&gt;&lt;/p&gt;


	&lt;p&gt;You can also ask Mumym to redisplay its startup message by saying:&lt;/p&gt;


	&lt;p&gt;&lt;cite&gt;doi mumym ko sarji&lt;/cite&gt;&lt;/p&gt;


&lt;h3&gt;Contributing AI&lt;/h3&gt;

	&lt;p&gt;I have a generally open call for new AI classes for Mumym. It must be written in fairly clean Python, and must be licensed under the GPL.&lt;/p&gt;


	&lt;p&gt;(The following code is all under the GNU GPL.)&lt;/p&gt;


	&lt;p&gt;When making an AI, you derive from the following class:&lt;/p&gt;


&lt;pre&gt;class AI:
    "Base class for AIs." 
    def __init__(self, mumym):
        global possible_gismu
        self.possible_gismu = possible_gismu
        self.mumym = mumym
        self.name = "nalselme'e" 

    def onGuess(self, guess, score):
        "Called when someone makes a guess, including the current AI." 
        pass

    def makeGuess(self):
        "Called when it's the AI's turn; return the guess." 
        return "gismu"&lt;/pre&gt;
	&lt;p&gt;Here is an example of a very simple AI:&lt;/p&gt;


&lt;pre&gt;class SimpleAI(AI): # la .alis.
    "A simple AI that will only guess random words that haven't already been guessed." 
    def __init__(self, mumym):
        AI.__init__(self, mumym)
        self.name = ".alis." 

    def onGuess(self, guess, score):
        # This needs to be done in a try block, in case some bonehead guesses a word
        #  that's already been guessed.
        try:
            self.possible_gismu.remove(guess)
        except:
            pass

    def makeGuess(self):
        return random.choice(self.possible_gismu)&lt;/pre&gt;
	&lt;p&gt;If you need help or want to submit one, &lt;a href="/wiki/show/Contact_Me"&gt;Contact Me&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is version 5, last changed by treed at 18:22 on 2009-07-10.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Figuring_Out_Verizon's_DSL_Protocol, Version 2</title>
    <link href="http://www.umbraangeli.org/wiki/show/Figuring_Out_Verizon's_DSL_Protocol" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Figuring_Out_Verizon's_DSL_Protocol</id>
    <updated>2009-07-08T21:48:07Z</updated>
    <author>treed</author>
    <summary>Figuring_Out_Verizon's_DSL_Protocol, Version 2</summary>
    <content>&lt;p&gt;(Note: This is a part of my &lt;a href="/wiki/show/Adventures_In_Geekdom"&gt;Adventures In Geekdom&lt;/a&gt;.)&lt;/p&gt;


	&lt;p&gt;Having &lt;a href="The_Case_Of_The_Apparently_Firewalled_Connections"&gt;had problems&lt;/a&gt; with our ISP-provided Verizon-branded ADSL modem/router, I bought a Cisco SR520 to replace it. I was able to get some of the configuration information out of the old mouter, but nothing indicating the exact protocol used.&lt;/p&gt;


	&lt;p&gt;I had called our ISP to ask about what standards my DSL modem might need to adhere to and gotten a nice little runaround where they told me basically to just buy the one that I already had. The lady refused outright to tell me anything about what standards were in use, claiming that "the CO doesn't give out that information."&lt;/p&gt;


	&lt;p&gt;Wonderful. At this point, I'd done some reading about the various DSL protocols and determined that there really weren't that many. Going through the Cisco book covering ISCW material (CCNP-level WAN and VPN configuration, mostly), I counted that there were only really three options:&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;PPP over Ethernet over ATM&lt;/li&gt;
	&lt;li&gt;PPP over ATM with AAL5MUX&lt;/li&gt;
	&lt;li&gt;PPP over ATM with AAL5SNAP&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;Well, as with many things, books don't always reflect reality.&lt;/p&gt;


	&lt;p&gt;I ordered the router and wrote up partial configurations to save time when it arrived, including variants for each of the three ADSL protocol options. When it arrived, I installed the first and (once everyone else had gone home) tried it out.&lt;/p&gt;


	&lt;p&gt;Well, to cut the story short, none of the three options worked. I could successfully use OAM to ping, so clearly the ADSL link itself worked, but I couldn't get IP over it. With the hour getting late, I turned on debugging to capture some of the incoming ATM cells so that I could look over them the next day.&lt;/p&gt;


	&lt;p&gt;The next morning I broke open some more books (and RFCs) and started looking up everything I could on AAL5 and SNAP, using this information to manually decode the ATM cells (captured from the debug output in hex). I determined that the encapsulation was certainly AAL5SNAP, but the SNAP header indicated that the contents were not IP and also not PPP. Instead it was something called Bridged Ethernet, something which none of the books even mentioned as an option.&lt;/p&gt;


	&lt;p&gt;Having discovered that, it then became an exercise in how to get the Cisco router to &lt;em&gt;speak&lt;/em&gt; Bridged Ethernet. Setting the ATM interface to speak IP directly resulted in AAL5SNAP+IP. The solution was to enable "Integrated Routing and Bridging", which allows the use of a "Bridged Virtual Interface". Placing the ATM interface into the relevant bridge-group, and then setting the IP configuration on BVI1, causes the router to bridge ethernet frames directly onto the ATM link. As soon as I enabled that configuration, IP connectivity was instantaneous.&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is version 2, last changed by treed at 21:48 on 2009-07-08.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>The_Case_Of_The_Apparently_Firewalled_Connections, Version 11</title>
    <link href="http://www.umbraangeli.org/wiki/show/The_Case_Of_The_Apparently_Firewalled_Connections" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/The_Case_Of_The_Apparently_Firewalled_Connections</id>
    <updated>2009-07-01T13:52:38Z</updated>
    <author>treed</author>
    <summary>The_Case_Of_The_Apparently_Firewalled_Connections, Version 11</summary>
    <content>&lt;p&gt;(Note: This is a part of my &lt;a href="/wiki/show/Adventures_In_Geekdom"&gt;Adventures In Geekdom&lt;/a&gt;.)&lt;/p&gt;


	&lt;p&gt;Earlier this year, we (Pulsar Aviation) began having some intermittent congestion issues. A web page would just cease loading partway through and wouldn't do anything until the user hit the refresh button. The issue was intermittent enough that I had a difficult time observing it. By the time I'd notice the issue and gotten iftop and friends up, the problem had gone away. A few times it lasted much longer and I was able to note a vague sort of correlation between high bandwidth usage and the occurrence of this issue. A reboot of the DSL Modem/Router would cause things to go back to normal.&lt;/p&gt;


	&lt;p&gt;At some point I noticed that this was also affecting an IRC connection. I maintain two connections 24/7 in a screen session. One of these was sometimes exhibiting a similar problem where the connection would suddenly cease. Not drop; packets would just stop making it across and it took several minutes for either side to timeout. Initially I dismissed this as the IRC server being flaky, but one day I realized that the connection that wasn't exhibiting the issue was an IPv6 connection. This was the key that enabled me to diagnose the problem.&lt;/p&gt;


	&lt;p&gt;I did some further testing, attempting to get the issue to manifest while I was watching via tcpdump. I set up a loop to repeatedly try to download a file. It took a while, but eventually I was able to watch what happened when the issue cropped up. The session would look like this:&lt;/p&gt;


&lt;ul&gt;
	&lt;li&gt;&#8594; SYN&lt;/li&gt;
	&lt;li&gt;&#8592; ACK&lt;/li&gt;
	&lt;li&gt;&#8594; SYN-ACK&lt;/li&gt;
	&lt;li&gt;&#8594; Request&lt;/li&gt;
	&lt;li&gt;&#8592; ACK&lt;/li&gt;
	&lt;li&gt;&#8592; Data Packet #1&lt;/li&gt;
	&lt;li&gt;&#8594; ACK&lt;/li&gt;
	&lt;li&gt;&#8594; ACK&lt;/li&gt;
	&lt;li&gt;...&lt;/li&gt;
	&lt;li&gt;&#8594; ACK&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;Several minutes later, it was still sending ACKs and getting nothing back. Eventually it would send a FIN. Testing this with a friend, I was able to determine that the server saw the same thing in reverse. It would get to a point and repeatedly resend the data, never seeing any of my ACKs or FINs. During all this, other attempts would succeed without issue. It was as if that failed connection was suddenly firewalled off.&lt;/p&gt;


	&lt;p&gt;Over time, the problem was slowly getting worse. Rather than taking two weeks after reboot before these issues would appear, it started happening after a day or two, and finally happening within minutes of the reboot. I'd also been able to observe packet loss to the router itself on the LAN interface from devices plugged directly into it, and had tried the simple things like cable replacement.&lt;/p&gt;


	&lt;p&gt;So, I figure that this one must be dying or something. Rather than try to spend any more time diagnosing it, I just go out to find a replacement. (Warranty having already expired.) As it happens I had the same choice as before. Same exact model DSL Modem/Router. Ah, well. So I buy it, bring it back and install it. All is well... for a few days.&lt;/p&gt;


	&lt;p&gt;Shortly after installing the replacement, the &lt;em&gt;same&lt;/em&gt; problems started occurring. So, either this one is faulty, too, or something else is wrong. I hunt around for anything else that could be happening to cause this, but I really can't locate any other source of issue.&lt;/p&gt;


	&lt;p&gt;I decide that, given some of the other problems that we've had with this model, it's probably just a horribly-made device and that I should find a replacement online, even if it takes a few days to arrive.  I end up buying a Cisco SR520 and with &lt;a href="Figuring_Out_Verizon's_DSL_Protocol"&gt;some effort&lt;/a&gt;, get it up and running, at which point the problems go away.&lt;/p&gt;


	&lt;p&gt;Based on observations both before and after the installation of the Cisco router, my final determination was that it wasn't bandwidth saturation that was the issue, but rather an excess of NAT sessions. The stats from the new router as of mid-June 2009 indicate that we've usually got somewhere between 300 and 500 active NAT sessions, sometimes peaking around 5000. I figure that the cheaper equipment wasn't able to keep up with that, and was dropping sessions from the NAT table, causing an instant severance of the connection. This is why the issue was only evident for IPv4 connections and not IPv6 connections; since IPv6 connections go through a tunnel to SixXS via a static port forwarding assignment, they weren't subject to the NAT table.&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is version 11, last changed by treed at 13:52 on 2009-07-01.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Learning_BIND9_In_A_Hurry, Version 6</title>
    <link href="http://www.umbraangeli.org/wiki/show/Learning_BIND9_In_A_Hurry" rel="alternate"/>
    <id>http://www.umbraangeli.org/wiki/show/Learning_BIND9_In_A_Hurry</id>
    <updated>2009-06-26T17:03:33Z</updated>
    <author>treed</author>
    <summary>Learning_BIND9_In_A_Hurry, Version 6</summary>
    <content>&lt;p&gt;(Note: This a part of my &lt;a href="/wiki/show/Adventures_In_Geekdom"&gt;Adventures In Geekdom&lt;/a&gt;.)&lt;/p&gt;


	&lt;p&gt;It's early 2008 and I'm at Pulsar Aviation but temporarily working at the office of a partner of ours in Mojave, CA, a good hour and a half to the northwest. This partner's hours start at 7 AM, so I have to leave well before the sun comes up to get there on time. Around 4 PM, I'm wrapping up the day's work when I get a call from one of the office workers back in San Bernardino that the DSL modem had died. They had tried powercycling it due to slow internet (which was generally a problem with my boss's BitTorrent activities, but nevermind that) and it now showed no lights at all.&lt;/p&gt;


	&lt;p&gt;A short while later, I discover that the words "emergency" and "need this yesterday" mean nothing to Verizon. The soonest we can get a replacement is three days.&lt;/p&gt;


	&lt;p&gt;It's now about 4:30, so I pack up and hop in my car to head down to San Bernardino, stopping at Best Buy and Office Depot to try to find a replacement. The only replacement I can find is a Verizon-branded DSL Modem+Router.  I don't need a router, but there it is. Now, this router is one of the worst pieces of equipment I've ever dealt with, and &lt;a href="Figuring_Out_Verizon's_DSL_Protocol"&gt;another story&lt;/a&gt; involves its replacement. But the first issue cropped up within minutes of having it installed.&lt;/p&gt;


	&lt;p&gt;I get into the office, get setup and start testing.  Internet connectivity works fine, I verify that people can access our servers from the outside as before; all is well.  So I start cleaning up the mess and then I notice an error message from my mail client. "Unable to connect to server."&lt;/p&gt;


	&lt;p&gt;This is rather odd, the server in question being a mere three feet from me and a single hop on the network. I netcat to port 25 on the server, get an SMTP server answer. 110? POP comes up fine. What's going on here?&lt;/p&gt;


	&lt;p&gt;Then it hits me. I try to netcat to the server via our &lt;em&gt;external&lt;/em&gt; address, which would be the one specified in our MX entry.  Total failure.&lt;/p&gt;


	&lt;p&gt;A little bit of testing later (it's after 7PM now, and I've been up since 5AM) and I determine that the new router is entirely incapable of routing back in through a NAT. It just drops the packets.  Wonderful.  I search futilely  through the options on the router for a few more minutes then sit back to think about the problem.&lt;/p&gt;


	&lt;p&gt;Well, I can solve it by having people use the internal IP address with their mail clients in the office. But that won't work for our laptops and is a pretty crappy solution anyway. Having decided that, I figure that the only good answer is to set up a DNS server for local use, serving the internal addresses.  This would be my first time touching a raw zone file, let alone setting up such a server from scratch.&lt;/p&gt;


	&lt;p&gt;I'd been up and working for far too long at this point, so it takes me a few hours of trial and error (mostly with the zone file) before I get a configuration working. I update our dhcpd configuration to instruct our systems to use it, run a quick test, then stumble back to my car, getting home around midnight.&lt;/p&gt;&lt;p&gt;&lt;em&gt;This is version 6, last changed by treed at 17:03 on 2009-06-26.&lt;/em&gt;&lt;/p&gt;</content>
  </entry>
</feed>
